qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH for-2.9] pseries: Enforce homogeneous threads-pe


From: Bharata B Rao
Subject: Re: [Qemu-devel] [PATCH for-2.9] pseries: Enforce homogeneous threads-per-core
Date: Fri, 31 Mar 2017 11:04:55 +0530

On Fri, Mar 31, 2017 at 10:21 AM, David Gibson <address@hidden>
wrote:

> For reasons that may be useful in future, CPU core objects, as used on the
> pseries machine type have their own nr-threads property, potentially
> allowing cores with different numbers of threads in the same system.
>

I remember we retained this flexibility to support heterogenous systems in
future ? I think we can go with this enforcement now and relax it later if
we ever reach there.


>
> If the user/management uses the values specified in query-hotpluggable-cpus
> as they're expected to do, this will never matter in pratice.  But that's
> not actually enforced - it's possible to manually specify a core with
> a different number of threads from that in -smp.  That will confuse the
> platform - most immediately, this can be used to create a CPU thread with
> index above max_cpus which leads to an assertion failure in
> spapr_cpu_core_realize().
>
> For now, enforce that all cores must have the same, standard, number of
> threads.  While we're at it, also enforce that the core ids are correctly
> aligned based on that number of threads.
>
> Signed-off-by: David Gibson <address@hidden>
> ---
>  hw/ppc/spapr_cpu_core.c | 12 ++++++++++++
>  1 file changed, 12 insertions(+)
>
> diff --git a/hw/ppc/spapr_cpu_core.c b/hw/ppc/spapr_cpu_core.c
> index 6883f09..935ee62 100644
> --- a/hw/ppc/spapr_cpu_core.c
> +++ b/hw/ppc/spapr_cpu_core.c
> @@ -167,6 +167,18 @@ static void spapr_cpu_core_realize(DeviceState *dev,
> Error **errp)
>      void *obj;
>      int i, j;
>
> +    if (cc->nr_threads != smp_threads) {
> +        error_setg(errp,
> +                   "Invalid nr-threads=%d of CPU[core-id: %d], must be
> %d",
> +                   cc->nr_threads, cc->core_id, smp_threads);
> +        return;
> +    }
>

The above check should move to pre_plug handler.


> +    if ((cc->core_id % smp_threads) != 0) {
> +        error_setg(errp, "Invalid CPU core-id=%d, must be a multiple of
> %d",
> +                   cc->core_id, smp_threads);
> +        return;
> +    }
>

Not sure when you will hit this as the same check is already  present in
pre_plug handler.

Regards,
Bharata.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]