On 27.02.2024 14:24, Henry Wang wrote: > On 2/26/2024 4:25 PM, Jan Beulich wrote: >> On 26.02.2024 02:19, Henry Wang wrote: >>> --- a/xen/common/memory.c >>> +++ b/xen/common/memory.c >>> @@ -219,7 +219,7 @@ static void populate_physmap(struct memop_args *a) >>> } >>> else >>> { >>> - if ( is_domain_direct_mapped(d) ) >>> + if ( is_domain_direct_mapped(d) && !is_magic_gpfn(gpfn) ) >>> { >>> mfn = _mfn(gpfn); >>> >> I wonder whether is_domain_direct_mapped() shouldn't either be cloned >> into e.g. is_gfn_direct_mapped(d, gfn), or be adjusted in-place to gain >> such a (then optional) 2nd parameter. (Of course there again shouldn't be >> a need for every domain to define a stub is_domain_direct_mapped() - if >> not defined by an arch header, the stub can be supplied in a single >> central place.) > > Same here, it looks like you prefer the centralized > is_domain_direct_mapped() now, as we are having more archs. I can do the > clean-up when sending v2. Just out of curiosity, do you think it is a > good practice to place the is_domain_direct_mapped() implementation in > xen/domain.h with proper arch #ifdefs?
arch #ifdefs? I'd like to avoid such, if at all possible. Generic fallbacks generally ought to key their conditionals to the very identifier not (already) being defined. Jan