From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [RFC 15/19] xen/arm: Reserve region in guest memory for device passthrough Date: Wed, 18 Jun 2014 18:54:21 +0100 Message-ID: <53A1D24D.2080406@linaro.org> References: <1402935486-29136-1-git-send-email-julien.grall@linaro.org> <1402935486-29136-16-git-send-email-julien.grall@linaro.org> <53A1AEEE.1030200@linaro.org> <1403105169.6568.87.camel@kazak.uk.xensource.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail6.bemta14.messagelabs.com ([193.109.254.103]) by lists.xen.org with esmtp (Exim 4.72) (envelope-from ) id 1WxK42-0004Br-9a for xen-devel@lists.xenproject.org; Wed, 18 Jun 2014 17:54:26 +0000 Received: by mail-we0-f170.google.com with SMTP id w61so1272606wes.1 for ; Wed, 18 Jun 2014 10:54:24 -0700 (PDT) In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Stefano Stabellini , Ian Campbell Cc: xen-devel@lists.xenproject.org, stefano.stabellini@citrix.com, tim@xen.org List-Id: xen-devel@lists.xenproject.org On 06/18/2014 06:48 PM, Stefano Stabellini wrote: > On Wed, 18 Jun 2014, Ian Campbell wrote: >> On Wed, 2014-06-18 at 16:23 +0100, Julien Grall wrote: >>> On 06/18/2014 04:12 PM, Stefano Stabellini wrote: >>>> On Mon, 16 Jun 2014, Julien Grall wrote: >>>>> This region will be split by the toolstack to allocate MMIO range for eac >>>>> device. >>>>> >>>>> For now only reserve a 512MB region, this should be enought to passthrough >>>>> multiple device at the same time. >>>>> >>>>> Signed-off-by: Julien Grall >>>>> --- >>>>> xen/include/public/arch-arm.h | 4 ++++ >>>>> 1 file changed, 4 insertions(+) >>>>> >>>>> diff --git a/xen/include/public/arch-arm.h b/xen/include/public/arch-arm.h >>>>> index ac54cd6..789bffb 100644 >>>>> --- a/xen/include/public/arch-arm.h >>>>> +++ b/xen/include/public/arch-arm.h >>>>> @@ -369,6 +369,10 @@ typedef uint64_t xen_callback_t; >>>>> #define GUEST_GICC_BASE 0x03002000ULL >>>>> #define GUEST_GICC_SIZE 0x00000100ULL >>>>> >>>>> +/* Space for mapping MMIO from device passthrough: 512MB @ 256MB*/ >>>>> +#define GUEST_MMIO_BASE 0x10000000ULL >>>>> +#define GUEST_MMIO_SIZE 0x20000000ULL >>>> >>>> Is it really necessary to specify size here? It looks like an artifical >>>> limitation to me: given that is unlikely that we'll ever be able to >>>> support non-PCI device hotplug, we only have to handle cold-plug here. >>>> So the toolstack has all the information it needs to build the perfect >>>> memory layout for the guest at VM creation time. >>> >>> We have the same "artificial" limitation for the RAM banks... The >>> toolstack doesn't know where the different regions end up without the >>> size. As the layout may move in the future, adding the size avoid >>> modifying the toolstack every time we change it. >> >> It also provides a documentary clue to people modifying things in this >> file to remind them to think about how much space they need to try and >> leave for this when adding something else. > > I am not against documentation or resonable defaults. Let me explain > what I mean more clearly: if we are trying to assign 1 device with an > MMIO region of 1024MB, we know that it is not going to fit. For non-PCI passthrough this size will unlikely happen. We always map a matter of few pages per-device. I think this size is enough for the time being. I plan to revisit it for PCI passthrough where we will be able to allocate some of them after 4G. -- Julien Grall