xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Daniel De Graaf <dgdegra@tycho.nsa.gov>
To: Ian Campbell <Ian.Campbell@citrix.com>
Cc: xen-devel@lists.xensource.com
Subject: Re: [PATCH 2/3] xen-fbfront: Use grant references when requested
Date: Fri, 07 Jan 2011 16:41:23 -0500	[thread overview]
Message-ID: <4D278883.7040309@tycho.nsa.gov> (raw)
In-Reply-To: <4D277F5F.8090500@tycho.nsa.gov>

On 01/07/2011 04:02 PM, Daniel De Graaf wrote:
> On 01/07/2011 03:44 PM, Ian Campbell wrote:
>> On Fri, 2011-01-07 at 16:12 +0000, dgdegra@tycho.nsa.gov wrote: 
>>> @@ -556,17 +552,58 @@ static unsigned long vmalloc_to_mfn(void *address)
>>>  	return pfn_to_mfn(vmalloc_to_pfn(address));
>>>  }
>>>  
>>> -static void xenfb_init_shared_page(struct xenfb_info *info,
>>> +static void xenfb_init_shared_page(struct xenbus_device *dev,
>>> +                                   struct xenfb_info *info,
>>>  				   struct fb_info *fb_info)
>>>  {
>>> -	int i;
>>>  	int epd = PAGE_SIZE / sizeof(info->mfns[0]);
>>> +	int be_id = dev->otherend_id;
>>> +	int i, ref;
>>> +	unsigned long mfn;
>>> +	grant_ref_t gref_head;
>>> +	int allpages = info->nr_pages + ((info->nr_pages + epd - 1) / epd) + 1;
>>> +
>>> +	int grants = 0;
>>> +	xenbus_scanf(XBT_NIL, dev->otherend, "use-grants", "%d", &grants);
>>
>> There doesn't seem to be any negotiation with the backend about whether
>> or not grants should be used so there is no way for a backend to know if
>> it can choose to set this flag or not, granted not all backends will
>> have a choice due to their privilege level.
> 
> The "use-grants" flag is a request by the backend; older versions will ignore
> it, newer versions (may) honor it.
>  
>> More importantly there is also no way for the backend to figure out is
>> the frontend is going to obey the request if it does write it (at least
>> until it tries to map a gref and fails because its really got an mfn).
> 
> The key used in xenstore (page-gref versus page-ref) tells the backend if
> the request was honored. If the backend is unable to map MFNs, then it will
> fail if page-gref is not present; otherwise, it can fall back to the old
> MFN mapping.
>  
>> Usually both front and backend would write a feature-foo node to their
>> respective directory in xenstore and then figure out what to do based on
>> what the other end wrote.
> 
> Perhaps "use-grants" should be renamed to "feature-grants"? I thought the
> frontend writing a feature-grants node would be redundant since the
> page-gref node already communicated what was chosen.
>  
>> In the kbdfront patch you simply write both the mfn and the grant
>> reference to xenstore, presumably the backend then just picks for itself
>> which access method to use, could that approach be applicable here?
> 
> Possible, but it would waste a bit of memory (a few extra pages for the
> MFN tables in addition to the grant-ref tables). If this isn't an issue,
> then fbfront can expose both and allow the backend to choose without any
> negotiation. Is this preferred?
>  
>> There seems to be slack in xenfb_page which could accommodate a second
>> pd array containing grefs for the pages. The presence of a page-gref
>> node in xenstore would indicate that the larger structure with the grefs
>> is in use.
>>
>> Ian.
>>
> 
> Yes, there is space in xenfb_page, since grants are always 32-bit numbers.
> The offset will be different depending on sizeof(unsigned long) in the guest,
> due to bad design of the shared page, but that's not hard to work around.
> Alternatively, we could put in some padding to fix the offset.
> 

Actually, after looking at xenfb_page again, there isn't room, and the current
structure in the linux kernel is very misleading. Offset 1024 in the structure
is the start of the incoming ring buffer, and offset 2048 is the outgoing ring
buffer. The existing pd array overlaps both of these ring buffers (on 64-bit;
on 32-bit it only overlaps the incoming ring).

-- 
Daniel De Graaf
National Security Agency

  reply	other threads:[~2011-01-07 21:41 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-01-07 16:12 [PATCH] Add grant references for fbfront/kbdfront dgdegra
2011-01-07 16:12 ` [PATCH 1/3] xen-fbfront: Read width/height from backend dgdegra
2011-01-07 20:47   ` Ian Campbell
2011-01-07 21:30     ` Daniel De Graaf
2011-01-07 16:12 ` [PATCH 2/3] xen-fbfront: Use grant references when requested dgdegra
2011-01-07 20:44   ` Ian Campbell
2011-01-07 21:02     ` Daniel De Graaf
2011-01-07 21:41       ` Daniel De Graaf [this message]
2011-01-07 21:56       ` Ian Campbell
2011-01-07 16:12 ` [PATCH 3/3] xen-kbdfront: Add grant reference for shared page dgdegra
2011-01-07 16:51 ` [PATCH] Add grant references for fbfront/kbdfront Konrad Rzeszutek Wilk
2011-01-07 17:55   ` Daniel De Graaf
2011-01-07 18:28     ` Ian Campbell
2011-01-07 19:36       ` Daniel De Graaf
2011-01-07 20:44         ` Ian Campbell
2011-01-07 21:51           ` Daniel De Graaf
2011-01-07 22:09           ` [PATCH qemu] Support grant references in mapping Daniel De Graaf
2011-01-11 16:19             ` Ian Jackson
2011-02-25 15:01             ` Konrad Rzeszutek Wilk
2011-02-25 17:38               ` Stefano Stabellini
2011-01-07 19:21     ` [PATCH] Add grant references for fbfront/kbdfront Konrad Rzeszutek Wilk
2011-01-07 19:32       ` Daniel De Graaf
2011-01-07 19:51         ` Konrad Rzeszutek Wilk
  -- strict thread matches above, loose matches on Subject: below --
2011-03-07 20:11 [PATCH v2] " Daniel De Graaf
2011-03-07 20:11 ` [PATCH 2/3] xen-fbfront: Use grant references when requested Daniel De Graaf
2011-03-09 21:53   ` Konrad Rzeszutek Wilk

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=4D278883.7040309@tycho.nsa.gov \
    --to=dgdegra@tycho.nsa.gov \
    --cc=Ian.Campbell@citrix.com \
    --cc=xen-devel@lists.xensource.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 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).