[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] RFC: very initial PVH design document
On Fri, 12 Sep 2014 16:38:20 -0400 Konrad Rzeszutek Wilk <konrad.wilk@xxxxxxxxxx> wrote: > > ## SMP discover and bring up ## > > > > The process of bringing up secondary CPUs is obviously different > > from native, since PVH doesn't have a local APIC. The first thing > > to do is to figure out how many vCPUs the guest has. This is done > > using the `VCPUOP_is_up` hypercall, using for example this simple > > loop: > > > > for (i = 0; i < MAXCPU; i++) { > > ret = HYPERVISOR_vcpu_op(VCPUOP_is_up, i, NULL); > > if (ret >= 0) > > /* vCPU#i is present */ > > } > > > > Note than when running as Dom0, the ACPI tables might report a > > different number of available CPUs. This is because the value on > > the ACPI tables is the number of physical CPUs the host has, and it > > might bear no resemblance with the number of vCPUs Dom0 actually > > has so it should be ignored. > > > > In order to bring up the secondary vCPUs they must be configured > > first. This is achieved using the `VCPUOP_initialise` hypercall. A > > valid context has to be passed to the vCPU in order to boot. The > > relevant fields for PVH guests are the following: > > > > * `flags`: contains VGCF_* flags (see `arch-x86/xen.h` public > > header). > > * `user_regs`: struct that contains the register values that will > > be set on the vCPU before booting. The most relevant ones are `rip` > > and `rsp` in order to set the start address and the stack. > > The OS can use 'rdi' and 'rsi' for their own purpose. > > [Any other ones that are free to be used?] > They are all. So, I would phrase it as: `user_regs`: struct that contains the register values that will be set on the vCPU before booting. All GPRs are available to be set, however, the most relevant ones are `rip` and `rsp` in order to set the start address and the stack. Please note, all selectors must be null. In retrospect, maybe I should have tried harder to create a union here, or even a new subcall for pvh, VCPUOP_initialise_pvh with it's own struct. Anyways... thanks, Mukesh _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |