diff options
author | Jan200101 <sentrycraft123@gmail.com> | 2023-08-20 04:49:01 +0200 |
---|---|---|
committer | Jan200101 <sentrycraft123@gmail.com> | 2023-08-20 04:49:01 +0200 |
commit | a2f74a299563d8dad4947f0ec95a18d8ee9e4317 (patch) | |
tree | 4d70a21e03a5220ede1ff2d00cd50a7008f0b0a7 /SOURCES/patch-6.4-redhat.patch | |
parent | 1b6e2ff790837a76bdca5f93d7c92c43b9dde124 (diff) | |
download | kernel-fsync-a2f74a299563d8dad4947f0ec95a18d8ee9e4317.tar.gz kernel-fsync-a2f74a299563d8dad4947f0ec95a18d8ee9e4317.zip |
kernel 6.4.11
Diffstat (limited to 'SOURCES/patch-6.4-redhat.patch')
-rw-r--r-- | SOURCES/patch-6.4-redhat.patch | 433 |
1 files changed, 30 insertions, 403 deletions
diff --git a/SOURCES/patch-6.4-redhat.patch b/SOURCES/patch-6.4-redhat.patch index 4eddfcf..eb2433f 100644 --- a/SOURCES/patch-6.4-redhat.patch +++ b/SOURCES/patch-6.4-redhat.patch @@ -5,11 +5,9 @@ arch/s390/kernel/ipl.c | 5 + arch/s390/kernel/setup.c | 4 + arch/x86/kernel/setup.c | 22 ++-- - arch/x86/kvm/svm/sev.c | 124 ++++++++++----------- - arch/x86/kvm/svm/svm.h | 26 +++++ drivers/acpi/apei/hest.c | 8 ++ drivers/acpi/irq.c | 17 ++- - drivers/acpi/resource.c | 60 ++++++++++ + drivers/acpi/resource.c | 32 ++++-- drivers/acpi/scan.c | 9 ++ drivers/ata/libahci.c | 18 +++ drivers/char/ipmi/ipmi_dmi.c | 15 +++ @@ -18,7 +16,6 @@ drivers/firmware/efi/efi.c | 124 +++++++++++++++------ drivers/firmware/efi/secureboot.c | 38 +++++++ drivers/firmware/sysfb.c | 18 ++- - .../amd/display/amdgpu_dm/amdgpu_dm_mst_types.c | 2 +- drivers/hid/hid-rmi.c | 66 ----------- drivers/hwtracing/coresight/coresight-etm4x-core.c | 19 ++++ drivers/input/rmi4/rmi_driver.c | 124 ++++++++++++--------- @@ -40,10 +37,10 @@ security/lockdown/Kconfig | 13 +++ security/lockdown/lockdown.c | 1 + security/security.c | 12 ++ - 42 files changed, 646 insertions(+), 243 deletions(-) + 39 files changed, 518 insertions(+), 191 deletions(-) diff --git a/Makefile b/Makefile -index bf463afef54b..7717cdde1d65 100644 +index d0efd84bb7d0..77fb7e58f9eb 100644 --- a/Makefile +++ b/Makefile @@ -22,6 +22,18 @@ $(if $(filter __%, $(MAKECMDGOALS)), \ @@ -203,335 +200,6 @@ index 0cccfeb67c3a..a7dccf67c4a1 100644 reserve_initrd(); -diff --git a/arch/x86/kvm/svm/sev.c b/arch/x86/kvm/svm/sev.c -index 69ae5e1b3120..512dfe45d91e 100644 ---- a/arch/x86/kvm/svm/sev.c -+++ b/arch/x86/kvm/svm/sev.c -@@ -2414,15 +2414,18 @@ static void sev_es_sync_from_ghcb(struct vcpu_svm *svm) - */ - memset(vcpu->arch.regs, 0, sizeof(vcpu->arch.regs)); - -- vcpu->arch.regs[VCPU_REGS_RAX] = ghcb_get_rax_if_valid(ghcb); -- vcpu->arch.regs[VCPU_REGS_RBX] = ghcb_get_rbx_if_valid(ghcb); -- vcpu->arch.regs[VCPU_REGS_RCX] = ghcb_get_rcx_if_valid(ghcb); -- vcpu->arch.regs[VCPU_REGS_RDX] = ghcb_get_rdx_if_valid(ghcb); -- vcpu->arch.regs[VCPU_REGS_RSI] = ghcb_get_rsi_if_valid(ghcb); -+ BUILD_BUG_ON(sizeof(svm->sev_es.valid_bitmap) != sizeof(ghcb->save.valid_bitmap)); -+ memcpy(&svm->sev_es.valid_bitmap, &ghcb->save.valid_bitmap, sizeof(ghcb->save.valid_bitmap)); - -- svm->vmcb->save.cpl = ghcb_get_cpl_if_valid(ghcb); -+ vcpu->arch.regs[VCPU_REGS_RAX] = kvm_ghcb_get_rax_if_valid(svm, ghcb); -+ vcpu->arch.regs[VCPU_REGS_RBX] = kvm_ghcb_get_rbx_if_valid(svm, ghcb); -+ vcpu->arch.regs[VCPU_REGS_RCX] = kvm_ghcb_get_rcx_if_valid(svm, ghcb); -+ vcpu->arch.regs[VCPU_REGS_RDX] = kvm_ghcb_get_rdx_if_valid(svm, ghcb); -+ vcpu->arch.regs[VCPU_REGS_RSI] = kvm_ghcb_get_rsi_if_valid(svm, ghcb); - -- if (ghcb_xcr0_is_valid(ghcb)) { -+ svm->vmcb->save.cpl = kvm_ghcb_get_cpl_if_valid(svm, ghcb); -+ -+ if (kvm_ghcb_xcr0_is_valid(svm)) { - vcpu->arch.xcr0 = ghcb_get_xcr0(ghcb); - kvm_update_cpuid_runtime(vcpu); - } -@@ -2433,84 +2436,88 @@ static void sev_es_sync_from_ghcb(struct vcpu_svm *svm) - control->exit_code_hi = upper_32_bits(exit_code); - control->exit_info_1 = ghcb_get_sw_exit_info_1(ghcb); - control->exit_info_2 = ghcb_get_sw_exit_info_2(ghcb); -+ svm->sev_es.sw_scratch = kvm_ghcb_get_sw_scratch_if_valid(svm, ghcb); - - /* Clear the valid entries fields */ - memset(ghcb->save.valid_bitmap, 0, sizeof(ghcb->save.valid_bitmap)); - } - -+static u64 kvm_ghcb_get_sw_exit_code(struct vmcb_control_area *control) -+{ -+ return (((u64)control->exit_code_hi) << 32) | control->exit_code; -+} -+ - static int sev_es_validate_vmgexit(struct vcpu_svm *svm) - { -- struct kvm_vcpu *vcpu; -- struct ghcb *ghcb; -+ struct vmcb_control_area *control = &svm->vmcb->control; -+ struct kvm_vcpu *vcpu = &svm->vcpu; - u64 exit_code; - u64 reason; - -- ghcb = svm->sev_es.ghcb; -- - /* - * Retrieve the exit code now even though it may not be marked valid - * as it could help with debugging. - */ -- exit_code = ghcb_get_sw_exit_code(ghcb); -+ exit_code = kvm_ghcb_get_sw_exit_code(control); - - /* Only GHCB Usage code 0 is supported */ -- if (ghcb->ghcb_usage) { -+ if (svm->sev_es.ghcb->ghcb_usage) { - reason = GHCB_ERR_INVALID_USAGE; - goto vmgexit_err; - } - - reason = GHCB_ERR_MISSING_INPUT; - -- if (!ghcb_sw_exit_code_is_valid(ghcb) || -- !ghcb_sw_exit_info_1_is_valid(ghcb) || -- !ghcb_sw_exit_info_2_is_valid(ghcb)) -+ if (!kvm_ghcb_sw_exit_code_is_valid(svm) || -+ !kvm_ghcb_sw_exit_info_1_is_valid(svm) || -+ !kvm_ghcb_sw_exit_info_2_is_valid(svm)) - goto vmgexit_err; - -- switch (ghcb_get_sw_exit_code(ghcb)) { -+ switch (exit_code) { - case SVM_EXIT_READ_DR7: - break; - case SVM_EXIT_WRITE_DR7: -- if (!ghcb_rax_is_valid(ghcb)) -+ if (!kvm_ghcb_rax_is_valid(svm)) - goto vmgexit_err; - break; - case SVM_EXIT_RDTSC: - break; - case SVM_EXIT_RDPMC: -- if (!ghcb_rcx_is_valid(ghcb)) -+ if (!kvm_ghcb_rcx_is_valid(svm)) - goto vmgexit_err; - break; - case SVM_EXIT_CPUID: -- if (!ghcb_rax_is_valid(ghcb) || -- !ghcb_rcx_is_valid(ghcb)) -+ if (!kvm_ghcb_rax_is_valid(svm) || -+ !kvm_ghcb_rcx_is_valid(svm)) - goto vmgexit_err; -- if (ghcb_get_rax(ghcb) == 0xd) -- if (!ghcb_xcr0_is_valid(ghcb)) -+ if (vcpu->arch.regs[VCPU_REGS_RAX] == 0xd) -+ if (!kvm_ghcb_xcr0_is_valid(svm)) - goto vmgexit_err; - break; - case SVM_EXIT_INVD: - break; - case SVM_EXIT_IOIO: -- if (ghcb_get_sw_exit_info_1(ghcb) & SVM_IOIO_STR_MASK) { -- if (!ghcb_sw_scratch_is_valid(ghcb)) -+ if (control->exit_info_1 & SVM_IOIO_STR_MASK) { -+ if (!kvm_ghcb_sw_scratch_is_valid(svm)) - goto vmgexit_err; - } else { -- if (!(ghcb_get_sw_exit_info_1(ghcb) & SVM_IOIO_TYPE_MASK)) -- if (!ghcb_rax_is_valid(ghcb)) -+ if (!(control->exit_info_1 & SVM_IOIO_TYPE_MASK)) -+ if (!kvm_ghcb_rax_is_valid(svm)) - goto vmgexit_err; - } - break; - case SVM_EXIT_MSR: -- if (!ghcb_rcx_is_valid(ghcb)) -+ if (!kvm_ghcb_rcx_is_valid(svm)) - goto vmgexit_err; -- if (ghcb_get_sw_exit_info_1(ghcb)) { -- if (!ghcb_rax_is_valid(ghcb) || -- !ghcb_rdx_is_valid(ghcb)) -+ if (control->exit_info_1) { -+ if (!kvm_ghcb_rax_is_valid(svm) || -+ !kvm_ghcb_rdx_is_valid(svm)) - goto vmgexit_err; - } - break; - case SVM_EXIT_VMMCALL: -- if (!ghcb_rax_is_valid(ghcb) || -- !ghcb_cpl_is_valid(ghcb)) -+ if (!kvm_ghcb_rax_is_valid(svm) || -+ !kvm_ghcb_cpl_is_valid(svm)) - goto vmgexit_err; - break; - case SVM_EXIT_RDTSCP: -@@ -2518,19 +2525,19 @@ static int sev_es_validate_vmgexit(struct vcpu_svm *svm) - case SVM_EXIT_WBINVD: - break; - case SVM_EXIT_MONITOR: -- if (!ghcb_rax_is_valid(ghcb) || -- !ghcb_rcx_is_valid(ghcb) || -- !ghcb_rdx_is_valid(ghcb)) -+ if (!kvm_ghcb_rax_is_valid(svm) || -+ !kvm_ghcb_rcx_is_valid(svm) || -+ !kvm_ghcb_rdx_is_valid(svm)) - goto vmgexit_err; - break; - case SVM_EXIT_MWAIT: -- if (!ghcb_rax_is_valid(ghcb) || -- !ghcb_rcx_is_valid(ghcb)) -+ if (!kvm_ghcb_rax_is_valid(svm) || -+ !kvm_ghcb_rcx_is_valid(svm)) - goto vmgexit_err; - break; - case SVM_VMGEXIT_MMIO_READ: - case SVM_VMGEXIT_MMIO_WRITE: -- if (!ghcb_sw_scratch_is_valid(ghcb)) -+ if (!kvm_ghcb_sw_scratch_is_valid(svm)) - goto vmgexit_err; - break; - case SVM_VMGEXIT_NMI_COMPLETE: -@@ -2546,11 +2553,9 @@ static int sev_es_validate_vmgexit(struct vcpu_svm *svm) - return 0; - - vmgexit_err: -- vcpu = &svm->vcpu; -- - if (reason == GHCB_ERR_INVALID_USAGE) { - vcpu_unimpl(vcpu, "vmgexit: ghcb usage %#x is not valid\n", -- ghcb->ghcb_usage); -+ svm->sev_es.ghcb->ghcb_usage); - } else if (reason == GHCB_ERR_INVALID_EVENT) { - vcpu_unimpl(vcpu, "vmgexit: exit code %#llx is not valid\n", - exit_code); -@@ -2560,11 +2565,8 @@ static int sev_es_validate_vmgexit(struct vcpu_svm *svm) - dump_ghcb(svm); - } - -- /* Clear the valid entries fields */ -- memset(ghcb->save.valid_bitmap, 0, sizeof(ghcb->save.valid_bitmap)); -- -- ghcb_set_sw_exit_info_1(ghcb, 2); -- ghcb_set_sw_exit_info_2(ghcb, reason); -+ ghcb_set_sw_exit_info_1(svm->sev_es.ghcb, 2); -+ ghcb_set_sw_exit_info_2(svm->sev_es.ghcb, reason); - - /* Resume the guest to "return" the error code. */ - return 1; -@@ -2583,7 +2585,7 @@ void sev_es_unmap_ghcb(struct vcpu_svm *svm) - */ - if (svm->sev_es.ghcb_sa_sync) { - kvm_write_guest(svm->vcpu.kvm, -- ghcb_get_sw_scratch(svm->sev_es.ghcb), -+ svm->sev_es.sw_scratch, - svm->sev_es.ghcb_sa, - svm->sev_es.ghcb_sa_len); - svm->sev_es.ghcb_sa_sync = false; -@@ -2629,12 +2631,11 @@ void pre_sev_run(struct vcpu_svm *svm, int cpu) - static int setup_vmgexit_scratch(struct vcpu_svm *svm, bool sync, u64 len) - { - struct vmcb_control_area *control = &svm->vmcb->control; -- struct ghcb *ghcb = svm->sev_es.ghcb; - u64 ghcb_scratch_beg, ghcb_scratch_end; - u64 scratch_gpa_beg, scratch_gpa_end; - void *scratch_va; - -- scratch_gpa_beg = ghcb_get_sw_scratch(ghcb); -+ scratch_gpa_beg = svm->sev_es.sw_scratch; - if (!scratch_gpa_beg) { - pr_err("vmgexit: scratch gpa not provided\n"); - goto e_scratch; -@@ -2705,8 +2706,8 @@ static int setup_vmgexit_scratch(struct vcpu_svm *svm, bool sync, u64 len) - return 0; - - e_scratch: -- ghcb_set_sw_exit_info_1(ghcb, 2); -- ghcb_set_sw_exit_info_2(ghcb, GHCB_ERR_INVALID_SCRATCH_AREA); -+ ghcb_set_sw_exit_info_1(svm->sev_es.ghcb, 2); -+ ghcb_set_sw_exit_info_2(svm->sev_es.ghcb, GHCB_ERR_INVALID_SCRATCH_AREA); - - return 1; - } -@@ -2819,7 +2820,6 @@ int sev_handle_vmgexit(struct kvm_vcpu *vcpu) - struct vcpu_svm *svm = to_svm(vcpu); - struct vmcb_control_area *control = &svm->vmcb->control; - u64 ghcb_gpa, exit_code; -- struct ghcb *ghcb; - int ret; - - /* Validate the GHCB */ -@@ -2844,20 +2844,18 @@ int sev_handle_vmgexit(struct kvm_vcpu *vcpu) - } - - svm->sev_es.ghcb = svm->sev_es.ghcb_map.hva; -- ghcb = svm->sev_es.ghcb_map.hva; - -- trace_kvm_vmgexit_enter(vcpu->vcpu_id, ghcb); -- -- exit_code = ghcb_get_sw_exit_code(ghcb); -+ trace_kvm_vmgexit_enter(vcpu->vcpu_id, svm->sev_es.ghcb); - -+ sev_es_sync_from_ghcb(svm); - ret = sev_es_validate_vmgexit(svm); - if (ret) - return ret; - -- sev_es_sync_from_ghcb(svm); -- ghcb_set_sw_exit_info_1(ghcb, 0); -- ghcb_set_sw_exit_info_2(ghcb, 0); -+ ghcb_set_sw_exit_info_1(svm->sev_es.ghcb, 0); -+ ghcb_set_sw_exit_info_2(svm->sev_es.ghcb, 0); - -+ exit_code = kvm_ghcb_get_sw_exit_code(control); - switch (exit_code) { - case SVM_VMGEXIT_MMIO_READ: - ret = setup_vmgexit_scratch(svm, true, control->exit_info_2); -@@ -2895,13 +2893,13 @@ int sev_handle_vmgexit(struct kvm_vcpu *vcpu) - break; - case 1: - /* Get AP jump table address */ -- ghcb_set_sw_exit_info_2(ghcb, sev->ap_jump_table); -+ ghcb_set_sw_exit_info_2(svm->sev_es.ghcb, sev->ap_jump_table); - break; - default: - pr_err("svm: vmgexit: unsupported AP jump table request - exit_info_1=%#llx\n", - control->exit_info_1); -- ghcb_set_sw_exit_info_1(ghcb, 2); -- ghcb_set_sw_exit_info_2(ghcb, GHCB_ERR_INVALID_INPUT); -+ ghcb_set_sw_exit_info_1(svm->sev_es.ghcb, 2); -+ ghcb_set_sw_exit_info_2(svm->sev_es.ghcb, GHCB_ERR_INVALID_INPUT); - } - - ret = 1; -diff --git a/arch/x86/kvm/svm/svm.h b/arch/x86/kvm/svm/svm.h -index f44751dd8d5d..ece0d5959567 100644 ---- a/arch/x86/kvm/svm/svm.h -+++ b/arch/x86/kvm/svm/svm.h -@@ -190,10 +190,12 @@ struct vcpu_sev_es_state { - /* SEV-ES support */ - struct sev_es_save_area *vmsa; - struct ghcb *ghcb; -+ u8 valid_bitmap[16]; - struct kvm_host_map ghcb_map; - bool received_first_sipi; - - /* SEV-ES scratch area support */ -+ u64 sw_scratch; - void *ghcb_sa; - u32 ghcb_sa_len; - bool ghcb_sa_sync; -@@ -745,4 +747,28 @@ void sev_es_unmap_ghcb(struct vcpu_svm *svm); - void __svm_sev_es_vcpu_run(struct vcpu_svm *svm, bool spec_ctrl_intercepted); - void __svm_vcpu_run(struct vcpu_svm *svm, bool spec_ctrl_intercepted); - -+#define DEFINE_KVM_GHCB_ACCESSORS(field) \ -+ static __always_inline bool kvm_ghcb_##field##_is_valid(const struct vcpu_svm *svm) \ -+ { \ -+ return test_bit(GHCB_BITMAP_IDX(field), \ -+ (unsigned long *)&svm->sev_es.valid_bitmap); \ -+ } \ -+ \ -+ static __always_inline u64 kvm_ghcb_get_##field##_if_valid(struct vcpu_svm *svm, struct ghcb *ghcb) \ -+ { \ -+ return kvm_ghcb_##field##_is_valid(svm) ? ghcb->save.field : 0; \ -+ } \ -+ -+DEFINE_KVM_GHCB_ACCESSORS(cpl) -+DEFINE_KVM_GHCB_ACCESSORS(rax) -+DEFINE_KVM_GHCB_ACCESSORS(rcx) -+DEFINE_KVM_GHCB_ACCESSORS(rdx) -+DEFINE_KVM_GHCB_ACCESSORS(rbx) -+DEFINE_KVM_GHCB_ACCESSORS(rsi) -+DEFINE_KVM_GHCB_ACCESSORS(sw_exit_code) -+DEFINE_KVM_GHCB_ACCESSORS(sw_exit_info_1) -+DEFINE_KVM_GHCB_ACCESSORS(sw_exit_info_2) -+DEFINE_KVM_GHCB_ACCESSORS(sw_scratch) -+DEFINE_KVM_GHCB_ACCESSORS(xcr0) -+ - #endif diff --git a/drivers/acpi/apei/hest.c b/drivers/acpi/apei/hest.c index 6aef1ee5e1bd..8f146b1b4972 100644 --- a/drivers/acpi/apei/hest.c @@ -595,10 +263,10 @@ index c2c786eb95ab..4e3aa80cd5cf 100644 return ctx.rc; } diff --git a/drivers/acpi/resource.c b/drivers/acpi/resource.c -index 1dd8d5aebf67..0800a9d77558 100644 +index a4d9f149b48d..5c48b981758c 100644 --- a/drivers/acpi/resource.c +++ b/drivers/acpi/resource.c -@@ -470,6 +470,52 @@ static const struct dmi_system_id asus_laptop[] = { +@@ -470,6 +470,24 @@ static const struct dmi_system_id asus_laptop[] = { { } }; @@ -620,70 +288,42 @@ index 1dd8d5aebf67..0800a9d77558 100644 + { } +}; + -+static const struct dmi_system_id tongfang_gm_rg[] = { -+ { -+ .ident = "TongFang GMxRGxx/XMG CORE 15 (M22)/TUXEDO Stellaris 15 Gen4 AMD", -+ .matches = { -+ DMI_MATCH(DMI_BOARD_NAME, "GMxRGxx"), -+ }, -+ }, -+ { } -+}; -+ -+static const struct dmi_system_id maingear_laptop[] = { -+ { -+ .ident = "MAINGEAR Vector Pro 2 15", -+ .matches = { -+ DMI_MATCH(DMI_SYS_VENDOR, "Micro Electronics Inc"), -+ DMI_MATCH(DMI_PRODUCT_NAME, "MG-VCP2-15A3070T"), -+ } -+ }, -+ { -+ .ident = "MAINGEAR Vector Pro 2 17", -+ .matches = { -+ DMI_MATCH(DMI_SYS_VENDOR, "Micro Electronics Inc"), -+ DMI_MATCH(DMI_PRODUCT_NAME, "MG-VCP2-17A3070T"), -+ }, -+ }, -+ { } -+}; -+ - static const struct dmi_system_id lg_laptop[] = { + static const struct dmi_system_id tongfang_gm_rg[] = { { - .ident = "LG Electronics 17U70P", -@@ -493,6 +539,10 @@ struct irq_override_cmp { + .ident = "TongFang GMxRGxx/XMG CORE 15 (M22)/TUXEDO Stellaris 15 Gen4 AMD", +@@ -532,6 +550,8 @@ struct irq_override_cmp { static const struct irq_override_cmp override_table[] = { { medion_laptop, 1, ACPI_LEVEL_SENSITIVE, ACPI_ACTIVE_LOW, 0, false }, { asus_laptop, 1, ACPI_LEVEL_SENSITIVE, ACPI_ACTIVE_LOW, 0, false }, + { lenovo_laptop, 6, ACPI_LEVEL_SENSITIVE, ACPI_ACTIVE_LOW, 0, true }, + { lenovo_laptop, 10, ACPI_LEVEL_SENSITIVE, ACPI_ACTIVE_LOW, 0, true }, -+ { tongfang_gm_rg, 1, ACPI_EDGE_SENSITIVE, ACPI_ACTIVE_LOW, 1, true }, -+ { maingear_laptop, 1, ACPI_EDGE_SENSITIVE, ACPI_ACTIVE_LOW, 1, true }, - { lg_laptop, 1, ACPI_LEVEL_SENSITIVE, ACPI_ACTIVE_LOW, 0, false }, - }; - -@@ -512,6 +562,16 @@ static bool acpi_dev_irq_override(u32 gsi, u8 triggering, u8 polarity, - return entry->override; + { tongfang_gm_rg, 1, ACPI_EDGE_SENSITIVE, ACPI_ACTIVE_LOW, 1, true }, + { maingear_laptop, 1, ACPI_EDGE_SENSITIVE, ACPI_ACTIVE_LOW, 1, true }, + { pcspecialist_laptop, 1, ACPI_EDGE_SENSITIVE, ACPI_ACTIVE_LOW, 1, true }, +@@ -555,18 +575,6 @@ static bool acpi_dev_irq_override(u32 gsi, u8 triggering, u8 polarity, } -+#ifdef CONFIG_X86 -+ /* -+ * IRQ override isn't needed on modern AMD Zen systems and -+ * this override breaks active low IRQs on AMD Ryzen 6000 and -+ * newer systems. Skip it. -+ */ -+ if (boot_cpu_has(X86_FEATURE_ZEN)) -+ return false; -+#endif -+ - return true; - } - + #ifdef CONFIG_X86 +- /* +- * Always use the MADT override info, except for the i8042 PS/2 ctrl +- * IRQs (1 and 12). For these the DSDT IRQ settings should sometimes +- * be used otherwise PS/2 keyboards / mice will not work. +- */ +- if (gsi != 1 && gsi != 12) +- return true; +- +- /* If the override comes from an INT_SRC_OVR MADT entry, honor it. */ +- if (acpi_int_src_ovr[gsi]) +- return true; +- + /* + * IRQ override isn't needed on modern AMD Zen systems and + * this override breaks active low IRQs on AMD Ryzen 6000 and diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c -index 0c6f06abe3f4..f66b85b2c108 100644 +index c28c8d5ca0c8..618ebf3f9436 100644 --- a/drivers/acpi/scan.c +++ b/drivers/acpi/scan.c -@@ -1746,6 +1746,15 @@ static bool acpi_device_enumeration_by_parent(struct acpi_device *device) +@@ -1747,6 +1747,15 @@ static bool acpi_device_enumeration_by_parent(struct acpi_device *device) if (!acpi_match_device_ids(device, ignore_serial_bus_ids)) return false; @@ -1026,19 +666,6 @@ index 3c197db42c9d..16e4a2e90fae 100644 pd = sysfb_create_simplefb(si, &mode); if (!IS_ERR(pd)) goto unlock_mutex; -diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c -index 9bc86deac9e8..b885c39bd16b 100644 ---- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c -+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_mst_types.c -@@ -1320,7 +1320,7 @@ int compute_mst_dsc_configs_for_state(struct drm_atomic_state *state, - if (computed_streams[i]) - continue; - -- if (!res_pool->funcs->remove_stream_from_ctx || -+ if (res_pool->funcs->remove_stream_from_ctx && - res_pool->funcs->remove_stream_from_ctx(stream->ctx->dc, dc_state, stream) != DC_OK) - return -EINVAL; - diff --git a/drivers/hid/hid-rmi.c b/drivers/hid/hid-rmi.c index 84e7ba5314d3..efc96776f761 100644 --- a/drivers/hid/hid-rmi.c |