summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--0001-Temp-fix-for-intel_pstate-oopses-and-lockdep-report-.patch52
-rw-r--r--Add-EFI-signature-data-types.patch14
-rw-r--r--HID-sony-do-not-bail-out-when-the-sixaxis-refuses-th.patch49
-rw-r--r--USB-input-powermate-fix-oops-with-malicious-USB-desc.patch38
-rw-r--r--arm64-avoid-needing-console-to-enable-serial-console.patch12
-rw-r--r--config-arm648
-rw-r--r--config-generic19
-rw-r--r--gitrev2
-rw-r--r--intel_pstate-Do-not-call-wrmsrl_on_cpu-with-disabled.patch241
-rw-r--r--kernel.spec14
-rw-r--r--sources2
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?
diff --git a/gitrev b/gitrev
index ebe417146..f90e9678e 100644
--- a/gitrev
+++ b/gitrev
@@ -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)
diff --git a/sources b/sources
index e9f83f041..bcfa0808f 100644
--- a/sources
+++ b/sources
@@ -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