]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
4.14-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 7 Jan 2019 10:32:57 +0000 (11:32 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 7 Jan 2019 10:32:57 +0000 (11:32 +0100)
added patches:
arm-arm64-kvm-vgic-force-vm-halt-when-changing-the-active-state-of-gicv3-ppis-sgis.patch
arm-dts-exynos-specify-i2s-assigned-clocks-in-proper-node.patch
arm64-kvm-avoid-setting-the-upper-32-bits-of-vtcr_el2-to-1.patch
rtc-m41t80-correct-alarm-month-range-with-rtc-reads.patch
tpm-tpm_i2c_nuvoton-use-correct-command-duration-for-tpm-2.x.patch
tpm-tpm_try_transmit-refactor-error-flow.patch

queue-4.14/arm-arm64-kvm-vgic-force-vm-halt-when-changing-the-active-state-of-gicv3-ppis-sgis.patch [new file with mode: 0644]
queue-4.14/arm-dts-exynos-specify-i2s-assigned-clocks-in-proper-node.patch [new file with mode: 0644]
queue-4.14/arm64-kvm-avoid-setting-the-upper-32-bits-of-vtcr_el2-to-1.patch [new file with mode: 0644]
queue-4.14/rtc-m41t80-correct-alarm-month-range-with-rtc-reads.patch [new file with mode: 0644]
queue-4.14/series
queue-4.14/tpm-tpm_i2c_nuvoton-use-correct-command-duration-for-tpm-2.x.patch [new file with mode: 0644]
queue-4.14/tpm-tpm_try_transmit-refactor-error-flow.patch [new file with mode: 0644]

diff --git a/queue-4.14/arm-arm64-kvm-vgic-force-vm-halt-when-changing-the-active-state-of-gicv3-ppis-sgis.patch b/queue-4.14/arm-arm64-kvm-vgic-force-vm-halt-when-changing-the-active-state-of-gicv3-ppis-sgis.patch
new file mode 100644 (file)
index 0000000..5f38142
--- /dev/null
@@ -0,0 +1,46 @@
+From 107352a24900fb458152b92a4e72fbdc83fd5510 Mon Sep 17 00:00:00 2001
+From: Marc Zyngier <marc.zyngier@arm.com>
+Date: Tue, 18 Dec 2018 14:59:09 +0000
+Subject: arm/arm64: KVM: vgic: Force VM halt when changing the active state of GICv3 PPIs/SGIs
+
+From: Marc Zyngier <marc.zyngier@arm.com>
+
+commit 107352a24900fb458152b92a4e72fbdc83fd5510 upstream.
+
+We currently only halt the guest when a vCPU messes with the active
+state of an SPI. This is perfectly fine for GICv2, but isn't enough
+for GICv3, where all vCPUs can access the state of any other vCPU.
+
+Let's broaden the condition to include any GICv3 interrupt that
+has an active state (i.e. all but LPIs).
+
+Cc: stable@vger.kernel.org
+Reviewed-by: Christoffer Dall <christoffer.dall@arm.com>
+Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ virt/kvm/arm/vgic/vgic-mmio.c |    6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+--- a/virt/kvm/arm/vgic/vgic-mmio.c
++++ b/virt/kvm/arm/vgic/vgic-mmio.c
+@@ -241,14 +241,16 @@ static void vgic_mmio_change_active(stru
+  */
+ static void vgic_change_active_prepare(struct kvm_vcpu *vcpu, u32 intid)
+ {
+-      if (intid > VGIC_NR_PRIVATE_IRQS)
++      if (vcpu->kvm->arch.vgic.vgic_model == KVM_DEV_TYPE_ARM_VGIC_V3 ||
++          intid > VGIC_NR_PRIVATE_IRQS)
+               kvm_arm_halt_guest(vcpu->kvm);
+ }
+ /* See vgic_change_active_prepare */
+ static void vgic_change_active_finish(struct kvm_vcpu *vcpu, u32 intid)
+ {
+-      if (intid > VGIC_NR_PRIVATE_IRQS)
++      if (vcpu->kvm->arch.vgic.vgic_model == KVM_DEV_TYPE_ARM_VGIC_V3 ||
++          intid > VGIC_NR_PRIVATE_IRQS)
+               kvm_arm_resume_guest(vcpu->kvm);
+ }
diff --git a/queue-4.14/arm-dts-exynos-specify-i2s-assigned-clocks-in-proper-node.patch b/queue-4.14/arm-dts-exynos-specify-i2s-assigned-clocks-in-proper-node.patch
new file mode 100644 (file)
index 0000000..aae99d8
--- /dev/null
@@ -0,0 +1,113 @@
+From 8ac686d7dfed721102860ff2571e6b9f529ae81a Mon Sep 17 00:00:00 2001
+From: Sylwester Nawrocki <s.nawrocki@samsung.com>
+Date: Wed, 12 Dec 2018 18:57:44 +0100
+Subject: ARM: dts: exynos: Specify I2S assigned clocks in proper node
+
+From: Sylwester Nawrocki <s.nawrocki@samsung.com>
+
+commit 8ac686d7dfed721102860ff2571e6b9f529ae81a upstream.
+
+The assigned parent clocks should be normally specified in the consumer
+device's DT node, this ensures respective driver always sees correct clock
+settings when required.
+
+This patch fixes regression in audio subsystem on Odroid XU3/XU4 boards
+that appeared after commits:
+
+commit 647d04f8e07a ("ASoC: samsung: i2s: Ensure the RCLK rate is properly determined")
+commit 995e73e55f46 ("ASoC: samsung: i2s: Fix rclk_srcrate handling")
+commit 48279c53fd1d ("ASoC: samsung: i2s: Prevent external abort on exynos5433 I2S1 access")
+
+Without this patch the driver gets wrong clock as the I2S function clock
+(op_clk) in probe() and effectively the clock which is finally assigned
+from DT is not being enabled/disabled in the runtime resume/suspend ops.
+
+Without the above listed commits the EXYNOS_I2S_BUS clock was always set
+as parent of CLK_I2S_RCLK_SRC regardless of DT settings so there was no issue
+with not enabled EXYNOS_SCLK_I2S.
+
+Cc: <stable@vger.kernel.org> # 4.17.x
+Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
+Signed-off-by: Krzysztof Kozlowski <krzk@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+diff --git a/arch/arm/boot/dts/exynos5422-odroidxu3-audio.dtsi b/arch/arm/boot/dts/exynos5422-odroidxu3-audio.dtsi
+index 03611d50c5a9..e84544b220b9 100644
+--- a/arch/arm/boot/dts/exynos5422-odroidxu3-audio.dtsi
++++ b/arch/arm/boot/dts/exynos5422-odroidxu3-audio.dtsi
+@@ -26,8 +26,7 @@
+                       "Speakers", "SPKL",
+                       "Speakers", "SPKR";
+-              assigned-clocks = <&i2s0 CLK_I2S_RCLK_SRC>,
+-                              <&clock CLK_MOUT_EPLL>,
++              assigned-clocks = <&clock CLK_MOUT_EPLL>,
+                               <&clock CLK_MOUT_MAU_EPLL>,
+                               <&clock CLK_MOUT_USER_MAU_EPLL>,
+                               <&clock_audss EXYNOS_MOUT_AUDSS>,
+@@ -36,8 +35,7 @@
+                               <&clock_audss EXYNOS_DOUT_AUD_BUS>,
+                               <&clock_audss EXYNOS_DOUT_I2S>;
+-              assigned-clock-parents = <&clock_audss EXYNOS_SCLK_I2S>,
+-                              <&clock CLK_FOUT_EPLL>,
++              assigned-clock-parents = <&clock CLK_FOUT_EPLL>,
+                               <&clock CLK_MOUT_EPLL>,
+                               <&clock CLK_MOUT_MAU_EPLL>,
+                               <&clock CLK_MAU_EPLL>,
+@@ -48,7 +46,6 @@
+                               <0>,
+                               <0>,
+                               <0>,
+-                              <0>,
+                               <196608001>,
+                               <(196608002 / 2)>,
+                               <196608000>;
+@@ -84,4 +81,6 @@
+ &i2s0 {
+       status = "okay";
++      assigned-clocks = <&i2s0 CLK_I2S_RCLK_SRC>;
++      assigned-clock-parents = <&clock_audss EXYNOS_SCLK_I2S>;
+ };
+diff --git a/arch/arm/boot/dts/exynos5422-odroidxu4.dts b/arch/arm/boot/dts/exynos5422-odroidxu4.dts
+index 4a30cc849b00..122174ea9e0a 100644
+--- a/arch/arm/boot/dts/exynos5422-odroidxu4.dts
++++ b/arch/arm/boot/dts/exynos5422-odroidxu4.dts
+@@ -33,8 +33,7 @@
+               compatible = "samsung,odroid-xu3-audio";
+               model = "Odroid-XU4";
+-              assigned-clocks = <&i2s0 CLK_I2S_RCLK_SRC>,
+-                              <&clock CLK_MOUT_EPLL>,
++              assigned-clocks = <&clock CLK_MOUT_EPLL>,
+                               <&clock CLK_MOUT_MAU_EPLL>,
+                               <&clock CLK_MOUT_USER_MAU_EPLL>,
+                               <&clock_audss EXYNOS_MOUT_AUDSS>,
+@@ -43,8 +42,7 @@
+                               <&clock_audss EXYNOS_DOUT_AUD_BUS>,
+                               <&clock_audss EXYNOS_DOUT_I2S>;
+-              assigned-clock-parents = <&clock_audss EXYNOS_SCLK_I2S>,
+-                              <&clock CLK_FOUT_EPLL>,
++              assigned-clock-parents = <&clock CLK_FOUT_EPLL>,
+                               <&clock CLK_MOUT_EPLL>,
+                               <&clock CLK_MOUT_MAU_EPLL>,
+                               <&clock CLK_MAU_EPLL>,
+@@ -55,7 +53,6 @@
+                               <0>,
+                               <0>,
+                               <0>,
+-                              <0>,
+                               <196608001>,
+                               <(196608002 / 2)>,
+                               <196608000>;
+@@ -79,6 +76,8 @@
+ &i2s0 {
+       status = "okay";
++      assigned-clocks = <&i2s0 CLK_I2S_RCLK_SRC>;
++      assigned-clock-parents = <&clock_audss EXYNOS_SCLK_I2S>;
+ };
+ &pwm {
diff --git a/queue-4.14/arm64-kvm-avoid-setting-the-upper-32-bits-of-vtcr_el2-to-1.patch b/queue-4.14/arm64-kvm-avoid-setting-the-upper-32-bits-of-vtcr_el2-to-1.patch
new file mode 100644 (file)
index 0000000..4b6c342
--- /dev/null
@@ -0,0 +1,38 @@
+From df655b75c43fba0f2621680ab261083297fd6d16 Mon Sep 17 00:00:00 2001
+From: Will Deacon <will.deacon@arm.com>
+Date: Thu, 13 Dec 2018 16:06:14 +0000
+Subject: arm64: KVM: Avoid setting the upper 32 bits of VTCR_EL2 to 1
+
+From: Will Deacon <will.deacon@arm.com>
+
+commit df655b75c43fba0f2621680ab261083297fd6d16 upstream.
+
+Although bit 31 of VTCR_EL2 is RES1, we inadvertently end up setting all
+of the upper 32 bits to 1 as well because we define VTCR_EL2_RES1 as
+signed, which is sign-extended when assigning to kvm->arch.vtcr.
+
+Lucky for us, the architecture currently treats these upper bits as RES0
+so, whilst we've been naughty, we haven't set fire to anything yet.
+
+Cc: <stable@vger.kernel.org>
+Cc: Marc Zyngier <marc.zyngier@arm.com>
+Cc: Christoffer Dall <christoffer.dall@arm.com>
+Signed-off-by: Will Deacon <will.deacon@arm.com>
+Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ arch/arm64/include/asm/kvm_arm.h |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/arch/arm64/include/asm/kvm_arm.h
++++ b/arch/arm64/include/asm/kvm_arm.h
+@@ -99,7 +99,7 @@
+                        TCR_EL2_ORGN0_MASK | TCR_EL2_IRGN0_MASK | TCR_EL2_T0SZ_MASK)
+ /* VTCR_EL2 Registers bits */
+-#define VTCR_EL2_RES1         (1 << 31)
++#define VTCR_EL2_RES1         (1U << 31)
+ #define VTCR_EL2_HD           (1 << 22)
+ #define VTCR_EL2_HA           (1 << 21)
+ #define VTCR_EL2_PS_MASK      TCR_EL2_PS_MASK
diff --git a/queue-4.14/rtc-m41t80-correct-alarm-month-range-with-rtc-reads.patch b/queue-4.14/rtc-m41t80-correct-alarm-month-range-with-rtc-reads.patch
new file mode 100644 (file)
index 0000000..cd30567
--- /dev/null
@@ -0,0 +1,41 @@
+From 3cc9ffbb1f51eb4320575a48e4805a8f52e0e26b Mon Sep 17 00:00:00 2001
+From: "Maciej W. Rozycki" <macro@linux-mips.org>
+Date: Wed, 7 Nov 2018 02:39:13 +0000
+Subject: rtc: m41t80: Correct alarm month range with RTC reads
+
+From: Maciej W. Rozycki <macro@linux-mips.org>
+
+commit 3cc9ffbb1f51eb4320575a48e4805a8f52e0e26b upstream.
+
+Add the missing adjustment of the month range on alarm reads from the
+RTC, correcting an issue coming from commit 9c6dfed92c3e ("rtc: m41t80:
+add alarm functionality").  The range is 1-12 for hardware and 0-11 for
+`struct rtc_time', and is already correctly handled on alarm writes to
+the RTC.
+
+It was correct up until commit 48e9766726eb ("drivers/rtc/rtc-m41t80.c:
+remove disabled alarm functionality") too, which removed the previous
+implementation of alarm support.
+
+Signed-off-by: Maciej W. Rozycki <macro@linux-mips.org>
+Fixes: 9c6dfed92c3e ("rtc: m41t80: add alarm functionality")
+References: 48e9766726eb ("drivers/rtc/rtc-m41t80.c: remove disabled alarm functionality")
+Cc: stable@vger.kernel.org # 4.7+
+Signed-off-by: Alexandre Belloni <alexandre.belloni@bootlin.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/rtc/rtc-m41t80.c |    2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/rtc/rtc-m41t80.c
++++ b/drivers/rtc/rtc-m41t80.c
+@@ -404,7 +404,7 @@ static int m41t80_read_alarm(struct devi
+       alrm->time.tm_min  = bcd2bin(alarmvals[3] & 0x7f);
+       alrm->time.tm_hour = bcd2bin(alarmvals[2] & 0x3f);
+       alrm->time.tm_mday = bcd2bin(alarmvals[1] & 0x3f);
+-      alrm->time.tm_mon  = bcd2bin(alarmvals[0] & 0x3f);
++      alrm->time.tm_mon  = bcd2bin(alarmvals[0] & 0x3f) - 1;
+       alrm->enabled = !!(alarmvals[0] & M41T80_ALMON_AFE);
+       alrm->pending = (flags & M41T80_FLAGS_AF) && alrm->enabled;
index efba9ab83f96ab0997e090aff4032a9b4f5b0921..729c18e9537b0a048235115e34338468168c3868 100644 (file)
@@ -93,3 +93,9 @@ mips-align-kernel-load-address-to-64kb.patch
 mips-expand-mips32-asids-to-64-bits.patch
 mips-octeon-mark-rgmii-interface-disabled-on-octeon-iii.patch
 cifs-fix-error-mapping-for-smb2_lock-command-which-caused-ofd-lock-problem.patch
+arm64-kvm-avoid-setting-the-upper-32-bits-of-vtcr_el2-to-1.patch
+arm-arm64-kvm-vgic-force-vm-halt-when-changing-the-active-state-of-gicv3-ppis-sgis.patch
+rtc-m41t80-correct-alarm-month-range-with-rtc-reads.patch
+tpm-tpm_try_transmit-refactor-error-flow.patch
+tpm-tpm_i2c_nuvoton-use-correct-command-duration-for-tpm-2.x.patch
+arm-dts-exynos-specify-i2s-assigned-clocks-in-proper-node.patch
diff --git a/queue-4.14/tpm-tpm_i2c_nuvoton-use-correct-command-duration-for-tpm-2.x.patch b/queue-4.14/tpm-tpm_i2c_nuvoton-use-correct-command-duration-for-tpm-2.x.patch
new file mode 100644 (file)
index 0000000..86882e5
--- /dev/null
@@ -0,0 +1,54 @@
+From 2ba5780ce30549cf57929b01d8cba6fe656e31c5 Mon Sep 17 00:00:00 2001
+From: Tomas Winkler <tomas.winkler@intel.com>
+Date: Fri, 19 Oct 2018 21:22:47 +0300
+Subject: tpm: tpm_i2c_nuvoton: use correct command duration for TPM 2.x
+
+From: Tomas Winkler <tomas.winkler@intel.com>
+
+commit 2ba5780ce30549cf57929b01d8cba6fe656e31c5 upstream.
+
+tpm_i2c_nuvoton calculated commands duration using TPM 1.x
+values via tpm_calc_ordinal_duration() also for TPM 2.x chips.
+Call tpm2_calc_ordinal_duration() for retrieving ordinal
+duration for TPM 2.X chips.
+
+Cc: stable@vger.kernel.org
+Cc: Nayna Jain <nayna@linux.vnet.ibm.com>
+Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
+Reviewed-by: Nayna Jain <nayna@linux.ibm.com>
+Tested-by: Nayna Jain <nayna@linux.ibm.com> (For TPM 2.0)
+Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
+Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/char/tpm/tpm_i2c_nuvoton.c |   11 +++++++----
+ 1 file changed, 7 insertions(+), 4 deletions(-)
+
+--- a/drivers/char/tpm/tpm_i2c_nuvoton.c
++++ b/drivers/char/tpm/tpm_i2c_nuvoton.c
+@@ -369,6 +369,7 @@ static int i2c_nuvoton_send(struct tpm_c
+       struct device *dev = chip->dev.parent;
+       struct i2c_client *client = to_i2c_client(dev);
+       u32 ordinal;
++      unsigned long duration;
+       size_t count = 0;
+       int burst_count, bytes2write, retries, rc = -EIO;
+@@ -455,10 +456,12 @@ static int i2c_nuvoton_send(struct tpm_c
+               return rc;
+       }
+       ordinal = be32_to_cpu(*((__be32 *) (buf + 6)));
+-      rc = i2c_nuvoton_wait_for_data_avail(chip,
+-                                           tpm_calc_ordinal_duration(chip,
+-                                                                     ordinal),
+-                                           &priv->read_queue);
++      if (chip->flags & TPM_CHIP_FLAG_TPM2)
++              duration = tpm2_calc_ordinal_duration(chip, ordinal);
++      else
++              duration = tpm_calc_ordinal_duration(chip, ordinal);
++
++      rc = i2c_nuvoton_wait_for_data_avail(chip, duration, &priv->read_queue);
+       if (rc) {
+               dev_err(dev, "%s() timeout command duration\n", __func__);
+               i2c_nuvoton_ready(chip);
diff --git a/queue-4.14/tpm-tpm_try_transmit-refactor-error-flow.patch b/queue-4.14/tpm-tpm_try_transmit-refactor-error-flow.patch
new file mode 100644 (file)
index 0000000..373b9a6
--- /dev/null
@@ -0,0 +1,67 @@
+From 01f54664a4db0d612de0ece8e0022f21f9374e9b Mon Sep 17 00:00:00 2001
+From: Tomas Winkler <tomas.winkler@intel.com>
+Date: Tue, 16 Oct 2018 16:37:16 +0300
+Subject: tpm: tpm_try_transmit() refactor error flow.
+
+From: Tomas Winkler <tomas.winkler@intel.com>
+
+commit 01f54664a4db0d612de0ece8e0022f21f9374e9b upstream.
+
+First, rename out_no_locality to out_locality for bailing out on
+both tpm_cmd_ready() and tpm_request_locality() failure.
+Second, ignore the return value of go_to_idle() as  it may override
+the return value of the actual tpm operation, the go_to_idle() error
+will be caught on any consequent command.
+Last, fix the wrong 'goto out', that jumped back instead of forward.
+
+Cc: stable@vger.kernel.org
+Fixes: 627448e85c76 ("tpm: separate cmd_ready/go_idle from runtime_pm")
+Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
+Reviewed-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
+Tested-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
+Signed-off-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+---
+ drivers/char/tpm/tpm-interface.c |   15 ++++++++-------
+ 1 file changed, 8 insertions(+), 7 deletions(-)
+
+--- a/drivers/char/tpm/tpm-interface.c
++++ b/drivers/char/tpm/tpm-interface.c
+@@ -479,13 +479,15 @@ static ssize_t tpm_try_transmit(struct t
+       if (need_locality) {
+               rc = tpm_request_locality(chip, flags);
+-              if (rc < 0)
+-                      goto out_no_locality;
++              if (rc < 0) {
++                      need_locality = false;
++                      goto out_locality;
++              }
+       }
+       rc = tpm_cmd_ready(chip, flags);
+       if (rc)
+-              goto out;
++              goto out_locality;
+       rc = tpm2_prepare_space(chip, space, ordinal, buf);
+       if (rc)
+@@ -549,14 +551,13 @@ out_recv:
+               dev_err(&chip->dev, "tpm2_commit_space: error %d\n", rc);
+ out:
+-      rc = tpm_go_idle(chip, flags);
+-      if (rc)
+-              goto out;
++      /* may fail but do not override previous error value in rc */
++      tpm_go_idle(chip, flags);
++out_locality:
+       if (need_locality)
+               tpm_relinquish_locality(chip, flags);
+-out_no_locality:
+       if (chip->ops->clk_enable != NULL)
+               chip->ops->clk_enable(chip, false);