~tuxonice/linux:xenial

Last commit made on 2016-12-23
Get this branch:
git clone -b xenial https://git.launchpad.net/~tuxonice/linux
Members of TuxOnIce can upload to this branch. Log in for directions.

Branch merges

Branch information

Name:
xenial
Repository:
lp:~tuxonice/linux

Recent commits

0783010... by Martin Schläffer

Merge tag 'Ubuntu-4.4.0-57.78'

6d4f0a7... by Brad Figg

UBUNTU: Ubuntu-4.4.0-57.78

Signed-off-by: Brad Figg <email address hidden>

5add4d9... by Brad Figg

UBUNTU: SAUCE: Do not build the xr-usb-serial driver for s390

Signed-off-by: Brad Figg <email address hidden>

b54bab0... by Brad Figg

UBUNTU: Start new release

Ignore: yes
Signed-off-by: Brad Figg <email address hidden>

fb481db... by Brad Figg

UBUNTU: Ubuntu-4.4.0-56.77

Signed-off-by: Brad Figg <email address hidden>

a8b886f... by Nicolas Dichtel

ovs/geneve: fix rtnl notifications on iface deletion

BugLink: http://bugs.launchpad.net/bugs/1593235

The function geneve_dev_create_fb() (only used by ovs) never calls
rtnl_configure_link(). The consequence is that dev->rtnl_link_state is
never set to RTNL_LINK_INITIALIZED.
During the deletion phase, the function rollback_registered_many() sends
a RTM_DELLINK only if dev->rtnl_link_state is set to RTNL_LINK_INITIALIZED.

Fixes: e305ac6cf5a1 ("geneve: Add support to collect tunnel metadata.")
CC: Pravin B Shelar <email address hidden>
CC: Jesse Gross <email address hidden>
CC: Thomas Graf <email address hidden>
Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Signed-off-by: David S. Miller <email address hidden>
(cherry picked from commit 41009481b690493c169ce85f591b9d32c6fd9422)
Signed-off-by: Joseph Salisbury <email address hidden>
Acked-by: Thadeu Lima de Souza Cascardo <email address hidden>
Acked-by: Tim Gardner <email address hidden>
Signed-off-by: Luis Henriques <email address hidden>

fc26e19... by Nicolas Dichtel

ovs/gre: fix rtnl notifications on iface deletion

BugLink: http://bugs.launchpad.net/bugs/1593235

The function gretap_fb_dev_create() (only used by ovs) never calls
rtnl_configure_link(). The consequence is that dev->rtnl_link_state is
never set to RTNL_LINK_INITIALIZED.
During the deletion phase, the function rollback_registered_many() sends
a RTM_DELLINK only if dev->rtnl_link_state is set to RTNL_LINK_INITIALIZED.

Fixes: b2acd1dc3949 ("openvswitch: Use regular GRE net_device instead of vport")
CC: Thomas Graf <email address hidden>
CC: Pravin B Shelar <email address hidden>
Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Signed-off-by: David S. Miller <email address hidden>
(cherry picked from commit da6f1da819d4b9c081a477dec74dc468a0b44290)
Signed-off-by: Joseph Salisbury <email address hidden>
Acked-by: Thadeu Lima de Souza Cascardo <email address hidden>
Acked-by: Tim Gardner <email address hidden>
Signed-off-by: Luis Henriques <email address hidden>

679b154... by Nicolas Dichtel

ovs/vxlan: fix rtnl notifications on iface deletion

BugLink: http://bugs.launchpad.net/bugs/1593235

The function vxlan_dev_create() (only used by ovs) never calls
rtnl_configure_link(). The consequence is that dev->rtnl_link_state is
never set to RTNL_LINK_INITIALIZED.
During the deletion phase, the function rollback_registered_many() sends
a RTM_DELLINK only if dev->rtnl_link_state is set to RTNL_LINK_INITIALIZED.

Note that the function vxlan_dev_create() is moved after the rtnl stuff so
that vxlan_dellink() can be called in this function.

