[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 3/7] x86: shrink struct arch_{vcpu,domain} when !HVM
On 07.08.2020 19:14, Andrew Cooper wrote: > On 07/08/2020 12:33, Jan Beulich wrote: >> While this won't affect overall memory overhead (struct vcpu as well as >> struct domain get allocated as single pages) nor code size (the offsets >> into the base structures are too large to be representable as signed 8- >> bit displacements), it'll allow the tail of struct pv_{domain,vcpu} to >> share a cache line with subsequent struct arch_{domain,vcpu} fields. >> >> Signed-off-by: Jan Beulich <jbeulich@xxxxxxxx> >> --- >> RFC: There is a risk associated with this: If we still have code >> somewhere accessing the HVM parts of the structures without a prior >> type check of the guest, this going to end up worse than the so far >> not uncommon case of the access simply going to space unused by PV. >> We may therefore want to consider whether to further restrict when >> this conversion to union gets done. >> And of course there's also the risk of future compilers complaining >> about this abuse of unions. But this is limited to code that's dead >> in !HVM configs, so only an apparent problem. >> >> --- a/xen/include/asm-x86/hvm/domain.h >> +++ b/xen/include/asm-x86/hvm/domain.h >> @@ -99,7 +99,13 @@ struct hvm_pi_ops { >> >> #define MAX_NR_IOREQ_SERVERS 8 >> >> -struct hvm_domain { >> +typedef >> +#ifdef CONFIG_HVM >> +struct >> +#else >> +union >> +#endif >> +hvm_domain { >> /* Guest page range used for non-default ioreq servers */ >> struct { >> unsigned long base; >> @@ -203,7 +209,7 @@ struct hvm_domain { >> #ifdef CONFIG_MEM_SHARING >> struct mem_sharing_domain mem_sharing; >> #endif >> -}; >> +} hvm_domain_t; > > Honestly, I'd say no to this patch even it resulted in a 100x speedup, > because I am totally lost for words about this construct, and the effect > it comprehensibility of our code. Okay - away it goes. Jan
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |