From: James Morse <james.morse@arm.com>
To: Christoffer Dall <cdall@linaro.org>
Cc: devicetree@vger.kernel.org, Marc Zyngier <marc.zyngier@arm.com>,
Catalin Marinas <catalin.marinas@arm.com>,
Will Deacon <will.deacon@arm.com>,
Rob Herring <robh+dt@kernel.org>,
linux-arm-kernel@lists.infradead.org,
kvmarm@lists.cs.columbia.edu
Subject: Re: [PATCH 01/11] KVM: arm64: Store vcpu on the stack during __guest_enter()
Date: Tue, 08 Aug 2017 17:48:29 +0100 [thread overview]
Message-ID: <5989EB5D.6@arm.com> (raw)
In-Reply-To: <20170606195951.GN9464@cbox>
Hi Christoffer,
On 06/06/17 20:59, Christoffer Dall wrote:
> On Mon, May 15, 2017 at 06:43:49PM +0100, James Morse wrote:
>> KVM uses tpidr_el2 as its private vcpu register, which makes sense for
>> non-vhe world switch as only KVM can access this register. This means
>> vhe Linux has to use tpidr_el1, which KVM has to save/restore as part
>> of the host context.
>>
>> __guest_enter() stores the host_ctxt on the stack, do the same with
>> the vcpu.
>> diff --git a/arch/arm64/kvm/hyp/entry.S b/arch/arm64/kvm/hyp/entry.S
>> index 12ee62d6d410..113735df7d01 100644
>> --- a/arch/arm64/kvm/hyp/entry.S
>> +++ b/arch/arm64/kvm/hyp/entry.S
>> @@ -159,9 +159,15 @@ abort_guest_exit_end:
>> ENDPROC(__guest_exit)
>>
>> ENTRY(__fpsimd_guest_restore)
>> + // x0: esr
>> + // x1: vcpu
>> + // x2-x29,lr: vcpu regs
>> + // vcpu x0-x1 on the stack
>> stp x2, x3, [sp, #-16]!
>> stp x4, lr, [sp, #-16]!
>>
>> + mov x3, x1
>> +
>
> nit: can you avoid this by using x1 for the vcpu pointer in this routine
> instead?
Unfortunately x1 is clobbered by the __fpsimd_{save,restore}_state() macros that
are called further down this function.
(its a bit obscure:
> fpsimd_save x0, 1
that '1' is used to generate 'x1' or 'w1' in includes/asm/fpsimdmacros.h)
Thanks,
James
WARNING: multiple messages have this Message-ID (diff)
From: james.morse@arm.com (James Morse)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 01/11] KVM: arm64: Store vcpu on the stack during __guest_enter()
Date: Tue, 08 Aug 2017 17:48:29 +0100 [thread overview]
Message-ID: <5989EB5D.6@arm.com> (raw)
In-Reply-To: <20170606195951.GN9464@cbox>
Hi Christoffer,
On 06/06/17 20:59, Christoffer Dall wrote:
> On Mon, May 15, 2017 at 06:43:49PM +0100, James Morse wrote:
>> KVM uses tpidr_el2 as its private vcpu register, which makes sense for
>> non-vhe world switch as only KVM can access this register. This means
>> vhe Linux has to use tpidr_el1, which KVM has to save/restore as part
>> of the host context.
>>
>> __guest_enter() stores the host_ctxt on the stack, do the same with
>> the vcpu.
>> diff --git a/arch/arm64/kvm/hyp/entry.S b/arch/arm64/kvm/hyp/entry.S
>> index 12ee62d6d410..113735df7d01 100644
>> --- a/arch/arm64/kvm/hyp/entry.S
>> +++ b/arch/arm64/kvm/hyp/entry.S
>> @@ -159,9 +159,15 @@ abort_guest_exit_end:
>> ENDPROC(__guest_exit)
>>
>> ENTRY(__fpsimd_guest_restore)
>> + // x0: esr
>> + // x1: vcpu
>> + // x2-x29,lr: vcpu regs
>> + // vcpu x0-x1 on the stack
>> stp x2, x3, [sp, #-16]!
>> stp x4, lr, [sp, #-16]!
>>
>> + mov x3, x1
>> +
>
> nit: can you avoid this by using x1 for the vcpu pointer in this routine
> instead?
Unfortunately x1 is clobbered by the __fpsimd_{save,restore}_state() macros that
are called further down this function.
(its a bit obscure:
> fpsimd_save x0, 1
that '1' is used to generate 'x1' or 'w1' in includes/asm/fpsimdmacros.h)
Thanks,
James
next prev parent reply other threads:[~2017-08-08 16:48 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-05-15 17:43 [PATCH 00/11] arm64/firmware: Software Delegated Exception Interface James Morse
2017-05-15 17:43 ` James Morse
2017-05-15 17:43 ` [PATCH 01/11] KVM: arm64: Store vcpu on the stack during __guest_enter() James Morse
2017-05-15 17:43 ` James Morse
[not found] ` <20170515174400.29735-2-james.morse-5wv7dgnIgG8@public.gmane.org>
2017-06-06 19:59 ` Christoffer Dall
2017-06-06 19:59 ` Christoffer Dall
2017-08-08 16:48 ` James Morse [this message]
2017-08-08 16:48 ` James Morse
[not found] ` <5989EB5D.6-5wv7dgnIgG8@public.gmane.org>
2017-08-09 8:48 ` Christoffer Dall
2017-08-09 8:48 ` Christoffer Dall
[not found] ` <20170515174400.29735-1-james.morse-5wv7dgnIgG8@public.gmane.org>
2017-05-15 17:43 ` [PATCH 02/11] KVM: arm/arm64: Convert kvm_host_cpu_state to a static per-cpu allocation James Morse
2017-05-15 17:43 ` James Morse
[not found] ` <20170515174400.29735-3-james.morse-5wv7dgnIgG8@public.gmane.org>
2017-06-06 19:59 ` Christoffer Dall
2017-06-06 19:59 ` Christoffer Dall
2017-05-15 17:43 ` [PATCH 03/11] KVM: arm64: Change hyp_panic()s dependency on tpidr_el2 James Morse
2017-05-15 17:43 ` James Morse
2017-06-06 19:45 ` Christoffer Dall
2017-06-06 19:45 ` Christoffer Dall
2017-06-08 10:23 ` James Morse
2017-06-08 10:23 ` James Morse
[not found] ` <593925BB.30503-5wv7dgnIgG8@public.gmane.org>
2017-06-08 10:34 ` Christoffer Dall
2017-06-08 10:34 ` Christoffer Dall
2017-05-15 17:43 ` [PATCH 04/11] arm64: alternatives: use tpidr_el2 on VHE hosts James Morse
2017-05-15 17:43 ` James Morse
2017-05-15 17:43 ` [PATCH 06/11] dt-bindings: add devicetree binding for describing arm64 SDEI firmware James Morse
2017-05-15 17:43 ` James Morse
2017-05-19 1:48 ` Rob Herring
2017-05-19 1:48 ` Rob Herring
2017-06-07 8:28 ` James Morse
2017-06-07 8:28 ` James Morse
2017-05-15 17:43 ` [PATCH 08/11] arm64: kernel: Add arch-specific SDEI entry code and CPU masking James Morse
2017-05-15 17:43 ` James Morse
2017-05-15 17:43 ` [PATCH 09/11] firmware: arm_sdei: Add support for CPU and system power states James Morse
2017-05-15 17:43 ` James Morse
2017-05-15 17:43 ` [PATCH 10/11] firmware: arm_sdei: add support for CPU private events James Morse
2017-05-15 17:43 ` James Morse
2017-05-15 17:43 ` [PATCH 11/11] KVM: arm64: Delegate support for SDEI to userspace James Morse
2017-05-15 17:43 ` James Morse
[not found] ` <20170515174400.29735-12-james.morse-5wv7dgnIgG8@public.gmane.org>
2017-06-06 19:58 ` Christoffer Dall
2017-06-06 19:58 ` Christoffer Dall
2017-07-26 17:00 ` James Morse
2017-07-26 17:00 ` James Morse
[not found] ` <5978CA93.5090600-5wv7dgnIgG8@public.gmane.org>
2017-07-27 7:49 ` Christoffer Dall
2017-07-27 7:49 ` Christoffer Dall
2017-06-06 19:59 ` [PATCH 00/11] arm64/firmware: Software Delegated Exception Interface Christoffer Dall
2017-06-06 19:59 ` Christoffer Dall
2017-06-07 9:45 ` James Morse
2017-06-07 9:45 ` James Morse
2017-06-07 9:53 ` Christoffer Dall
2017-06-07 9:53 ` Christoffer Dall
2017-05-15 17:43 ` [PATCH 05/11] arm64: KVM: Stop save/restoring host tpidr_el1 on VHE James Morse
2017-05-15 17:43 ` James Morse
[not found] ` <20170515174400.29735-6-james.morse-5wv7dgnIgG8@public.gmane.org>
2017-06-06 20:00 ` Christoffer Dall
2017-06-06 20:00 ` Christoffer Dall
2017-05-15 17:43 ` [PATCH 07/11] firmware: arm_sdei: Add driver for Software Delegated Exceptions James Morse
2017-05-15 17:43 ` James Morse
[not found] ` <20170515174400.29735-8-james.morse-5wv7dgnIgG8@public.gmane.org>
2017-07-19 13:52 ` Dave Martin
2017-07-19 13:52 ` Dave Martin
[not found] ` <20170719135213.GA1538-M5GwZQ6tE7x5pKCnmE3YQBJ8xKzm50AiAL8bYrjMMd8@public.gmane.org>
2017-08-08 16:48 ` James Morse
2017-08-08 16:48 ` James Morse
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=5989EB5D.6@arm.com \
--to=james.morse@arm.com \
--cc=catalin.marinas@arm.com \
--cc=cdall@linaro.org \
--cc=devicetree@vger.kernel.org \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=marc.zyngier@arm.com \
--cc=robh+dt@kernel.org \
--cc=will.deacon@arm.com \
/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.