From: Stefano Stabellini <sstabellini@kernel.org>
To: julien.grall@arm.com
Cc: sstabellini@kernel.org, xen-devel@lists.xen.org
Subject: [PATCH 3/4] xen/arm: set vpidr on the pcpu where the vcpu will run
Date: Thu, 15 Feb 2018 15:16:59 -0800 [thread overview]
Message-ID: <1518736620-13802-3-git-send-email-sstabellini@kernel.org> (raw)
In-Reply-To: <1518736620-13802-1-git-send-email-sstabellini@kernel.org>
On big.LITTLE systems not all cores have the same midr. Instead of
initializing the vpidr to the boot cpu midr, set it to the value of the
midr of the pcpu where the vcpu will run.
This way, assuming that the vcpu has been created with the right pcpu
affinity, the guest will be able to read the right vpidr value, matching
the one of the physical cpu.
Signed-off-by: Stefano Stabellini <sstabellini@kernel.org>
---
xen/arch/arm/domain.c | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
diff --git a/xen/arch/arm/domain.c b/xen/arch/arm/domain.c
index 532e824..280125f 100644
--- a/xen/arch/arm/domain.c
+++ b/xen/arch/arm/domain.c
@@ -315,6 +315,22 @@ static void schedule_tail(struct vcpu *prev)
static void continue_new_vcpu(struct vcpu *prev)
{
current->arch.actlr = READ_SYSREG32(ACTLR_EL1);
+ /*
+ * Default the virtual ID to match the physical.
+ *
+ * In case the big.LITTLE systems, a guest should be created with
+ * cpu affinity set so that all vcpus run on the same kind of pcpus.
+ * Warn if it is not the case.
+ */
+ if ( !current->domain->arch.vpidr )
+ current->domain->arch.vpidr = current_cpu_data.midr.bits;
+ else if ( current->domain->arch.vpidr != current_cpu_data.midr.bits )
+ {
+ gdprintk(XENLOG_WARNING,
+ "WARNING: possible corruptions! d%uv%u is running on a pcpu with different midr (%x) from the others (%x)\n",
+ current->domain->domain_id, current->vcpu_id,
+ current_cpu_data.midr.bits, current->domain->arch.vpidr);
+ }
schedule_tail(prev);
@@ -596,9 +612,6 @@ int arch_domain_create(struct domain *d, unsigned int domcr_flags,
if ( (d->shared_info = alloc_xenheap_pages(0, 0)) == NULL )
goto fail;
- /* Default the virtual ID to match the physical */
- d->arch.vpidr = boot_cpu_data.midr.bits;
-
clear_page(d->shared_info);
share_xen_page_with_guest(
virt_to_page(d->shared_info), d, XENSHARE_writable);
--
1.9.1
_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xenproject.org
https://lists.xenproject.org/mailman/listinfo/xen-devel
next prev parent reply other threads:[~2018-02-15 23:16 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-15 23:16 [PATCH 0/4] unsafe big.LITTLE support Stefano Stabellini
2018-02-15 23:16 ` [PATCH 1/4] xen/arm: Park CPUs with a MIDR different from the boot CPU Stefano Stabellini
2018-02-15 23:16 ` [PATCH 2/4] xen/arm: read ACTLR on the pcpu where the vcpu will run Stefano Stabellini
2018-02-16 10:45 ` Julien Grall
2018-02-17 1:39 ` Stefano Stabellini
2018-02-15 23:16 ` Stefano Stabellini [this message]
2018-02-16 11:01 ` [PATCH 3/4] xen/arm: set vpidr " Julien Grall
2018-02-16 20:31 ` Stefano Stabellini
2018-02-16 20:45 ` Julien Grall
2018-02-16 20:59 ` Stefano Stabellini
2018-02-16 21:09 ` Julien Grall
2018-02-16 21:34 ` Stefano Stabellini
2018-02-16 21:39 ` Julien Grall
2018-02-15 23:17 ` [PATCH 4/4] xen/arm: update the docs about heterogeneous computing Stefano Stabellini
2018-02-16 11:22 ` Julien Grall
2018-02-16 20:50 ` Stefano Stabellini
2018-02-16 21:01 ` Julien Grall
2018-02-16 21:15 ` Stefano Stabellini
2018-02-16 21:57 ` Julien Grall
2018-02-17 0:31 ` Stefano Stabellini
2018-02-17 10:23 ` Julien Grall
2018-02-19 20:28 ` Stefano Stabellini
2018-02-19 20:47 ` Julien Grall
2018-02-19 21:05 ` Stefano Stabellini
2018-02-19 21:17 ` Julien Grall
2018-02-19 21:34 ` Stefano Stabellini
2018-02-16 11:58 ` [PATCH 0/4] unsafe big.LITTLE support Julien Grall
2018-02-16 22:07 ` Stefano Stabellini
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=1518736620-13802-3-git-send-email-sstabellini@kernel.org \
--to=sstabellini@kernel.org \
--cc=julien.grall@arm.com \
--cc=xen-devel@lists.xen.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).