[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 6/7] xen/arm: Setup virtual paging for secondary CPUs in non-boot scenario



On Wed, 18 Apr 2018, Julien Grall wrote:
> On 18/04/18 11:45, Mirela Simonovic wrote:
> > On Tue, Apr 17, 2018 at 4:11 PM, Julien Grall <julien.grall@xxxxxxx> wrote:
> > > 
> > > 
> > > On 17/04/18 13:54, Mirela Simonovic wrote:
> > > > 
> > > > Hi Julien,
> > > 
> > > 
> > > Hi,
> > > 
> > > > 
> > > > On Wed, Apr 11, 2018 at 5:11 PM, Julien Grall <julien.grall@xxxxxxx>
> > > > wrote:
> > > > > 
> > > > > Hi,
> > > > > 
> > > > > On 11/04/18 14:19, Mirela Simonovic wrote:
> > > > > > 
> > > > > > 
> > > > > > In existing code the paging for secondary CPUs is setup only in boot
> > > > > > flow.
> > > > > > The setup is triggered from start_xen function after all CPUs are
> > > > > > brought
> > > > > > online. In other words, the initialization of VTCR_EL2 register is
> > > > > > done
> > > > > > out of the cpu_up/start_secondary control flow. However, the cpu_up
> > > > > > flow
> > > > > > should be self-contained - it should fully initialize a secondary
> > > > > > CPU,
> > > > > > because the cpu_up is used not only to bring a secondary CPU online
> > > > > > on
> > > > > > boot, but also to hotplug a CPU during the system resume.
> > > > > > With this patch the setting of paging is triggered from
> > > > > > start_secondary
> > > > > > function if the current system state is not boot. This way, the
> > > > > > paging
> > > > > > will be setup in non-boot scenarios, while the setup in boot
> > > > > > scenario
> > > > > > remains unchanged.
> > > > > 
> > > > > 
> > > > > 
> > > > > I am afraid that this is not correct. You can't assume that value
> > > > > chosen
> > > > > for
> > > > > VTCR by Xen at boot will fit this new CPU. So you have to check it is
> > > > > fine
> > > > > or park the CPU if there are any issue.
> > > > > 
> > > > 
> > > > This is not a new CPU. This CPU already went through its boot sequence
> > > > and it reached the resume point because it does fit the value chosen
> > > > for VTCR by Xen.
> > > > If it wouldn't fit the chosen value for VTCR it would be parked so it
> > > > wouldn't participate in suspend/resume. Please let me know if I
> > > > misunderstood your comment.
> > > 
> > > 
> > > This is not a new CPU for your use case. However your commit message
> > > speak about "non-boot" CPU bring-up. So for me this is more than
> > > suspend/resume, it is about bringing-up CPU at any time.
> > > 
> > > As those CPUs can't participate to the decision (it is too late), you
> > > need to make sure the VTCR will fit on that CPU.
> > > 
> > > > 
> > > > AFAIU the value chosen by Xen for VTCR config has to be common for all
> > > > online CPUs. Since this value is also used in the resume path I
> > > > suggest to make global (static in the p2m.c) the 'val' variable which
> > > > is currently local in setup_virt_paging() and passed as argument to
> > > > setup_virt_paging_one(). Then setup_virt_paging_one() would not
> > > > receive an argument.
> > > > I need to access this value on resume, so I would call
> > > > setup_virt_paging_one() without argument from start_secondary() if the
> > > > system state is not boot.
> > > > This seems to me a bit cleaner compared to what I submitted in this
> > > > patch, but fundamentally the functionality is the same.
> > > 
> > > 
> > > You don't need to introduce a static variable it. I believe you can
> > > re-create it based on the information we already have in global
> > > variables. So what I would do is moving the creation of vtcr value in
> > > that function.
> > 
> > Using this approach each CPU will need to recalculate the value which
> > is already known prior to executing the function.
> > I believe this is sub-optimal and contrary to existing implementation
> > where only one CPU performs the calculation.
> 
> The implementation usually evolves with the requirements. In the existing
> implementation, the value could be calculated on a single pCPU and then
> scratched afterwards.
> 
> > Is there any benefit of recalculating the value? > Is there any disadvantage
> > of remembering the value into a static 
> variable?
> 
> I know that it is only a 32-bit value, but I would rather avoid spreading
> static variable when a value can be recompute in a few steps with what we
> have.
> 
> Stefano do you have any opinions?

Either way it is of very little consequence. I would let Mirela do as
she prefer.

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.