From: Julien Grall <julien.grall@linaro.org>
To: Ian Campbell <Ian.Campbell@citrix.com>,
Christoffer Dall <christoffer.dall@linaro.org>
Cc: xen-devel@lists.xenproject.org, tim@xen.org,
Stefano Stabellini <stefano.stabellini@citrix.com>
Subject: Re: [PATCH v2 00/21] xen/arm: Add support for non-pci passthrough
Date: Fri, 12 Sep 2014 12:16:56 -0700 [thread overview]
Message-ID: <541346A8.2070305@linaro.org> (raw)
In-Reply-To: <1410346278.8217.320.camel@kazak.uk.xensource.com>
Hi Ian,
On 10/09/14 03:51, Ian Campbell wrote:
> On Wed, 2014-09-10 at 11:22 +0200, Christoffer Dall wrote:
>> On Tue, Sep 9, 2014 at 9:34 PM, Julien Grall <julien.grall@linaro.org> wrote:
>>> (Adding Christoffer)
>>>
>>> Hi Ian,
>>>
>>> On 09/09/14 07:34, Ian Campbell wrote:
>>>>
>>>> On Thu, 2014-07-31 at 16:00 +0100, Julien Grall wrote:
>>>>>
>>>>> - Only common device properties (interrupts, regs) are written to
>>>>> the guest device tree. Device that needs other properties may not
>>>>> work.
>>>>
>>>>
>>>> So I've glanced through the later (more toolstack oriented) bits from
>>>> towards the end but I think there's a question of the target users which
>>>> needs thinking about before I can have a sensible opinion on those.
>>>>
>>>> As I see it the main purpose of this series is to get the underlying
>>>> plumbing in place (wiring up iommus, routing IRQs etc) to support guests
>>>> with passthrough devices, for embedded folks to use and to provide a
>>>> basis for eventual PCI passthrough functionality. I really want to see
>>>> this stuff in 4.5
>>>>
>>>> What I'm concerned about is the toolstack side. TBH I'm not very keen on
>>>> the thing with exposing very DT specific stuff like compatible strings
>>>> down from the hypervisor via domctls.
>>>> It's not really clear how best to expose this functionality, I have a
>>>> feeling that this series either goes too far or not far enough and ends
>>>> up not really satisfying anyone.
>>>
>>>
>>> I don't see many other solutions to get the compatible strings. There is no
>>> easy way to get the property from DOM0, unless we introduce a new driver in
>>> Linux.
>>>
>>
>> The toolstack you are using to create your guest must necessarily know
>> which guest it is creating, including device properties of a device a
>> user wishes to assign It can know this because it's hardcoded,
>> included in some config files, or supplied directly by the user. I
>> think you really want to decouple the hardware description method for
>> Dom0 from retrieving resource description about your device. Can't you
>> simply reference the device to Linux through its sysfs handle and use
>> your Xen-passthrough-layer-hypercall-magic (which I know nothing
>> about) to have Dom0 tell Xen to map/route the relevant resources?
>
> By Xen-passthrough-layer-hypercall-magic do you mean the thing which
> lets the userspace toolstack make hypercalls (which is called "privcmd"
> FWIW) or are you talking about some specific passtrhough related kernel
> driver (like VFIO? which has no Xen equivalent right now)
>
> If you mean the former then I think Julien's code already does this --
> it makes hypercalls telling Xen to map certain MMIO regions to guests.
> What's in question is where the inputs to those hypercalls came from.
>
>>>> My suspicion is that regular folks won't really be using passthrough
>>>> until it is via PCI and that in the meantime this functionality is only
>>>> going to be used by e.g. people building embedded system and superkeen
>>>> early adopters both of whom know what they are doing and can tolerate
>>>> some hacks etc to get things working (and I think that's fine, it's
>>>> still a worthwhile set of things to get into 4.5 and those folks are
>>>> worth supporting).
>>>>
>>>> I'm also worried that we may be committing ourselves to a libxl API
>>>> already without really working through all the issues (e.g. other
>>>> properties).
>>>>
>>>> Given that I wonder if we wouldn't be better off for 4.5 supporting
>>>> something much simpler at the toolstack level, namely allowing users to
>>>> use iomem= and irq= in their domain config to map platform devices
>>>> through (already works with your series today?)
>>>
>>>
>>> This would need a bit a plumbing for irq part to allow the user choosing the
>>> VIRQ (like Arianna did for MMIO range).
>>>
>>
>> My Xen knowledge is limited here. Is the iomem= and irq= commands
>> given to your Dom0 toolstack, Dom0, or Xen itself?
>
> They are things that the user can write into the guest cfg file,
> containing lists of the relevant resources. e.g. to pass IRQ 42 to the
> guest: irqs = [ 42 ]
>
> The toolstack parses that and makes hypercalls while building a guest to
> tell Xen to map those regions through.
>
>> How does a user
>> know which physical address in Xen's physical address space needs to
>> be remapped based on the hardware description language for Dom0?
>
> This is an interesting question. The short answer for platform device
> type things is "they just know" (they presumably have datasheets etc).
> But I think the underlying question here is whether they are given in PA
> space or dom0 IPA space, right?
>
> The way that this works on x86 is that dom0 sees the real underlying
> MMIO addresses in e.g. PCI BARs and /proc/iomem etc. So the hypercalls
> to map MMIO regions to guests all take real physical addresses and
> nothing has to worry about IPA vs PA issues.
>
> On ARM things are potentially a bit more complex because dom0 is running
> with second stage paging. However we always map the MMIO regions 1:1 for
> dom0, and I think we will always have to do that (the "1:1 workaround"
> refers to RAM regions only). So I think we can continue to treat these
> things as proper physical addresses and don't need to introduce variants
> of the hypercalls which work in terms of IPAs (or you could argue that
> they already do and the translation is currently a nop).
The MMIO regions for platform device to passthrough are not mapped into
DOM0 memory. Although, the device is still described in the device tree.
I'm not sure if it's useful for map the MMIO in DOM0 for a simple
passthrough as for now we don't have any "platform-back" drivers in DOM0
that will reset the device.
Maybe we should stay consistent with the IRQ assignment, as we can't
assign to DOM0 for now (this is because there is not driver to unmap them).
Regards,
--
Julien Grall
next prev parent reply other threads:[~2014-09-12 19:17 UTC|newest]
Thread overview: 119+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-31 15:00 [PATCH v2 00/21] xen/arm: Add support for non-pci passthrough Julien Grall
2014-07-31 15:00 ` [PATCH v2 01/21] xen/common: do not implicitly permit access to mapped I/O memory Julien Grall
2014-07-31 15:22 ` Julien Grall
2014-07-31 15:00 ` [PATCH v2 02/21] xen: guestcopy: Provide an helper to safely copy string from guest Julien Grall
2014-08-01 8:40 ` Jan Beulich
2014-08-06 14:18 ` Julien Grall
2014-09-09 12:52 ` Ian Campbell
2014-09-09 13:17 ` Jan Beulich
2014-09-09 13:40 ` Ian Campbell
2014-08-06 13:56 ` Stefano Stabellini
2014-08-06 14:22 ` Julien Grall
2014-08-06 16:06 ` Daniel De Graaf
2014-07-31 15:00 ` [PATCH v2 03/21] xen/arm: vgic: Rename nr_lines into nr_spis Julien Grall
2014-08-06 13:58 ` Stefano Stabellini
2014-07-31 15:00 ` [PATCH v2 04/21] xen/arm: vgic: Introduce a function to initialize pending_irq Julien Grall
2014-08-06 14:06 ` Stefano Stabellini
2014-08-06 14:52 ` Julien Grall
2014-08-06 14:57 ` Stefano Stabellini
2014-07-31 15:00 ` [PATCH v2 05/21] xen/arm: follow-up to allow DOM0 manage IRQ and MMIO Julien Grall
2014-09-09 13:07 ` Ian Campbell
2014-09-11 22:32 ` Julien Grall
2014-09-12 10:13 ` Ian Campbell
2014-09-12 19:04 ` Julien Grall
2014-07-31 15:00 ` [PATCH v2 06/21] xen/arm: Allow virq != irq Julien Grall
2014-08-06 14:50 ` Stefano Stabellini
2014-08-06 15:07 ` Julien Grall
2014-08-06 16:48 ` Stefano Stabellini
2014-09-09 13:29 ` Ian Campbell
2014-09-09 18:42 ` Julien Grall
2014-09-11 22:50 ` Julien Grall
2014-09-12 10:13 ` Ian Campbell
2014-09-12 10:19 ` Ian Campbell
2014-07-31 15:00 ` [PATCH v2 07/21] xen/arm: route_irq_to_guest: Check validity of the IRQ Julien Grall
2014-08-06 14:56 ` Stefano Stabellini
2014-07-31 15:00 ` [PATCH v2 08/21] xen/arm: Initialize the virtual GIC later Julien Grall
2014-08-06 15:35 ` Stefano Stabellini
2014-09-09 13:35 ` Ian Campbell
2014-09-09 18:57 ` Julien Grall
2014-09-10 10:08 ` Ian Campbell
2014-09-11 23:01 ` Julien Grall
2014-09-12 10:14 ` Ian Campbell
2014-08-06 17:06 ` Daniel De Graaf
2014-08-29 13:09 ` Andrii Tseglytskyi
2014-08-29 18:57 ` Julien Grall
2014-08-29 19:49 ` Andrii Tseglytskyi
2014-08-29 20:04 ` Julien Grall
2014-08-29 20:14 ` Andrii Tseglytskyi
2014-09-09 13:33 ` Ian Campbell
2014-09-09 19:11 ` Julien Grall
2014-09-10 9:45 ` Andrii Tseglytskyi
2014-09-09 13:37 ` Ian Campbell
[not found] ` <CAAHg+HhhsZonrEDdHET93dy=dR1+YF-VPGJ=VwB20RRxWqdSYA@mail.gmail.com>
2014-10-06 16:04 ` Julien Grall
2014-07-31 15:00 ` [PATCH v2 09/21] xen/arm: Release IRQ routed to a domain when it's destroying Julien Grall
2014-08-06 15:49 ` Stefano Stabellini
2014-08-06 16:01 ` Julien Grall
2014-08-06 16:53 ` Stefano Stabellini
2014-08-06 17:09 ` Julien Grall
2014-08-07 15:36 ` Stefano Stabellini
2014-08-07 15:40 ` Julien Grall
2014-08-07 16:31 ` Stefano Stabellini
2014-08-07 16:35 ` Julien Grall
2014-08-07 16:39 ` Stefano Stabellini
2014-09-09 13:53 ` Ian Campbell
2014-09-09 22:29 ` Stefano Stabellini
2014-07-31 15:00 ` [PATCH v2 10/21] xen/arm: Implement hypercall PHYSDEVOP_{, un}map_pirq Julien Grall
2014-08-06 16:10 ` Stefano Stabellini
2014-08-29 12:34 ` Andrii Tseglytskyi
2014-08-29 19:08 ` Julien Grall
2014-08-29 19:44 ` Andrii Tseglytskyi
2014-07-31 15:00 ` [PATCH v2 11/21] xen/dts: Use unsigned int for MMIO and IRQ index Julien Grall
2014-08-06 16:12 ` Stefano Stabellini
2014-07-31 15:00 ` [PATCH v2 12/21] xen/dts: Provide an helper to get a DT node from a path provided by a guest Julien Grall
2014-09-09 13:55 ` Ian Campbell
2014-07-31 15:00 ` [PATCH v2 13/21] xen/dts: Add hypercalls to retrieve device node information Julien Grall
2014-08-01 8:50 ` Jan Beulich
2014-08-06 15:17 ` Julien Grall
2014-08-06 15:47 ` Jan Beulich
2014-07-31 15:00 ` [PATCH v2 14/21] xen/passthrough: Introduce iommu_construct Julien Grall
2014-08-01 8:55 ` Jan Beulich
2014-07-31 15:00 ` [PATCH v2 15/21] xen/passthrough: Call arch_iommu_domain_destroy before calling iommu_teardown Julien Grall
2014-08-01 9:00 ` Jan Beulich
2014-07-31 15:00 ` [PATCH v2 16/21] xen/passthrough: iommu_deassign_device_dt: By default reassign device to nobody Julien Grall
2014-08-06 16:23 ` Stefano Stabellini
2015-01-12 16:33 ` Julien Grall
2014-07-31 15:00 ` [PATCH v2 17/21] xen/iommu: arm: Wire iommu DOMCTL for ARM Julien Grall
2014-08-06 16:24 ` Stefano Stabellini
2014-07-31 15:00 ` [PATCH v2 18/21] xen/passthrough: dt: Add new domctl XEN_DOMCTL_assign_dt_device Julien Grall
2014-08-01 9:05 ` Jan Beulich
2014-07-31 15:00 ` [PATCH v2 19/21] xen/arm: Reserve region in guest memory for device passthrough Julien Grall
2014-08-06 16:27 ` Stefano Stabellini
2014-08-06 16:33 ` Julien Grall
2014-08-06 16:44 ` Stefano Stabellini
2014-08-06 16:45 ` Stefano Stabellini
2014-08-06 16:55 ` Julien Grall
2014-08-06 16:57 ` Stefano Stabellini
2014-08-06 16:47 ` Julien Grall
2014-07-31 15:00 ` [PATCH v2 20/21] libxl: Add support for non-PCI passthrough Julien Grall
2014-08-06 16:44 ` Stefano Stabellini
2014-08-06 16:50 ` Julien Grall
2014-08-06 16:58 ` Stefano Stabellini
2014-08-08 14:15 ` Julien Grall
2014-09-09 19:12 ` Julien Grall
2014-09-10 10:08 ` Ian Campbell
2014-07-31 15:00 ` [PATCH v2 21/21] xl: Add new option dtdev Julien Grall
2014-09-09 14:34 ` [PATCH v2 00/21] xen/arm: Add support for non-pci passthrough Ian Campbell
2014-09-09 19:34 ` Julien Grall
2014-09-10 9:22 ` Christoffer Dall
2014-09-10 10:51 ` Ian Campbell
2014-09-10 11:45 ` Christoffer Dall
2014-09-10 12:05 ` Ian Campbell
2014-09-10 22:03 ` Stefano Stabellini
2014-09-11 4:03 ` Christoffer Dall
2014-09-11 8:56 ` Ian Campbell
2014-09-12 19:16 ` Julien Grall [this message]
2014-09-10 10:11 ` Ian Campbell
2014-09-10 18:45 ` Julien Grall
2014-09-11 8:58 ` Ian Campbell
2014-09-11 19:11 ` Julien Grall
2014-09-12 10:16 ` 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=541346A8.2070305@linaro.org \
--to=julien.grall@linaro.org \
--cc=Ian.Campbell@citrix.com \
--cc=christoffer.dall@linaro.org \
--cc=stefano.stabellini@citrix.com \
--cc=tim@xen.org \
--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 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).