From 2c6d72a09eecba0ba3e7b08a28915a41207bc0bb Mon Sep 17 00:00:00 2001 From: Salvatore Bonaccorso Date: Thu, 12 May 2016 21:20:31 +0200 Subject: [PATCH] Update to 4.5.4 --- debian/changelog | 93 +++++++++- ...equest-native-thermal-interrupt-hand.patch | 166 ------------------ debian/patches/series | 1 - 3 files changed, 92 insertions(+), 168 deletions(-) delete mode 100644 debian/patches/bugfix/x86/acpi-processor-request-native-thermal-interrupt-hand.patch diff --git a/debian/changelog b/debian/changelog index 5439aeb45..6b92ff27e 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,4 +1,95 @@ -linux (4.5.3-3) UNRELEASED; urgency=medium +linux (4.5.4-1) UNRELEASED; urgency=medium + + * New upstream stable update: + https://www.kernel.org/pub/linux/kernel/v4.x/ChangeLog-4.5.4 + - clocksource/drivers/tango-xtal: Fix boot hang due to incorrect test + - RDMA/iw_cxgb4: Fix bar2 virt addr calculation for T4 chips + - net/mlx5_core: Fix caching ATOMIC endian mode capability + - ipvs: handle ip_vs_fill_iph_skb_off failure + - ipvs: correct initial offset of Call-ID header search in SIP persistence engine + - ipvs: drop first packet to redirect conntrack + - rtlwifi: Fix size of wireless mode variable + - mfd: intel-lpss: Remove clock tree on error path + - nbd: ratelimit error msgs after socket close + - lightnvm: update closed list outside of intr context + - null_blk: add lightnvm null_blk device to the nullb_list + - ata: ahci_xgene: dereferencing uninitialized pointer in probe + - wlcore: fix error handling in wlcore_event_fw_logger + - ath10k: fix pktlog in QCA99X0 + - mwifiex: fix corner case association failure + - CNS3xxx: Fix PCI cns3xxx_write_config() + - clk-divider: make sure read-only dividers do not write to their register + - soc: rockchip: power-domain: fix err handle while probing + - clk: rockchip: fix wrong mmc phase shift for rk3228 + - clk: rockchip: free memory in error cases when registering clock branches + - clk: meson: Fix meson_clk_register_clks() signature type mismatch + - clk: qcom: msm8960: fix ce3_core clk enable register + - clk: versatile: sp810: support reentrance + - clk: qcom: msm8960: Fix ce3_src register offset + - clk: sunxi: Fix sun8i-a23-apb0-clk divider flags + - clk: xgene: Add missing parenthesis when clearing divider value + - clk: bcm2835: fix check of error code returned by devm_ioremap_resource() + - pwm: omap-dmtimer: Fix inaccurate period and duty cycle calculations + - pwm: omap-dmtimer: Add sanity checking for load and match values + - pwm: omap-dmtimer: Round load and match values rather than truncate + - lpfc: fix misleading indentation + - gpiolib-acpi: Duplicate con_id string when adding it to the crs lookup list + - ath9k: ar5008_hw_cmn_spur_mitigate: add missing mask_m & mask_p initialisation + - mac80211: fix statistics leak if dev_alloc_name() fails + - tracing: Don't display trigger file for events that can't be enabled + - MD: make bio mergeable + - Minimal fix-up of bad hashing behavior of hash_64() + - mm: memcontrol: let v2 cgroups follow changes in system swappiness + - mm, cma: prevent nr_isolated_* counters from going negative + - mm/zswap: provide unique zpool name + - propogate_mnt: Handle the first propogated copy being a slave + - modpost: fix module autoloading for OF devices with generic compatible property + - ARM: EXYNOS: Properly skip unitialized parent clock in power domain on + - ARM: SoCFPGA: Fix secondary CPU startup in thumb2 kernel + - xen: Fix page <-> pfn conversion on 32 bit systems + - xen/balloon: Fix crash when ballooning on x86 32 bit PAE + - xen/evtchn: fix ring resize when binding new events + - HID: wacom: Add support for DTK-1651 + - HID: Fix boot delay for Creative SB Omni Surround 5.1 with quirk + - Input: zforce_ts - fix dual touch recognition + - proc: prevent accessing /proc//environ until it's ready + - mm: update min_free_kbytes from khugepaged after core initialization + - batman-adv: fix DAT candidate selection (must use vid) + - batman-adv: Check skb size before using encapsulated ETH+VLAN header + - batman-adv: Fix broadcast/ogm queue limit on a removed interface + - batman-adv: Reduce refcnt of removed router when updating route + - libnvdimm, pfn: fix memmap reservation sizing + - writeback: Fix performance regression in wb_over_bg_thresh() + - MAINTAINERS: Remove asterisk from EFI directory names + - x86/tsc: Read all ratio bits from MSR_PLATFORM_INFO + - ARM: cpuidle: Pass on arm_cpuidle_suspend()'s return value + - parisc: fix a bug when syscall number of tracee is __NR_Linux_syscalls + - cpufreq: st: enable selective initialization based on the platform + - ARC: Add missing io barriers to io{read,write}{16,32}be() + - x86/sysfb_efi: Fix valid BAR address range check + - ARM: dts: apq8064: add ahci ports-implemented mask + - ACPICA: Dispatcher: Update thread ID for recursive method calls + - powerpc: Fix bad inline asm constraint in create_zero_mask() + - libahci: save port map for forced port map + - ata: ahci-platform: Add ports-implemented DT bindings. + - USB: serial: cp210x: add ID for Link ECU + - USB: serial: cp210x: add Straizona Focusers device ids + - Revert "USB / PM: Allow USB devices to remain runtime-suspended when sleeping" + - nvmem: mxs-ocotp: fix buffer overflow in read + - Drivers: hv: vmbus: Fix signaling logic in hv_need_to_signal_on_read() + - gpu: ipu-v3: Fix imx-ipuv3-crtc module autoloading + - drm/amdgpu: make sure vertical front porch is at least 1 + - drm/amdgpu: set metadata pointer to NULL after freeing. + - iio: ak8975: Fix NULL pointer exception on early interrupt + - iio: ak8975: fix maybe-uninitialized warning + - drm/radeon: make sure vertical front porch is at least 1 + - drm/i915: Avoid stalling on pending flips for legacy cursor updates + - drm/i915/ddi: Fix eDP VDD handling during booting and suspend/resume + - drm/i915: Fix system resume if PCI device remained enabled + - drm/i915: Fix eDP low vswing for Broadwell + - drm/i915: Make RPS EI/thresholds multiple of 25 on SNB-BDW + - drm/i915: Fake HDMI live status + - ACPI / processor: Request native thermal interrupt handling via _OSC [ Aurelien Jarno ] * [mips*] Fix PR_SET_FPMODE issues with multi-threaded programs. diff --git a/debian/patches/bugfix/x86/acpi-processor-request-native-thermal-interrupt-hand.patch b/debian/patches/bugfix/x86/acpi-processor-request-native-thermal-interrupt-hand.patch deleted file mode 100644 index cc527fabf..000000000 --- a/debian/patches/bugfix/x86/acpi-processor-request-native-thermal-interrupt-hand.patch +++ /dev/null @@ -1,166 +0,0 @@ -From: Srinivas Pandruvada -Date: Wed, 23 Mar 2016 21:07:39 -0700 -Subject: ACPI / processor: Request native thermal interrupt handling via _OSC -Origin: https://git.kernel.org/linus/a21211672c9a1d730a39aa65d4a5b3414700adfb -Bug-Debian: https://bugs.debian.org/817016 - -There are several reports of freeze on enabling HWP (Hardware PStates) -feature on Skylake-based systems by the Intel P-states driver. The root -cause is identified as the HWP interrupts causing BIOS code to freeze. - -HWP interrupts use the thermal LVT which can be handled by Linux -natively, but on the affected Skylake-based systems SMM will respond -to it by default. This is a problem for several reasons: - - On the affected systems the SMM thermal LVT handler is broken (it - will crash when invoked) and a BIOS update is necessary to fix it. - - With thermal interrupt handled in SMM we lose all of the reporting - features of the arch/x86/kernel/cpu/mcheck/therm_throt driver. - - Some thermal drivers like x86-package-temp depend on the thermal - threshold interrupts signaled via the thermal LVT. - - The HWP interrupts are useful for debugging and tuning - performance (if the kernel can handle them). -The native handling of thermal interrupts needs to be enabled -because of that. - -This requires some way to tell SMM that the OS can handle thermal -interrupts. That can be done by using _OSC/_PDC in processor -scope very early during ACPI initialization. - -The meaning of _OSC/_PDC bit 12 in processor scope is whether or -not the OS supports native handling of interrupts for Collaborative -Processor Performance Control (CPPC) notifications. Since on -HWP-capable systems CPPC is a firmware interface to HWP, setting -this bit effectively tells the firmware that the OS will handle -thermal interrupts natively going forward. - -For details on _OSC/_PDC refer to: -http://www.intel.com/content/www/us/en/standards/processor-vendor-specific-acpi-specification.html - -To implement the _OSC/_PDC handshake as described, introduce a new -function, acpi_early_processor_osc(), that walks the ACPI -namespace looking for ACPI processor objects and invokes _OSC for -them with bit 12 in the capabilities buffer set and terminates the -namespace walk on the first success. - -Also modify intel_thermal_interrupt() to clear HWP status bits in -the HWP_STATUS MSR to acknowledge HWP interrupts (which prevents -them from firing continuously). - -Signed-off-by: Srinivas Pandruvada -[ rjw: Subject & changelog, function rename ] -Signed-off-by: Rafael J. Wysocki ---- - arch/x86/kernel/cpu/mcheck/therm_throt.c | 3 ++ - drivers/acpi/acpi_processor.c | 52 ++++++++++++++++++++++++++++++++ - drivers/acpi/bus.c | 3 ++ - drivers/acpi/internal.h | 6 ++++ - 4 files changed, 64 insertions(+) - -diff --git a/arch/x86/kernel/cpu/mcheck/therm_throt.c b/arch/x86/kernel/cpu/mcheck/therm_throt.c -index 2c5aaf8c2e2f..05538582a809 100644 ---- a/arch/x86/kernel/cpu/mcheck/therm_throt.c -+++ b/arch/x86/kernel/cpu/mcheck/therm_throt.c -@@ -385,6 +385,9 @@ static void intel_thermal_interrupt(void) - { - __u64 msr_val; - -+ if (static_cpu_has(X86_FEATURE_HWP)) -+ wrmsrl_safe(MSR_HWP_STATUS, 0); -+ - rdmsrl(MSR_IA32_THERM_STATUS, msr_val); - - /* Check for violation of core thermal thresholds*/ -diff --git a/drivers/acpi/acpi_processor.c b/drivers/acpi/acpi_processor.c -index b5e54f2da53d..0d92d0f915e9 100644 ---- a/drivers/acpi/acpi_processor.c -+++ b/drivers/acpi/acpi_processor.c -@@ -491,6 +491,58 @@ static void acpi_processor_remove(struct acpi_device *device) - } - #endif /* CONFIG_ACPI_HOTPLUG_CPU */ - -+#ifdef CONFIG_X86 -+static bool acpi_hwp_native_thermal_lvt_set; -+static acpi_status __init acpi_hwp_native_thermal_lvt_osc(acpi_handle handle, -+ u32 lvl, -+ void *context, -+ void **rv) -+{ -+ u8 sb_uuid_str[] = "4077A616-290C-47BE-9EBD-D87058713953"; -+ u32 capbuf[2]; -+ struct acpi_osc_context osc_context = { -+ .uuid_str = sb_uuid_str, -+ .rev = 1, -+ .cap.length = 8, -+ .cap.pointer = capbuf, -+ }; -+ -+ if (acpi_hwp_native_thermal_lvt_set) -+ return AE_CTRL_TERMINATE; -+ -+ capbuf[0] = 0x0000; -+ capbuf[1] = 0x1000; /* set bit 12 */ -+ -+ if (ACPI_SUCCESS(acpi_run_osc(handle, &osc_context))) { -+ if (osc_context.ret.pointer && osc_context.ret.length > 1) { -+ u32 *capbuf_ret = osc_context.ret.pointer; -+ -+ if (capbuf_ret[1] & 0x1000) { -+ acpi_handle_info(handle, -+ "_OSC native thermal LVT Acked\n"); -+ acpi_hwp_native_thermal_lvt_set = true; -+ } -+ } -+ kfree(osc_context.ret.pointer); -+ } -+ -+ return AE_OK; -+} -+ -+void __init acpi_early_processor_osc(void) -+{ -+ if (boot_cpu_has(X86_FEATURE_HWP)) { -+ acpi_walk_namespace(ACPI_TYPE_PROCESSOR, ACPI_ROOT_OBJECT, -+ ACPI_UINT32_MAX, -+ acpi_hwp_native_thermal_lvt_osc, -+ NULL, NULL, NULL); -+ acpi_get_devices(ACPI_PROCESSOR_DEVICE_HID, -+ acpi_hwp_native_thermal_lvt_osc, -+ NULL, NULL); -+ } -+} -+#endif -+ - /* - * The following ACPI IDs are known to be suitable for representing as - * processor devices. -diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c -index 891c42d1cd65..f9081b791b81 100644 ---- a/drivers/acpi/bus.c -+++ b/drivers/acpi/bus.c -@@ -1005,6 +1005,9 @@ static int __init acpi_bus_init(void) - goto error1; - } - -+ /* Set capability bits for _OSC under processor scope */ -+ acpi_early_processor_osc(); -+ - /* - * _OSC method may exist in module level code, - * so it must be run after ACPI_FULL_INITIALIZATION -diff --git a/drivers/acpi/internal.h b/drivers/acpi/internal.h -index 1e6833a5cd44..6f41c73f82bb 100644 ---- a/drivers/acpi/internal.h -+++ b/drivers/acpi/internal.h -@@ -138,6 +138,12 @@ void acpi_early_processor_set_pdc(void); - static inline void acpi_early_processor_set_pdc(void) {} - #endif - -+#ifdef CONFIG_X86 -+void acpi_early_processor_osc(void); -+#else -+static inline void acpi_early_processor_osc(void) {} -+#endif -+ - /* -------------------------------------------------------------------------- - Embedded Controller - -------------------------------------------------------------------------- */ diff --git a/debian/patches/series b/debian/patches/series index 7bacabe55..8ce39e08e 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -49,7 +49,6 @@ bugfix/mips/MIPS-Allow-emulation-for-unaligned-LSDXC1-instructions.patch bugfix/mips/MIPS-Disable-preemption-during-prctl-PR_SET_FP_MODE.patch bugfix/mips/MIPS-Force-CPUs-to-lose-FP-context-during-mode-switc.patch bugfix/x86/vmxnet3-fix-lock-imbalance-in-vmxnet3_tq_xmit.patch -bugfix/x86/acpi-processor-request-native-thermal-interrupt-hand.patch bugfix/arm/arm-dts-kirkwood-fix-sd-slot-default-configuration-f.patch bugfix/sparc/sparc-implement-and-wire-up-modalias_show-for-vio.patch bugfix/sparc/sparc-implement-and-wire-up-vio_hotplug-for-vio.patch