All of lore.kernel.org
 help / color / mirror / Atom feed
From: Manish Jaggi <mjaggi@caviumnetworks.com>
To: Ian Campbell <ian.campbell@citrix.com>
Cc: "Vijay Kilari" <vijay.kilari@gmail.com>,
	"Stefano Stabellini" <stefano.stabellini@eu.citrix.com>,
	"Prasun Kapoor" <Prasun.kapoor@caviumnetworks.com>,
	"Kumar, Vijaya" <Vijaya.Kumar@caviumnetworks.com>,
	"xen-devel@lists.xen.org" <xen-devel@lists.xen.org>,
	"Julien Grall" <julien.grall@citrix.com>,
	"Stefano Stabellini" <stefano.stabellini@citrix.com>,
	"Kulkarni, Ganapatrao" <Ganapatrao.Kulkarni@caviumnetworks.com>,
	"Roger Pau Monné" <roger.pau@citrix.com>
Subject: Re: PCI Passthrough ARM Design : Draft1
Date: Fri, 26 Jun 2015 14:20:05 +0530	[thread overview]
Message-ID: <558D123D.50205@caviumnetworks.com> (raw)
In-Reply-To: <1435303946.17598.41.camel@citrix.com>



On Friday 26 June 2015 01:02 PM, Ian Campbell wrote:
> On Fri, 2015-06-26 at 07:37 +0530, Manish Jaggi wrote:
>> On Thursday 25 June 2015 10:56 PM, Konrad Rzeszutek Wilk wrote:
>>> On Thu, Jun 25, 2015 at 01:21:28PM +0100, Ian Campbell wrote:
>>>> On Thu, 2015-06-25 at 17:29 +0530, Manish Jaggi wrote:
>>>>> On Thursday 25 June 2015 02:41 PM, Ian Campbell wrote:
>>>>>> On Thu, 2015-06-25 at 13:14 +0530, Manish Jaggi wrote:
>>>>>>> On Wednesday 17 June 2015 07:59 PM, Ian Campbell wrote:
>>>>>>>> On Wed, 2015-06-17 at 07:14 -0700, Manish Jaggi wrote:
>>>>>>>>> On Wednesday 17 June 2015 06:43 AM, Ian Campbell wrote:
>>>>>>>>>> On Wed, 2015-06-17 at 13:58 +0100, Stefano Stabellini wrote:
>>>>>>>>>>> Yes, pciback is already capable of doing that, see
>>>>>>>>>>> drivers/xen/xen-pciback/conf_space.c
>>>>>>>>>>>
>>>>>>>>>>>> I am not sure if the pci-back driver can query the guest memory map. Is there an existing hypercall ?
>>>>>>>>>>> No, that is missing.  I think it would be OK for the virtual BAR to be
>>>>>>>>>>> initialized to the same value as the physical BAR.  But I would let the
>>>>>>>>>>> guest change the virtual BAR address and map the MMIO region wherever it
>>>>>>>>>>> wants in the guest physical address space with
>>>>>>>>>>> XENMEM_add_to_physmap_range.
>>>>>>>>>> I disagree, given that we've apparently survived for years with x86 PV
>>>>>>>>>> guests not being able to right to the BARs I think it would be far
>>>>>>>>>> simpler to extend this to ARM and x86 PVH too than to allow guests to
>>>>>>>>>> start writing BARs which has various complex questions around it.
>>>>>>>>>> All that's needed is for the toolstack to set everything up and write
>>>>>>>>>> some new xenstore nodes in the per-device directory with the BAR
>>>>>>>>>> address/size.
>>>>>>>>>>
>>>>>>>>>> Also most guests apparently don't reassign the PCI bus by default, so
>>>>>>>>>> using a 1:1 by default and allowing it to be changed would require
>>>>>>>>>> modifying the guests to reasssign. Easy on Linux, but I don't know about
>>>>>>>>>> others and I imagine some OSes (especially simpler/embedded ones) are
>>>>>>>>>> assuming the firmware sets up something sane by default.
>>>>>>>>> Does the Flow below captures all points
>>>>>>>>> a) When assigning a device to domU, toolstack creates a node in per
>>>>>>>>> device directory with virtual BAR address/size
>>>>>>>>>
>>>>>>>>> Option1:
>>>>>>>>> b) toolstack using some hypercall ask xen to create p2m mapping {
>>>>>>>>> virtual BAR : physical BAR } for domU
>>>>>>> While implementing I think rather than the toolstack, pciback driver in
>>>>>>> dom0 can send the
>>>>>>> hypercall by to map the physical bar to virtual bar.
>>>>>>> Thus no xenstore entry is required for BARs.
>>>>>> pciback doesn't (and shouldn't) have sufficient knowledge of the guest
>>>>>> address space layout to determine what the virtual BAR should be. The
>>>>>> toolstack is the right place for that decision to be made.
>>>>> Yes, the point is the pciback driver reads the physical BAR regions on
>>>>> request from domU.
>>>>> So it sends a hypercall to map the physical bars into stage2 translation
>>>>> for the domU through xen.
>>>>> Xen would use the holes left in IPA for MMIO.
>>>> I still think it is the toolstack which should do this, that's whewre
>>>> these sorts of layout decisions belong.
>> can the xl tools read pci conf space ?
> Yes, via sysfs (possibly abstracted via libpci) . Just like lspci and
> friends do.
>
>> Using some xen hypercall or a xl-dom0 ioctl ?
> No, using normal pre-existing Linux functionality.
>
>> If not then there is no otherway but xenpciback
>>
>> Also I need to introduce a hypercall which would tell toolkit the
>> available holes for virtualBAR mapping.
>> Much simpler is let xen allocate a virtualBAR and return to the caller.
>>> At init - sure. But when the guest is running and doing those sort
>>> of things. Unless you want guest -> pciback -> xenstore -> libxl ->
>>> hypercall -> send ack on xenstore -> pciback -> guest.
>>>
>>> That would entail adding some pcibkack -> user-space tickle mechanism
>>> and another back. Much simpler to do all of this in xenpciback I think?
>> I agree. If the xenpciback sends a hypercall whenever a BAR read access,
>> the mapping
>> in xen would already have been done, so xen would simply be doing
>> PA->IPA lookup.
>> No xenstore lookup is required.
> The xenstore read would happen once on device attach, at the same time
> you are reading the rest of the dev-NNN stuff relating to the just
> attached device.
>
> Doing a xenstore transaction on every BAR read would indeed be silly and
> doing a hypercall would not be much better. There is no need for either
> a xenstore read or a hypercall during the cfg space access itself, you
> just read the value from a pciback datastructure.
>
> Add to that the fact that any new hypercall made from dom0 needs to be
> added as a stable interface I can't see any reason to go with such a
> model.
I think you are overlooking a point which is "From what region the 
virtual BAR be allocated ?"
One way is for xen to keep a hole for domains where the bar regions be 
mapped. This is not there as of now.

