diff options
Diffstat (limited to '0033-IOMMU-x86-work-around-bogus-gcc12-warning-in-hvm_gsi.patch')
-rw-r--r-- | 0033-IOMMU-x86-work-around-bogus-gcc12-warning-in-hvm_gsi.patch | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/0033-IOMMU-x86-work-around-bogus-gcc12-warning-in-hvm_gsi.patch b/0033-IOMMU-x86-work-around-bogus-gcc12-warning-in-hvm_gsi.patch new file mode 100644 index 0000000..07f488d --- /dev/null +++ b/0033-IOMMU-x86-work-around-bogus-gcc12-warning-in-hvm_gsi.patch @@ -0,0 +1,52 @@ +From 460b08d6c6c16b3f32aa138e772b759ae02a4479 Mon Sep 17 00:00:00 2001 +From: Jan Beulich <jbeulich@suse.com> +Date: Tue, 12 Jul 2022 11:10:34 +0200 +Subject: [PATCH 33/51] IOMMU/x86: work around bogus gcc12 warning in + hvm_gsi_eoi() +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +As per [1] the expansion of the pirq_dpci() macro causes a -Waddress +controlled warning (enabled implicitly in our builds, if not by default) +tying the middle part of the involved conditional expression to the +surrounding boolean context. Work around this by introducing a local +inline function in the affected source file. + +Reported-by: Andrew Cooper <andrew.cooper3@citrix.com> +Signed-off-by: Jan Beulich <jbeulich@suse.com> +Acked-by: Roger Pau Monné <roger.pau@citrix.com> + +[1] https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102967 +master commit: 80ad8db8a4d9bb24952f0aea788ce6f47566fa76 +master date: 2022-06-15 10:19:32 +0200 +--- + xen/drivers/passthrough/x86/hvm.c | 12 ++++++++++++ + 1 file changed, 12 insertions(+) + +diff --git a/xen/drivers/passthrough/x86/hvm.c b/xen/drivers/passthrough/x86/hvm.c +index 0b37cd145b60..ba0f6c53d742 100644 +--- a/xen/drivers/passthrough/x86/hvm.c ++++ b/xen/drivers/passthrough/x86/hvm.c +@@ -25,6 +25,18 @@ + #include <asm/hvm/support.h> + #include <asm/io_apic.h> + ++/* ++ * Gcc12 takes issue with pirq_dpci() being used in boolean context (see gcc ++ * bug 102967). While we can't replace the macro definition in the header by an ++ * inline function, we can do so here. ++ */ ++static inline struct hvm_pirq_dpci *_pirq_dpci(struct pirq *pirq) ++{ ++ return pirq_dpci(pirq); ++} ++#undef pirq_dpci ++#define pirq_dpci(pirq) _pirq_dpci(pirq) ++ + static DEFINE_PER_CPU(struct list_head, dpci_list); + + /* +-- +2.35.1 + |