diff --git a/patches/kernel/0004-kvm-disable-default-dynamic-halt-polling-growth.patch b/patches/kernel/0004-kvm-disable-default-dynamic-halt-polling-growth.patch index 135bd5d..bd9e730 100644 --- a/patches/kernel/0004-kvm-disable-default-dynamic-halt-polling-growth.patch +++ b/patches/kernel/0004-kvm-disable-default-dynamic-halt-polling-growth.patch @@ -13,7 +13,7 @@ Signed-off-by: Thomas Lamprecht 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/virt/kvm/kvm_main.c b/virt/kvm/kvm_main.c -index 86fc429a0e43..0bf84788ff5b 100644 +index 3ae5f6a3eae4..1888f6a9306b 100644 --- a/virt/kvm/kvm_main.c +++ b/virt/kvm/kvm_main.c @@ -79,7 +79,7 @@ module_param(halt_poll_ns, uint, 0644); diff --git a/patches/kernel/0005-net-core-downgrade-unregister_netdevice-refcount-lea.patch b/patches/kernel/0005-net-core-downgrade-unregister_netdevice-refcount-lea.patch index 8a4d2b9..73e51d5 100644 --- a/patches/kernel/0005-net-core-downgrade-unregister_netdevice-refcount-lea.patch +++ b/patches/kernel/0005-net-core-downgrade-unregister_netdevice-refcount-lea.patch @@ -10,10 +10,10 @@ Signed-off-by: Thomas Lamprecht 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/core/dev.c b/net/core/dev.c -index 276cca563325..c96ddc500eb3 100644 +index be51644e95da..3247678314e2 100644 --- a/net/core/dev.c +++ b/net/core/dev.c -@@ -10529,7 +10529,7 @@ static void netdev_wait_allrefs(struct net_device *dev) +@@ -10530,7 +10530,7 @@ static void netdev_wait_allrefs(struct net_device *dev) if (refcnt != 1 && time_after(jiffies, warning_time + netdev_unregister_timeout_secs * HZ)) { diff --git a/patches/kernel/0006-Revert-PCI-Coalesce-host-bridge-contiguous-apertures.patch b/patches/kernel/0006-Revert-PCI-Coalesce-host-bridge-contiguous-apertures.patch index 56dc238..fe35cea 100644 --- a/patches/kernel/0006-Revert-PCI-Coalesce-host-bridge-contiguous-apertures.patch +++ b/patches/kernel/0006-Revert-PCI-Coalesce-host-bridge-contiguous-apertures.patch @@ -19,7 +19,7 @@ Signed-off-by: Thomas Lamprecht 1 file changed, 4 insertions(+), 46 deletions(-) diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c -index 4f26c222f5f2..c0abe906b84e 100644 +index 103ee42f6717..6b73e9179111 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c @@ -20,7 +20,6 @@ diff --git a/patches/kernel/0007-PCI-Reinstate-PCI-Coalesce-host-bridge-contiguous-ap.patch b/patches/kernel/0007-PCI-Reinstate-PCI-Coalesce-host-bridge-contiguous-ap.patch index ca9001a..ce1bc88 100644 --- a/patches/kernel/0007-PCI-Reinstate-PCI-Coalesce-host-bridge-contiguous-ap.patch +++ b/patches/kernel/0007-PCI-Reinstate-PCI-Coalesce-host-bridge-contiguous-ap.patch @@ -56,7 +56,7 @@ Signed-off-by: Thomas Lamprecht 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c -index c0abe906b84e..8b7c58dec9e4 100644 +index 6b73e9179111..50eef5b211f4 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c @@ -883,11 +883,11 @@ static void pci_set_bus_msi_domain(struct pci_bus *bus) diff --git a/patches/kernel/0016-KVM-x86-emulator-em_sysexit-should-update-ctxt-mode.patch b/patches/kernel/0016-KVM-x86-emulator-em_sysexit-should-update-ctxt-mode.patch index 3ab10ff..d1fe3f4 100644 --- a/patches/kernel/0016-KVM-x86-emulator-em_sysexit-should-update-ctxt-mode.patch +++ b/patches/kernel/0016-KVM-x86-emulator-em_sysexit-should-update-ctxt-mode.patch @@ -18,7 +18,7 @@ Signed-off-by: Thomas Lamprecht 1 file changed, 1 insertion(+) diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c -index 8496ffc67c32..1856de48be6b 100644 +index 3b4e1d8d239a..ad58eb751b4f 100644 --- a/arch/x86/kvm/emulate.c +++ b/arch/x86/kvm/emulate.c @@ -2861,6 +2861,7 @@ static int em_sysexit(struct x86_emulate_ctxt *ctxt) diff --git a/patches/kernel/0017-KVM-x86-emulator-introduce-emulator_recalc_and_set_m.patch b/patches/kernel/0017-KVM-x86-emulator-introduce-emulator_recalc_and_set_m.patch index c565c8c..e0a489e 100644 --- a/patches/kernel/0017-KVM-x86-emulator-introduce-emulator_recalc_and_set_m.patch +++ b/patches/kernel/0017-KVM-x86-emulator-introduce-emulator_recalc_and_set_m.patch @@ -21,7 +21,7 @@ Signed-off-by: Thomas Lamprecht 1 file changed, 57 insertions(+), 28 deletions(-) diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c -index 1856de48be6b..7cf3cd26748d 100644 +index ad58eb751b4f..e095debb7022 100644 --- a/arch/x86/kvm/emulate.c +++ b/arch/x86/kvm/emulate.c @@ -795,8 +795,7 @@ static int linearize(struct x86_emulate_ctxt *ctxt, diff --git a/patches/kernel/0018-KVM-x86-emulator-update-the-emulation-mode-after-rsm.patch b/patches/kernel/0018-KVM-x86-emulator-update-the-emulation-mode-after-rsm.patch index a510334..e827be1 100644 --- a/patches/kernel/0018-KVM-x86-emulator-update-the-emulation-mode-after-rsm.patch +++ b/patches/kernel/0018-KVM-x86-emulator-update-the-emulation-mode-after-rsm.patch @@ -17,7 +17,7 @@ Signed-off-by: Thomas Lamprecht 1 file changed, 5 insertions(+) diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c -index 7cf3cd26748d..5be4b9927221 100644 +index e095debb7022..9dc100399c94 100644 --- a/arch/x86/kvm/emulate.c +++ b/arch/x86/kvm/emulate.c @@ -2638,6 +2638,11 @@ static int em_rsm(struct x86_emulate_ctxt *ctxt) diff --git a/patches/kernel/0019-KVM-x86-emulator-update-the-emulation-mode-after-CR0.patch b/patches/kernel/0019-KVM-x86-emulator-update-the-emulation-mode-after-CR0.patch index ee2ba48..36bb961 100644 --- a/patches/kernel/0019-KVM-x86-emulator-update-the-emulation-mode-after-CR0.patch +++ b/patches/kernel/0019-KVM-x86-emulator-update-the-emulation-mode-after-CR0.patch @@ -19,7 +19,7 @@ Signed-off-by: Thomas Lamprecht 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c -index 5be4b9927221..8e8975496a2d 100644 +index 9dc100399c94..70ed6c458084 100644 --- a/arch/x86/kvm/emulate.c +++ b/arch/x86/kvm/emulate.c @@ -3634,11 +3634,23 @@ static int em_movbe(struct x86_emulate_ctxt *ctxt) diff --git a/patches/kernel/0020-KVM-x86-emulator-smm-add-structs-for-KVM-s-smram-lay.patch b/patches/kernel/0020-KVM-x86-emulator-smm-add-structs-for-KVM-s-smram-lay.patch index bcae075..3841e0d 100644 --- a/patches/kernel/0020-KVM-x86-emulator-smm-add-structs-for-KVM-s-smram-lay.patch +++ b/patches/kernel/0020-KVM-x86-emulator-smm-add-structs-for-KVM-s-smram-lay.patch @@ -17,10 +17,10 @@ Signed-off-by: Thomas Lamprecht 3 files changed, 225 insertions(+) diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c -index 8e8975496a2d..58bc09040b3b 100644 +index 70ed6c458084..a332d6f5d4dc 100644 --- a/arch/x86/kvm/emulate.c +++ b/arch/x86/kvm/emulate.c -@@ -5824,3 +5824,9 @@ bool emulator_can_use_gpa(struct x86_emulate_ctxt *ctxt) +@@ -5827,3 +5827,9 @@ bool emulator_can_use_gpa(struct x86_emulate_ctxt *ctxt) return true; } @@ -267,10 +267,10 @@ index fb09cd22cb7f..0b2bbcce321a 100644 #if defined(CONFIG_X86_32) #define X86EMUL_MODE_HOST X86EMUL_MODE_PROT32 diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c -index 7a06f7599c8f..1a6dde98d521 100644 +index a4377e50a721..d394cf17a864 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c -@@ -12479,6 +12479,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_vmgexit_msr_protocol_exit); +@@ -12502,6 +12502,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(kvm_vmgexit_msr_protocol_exit); static int __init kvm_x86_init(void) { kvm_mmu_x86_module_init(); diff --git a/patches/kernel/0021-KVM-x86-emulator-smm-use-smram-structs-in-the-common.patch b/patches/kernel/0021-KVM-x86-emulator-smm-use-smram-structs-in-the-common.patch index e14bee3..25af0ca 100644 --- a/patches/kernel/0021-KVM-x86-emulator-smm-use-smram-structs-in-the-common.patch +++ b/patches/kernel/0021-KVM-x86-emulator-smm-use-smram-structs-in-the-common.patch @@ -17,7 +17,7 @@ Signed-off-by: Thomas Lamprecht 6 files changed, 28 insertions(+), 20 deletions(-) diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h -index 4a25a459412e..0669a533451d 100644 +index 1172a201d851..c4e382af1853 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h @@ -200,6 +200,7 @@ typedef enum exit_fastpath_completion fastpath_t; @@ -40,7 +40,7 @@ index 4a25a459412e..0669a533451d 100644 int (*mem_enc_op)(struct kvm *kvm, void __user *argp); diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c -index 58bc09040b3b..6b579368b813 100644 +index a332d6f5d4dc..382d7773a8b0 100644 --- a/arch/x86/kvm/emulate.c +++ b/arch/x86/kvm/emulate.c @@ -2566,16 +2566,18 @@ static int rsm_load_state_64(struct x86_emulate_ctxt *ctxt, @@ -105,7 +105,7 @@ index 0b2bbcce321a..3b37b3e17379 100644 int (*set_xcr)(struct x86_emulate_ctxt *ctxt, u32 index, u64 xcr); }; diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c -index d1ba4da93985..dee4d66ff5b5 100644 +index 81b8eb0fa912..de82175f0aad 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -4313,12 +4313,14 @@ static int svm_smi_allowed(struct kvm_vcpu *vcpu, bool for_injection) @@ -143,10 +143,10 @@ index d1ba4da93985..dee4d66ff5b5 100644 return 0; diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c -index 1bc7f76fa0d2..fc0bb685283d 100644 +index ff1861312448..290f4d0aca7e 100644 --- a/arch/x86/kvm/vmx/vmx.c +++ b/arch/x86/kvm/vmx/vmx.c -@@ -7595,7 +7595,7 @@ static int vmx_smi_allowed(struct kvm_vcpu *vcpu, bool for_injection) +@@ -7594,7 +7594,7 @@ static int vmx_smi_allowed(struct kvm_vcpu *vcpu, bool for_injection) return !is_smm(vcpu); } @@ -155,7 +155,7 @@ index 1bc7f76fa0d2..fc0bb685283d 100644 { struct vcpu_vmx *vmx = to_vmx(vcpu); -@@ -7609,7 +7609,7 @@ static int vmx_enter_smm(struct kvm_vcpu *vcpu, char *smstate) +@@ -7608,7 +7608,7 @@ static int vmx_enter_smm(struct kvm_vcpu *vcpu, char *smstate) return 0; } @@ -165,10 +165,10 @@ index 1bc7f76fa0d2..fc0bb685283d 100644 struct vcpu_vmx *vmx = to_vmx(vcpu); int ret; diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c -index 1a6dde98d521..5554e4bd70fd 100644 +index d394cf17a864..f416ccf8a71f 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c -@@ -7333,9 +7333,9 @@ static void emulator_exiting_smm(struct x86_emulate_ctxt *ctxt) +@@ -7351,9 +7351,9 @@ static void emulator_exiting_smm(struct x86_emulate_ctxt *ctxt) } static int emulator_leave_smm(struct x86_emulate_ctxt *ctxt, @@ -180,7 +180,7 @@ index 1a6dde98d521..5554e4bd70fd 100644 } static void emulator_triple_fault(struct x86_emulate_ctxt *ctxt) -@@ -9194,25 +9194,25 @@ static void enter_smm(struct kvm_vcpu *vcpu) +@@ -9212,25 +9212,25 @@ static void enter_smm(struct kvm_vcpu *vcpu) struct kvm_segment cs, ds; struct desc_ptr dt; unsigned long cr0; diff --git a/patches/kernel/0022-KVM-x86-emulator-smm-use-smram-struct-for-32-bit-smr.patch b/patches/kernel/0022-KVM-x86-emulator-smm-use-smram-struct-for-32-bit-smr.patch index c3a3850..9c9c191 100644 --- a/patches/kernel/0022-KVM-x86-emulator-smm-use-smram-struct-for-32-bit-smr.patch +++ b/patches/kernel/0022-KVM-x86-emulator-smm-use-smram-struct-for-32-bit-smr.patch @@ -15,7 +15,7 @@ Signed-off-by: Thomas Lamprecht 2 files changed, 60 insertions(+), 96 deletions(-) diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c -index 6b579368b813..63e9c9ef25a2 100644 +index 382d7773a8b0..616337ad077c 100644 --- a/arch/x86/kvm/emulate.c +++ b/arch/x86/kvm/emulate.c @@ -2343,25 +2343,17 @@ static void rsm_set_desc_flags(struct desc_struct *desc, u32 flags) @@ -145,10 +145,10 @@ index 6b579368b813..63e9c9ef25a2 100644 if (ret != X86EMUL_CONTINUE) goto emulate_shutdown; diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c -index 5554e4bd70fd..13e457996477 100644 +index f416ccf8a71f..c42e8be7b4ab 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c -@@ -9048,22 +9048,18 @@ static u32 enter_smm_get_segment_flags(struct kvm_segment *seg) +@@ -9066,22 +9066,18 @@ static u32 enter_smm_get_segment_flags(struct kvm_segment *seg) return flags; } @@ -179,7 +179,7 @@ index 5554e4bd70fd..13e457996477 100644 } #ifdef CONFIG_X86_64 -@@ -9084,54 +9080,47 @@ static void enter_smm_save_seg_64(struct kvm_vcpu *vcpu, char *buf, int n) +@@ -9102,54 +9098,47 @@ static void enter_smm_save_seg_64(struct kvm_vcpu *vcpu, char *buf, int n) } #endif @@ -257,7 +257,7 @@ index 5554e4bd70fd..13e457996477 100644 } #ifdef CONFIG_X86_64 -@@ -9202,7 +9191,7 @@ static void enter_smm(struct kvm_vcpu *vcpu) +@@ -9220,7 +9209,7 @@ static void enter_smm(struct kvm_vcpu *vcpu) enter_smm_save_state_64(vcpu, (char *)&smram); else #endif diff --git a/patches/kernel/0023-KVM-x86-emulator-smm-use-smram-struct-for-64-bit-smr.patch b/patches/kernel/0023-KVM-x86-emulator-smm-use-smram-struct-for-64-bit-smr.patch index 9e85763..79a1240 100644 --- a/patches/kernel/0023-KVM-x86-emulator-smm-use-smram-struct-for-64-bit-smr.patch +++ b/patches/kernel/0023-KVM-x86-emulator-smm-use-smram-struct-for-64-bit-smr.patch @@ -16,7 +16,7 @@ Signed-off-by: Thomas Lamprecht 2 files changed, 62 insertions(+), 101 deletions(-) diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c -index 63e9c9ef25a2..2677a342fb10 100644 +index 616337ad077c..72e895b0b61a 100644 --- a/arch/x86/kvm/emulate.c +++ b/arch/x86/kvm/emulate.c @@ -2357,24 +2357,16 @@ static void rsm_load_seg_32(struct x86_emulate_ctxt *ctxt, @@ -154,10 +154,10 @@ index 63e9c9ef25a2..2677a342fb10 100644 #endif ret = rsm_load_state_32(ctxt, &smram.smram32); diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c -index 13e457996477..6aa50ec9b2a9 100644 +index c42e8be7b4ab..0f38c8fa4287 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c -@@ -9063,20 +9063,17 @@ static void enter_smm_save_seg_32(struct kvm_vcpu *vcpu, +@@ -9081,20 +9081,17 @@ static void enter_smm_save_seg_32(struct kvm_vcpu *vcpu, } #ifdef CONFIG_X86_64 @@ -185,7 +185,7 @@ index 13e457996477..6aa50ec9b2a9 100644 } #endif -@@ -9124,57 +9121,51 @@ static void enter_smm_save_state_32(struct kvm_vcpu *vcpu, struct kvm_smram_stat +@@ -9142,57 +9139,51 @@ static void enter_smm_save_state_32(struct kvm_vcpu *vcpu, struct kvm_smram_stat } #ifdef CONFIG_X86_64 @@ -268,7 +268,7 @@ index 13e457996477..6aa50ec9b2a9 100644 } #endif -@@ -9188,7 +9179,7 @@ static void enter_smm(struct kvm_vcpu *vcpu) +@@ -9206,7 +9197,7 @@ static void enter_smm(struct kvm_vcpu *vcpu) memset(smram.bytes, 0, sizeof(smram.bytes)); #ifdef CONFIG_X86_64 if (guest_cpuid_has(vcpu, X86_FEATURE_LM)) diff --git a/patches/kernel/0024-KVM-x86-SVM-use-smram-structs.patch b/patches/kernel/0024-KVM-x86-SVM-use-smram-structs.patch index c6974b3..52f0152 100644 --- a/patches/kernel/0024-KVM-x86-SVM-use-smram-structs.patch +++ b/patches/kernel/0024-KVM-x86-SVM-use-smram-structs.patch @@ -17,10 +17,10 @@ Signed-off-by: Thomas Lamprecht 2 files changed, 6 insertions(+), 21 deletions(-) diff --git a/arch/x86/include/asm/kvm_host.h b/arch/x86/include/asm/kvm_host.h -index 0669a533451d..5673d08daa67 100644 +index c4e382af1853..932c0f659468 100644 --- a/arch/x86/include/asm/kvm_host.h +++ b/arch/x86/include/asm/kvm_host.h -@@ -1936,12 +1936,6 @@ static inline int kvm_cpu_get_apicid(int mps_cpu) +@@ -1937,12 +1937,6 @@ static inline int kvm_cpu_get_apicid(int mps_cpu) #endif } @@ -34,7 +34,7 @@ index 0669a533451d..5673d08daa67 100644 int alloc_all_memslots_rmaps(struct kvm *kvm); diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c -index dee4d66ff5b5..423a32287357 100644 +index de82175f0aad..399a7f2e0d1f 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -4319,15 +4319,11 @@ static int svm_enter_smm(struct kvm_vcpu *vcpu, union kvm_smram *smram) diff --git a/patches/kernel/0025-KVM-x86-SVM-don-t-save-SVM-state-to-SMRAM-when-VM-is.patch b/patches/kernel/0025-KVM-x86-SVM-don-t-save-SVM-state-to-SMRAM-when-VM-is.patch index f25c592..db7fb4c 100644 --- a/patches/kernel/0025-KVM-x86-SVM-don-t-save-SVM-state-to-SMRAM-when-VM-is.patch +++ b/patches/kernel/0025-KVM-x86-SVM-don-t-save-SVM-state-to-SMRAM-when-VM-is.patch @@ -19,7 +19,7 @@ Signed-off-by: Thomas Lamprecht 1 file changed, 9 insertions(+) diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c -index 423a32287357..1d7f6fba034c 100644 +index 399a7f2e0d1f..cbfd9b23c32b 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c @@ -4322,6 +4322,15 @@ static int svm_enter_smm(struct kvm_vcpu *vcpu, union kvm_smram *smram) diff --git a/patches/kernel/0026-KVM-x86-emulator-smm-preserve-interrupt-shadow-in-SM.patch b/patches/kernel/0026-KVM-x86-emulator-smm-preserve-interrupt-shadow-in-SM.patch index 8d94209..24ba648 100644 --- a/patches/kernel/0026-KVM-x86-emulator-smm-preserve-interrupt-shadow-in-SM.patch +++ b/patches/kernel/0026-KVM-x86-emulator-smm-preserve-interrupt-shadow-in-SM.patch @@ -30,7 +30,7 @@ Signed-off-by: Thomas Lamprecht 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/arch/x86/kvm/emulate.c b/arch/x86/kvm/emulate.c -index 2677a342fb10..3ccd0d0f451f 100644 +index 72e895b0b61a..dbd65ea22e46 100644 --- a/arch/x86/kvm/emulate.c +++ b/arch/x86/kvm/emulate.c @@ -2419,7 +2419,7 @@ static int rsm_load_state_32(struct x86_emulate_ctxt *ctxt, @@ -128,10 +128,10 @@ index 3b37b3e17379..a64c190abf28 100644 __CHECK_SMRAM64_OFFSET(auto_hlt_restart, 0xFEC9); __CHECK_SMRAM64_OFFSET(reserved2, 0xFECA); diff --git a/arch/x86/kvm/x86.c b/arch/x86/kvm/x86.c -index 6aa50ec9b2a9..85b0a31c1999 100644 +index 0f38c8fa4287..e6da373339ca 100644 --- a/arch/x86/kvm/x86.c +++ b/arch/x86/kvm/x86.c -@@ -7320,6 +7320,11 @@ static void emulator_set_nmi_mask(struct x86_emulate_ctxt *ctxt, bool masked) +@@ -7338,6 +7338,11 @@ static void emulator_set_nmi_mask(struct x86_emulate_ctxt *ctxt, bool masked) static_call(kvm_x86_set_nmi_mask)(emul_to_vcpu(ctxt), masked); } @@ -143,7 +143,7 @@ index 6aa50ec9b2a9..85b0a31c1999 100644 static unsigned emulator_get_hflags(struct x86_emulate_ctxt *ctxt) { return emul_to_vcpu(ctxt)->arch.hflags; -@@ -7389,6 +7394,7 @@ static const struct x86_emulate_ops emulate_ops = { +@@ -7407,6 +7412,7 @@ static const struct x86_emulate_ops emulate_ops = { .guest_has_fxsr = emulator_guest_has_fxsr, .guest_has_rdpid = emulator_guest_has_rdpid, .set_nmi_mask = emulator_set_nmi_mask, @@ -151,7 +151,7 @@ index 6aa50ec9b2a9..85b0a31c1999 100644 .get_hflags = emulator_get_hflags, .exiting_smm = emulator_exiting_smm, .leave_smm = emulator_leave_smm, -@@ -9118,6 +9124,8 @@ static void enter_smm_save_state_32(struct kvm_vcpu *vcpu, struct kvm_smram_stat +@@ -9136,6 +9142,8 @@ static void enter_smm_save_state_32(struct kvm_vcpu *vcpu, struct kvm_smram_stat smram->cr4 = kvm_read_cr4(vcpu); smram->smm_revision = 0x00020000; smram->smbase = vcpu->arch.smbase; @@ -160,7 +160,7 @@ index 6aa50ec9b2a9..85b0a31c1999 100644 } #ifdef CONFIG_X86_64 -@@ -9166,6 +9174,8 @@ static void enter_smm_save_state_64(struct kvm_vcpu *vcpu, struct kvm_smram_stat +@@ -9184,6 +9192,8 @@ static void enter_smm_save_state_64(struct kvm_vcpu *vcpu, struct kvm_smram_stat enter_smm_save_seg_64(vcpu, &smram->ds, VCPU_SREG_DS); enter_smm_save_seg_64(vcpu, &smram->fs, VCPU_SREG_FS); enter_smm_save_seg_64(vcpu, &smram->gs, VCPU_SREG_GS); @@ -169,7 +169,7 @@ index 6aa50ec9b2a9..85b0a31c1999 100644 } #endif -@@ -9202,6 +9212,8 @@ static void enter_smm(struct kvm_vcpu *vcpu) +@@ -9220,6 +9230,8 @@ static void enter_smm(struct kvm_vcpu *vcpu) kvm_set_rflags(vcpu, X86_EFLAGS_FIXED); kvm_rip_write(vcpu, 0x8000); diff --git a/patches/kernel/0032-KVM-SVM-fix-tsc-scaling-cache-logic.patch b/patches/kernel/0027-KVM-SVM-fix-tsc-scaling-cache-logic.patch similarity index 89% rename from patches/kernel/0032-KVM-SVM-fix-tsc-scaling-cache-logic.patch rename to patches/kernel/0027-KVM-SVM-fix-tsc-scaling-cache-logic.patch index 15016ea..a5af35e 100644 --- a/patches/kernel/0032-KVM-SVM-fix-tsc-scaling-cache-logic.patch +++ b/patches/kernel/0027-KVM-SVM-fix-tsc-scaling-cache-logic.patch @@ -1,4 +1,4 @@ -From 955c2b4d64593baecc87c64d1354cd5786975bd9 Mon Sep 17 00:00:00 2001 +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Maxim Levitsky Date: Mon, 6 Jun 2022 21:11:49 +0300 Subject: [PATCH] KVM: SVM: fix tsc scaling cache logic @@ -36,15 +36,16 @@ Signed-off-by: Paolo Bonzini [FE: backport, mainly dropped parts for the not yet present 5228eb96a487 ("KVM: x86: nSVM: implement nested TSC scaling")] Signed-off-by: Fiona Ebner +Signed-off-by: Thomas Lamprecht --- arch/x86/kvm/svm/svm.c | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/arch/x86/kvm/svm/svm.c b/arch/x86/kvm/svm/svm.c -index 938b9b24f0ee..ea87d06bdaba 100644 +index cbfd9b23c32b..14d6cad2afdc 100644 --- a/arch/x86/kvm/svm/svm.c +++ b/arch/x86/kvm/svm/svm.c -@@ -468,11 +468,24 @@ static int has_svm(void) +@@ -472,11 +472,24 @@ static int has_svm(void) return 1; } @@ -70,7 +71,7 @@ index 938b9b24f0ee..ea87d06bdaba 100644 cpu_svm_disable(); -@@ -514,8 +527,7 @@ static int svm_hardware_enable(void) +@@ -518,8 +531,7 @@ static int svm_hardware_enable(void) wrmsrl(MSR_VM_HSAVE_PA, __sme_page_pa(sd->save_area)); if (static_cpu_has(X86_FEATURE_TSCRATEMSR)) { @@ -80,7 +81,7 @@ index 938b9b24f0ee..ea87d06bdaba 100644 } -@@ -1128,9 +1140,10 @@ static void svm_write_tsc_offset(struct kvm_vcpu *vcpu, u64 offset) +@@ -1132,9 +1144,10 @@ static void svm_write_tsc_offset(struct kvm_vcpu *vcpu, u64 offset) static void svm_write_tsc_multiplier(struct kvm_vcpu *vcpu, u64 multiplier) { @@ -92,7 +93,7 @@ index 938b9b24f0ee..ea87d06bdaba 100644 /* Evaluate instruction intercepts that depend on guest CPUID features. */ static void svm_recalc_instruction_intercepts(struct kvm_vcpu *vcpu, struct vcpu_svm *svm) -@@ -1453,13 +1466,8 @@ static void svm_prepare_guest_switch(struct kvm_vcpu *vcpu) +@@ -1457,13 +1470,8 @@ static void svm_prepare_guest_switch(struct kvm_vcpu *vcpu) vmsave(__sme_page_pa(sd->save_area)); } @@ -108,6 +109,3 @@ index 938b9b24f0ee..ea87d06bdaba 100644 if (likely(tsc_aux_uret_slot >= 0)) kvm_set_user_return_msr(tsc_aux_uret_slot, svm->tsc_aux, -1ull); --- -2.30.2 - diff --git a/patches/kernel/0027-KVM-VMX-Heed-the-msr-argument-in-msr_write_intercept.patch b/patches/kernel/0027-KVM-VMX-Heed-the-msr-argument-in-msr_write_intercept.patch deleted file mode 100644 index 2000c9b..0000000 --- a/patches/kernel/0027-KVM-VMX-Heed-the-msr-argument-in-msr_write_intercept.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Jim Mattson -Date: Wed, 10 Aug 2022 14:30:50 -0700 -Subject: [PATCH] KVM: VMX: Heed the 'msr' argument in msr_write_intercepted() - -[ Upstream commit 020dac4187968535f089f83f376a72beb3451311 ] - -Regardless of the 'msr' argument passed to the VMX version of -msr_write_intercepted(), the function always checks to see if a -specific MSR (IA32_SPEC_CTRL) is intercepted for write. This behavior -seems unintentional and unexpected. - -Modify the function so that it checks to see if the provided 'msr' -index is intercepted for write. - -Fixes: 67f4b9969c30 ("KVM: nVMX: Handle dynamic MSR intercept toggling") -Cc: Sean Christopherson -Signed-off-by: Jim Mattson -Reviewed-by: Sean Christopherson -Message-Id: <20220810213050.2655000-1-jmattson@google.com> -Signed-off-by: Paolo Bonzini -Signed-off-by: Sasha Levin -Signed-off-by: Thomas Lamprecht ---- - arch/x86/kvm/vmx/vmx.c | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/arch/x86/kvm/vmx/vmx.c b/arch/x86/kvm/vmx/vmx.c -index fc0bb685283d..290f4d0aca7e 100644 ---- a/arch/x86/kvm/vmx/vmx.c -+++ b/arch/x86/kvm/vmx/vmx.c -@@ -831,8 +831,7 @@ static bool msr_write_intercepted(struct vcpu_vmx *vmx, u32 msr) - if (!(exec_controls_get(vmx) & CPU_BASED_USE_MSR_BITMAPS)) - return true; - -- return vmx_test_msr_bitmap_write(vmx->loaded_vmcs->msr_bitmap, -- MSR_IA32_SPEC_CTRL); -+ return vmx_test_msr_bitmap_write(vmx->loaded_vmcs->msr_bitmap, msr); - } - - unsigned int __vmx_vcpu_run_flags(struct vcpu_vmx *vmx) diff --git a/patches/kernel/0028-skmsg-Fix-wrong-last-sg-check-in-sk_msg_recvmsg.patch b/patches/kernel/0028-skmsg-Fix-wrong-last-sg-check-in-sk_msg_recvmsg.patch deleted file mode 100644 index c909c0f..0000000 --- a/patches/kernel/0028-skmsg-Fix-wrong-last-sg-check-in-sk_msg_recvmsg.patch +++ /dev/null @@ -1,63 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Liu Jian -Date: Tue, 9 Aug 2022 17:49:15 +0800 -Subject: [PATCH] skmsg: Fix wrong last sg check in sk_msg_recvmsg() - -[ Upstream commit 583585e48d965338e73e1eb383768d16e0922d73 ] - -Fix one kernel NULL pointer dereference as below: - -[ 224.462334] Call Trace: -[ 224.462394] __tcp_bpf_recvmsg+0xd3/0x380 -[ 224.462441] ? sock_has_perm+0x78/0xa0 -[ 224.462463] tcp_bpf_recvmsg+0x12e/0x220 -[ 224.462494] inet_recvmsg+0x5b/0xd0 -[ 224.462534] __sys_recvfrom+0xc8/0x130 -[ 224.462574] ? syscall_trace_enter+0x1df/0x2e0 -[ 224.462606] ? __do_page_fault+0x2de/0x500 -[ 224.462635] __x64_sys_recvfrom+0x24/0x30 -[ 224.462660] do_syscall_64+0x5d/0x1d0 -[ 224.462709] entry_SYSCALL_64_after_hwframe+0x65/0xca - -In commit 9974d37ea75f ("skmsg: Fix invalid last sg check in -sk_msg_recvmsg()"), we change last sg check to sg_is_last(), -but in sockmap redirection case (without stream_parser/stream_verdict/ -skb_verdict), we did not mark the end of the scatterlist. Check the -sk_msg_alloc, sk_msg_page_add, and bpf_msg_push_data functions, they all -do not mark the end of sg. They are expected to use sg.end for end -judgment. So the judgment of '(i != msg_rx->sg.end)' is added back here. - -Fixes: 9974d37ea75f ("skmsg: Fix invalid last sg check in sk_msg_recvmsg()") -Signed-off-by: Liu Jian -Signed-off-by: Daniel Borkmann -Acked-by: John Fastabend -Acked-by: Jakub Sitnicki -Link: https://lore.kernel.org/bpf/20220809094915.150391-1-liujian56@huawei.com -Signed-off-by: Sasha Levin -Signed-off-by: Thomas Lamprecht ---- - net/core/skmsg.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/net/core/skmsg.c b/net/core/skmsg.c -index f50f8d95b628..23d65fe160c3 100644 ---- a/net/core/skmsg.c -+++ b/net/core/skmsg.c -@@ -462,7 +462,7 @@ int sk_msg_recvmsg(struct sock *sk, struct sk_psock *psock, struct msghdr *msg, - - if (copied == len) - break; -- } while (!sg_is_last(sge)); -+ } while ((i != msg_rx->sg.end) && !sg_is_last(sge)); - - if (unlikely(peek)) { - msg_rx = sk_psock_next_msg(psock, msg_rx); -@@ -472,7 +472,7 @@ int sk_msg_recvmsg(struct sock *sk, struct sk_psock *psock, struct msghdr *msg, - } - - msg_rx->sg.start = i; -- if (!sge->length && sg_is_last(sge)) { -+ if (!sge->length && (i == msg_rx->sg.end || sg_is_last(sge))) { - msg_rx = sk_psock_dequeue_msg(psock); - kfree_sk_msg(msg_rx); - } diff --git a/patches/kernel/0029-drm-i915-gt-Skip-TLB-invalidations-once-wedged.patch b/patches/kernel/0029-drm-i915-gt-Skip-TLB-invalidations-once-wedged.patch deleted file mode 100644 index 4c46f83..0000000 --- a/patches/kernel/0029-drm-i915-gt-Skip-TLB-invalidations-once-wedged.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Chris Wilson -Date: Wed, 27 Jul 2022 14:29:54 +0200 -Subject: [PATCH] drm/i915/gt: Skip TLB invalidations once wedged -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -[ Upstream commit e5a95c83ed1492c0f442b448b20c90c8faaf702b ] - -Skip all further TLB invalidations once the device is wedged and -had been reset, as, on such cases, it can no longer process instructions -on the GPU and the user no longer has access to the TLB's in each engine. - -So, an attempt to do a TLB cache invalidation will produce a timeout. - -That helps to reduce the performance regression introduced by TLB -invalidate logic. - -Cc: stable@vger.kernel.org -Fixes: 7938d61591d3 ("drm/i915: Flush TLBs before releasing backing store") -Signed-off-by: Chris Wilson -Cc: Fei Yang -Cc: Tvrtko Ursulin -Reviewed-by: Andi Shyti -Acked-by: Thomas Hellström -Signed-off-by: Mauro Carvalho Chehab -Signed-off-by: Andi Shyti -Link: https://patchwork.freedesktop.org/patch/msgid/5aa86564b9ec5fe7fe605c1dd7de76855401ed73.1658924372.git.mchehab@kernel.org -(cherry picked from commit be0366f168033374a93e4c43fdaa1a90ab905184) -Signed-off-by: Rodrigo Vivi -Signed-off-by: Sasha Levin -Signed-off-by: Thomas Lamprecht ---- - drivers/gpu/drm/i915/gt/intel_gt.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/drivers/gpu/drm/i915/gt/intel_gt.c b/drivers/gpu/drm/i915/gt/intel_gt.c -index 3a76000d15bf..ed8ad3b26395 100644 ---- a/drivers/gpu/drm/i915/gt/intel_gt.c -+++ b/drivers/gpu/drm/i915/gt/intel_gt.c -@@ -949,6 +949,9 @@ void intel_gt_invalidate_tlbs(struct intel_gt *gt) - if (I915_SELFTEST_ONLY(gt->awake == -ENODEV)) - return; - -+ if (intel_gt_is_wedged(gt)) -+ return; -+ - if (GRAPHICS_VER(i915) == 12) { - regs = gen12_regs; - num = ARRAY_SIZE(gen12_regs); diff --git a/patches/kernel/0030-net-phy-Don-t-WARN-for-PHY_UP-state-in-mdio_bus_phy_.patch b/patches/kernel/0030-net-phy-Don-t-WARN-for-PHY_UP-state-in-mdio_bus_phy_.patch deleted file mode 100644 index e8c2f57..0000000 --- a/patches/kernel/0030-net-phy-Don-t-WARN-for-PHY_UP-state-in-mdio_bus_phy_.patch +++ /dev/null @@ -1,60 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Lukas Wunner -Date: Fri, 23 Sep 2022 06:09:52 +0200 -Subject: [PATCH] net: phy: Don't WARN for PHY_UP state in - mdio_bus_phy_resume() - -[ Upstream commit ea64cdfad124922c931633e39287c5a31a9b14a1 ] - -Commit 744d23c71af3 ("net: phy: Warn about incorrect mdio_bus_phy_resume() -state") introduced a WARN() on resume from system sleep if a PHY is not -in PHY_HALTED state. - -Commit 6dbe852c379f ("net: phy: Don't WARN for PHY_READY state in -mdio_bus_phy_resume()") added an exemption for PHY_READY state from -the WARN(). - -It turns out PHY_UP state needs to be exempted as well because the -following may happen on suspend: - - mdio_bus_phy_suspend() - phy_stop_machine() - phydev->state = PHY_UP # if (phydev->state >= PHY_UP) - -Fixes: 744d23c71af3 ("net: phy: Warn about incorrect mdio_bus_phy_resume() state") -Reported-by: Marek Szyprowski -Tested-by: Marek Szyprowski -Link: https://lore.kernel.org/netdev/2b1a1588-505e-dff3-301d-bfc1fb14d685@samsung.com/ -Signed-off-by: Lukas Wunner -Acked-by: Florian Fainelli -Cc: Xiaolei Wang -Link: https://lore.kernel.org/r/8128fdb51eeebc9efbf3776a4097363a1317aaf1.1663905575.git.lukas@wunner.de -Signed-off-by: Paolo Abeni -Signed-off-by: Sasha Levin -Signed-off-by: Thomas Lamprecht ---- - drivers/net/phy/phy_device.c | 10 ++++++---- - 1 file changed, 6 insertions(+), 4 deletions(-) - -diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c -index b616f55ea222..c5b92ffaffb9 100644 ---- a/drivers/net/phy/phy_device.c -+++ b/drivers/net/phy/phy_device.c -@@ -315,11 +315,13 @@ static __maybe_unused int mdio_bus_phy_resume(struct device *dev) - - phydev->suspended_by_mdio_bus = 0; - -- /* If we manged to get here with the PHY state machine in a state neither -- * PHY_HALTED nor PHY_READY this is an indication that something went wrong -- * and we should most likely be using MAC managed PM and we are not. -+ /* If we managed to get here with the PHY state machine in a state -+ * neither PHY_HALTED, PHY_READY nor PHY_UP, this is an indication -+ * that something went wrong and we should most likely be using -+ * MAC managed PM, but we are not. - */ -- WARN_ON(phydev->state != PHY_HALTED && phydev->state != PHY_READY); -+ WARN_ON(phydev->state != PHY_HALTED && phydev->state != PHY_READY && -+ phydev->state != PHY_UP); - - ret = phy_init_hw(phydev); - if (ret < 0) diff --git a/patches/kernel/0031-drm-amdgpu-Don-t-enable-LTR-if-not-supported.patch b/patches/kernel/0031-drm-amdgpu-Don-t-enable-LTR-if-not-supported.patch deleted file mode 100644 index 9ffa865..0000000 --- a/patches/kernel/0031-drm-amdgpu-Don-t-enable-LTR-if-not-supported.patch +++ /dev/null @@ -1,169 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Lijo Lazar -Date: Thu, 8 Sep 2022 08:28:57 +0530 -Subject: [PATCH] drm/amdgpu: Don't enable LTR if not supported - -commit 6c20490663553cd7e07d8de8af482012329ab9d6 upstream. - -As per PCIE Base Spec r4.0 Section 6.18 -'Software must not enable LTR in an Endpoint unless the Root Complex -and all intermediate Switches indicate support for LTR.' - -This fixes the Unsupported Request error reported through AER during -ASPM enablement. - -Link: https://bugzilla.kernel.org/show_bug.cgi?id=216455 - -The error was unnoticed before and got visible because of the commit -referenced below. This doesn't fix anything in the commit below, rather -fixes the issue in amdgpu exposed by the commit. The reference is only -to associate this commit with below one so that both go together. - -Fixes: 8795e182b02d ("PCI/portdrv: Don't disable AER reporting in get_port_device_capability()") - -Reported-by: Gustaw Smolarczyk -Signed-off-by: Lijo Lazar -Reviewed-by: Alex Deucher -Signed-off-by: Greg Kroah-Hartman - -Cc: stable@vger.kernel.org -Signed-off-by: Alex Deucher -Signed-off-by: Thomas Lamprecht ---- - drivers/gpu/drm/amd/amdgpu/nbio_v2_3.c | 9 ++++++++- - drivers/gpu/drm/amd/amdgpu/nbio_v6_1.c | 9 ++++++++- - drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c | 9 ++++++++- - 3 files changed, 24 insertions(+), 3 deletions(-) - -diff --git a/drivers/gpu/drm/amd/amdgpu/nbio_v2_3.c b/drivers/gpu/drm/amd/amdgpu/nbio_v2_3.c -index b184b656b9b6..6f21154d4891 100644 ---- a/drivers/gpu/drm/amd/amdgpu/nbio_v2_3.c -+++ b/drivers/gpu/drm/amd/amdgpu/nbio_v2_3.c -@@ -366,6 +366,7 @@ static void nbio_v2_3_enable_aspm(struct amdgpu_device *adev, - WREG32_PCIE(smnPCIE_LC_CNTL, data); - } - -+#ifdef CONFIG_PCIEASPM - static void nbio_v2_3_program_ltr(struct amdgpu_device *adev) - { - uint32_t def, data; -@@ -387,9 +388,11 @@ static void nbio_v2_3_program_ltr(struct amdgpu_device *adev) - if (def != data) - WREG32_PCIE(smnBIF_CFG_DEV0_EPF0_DEVICE_CNTL2, data); - } -+#endif - - static void nbio_v2_3_program_aspm(struct amdgpu_device *adev) - { -+#ifdef CONFIG_PCIEASPM - uint32_t def, data; - - def = data = RREG32_PCIE(smnPCIE_LC_CNTL); -@@ -445,7 +448,10 @@ static void nbio_v2_3_program_aspm(struct amdgpu_device *adev) - if (def != data) - WREG32_PCIE(smnPCIE_LC_CNTL6, data); - -- nbio_v2_3_program_ltr(adev); -+ /* Don't bother about LTR if LTR is not enabled -+ * in the path */ -+ if (adev->pdev->ltr_path) -+ nbio_v2_3_program_ltr(adev); - - def = data = RREG32_SOC15(NBIO, 0, mmRCC_BIF_STRAP3); - data |= 0x5DE0 << RCC_BIF_STRAP3__STRAP_VLINK_ASPM_IDLE_TIMER__SHIFT; -@@ -469,6 +475,7 @@ static void nbio_v2_3_program_aspm(struct amdgpu_device *adev) - data &= ~PCIE_LC_CNTL3__LC_DSC_DONT_ENTER_L23_AFTER_PME_ACK_MASK; - if (def != data) - WREG32_PCIE(smnPCIE_LC_CNTL3, data); -+#endif - } - - static void nbio_v2_3_apply_lc_spc_mode_wa(struct amdgpu_device *adev) -diff --git a/drivers/gpu/drm/amd/amdgpu/nbio_v6_1.c b/drivers/gpu/drm/amd/amdgpu/nbio_v6_1.c -index 0d2d629e2d6a..be3f6c52c3ff 100644 ---- a/drivers/gpu/drm/amd/amdgpu/nbio_v6_1.c -+++ b/drivers/gpu/drm/amd/amdgpu/nbio_v6_1.c -@@ -278,6 +278,7 @@ static void nbio_v6_1_init_registers(struct amdgpu_device *adev) - WREG32_PCIE(smnPCIE_CI_CNTL, data); - } - -+#ifdef CONFIG_PCIEASPM - static void nbio_v6_1_program_ltr(struct amdgpu_device *adev) - { - uint32_t def, data; -@@ -299,9 +300,11 @@ static void nbio_v6_1_program_ltr(struct amdgpu_device *adev) - if (def != data) - WREG32_PCIE(smnBIF_CFG_DEV0_EPF0_DEVICE_CNTL2, data); - } -+#endif - - static void nbio_v6_1_program_aspm(struct amdgpu_device *adev) - { -+#ifdef CONFIG_PCIEASPM - uint32_t def, data; - - def = data = RREG32_PCIE(smnPCIE_LC_CNTL); -@@ -357,7 +360,10 @@ static void nbio_v6_1_program_aspm(struct amdgpu_device *adev) - if (def != data) - WREG32_PCIE(smnPCIE_LC_CNTL6, data); - -- nbio_v6_1_program_ltr(adev); -+ /* Don't bother about LTR if LTR is not enabled -+ * in the path */ -+ if (adev->pdev->ltr_path) -+ nbio_v6_1_program_ltr(adev); - - def = data = RREG32_PCIE(smnRCC_BIF_STRAP3); - data |= 0x5DE0 << RCC_BIF_STRAP3__STRAP_VLINK_ASPM_IDLE_TIMER__SHIFT; -@@ -381,6 +387,7 @@ static void nbio_v6_1_program_aspm(struct amdgpu_device *adev) - data &= ~PCIE_LC_CNTL3__LC_DSC_DONT_ENTER_L23_AFTER_PME_ACK_MASK; - if (def != data) - WREG32_PCIE(smnPCIE_LC_CNTL3, data); -+#endif - } - - const struct amdgpu_nbio_funcs nbio_v6_1_funcs = { -diff --git a/drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c b/drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c -index f50045cebd44..74cd7543729b 100644 ---- a/drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c -+++ b/drivers/gpu/drm/amd/amdgpu/nbio_v7_4.c -@@ -630,6 +630,7 @@ const struct amdgpu_nbio_ras_funcs nbio_v7_4_ras_funcs = { - .ras_fini = amdgpu_nbio_ras_fini, - }; - -+#ifdef CONFIG_PCIEASPM - static void nbio_v7_4_program_ltr(struct amdgpu_device *adev) - { - uint32_t def, data; -@@ -651,9 +652,11 @@ static void nbio_v7_4_program_ltr(struct amdgpu_device *adev) - if (def != data) - WREG32_PCIE(smnBIF_CFG_DEV0_EPF0_DEVICE_CNTL2, data); - } -+#endif - - static void nbio_v7_4_program_aspm(struct amdgpu_device *adev) - { -+#ifdef CONFIG_PCIEASPM - uint32_t def, data; - - def = data = RREG32_PCIE(smnPCIE_LC_CNTL); -@@ -709,7 +712,10 @@ static void nbio_v7_4_program_aspm(struct amdgpu_device *adev) - if (def != data) - WREG32_PCIE(smnPCIE_LC_CNTL6, data); - -- nbio_v7_4_program_ltr(adev); -+ /* Don't bother about LTR if LTR is not enabled -+ * in the path */ -+ if (adev->pdev->ltr_path) -+ nbio_v7_4_program_ltr(adev); - - def = data = RREG32_PCIE(smnRCC_BIF_STRAP3); - data |= 0x5DE0 << RCC_BIF_STRAP3__STRAP_VLINK_ASPM_IDLE_TIMER__SHIFT; -@@ -733,6 +739,7 @@ static void nbio_v7_4_program_aspm(struct amdgpu_device *adev) - data &= ~PCIE_LC_CNTL3__LC_DSC_DONT_ENTER_L23_AFTER_PME_ACK_MASK; - if (def != data) - WREG32_PCIE(smnPCIE_LC_CNTL3, data); -+#endif - } - - const struct amdgpu_nbio_funcs nbio_v7_4_funcs = { diff --git a/patches/kernel/0032-drm-amdgpu-move-nbio-ih_doorbell_range-into-ih-code-.patch b/patches/kernel/0032-drm-amdgpu-move-nbio-ih_doorbell_range-into-ih-code-.patch deleted file mode 100644 index 879f2f1..0000000 --- a/patches/kernel/0032-drm-amdgpu-move-nbio-ih_doorbell_range-into-ih-code-.patch +++ /dev/null @@ -1,87 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Alex Deucher -Date: Fri, 9 Sep 2022 11:47:20 -0400 -Subject: [PATCH] drm/amdgpu: move nbio ih_doorbell_range() into ih code for - vega -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -commit dc1d85cb790f2091eea074cee24a704b2d6c4a06 upstream. - -This mirrors what we do for other asics and this way we are -sure the ih doorbell range is properly initialized. - -There is a comment about the way doorbells on gfx9 work that -requires that they are initialized for other IPs before GFX -is initialized. In this case IH is initialized before GFX, -so there should be no issue. - -This is a prerequisite for fixing the Unsupported Request error -reported through AER during driver load. - -Link: https://bugzilla.kernel.org/show_bug.cgi?id=216373 - -The error was unnoticed before and got visible because of the commit -referenced below. This doesn't fix anything in the commit below, rather -fixes the issue in amdgpu exposed by the commit. The reference is only -to associate this commit with below one so that both go together. - -Fixes: 8795e182b02d ("PCI/portdrv: Don't disable AER reporting in get_port_device_capability()") - -Acked-by: Christian König -Reviewed-by: Lijo Lazar -Signed-off-by: Alex Deucher -Cc: stable@vger.kernel.org -Signed-off-by: Greg Kroah-Hartman -Signed-off-by: Thomas Lamprecht ---- - drivers/gpu/drm/amd/amdgpu/soc15.c | 3 --- - drivers/gpu/drm/amd/amdgpu/vega10_ih.c | 4 ++++ - drivers/gpu/drm/amd/amdgpu/vega20_ih.c | 4 ++++ - 3 files changed, 8 insertions(+), 3 deletions(-) - -diff --git a/drivers/gpu/drm/amd/amdgpu/soc15.c b/drivers/gpu/drm/amd/amdgpu/soc15.c -index bdb47ae96ce6..723b088094f2 100644 ---- a/drivers/gpu/drm/amd/amdgpu/soc15.c -+++ b/drivers/gpu/drm/amd/amdgpu/soc15.c -@@ -1429,9 +1429,6 @@ static void soc15_doorbell_range_init(struct amdgpu_device *adev) - ring->use_doorbell, ring->doorbell_index, - adev->doorbell_index.sdma_doorbell_range); - } -- -- adev->nbio.funcs->ih_doorbell_range(adev, adev->irq.ih.use_doorbell, -- adev->irq.ih.doorbell_index); - } - } - -diff --git a/drivers/gpu/drm/amd/amdgpu/vega10_ih.c b/drivers/gpu/drm/amd/amdgpu/vega10_ih.c -index a9ca6988009e..73728fa85997 100644 ---- a/drivers/gpu/drm/amd/amdgpu/vega10_ih.c -+++ b/drivers/gpu/drm/amd/amdgpu/vega10_ih.c -@@ -289,6 +289,10 @@ static int vega10_ih_irq_init(struct amdgpu_device *adev) - } - } - -+ if (!amdgpu_sriov_vf(adev)) -+ adev->nbio.funcs->ih_doorbell_range(adev, adev->irq.ih.use_doorbell, -+ adev->irq.ih.doorbell_index); -+ - pci_set_master(adev->pdev); - - /* enable interrupts */ -diff --git a/drivers/gpu/drm/amd/amdgpu/vega20_ih.c b/drivers/gpu/drm/amd/amdgpu/vega20_ih.c -index f51dfc38ac65..ac34af4cb178 100644 ---- a/drivers/gpu/drm/amd/amdgpu/vega20_ih.c -+++ b/drivers/gpu/drm/amd/amdgpu/vega20_ih.c -@@ -340,6 +340,10 @@ static int vega20_ih_irq_init(struct amdgpu_device *adev) - } - } - -+ if (!amdgpu_sriov_vf(adev)) -+ adev->nbio.funcs->ih_doorbell_range(adev, adev->irq.ih.use_doorbell, -+ adev->irq.ih.doorbell_index); -+ - pci_set_master(adev->pdev); - - /* enable interrupts */ diff --git a/patches/kernel/0033-drm-amdgpu-move-nbio-sdma_doorbell_range-into-sdma-c.patch b/patches/kernel/0033-drm-amdgpu-move-nbio-sdma_doorbell_range-into-sdma-c.patch deleted file mode 100644 index b1a9a85..0000000 --- a/patches/kernel/0033-drm-amdgpu-move-nbio-sdma_doorbell_range-into-sdma-c.patch +++ /dev/null @@ -1,100 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Alex Deucher -Date: Fri, 9 Sep 2022 11:53:27 -0400 -Subject: [PATCH] drm/amdgpu: move nbio sdma_doorbell_range() into sdma code - for vega -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -commit e3163bc8ffdfdb405e10530b140135b2ee487f89 upstream. - -This mirrors what we do for other asics and this way we are -sure the sdma doorbell range is properly initialized. - -There is a comment about the way doorbells on gfx9 work that -requires that they are initialized for other IPs before GFX -is initialized. However, the statement says that it applies to -multimedia as well, but the VCN code currently initializes -doorbells after GFX and there are no known issues there. In my -testing at least I don't see any problems on SDMA. - -This is a prerequisite for fixing the Unsupported Request error -reported through AER during driver load. - -Link: https://bugzilla.kernel.org/show_bug.cgi?id=216373 - -The error was unnoticed before and got visible because of the commit -referenced below. This doesn't fix anything in the commit below, rather -fixes the issue in amdgpu exposed by the commit. The reference is only -to associate this commit with below one so that both go together. - -Fixes: 8795e182b02d ("PCI/portdrv: Don't disable AER reporting in get_port_device_capability()") - -Acked-by: Christian König -Reviewed-by: Lijo Lazar -Signed-off-by: Alex Deucher -Cc: stable@vger.kernel.org -Signed-off-by: Greg Kroah-Hartman -Signed-off-by: Thomas Lamprecht ---- - drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c | 5 +++++ - drivers/gpu/drm/amd/amdgpu/soc15.c | 22 ---------------------- - 2 files changed, 5 insertions(+), 22 deletions(-) - -diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c -index 9014f71d52dd..8b20326c4c05 100644 ---- a/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c -+++ b/drivers/gpu/drm/amd/amdgpu/sdma_v4_0.c -@@ -1507,6 +1507,11 @@ static int sdma_v4_0_start(struct amdgpu_device *adev) - WREG32_SDMA(i, mmSDMA0_CNTL, temp); - - if (!amdgpu_sriov_vf(adev)) { -+ ring = &adev->sdma.instance[i].ring; -+ adev->nbio.funcs->sdma_doorbell_range(adev, i, -+ ring->use_doorbell, ring->doorbell_index, -+ adev->doorbell_index.sdma_doorbell_range); -+ - /* unhalt engine */ - temp = RREG32_SDMA(i, mmSDMA0_F32_CNTL); - temp = REG_SET_FIELD(temp, SDMA0_F32_CNTL, HALT, 0); -diff --git a/drivers/gpu/drm/amd/amdgpu/soc15.c b/drivers/gpu/drm/amd/amdgpu/soc15.c -index 723b088094f2..7d5ff50435e5 100644 ---- a/drivers/gpu/drm/amd/amdgpu/soc15.c -+++ b/drivers/gpu/drm/amd/amdgpu/soc15.c -@@ -1416,22 +1416,6 @@ static int soc15_common_sw_fini(void *handle) - return 0; - } - --static void soc15_doorbell_range_init(struct amdgpu_device *adev) --{ -- int i; -- struct amdgpu_ring *ring; -- -- /* sdma/ih doorbell range are programed by hypervisor */ -- if (!amdgpu_sriov_vf(adev)) { -- for (i = 0; i < adev->sdma.num_instances; i++) { -- ring = &adev->sdma.instance[i].ring; -- adev->nbio.funcs->sdma_doorbell_range(adev, i, -- ring->use_doorbell, ring->doorbell_index, -- adev->doorbell_index.sdma_doorbell_range); -- } -- } --} -- - static int soc15_common_hw_init(void *handle) - { - struct amdgpu_device *adev = (struct amdgpu_device *)handle; -@@ -1451,12 +1435,6 @@ static int soc15_common_hw_init(void *handle) - - /* enable the doorbell aperture */ - soc15_enable_doorbell_aperture(adev, true); -- /* HW doorbell routing policy: doorbell writing not -- * in SDMA/IH/MM/ACV range will be routed to CP. So -- * we need to init SDMA/IH/MM/ACV doorbell range prior -- * to CP ip block init and ring test. -- */ -- soc15_doorbell_range_init(adev); - - return 0; - } diff --git a/patches/kernel/0034-drm-amdgpu-Separate-vf2pf-work-item-init-from-virt-d.patch b/patches/kernel/0034-drm-amdgpu-Separate-vf2pf-work-item-init-from-virt-d.patch deleted file mode 100644 index 0046c03..0000000 --- a/patches/kernel/0034-drm-amdgpu-Separate-vf2pf-work-item-init-from-virt-d.patch +++ /dev/null @@ -1,130 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Victor Skvortsov -Date: Thu, 16 Dec 2021 17:01:45 +0000 -Subject: [PATCH] drm/amdgpu: Separate vf2pf work item init from virt data - exchange - -[ Upstream commit 892deb48269c65376f3eeb5b4c032ff2c2979bd7 ] - -We want to be able to call virt data exchange conditionally -after gmc sw init to reserve bad pages as early as possible. -Since this is a conditional call, we will need -to call it again unconditionally later in the init sequence. - -Refactor the data exchange function so it can be -called multiple times without re-initializing the work item. - -v2: Cleaned up the code. Kept the original call to init_exchange_data() -inside early init to initialize the work item, afterwards call -exchange_data() when needed. - -Signed-off-by: Victor Skvortsov -Reviewed By: Shaoyun.liu -Signed-off-by: Alex Deucher -Signed-off-by: Sasha Levin -Signed-off-by: Thomas Lamprecht ---- - drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 6 +++- - drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c | 36 ++++++++++++++-------- - drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h | 1 + - 3 files changed, 30 insertions(+), 13 deletions(-) - -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c -index d1af709cc7dc..f443b4630f9d 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c -@@ -2390,6 +2390,10 @@ static int amdgpu_device_ip_init(struct amdgpu_device *adev) - - /* need to do gmc hw init early so we can allocate gpu mem */ - if (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GMC) { -+ /* Try to reserve bad pages early */ -+ if (amdgpu_sriov_vf(adev)) -+ amdgpu_virt_exchange_data(adev); -+ - r = amdgpu_device_vram_scratch_init(adev); - if (r) { - DRM_ERROR("amdgpu_vram_scratch_init failed %d\n", r); -@@ -2421,7 +2425,7 @@ static int amdgpu_device_ip_init(struct amdgpu_device *adev) - } - - if (amdgpu_sriov_vf(adev)) -- amdgpu_virt_init_data_exchange(adev); -+ amdgpu_virt_exchange_data(adev); - - r = amdgpu_ib_pool_init(adev); - if (r) { -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c -index 16787c675f35..cce03aad5f0e 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.c -@@ -614,17 +614,35 @@ void amdgpu_virt_fini_data_exchange(struct amdgpu_device *adev) - - void amdgpu_virt_init_data_exchange(struct amdgpu_device *adev) - { -- uint64_t bp_block_offset = 0; -- uint32_t bp_block_size = 0; -- struct amd_sriov_msg_pf2vf_info *pf2vf_v2 = NULL; -- - adev->virt.fw_reserve.p_pf2vf = NULL; - adev->virt.fw_reserve.p_vf2pf = NULL; - adev->virt.vf2pf_update_interval_ms = 0; - -- if (adev->mman.fw_vram_usage_va != NULL) { -+ if (adev->bios != NULL) { - adev->virt.vf2pf_update_interval_ms = 2000; - -+ adev->virt.fw_reserve.p_pf2vf = -+ (struct amd_sriov_msg_pf2vf_info_header *) -+ (adev->bios + (AMD_SRIOV_MSG_PF2VF_OFFSET_KB << 10)); -+ -+ amdgpu_virt_read_pf2vf_data(adev); -+ } -+ -+ if (adev->virt.vf2pf_update_interval_ms != 0) { -+ INIT_DELAYED_WORK(&adev->virt.vf2pf_work, amdgpu_virt_update_vf2pf_work_item); -+ schedule_delayed_work(&(adev->virt.vf2pf_work), msecs_to_jiffies(adev->virt.vf2pf_update_interval_ms)); -+ } -+} -+ -+ -+void amdgpu_virt_exchange_data(struct amdgpu_device *adev) -+{ -+ uint64_t bp_block_offset = 0; -+ uint32_t bp_block_size = 0; -+ struct amd_sriov_msg_pf2vf_info *pf2vf_v2 = NULL; -+ -+ if (adev->mman.fw_vram_usage_va != NULL) { -+ - adev->virt.fw_reserve.p_pf2vf = - (struct amd_sriov_msg_pf2vf_info_header *) - (adev->mman.fw_vram_usage_va + (AMD_SRIOV_MSG_PF2VF_OFFSET_KB << 10)); -@@ -655,16 +673,10 @@ void amdgpu_virt_init_data_exchange(struct amdgpu_device *adev) - (adev->bios + (AMD_SRIOV_MSG_PF2VF_OFFSET_KB << 10)); - - amdgpu_virt_read_pf2vf_data(adev); -- -- return; -- } -- -- if (adev->virt.vf2pf_update_interval_ms != 0) { -- INIT_DELAYED_WORK(&adev->virt.vf2pf_work, amdgpu_virt_update_vf2pf_work_item); -- schedule_delayed_work(&(adev->virt.vf2pf_work), adev->virt.vf2pf_update_interval_ms); - } - } - -+ - void amdgpu_detect_virtualization(struct amdgpu_device *adev) - { - uint32_t reg; -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h -index 8d4c20bb71c5..9adfb8d63280 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_virt.h -@@ -308,6 +308,7 @@ int amdgpu_virt_alloc_mm_table(struct amdgpu_device *adev); - void amdgpu_virt_free_mm_table(struct amdgpu_device *adev); - void amdgpu_virt_release_ras_err_handler_data(struct amdgpu_device *adev); - void amdgpu_virt_init_data_exchange(struct amdgpu_device *adev); -+void amdgpu_virt_exchange_data(struct amdgpu_device *adev); - void amdgpu_virt_fini_data_exchange(struct amdgpu_device *adev); - void amdgpu_detect_virtualization(struct amdgpu_device *adev); - diff --git a/patches/kernel/0035-drm-amdgpu-make-sure-to-init-common-IP-before-gmc.patch b/patches/kernel/0035-drm-amdgpu-make-sure-to-init-common-IP-before-gmc.patch deleted file mode 100644 index 8190183..0000000 --- a/patches/kernel/0035-drm-amdgpu-make-sure-to-init-common-IP-before-gmc.patch +++ /dev/null @@ -1,69 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Alex Deucher -Date: Tue, 30 Aug 2022 10:59:49 -0400 -Subject: [PATCH] drm/amdgpu: make sure to init common IP before gmc -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -[ Upstream commit a8671493d2074950553da3cf07d1be43185ef6c6 ] - -Move common IP init before GMC init so that HDP gets -remapped before GMC init which uses it. - -This fixes the Unsupported Request error reported through -AER during driver load. The error happens as a write happens -to the remap offset before real remapping is done. - -Link: https://bugzilla.kernel.org/show_bug.cgi?id=216373 - -The error was unnoticed before and got visible because of the commit -referenced below. This doesn't fix anything in the commit below, rather -fixes the issue in amdgpu exposed by the commit. The reference is only -to associate this commit with below one so that both go together. - -Fixes: 8795e182b02d ("PCI/portdrv: Don't disable AER reporting in get_port_device_capability()") - -Acked-by: Christian König -Reviewed-by: Lijo Lazar -Signed-off-by: Alex Deucher -Cc: stable@vger.kernel.org -Signed-off-by: Sasha Levin -Signed-off-by: Thomas Lamprecht ---- - drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 14 +++++++++++--- - 1 file changed, 11 insertions(+), 3 deletions(-) - -diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c -index f443b4630f9d..7450773821f4 100644 ---- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c -+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c -@@ -2388,8 +2388,16 @@ static int amdgpu_device_ip_init(struct amdgpu_device *adev) - } - adev->ip_blocks[i].status.sw = true; - -- /* need to do gmc hw init early so we can allocate gpu mem */ -- if (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GMC) { -+ if (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_COMMON) { -+ /* need to do common hw init early so everything is set up for gmc */ -+ r = adev->ip_blocks[i].version->funcs->hw_init((void *)adev); -+ if (r) { -+ DRM_ERROR("hw_init %d failed %d\n", i, r); -+ goto init_failed; -+ } -+ adev->ip_blocks[i].status.hw = true; -+ } else if (adev->ip_blocks[i].version->type == AMD_IP_BLOCK_TYPE_GMC) { -+ /* need to do gmc hw init early so we can allocate gpu mem */ - /* Try to reserve bad pages early */ - if (amdgpu_sriov_vf(adev)) - amdgpu_virt_exchange_data(adev); -@@ -3037,8 +3045,8 @@ static int amdgpu_device_ip_reinit_early_sriov(struct amdgpu_device *adev) - int i, r; - - static enum amd_ip_block_type ip_order[] = { -- AMD_IP_BLOCK_TYPE_GMC, - AMD_IP_BLOCK_TYPE_COMMON, -+ AMD_IP_BLOCK_TYPE_GMC, - AMD_IP_BLOCK_TYPE_PSP, - AMD_IP_BLOCK_TYPE_IH, - };