All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marc Zyngier <marc.zyngier@arm.com>
To: Greg Kurz <gkurz@linux.vnet.ibm.com>
Cc: Peter Maydell <peter.maydell@linaro.org>,
	Will Deacon <Will.Deacon@arm.com>,
	Pekka Enberg <penberg@kernel.org>,
	"kvmarm\@lists.cs.columbia.edu" <kvmarm@lists.cs.columbia.edu>,
	"kvm\@vger.kernel.org" <kvm@vger.kernel.org>,
	"agraf\@suse.de" <agraf@suse.de>
Subject: Re: [PATCH v3 9/9] kvmtool: virtio: enable arm/arm64 support for bi-endianness
Date: Wed, 07 May 2014 12:04:41 +0100	[thread overview]
Message-ID: <87ha51onna.fsf@approximate.cambridge.arm.com> (raw)
In-Reply-To: <20140507124054.680a26fb@bahia.local> (Greg Kurz's message of "Wed, 7 May 2014 11:40:54 +0100")

On Wed, May 07 2014 at 11:40:54 am BST, Greg Kurz <gkurz@linux.vnet.ibm.com> wrote:
> On Wed, 07 May 2014 10:52:01 +0100
> Marc Zyngier <marc.zyngier@arm.com> wrote:
>
>> On Wed, May 07 2014 at 10:34:30 am BST, Peter Maydell
>> <peter.maydell@linaro.org> wrote:
>> > On 6 May 2014 19:38, Peter Maydell <peter.maydell@linaro.org> wrote:
>> >> On 6 May 2014 18:25, Marc Zyngier <marc.zyngier@arm.com> wrote:
>> >>> On Tue, May 06 2014 at 3:28:07 pm BST, Will Deacon
>> >>> <will.deacon@arm.com> wrote:
>> >>>> On Thu, Apr 24, 2014 at 07:17:23PM +0100, Marc Zyngier wrote:
>> >>>>> +    reg.addr = (u64)&data;
>> >>>>> +    if (ioctl(vcpu->vcpu_fd, KVM_GET_ONE_REG, &reg) < 0)
>> >>>>> +            die("KVM_GET_ONE_REG failed (SCTLR_EL1)");
>> >>>>> +
>> >>>>> + return (data & SCTLR_EL1_EE_MASK) ? VIRTIO_ENDIAN_BE :
>> >>>>> VIRTIO_ENDIAN_LE;
>> >>>>
>> >>>> This rules out guests where userspace and kernelspace can run
>> >>>> with different
>> >>>> endinness. Whilst Linux doesn't currently do this, can we support it here?
>> >>>> It all gets a bit hairy if the guest is using a stage-1 SMMU to let
>> >>>> userspace play with a virtio device...
>> >>>
>> >>> Yeah, I suppose we could check either EE or E0 depending on the mode
>> >>> when the access was made. We already have all the information, just need
>> >>> to handle the case. I'll respin the series.
>> >
>> >> How virtio implementations should determine their endianness is
>> >> a spec question, I think; at any rate QEMU and kvmtool ought to
>> >> agree on how it's done. I think the most recent suggestion on the
>> >> QEMU mailing list (for PPC) is that we should care about the
>> >> guest kernel endianness, but I don't know if anybody thought of
>> >> the pass-through-to-userspace usecase...
>> >
>> > Current opinion on the qemu-devel thread seems to be that we
>> > should just define that the endianness of the virtio device is
>> > the endianness of the guest kernel at the point where the guest
>> > triggers a reset of the virtio device by writing zero the QueuePFN
>> > or Status registers.
>> 
>> On AArch32, we only have the CPSR.E bit to select the endiannes. Are we
>> going to simply explode if the access comes from userspace?
>> 
>> On AArch64, we can either select the kernel endianness, or userspace
>> endianness. Are we going to go a different route just for the sake of
>> enforcing kernel access?
>> 
>> I'm inclined to think of userspace access as a valid use case.
>> 
>> 	M.

Hi Gregory,

> All the fuzz is not really about enforcing kernel access... PPC also
> has a current endianness selector (MSR_LE) but it only makes sense
> if you are in the cpu context. Initial versions of the virtio biendian
> support for QEMU PPC64 used an arbitrary cpu: in this case, the
> only sensible thing to look at to support kernel based virtio is the 
> interrupt endianness selector (LPCR_ILE), because if gives a safe
> hint of the kernel endianness.
>
> The patch set has evolved and now uses current_cpu at device reset time.
> As a consequence, we are not necessarily tied to the kernel LPCR_ILE
> selector I guess.

That makes a lot of sense, thanks for explaining that. You're basically
doing the exact same thing we do with kvmtool on ARM. So if we have
similar architectural features on both sides, why don't we support both
kernel and userspace access?

Cheers,

	M.
-- 
Jazz is not dead. It just smells funny.

  reply	other threads:[~2014-05-07 11:04 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-04-24 18:17 [PATCH v3 0/9] kvmtool: handle guests of a different endianness Marc Zyngier
2014-04-24 18:17 ` [PATCH v3 1/9] kvmtool: pass trapped vcpu to MMIO accessors Marc Zyngier
2014-04-24 18:17 ` [PATCH v3 2/9] kvmtool: virt_queue configuration based on endianness Marc Zyngier
2014-04-24 18:17 ` [PATCH v3 3/9] kvmtool: sample CPU endianness on virtio-mmio device reset Marc Zyngier
2014-04-24 18:17 ` [PATCH v3 4/9] kvmtool: add queue endianness initializer Marc Zyngier
2014-04-24 18:17 ` [PATCH v3 5/9] kvmtool: convert console backend to support bi-endianness Marc Zyngier
2014-04-24 18:17 ` [PATCH v3 6/9] kvmtool: convert 9p " Marc Zyngier
2014-04-24 18:17 ` [PATCH v3 7/9] kvmtool: convert blk " Marc Zyngier
2014-04-24 18:17 ` [PATCH v3 8/9] kvmtool: convert net " Marc Zyngier
2014-04-24 18:17 ` [PATCH v3 9/9] kvmtool: virtio: enable arm/arm64 support for bi-endianness Marc Zyngier
2014-05-06 14:28   ` Will Deacon
2014-05-06 17:25     ` Marc Zyngier
2014-05-06 18:38       ` Peter Maydell
2014-05-07  9:34         ` Peter Maydell
2014-05-07  9:42           ` Alexander Graf
2014-05-07  9:57             ` Marc Zyngier
2014-05-07 10:11               ` Alexander Graf
2014-05-07 10:30                 ` Michael S. Tsirkin
2014-05-07 10:39                 ` Marc Zyngier
2014-05-08  1:52                 ` Rusty Russell
2014-05-07  9:52           ` Marc Zyngier
2014-05-07  9:55             ` Alexander Graf
2014-05-07 10:19               ` Marc Zyngier
2014-05-07 10:10             ` Peter Maydell
2014-05-07 10:46               ` Marc Zyngier
2014-05-07 11:49                 ` Alexander Graf
2014-05-07 12:16                   ` Marc Zyngier
2014-05-07 12:18                     ` Peter Maydell
2014-05-07 10:40             ` Greg Kurz
2014-05-07 11:04               ` Marc Zyngier [this message]
2014-05-07 12:17                 ` Peter Maydell
2014-05-07 12:25                   ` Marc Zyngier
2014-05-07 12:27                   ` Greg Kurz
2014-05-03  7:07 ` [PATCH v3 0/9] kvmtool: handle guests of a different endianness Pekka Enberg
2014-05-06 13:34   ` Will Deacon

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=87ha51onna.fsf@approximate.cambridge.arm.com \
    --to=marc.zyngier@arm.com \
    --cc=Will.Deacon@arm.com \
    --cc=agraf@suse.de \
    --cc=gkurz@linux.vnet.ibm.com \
    --cc=kvm@vger.kernel.org \
    --cc=kvmarm@lists.cs.columbia.edu \
    --cc=penberg@kernel.org \
    --cc=peter.maydell@linaro.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.