Chapter 28. Hardware Enablement
Primary bond interface no longer takes over active interfaces that did not fail
The primary_reselect=failure bond parameter previously worked incorrectly. The primary interface was always taking over even if others did not fail. With this update, the parameter works as expected and the primary bond interface only takes over if the current non-primary active interface fails. (BZ#1301451)
Memory corruption is prevented on a failed updatepp
operation on the little-endian variant of IBM Power Systems
Previously, a failed
updatepp
operation on the little-endian variant of IBM Power Systems sometimes caused a wrong hash value to be used for the next hash insert operation in the page table. This could cause an update hash page table entry (PTE) operation or an invalidate hash PTE operation to be missed, potentially resulting in memory corruption. With this update, the hash value is always recalculated after a failed updatepp
operation, which prevents the potential memory corruption. (BZ#1264920)
Removing a USB device no longer causes a race condition
Previously, removing a USB device caused a problem in synchronization, which could lead to a race condition. Consequently, the memory became corrupted, which caused the USB host controller to fail. With this update, the timer is initialized early enough, which prevents the possibility of a race condition, and the USB host controller no longer fails. (BZ#1290202)
The kernel now boots on AMD Turion II systems
Previously, because of a livelock in the tick broadcast code, AMD Turion II systems in some cases locked up and became unresponsive during boot. With this update, the livelock is fixed, and the kernel now boots more reliably on AMD Turion II systems. (BZ#1265283)
Real-time systems with many CPUs no longer have large latencies due to run-queue lock contention
Previously, on real-time systems, multiple CPUs tried to take an
rq
lock, which resulted in lock contention and latency. The latency was multiplied by the number of CPUs, which caused the systems with many CPUs to have large latencies. With this update, systems with more than 32 cores use the push
approach rather than pull
, which prevents long lists of CPUs in critical areas. As a result, real-time systems with many CPUs no longer have large latencies due to run-queue lock contention. (BZ#1209987)
The kernel no longer crashes at boot when enabling multi-queue support with NVM Express device driver
Due to a bug in the core block device code, the kernel in some cases terminated unexpectedly at boot, when enabling multi-queue support on the Nonvolatile Memory Express (NVMe) device driver. The problem was observed with the nvme driver, but other block devices were also potentially affected. With this update, this bug has been fixed, and the kernel no longer crashes in the described circumstances. (BZ#1303255)
The CPU frequency now reaches the requested value
Previously, the CPU frequency values were rounded incorrectly by the
intel_pstate
driver. Consequently, the CPU frequency was lower than the user requested. With this update, the rounding errors have been fixed, and the CPU frequency now reaches the requested value. (BZ#1279617)
Real-time kernel scheduling code for FCoE code has been fixed
The real-time kernel's Fibre Channel over Ethernet (FCoE) driver was changed to use the
get_cpu_light()
and put_cpu_light()
functions, rather than the more common get_cpu()
and put_cpu()
functions. However, one occurrence of get_cpu()
was not changed to get_cpu_light()
. Consequently, preemption was disabled, and the BUG: scheduling while atomic
bug occured in the FCoE code. With this update, the code has been fixed and the bug no longer occurs. (BZ#1258295)
The performance of IBM Power Systems is no longer decreased by NUMA nodes not being reported for PCI adapters
Previously, due to a regression, the Non-Uniform Memory Access (NUMA) node was not reported for PCI adapters. This caused significant decrease in the performance of every IBM Power System deployed with Red Hat Enterprise Linux 7. With this update, the regression has been fixed, and the system performance is no longer decreased in this situation. (BZ#1273978)
The system no longer crashes while setting up the DMA transfer
Due to the inconsistencies in the page size of Input/Output Memory Management Unit (IOMMU), the Non-volatile Memory Express (NVMe) device, and the kernel, the
BUG_ON
signal previously occurred in the nvme_setup_prps()
function. This could lead to an unexpected termination of the system while setting up the Direct Memory Access (DMA) transfer. With this update, the default NVMe page size is set to 4 kilobytes, and the system crash no longer occurs. (BZ#1245140)
Kernel no longer hangs during hot-unplug
Due to retry-able command errors, the NVMe driver previously leaked I/O descriptors and DMA mappings. As a consequence, the kernel could become unresponsive during the hot-unplug operation if a drive was removed. This update fixes the driver memory leak on command retries, and the kernel no longer hangs in this situation. (BZ#1271860)
Disabling the Large Receive Offload (LRO) flag now propagates correctly
Previously, disabling the Large Receive Offload (LRO) flag was not propagated downwards from above devices in vlan and bond hierarchy. Consequently, the flow of traffic broke. With this update, the problem has been fixed and disabling of LRO flags now propagates correctly. (BZ#1266578)
Switching P-states on Intel Xeon v5 platforms now succeeds
Previously, on Intel Xeon v5 platforms, the processor frequency was always tied to the highest possible frequency. As a consequence, switching P-states on these client platforms failed. This update sets the idle frequency, busy frequency, and processor frequency values by determining the range and adjusting the minimum and maximum percent limits values. As a result, switching P-states on these client platforms now succeeds. (BZ#1264990)
The cpuscaling
test no longer fails
Previously, the
cpuscaling
test of the Red Hat Hardware Certification Test Suite incorrectly failed due to a number-rounding bug in the intel-pstate
driver. This bug has been fixed and the cpuscaling
test now passes on sufficiently powerful hardware. (BZ#1263866)
The genwqe
driver can allocate memory during memory pressure
The
genwqe
device driver was previously using the GFP_ATOMIC
flag for allocating consecutive memory pages from the kernel's atomic memory pool - even in non-atomic situations. This could lead to allocation failures during memory pressure. With this update, the genwqe
driver's memory allocations use the GFP_KERNEL
flag, and the driver can allocate memory even during memory pressure situations. (BZ#1270244)
The console no longer hangs when disabling CPU
Previously, when disabling a CPU using the CPU
hotplug
interface in the real-time kernel, the hotplug
lock and the console semaphore could be acquired in an incorrect order. This could lead to a deadlock causing the system console to become unresponsive. With this update, the locks are acquired in the correct order, and console no longer hangs. (BZ#1269647)
LRO is now disabled by default in the ixgbe
driver
Because Large Receive Offload (LRO) is incompatible with forwarding and bridging and can cause performance problems and instability, it is now disabled by default in the
ixgbe
driver.
To enable LRO:
# ethtool -K ethX lro on
Replace
ethX
with the name of the interface. (BZ#1266948)
The nx842 co-processor for IBM Power Systems no longer provides corrupted data
Previously, the nx842 co-processor for IBM Power Systems could in some circumstances provided invalid data. This was caused by a data corruption bug that occured during uncompression. With this update, all compression and uncompression calls to the nx842 co-processor contain a cyclic redundancy check (CRC) flag. This forces all compression and uncompression operations to check data integrity and prevents the co-processor from providing corrupted data. (BZ#1264905)
The system no longer crashes when calling the mlx4_en_recover_from_oom()
function
Previously, when the
mlx4_en_recover_from_oom()
function was invoked under heavy TCP stream by the mlx4_en
drive, the operating system terminated unexpectedly. This update fixes the bug, and the system no longer crashes in this scenario. (BZ#1258136)
iw
displays regulatory information correctly
Previously, the
iw
utility did not correctly display the regulatory country after it was set with the iw reg set
command. This update adjusts the iw
code to match the Red Hat Enterprise Linux wireless code more closely. As a result, iw
displays the regulatory country information as expected. (BZ#1324096)
i40e
no longer issues warn_slowpath
warnings during boot
Previously, the
i40e
driver was issuing warn_slowpath
warnings during a ring size change because the code was cloning the rx_ring
struct but not zeroing out the pointers before allocating new memory. With this update, the bug is fixed, and the warnings are no longer shown. (BZ#1272833)
The netprio_cgroups
module is now mounted at boot
Previously,
systemd
mounted the /sys/fs/cgroup/
directory as read-only, which prevented mounting of the /sys/fs/cgroup/net_prio/
directory during the initial system setup. Consequently, the netprio_cgroups
module was not mounted at boot. With this update, this problem has been fixed, and the netprio_cgroups
module is now mounted at boot. (BZ#1262204)
Setting up bonding with qlcnic
no longer fails
Prior to this update, certain bonding modes, such as
balance-tlb
or balance-alb
, set a MAC address that was not properly stored. This MAC address was not restored when tearing down the bond, leaving a duplicate MAC in place. Consequently, re-establishing a bond failed, because the original MAC address was not present. This update improves the code to properly restore the MAC addresses when the bonding is taken down. As a result, bonding with qlcnic
devices works as expected. (BZ#1265058)