[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH for-4.16] x86/passthrough: Fix hvm_gsi_eoi() build with GCC 12
Roger Pau Monné writes ("Re: [PATCH for-4.16] x86/passthrough: Fix hvm_gsi_eoi() build with GCC 12"): > I honestly don't think we expect any property of pirq_dpci, it just > tells whether a pirq has a dpci associated with it or not. As I said > on my previous replies I think GCC is not correct in doing the check > after expanding the macro. > > The relation between a pirq and it's dpci is an implementation detail > that could change at any point, and hence the complain by GCC would no > longer be true. That's exactly why we use a macro to get the dpci out > of a pirq, because how that's obtained is opaque to the caller. > > So while it's true that a NULL pirq will always result in a NULL dpci, > a non-NULL pirq should not be assumed to result in a non-NULL dpci, > which is inferred by GCC by expanding the macro. > > In this specific case I think the change is fine for two reasons: > > * The pirq is obtained from the domain struct. > * The domain is known to be HVM because the only caller of > hvm_gsi_eoi is hvm_dpci_eoi which in > turn is only called by the vIO-APIC and the vPIC emulation code. > > I dislike of GCC doing those checks to expanded macros. In this case I > think the change is fine due to my reasoning above. > > It might be appropriate to switch pirq_dpci to: > > #define pirq_dpci(d, pirq) \ > ((is_hvm_domain(d) && (pirq)) ? &(pirq)->arch.hvm.dpci : NULL) > > Or to an inline helper. Anyway, I don't think there are any functional implications. Release-Acked-by: Ian Jackson <iwj@xxxxxxxxxxxxxx>
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |