The domain/PHB field of PCI addresses has its value obtained from a
global variable, incremented each time a new domain (represented by
struct pci_controller) is added on the system. The domain addition
process happens during boot or due to PHB hotplug add.
As recent kernels are using predictable naming for network interfaces,
the network stack is more tied to PCI naming. This can be a problem in
hotplug scenarios, because PCI addresses will change if devices are
removed and then re-added. This situation seems unusual, but it can
happen if a user wants to replace a NIC without rebooting the machine,
for example.
This patch changes the way PCI domain values are generated: now, we use
device-tree properties to assign fixed PHB numbers to PCI addresses
when available (meaning pSeries and PowerNV cases). We also use a bitmap
to allow dynamic PHB numbering when device-tree properties are not
used. This bitmap keeps track of used PHB numbers and if a PHB is
released (by hotplug operations for example), it allows the reuse of
this PHB number, avoiding PCI address to change in case of device remove
and re-add soon after. No functional changes were introduced.
Signed-off-by: Guilherme G. Piccoli <email address hidden>
Reviewed-by: Gavin Shan <email address hidden>
Reviewed-by: Ian Munsie <email address hidden>
Acked-by: Gavin Shan <email address hidden>
[mpe: Drop unnecessary machine_is(pseries) test]
Signed-off-by: Michael Ellerman <email address hidden>
(cherry picked from linux-next commit 63a72284b159c569ec52f380c9a8dd9342d43bb8)
Signed-off-by: Tim Gardner <email address hidden>
One should not attempt to switch a PHB into CAPI mode if there is
a switch between the PHB and the adapter. This patch modifies the
cxl driver to ignore CAPI adapters misplaced in switched slots.
Signed-off-by: Philippe Bergheaud <email address hidden>
Reviewed-by: Frederic Barrat <email address hidden>
Acked-by: Ian Munsie <email address hidden>
Signed-off-by: Michael Ellerman <email address hidden>
(cherry picked from linux-next commit 3b3dcd61fa4e3604d8f1bdfd8471fca7b7c012e4)
Signed-off-by: Tim Gardner <email address hidden>
UBUNTU: SAUCE: Clear Linux: xor: skip benchmark/allocations for short-circuit path
We're only testing 1 algorithm ...
Signed-off-by: Jim Kukunas <email address hidden>
Signed-off-by: Tim Gardner <email address hidden>
1272520...
by
Arjan van de Ven <email address hidden>
UBUNTU: SAUCE: Clear Linux: reduce e1000e boot time by tightening sleep ranges
The e1000e driver is a great user of the usleep_range() API,
and has any nice ranges that in principle help power management.
However the ranges that are used only during system startup are
very long (and can add easily 100 msec to the boot time) while
the power savings of such long ranges is irrelevant due to the
one-off, boot only, nature of these functions.
This patch shrinks some of the longest ranges to be shorter
(while still using a power friendly 1 msec range); this saves
100msec+ of boot time on my BDW NUCs
Signed-off-by: Arjan van de Ven <email address hidden>
Signed-off-by: Tim Gardner <email address hidden>
d887ca9...
by
Arjan van de Ven <email address hidden>
UBUNTU: SAUCE: Clear Linux: Initialize ata before graphics
ATA init is the long pole in the boot process, and its asynchronous.
move the graphics init after it so that ata and graphics initialize
in parallel