|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH RFC v13 13/20] pvh: Set up more PV stuff in set_info_guest
>>> On 23.09.13 at 18:49, George Dunlap <george.dunlap@xxxxxxxxxxxxx> wrote:
> @@ -699,6 +699,18 @@ int arch_set_info_guest(
> return -EINVAL;
> }
> }
> + else if ( is_pvh_vcpu(v) )
> + {
> + /* PVH 32bitfixme */
> + ASSERT(!compat);
> +
> + if ( c(ctrlreg[1]) || c(ldt_base) || c(ldt_ents) ||
> + c(user_regs.cs) || c(user_regs.ss) || c(user_regs.es) ||
> + c(user_regs.ds) || c(user_regs.fs) || c(user_regs.gs) ||
> + c.nat->gdt_ents || c.nat->fs_base || c.nat->gs_base_user )
> + return -EINVAL;
> +
> + }
>
> v->fpu_initialised = !!(flags & VGCF_I387_VALID);
>
> @@ -736,8 +748,24 @@ int arch_set_info_guest(
>
> if ( has_hvm_container_vcpu(v) )
> {
> - hvm_set_info_guest(v);
> - goto out;
> + hvm_set_info_guest(v, compat ? 0 : c.nat->gs_base_kernel);
I had pointed this out to Mukesh already: If you want to imply kernel
mode here, the checks above should verify that the kernel mode flag
is set in flags.
> + *
> + * Also note that when calling DOMCTL_setvcpucontext and VCPU_initialise
> + * for HVM and PVH guests, not all information in this structure is updated:
> + *
> + * - For HVM guests, the structures read include: fpu_ctxt (if
> + * VGCT_I387_VALID is set), flags, user_regs, debugreg[*]
> + *
> + * - PVH guests are the same as HVM guests, but additionally set cr3,
> + * and for 64-bit guests, gs_base_kernel. Additionally, the following
> + * entries must be 0: ctrlreg[1], ldt_base, ldg_ents, user_regs.{cs,
ldt_ents
> + * ss, es, ds, fs, gs), gdt_ents, fs_base, and gs_base_user. */
> struct vcpu_guest_context {
> /* FPU registers come first so they can be aligned for FXSAVE/FXRSTOR. */
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |