From: Greg Kroah-Hartman Date: Mon, 6 May 2019 08:36:51 +0000 (+0200) Subject: 5.0-stable patches X-Git-Tag: v4.9.174~16 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=28e9872b6a28d1ddbd048fb3d7ced2ea33a099d3;p=thirdparty%2Fkernel%2Fstable-queue.git 5.0-stable patches added patches: asoc-dpcm-skip-missing-substream-while-applying-symmetry.patch asoc-intel-bytcr_rt5651-revert-fix-dmic-map-headsetmic-mapping.patch asoc-rsnd-gen-fix-ssi9-4-5-6-7-busif-related-register-address.patch asoc-stm32-fix-sai-driver-name-initialisation.patch asoc-sunxi-sun50i-codec-analog-rename-hpvcc-regulator-supply-to-cpvdd.patch asoc-wm_adsp-correct-handling-of-compressed-streams-that-restart.patch kvm-lapic-check-for-in-kernel-lapic-before-deferencing-apic-pointer.patch kvm-nvmx-remove-a-rogue-rax-clobber-from-nested_vmx_check_vmentry_hw.patch kvm-vmx-fix-typos-in-vmentry-vmexit-control-setting.patch kvm-vmx-save-rsi-to-an-unused-output-in-the-vcpu-run-asm-blob.patch --- diff --git a/queue-5.0/asoc-dpcm-skip-missing-substream-while-applying-symmetry.patch b/queue-5.0/asoc-dpcm-skip-missing-substream-while-applying-symmetry.patch new file mode 100644 index 00000000000..16875cbfea0 --- /dev/null +++ b/queue-5.0/asoc-dpcm-skip-missing-substream-while-applying-symmetry.patch @@ -0,0 +1,46 @@ +From 6246f283d5e02ac757bd8d9bacde8fdc54c4582d Mon Sep 17 00:00:00 2001 +From: Jerome Brunet +Date: Mon, 1 Apr 2019 15:03:54 +0200 +Subject: ASoC: dpcm: skip missing substream while applying symmetry + +From: Jerome Brunet + +commit 6246f283d5e02ac757bd8d9bacde8fdc54c4582d upstream. + +If for any reason, the backend does not have the requested substream +(like capture on a playback only backend), the BE will be skipped in +dpcm_be_dai_startup(). + +However, dpcm_apply_symmetry() does not skip those BE and will +dereference the be_substream (NULL) pointer anyway. + +Like in dpcm_be_dai_startup(), just skip those BE. + +Fixes: 906c7d690c3b ("ASoC: dpcm: Apply symmetry for DPCM") +Signed-off-by: Jerome Brunet +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman + +--- + sound/soc/soc-pcm.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +--- a/sound/soc/soc-pcm.c ++++ b/sound/soc/soc-pcm.c +@@ -1895,10 +1895,15 @@ static int dpcm_apply_symmetry(struct sn + struct snd_soc_pcm_runtime *be = dpcm->be; + struct snd_pcm_substream *be_substream = + snd_soc_dpcm_get_substream(be, stream); +- struct snd_soc_pcm_runtime *rtd = be_substream->private_data; ++ struct snd_soc_pcm_runtime *rtd; + struct snd_soc_dai *codec_dai; + int i; + ++ /* A backend may not have the requested substream */ ++ if (!be_substream) ++ continue; ++ ++ rtd = be_substream->private_data; + if (rtd->dai_link->be_hw_params_fixup) + continue; + diff --git a/queue-5.0/asoc-intel-bytcr_rt5651-revert-fix-dmic-map-headsetmic-mapping.patch b/queue-5.0/asoc-intel-bytcr_rt5651-revert-fix-dmic-map-headsetmic-mapping.patch new file mode 100644 index 00000000000..d7a1bc01e68 --- /dev/null +++ b/queue-5.0/asoc-intel-bytcr_rt5651-revert-fix-dmic-map-headsetmic-mapping.patch @@ -0,0 +1,42 @@ +From aee48a9ffa5a128bf4e433c57c39e015ea5b0208 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Sun, 30 Dec 2018 00:00:22 +0100 +Subject: ASoC: Intel: bytcr_rt5651: Revert "Fix DMIC map headsetmic mapping" + +From: Hans de Goede + +commit aee48a9ffa5a128bf4e433c57c39e015ea5b0208 upstream. + +Commit 37c7401e8c1f ("ASoC: Intel: bytcr_rt5651: Fix DMIC map +headsetmic mapping"), changed the headsetmic mapping from IN3P to IN2P, +this was based on the observation that all bytcr_rt5651 devices I have +access to (7 devices) where all using IN3P for the headsetmic. This was +an attempt to unifify / simplify the mapping, but it was wrong. + +None of those devices was actually using a digital internal mic. Now I've +access to a Point of View TAB-P1006W-232 (v1.0) tabler, which does use a +DMIC and it does have its headsetmic connected to IN2P, showing that the +original mapping was correct, so this commit reverts the change changing +the mapping back to IN2P. + +Fixes: 37c7401e8c1f ("ASoC: Intel: bytcr_rt5651: Fix DMIC map ... mapping") +Acked-by: Pierre-Louis Bossart +Signed-off-by: Hans de Goede +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman + +--- + sound/soc/intel/boards/bytcr_rt5651.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/sound/soc/intel/boards/bytcr_rt5651.c ++++ b/sound/soc/intel/boards/bytcr_rt5651.c +@@ -266,7 +266,7 @@ static const struct snd_soc_dapm_route b + static const struct snd_soc_dapm_route byt_rt5651_intmic_dmic_map[] = { + {"DMIC L1", NULL, "Internal Mic"}, + {"DMIC R1", NULL, "Internal Mic"}, +- {"IN3P", NULL, "Headset Mic"}, ++ {"IN2P", NULL, "Headset Mic"}, + }; + + static const struct snd_soc_dapm_route byt_rt5651_intmic_in1_map[] = { diff --git a/queue-5.0/asoc-rsnd-gen-fix-ssi9-4-5-6-7-busif-related-register-address.patch b/queue-5.0/asoc-rsnd-gen-fix-ssi9-4-5-6-7-busif-related-register-address.patch new file mode 100644 index 00000000000..01afb1ce29b --- /dev/null +++ b/queue-5.0/asoc-rsnd-gen-fix-ssi9-4-5-6-7-busif-related-register-address.patch @@ -0,0 +1,155 @@ +From 8af6c521cc236534093f9e744cfa004314bfe5ae Mon Sep 17 00:00:00 2001 +From: Jiada Wang +Date: Mon, 25 Feb 2019 12:14:20 +0100 +Subject: ASoC: rsnd: gen: fix SSI9 4/5/6/7 busif related register address + +From: Jiada Wang + +commit 8af6c521cc236534093f9e744cfa004314bfe5ae upstream. + +Currently each SSI unit 's busif mode/adinr/dalign address is +registered by: (in busif4 case) +RSND_GEN_M_REG(SSI_BUSIF4_MODE, 0x500, 0x80) +RSND_GEN_M_REG(SSI_BUSIF4_ADINR,0x504, 0x80) +RSND_GEN_M_REG(SSI_BUSIF4_DALIGN, 0x508, 0x80) + +But according to user manual 41.1.4 Register Configuration +ssi9 4/5/6/7 busif mode/adinr/dalign register address +( SSI9-[4/5/6/7]_BUSIF_[MODE/ADINR/DALIGN] ) +are out of this rule. + +This patch registers ssi9 4/5/6/7 mode/adinr/dalign register +as single register, and access these registers in case of +SSI9 BUSIF 4/5/6/7. + +Fixes: commit 8c9d75033340 ("ASoC: rsnd: ssiu: Support BUSIF other than BUSIF0") +Signed-off-by: Jiada Wang +Signed-off-by: Timo Wischer +Acked-by: Kuninori Morimoto +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman + +--- + sound/soc/sh/rcar/gen.c | 24 ++++++++++++++++++++++++ + sound/soc/sh/rcar/rsnd.h | 27 +++++++++++++++++++++++++++ + sound/soc/sh/rcar/ssiu.c | 24 +++++++++++------------- + 3 files changed, 62 insertions(+), 13 deletions(-) + +--- a/sound/soc/sh/rcar/gen.c ++++ b/sound/soc/sh/rcar/gen.c +@@ -255,6 +255,30 @@ static int rsnd_gen2_probe(struct rsnd_p + RSND_GEN_M_REG(SSI_MODE, 0xc, 0x80), + RSND_GEN_M_REG(SSI_CTRL, 0x10, 0x80), + RSND_GEN_M_REG(SSI_INT_ENABLE, 0x18, 0x80), ++ RSND_GEN_S_REG(SSI9_BUSIF0_MODE, 0x48c), ++ RSND_GEN_S_REG(SSI9_BUSIF0_ADINR, 0x484), ++ RSND_GEN_S_REG(SSI9_BUSIF0_DALIGN, 0x488), ++ RSND_GEN_S_REG(SSI9_BUSIF1_MODE, 0x4a0), ++ RSND_GEN_S_REG(SSI9_BUSIF1_ADINR, 0x4a4), ++ RSND_GEN_S_REG(SSI9_BUSIF1_DALIGN, 0x4a8), ++ RSND_GEN_S_REG(SSI9_BUSIF2_MODE, 0x4c0), ++ RSND_GEN_S_REG(SSI9_BUSIF2_ADINR, 0x4c4), ++ RSND_GEN_S_REG(SSI9_BUSIF2_DALIGN, 0x4c8), ++ RSND_GEN_S_REG(SSI9_BUSIF3_MODE, 0x4e0), ++ RSND_GEN_S_REG(SSI9_BUSIF3_ADINR, 0x4e4), ++ RSND_GEN_S_REG(SSI9_BUSIF3_DALIGN, 0x4e8), ++ RSND_GEN_S_REG(SSI9_BUSIF4_MODE, 0xd80), ++ RSND_GEN_S_REG(SSI9_BUSIF4_ADINR, 0xd84), ++ RSND_GEN_S_REG(SSI9_BUSIF4_DALIGN, 0xd88), ++ RSND_GEN_S_REG(SSI9_BUSIF5_MODE, 0xda0), ++ RSND_GEN_S_REG(SSI9_BUSIF5_ADINR, 0xda4), ++ RSND_GEN_S_REG(SSI9_BUSIF5_DALIGN, 0xda8), ++ RSND_GEN_S_REG(SSI9_BUSIF6_MODE, 0xdc0), ++ RSND_GEN_S_REG(SSI9_BUSIF6_ADINR, 0xdc4), ++ RSND_GEN_S_REG(SSI9_BUSIF6_DALIGN, 0xdc8), ++ RSND_GEN_S_REG(SSI9_BUSIF7_MODE, 0xde0), ++ RSND_GEN_S_REG(SSI9_BUSIF7_ADINR, 0xde4), ++ RSND_GEN_S_REG(SSI9_BUSIF7_DALIGN, 0xde8), + }; + + static const struct rsnd_regmap_field_conf conf_scu[] = { +--- a/sound/soc/sh/rcar/rsnd.h ++++ b/sound/soc/sh/rcar/rsnd.h +@@ -191,6 +191,30 @@ enum rsnd_reg { + SSI_SYS_STATUS7, + HDMI0_SEL, + HDMI1_SEL, ++ SSI9_BUSIF0_MODE, ++ SSI9_BUSIF1_MODE, ++ SSI9_BUSIF2_MODE, ++ SSI9_BUSIF3_MODE, ++ SSI9_BUSIF4_MODE, ++ SSI9_BUSIF5_MODE, ++ SSI9_BUSIF6_MODE, ++ SSI9_BUSIF7_MODE, ++ SSI9_BUSIF0_ADINR, ++ SSI9_BUSIF1_ADINR, ++ SSI9_BUSIF2_ADINR, ++ SSI9_BUSIF3_ADINR, ++ SSI9_BUSIF4_ADINR, ++ SSI9_BUSIF5_ADINR, ++ SSI9_BUSIF6_ADINR, ++ SSI9_BUSIF7_ADINR, ++ SSI9_BUSIF0_DALIGN, ++ SSI9_BUSIF1_DALIGN, ++ SSI9_BUSIF2_DALIGN, ++ SSI9_BUSIF3_DALIGN, ++ SSI9_BUSIF4_DALIGN, ++ SSI9_BUSIF5_DALIGN, ++ SSI9_BUSIF6_DALIGN, ++ SSI9_BUSIF7_DALIGN, + + /* SSI */ + SSICR, +@@ -209,6 +233,9 @@ enum rsnd_reg { + #define SSI_BUSIF_MODE(i) (SSI_BUSIF0_MODE + (i)) + #define SSI_BUSIF_ADINR(i) (SSI_BUSIF0_ADINR + (i)) + #define SSI_BUSIF_DALIGN(i) (SSI_BUSIF0_DALIGN + (i)) ++#define SSI9_BUSIF_MODE(i) (SSI9_BUSIF0_MODE + (i)) ++#define SSI9_BUSIF_ADINR(i) (SSI9_BUSIF0_ADINR + (i)) ++#define SSI9_BUSIF_DALIGN(i) (SSI9_BUSIF0_DALIGN + (i)) + #define SSI_SYS_STATUS(i) (SSI_SYS_STATUS0 + (i)) + + +--- a/sound/soc/sh/rcar/ssiu.c ++++ b/sound/soc/sh/rcar/ssiu.c +@@ -181,28 +181,26 @@ static int rsnd_ssiu_init_gen2(struct rs + if (rsnd_ssi_use_busif(io)) { + int id = rsnd_mod_id(mod); + int busif = rsnd_mod_id_sub(mod); ++ enum rsnd_reg adinr_reg, mode_reg, dalign_reg; + +- /* +- * FIXME +- * +- * We can't support SSI9-4/5/6/7, because its address is +- * out of calculation rule +- */ + if ((id == 9) && (busif >= 4)) { +- struct device *dev = rsnd_priv_to_dev(priv); +- +- dev_err(dev, "This driver doesn't support SSI%d-%d, so far", +- id, busif); ++ adinr_reg = SSI9_BUSIF_ADINR(busif); ++ mode_reg = SSI9_BUSIF_MODE(busif); ++ dalign_reg = SSI9_BUSIF_DALIGN(busif); ++ } else { ++ adinr_reg = SSI_BUSIF_ADINR(busif); ++ mode_reg = SSI_BUSIF_MODE(busif); ++ dalign_reg = SSI_BUSIF_DALIGN(busif); + } + +- rsnd_mod_write(mod, SSI_BUSIF_ADINR(busif), ++ rsnd_mod_write(mod, adinr_reg, + rsnd_get_adinr_bit(mod, io) | + (rsnd_io_is_play(io) ? + rsnd_runtime_channel_after_ctu(io) : + rsnd_runtime_channel_original(io))); +- rsnd_mod_write(mod, SSI_BUSIF_MODE(busif), ++ rsnd_mod_write(mod, mode_reg, + rsnd_get_busif_shift(io, mod) | 1); +- rsnd_mod_write(mod, SSI_BUSIF_DALIGN(busif), ++ rsnd_mod_write(mod, dalign_reg, + rsnd_get_dalign(mod, io)); + } + diff --git a/queue-5.0/asoc-stm32-fix-sai-driver-name-initialisation.patch b/queue-5.0/asoc-stm32-fix-sai-driver-name-initialisation.patch new file mode 100644 index 00000000000..1aa221fe493 --- /dev/null +++ b/queue-5.0/asoc-stm32-fix-sai-driver-name-initialisation.patch @@ -0,0 +1,40 @@ +From 17d3069ccf06970e2db3f7cbf4335f207524279e Mon Sep 17 00:00:00 2001 +From: Arnaud Pouliquen +Date: Fri, 5 Apr 2019 11:19:11 +0200 +Subject: ASoC: stm32: fix sai driver name initialisation + +From: Arnaud Pouliquen + +commit 17d3069ccf06970e2db3f7cbf4335f207524279e upstream. + +This patch fixes the sai driver structure overwriting which results in +a cpu dai name equal NULL. + +Fixes: 3e086ed ("ASoC: stm32: add SAI driver") + +Signed-off-by: Arnaud Pouliquen +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman + +--- + sound/soc/stm/stm32_sai_sub.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/sound/soc/stm/stm32_sai_sub.c ++++ b/sound/soc/stm/stm32_sai_sub.c +@@ -1394,7 +1394,6 @@ static int stm32_sai_sub_dais_init(struc + if (!sai->cpu_dai_drv) + return -ENOMEM; + +- sai->cpu_dai_drv->name = dev_name(&pdev->dev); + if (STM_SAI_IS_PLAYBACK(sai)) { + memcpy(sai->cpu_dai_drv, &stm32_sai_playback_dai, + sizeof(stm32_sai_playback_dai)); +@@ -1404,6 +1403,7 @@ static int stm32_sai_sub_dais_init(struc + sizeof(stm32_sai_capture_dai)); + sai->cpu_dai_drv->capture.stream_name = sai->cpu_dai_drv->name; + } ++ sai->cpu_dai_drv->name = dev_name(&pdev->dev); + + return 0; + } diff --git a/queue-5.0/asoc-sunxi-sun50i-codec-analog-rename-hpvcc-regulator-supply-to-cpvdd.patch b/queue-5.0/asoc-sunxi-sun50i-codec-analog-rename-hpvcc-regulator-supply-to-cpvdd.patch new file mode 100644 index 00000000000..2b7d7ac6d02 --- /dev/null +++ b/queue-5.0/asoc-sunxi-sun50i-codec-analog-rename-hpvcc-regulator-supply-to-cpvdd.patch @@ -0,0 +1,46 @@ +From 5fd812e6f5ae0376134234ceb70e8de541ccb10d Mon Sep 17 00:00:00 2001 +From: Chen-Yu Tsai +Date: Wed, 13 Feb 2019 15:04:56 +0800 +Subject: ASoC: sunxi: sun50i-codec-analog: Rename hpvcc regulator supply to cpvdd + +From: Chen-Yu Tsai + +commit 5fd812e6f5ae0376134234ceb70e8de541ccb10d upstream. + +The A64 datasheet lists the supply rail for the headphone amp's charge +pump as "CPVDD". cpvdd-supply is the name of the property for this power +rail specified in the device tree bindings. "HPVCC" was the name used in +the A33 datasheet for the same function. + +Rename the supply so it matches the datasheet, bindings, and the subject +from the original commit. + +Fixes: ca0412a05756 ("ASoC: sunxi: sun50i-codec-analog: Add support for cpvdd regulator supply") +Signed-off-by: Chen-Yu Tsai +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman + +--- + sound/soc/sunxi/sun50i-codec-analog.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +--- a/sound/soc/sunxi/sun50i-codec-analog.c ++++ b/sound/soc/sunxi/sun50i-codec-analog.c +@@ -274,7 +274,7 @@ static const struct snd_soc_dapm_widget + * stream widgets at the card level. + */ + +- SND_SOC_DAPM_REGULATOR_SUPPLY("hpvcc", 0, 0), ++ SND_SOC_DAPM_REGULATOR_SUPPLY("cpvdd", 0, 0), + SND_SOC_DAPM_MUX("Headphone Source Playback Route", + SND_SOC_NOPM, 0, 0, sun50i_codec_hp_src), + SND_SOC_DAPM_OUT_DRV("Headphone Amp", SUN50I_ADDA_HP_CTRL, +@@ -362,7 +362,7 @@ static const struct snd_soc_dapm_route s + { "Headphone Source Playback Route", "Mixer", "Left Mixer" }, + { "Headphone Source Playback Route", "Mixer", "Right Mixer" }, + { "Headphone Amp", NULL, "Headphone Source Playback Route" }, +- { "Headphone Amp", NULL, "hpvcc" }, ++ { "Headphone Amp", NULL, "cpvdd" }, + { "HP", NULL, "Headphone Amp" }, + + /* Microphone Routes */ diff --git a/queue-5.0/asoc-wm_adsp-correct-handling-of-compressed-streams-that-restart.patch b/queue-5.0/asoc-wm_adsp-correct-handling-of-compressed-streams-that-restart.patch new file mode 100644 index 00000000000..ed9f644069a --- /dev/null +++ b/queue-5.0/asoc-wm_adsp-correct-handling-of-compressed-streams-that-restart.patch @@ -0,0 +1,46 @@ +From 639e5eb3c7d67e407f2a71fccd95323751398f6f Mon Sep 17 00:00:00 2001 +From: Charles Keepax +Date: Tue, 19 Mar 2019 11:52:04 +0000 +Subject: ASoC: wm_adsp: Correct handling of compressed streams that restart + +From: Charles Keepax + +commit 639e5eb3c7d67e407f2a71fccd95323751398f6f upstream. + +Previously support was added to allow streams to be stopped and +started again without the DSP being power cycled and this was done +by clearing the buffer state in trigger start. Another supported +use-case is using the DSP for a trigger event then opening the +compressed stream later to receive the audio, unfortunately clearing +the buffer state in trigger start destroys the data received +from such a trigger. Correct this issue by moving the call to +wm_adsp_buffer_clear to be in trigger stop instead. + +Fixes: 61fc060c40e6 ("ASoC: wm_adsp: Support streams which can start/stop with DSP active") +Signed-off-by: Charles Keepax +Signed-off-by: Mark Brown +Signed-off-by: Greg Kroah-Hartman + +--- + sound/soc/codecs/wm_adsp.c | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +--- a/sound/soc/codecs/wm_adsp.c ++++ b/sound/soc/codecs/wm_adsp.c +@@ -3443,8 +3443,6 @@ int wm_adsp_compr_trigger(struct snd_com + } + } + +- wm_adsp_buffer_clear(compr->buf); +- + /* Trigger the IRQ at one fragment of data */ + ret = wm_adsp_buffer_write(compr->buf, + HOST_BUFFER_FIELD(high_water_mark), +@@ -3456,6 +3454,7 @@ int wm_adsp_compr_trigger(struct snd_com + } + break; + case SNDRV_PCM_TRIGGER_STOP: ++ wm_adsp_buffer_clear(compr->buf); + break; + default: + ret = -EINVAL; diff --git a/queue-5.0/kvm-lapic-check-for-in-kernel-lapic-before-deferencing-apic-pointer.patch b/queue-5.0/kvm-lapic-check-for-in-kernel-lapic-before-deferencing-apic-pointer.patch new file mode 100644 index 00000000000..d98d7bf79ed --- /dev/null +++ b/queue-5.0/kvm-lapic-check-for-in-kernel-lapic-before-deferencing-apic-pointer.patch @@ -0,0 +1,48 @@ +From b904cb8dff824b79233e82c078837627ebd52717 Mon Sep 17 00:00:00 2001 +From: Sean Christopherson +Date: Thu, 25 Apr 2019 19:01:09 -0700 +Subject: KVM: lapic: Check for in-kernel LAPIC before deferencing apic pointer + +From: Sean Christopherson + +commit b904cb8dff824b79233e82c078837627ebd52717 upstream. + +...to avoid dereferencing a null pointer when querying the per-vCPU +timer advance. + +Fixes: 39497d7660d98 ("KVM: lapic: Track lapic timer advance per vCPU") +Reported-by: syzbot+f7e65445a40d3e0e4ebf@syzkaller.appspotmail.com +Signed-off-by: Sean Christopherson +Reviewed-by: Konrad Rzeszutek Wilk +Signed-off-by: Paolo Bonzini +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/kvm/lapic.c | 3 --- + arch/x86/kvm/x86.c | 3 ++- + 2 files changed, 2 insertions(+), 4 deletions(-) + +--- a/arch/x86/kvm/lapic.c ++++ b/arch/x86/kvm/lapic.c +@@ -1504,9 +1504,6 @@ void wait_lapic_expire(struct kvm_vcpu * + u32 timer_advance_ns = apic->lapic_timer.timer_advance_ns; + u64 guest_tsc, tsc_deadline, ns; + +- if (!lapic_in_kernel(vcpu)) +- return; +- + if (apic->lapic_timer.expired_tscdeadline == 0) + return; + +--- a/arch/x86/kvm/x86.c ++++ b/arch/x86/kvm/x86.c +@@ -7886,7 +7886,8 @@ static int vcpu_enter_guest(struct kvm_v + } + + trace_kvm_entry(vcpu->vcpu_id); +- if (vcpu->arch.apic->lapic_timer.timer_advance_ns) ++ if (lapic_in_kernel(vcpu) && ++ vcpu->arch.apic->lapic_timer.timer_advance_ns) + wait_lapic_expire(vcpu); + guest_enter_irqoff(); + diff --git a/queue-5.0/kvm-nvmx-remove-a-rogue-rax-clobber-from-nested_vmx_check_vmentry_hw.patch b/queue-5.0/kvm-nvmx-remove-a-rogue-rax-clobber-from-nested_vmx_check_vmentry_hw.patch new file mode 100644 index 00000000000..0b7410b4455 --- /dev/null +++ b/queue-5.0/kvm-nvmx-remove-a-rogue-rax-clobber-from-nested_vmx_check_vmentry_hw.patch @@ -0,0 +1,33 @@ +From 9ce0a07a6f49822238fd4357c02e0dba060a43cc Mon Sep 17 00:00:00 2001 +From: Sean Christopherson +Date: Fri, 25 Jan 2019 07:40:55 -0800 +Subject: KVM: nVMX: Remove a rogue "rax" clobber from nested_vmx_check_vmentry_hw() + +From: Sean Christopherson + +commit 9ce0a07a6f49822238fd4357c02e0dba060a43cc upstream. + +RAX is not touched by nested_vmx_check_vmentry_hw(), directly or +indirectly (e.g. vmx_vmenter()). Remove it from the clobber list. + +Fixes: 52017608da33 ("KVM: nVMX: add option to perform early consistency checks via H/W") +Reviewed-by: Jim Mattson +Signed-off-by: Sean Christopherson +Signed-off-by: Paolo Bonzini +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/kvm/vmx/nested.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/x86/kvm/vmx/nested.c ++++ b/arch/x86/kvm/vmx/nested.c +@@ -2793,7 +2793,7 @@ static int nested_vmx_check_vmentry_hw(s + [fail]"i"(offsetof(struct vcpu_vmx, fail)), + [host_rsp]"i"(offsetof(struct vcpu_vmx, host_rsp)), + [wordsize]"i"(sizeof(ulong)) +- : "rax", "cc", "memory" ++ : "cc", "memory" + ); + + preempt_enable(); diff --git a/queue-5.0/kvm-vmx-fix-typos-in-vmentry-vmexit-control-setting.patch b/queue-5.0/kvm-vmx-fix-typos-in-vmentry-vmexit-control-setting.patch new file mode 100644 index 00000000000..eb2dbbcc865 --- /dev/null +++ b/queue-5.0/kvm-vmx-fix-typos-in-vmentry-vmexit-control-setting.patch @@ -0,0 +1,50 @@ +From d92935979adba274b1099e67b7f713f6d8413121 Mon Sep 17 00:00:00 2001 +From: Yu Zhang +Date: Thu, 31 Jan 2019 11:26:39 +0800 +Subject: kvm: vmx: Fix typos in vmentry/vmexit control setting + +From: Yu Zhang + +commit d92935979adba274b1099e67b7f713f6d8413121 upstream. + +Previously, 'commit f99e3daf94ff ("KVM: x86: Add Intel PT +virtualization work mode")' work mode' offered framework +to support Intel PT virtualization. However, the patch has +some typos in vmx_vmentry_ctrl() and vmx_vmexit_ctrl(), e.g. +used wrong flags and wrong variable, which will cause the +VM entry failure later. + +Fixes: 'commit f99e3daf94ff ("KVM: x86: Add Intel PT virtualization work mode")' +Signed-off-by: Yu Zhang +Signed-off-by: Paolo Bonzini +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/kvm/vmx/vmx.h | 8 +++++--- + 1 file changed, 5 insertions(+), 3 deletions(-) + +--- a/arch/x86/kvm/vmx/vmx.h ++++ b/arch/x86/kvm/vmx/vmx.h +@@ -444,7 +444,8 @@ static inline u32 vmx_vmentry_ctrl(void) + { + u32 vmentry_ctrl = vmcs_config.vmentry_ctrl; + if (pt_mode == PT_MODE_SYSTEM) +- vmentry_ctrl &= ~(VM_EXIT_PT_CONCEAL_PIP | VM_EXIT_CLEAR_IA32_RTIT_CTL); ++ vmentry_ctrl &= ~(VM_ENTRY_PT_CONCEAL_PIP | ++ VM_ENTRY_LOAD_IA32_RTIT_CTL); + /* Loading of EFER and PERF_GLOBAL_CTRL are toggled dynamically */ + return vmentry_ctrl & + ~(VM_ENTRY_LOAD_IA32_PERF_GLOBAL_CTRL | VM_ENTRY_LOAD_IA32_EFER); +@@ -454,9 +455,10 @@ static inline u32 vmx_vmexit_ctrl(void) + { + u32 vmexit_ctrl = vmcs_config.vmexit_ctrl; + if (pt_mode == PT_MODE_SYSTEM) +- vmexit_ctrl &= ~(VM_ENTRY_PT_CONCEAL_PIP | VM_ENTRY_LOAD_IA32_RTIT_CTL); ++ vmexit_ctrl &= ~(VM_EXIT_PT_CONCEAL_PIP | ++ VM_EXIT_CLEAR_IA32_RTIT_CTL); + /* Loading of EFER and PERF_GLOBAL_CTRL are toggled dynamically */ +- return vmcs_config.vmexit_ctrl & ++ return vmexit_ctrl & + ~(VM_EXIT_LOAD_IA32_PERF_GLOBAL_CTRL | VM_EXIT_LOAD_IA32_EFER); + } + diff --git a/queue-5.0/kvm-vmx-save-rsi-to-an-unused-output-in-the-vcpu-run-asm-blob.patch b/queue-5.0/kvm-vmx-save-rsi-to-an-unused-output-in-the-vcpu-run-asm-blob.patch new file mode 100644 index 00000000000..1a78b725e9a --- /dev/null +++ b/queue-5.0/kvm-vmx-save-rsi-to-an-unused-output-in-the-vcpu-run-asm-blob.patch @@ -0,0 +1,34 @@ +From f3689e3f17f064fd4cd5f0cb01ae2395c94f39d9 Mon Sep 17 00:00:00 2001 +From: Sean Christopherson +Date: Fri, 25 Jan 2019 07:40:52 -0800 +Subject: KVM: VMX: Save RSI to an unused output in the vCPU-run asm blob + +From: Sean Christopherson + +commit f3689e3f17f064fd4cd5f0cb01ae2395c94f39d9 upstream. + +RSI is clobbered by the vCPU-run asm blob, but it's not marked as such, +probably because GCC doesn't let you mark inputs as clobbered. "Save" +RSI to a dummy output so that GCC recognizes it as being clobbered. + +Fixes: 773e8a0425c9 ("x86/kvm: use Enlightened VMCS when running on Hyper-V") +Reviewed-by: Jim Mattson +Signed-off-by: Sean Christopherson +Signed-off-by: Paolo Bonzini +Signed-off-by: Greg Kroah-Hartman + +--- + arch/x86/kvm/vmx/vmx.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/arch/x86/kvm/vmx/vmx.c ++++ b/arch/x86/kvm/vmx/vmx.c +@@ -6465,7 +6465,7 @@ static void __vmx_vcpu_run(struct kvm_vc + "xor %%edi, %%edi \n\t" + "xor %%ebp, %%ebp \n\t" + "pop %%" _ASM_BP "; pop %%" _ASM_DX " \n\t" +- : ASM_CALL_CONSTRAINT ++ : ASM_CALL_CONSTRAINT, "=S"((int){0}) + : "c"(vmx), "d"((unsigned long)HOST_RSP), "S"(evmcs_rsp), + [launched]"i"(offsetof(struct vcpu_vmx, __launched)), + [fail]"i"(offsetof(struct vcpu_vmx, fail)), diff --git a/queue-5.0/series b/queue-5.0/series index d117baf4493..27c46d9c5ab 100644 --- a/queue-5.0/series +++ b/queue-5.0/series @@ -91,3 +91,13 @@ staging-iio-adt7316-fix-handling-of-dac-high-resolution-option.patch staging-iio-adt7316-fix-the-dac-write-calculation.patch scsi-hisi_sas-fix-to-only-call-scsi_get_prot_op-for-non-null-scsi_cmnd.patch scsi-rdma-srpt-fix-a-credit-leak-for-aborted-commands.patch +asoc-intel-bytcr_rt5651-revert-fix-dmic-map-headsetmic-mapping.patch +asoc-rsnd-gen-fix-ssi9-4-5-6-7-busif-related-register-address.patch +asoc-sunxi-sun50i-codec-analog-rename-hpvcc-regulator-supply-to-cpvdd.patch +asoc-wm_adsp-correct-handling-of-compressed-streams-that-restart.patch +asoc-dpcm-skip-missing-substream-while-applying-symmetry.patch +asoc-stm32-fix-sai-driver-name-initialisation.patch +kvm-vmx-save-rsi-to-an-unused-output-in-the-vcpu-run-asm-blob.patch +kvm-nvmx-remove-a-rogue-rax-clobber-from-nested_vmx_check_vmentry_hw.patch +kvm-vmx-fix-typos-in-vmentry-vmexit-control-setting.patch +kvm-lapic-check-for-in-kernel-lapic-before-deferencing-apic-pointer.patch