[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [PATCH v2] ppc: introduce CPUPPCState::cpu_dt_id
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-ppc] [PATCH v2] ppc: introduce CPUPPCState::cpu_dt_id |
Date: |
Mon, 04 Nov 2013 11:00:10 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130923 Thunderbird/17.0.9 |
Il 01/11/2013 04:21, Alexey Kardashevskiy ha scritto:
> Normally CPUState::cpu_index is used to pick the right CPU for various
> operations. However default consecutive numbering does not always work
> for POWERPC.
>
> For example, on POWER7 (which supports 4 threads per core),
> "-smp 8,threads=4" should create CPUs with indexes 0,1,2,3,4,5,6,7 and
> "-smp 8,threads=1" should create CPUs with indexes 0,4,8,12,16,20,24,28.
>
> These indexes are reflected in /proc/device-tree/cpus/PowerPC,address@hidden
> and used to call KVM VCPU's ioctls. In order to achieve this,
> kvmppc_fixup_cpu() was introduced. Roughly speaking, it multiplies
> cpu_index by the number of threads per core.
>
> This approach has disadvantages such as:
> 1. NUMA configuration stays broken after the fixup;
> 2. CPU-related commands from QEMU Monitor do not work properly as
> the accept fixed CPU indexes and the user does not really know
> what they are after fixup as the number of threads per core changes
> between CPU versions and via QEMU command line.
>
> This introduces a new @cpu_dt_id field in the CPUPPCState struct which
> is set from @cpu_index by default but can be fixed later to the value
> which a hypervisor can accept. This also introduces two POWERPC-arch
> specific functions:
> 1. int ppc_get_vcpu_dt_id(CPUState *cs) - returns a device-tree ID
> for a CPU;
> 2. CPUState *ppc_get_vcpu_by_dt_id(int cpu_dt_id) - finds CPUState by
> a device-tree CPU ID.
>
> This uses the new functions to:
> 1. fix emulated XICS hypercall handlers as they receive fixed CPU indexes;
> 2. fix XICS-KVM to enable in-kernel XICS on right CPU;
> 3. compose correct device-tree.
>
> This removes @cpu_index fixup as @cpu_dt_id is used instead so QEMU monitor
> can accept command-line CPU indexes again.
>
> Cc: Badari Pulavarty <address@hidden>
> Cc: Paul Mackerras <address@hidden>
> Cc: David Gibson <address@hidden>
> Cc: Benjamin Herrenschmidt <address@hidden>
> Cc: Paolo Bonzini <address@hidden>
> Signed-off-by: Alexey Kardashevskiy <address@hidden>
> ---
> Changes:
> v2:
> * added PPC-specific ppc_get_vcpu_dt_id() and ppc_get_vcpu_by_dt_id()
> * fixed kvm_arch_vcpu_id() to use ppc_get_vcpu_dt_id()
> * fixed emulated XICS
> * removed kvm_arch_vcpu_id() stub for non-KVM case
Not having non-PPC code in the patch is definitely a good sign!
Acked-by: Paolo Bonzini <address@hidden>
- Re: [Qemu-ppc] [PATCH v2] ppc: introduce CPUPPCState::cpu_dt_id,
Paolo Bonzini <=