[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] 32-on-64: pvfb issue



Keir Fraser wrote:
> 
> 
> On 19/1/07 09:54, "Gerd Hoffmann" <kraxel@xxxxxxx> wrote:
> 
>>> Make tools
>>> write a default value for pv guests for backward compat.
>> Here is a one-line fix to make the pvfb frontend clear the shared page.
>>  Can this go into both 3.0.4 and unstable please?
> 
> How about a patch to clear the page *and* write a newly-defined protocol
> field? Or are you still planning to kludge the bitwidth check in the
> backend?

That is better, yes.  Minimum patch attached.  For unstable I'll brew a
nicer version with defines and so on when adjusting the backend code to
be able to deal with both protocols.

cheers,
  Gerd

-- 
Gerd Hoffmann <kraxel@xxxxxxx>
---
 linux-2.6-xen-sparse/drivers/xen/fbfront/xenfb.c |    8 +++++++-
 xen/include/public/io/fbif.h                     |    5 +++++
 2 files changed, 12 insertions(+), 1 deletion(-)

Index: build-32-unstable-13495/linux-2.6-xen-sparse/drivers/xen/fbfront/xenfb.c
===================================================================
--- 
build-32-unstable-13495.orig/linux-2.6-xen-sparse/drivers/xen/fbfront/xenfb.c
+++ build-32-unstable-13495/linux-2.6-xen-sparse/drivers/xen/fbfront/xenfb.c
@@ -479,7 +479,7 @@ static int __devinit xenfb_probe(struct 
                goto error_nomem;
 
        /* set up shared page */
-       info->page = (void *)__get_free_page(GFP_KERNEL);
+       info->page = (void *)__get_free_page(GFP_KERNEL | __GFP_ZERO);
        if (!info->page)
                goto error_nomem;
 
@@ -600,6 +600,12 @@ static void xenfb_init_shared_page(struc
        for (i = 0; i < info->nr_pages; i++)
                info->mfns[i] = vmalloc_to_mfn(info->fb + i * PAGE_SIZE);
 
+#if defined(__i386__)
+       info->page->protocol = 1;
+#elif defined(__x86_64__) || defined(__ia64__)
+       info->page->protocol = 2;
+#endif
+
        info->page->pd[0] = vmalloc_to_mfn(info->mfns);
        info->page->pd[1] = 0;
        info->page->width = XENFB_WIDTH;
Index: build-32-unstable-13495/xen/include/public/io/fbif.h
===================================================================
--- build-32-unstable-13495.orig/xen/include/public/io/fbif.h
+++ build-32-unstable-13495/xen/include/public/io/fbif.h
@@ -102,6 +102,11 @@ struct xenfb_page
     uint32_t line_length;   /* the length of a row of pixels (in bytes) */
     uint32_t mem_length;    /* the length of the framebuffer (in bytes) */
     uint8_t depth;          /* the depth of a pixel (in bits) */
+    uint8_t protocol;       /* protocol version
+                             *    1 -- page directory: i386
+                             *    2 -- page directory: x86_64, ia64
+                             *    3 -- grant tables [not yet]
+                             */
 
     /*
      * Framebuffer page directory
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.