Update to 4.5.4

This commit is contained in:
Salvatore Bonaccorso 2016-05-12 21:20:31 +02:00
parent 102221d3f4
commit 2c6d72a09e
3 changed files with 92 additions and 168 deletions

93
debian/changelog vendored
View File

@ -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/<PID>/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.

View File

@ -1,166 +0,0 @@
From: Srinivas Pandruvada <srinivas.pandruvada@linux.intel.com>
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 <srinivas.pandruvada@linux.intel.com>
[ rjw: Subject & changelog, function rename ]
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
---
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
-------------------------------------------------------------------------- */

View File

@ -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