On 26.11.2021 13:33, Andrew Cooper wrote: > --- a/xen/arch/x86/hvm/dom0_build.c > +++ b/xen/arch/x86/hvm/dom0_build.c
Elsewhere in this file we have rc = map ? map_mmio_regions(d, _gfn(pfn), nr_pages, _mfn(pfn)) : unmap_mmio_regions(d, _gfn(pfn), nr_pages, _mfn(pfn)); which has been in this shape only as of commit e3b418ac4919 ("x86/pvh-dom0: Remove unnecessary function pointer call from modify_identity_mmio()"). Aren't we relying on the compiler not transforming this back into the earlier rc = (map ? map_mmio_regions : unmap_mmio_regions) (d, _gfn(pfn), nr_pages, _mfn(pfn)); ? And aren't we further relying on the compiler not transforming direct calls into indirect ones for other reasons (I recall Microsoft's compiler being pretty aggressive about this when the same function was called more than once in close succession, it at least certain past versions)? Is the widened effect of the annotation intended to also guarantee that indirect calls will not be produced by the compiler for any reason when the annotation is absent on a targeted function's declaration? I've made an attempt at auditing our code for further similar constructs, and I couldn't spot any. But the pattern isn't easy to grep for without producing a very large result set, so there's still the chance that I may have overlooked something. Jan