--- 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