On 01/01/14 04:35, Konrad Rzeszutek Wilk wrote:
> From: Mukesh Rathor <mukesh.rat...@oracle.com>
> 
> In the bootup code for PVH we can trap cpuid via vmexit, so don't
> need to use emulated prefix call. We also check for vector callback
> early on, as it is a required feature. PVH also runs at default kernel
> IOPL.
> 
> Finally, pure PV settings are moved to a separate function that are
> only called for pure PV, ie, pv with pvmmu. They are also #ifdef
> with CONFIG_XEN_PVMMU.
[...]
> @@ -331,12 +333,15 @@ static void xen_cpuid(unsigned int *ax, unsigned int 
> *bx,
>               break;
>       }
>  
> -     asm(XEN_EMULATE_PREFIX "cpuid"
> -             : "=a" (*ax),
> -               "=b" (*bx),
> -               "=c" (*cx),
> -               "=d" (*dx)
> -             : "0" (*ax), "2" (*cx));
> +     if (xen_pvh_domain())
> +             native_cpuid(ax, bx, cx, dx);
> +     else
> +             asm(XEN_EMULATE_PREFIX "cpuid"
> +                     : "=a" (*ax),
> +                     "=b" (*bx),
> +                     "=c" (*cx),
> +                     "=d" (*dx)
> +                     : "0" (*ax), "2" (*cx));

For this one off cpuid call it seems preferrable to me to use the
emulate prefix rather than diverge from PV.

> @@ -1431,13 +1449,18 @@ asmlinkage void __init xen_start_kernel(void)
>  
>       xen_domain_type = XEN_PV_DOMAIN;
>  
> +     xen_setup_features();
> +     xen_pvh_early_guest_init();
>       xen_setup_machphys_mapping();
>  
>       /* Install Xen paravirt ops */
>       pv_info = xen_info;
>       pv_init_ops = xen_init_ops;
> -     pv_cpu_ops = xen_cpu_ops;
>       pv_apic_ops = xen_apic_ops;
> +     if (xen_pvh_domain())
> +             pv_cpu_ops.cpuid = xen_cpuid;
> +     else
> +             pv_cpu_ops = xen_cpu_ops;

If cpuid is trapped for PVH guests why does PVH need non-native cpuid op?

David
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to