How would the tools know about this hole ?
A domctl is required ?
For this reason I was suggesting a hypercall to xen to map the physical 
BARs and return the virtualBARs.
>
> Ian.
>
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org
> http://lists.xen.org/xen-devel

  reply	other threads:[~2015-06-26  8:50 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-08  7:52 PCI Passthrough ARM Design : Draft1 Manish Jaggi
2015-06-09 14:42 ` Jaggi, Manish
2015-06-09 15:58   ` Ian Campbell
2015-06-10 12:45 ` Ian Campbell
2015-06-10 19:21   ` Julien Grall
2015-06-11  8:56     ` Ian Campbell
2015-06-11 11:25       ` Julien Grall
2015-06-11 12:02         ` Ian Campbell
2015-06-16 16:13           ` Stefano Stabellini
2015-06-16 16:21             ` Roger Pau Monné
2015-06-16 17:11               ` Manish Jaggi
2015-06-16 17:28                 ` Stefano Stabellini
2015-06-16 17:46                   ` Manish Jaggi
2015-06-17 12:58                     ` Stefano Stabellini
2015-06-17 13:43                       ` Ian Campbell
2015-06-17 14:14                         ` Manish Jaggi
2015-06-17 14:29                           ` Ian Campbell
2015-06-17 14:35                             ` Stefano Stabellini
2015-06-22 18:33                               ` Konrad Rzeszutek Wilk
2015-06-23  8:44                                 ` Ian Campbell
2015-06-23 14:11                                   ` Konrad Rzeszutek Wilk
2015-06-25  7:44                             ` Manish Jaggi
2015-06-25  9:11                               ` Ian Campbell
2015-06-25 11:59                                 ` Manish Jaggi
2015-06-25 12:21                                   ` Ian Campbell
2015-06-25 17:26                                     ` Konrad Rzeszutek Wilk
2015-06-26  2:07                                       ` Manish Jaggi
2015-06-26  7:32                                         ` Ian Campbell
2015-06-26  8:50                                           ` Manish Jaggi [this message]
2015-06-26  9:09                                             ` Ian Campbell
2015-06-26 11:57                                               ` Manish Jaggi
2015-06-26 12:41                                                 ` Ian Campbell
2015-06-26 13:28                                                   ` Konrad Rzeszutek Wilk
2015-06-26 13:47                                                     ` Ian Campbell
2015-06-26 13:52                                                       ` Konrad Rzeszutek Wilk
2015-06-16 17:16               ` Stefano Stabellini
2015-06-17 10:08                 ` Ian Campbell
2015-06-17 12:11                   ` Julien Grall
2015-06-17 12:21                     ` Ian Campbell
2015-06-17 12:53                   ` Stefano Stabellini
2015-06-17 12:57                     ` Julien Grall
2015-06-17 13:32                     ` Ian Campbell
2015-06-17 13:40                       ` Stefano Stabellini
2015-06-17 13:56                         ` Ian Campbell
2015-06-17 14:18                           ` Stefano Stabellini
2015-06-17 14:26                             ` Ian Campbell
2015-06-22 18:31                               ` Konrad Rzeszutek Wilk
2015-06-11  9:05     ` Roger Pau Monné
2015-06-11 12:04       ` Ian Campbell
2015-06-16 16:17         ` Stefano Stabellini
2015-06-11 21:38     ` Manish Jaggi
2015-06-12  8:32       ` Ian Campbell
2015-06-12 11:41         ` Julien Grall
2015-06-12 11:52           ` Ian Campbell
2015-06-16  5:42         ` Manish Jaggi
2015-06-16  7:02           ` Roger Pau Monné
2015-06-16 10:42             ` Julien Grall

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=558D123D.50205@caviumnetworks.com \
    --to=mjaggi@caviumnetworks.com \
    --cc=Ganapatrao.Kulkarni@caviumnetworks.com \
    --cc=Prasun.kapoor@caviumnetworks.com \
    --cc=Vijaya.Kumar@caviumnetworks.com \
    --cc=ian.campbell@citrix.com \
    --cc=julien.grall@citrix.com \
    --cc=roger.pau@citrix.com \
    --cc=stefano.stabellini@citrix.com \
    --cc=stefano.stabellini@eu.citrix.com \
    --cc=vijay.kilari@gmail.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 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.