From: Ian Campbell <ian.campbell@citrix.com>
To: Chen Baozi <cbz@baozis.org>
Cc: Julien Grall <julien.grall@citrix.com>,
xen-devel@lists.xenproject.org, Chen Baozi <baozich@gmail.com>
Subject: Re: [PATCH V6 02/10] xen/arm: Add functions of mapping between vCPUID and virtual affinity
Date: Fri, 5 Jun 2015 16:54:26 +0100 [thread overview]
Message-ID: <1433519666.7108.326.camel@citrix.com> (raw)
In-Reply-To: <1433163388-16970-3-git-send-email-cbz@baozis.org>
On Mon, 2015-06-01 at 20:56 +0800, Chen Baozi wrote:
> From: Chen Baozi <baozich@gmail.com>
>
> GICv3 restricts that the maximum number of CPUs in affinity 0 (one
> cluster) is 16.
Please add the reference to why this is.
> That is to say the upper 4 bits of affinity 0 is unused.
> Current implementation considers that AFF0 is equal to vCPUID, which
> makes all vCPUs in one cluster, limiting its number to 16. If we would
> like to support more than 16 number of vCPU in one guest, we need to
> make use of AFF1. Considering the unused upper 4 bits, we need to create
> a pair of functions mapping the vCPUID and virtual affinity.
>
> Signed-off-by: Chen Baozi <baozich@gmail.com>
> Reviewed-by: Julien Grall <julien.grall@citrix.com>
> ---
> xen/include/asm-arm/domain.h | 41 +++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 41 insertions(+)
>
> diff --git a/xen/include/asm-arm/domain.h b/xen/include/asm-arm/domain.h
> index 75b17af..b7b5cd2 100644
> --- a/xen/include/asm-arm/domain.h
> +++ b/xen/include/asm-arm/domain.h
> @@ -266,6 +266,47 @@ static inline unsigned int domain_max_vcpus(const struct domain *d)
> return MAX_VIRT_CPUS;
> }
>
> +/*
> + * Due to the restriction of GICv3, the number of vCPUs in AFF0 is
> + * limited to 16,
Actually, maybe this is a better place to say why this is than the
commit message (or do both).
> thus only the first 4 bits of AFF0 are legal. We will
> + * use the first 2 affinity levels here, expanding the number of vCPU up
> + * to 4096 (16*256), which is more than 128 PEs that GIC-500 supports.
^the
(although I'm not sure a reference to GIC-500 here is all that useful)
> + * Since we don't save information of vCPU's topology (affinity) in
> + * vMPIDR at the moment, we map the vcpuid to the vMPIDR linearly.
> + *
> + * XXX: We may have multi-threading or virtual cluster information in
> + * the future.
We may, but I don't think that's worth mentioning here and now.
The code itself looks good, thanks.
> + */
> +static inline unsigned int vaffinity_to_vcpuid(register_t vaff)
> +{
> + unsigned int vcpuid;
> +
> + vaff &= MPIDR_HWID_MASK;
> +
> + vcpuid = MPIDR_AFFINITY_LEVEL(vaff, 0);
> + vcpuid |= MPIDR_AFFINITY_LEVEL(vaff, 1) << 4;
> +
> + return vcpuid;
> +}
> +
> +static inline register_t vcpuid_to_vaffinity(unsigned int vcpuid)
> +{
> + register_t vaff;
> +
> + /*
> + * Right now only AFF0 and AFF1 are supported in virtual affinity.
> + * Since only the first 4 bits in AFF0 are used in GICv3, the
> + * available bits are 12 (4+8).
> + */
> + BUILD_BUG_ON(!(MAX_VIRT_CPUS < ((1 << 12))));
> +
> + vaff = (vcpuid & 0x0f) << MPIDR_LEVEL_SHIFT(0);
> + vaff |= ((vcpuid >> 4) & MPIDR_LEVEL_MASK) << MPIDR_LEVEL_SHIFT(1);
> +
> + return vaff;
> +}
> +
> #endif /* __ASM_DOMAIN_H__ */
>
> /*
next prev parent reply other threads:[~2015-06-05 15:54 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-01 12:56 [PATCH V6 00/10] Support more than 8 vcpus on arm64 with GICv3 Chen Baozi
2015-06-01 12:56 ` [PATCH V6 01/10] xen/arm: gic-v3: Increase the size of GICR in address space for guest Chen Baozi
2015-06-05 15:49 ` Ian Campbell
2015-06-05 16:04 ` Julien Grall
2015-06-05 16:31 ` Ian Campbell
2015-06-05 18:07 ` Julien Grall
2015-06-01 12:56 ` [PATCH V6 02/10] xen/arm: Add functions of mapping between vCPUID and virtual affinity Chen Baozi
2015-06-05 15:54 ` Ian Campbell [this message]
2015-06-01 12:56 ` [PATCH V6 03/10] xen/arm: Use the new functions for vCPUID/vaffinity transformation Chen Baozi
2015-06-05 15:56 ` Ian Campbell
2015-06-05 18:18 ` Julien Grall
2015-06-08 10:05 ` Ian Campbell
2015-06-08 13:00 ` Julien Grall
2015-06-01 12:56 ` [PATCH V6 04/10] xen/arm: Use cpumask_t type for vcpu_mask in vgic_to_sgi Chen Baozi
2015-06-05 16:05 ` Ian Campbell
2015-06-10 10:21 ` Chen Baozi
2015-06-10 10:27 ` Ian Campbell
2015-06-01 12:56 ` [PATCH V6 05/10] xen/arm64: gicv3: Use AFF1 when translating ICC_SGI1R_EL1 to cpumask Chen Baozi
2015-06-05 16:09 ` Ian Campbell
2015-06-05 18:25 ` Julien Grall
2015-06-08 10:06 ` Ian Campbell
2015-06-01 12:56 ` [PATCH V6 06/10] tools/libxl: Set 'reg' of cpu node equal to MPIDR affinity for domU Chen Baozi
2015-06-05 16:11 ` Ian Campbell
2015-06-05 16:12 ` Ian Campbell
2015-06-01 12:56 ` [PATCH V6 07/10] xen/arm: Set 'reg' of cpu node for dom0 to match MPIDR's affinity Chen Baozi
2015-06-05 16:13 ` Ian Campbell
2015-06-01 12:56 ` [PATCH V6 08/10] xen: Add arch_domain_preinit to initialise vGIC before evtchn_init Chen Baozi
2015-06-05 16:22 ` Ian Campbell
2015-06-11 9:20 ` Chen Baozi
2015-06-11 9:37 ` Ian Campbell
2015-06-11 11:16 ` Chen Baozi
2015-06-11 11:47 ` Julien Grall
2015-06-11 12:45 ` Chen Baozi
2015-06-01 12:56 ` [PATCH V6 09/10] xen/arm: make domain_max_vcpus return value from vgic_ops Chen Baozi
2015-06-05 16:26 ` Ian Campbell
2015-06-05 16:39 ` Julien Grall
2015-06-01 12:56 ` [PATCH V6 10/10] xen/arm64: increase MAX_VIRT_CPUS to 128 on arm64 Chen Baozi
2015-06-05 16:27 ` Ian Campbell
2015-06-05 14:08 ` [PATCH V6 00/10] Support more than 8 vcpus on arm64 with GICv3 Ian Campbell
2015-06-05 14:37 ` Julien Grall
2015-06-05 15:15 ` Ian Campbell
2015-06-05 14:23 ` Ian Campbell
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1433519666.7108.326.camel@citrix.com \
--to=ian.campbell@citrix.com \
--cc=baozich@gmail.com \
--cc=cbz@baozis.org \
--cc=julien.grall@citrix.com \
--cc=xen-devel@lists.xenproject.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.