update patches for Ubuntu-5.15.0-54.60
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
This commit is contained in:
parent
81e07e4618
commit
1de3bb1f40
@ -13,7 +13,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
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);
|
||||
|
@ -10,10 +10,10 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
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)) {
|
||||
|
@ -19,7 +19,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
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 @@
|
||||
|
@ -56,7 +56,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
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)
|
||||
|
@ -18,7 +18,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
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)
|
||||
|
@ -21,7 +21,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
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,
|
||||
|
@ -17,7 +17,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
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)
|
||||
|
@ -19,7 +19,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
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)
|
||||
|
@ -17,10 +17,10 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
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();
|
||||
|
@ -17,7 +17,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
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;
|
||||
|
@ -15,7 +15,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
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
|
||||
|
@ -16,7 +16,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
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))
|
||||
|
@ -17,10 +17,10 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
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)
|
||||
|
@ -19,7 +19,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
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)
|
||||
|
@ -30,7 +30,7 @@ Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
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);
|
||||
|
||||
|
@ -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 <mlevitsk@redhat.com>
|
||||
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 <pbonzini@redhat.com>
|
||||
[FE: backport, mainly dropped parts for the not yet present
|
||||
5228eb96a487 ("KVM: x86: nSVM: implement nested TSC scaling")]
|
||||
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
|
||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
---
|
||||
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
|
||||
|
@ -1,41 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Jim Mattson <jmattson@google.com>
|
||||
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 <seanjc@google.com>
|
||||
Signed-off-by: Jim Mattson <jmattson@google.com>
|
||||
Reviewed-by: Sean Christopherson <seanjc@google.com>
|
||||
Message-Id: <20220810213050.2655000-1-jmattson@google.com>
|
||||
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
|
||||
Signed-off-by: Sasha Levin <sashal@kernel.org>
|
||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
---
|
||||
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)
|
@ -1,63 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Liu Jian <liujian56@huawei.com>
|
||||
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 <liujian56@huawei.com>
|
||||
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
|
||||
Acked-by: John Fastabend <john.fastabend@gmail.com>
|
||||
Acked-by: Jakub Sitnicki <jakub@cloudflare.com>
|
||||
Link: https://lore.kernel.org/bpf/20220809094915.150391-1-liujian56@huawei.com
|
||||
Signed-off-by: Sasha Levin <sashal@kernel.org>
|
||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
---
|
||||
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);
|
||||
}
|
@ -1,51 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Chris Wilson <chris.p.wilson@intel.com>
|
||||
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 <chris.p.wilson@intel.com>
|
||||
Cc: Fei Yang <fei.yang@intel.com>
|
||||
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
|
||||
Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>
|
||||
Acked-by: Thomas Hellström <thomas.hellstrom@linux.intel.com>
|
||||
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
|
||||
Signed-off-by: Andi Shyti <andi.shyti@linux.intel.com>
|
||||
Link: https://patchwork.freedesktop.org/patch/msgid/5aa86564b9ec5fe7fe605c1dd7de76855401ed73.1658924372.git.mchehab@kernel.org
|
||||
(cherry picked from commit be0366f168033374a93e4c43fdaa1a90ab905184)
|
||||
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
|
||||
Signed-off-by: Sasha Levin <sashal@kernel.org>
|
||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
---
|
||||
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);
|
@ -1,60 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Lukas Wunner <lukas@wunner.de>
|
||||
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 <m.szyprowski@samsung.com>
|
||||
Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
|
||||
Link: https://lore.kernel.org/netdev/2b1a1588-505e-dff3-301d-bfc1fb14d685@samsung.com/
|
||||
Signed-off-by: Lukas Wunner <lukas@wunner.de>
|
||||
Acked-by: Florian Fainelli <f.fainelli@gmail.com>
|
||||
Cc: Xiaolei Wang <xiaolei.wang@windriver.com>
|
||||
Link: https://lore.kernel.org/r/8128fdb51eeebc9efbf3776a4097363a1317aaf1.1663905575.git.lukas@wunner.de
|
||||
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
||||
Signed-off-by: Sasha Levin <sashal@kernel.org>
|
||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
---
|
||||
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)
|
@ -1,169 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Lijo Lazar <lijo.lazar@amd.com>
|
||||
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 <wielkiegie@gmail.com>
|
||||
Signed-off-by: Lijo Lazar <lijo.lazar@amd.com>
|
||||
Reviewed-by: Alex Deucher <alexander.deucher@amd.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
---
|
||||
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 = {
|
@ -1,87 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Alex Deucher <alexander.deucher@amd.com>
|
||||
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 <christian.koenig@amd.com>
|
||||
Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
|
||||
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
---
|
||||
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 */
|
@ -1,100 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Alex Deucher <alexander.deucher@amd.com>
|
||||
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 <christian.koenig@amd.com>
|
||||
Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
|
||||
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
---
|
||||
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;
|
||||
}
|
@ -1,130 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Victor Skvortsov <victor.skvortsov@amd.com>
|
||||
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 <victor.skvortsov@amd.com>
|
||||
Reviewed By: Shaoyun.liu <Shaoyun.liu@amd.com>
|
||||
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
||||
Signed-off-by: Sasha Levin <sashal@kernel.org>
|
||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
---
|
||||
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);
|
||||
|
@ -1,69 +0,0 @@
|
||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||
From: Alex Deucher <alexander.deucher@amd.com>
|
||||
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 <christian.koenig@amd.com>
|
||||
Reviewed-by: Lijo Lazar <lijo.lazar@amd.com>
|
||||
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Sasha Levin <sashal@kernel.org>
|
||||
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
||||
---
|
||||
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,
|
||||
};
|
Loading…
Reference in New Issue
Block a user