diff options
author | Josh Boyer <jwboyer@fedoraproject.org> | 2016-03-18 13:10:43 -0400 |
---|---|---|
committer | Josh Boyer <jwboyer@fedoraproject.org> | 2016-03-18 13:10:43 -0400 |
commit | 1dea4eb579f8656449b31372767cfb5910b16ba3 (patch) | |
tree | 355497c8f96ebbf33068234af9618554efff900c | |
parent | 8b7fda18c9ae7c1c5fc3be129f52798752a3bf24 (diff) | |
download | kernel-1dea4eb579f8656449b31372767cfb5910b16ba3.tar.gz kernel-1dea4eb579f8656449b31372767cfb5910b16ba3.tar.xz kernel-1dea4eb579f8656449b31372767cfb5910b16ba3.zip |
Linux v4.5-4071-g10fdfee7f7fd
- input, livepatching, trivial, hid, gpio, m68knommu, arm64, selftest merges
-rw-r--r-- | 0001-Temp-fix-for-intel_pstate-oopses-and-lockdep-report-.patch | 52 | ||||
-rw-r--r-- | Add-EFI-signature-data-types.patch | 14 | ||||
-rw-r--r-- | HID-sony-do-not-bail-out-when-the-sixaxis-refuses-th.patch | 49 | ||||
-rw-r--r-- | USB-input-powermate-fix-oops-with-malicious-USB-desc.patch | 38 | ||||
-rw-r--r-- | arm64-avoid-needing-console-to-enable-serial-console.patch | 12 | ||||
-rw-r--r-- | config-arm64 | 8 | ||||
-rw-r--r-- | config-generic | 19 | ||||
-rw-r--r-- | gitrev | 2 | ||||
-rw-r--r-- | intel_pstate-Do-not-call-wrmsrl_on_cpu-with-disabled.patch | 241 | ||||
-rw-r--r-- | kernel.spec | 14 | ||||
-rw-r--r-- | sources | 2 |
11 files changed, 288 insertions, 163 deletions
diff --git a/0001-Temp-fix-for-intel_pstate-oopses-and-lockdep-report-.patch b/0001-Temp-fix-for-intel_pstate-oopses-and-lockdep-report-.patch deleted file mode 100644 index b28878e28..000000000 --- a/0001-Temp-fix-for-intel_pstate-oopses-and-lockdep-report-.patch +++ /dev/null @@ -1,52 +0,0 @@ -From e2fea58e57993ab2ed011eb35a034507347336ed Mon Sep 17 00:00:00 2001 -From: "Rafael J. Wysocki" <rjw@rjwysocki.net> -Date: Thu, 17 Mar 2016 15:07:16 +0100 -Subject: [PATCH] Temp fix for intel_pstate oopses and lockdep report with - Linux v4.5-1822-g63e30271b04c - -On Thursday, March 17, 2016 09:02:29 AM Josh Boyer wrote: -> Hello, - -Hi, - -> I have an Intel Atom based NUC that is producing the following -> backtraces on boot of Linus' tree as of last evening. This does not -> happen with a tree with top level commit 271ecc5253e2, but does happen -> when using the tree mentioned in the subject with top level commit -> 63e30271b04c. -> -> The first backtrace appears to be a warning because the intel_pstate -> driver is calling wrmsrl_on_cpu when interrupts are disabled? Not -> sure on that one. -> -> The second backtrace is a lockdep report. Both are from the same boot. - -OK, thanks for the report. - -Can you please try the patch below? - -I'm actually unsure if we can do that safely in general for Atom because -of the initialization, but that's what Core does anyway. - -Srinivas, Philippe, why exactly do we need the wrmsrl_on_cpu() in -atom_set_pstate()? core_set_pstate() uses wrmsrl() and seems to be doing fine. ---- - drivers/cpufreq/intel_pstate.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c -index cb5607495816..32d5d6456290 100644 ---- a/drivers/cpufreq/intel_pstate.c -+++ b/drivers/cpufreq/intel_pstate.c -@@ -587,7 +587,7 @@ static void atom_set_pstate(struct cpudata *cpudata, int pstate) - - val |= vid; - -- wrmsrl_on_cpu(cpudata->cpu, MSR_IA32_PERF_CTL, val); -+ wrmsrl(MSR_IA32_PERF_CTL, val); - } - - static int silvermont_get_scaling(void) --- -2.5.0 - diff --git a/Add-EFI-signature-data-types.patch b/Add-EFI-signature-data-types.patch index 35f170abb..4bdea30ae 100644 --- a/Add-EFI-signature-data-types.patch +++ b/Add-EFI-signature-data-types.patch @@ -1,7 +1,7 @@ -From 47f6b5c281137394d627e275cb80980492d00d84 Mon Sep 17 00:00:00 2001 +From 24ceffbbe2764a31328e1146a2cf4bdcf85664e7 Mon Sep 17 00:00:00 2001 From: Dave Howells <dhowells@redhat.com> Date: Tue, 23 Oct 2012 09:30:54 -0400 -Subject: [PATCH 15/20] Add EFI signature data types +Subject: [PATCH] Add EFI signature data types Add the data types that are used for containing hashes, keys and certificates for cryptographic verification. @@ -15,12 +15,12 @@ Signed-off-by: David Howells <dhowells@redhat.com> 1 file changed, 20 insertions(+) diff --git a/include/linux/efi.h b/include/linux/efi.h -index 4dc970e..82d6218 100644 +index 333d0ca6940f..b3efb6d06344 100644 --- a/include/linux/efi.h +++ b/include/linux/efi.h -@@ -599,6 +599,12 @@ void efi_native_runtime_setup(void); - #define EFI_PROPERTIES_TABLE_GUID \ - EFI_GUID( 0x880aaca3, 0x4adc, 0x4a04, 0x90, 0x79, 0xb7, 0x47, 0x34, 0x08, 0x25, 0xe5 ) +@@ -603,6 +603,12 @@ void efi_native_runtime_setup(void); + EFI_GUID(0x3152bca5, 0xeade, 0x433d, \ + 0x86, 0x2e, 0xc0, 0x1c, 0xdc, 0x29, 0x1f, 0x44) +#define EFI_CERT_SHA256_GUID \ + EFI_GUID( 0xc1c41626, 0x504c, 0x4092, 0xac, 0xa9, 0x41, 0xf9, 0x36, 0x93, 0x43, 0x28 ) @@ -31,7 +31,7 @@ index 4dc970e..82d6218 100644 typedef struct { efi_guid_t guid; u64 table; -@@ -823,6 +829,20 @@ typedef struct { +@@ -827,6 +833,20 @@ typedef struct { #define EFI_INVALID_TABLE_ADDR (~0UL) diff --git a/HID-sony-do-not-bail-out-when-the-sixaxis-refuses-th.patch b/HID-sony-do-not-bail-out-when-the-sixaxis-refuses-th.patch deleted file mode 100644 index b1a789e84..000000000 --- a/HID-sony-do-not-bail-out-when-the-sixaxis-refuses-th.patch +++ /dev/null @@ -1,49 +0,0 @@ -From 954d6154959c8c196fa4b89fc98a4fb377c6a38d Mon Sep 17 00:00:00 2001 -From: Benjamin Tissoires <benjamin.tissoires@redhat.com> -Date: Fri, 8 Jan 2016 17:58:49 +0100 -Subject: [PATCH] HID: sony: do not bail out when the sixaxis refuses the - output report - -When setting the operational mode, some third party (Speedlink Strike-FX) -gamepads refuse the output report. Failing here means we refuse to -initialize the gamepad while this should be harmless. - -The weird part is that the initial commit that added this: a7de9b8 -("HID: sony: Enable Gasia third-party PS3 controllers") mentions this -very same controller as one requiring this output report. -Anyway, it's broken for one user at least, so let's change it. -We will report an error, but at least the controller should work. - -And no, these devices present themselves as legacy Sony controllers -(VID:PID of 054C:0268, as in the official ones) so there are no ways -of discriminating them from the official ones. - -https://bugzilla.redhat.com/show_bug.cgi?id=1255325 - -Reported-and-tested-by: Max Fedotov <thesourcehim@gmail.com> -Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> -Signed-off-by: Jiri Kosina <jkosina@suse.cz> ---- - drivers/hid/hid-sony.c | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/drivers/hid/hid-sony.c b/drivers/hid/hid-sony.c -index 661f94f8ab8b..11f91c0c2458 100644 ---- a/drivers/hid/hid-sony.c -+++ b/drivers/hid/hid-sony.c -@@ -1411,8 +1411,10 @@ static int sixaxis_set_operational_usb(struct hid_device *hdev) - } - - ret = hid_hw_output_report(hdev, buf, 1); -- if (ret < 0) -- hid_err(hdev, "can't set operational mode: step 3\n"); -+ if (ret < 0) { -+ hid_info(hdev, "can't set operational mode: step 3, ignoring\n"); -+ ret = 0; -+ } - - out: - kfree(buf); --- -2.5.0 - diff --git a/USB-input-powermate-fix-oops-with-malicious-USB-desc.patch b/USB-input-powermate-fix-oops-with-malicious-USB-desc.patch deleted file mode 100644 index 7de890e1b..000000000 --- a/USB-input-powermate-fix-oops-with-malicious-USB-desc.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 0383ff3ba89d3e6c604138e3ba46685621d71f98 Mon Sep 17 00:00:00 2001 -From: Josh Boyer <jwboyer@fedoraproject.org> -Date: Mon, 14 Mar 2016 10:02:51 -0400 -Subject: [PATCH] USB: input: powermate: fix oops with malicious USB - descriptors - -The powermate driver expects at least one valid USB endpoint in its -probe function. If given malicious descriptors that specify 0 for -the number of endpoints, it will crash. Validate the number of -endpoints on the interface before using them. - -The full report for this issue can be found here: -http://seclists.org/bugtraq/2016/Mar/85 - -Reported-by: Ralf Spenneberg <ralf@spenneberg.net> -Cc: stable <stable@vger.kernel.org> -Signed-off-by: Josh Boyer <jwboyer@fedoraproject.org> ---- - drivers/input/misc/powermate.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/drivers/input/misc/powermate.c b/drivers/input/misc/powermate.c -index 63b539d3daba..84909a12ff36 100644 ---- a/drivers/input/misc/powermate.c -+++ b/drivers/input/misc/powermate.c -@@ -307,6 +307,9 @@ static int powermate_probe(struct usb_interface *intf, const struct usb_device_i - int error = -ENOMEM; - - interface = intf->cur_altsetting; -+ if (interface->desc.bNumEndpoints < 1) -+ return -EINVAL; -+ - endpoint = &interface->endpoint[0].desc; - if (!usb_endpoint_is_int_in(endpoint)) - return -EIO; --- -2.5.0 - diff --git a/arm64-avoid-needing-console-to-enable-serial-console.patch b/arm64-avoid-needing-console-to-enable-serial-console.patch index e8cc7bbe0..3c639a0a3 100644 --- a/arm64-avoid-needing-console-to-enable-serial-console.patch +++ b/arm64-avoid-needing-console-to-enable-serial-console.patch @@ -1,4 +1,4 @@ -From ede02df9a481ba07348e6fd4393ba2e273ef16d8 Mon Sep 17 00:00:00 2001 +From ce7a9e482dcf66d155e74b39ada1708cf6d9cb25 Mon Sep 17 00:00:00 2001 From: Mark Salter <msalter@redhat.com> Date: Wed, 25 Mar 2015 14:17:50 -0400 Subject: [PATCH] arm64: avoid needing console= to enable serial console @@ -11,17 +11,17 @@ firmware. Signed-off-by: Mark Salter <msalter@redhat.com> --- - arch/arm64/kernel/setup.c | 19 +++++++++++++++++++ - 1 file changed, 19 insertions(+) + arch/arm64/kernel/setup.c | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) diff --git a/arch/arm64/kernel/setup.c b/arch/arm64/kernel/setup.c -index 8119479..ea9ff80 100644 +index 9dc67769b6a4..dfac33b47423 100644 --- a/arch/arm64/kernel/setup.c +++ b/arch/arm64/kernel/setup.c -@@ -381,3 +381,22 @@ static int __init topology_init(void) +@@ -417,3 +417,22 @@ static int __init register_kernel_offset_dumper(void) return 0; } - subsys_initcall(topology_init); + __initcall(register_kernel_offset_dumper); + +/* + * Temporary hack to avoid need for console= on command line diff --git a/config-arm64 b/config-arm64 index dcf8f9135..394ea2d95 100644 --- a/config-arm64 +++ b/config-arm64 @@ -36,6 +36,7 @@ CONFIG_ARM64_ERRATUM_843419=y CONFIG_ARM64_ERRATUM_834220=y CONFIG_CAVIUM_ERRATUM_22375=y CONFIG_CAVIUM_ERRATUM_23154=y +CONFIG_CAVIUM_ERRATUM_27456=y # AMBA / VExpress # CONFIG_RTC_DRV_PL030 is not set @@ -51,6 +52,13 @@ CONFIG_ARM64_HW_AFDBM=y CONFIG_ARM64_PAN=y CONFIG_ARM64_LSE_ATOMICS=y CONFIG_ARM64_VHE=y +CONFIG_ARM64_UAO=y + +# Have ARM team revisit +# CONFIG_RELOCATABLE is not set +# CONFIG_RANDOMIZE_BASE is not set + +CONFIG_ARM64_ACPI_PARKING_PROTOCOL=y CONFIG_BCMA_POSSIBLE=y CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0 diff --git a/config-generic b/config-generic index 54ded868e..b639eee04 100644 --- a/config-generic +++ b/config-generic @@ -2542,6 +2542,7 @@ CONFIG_TOUCHSCREEN_ZFORCE=m # CONFIG_TOUCHSCREEN_FT6236 is not set # CONFIG_TOUCHSCREEN_ROHM_BU21023 is not set # CONFIG_TOUCHSCREEN_TSC2004 is not set +# CONFIG_TOUCHSCREEN_MELFAS_MIP4 is not set CONFIG_INPUT_MISC=y CONFIG_INPUT_E3X0_BUTTON=m @@ -2566,6 +2567,13 @@ CONFIG_INPUT_MPU3050=m CONFIG_INPUT_KXTJ9=m # CONFIG_INPUT_KXTJ9_POLLED_MODE is not set +CONFIG_RMI4_CORE=m +CONFIG_RMI4_I2C=m +CONFIG_RMI4_F11=y +CONFIG_RMI4_F12=y +CONFIG_RMI4_F30=y +CONFIG_RMI4_SPI=m + # # Character devices # @@ -4083,6 +4091,7 @@ CONFIG_HID_APPLEIR=m CONFIG_HID_LENOVO=m CONFIG_HID_CORSAIR=m CONFIG_HID_GFRM=m +CONFIG_HID_CMEDIA=m # # USB Imaging devices @@ -4432,6 +4441,8 @@ CONFIG_MFD_VIPERBOARD=m # CONFIG_MFD_CROS_EC is not set # CONFIG_MFD_SI476X_CORE is not set # CONFIG_MFD_TPS65912 is not set +# CONFIG_MFD_TPS65912_SPI is not set +# CONFIG_MFD_TPS65912_I2C is not set # CONFIG_MFD_SYSCON is not set # CONFIG_MFD_DA9063 is not set # CONFIG_MFD_DLN2 is not set @@ -4441,7 +4452,6 @@ CONFIG_MFD_VIPERBOARD=m # CONFIG_MFD_TPS65218 is not set # CONFIG_MFD_WM831X_SPI is not set # CONFIG_MFD_ARIZONA_SPI is not set -# CONFIG_MFD_TPS65912_SPI is not set # CONFIG_MFD_MC13XXX_SPI is not set # CONFIG_MFD_DA9052_SPI is not set # CONFIG_MFD_MENF21BMC is not set @@ -5768,6 +5778,13 @@ CONFIG_GPIO_VIPERBOARD=m # CONFIG_GPIO_AMDPT is not set # CONFIG_GPIO_104_IDIO_16 is not set # CONFIG_GPIO_IT87 is not set +# CONFIG_GPIO_TPIC2810 is not set +# CONFIG_GPIO_MPC8XXX is not set +# CONFIG_GPIO_PISOSR is not set +# CONFIG_GPIO_TS4800 is not set +# CONFIG_GPIO_TPS65218 is not set +# CONFIG_GPIO_104_DIO_48E is not set +# CONFIG_GPIO_WS16C48 is not set # FIXME: Why? @@ -1 +1 @@ -5cd0911a9e0e408f28079a5e36a981217bf47520 +10fdfee7f7fd8d4a6a8455ac4c9fbbc51d79b9f7 diff --git a/intel_pstate-Do-not-call-wrmsrl_on_cpu-with-disabled.patch b/intel_pstate-Do-not-call-wrmsrl_on_cpu-with-disabled.patch new file mode 100644 index 000000000..9f3c55d89 --- /dev/null +++ b/intel_pstate-Do-not-call-wrmsrl_on_cpu-with-disabled.patch @@ -0,0 +1,241 @@ +From c517e903c4dbc9271b3cfb43b27d303dd6f03cd7 Mon Sep 17 00:00:00 2001 +From: "Rafael J. Wysocki" <rafael.j.wysocki@intel.com> +Date: Fri, 18 Mar 2016 15:36:25 +0100 +Subject: [PATCH] intel_pstate: Do not call wrmsrl_on_cpu() with disabled + interrupts + +After commit a4675fbc4a7a (cpufreq: intel_pstate: Replace timers with +utilization update callbacks) wrmsrl_on_cpu() cannot be called in the +intel_pstate_adjust_busy_pstate() path as that is executed with +disabled interrupts. However, atom_set_pstate() called from there +via intel_pstate_set_pstate() uses wrmsrl_on_cpu() to update the +IA32_PERF_CTL MSR which triggers the WARN_ON_ONCE() in +smp_call_function_single(). + +The reason why wrmsrl_on_cpu() is used by atom_set_pstate() is +because intel_pstate_set_pstate() calling it is also invoked during +the initialization and cleanup of the driver and in those cases it is +not guaranteed to be run on the CPU that is being updated. However, +in the case when intel_pstate_set_pstate() is called by +intel_pstate_adjust_busy_pstate(), wrmsrl() can be used to update +the register safely. Moreover, intel_pstate_set_pstate() already +contains code that only is executed if the function is called by +intel_pstate_adjust_busy_pstate() and there is a special argument +passed to it because of that. + +To fix the problem at hand, rearrange the code taking the above +observations into account. + +First, replace the ->set() callback in struct pstate_funcs with a +->get_val() one that will return the value to be written to the +IA32_PERF_CTL MSR without updating the register. + +Second, split intel_pstate_set_pstate() into two functions, +intel_pstate_update_pstate() to be called by +intel_pstate_adjust_busy_pstate() that will contain all of the +intel_pstate_set_pstate() code which only needs to be executed in +that case and will use wrmsrl() to update the MSR (after obtaining +the value to write to it from the ->get_val() callback), and +intel_pstate_set_min_pstate() to be invoked during the +initialization and cleanup that will set the P-state to the +minimum one and will update the MSR using wrmsrl_on_cpu(). + +Finally, move the code shared between intel_pstate_update_pstate() +and intel_pstate_set_min_pstate() to a new static inline function +intel_pstate_record_pstate() and make them both call it. + +Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com> +Fixes: a4675fbc4a7a (cpufreq: intel_pstate: Replace timers with utilization update callbacks) +--- + drivers/cpufreq/intel_pstate.c | 73 +++++++++++++++++++++++++----------------- + 1 file changed, 43 insertions(+), 30 deletions(-) + +diff --git a/drivers/cpufreq/intel_pstate.c b/drivers/cpufreq/intel_pstate.c +index cb5607495816..4b644526fd59 100644 +--- a/drivers/cpufreq/intel_pstate.c ++++ b/drivers/cpufreq/intel_pstate.c +@@ -134,7 +134,7 @@ struct pstate_funcs { + int (*get_min)(void); + int (*get_turbo)(void); + int (*get_scaling)(void); +- void (*set)(struct cpudata*, int pstate); ++ u64 (*get_val)(struct cpudata*, int pstate); + void (*get_vid)(struct cpudata *); + int32_t (*get_target_pstate)(struct cpudata *); + }; +@@ -565,7 +565,7 @@ static int atom_get_turbo_pstate(void) + return value & 0x7F; + } + +-static void atom_set_pstate(struct cpudata *cpudata, int pstate) ++static u64 atom_get_val(struct cpudata *cpudata, int pstate) + { + u64 val; + int32_t vid_fp; +@@ -585,9 +585,7 @@ static void atom_set_pstate(struct cpudata *cpudata, int pstate) + if (pstate > cpudata->pstate.max_pstate) + vid = cpudata->vid.turbo; + +- val |= vid; +- +- wrmsrl_on_cpu(cpudata->cpu, MSR_IA32_PERF_CTL, val); ++ return val | vid; + } + + static int silvermont_get_scaling(void) +@@ -711,7 +709,7 @@ static inline int core_get_scaling(void) + return 100000; + } + +-static void core_set_pstate(struct cpudata *cpudata, int pstate) ++static u64 core_get_val(struct cpudata *cpudata, int pstate) + { + u64 val; + +@@ -719,7 +717,7 @@ static void core_set_pstate(struct cpudata *cpudata, int pstate) + if (limits->no_turbo && !limits->turbo_disabled) + val |= (u64)1 << 32; + +- wrmsrl(MSR_IA32_PERF_CTL, val); ++ return val; + } + + static int knl_get_turbo_pstate(void) +@@ -750,7 +748,7 @@ static struct cpu_defaults core_params = { + .get_min = core_get_min_pstate, + .get_turbo = core_get_turbo_pstate, + .get_scaling = core_get_scaling, +- .set = core_set_pstate, ++ .get_val = core_get_val, + .get_target_pstate = get_target_pstate_use_performance, + }, + }; +@@ -769,7 +767,7 @@ static struct cpu_defaults silvermont_params = { + .get_max_physical = atom_get_max_pstate, + .get_min = atom_get_min_pstate, + .get_turbo = atom_get_turbo_pstate, +- .set = atom_set_pstate, ++ .get_val = atom_get_val, + .get_scaling = silvermont_get_scaling, + .get_vid = atom_get_vid, + .get_target_pstate = get_target_pstate_use_cpu_load, +@@ -790,7 +788,7 @@ static struct cpu_defaults airmont_params = { + .get_max_physical = atom_get_max_pstate, + .get_min = atom_get_min_pstate, + .get_turbo = atom_get_turbo_pstate, +- .set = atom_set_pstate, ++ .get_val = atom_get_val, + .get_scaling = airmont_get_scaling, + .get_vid = atom_get_vid, + .get_target_pstate = get_target_pstate_use_cpu_load, +@@ -812,7 +810,7 @@ static struct cpu_defaults knl_params = { + .get_min = core_get_min_pstate, + .get_turbo = knl_get_turbo_pstate, + .get_scaling = core_get_scaling, +- .set = core_set_pstate, ++ .get_val = core_get_val, + .get_target_pstate = get_target_pstate_use_performance, + }, + }; +@@ -839,25 +837,24 @@ static void intel_pstate_get_min_max(struct cpudata *cpu, int *min, int *max) + *min = clamp_t(int, min_perf, cpu->pstate.min_pstate, max_perf); + } + +-static void intel_pstate_set_pstate(struct cpudata *cpu, int pstate, bool force) ++static inline void intel_pstate_record_pstate(struct cpudata *cpu, int pstate) + { +- int max_perf, min_perf; +- +- if (force) { +- update_turbo_state(); +- +- intel_pstate_get_min_max(cpu, &min_perf, &max_perf); +- +- pstate = clamp_t(int, pstate, min_perf, max_perf); +- +- if (pstate == cpu->pstate.current_pstate) +- return; +- } + trace_cpu_frequency(pstate * cpu->pstate.scaling, cpu->cpu); +- + cpu->pstate.current_pstate = pstate; ++} + +- pstate_funcs.set(cpu, pstate); ++static void intel_pstate_set_min_pstate(struct cpudata *cpu) ++{ ++ int pstate = cpu->pstate.min_pstate; ++ ++ intel_pstate_record_pstate(cpu, pstate); ++ /* ++ * Generally, there is no guarantee that this code will always run on ++ * the CPU being updated, so force the register update to run on the ++ * right CPU. ++ */ ++ wrmsrl_on_cpu(cpu->cpu, MSR_IA32_PERF_CTL, ++ pstate_funcs.get_val(cpu, pstate)); + } + + static void intel_pstate_get_cpu_pstates(struct cpudata *cpu) +@@ -870,7 +867,8 @@ static void intel_pstate_get_cpu_pstates(struct cpudata *cpu) + + if (pstate_funcs.get_vid) + pstate_funcs.get_vid(cpu); +- intel_pstate_set_pstate(cpu, cpu->pstate.min_pstate, false); ++ ++ intel_pstate_set_min_pstate(cpu); + } + + static inline void intel_pstate_calc_busy(struct cpudata *cpu) +@@ -997,6 +995,21 @@ static inline int32_t get_target_pstate_use_performance(struct cpudata *cpu) + return cpu->pstate.current_pstate - pid_calc(&cpu->pid, core_busy); + } + ++static inline void intel_pstate_update_pstate(struct cpudata *cpu, int pstate) ++{ ++ int max_perf, min_perf; ++ ++ update_turbo_state(); ++ ++ intel_pstate_get_min_max(cpu, &min_perf, &max_perf); ++ pstate = clamp_t(int, pstate, min_perf, max_perf); ++ if (pstate == cpu->pstate.current_pstate) ++ return; ++ ++ intel_pstate_record_pstate(cpu, pstate); ++ wrmsrl(MSR_IA32_PERF_CTL, pstate_funcs.get_val(cpu, pstate)); ++} ++ + static inline void intel_pstate_adjust_busy_pstate(struct cpudata *cpu) + { + int from, target_pstate; +@@ -1006,7 +1019,7 @@ static inline void intel_pstate_adjust_busy_pstate(struct cpudata *cpu) + + target_pstate = pstate_funcs.get_target_pstate(cpu); + +- intel_pstate_set_pstate(cpu, target_pstate, true); ++ intel_pstate_update_pstate(cpu, target_pstate); + + sample = &cpu->sample; + trace_pstate_sample(fp_toint(sample->core_pct_busy), +@@ -1180,7 +1193,7 @@ static void intel_pstate_stop_cpu(struct cpufreq_policy *policy) + if (hwp_active) + return; + +- intel_pstate_set_pstate(cpu, cpu->pstate.min_pstate, false); ++ intel_pstate_set_min_pstate(cpu); + } + + static int intel_pstate_cpu_init(struct cpufreq_policy *policy) +@@ -1255,7 +1268,7 @@ static void copy_cpu_funcs(struct pstate_funcs *funcs) + pstate_funcs.get_min = funcs->get_min; + pstate_funcs.get_turbo = funcs->get_turbo; + pstate_funcs.get_scaling = funcs->get_scaling; +- pstate_funcs.set = funcs->set; ++ pstate_funcs.get_val = funcs->get_val; + pstate_funcs.get_vid = funcs->get_vid; + pstate_funcs.get_target_pstate = funcs->get_target_pstate; + +-- +2.5.0 + diff --git a/kernel.spec b/kernel.spec index 5646e215a..bc9773f4a 100644 --- a/kernel.spec +++ b/kernel.spec @@ -69,7 +69,7 @@ Summary: The Linux kernel # The rc snapshot level %define rcrev 0 # The git snapshot level -%define gitrev 8 +%define gitrev 9 # Set rpm version accordingly %define rpmversion 4.%{upstream_sublevel}.0 %endif @@ -604,9 +604,6 @@ Patch621: drm-udl-Use-unlocked-gem-unreferencing.patch #Required for some persistent memory options Patch641: disable-CONFIG_EXPERT-for-ZONE_DMA.patch -#rhbz 1255325 -Patch646: HID-sony-do-not-bail-out-when-the-sixaxis-refuses-th.patch - #rhbz 1309658 Patch648: 0001-mm-CONFIG_NR_ZONES_EXTENDED.patch @@ -622,7 +619,7 @@ Patch665: netfilter-x_tables-deal-with-bogus-nextoffset-values.patch #CVE-2016-3135 rhbz 1318172 1318270 Patch666: ipv4-Dont-do-expensive-useless-work-during-inetdev-des.patch -Patch667: 0001-Temp-fix-for-intel_pstate-oopses-and-lockdep-report-.patch +Patch667: intel_pstate-Do-not-call-wrmsrl_on_cpu-with-disabled.patch #rhbz 1318596 Patch668: x86-tsc-Prevent-NULL-pointer-deref-in-calibrate_dela.patch @@ -634,9 +631,6 @@ Patch671: ALSA-usb-audio-Add-sanity-checks-for-endpoint-access.patch #CVE-2016-3137 rhbz 1317010 1316996 Patch672: cypress_m8-add-sanity-checking.patch -#CVE-2016-2186 rhbz 1317015 1317464 -Patch673: USB-input-powermate-fix-oops-with-malicious-USB-desc.patch - #CVE-2016-2188 rhbz 1317018 1317467 Patch674: USB-iowarrior-fix-oops-with-malicious-USB-descriptor.patch @@ -2172,6 +2166,10 @@ fi # # %changelog +* Fri Mar 18 2016 Josh Boyer <jwboyer@fedoraproject.org> - 4.6.0-0.rc0.git9.1 +- Linux v4.5-4071-g10fdfee7f7fd +- input, livepatching, trivial, hid, gpio, m68knommu, arm64, selftest merges + * Fri Mar 18 2016 Josh Boyer <jwboyer@fedoraproject.org> - ims-pcu: sanity checking on missing interfaces - CVE-2016-3140 digi_acceleport: oops on invalid USB descriptors (rhbz 1317010 1316995) @@ -1,3 +1,3 @@ a60d48eee08ec0536d5efb17ca819aef linux-4.5.tar.xz 6f557fe90b800b615c85c2ca04da6154 perf-man-4.5.tar.gz -2ec8a12d2908ee34366bc3314df03a04 patch-4.5-git8.xz +dba9097c028e0f4baf12f05d19f563c7 patch-4.5-git9.xz |