From 34cc43fe953466344056ab95cc054b008ffd1d6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Sat, 11 Jun 2022 01:45:05 +0200 Subject: [PATCH] Drop patch already included upstream --- 0001-xen-fix-is_xen_pmu.patch | 122 ---------------------------------- kernel.spec.in | 1 - 2 files changed, 123 deletions(-) delete mode 100644 0001-xen-fix-is_xen_pmu.patch diff --git a/0001-xen-fix-is_xen_pmu.patch b/0001-xen-fix-is_xen_pmu.patch deleted file mode 100644 index b55391ff..00000000 --- a/0001-xen-fix-is_xen_pmu.patch +++ /dev/null @@ -1,122 +0,0 @@ -From de2ae403b4c0e79a3410e63bc448542fbb9f9bfc Mon Sep 17 00:00:00 2001 -From: Juergen Gross -Date: Fri, 25 Mar 2022 15:20:02 +0100 -Subject: [PATCH] xen: fix is_xen_pmu() -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -is_xen_pmu() is taking the cpu number as parameter, but it is not using -it. Instead it just tests whether the Xen PMU initialization on the -current cpu did succeed. As this test is done by checking a percpu -pointer, preemption needs to be disabled in order to avoid switching -the cpu while doing the test. While resuming from suspend() this seems -not to be the case: - -[ 88.082751] ACPI: PM: Low-level resume complete -[ 88.087933] ACPI: EC: EC started -[ 88.091464] ACPI: PM: Restoring platform NVS memory -[ 88.097166] xen_acpi_processor: Uploading Xen processor PM info -[ 88.103850] Enabling non-boot CPUs ... -[ 88.108128] installing Xen timer for CPU 1 -[ 88.112763] BUG: using smp_processor_id() in preemptible [00000000] code: systemd-sleep/7138 -[ 88.122256] caller is is_xen_pmu+0x12/0x30 -[ 88.126937] CPU: 0 PID: 7138 Comm: systemd-sleep Tainted: G W 5.16.13-2.fc32.qubes.x86_64 #1 -[ 88.137939] Hardware name: Star Labs StarBook/StarBook, BIOS 7.97 03/21/2022 -[ 88.145930] Call Trace: -[ 88.148757] -[ 88.151193] dump_stack_lvl+0x48/0x5e -[ 88.155381] check_preemption_disabled+0xde/0xe0 -[ 88.160641] is_xen_pmu+0x12/0x30 -[ 88.164441] xen_smp_intr_init_pv+0x75/0x100 - -Fix that by replacing is_xen_pmu() by a simple boolean variable which -reflects the Xen PMU initialization state on cpu 0. - -Modify xen_pmu_init() to return early in case it is being called for a -cpu other than cpu 0 and the boolean variable not being set. - -Fixes: bf6dfb154d93 ("xen/PMU: PMU emulation code") -Reported-by: Marek Marczykowski-Górecki -Signed-off-by: Juergen Gross -Reviewed-by: Boris Ostrovsky -Link: https://lore.kernel.org/r/20220325142002.31789-1-jgross@suse.com -Signed-off-by: Boris Ostrovsky ---- - arch/x86/xen/pmu.c | 10 ++++------ - arch/x86/xen/pmu.h | 3 ++- - arch/x86/xen/smp_pv.c | 2 +- - 3 files changed, 7 insertions(+), 8 deletions(-) - -diff --git a/arch/x86/xen/pmu.c b/arch/x86/xen/pmu.c -index 89dd6b1708b0..21ecbe754cb2 100644 ---- a/arch/x86/xen/pmu.c -+++ b/arch/x86/xen/pmu.c -@@ -506,10 +506,7 @@ irqreturn_t xen_pmu_irq_handler(int irq, void *dev_id) - return ret; - } - --bool is_xen_pmu(int cpu) --{ -- return (get_xenpmu_data() != NULL); --} -+bool is_xen_pmu; - - void xen_pmu_init(int cpu) - { -@@ -520,7 +517,7 @@ void xen_pmu_init(int cpu) - - BUILD_BUG_ON(sizeof(struct xen_pmu_data) > PAGE_SIZE); - -- if (xen_hvm_domain()) -+ if (xen_hvm_domain() || (cpu != 0 && !is_xen_pmu)) - return; - - xenpmu_data = (struct xen_pmu_data *)get_zeroed_page(GFP_KERNEL); -@@ -541,7 +538,8 @@ void xen_pmu_init(int cpu) - per_cpu(xenpmu_shared, cpu).xenpmu_data = xenpmu_data; - per_cpu(xenpmu_shared, cpu).flags = 0; - -- if (cpu == 0) { -+ if (!is_xen_pmu) { -+ is_xen_pmu = true; - perf_register_guest_info_callbacks(&xen_guest_cbs); - xen_pmu_arch_init(); - } -diff --git a/arch/x86/xen/pmu.h b/arch/x86/xen/pmu.h -index 0e83a160589b..65c58894fc79 100644 ---- a/arch/x86/xen/pmu.h -+++ b/arch/x86/xen/pmu.h -@@ -4,6 +4,8 @@ - - #include - -+extern bool is_xen_pmu; -+ - irqreturn_t xen_pmu_irq_handler(int irq, void *dev_id); - #ifdef CONFIG_XEN_HAVE_VPMU - void xen_pmu_init(int cpu); -@@ -12,7 +14,6 @@ void xen_pmu_finish(int cpu); - static inline void xen_pmu_init(int cpu) {} - static inline void xen_pmu_finish(int cpu) {} - #endif --bool is_xen_pmu(int cpu); - bool pmu_msr_read(unsigned int msr, uint64_t *val, int *err); - bool pmu_msr_write(unsigned int msr, uint32_t low, uint32_t high, int *err); - int pmu_apic_update(uint32_t reg); -diff --git a/arch/x86/xen/smp_pv.c b/arch/x86/xen/smp_pv.c -index 4a6019238ee7..688aa8b6ae29 100644 ---- a/arch/x86/xen/smp_pv.c -+++ b/arch/x86/xen/smp_pv.c -@@ -129,7 +129,7 @@ int xen_smp_intr_init_pv(unsigned int cpu) - per_cpu(xen_irq_work, cpu).irq = rc; - per_cpu(xen_irq_work, cpu).name = callfunc_name; - -- if (is_xen_pmu(cpu)) { -+ if (is_xen_pmu) { - pmu_name = kasprintf(GFP_KERNEL, "pmu%d", cpu); - rc = bind_virq_to_irqhandler(VIRQ_XENPMU, cpu, - xen_pmu_irq_handler, --- -2.35.1 - diff --git a/kernel.spec.in b/kernel.spec.in index f659ef42..9cad270f 100644 --- a/kernel.spec.in +++ b/kernel.spec.in @@ -133,7 +133,6 @@ Patch5: 0006-block-add-no_part_scan-module-parameter.patch Patch12: 0013-xen-pcifront-pciback-Update-pciif.h-with-err-and-res.patch Patch16: 0001-usbip-tweak-clear-halt-with-simple-reset.patch Patch17: 0001-xen-don-t-hang-when-resuming-PCI-device.patch -Patch18: 0001-xen-fix-is_xen_pmu.patch %description Qubes Dom0 kernel.