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

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



Gerd Hoffmann wrote:
> Keir Fraser wrote:
>> On 22/1/07 14:01, "Gerd Hoffmann" <kraxel@xxxxxxx> wrote:
>>
>>> Here we go.  Compile-tested on 32bit, more tests coming, full rebuild
>>> still in progress ...
>> Yeah, I like these. They can go in as soon as you're happy with them. One
>> exception is blkback -- I'm not keen on the v1/v2 thing as it is. I think we
>> should continue to include public/io/blkif.h and use the struct definition
>> there when protocol==XEN_IO_PROTO_ABI_NATIVE.
> 
> Fixed.  New versions attached, with comments added/updated and
> signed-off-by.  They are partly tested only though, 32-on-64 seems to be
> broken in current unstable, mixing 32bit and 64bit domains doesn't work.

What is the status of this?  It's not in the public tree yet.  Any
problems?  Or just stuck in the patch queue or regression testing?
Meanwhile I've tested the block backend patches with 3.0.4 in a mixed
environment -- works fine.

The pvfb backend has a stupid tyops (missing underscore) which breaks
the combination 32bit dom0 and 64bit domU.  Fix attached.  The patch
also adds a cast to fix a warning.

please apply,

  Gerd

-- 
Gerd Hoffmann <kraxel@xxxxxxx>
Index: build-32-release304-13133/tools/xenfb/xenfb.c
===================================================================
--- build-32-release304-13133.orig/tools/xenfb/xenfb.c
+++ build-32-release304-13133/tools/xenfb/xenfb.c
@@ -367,12 +367,12 @@ static int xenfb_map_fb(struct xenfb_pri
                 */
                uint32_t *ptr32 = NULL;
                uint32_t *ptr64 = NULL;
-#if defined(__i386_)
-               ptr32 = page->pd;
+#if defined(__i386__)
+               ptr32 = (void*)page->pd;
                ptr64 = ((void*)page->pd) + 4;
 #elif defined(__x86_64__)
                ptr32 = ((void*)page->pd) - 4;
-               ptr64 = page->pd;
+               ptr64 = (void*)page->pd;
 #endif
                if (ptr32) {
                        if (0 == ptr32[1]) {
@@ -388,7 +388,7 @@ static int xenfb_map_fb(struct xenfb_pri
                /* 64bit dom0, 32bit domU */
                mode = 32;
                pd   = ((void*)page->pd) - 4;
-#elif defined(__i386_)
+#elif defined(__i386__)
        } else if (0 == strcmp(xenfb->protocol, XEN_IO_PROTO_ABI_X86_64)) {
                /* 32bit dom0, 64bit domU */
                mode = 64;
@@ -560,10 +560,10 @@ int xenfb_attach_dom(struct xenfb *xenfb
        if (xenfb_wait_for_frontend_initialised(&xenfb->kbd) < 0)
                goto error;
 
-       if (xenfb_bind(&xenfb->fb) < 0)
-               goto error;
        if (xenfb_bind(&xenfb->kbd) < 0)
                goto error;
+       if (xenfb_bind(&xenfb->fb) < 0)
+               goto error;
 
        if (xenfb_xs_scanf1(xsh, xenfb->fb.otherend, "feature-update",
                            "%d", &val) < 0)
_______________________________________________
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®.