Fixes: dcc38c033b32 ("openvswitch: Re-add CONFIG_OPENVSWITCH_VXLAN")
CC: Thomas Graf <email address hidden>
CC: Pravin B Shelar <email address hidden>
Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Signed-off-by: David S. Miller <email address hidden>
(cherry picked from commit cf5da330bbdd0c06b05c525a3d1d58ccd82c87a6)
Signed-off-by: Joseph Salisbury <email address hidden>
Acked-by: Thadeu Lima de Souza Cascardo <email address hidden>
Acked-by: Tim Gardner <email address hidden>
Signed-off-by: Luis Henriques <email address hidden>

cc645ed... by Nicolas Dichtel

ovs/gre, geneve: fix error path when creating an iface

BugLink: http://bugs.launchpad.net/bugs/1593235

After ipgre_newlink()/geneve_configure() call, the netdev is registered.

Fixes: 7e059158d57b ("vxlan, gre, geneve: Set a large MTU on ovs-created tunnel devices")
CC: David Wragg <email address hidden>
Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Signed-off-by: David S. Miller <email address hidden>
(backported from commit 106da663ff495e0aea3ac15b8317aa410754fcac)
Signed-off-by: Joseph Salisbury <email address hidden>
Acked-by: Thadeu Lima de Souza Cascardo <email address hidden>
Acked-by: Tim Gardner <email address hidden>
Signed-off-by: Luis Henriques <email address hidden>

c562b2a... by Jiri Olsa <email address hidden>

x86/smp: Fix __max_logical_packages value setup

BugLink: http://bugs.launchpad.net/bugs/1648088

Frank reported kernel panic when he disabled several cores in BIOS
via following option:

  Core Disable Bitmap(Hex) [0]

with number 0xFFE, which leaves 16 CPUs in system (out of 48).

