[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [PATCH v2 1/3] x86/mem_sharing: option to enforce fork starting with empty p2m
On 29.03.2022 16:03, Tamas K Lengyel wrote: > Add option to the fork memop to enforce a start with an empty p2m. > Pre-populating special pages to the fork tend to be necessary only when > setting > up forks to be fully functional with a toolstack or if the fork makes use of > them in some way. For short-lived forks these pages are optional and starting > with an empty p2m has advantages both in terms of reset performance as well as > easier reasoning about the state of the fork after creation. I'm afraid I don't consider this enough of an explanation: Why would these page be optional? Where does the apriori knowledge come from that the guest wouldn't manage to access the vCPU info pages or the APIC access one? > --- a/xen/arch/x86/include/asm/hvm/domain.h > +++ b/xen/arch/x86/include/asm/hvm/domain.h > @@ -31,7 +31,9 @@ > #ifdef CONFIG_MEM_SHARING > struct mem_sharing_domain > { > - bool enabled, block_interrupts; > + bool enabled; > + bool block_interrupts; > + bool empty_p2m; While the name of the field is perhaps fine as is, it would be helpful to have a comment here clarifying that this is only about the guest's initial and reset state; this specifically does not indicate the p2m has to remain empty (aiui). > @@ -1856,7 +1860,13 @@ static int fork(struct domain *cd, struct domain *d) > if ( (rc = bring_up_vcpus(cd, d)) ) > goto done; > > - rc = copy_settings(cd, d); > + if ( !(rc = copy_settings(cd, d, empty_p2m)) ) > + { > + cd->arch.hvm.mem_sharing.block_interrupts = block_interrupts; > + > + if ( (cd->arch.hvm.mem_sharing.empty_p2m = empty_p2m) ) Is there a reason you don't do the assignment earlier, thus avoiding the need to pass around the extra function argument? > --- a/xen/include/public/memory.h > +++ b/xen/include/public/memory.h > @@ -543,10 +543,10 @@ struct xen_mem_sharing_op { > } debug; > struct mem_sharing_op_fork { /* OP_FORK */ > domid_t parent_domain; /* IN: parent's domain id */ > -/* Only makes sense for short-lived forks */ > +/* These flags only makes sense for short-lived forks */ Nit: s/makes/make/. Jan
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |