+++ /dev/null
-From 982caaa1150479f022003390cd72a1941663d211 Mon Sep 17 00:00:00 2001
-From: Sean Christopherson <seanjc@google.com>
-Date: Mon, 24 Feb 2025 15:55:37 -0800
-Subject: KVM: nVMX: Process events on nested VM-Exit if injectable IRQ or NMI is pending
-
-From: Sean Christopherson <seanjc@google.com>
-
-commit 982caaa1150479f022003390cd72a1941663d211 upstream.
-
-Process pending events on nested VM-Exit if the vCPU has an injectable IRQ
-or NMI, as the event may have become pending while L2 was active, i.e. may
-not be tracked in the context of vmcs01. E.g. if L1 has passed its APIC
-through to L2 and an IRQ arrives while L2 is active, then KVM needs to
-request an IRQ window prior to running L1, otherwise delivery of the IRQ
-will be delayed until KVM happens to process events for some other reason.
-
-The missed failure is detected by vmx_apic_passthrough_tpr_threshold_test
-in KVM-Unit-Tests, but has effectively been masked due to a flaw in KVM's
-PIC emulation that causes KVM to make spurious KVM_REQ_EVENT requests (and
-apparently no one ever ran the test with split IRQ chips).
-
-Cc: stable@vger.kernel.org
-Signed-off-by: Sean Christopherson <seanjc@google.com>
-Message-ID: <20250224235542.2562848-3-seanjc@google.com>
-Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- arch/x86/kvm/vmx/nested.c | 11 +++++++++++
- 1 file changed, 11 insertions(+)
-
---- a/arch/x86/kvm/vmx/nested.c
-+++ b/arch/x86/kvm/vmx/nested.c
-@@ -4628,6 +4628,17 @@ void nested_vmx_vmexit(struct kvm_vcpu *
-
- load_vmcs12_host_state(vcpu, vmcs12);
-
-+ /*
-+ * Process events if an injectable IRQ or NMI is pending, even
-+ * if the event is blocked (RFLAGS.IF is cleared on VM-Exit).
-+ * If an event became pending while L2 was active, KVM needs to
-+ * either inject the event or request an IRQ/NMI window. SMIs
-+ * don't need to be processed as SMM is mutually exclusive with
-+ * non-root mode. INIT/SIPI don't need to be checked as INIT
-+ * is blocked post-VMXON, and SIPIs are ignored.
-+ */
-+ if (kvm_cpu_has_injectable_intr(vcpu) || vcpu->arch.nmi_pending)
-+ kvm_make_request(KVM_REQ_EVENT, vcpu);
- return;
- }
-
net-ipv6-fix-dst-ref-loop-on-input-in-rpl-lwt.patch
x86-cpu-fix-warm-boot-hang-regression-on-amd-sc1100-.patch
ftrace-avoid-potential-division-by-zero-in-function_stat_show.patch
-kvm-nvmx-process-events-on-nested-vm-exit-if-injectable-irq-or-nmi-is-pending.patch
perf-core-fix-low-freq-setting-via-ioc_period.patch
i2c-npcm-disable-interrupt-enable-bit-before-devm_request_irq.patch
usbnet-gl620a-fix-endpoint-checking-in-genelink_bind.patch
+++ /dev/null
-From 982caaa1150479f022003390cd72a1941663d211 Mon Sep 17 00:00:00 2001
-From: Sean Christopherson <seanjc@google.com>
-Date: Mon, 24 Feb 2025 15:55:37 -0800
-Subject: KVM: nVMX: Process events on nested VM-Exit if injectable IRQ or NMI is pending
-
-From: Sean Christopherson <seanjc@google.com>
-
-commit 982caaa1150479f022003390cd72a1941663d211 upstream.
-
-Process pending events on nested VM-Exit if the vCPU has an injectable IRQ
-or NMI, as the event may have become pending while L2 was active, i.e. may
-not be tracked in the context of vmcs01. E.g. if L1 has passed its APIC
-through to L2 and an IRQ arrives while L2 is active, then KVM needs to
-request an IRQ window prior to running L1, otherwise delivery of the IRQ
-will be delayed until KVM happens to process events for some other reason.
-
-The missed failure is detected by vmx_apic_passthrough_tpr_threshold_test
-in KVM-Unit-Tests, but has effectively been masked due to a flaw in KVM's
-PIC emulation that causes KVM to make spurious KVM_REQ_EVENT requests (and
-apparently no one ever ran the test with split IRQ chips).
-
-Cc: stable@vger.kernel.org
-Signed-off-by: Sean Christopherson <seanjc@google.com>
-Message-ID: <20250224235542.2562848-3-seanjc@google.com>
-Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- arch/x86/kvm/vmx/nested.c | 11 +++++++++++
- 1 file changed, 11 insertions(+)
-
---- a/arch/x86/kvm/vmx/nested.c
-+++ b/arch/x86/kvm/vmx/nested.c
-@@ -4713,6 +4713,17 @@ void nested_vmx_vmexit(struct kvm_vcpu *
-
- load_vmcs12_host_state(vcpu, vmcs12);
-
-+ /*
-+ * Process events if an injectable IRQ or NMI is pending, even
-+ * if the event is blocked (RFLAGS.IF is cleared on VM-Exit).
-+ * If an event became pending while L2 was active, KVM needs to
-+ * either inject the event or request an IRQ/NMI window. SMIs
-+ * don't need to be processed as SMM is mutually exclusive with
-+ * non-root mode. INIT/SIPI don't need to be checked as INIT
-+ * is blocked post-VMXON, and SIPIs are ignored.
-+ */
-+ if (kvm_cpu_has_injectable_intr(vcpu) || vcpu->arch.nmi_pending)
-+ kvm_make_request(KVM_REQ_EVENT, vcpu);
- return;
- }
-
x86-cpu-fix-warm-boot-hang-regression-on-amd-sc1100-.patch
ftrace-avoid-potential-division-by-zero-in-function_stat_show.patch
alsa-usb-audio-re-add-sample-rate-quirk-for-pioneer-djm-900nxs2.patch
-kvm-nvmx-process-events-on-nested-vm-exit-if-injectable-irq-or-nmi-is-pending.patch
perf-core-fix-low-freq-setting-via-ioc_period.patch
drm-amd-display-fix-hpd-after-gpu-reset.patch
i2c-npcm-disable-interrupt-enable-bit-before-devm_request_irq.patch
+++ /dev/null
-From 982caaa1150479f022003390cd72a1941663d211 Mon Sep 17 00:00:00 2001
-From: Sean Christopherson <seanjc@google.com>
-Date: Mon, 24 Feb 2025 15:55:37 -0800
-Subject: KVM: nVMX: Process events on nested VM-Exit if injectable IRQ or NMI is pending
-
-From: Sean Christopherson <seanjc@google.com>
-
-commit 982caaa1150479f022003390cd72a1941663d211 upstream.
-
-Process pending events on nested VM-Exit if the vCPU has an injectable IRQ
-or NMI, as the event may have become pending while L2 was active, i.e. may
-not be tracked in the context of vmcs01. E.g. if L1 has passed its APIC
-through to L2 and an IRQ arrives while L2 is active, then KVM needs to
-request an IRQ window prior to running L1, otherwise delivery of the IRQ
-will be delayed until KVM happens to process events for some other reason.
-
-The missed failure is detected by vmx_apic_passthrough_tpr_threshold_test
-in KVM-Unit-Tests, but has effectively been masked due to a flaw in KVM's
-PIC emulation that causes KVM to make spurious KVM_REQ_EVENT requests (and
-apparently no one ever ran the test with split IRQ chips).
-
-Cc: stable@vger.kernel.org
-Signed-off-by: Sean Christopherson <seanjc@google.com>
-Message-ID: <20250224235542.2562848-3-seanjc@google.com>
-Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- arch/x86/kvm/vmx/nested.c | 11 +++++++++++
- 1 file changed, 11 insertions(+)
-
---- a/arch/x86/kvm/vmx/nested.c
-+++ b/arch/x86/kvm/vmx/nested.c
-@@ -4865,6 +4865,17 @@ void nested_vmx_vmexit(struct kvm_vcpu *
-
- load_vmcs12_host_state(vcpu, vmcs12);
-
-+ /*
-+ * Process events if an injectable IRQ or NMI is pending, even
-+ * if the event is blocked (RFLAGS.IF is cleared on VM-Exit).
-+ * If an event became pending while L2 was active, KVM needs to
-+ * either inject the event or request an IRQ/NMI window. SMIs
-+ * don't need to be processed as SMM is mutually exclusive with
-+ * non-root mode. INIT/SIPI don't need to be checked as INIT
-+ * is blocked post-VMXON, and SIPIs are ignored.
-+ */
-+ if (kvm_cpu_has_injectable_intr(vcpu) || vcpu->arch.nmi_pending)
-+ kvm_make_request(KVM_REQ_EVENT, vcpu);
- return;
- }
-
tracing-fix-bad-hist-from-corrupting-named_triggers-list.patch
ftrace-avoid-potential-division-by-zero-in-function_stat_show.patch
alsa-usb-audio-re-add-sample-rate-quirk-for-pioneer-djm-900nxs2.patch
-kvm-nvmx-process-events-on-nested-vm-exit-if-injectable-irq-or-nmi-is-pending.patch
perf-x86-fix-low-freqency-setting-issue.patch
perf-core-fix-low-freq-setting-via-ioc_period.patch
drm-amd-display-disable-psr-su-on-edp-panels.patch
+++ /dev/null
-From 2b90e7ace79774a3540ce569e000388f8d22c9e0 Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones@redhat.com>
-Date: Wed, 26 Feb 2025 15:18:39 -0500
-Subject: efi: Don't map the entire mokvar table to determine its size
-
-From: Peter Jones <pjones@redhat.com>
-
-commit 2b90e7ace79774a3540ce569e000388f8d22c9e0 upstream.
-
-Currently, when validating the mokvar table, we (re)map the entire table
-on each iteration of the loop, adding space as we discover new entries.
-If the table grows over a certain size, this fails due to limitations of
-early_memmap(), and we get a failure and traceback:
-
- ------------[ cut here ]------------
- WARNING: CPU: 0 PID: 0 at mm/early_ioremap.c:139 __early_ioremap+0xef/0x220
- ...
- Call Trace:
- <TASK>
- ? __early_ioremap+0xef/0x220
- ? __warn.cold+0x93/0xfa
- ? __early_ioremap+0xef/0x220
- ? report_bug+0xff/0x140
- ? early_fixup_exception+0x5d/0xb0
- ? early_idt_handler_common+0x2f/0x3a
- ? __early_ioremap+0xef/0x220
- ? efi_mokvar_table_init+0xce/0x1d0
- ? setup_arch+0x864/0xc10
- ? start_kernel+0x6b/0xa10
- ? x86_64_start_reservations+0x24/0x30
- ? x86_64_start_kernel+0xed/0xf0
- ? common_startup_64+0x13e/0x141
- </TASK>
- ---[ end trace 0000000000000000 ]---
- mokvar: Failed to map EFI MOKvar config table pa=0x7c4c3000, size=265187.
-
-Mapping the entire structure isn't actually necessary, as we don't ever
-need more than one entry header mapped at once.
-
-Changes efi_mokvar_table_init() to only map each entry header, not the
-entire table, when determining the table size. Since we're not mapping
-any data past the variable name, it also changes the code to enforce
-that each variable name is NUL terminated, rather than attempting to
-verify it in place.
-
-Cc: <stable@vger.kernel.org>
-Signed-off-by: Peter Jones <pjones@redhat.com>
-Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/firmware/efi/mokvar-table.c | 41 +++++++++++-------------------------
- 1 file changed, 13 insertions(+), 28 deletions(-)
-
---- a/drivers/firmware/efi/mokvar-table.c
-+++ b/drivers/firmware/efi/mokvar-table.c
-@@ -103,7 +103,6 @@ void __init efi_mokvar_table_init(void)
- void *va = NULL;
- unsigned long cur_offset = 0;
- unsigned long offset_limit;
-- unsigned long map_size = 0;
- unsigned long map_size_needed = 0;
- unsigned long size;
- struct efi_mokvar_table_entry *mokvar_entry;
-@@ -134,48 +133,34 @@ void __init efi_mokvar_table_init(void)
- */
- err = -EINVAL;
- while (cur_offset + sizeof(*mokvar_entry) <= offset_limit) {
-- mokvar_entry = va + cur_offset;
-- map_size_needed = cur_offset + sizeof(*mokvar_entry);
-- if (map_size_needed > map_size) {
-- if (va)
-- early_memunmap(va, map_size);
-- /*
-- * Map a little more than the fixed size entry
-- * header, anticipating some data. It's safe to
-- * do so as long as we stay within current memory
-- * descriptor.
-- */
-- map_size = min(map_size_needed + 2*EFI_PAGE_SIZE,
-- offset_limit);
-- va = early_memremap(efi.mokvar_table, map_size);
-- if (!va) {
-- pr_err("Failed to map EFI MOKvar config table pa=0x%lx, size=%lu.\n",
-- efi.mokvar_table, map_size);
-- return;
-- }
-- mokvar_entry = va + cur_offset;
-+ if (va)
-+ early_memunmap(va, sizeof(*mokvar_entry));
-+ va = early_memremap(efi.mokvar_table + cur_offset, sizeof(*mokvar_entry));
-+ if (!va) {
-+ pr_err("Failed to map EFI MOKvar config table pa=0x%lx, size=%zu.\n",
-+ efi.mokvar_table + cur_offset, sizeof(*mokvar_entry));
-+ return;
- }
-+ mokvar_entry = va;
-
- /* Check for last sentinel entry */
- if (mokvar_entry->name[0] == '\0') {
- if (mokvar_entry->data_size != 0)
- break;
- err = 0;
-+ map_size_needed = cur_offset + sizeof(*mokvar_entry);
- break;
- }
-
-- /* Sanity check that the name is null terminated */
-- size = strnlen(mokvar_entry->name,
-- sizeof(mokvar_entry->name));
-- if (size >= sizeof(mokvar_entry->name))
-- break;
-+ /* Enforce that the name is NUL terminated */
-+ mokvar_entry->name[sizeof(mokvar_entry->name) - 1] = '\0';
-
- /* Advance to the next entry */
-- cur_offset = map_size_needed + mokvar_entry->data_size;
-+ cur_offset += sizeof(*mokvar_entry) + mokvar_entry->data_size;
- }
-
- if (va)
-- early_memunmap(va, map_size);
-+ early_memunmap(va, sizeof(*mokvar_entry));
- if (err) {
- pr_err("EFI MOKvar config table is not valid\n");
- return;
+++ /dev/null
-From 982caaa1150479f022003390cd72a1941663d211 Mon Sep 17 00:00:00 2001
-From: Sean Christopherson <seanjc@google.com>
-Date: Mon, 24 Feb 2025 15:55:37 -0800
-Subject: KVM: nVMX: Process events on nested VM-Exit if injectable IRQ or NMI is pending
-
-From: Sean Christopherson <seanjc@google.com>
-
-commit 982caaa1150479f022003390cd72a1941663d211 upstream.
-
-Process pending events on nested VM-Exit if the vCPU has an injectable IRQ
-or NMI, as the event may have become pending while L2 was active, i.e. may
-not be tracked in the context of vmcs01. E.g. if L1 has passed its APIC
-through to L2 and an IRQ arrives while L2 is active, then KVM needs to
-request an IRQ window prior to running L1, otherwise delivery of the IRQ
-will be delayed until KVM happens to process events for some other reason.
-
-The missed failure is detected by vmx_apic_passthrough_tpr_threshold_test
-in KVM-Unit-Tests, but has effectively been masked due to a flaw in KVM's
-PIC emulation that causes KVM to make spurious KVM_REQ_EVENT requests (and
-apparently no one ever ran the test with split IRQ chips).
-
-Cc: stable@vger.kernel.org
-Signed-off-by: Sean Christopherson <seanjc@google.com>
-Message-ID: <20250224235542.2562848-3-seanjc@google.com>
-Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- arch/x86/kvm/vmx/nested.c | 11 +++++++++++
- 1 file changed, 11 insertions(+)
-
---- a/arch/x86/kvm/vmx/nested.c
-+++ b/arch/x86/kvm/vmx/nested.c
-@@ -5066,6 +5066,17 @@ void nested_vmx_vmexit(struct kvm_vcpu *
-
- load_vmcs12_host_state(vcpu, vmcs12);
-
-+ /*
-+ * Process events if an injectable IRQ or NMI is pending, even
-+ * if the event is blocked (RFLAGS.IF is cleared on VM-Exit).
-+ * If an event became pending while L2 was active, KVM needs to
-+ * either inject the event or request an IRQ/NMI window. SMIs
-+ * don't need to be processed as SMM is mutually exclusive with
-+ * non-root mode. INIT/SIPI don't need to be checked as INIT
-+ * is blocked post-VMXON, and SIPIs are ignored.
-+ */
-+ if (kvm_cpu_has_injectable_intr(vcpu) || vcpu->arch.nmi_pending)
-+ kvm_make_request(KVM_REQ_EVENT, vcpu);
- return;
- }
-
alsa-usb-audio-re-add-sample-rate-quirk-for-pioneer-djm-900nxs2.patch
alsa-hda-realtek-fix-microphone-regression-on-asus-n705ud.patch
kvm-arm64-ensure-a-vmid-is-allocated-before-programming-vttbr_el2.patch
-kvm-nvmx-process-events-on-nested-vm-exit-if-injectable-irq-or-nmi-is-pending.patch
perf-core-add-rcu-read-lock-protection-to-perf_iterate_ctx.patch
perf-x86-fix-low-freqency-setting-issue.patch
perf-core-fix-low-freq-setting-via-ioc_period.patch
mptcp-always-handle-address-removal-under-msk-socket-lock.patch
mptcp-reset-when-mptcp-opts-are-dropped-after-join.patch
selftests-landlock-test-that-mptcp-actions-are-not-restricted.patch
-efi-don-t-map-the-entire-mokvar-table-to-determine-its-size.patch
vmlinux.lds-ensure-that-const-vars-with-relocations-are-mapped-r-o.patch
rcuref-plug-slowpath-race-in-rcuref_put.patch
sched-core-prevent-rescheduling-when-interrupts-are-disabled.patch
+++ /dev/null
-From 2b90e7ace79774a3540ce569e000388f8d22c9e0 Mon Sep 17 00:00:00 2001
-From: Peter Jones <pjones@redhat.com>
-Date: Wed, 26 Feb 2025 15:18:39 -0500
-Subject: efi: Don't map the entire mokvar table to determine its size
-
-From: Peter Jones <pjones@redhat.com>
-
-commit 2b90e7ace79774a3540ce569e000388f8d22c9e0 upstream.
-
-Currently, when validating the mokvar table, we (re)map the entire table
-on each iteration of the loop, adding space as we discover new entries.
-If the table grows over a certain size, this fails due to limitations of
-early_memmap(), and we get a failure and traceback:
-
- ------------[ cut here ]------------
- WARNING: CPU: 0 PID: 0 at mm/early_ioremap.c:139 __early_ioremap+0xef/0x220
- ...
- Call Trace:
- <TASK>
- ? __early_ioremap+0xef/0x220
- ? __warn.cold+0x93/0xfa
- ? __early_ioremap+0xef/0x220
- ? report_bug+0xff/0x140
- ? early_fixup_exception+0x5d/0xb0
- ? early_idt_handler_common+0x2f/0x3a
- ? __early_ioremap+0xef/0x220
- ? efi_mokvar_table_init+0xce/0x1d0
- ? setup_arch+0x864/0xc10
- ? start_kernel+0x6b/0xa10
- ? x86_64_start_reservations+0x24/0x30
- ? x86_64_start_kernel+0xed/0xf0
- ? common_startup_64+0x13e/0x141
- </TASK>
- ---[ end trace 0000000000000000 ]---
- mokvar: Failed to map EFI MOKvar config table pa=0x7c4c3000, size=265187.
-
-Mapping the entire structure isn't actually necessary, as we don't ever
-need more than one entry header mapped at once.
-
-Changes efi_mokvar_table_init() to only map each entry header, not the
-entire table, when determining the table size. Since we're not mapping
-any data past the variable name, it also changes the code to enforce
-that each variable name is NUL terminated, rather than attempting to
-verify it in place.
-
-Cc: <stable@vger.kernel.org>
-Signed-off-by: Peter Jones <pjones@redhat.com>
-Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- drivers/firmware/efi/mokvar-table.c | 41 +++++++++++-------------------------
- 1 file changed, 13 insertions(+), 28 deletions(-)
-
---- a/drivers/firmware/efi/mokvar-table.c
-+++ b/drivers/firmware/efi/mokvar-table.c
-@@ -103,7 +103,6 @@ void __init efi_mokvar_table_init(void)
- void *va = NULL;
- unsigned long cur_offset = 0;
- unsigned long offset_limit;
-- unsigned long map_size = 0;
- unsigned long map_size_needed = 0;
- unsigned long size;
- struct efi_mokvar_table_entry *mokvar_entry;
-@@ -134,48 +133,34 @@ void __init efi_mokvar_table_init(void)
- */
- err = -EINVAL;
- while (cur_offset + sizeof(*mokvar_entry) <= offset_limit) {
-- mokvar_entry = va + cur_offset;
-- map_size_needed = cur_offset + sizeof(*mokvar_entry);
-- if (map_size_needed > map_size) {
-- if (va)
-- early_memunmap(va, map_size);
-- /*
-- * Map a little more than the fixed size entry
-- * header, anticipating some data. It's safe to
-- * do so as long as we stay within current memory
-- * descriptor.
-- */
-- map_size = min(map_size_needed + 2*EFI_PAGE_SIZE,
-- offset_limit);
-- va = early_memremap(efi.mokvar_table, map_size);
-- if (!va) {
-- pr_err("Failed to map EFI MOKvar config table pa=0x%lx, size=%lu.\n",
-- efi.mokvar_table, map_size);
-- return;
-- }
-- mokvar_entry = va + cur_offset;
-+ if (va)
-+ early_memunmap(va, sizeof(*mokvar_entry));
-+ va = early_memremap(efi.mokvar_table + cur_offset, sizeof(*mokvar_entry));
-+ if (!va) {
-+ pr_err("Failed to map EFI MOKvar config table pa=0x%lx, size=%zu.\n",
-+ efi.mokvar_table + cur_offset, sizeof(*mokvar_entry));
-+ return;
- }
-+ mokvar_entry = va;
-
- /* Check for last sentinel entry */
- if (mokvar_entry->name[0] == '\0') {
- if (mokvar_entry->data_size != 0)
- break;
- err = 0;
-+ map_size_needed = cur_offset + sizeof(*mokvar_entry);
- break;
- }
-
-- /* Sanity check that the name is null terminated */
-- size = strnlen(mokvar_entry->name,
-- sizeof(mokvar_entry->name));
-- if (size >= sizeof(mokvar_entry->name))
-- break;
-+ /* Enforce that the name is NUL terminated */
-+ mokvar_entry->name[sizeof(mokvar_entry->name) - 1] = '\0';
-
- /* Advance to the next entry */
-- cur_offset = map_size_needed + mokvar_entry->data_size;
-+ cur_offset += sizeof(*mokvar_entry) + mokvar_entry->data_size;
- }
-
- if (va)
-- early_memunmap(va, map_size);
-+ early_memunmap(va, sizeof(*mokvar_entry));
- if (err) {
- pr_err("EFI MOKvar config table is not valid\n");
- return;
+++ /dev/null
-From 982caaa1150479f022003390cd72a1941663d211 Mon Sep 17 00:00:00 2001
-From: Sean Christopherson <seanjc@google.com>
-Date: Mon, 24 Feb 2025 15:55:37 -0800
-Subject: KVM: nVMX: Process events on nested VM-Exit if injectable IRQ or NMI is pending
-
-From: Sean Christopherson <seanjc@google.com>
-
-commit 982caaa1150479f022003390cd72a1941663d211 upstream.
-
-Process pending events on nested VM-Exit if the vCPU has an injectable IRQ
-or NMI, as the event may have become pending while L2 was active, i.e. may
-not be tracked in the context of vmcs01. E.g. if L1 has passed its APIC
-through to L2 and an IRQ arrives while L2 is active, then KVM needs to
-request an IRQ window prior to running L1, otherwise delivery of the IRQ
-will be delayed until KVM happens to process events for some other reason.
-
-The missed failure is detected by vmx_apic_passthrough_tpr_threshold_test
-in KVM-Unit-Tests, but has effectively been masked due to a flaw in KVM's
-PIC emulation that causes KVM to make spurious KVM_REQ_EVENT requests (and
-apparently no one ever ran the test with split IRQ chips).
-
-Cc: stable@vger.kernel.org
-Signed-off-by: Sean Christopherson <seanjc@google.com>
-Message-ID: <20250224235542.2562848-3-seanjc@google.com>
-Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- arch/x86/kvm/vmx/nested.c | 11 +++++++++++
- 1 file changed, 11 insertions(+)
-
---- a/arch/x86/kvm/vmx/nested.c
-+++ b/arch/x86/kvm/vmx/nested.c
-@@ -5073,6 +5073,17 @@ void nested_vmx_vmexit(struct kvm_vcpu *
-
- load_vmcs12_host_state(vcpu, vmcs12);
-
-+ /*
-+ * Process events if an injectable IRQ or NMI is pending, even
-+ * if the event is blocked (RFLAGS.IF is cleared on VM-Exit).
-+ * If an event became pending while L2 was active, KVM needs to
-+ * either inject the event or request an IRQ/NMI window. SMIs
-+ * don't need to be processed as SMM is mutually exclusive with
-+ * non-root mode. INIT/SIPI don't need to be checked as INIT
-+ * is blocked post-VMXON, and SIPIs are ignored.
-+ */
-+ if (kvm_cpu_has_injectable_intr(vcpu) || vcpu->arch.nmi_pending)
-+ kvm_make_request(KVM_REQ_EVENT, vcpu);
- return;
- }
-
alsa-usb-audio-re-add-sample-rate-quirk-for-pioneer-djm-900nxs2.patch
alsa-hda-realtek-fix-microphone-regression-on-asus-n705ud.patch
kvm-arm64-ensure-a-vmid-is-allocated-before-programming-vttbr_el2.patch
-kvm-nvmx-process-events-on-nested-vm-exit-if-injectable-irq-or-nmi-is-pending.patch
perf-core-add-rcu-read-lock-protection-to-perf_iterate_ctx.patch
perf-x86-fix-low-freqency-setting-issue.patch
perf-core-fix-low-freq-setting-via-ioc_period.patch
mptcp-always-handle-address-removal-under-msk-socket-lock.patch
mptcp-reset-when-mptcp-opts-are-dropped-after-join.patch
selftests-landlock-test-that-mptcp-actions-are-not-restricted.patch
-efi-don-t-map-the-entire-mokvar-table-to-determine-its-size.patch
vmlinux.lds-ensure-that-const-vars-with-relocations-are-mapped-r-o.patch
rcuref-plug-slowpath-race-in-rcuref_put.patch
sched-core-prevent-rescheduling-when-interrupts-are-disabled.patch
+++ /dev/null
-From 982caaa1150479f022003390cd72a1941663d211 Mon Sep 17 00:00:00 2001
-From: Sean Christopherson <seanjc@google.com>
-Date: Mon, 24 Feb 2025 15:55:37 -0800
-Subject: KVM: nVMX: Process events on nested VM-Exit if injectable IRQ or NMI is pending
-
-From: Sean Christopherson <seanjc@google.com>
-
-commit 982caaa1150479f022003390cd72a1941663d211 upstream.
-
-Process pending events on nested VM-Exit if the vCPU has an injectable IRQ
-or NMI, as the event may have become pending while L2 was active, i.e. may
-not be tracked in the context of vmcs01. E.g. if L1 has passed its APIC
-through to L2 and an IRQ arrives while L2 is active, then KVM needs to
-request an IRQ window prior to running L1, otherwise delivery of the IRQ
-will be delayed until KVM happens to process events for some other reason.
-
-The missed failure is detected by vmx_apic_passthrough_tpr_threshold_test
-in KVM-Unit-Tests, but has effectively been masked due to a flaw in KVM's
-PIC emulation that causes KVM to make spurious KVM_REQ_EVENT requests (and
-apparently no one ever ran the test with split IRQ chips).
-
-Cc: stable@vger.kernel.org
-Signed-off-by: Sean Christopherson <seanjc@google.com>
-Message-ID: <20250224235542.2562848-3-seanjc@google.com>
-Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
-Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
----
- arch/x86/kvm/vmx/nested.c | 11 +++++++++++
- 1 file changed, 11 insertions(+)
-
---- a/arch/x86/kvm/vmx/nested.c
-+++ b/arch/x86/kvm/vmx/nested.c
-@@ -4926,6 +4926,17 @@ void nested_vmx_vmexit(struct kvm_vcpu *
-
- load_vmcs12_host_state(vcpu, vmcs12);
-
-+ /*
-+ * Process events if an injectable IRQ or NMI is pending, even
-+ * if the event is blocked (RFLAGS.IF is cleared on VM-Exit).
-+ * If an event became pending while L2 was active, KVM needs to
-+ * either inject the event or request an IRQ/NMI window. SMIs
-+ * don't need to be processed as SMM is mutually exclusive with
-+ * non-root mode. INIT/SIPI don't need to be checked as INIT
-+ * is blocked post-VMXON, and SIPIs are ignored.
-+ */
-+ if (kvm_cpu_has_injectable_intr(vcpu) || vcpu->arch.nmi_pending)
-+ kvm_make_request(KVM_REQ_EVENT, vcpu);
- return;
- }
-
ftrace-avoid-potential-division-by-zero-in-function_stat_show.patch
alsa-usb-audio-re-add-sample-rate-quirk-for-pioneer-djm-900nxs2.patch
alsa-hda-realtek-fix-microphone-regression-on-asus-n705ud.patch
-kvm-nvmx-process-events-on-nested-vm-exit-if-injectable-irq-or-nmi-is-pending.patch
perf-core-add-rcu-read-lock-protection-to-perf_iterate_ctx.patch
perf-x86-fix-low-freqency-setting-issue.patch
perf-core-fix-low-freq-setting-via-ioc_period.patch