The kernel panic below goes along with following messages:

 smpboot: Max logical packages: 2^M
 smpboot: APIC(0) Converting physical 0 to logical package 0^M
 smpboot: APIC(20) Converting physical 1 to logical package 1^M
 smpboot: APIC(40) Package 2 exceeds logical package map^M
 smpboot: CPU 8 APICId 40 disabled^M
 smpboot: APIC(60) Package 3 exceeds logical package map^M
 smpboot: CPU 12 APICId 60 disabled^M
 ...
 general protection fault: 0000 [#1] SMP^M
 Modules linked in:^M
 CPU: 15 PID: 1 Comm: swapper/0 Not tainted 4.7.0-rc5+ #1^M
 Hardware name: SGI UV300/UV300, BIOS SGI UV 300 series BIOS 05/25/2016^M
 task: ffff8801673e0000 ti: ffff8801673ac000 task.ti: ffff8801673ac000^M
 RIP: 0010:[<ffffffff81014d54>] [<ffffffff81014d54>] uncore_change_context+0xd4/0x180^M
 ...
  [<ffffffff810158ac>] uncore_event_init_cpu+0x6c/0x70^M
  [<ffffffff81d8c91c>] intel_uncore_init+0x1c2/0x2dd^M
  [<ffffffff81d8c75a>] ? uncore_cpu_setup+0x17/0x17^M
  [<ffffffff81002190>] do_one_initcall+0x50/0x190^M
  [<ffffffff810ab193>] ? parse_args+0x293/0x480^M
  [<ffffffff81d87365>] kernel_init_freeable+0x1a5/0x249^M
  [<ffffffff81d86a35>] ? set_debug_rodata+0x12/0x12^M
  [<ffffffff816dc19e>] kernel_init+0xe/0x110^M
  [<ffffffff816e93bf>] ret_from_fork+0x1f/0x40^M
  [<ffffffff816dc190>] ? rest_init+0x80/0x80^M

The reason for the panic is wrong value of __max_logical_packages,
which lets logical_package_map uninitialized and the uncore code
relying on this map being properly initialized (maybe we should
add some safety checks there as well).

The __max_logical_packages is computed as:

  DIV_ROUND_UP(total_cpus, ncpus);
  - ncpus being number of cores

With above BIOS setup we get total_cpus == 16 which set
__max_logical_packages to 2 (ncpus is 12).

Once topology_update_package_map processes CPU with logical
pkg over 2 we display above messages and fail to initialize
the physical_to_logical_pkg map, which makes the uncore code
crash.

The fix is to remove logical_package_map bitmap completely
and keep and update the logical_packages number instead.

After we enumerate all the present CPUs, we check if the
enumerated logical packages count is within its computed
maximum from BIOS data.

If it's not the case, we set this maximum to the new enumerated
value and freeze any new addition of logical packages.

The freeze is because lot of init code like uncore/rapl/cqm
depends on having maximum logical package value set to allocate
their data, so we can't change it later on.

Prarit Bhargava tested the patch and confirms that it solves
the problem:

  From dmidecode:
          Core Count: 24
          Core Enabled: 24
          Thread Count: 48

Orig kernel boot log:

 [ 0.464981] smpboot: Max logical packages: 19
 [ 0.469861] smpboot: APIC(0) Converting physical 0 to logical package 0
 [ 0.477261] smpboot: APIC(40) Converting physical 1 to logical package 1
 [ 0.484760] smpboot: APIC(80) Converting physical 2 to logical package 2
 [ 0.492258] smpboot: APIC(c0) Converting physical 3 to logical package 3

1. nr_cpus=8, should stop enumerating in package 0:

 [ 0.533664] smpboot: APIC(0) Converting physical 0 to logical package 0
 [ 0.539596] smpboot: Max logical packages: 19

2. max_cpus=8, should still enumerate all packages:

 [ 0.526494] smpboot: APIC(0) Converting physical 0 to logical package 0
 [ 0.532428] smpboot: APIC(40) Converting physical 1 to logical package 1
 [ 0.538456] smpboot: APIC(80) Converting physical 2 to logical package 2
 [ 0.544486] smpboot: APIC(c0) Converting physical 3 to logical package 3
 [ 0.550524] smpboot: Max logical packages: 19

3. nr_cpus=49 ( 2 socket + 1 core on 3rd socket), should stop enumerating in
    package 2:

 [ 0.521378] smpboot: APIC(0) Converting physical 0 to logical package 0
 [ 0.527314] smpboot: APIC(40) Converting physical 1 to logical package 1
 [ 0.533345] smpboot: APIC(80) Converting physical 2 to logical package 2
 [ 0.539368] smpboot: Max logical packages: 19

4. maxcpus=49, should still enumerate all packages:

 [ 0.525591] smpboot: APIC(0) Converting physical 0 to logical package 0
 [ 0.531525] smpboot: APIC(40) Converting physical 1 to logical package 1
 [ 0.537547] smpboot: APIC(80) Converting physical 2 to logical package 2
 [ 0.543579] smpboot: APIC(c0) Converting physical 3 to logical package 3
 [ 0.549624] smpboot: Max logical packages: 19

5. kdump (nr_cpus=1) works as well.

Reported-by: Frank Ramsay <email address hidden>
Tested-by: Prarit Bhargava <email address hidden>
Signed-off-by: Jiri Olsa <email address hidden>
Reviewed-by: Prarit Bhargava <email address hidden>
Acked-by: Peter Zijlstra <email address hidden>
Cc: Linus Torvalds <email address hidden>
Cc: Thomas Gleixner <email address hidden>
Link: http://lkml.kernel.org/r/20160815101700.GA30090@krava
Signed-off-by: Ingo Molnar <email address hidden>
(cherry picked from commit 7b0501b1e7cddd32b265178e32d332bdfbb532d4)
Signed-off-by: Tim Gardner <email address hidden>
Acked-by: Seth Forshee <email address hidden>
Signed-off-by: Luis Henriques <email address hidden>