|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v5 8/9] xen/x86: Setup PVHv2 Dom0 CPUs
>>> On 19.01.17 at 18:29, <roger.pau@xxxxxxxxxx> wrote:
> @@ -2096,6 +2097,56 @@ static int __init pvh_load_kernel(struct domain *d,
> const module_t *image,
> return 0;
> }
>
> +static int __init pvh_setup_cpus(struct domain *d, paddr_t entry,
> + paddr_t start_info)
> +{
> + vcpu_hvm_context_t cpu_ctx;
> + struct vcpu *v = d->vcpu[0];
> + int cpu, i, rc;
i and cpu want to be unsigned int.
> + cpu = v->processor;
> + for ( i = 1; i < d->max_vcpus; i++ )
> + {
> + cpu = cpumask_cycle(cpu, &dom0_cpus);
> + setup_dom0_vcpu(d, i, cpu);
> + }
> +
> + memset(&cpu_ctx, 0, sizeof(cpu_ctx));
Perhaps better (and shorter) to use an initializer again?
> + cpu_ctx.mode = VCPU_HVM_MODE_32B;
> +
> + cpu_ctx.cpu_regs.x86_32.ebx = start_info;
> + cpu_ctx.cpu_regs.x86_32.eip = entry;
> + cpu_ctx.cpu_regs.x86_32.cr0 = X86_CR0_PE | X86_CR0_ET;
> +
> + cpu_ctx.cpu_regs.x86_32.cs_limit = ~0u;
> + cpu_ctx.cpu_regs.x86_32.ds_limit = ~0u;
> + cpu_ctx.cpu_regs.x86_32.ss_limit = ~0u;
> + cpu_ctx.cpu_regs.x86_32.tr_limit = 0x67;
> + cpu_ctx.cpu_regs.x86_32.cs_ar = 0xc9b;
> + cpu_ctx.cpu_regs.x86_32.ds_ar = 0xc93;
> + cpu_ctx.cpu_regs.x86_32.ss_ar = 0xc93;
> + cpu_ctx.cpu_regs.x86_32.tr_ar = 0x8b;
In fact, all of this could become part of the initializer too as it looks.
> @@ -2124,6 +2175,15 @@ static int __init construct_dom0_pvh(struct domain *d,
> const module_t *image,
> return rc;
> }
>
> + rc = pvh_setup_cpus(d, entry, start_info);
> + if ( rc )
> + {
> + printk("Failed to setup Dom0 CPUs: %d\n", rc);
> + return rc;
> + }
> +
> + clear_bit(_VPF_down, &d->vcpu[0]->pause_flags);
Would you mind moving this into the function (where you then can
use just v)?
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |