rpms/xen/devel xen-pvfb-04-compat.patch,1.2,1.3
Daniel P. Berrange (berrange)
fedora-extras-commits at redhat.com
Tue Sep 25 04:57:38 UTC 2007
Author: berrange
Update of /cvs/pkgs/rpms/xen/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv20664
Modified Files:
xen-pvfb-04-compat.patch
Log Message:
Really fix 32-on-64 fc6 guests this time
xen-pvfb-04-compat.patch:
Index: xen-pvfb-04-compat.patch
===================================================================
RCS file: /cvs/pkgs/rpms/xen/devel/xen-pvfb-04-compat.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- xen-pvfb-04-compat.patch 24 Sep 2007 23:09:22 -0000 1.2
+++ xen-pvfb-04-compat.patch 25 Sep 2007 04:57:36 -0000 1.3
@@ -1,7 +1,7 @@
-diff -ruNp xen-3.1.0-src.orig/tools/ioemu/hw/oldxenfb.c xen-3.1.0-src.new/tools/ioemu/hw/oldxenfb.c
+diff -rupN xen-3.1.0-src.orig/tools/ioemu/hw/oldxenfb.c xen-3.1.0-src.new/tools/ioemu/hw/oldxenfb.c
--- xen-3.1.0-src.orig/tools/ioemu/hw/oldxenfb.c 1969-12-31 19:00:00.000000000 -0500
-+++ xen-3.1.0-src.new/tools/ioemu/hw/oldxenfb.c 2007-09-24 18:51:06.000000000 -0400
-@@ -0,0 +1,610 @@
++++ xen-3.1.0-src.new/tools/ioemu/hw/oldxenfb.c 2007-09-25 00:46:38.000000000 -0400
+@@ -0,0 +1,693 @@
+#include <stdarg.h>
+#include <stdlib.h>
+#include <sys/types.h>
@@ -400,10 +400,10 @@
+ }
+}
+
-+static void oldxenfb_on_fb_event(struct xenfb_private *xenfb)
++static void oldxenfb_on_fb_event32(struct xenfb_private *xenfb)
+{
+ uint32_t prod, cons;
-+ struct xenfb_page *page = xenfb->fb.page;
++ struct xenfb_page32 *page = xenfb->fb.page;
+
+ prod = page->out_prod;
+ if (prod == page->out_cons)
@@ -426,6 +426,50 @@
+ xc_evtchn_notify(xenfb->evt_xch, xenfb->fb.port);
+}
+
++static void oldxenfb_on_fb_event64(struct xenfb_private *xenfb)
++{
++ uint32_t prod, cons;
++ struct xenfb_page64 *page = xenfb->fb.page;
++
++ prod = page->out_prod;
++ if (prod == page->out_cons)
++ return;
++ rmb(); /* ensure we see ring contents up to prod */
++ for (cons = page->out_cons; cons != prod; cons++) {
++ union xenfb_out_event *event = &XENFB_OUT_RING_REF(page, cons);
++
++ switch (event->type) {
++ case XENFB_TYPE_UPDATE:
++ if (xenfb->pub.update)
++ xenfb->pub.update(&xenfb->pub,
++ event->update.x, event->update.y,
++ event->update.width, event->update.height);
++ break;
++ }
++ }
++ mb(); /* ensure we're done with ring contents */
++ page->out_cons = cons;
++ xc_evtchn_notify(xenfb->evt_xch, xenfb->fb.port);
++}
++
++static void xenfb_on_fb_event(struct xenfb_private *xenfb)
++{
++ int mode;
++ if (0 == strcmp(xenfb->protocol, XEN_IO_PROTO_ABI_NATIVE))
++ mode = sizeof(unsigned long) * 8;
++ else if (0 == strcmp(xenfb->protocol, XEN_IO_PROTO_ABI_X86_32))
++ mode = 32;
++ else if (0 == strcmp(xenfb->protocol, XEN_IO_PROTO_ABI_X86_64))
++ mode = 64;
++ else
++ return;
++
++ if (mode == 32)
++ oldxenfb_on_fb_event32(xenfb);
++ else
++ oldxenfb_on_fb_event64(xenfb);
++}
++
+static void oldxenfb_on_kbd_event(struct xenfb_private *xenfb)
+{
+ struct xenkbd_info *page = xenfb->kbd.page;
@@ -503,11 +547,30 @@
+}
+
+
-+static int oldxenfb_fb_event(struct xenfb_private *xenfb,
-+ union xenfb_in_event *event)
++static int oldxenfb_fb_event32(struct xenfb_private *xenfb,
++ union xenfb_in_event *event)
+{
+ uint32_t prod;
-+ struct xenfb_page *page = xenfb->fb.page;
++ struct xenfb_page32 *page = xenfb->fb.page;
++
++ prod = page->in_prod;
++ if (prod - page->in_cons == XENFB_IN_RING_LEN) {
++ errno = EAGAIN;
++ return -1;
++ }
++
++ mb(); /* ensure ring space available */
++ XENFB_IN_RING_REF(page, prod) = *event;
++ wmb(); /* ensure ring contents visible */
++ page->in_prod = prod + 1;
++ return xc_evtchn_notify(xenfb->evt_xch, xenfb->fb.port);
++}
++
++static int oldxenfb_fb_event64(struct xenfb_private *xenfb,
++ union xenfb_in_event *event)
++{
++ uint32_t prod;
++ struct xenfb_page64 *page = xenfb->fb.page;
+
+ prod = page->in_prod;
+ if (prod - page->in_cons == XENFB_IN_RING_LEN) {
@@ -522,6 +585,26 @@
+ return xc_evtchn_notify(xenfb->evt_xch, xenfb->fb.port);
+}
+
++static int oldxenfb_fb_event(struct xenfb_private *xenfb,
++ union xenfb_in_event *event)
++{
++ int mode;
++ if (0 == strcmp(xenfb->protocol, XEN_IO_PROTO_ABI_NATIVE))
++ mode = sizeof(unsigned long) * 8;
++ else if (0 == strcmp(xenfb->protocol, XEN_IO_PROTO_ABI_X86_32))
++ mode = 32;
++ else if (0 == strcmp(xenfb->protocol, XEN_IO_PROTO_ABI_X86_64))
++ mode = 64;
++ else
++ return -1;
++
++ if (mode == 32)
++ return oldxenfb_fb_event32(xenfb, event);
++ else
++ return oldxenfb_fb_event64(xenfb, event);
++}
++
++
+static int oldxenfb_kbd_event(struct xenfb_private *xenfb,
+ union xenkbd_in_event *event)
+{
@@ -612,10 +695,10 @@
+ xs_unwatch(xsh, p, "");
+ return ret;
+}
-diff -ruNp xen-3.1.0-src.orig/tools/ioemu/hw/oldxenfb.h xen-3.1.0-src.new/tools/ioemu/hw/oldxenfb.h
+diff -rupN xen-3.1.0-src.orig/tools/ioemu/hw/oldxenfb.h xen-3.1.0-src.new/tools/ioemu/hw/oldxenfb.h
--- xen-3.1.0-src.orig/tools/ioemu/hw/oldxenfb.h 1969-12-31 19:00:00.000000000 -0500
-+++ xen-3.1.0-src.new/tools/ioemu/hw/oldxenfb.h 2007-09-24 18:50:44.000000000 -0400
-@@ -0,0 +1,106 @@
++++ xen-3.1.0-src.new/tools/ioemu/hw/oldxenfb.h 2007-09-25 00:44:17.000000000 -0400
+@@ -0,0 +1,133 @@
+/*
+ * linux/include/linux/xenfb.h -- Xen virtual frame buffer device
+ *
@@ -716,15 +799,42 @@
+
+ unsigned long pd[2]; /* FIXME rename to pgdir? */
+ /* FIXME pd[1] unused at this time, shrink? */
++};
++
++struct xenfb_page32
++{
++ __u16 width; /* the width of the framebuffer (in pixels) */
++ __u16 height; /* the height of the framebuffer (in pixels) */
++ __u32 line_length; /* the length of a row of pixels (in bytes) */
++ __u32 mem_length; /* the length of the framebuffer (in bytes) */
++ __u8 depth; /* the depth of a pixel (in bits) */
++
++ __u32 pd[2]; /* FIXME rename to pgdir? */
++ /* FIXME pd[1] unused at this time, shrink? */
++
++ __u32 in_cons, in_prod;
++ __u32 out_cons, out_prod;
++};
++
++struct xenfb_page64
++{
++ __u16 width; /* the width of the framebuffer (in pixels) */
++ __u16 height; /* the height of the framebuffer (in pixels) */
++ __u32 line_length; /* the length of a row of pixels (in bytes) */
++ __u32 mem_length; /* the length of the framebuffer (in bytes) */
++ __u8 depth; /* the depth of a pixel (in bits) */
++
++ __u64 pd[2]; /* FIXME rename to pgdir? */
++ /* FIXME pd[1] unused at this time, shrink? */
+
+ __u32 in_cons, in_prod;
+ __u32 out_cons, out_prod;
+};
+
+#endif
-diff -ruNp xen-3.1.0-src.orig/tools/ioemu/hw/oldxenkbd.h xen-3.1.0-src.new/tools/ioemu/hw/oldxenkbd.h
+diff -rupN xen-3.1.0-src.orig/tools/ioemu/hw/oldxenkbd.h xen-3.1.0-src.new/tools/ioemu/hw/oldxenkbd.h
--- xen-3.1.0-src.orig/tools/ioemu/hw/oldxenkbd.h 1969-12-31 19:00:00.000000000 -0500
-+++ xen-3.1.0-src.new/tools/ioemu/hw/oldxenkbd.h 2007-09-24 18:50:44.000000000 -0400
++++ xen-3.1.0-src.new/tools/ioemu/hw/oldxenkbd.h 2007-09-25 00:42:39.000000000 -0400
@@ -0,0 +1,92 @@
+/*
+ * linux/include/linux/xenkbd.h -- Xen virtual keyboard/mouse
@@ -818,9 +928,9 @@
+void xenkbd_resume(void);
+
+#endif
-diff -ruNp xen-3.1.0-src.orig/tools/ioemu/hw/xenfb.c xen-3.1.0-src.new/tools/ioemu/hw/xenfb.c
---- xen-3.1.0-src.orig/tools/ioemu/hw/xenfb.c 2007-09-24 18:42:25.000000000 -0400
-+++ xen-3.1.0-src.new/tools/ioemu/hw/xenfb.c 2007-09-24 18:50:44.000000000 -0400
+diff -rupN xen-3.1.0-src.orig/tools/ioemu/hw/xenfb.c xen-3.1.0-src.new/tools/ioemu/hw/xenfb.c
+--- xen-3.1.0-src.orig/tools/ioemu/hw/xenfb.c 2007-09-25 00:39:46.000000000 -0400
++++ xen-3.1.0-src.new/tools/ioemu/hw/xenfb.c 2007-09-25 00:42:39.000000000 -0400
@@ -41,6 +41,7 @@ struct xenfb_private {
struct xenfb_device fb, kbd;
size_t fb_len; /* size of framebuffer */
@@ -896,9 +1006,9 @@
memset(&event, 0, XENKBD_IN_EVENT_SIZE);
event.type = XENKBD_TYPE_POS;
event.pos.abs_x = abs_x;
-diff -ruNp xen-3.1.0-src.orig/tools/ioemu/hw/xenfb.h xen-3.1.0-src.new/tools/ioemu/hw/xenfb.h
---- xen-3.1.0-src.orig/tools/ioemu/hw/xenfb.h 2007-09-24 18:42:25.000000000 -0400
-+++ xen-3.1.0-src.new/tools/ioemu/hw/xenfb.h 2007-09-24 18:50:44.000000000 -0400
+diff -rupN xen-3.1.0-src.orig/tools/ioemu/hw/xenfb.h xen-3.1.0-src.new/tools/ioemu/hw/xenfb.h
+--- xen-3.1.0-src.orig/tools/ioemu/hw/xenfb.h 2007-09-25 00:39:46.000000000 -0400
++++ xen-3.1.0-src.new/tools/ioemu/hw/xenfb.h 2007-09-25 00:42:39.000000000 -0400
@@ -36,4 +36,18 @@ int xenfb_send_key(struct xenfb *xenfb,
int xenfb_send_motion(struct xenfb *xenfb, int rel_x, int rel_y);
int xenfb_send_position(struct xenfb *xenfb, int abs_x, int abs_y);
@@ -918,9 +1028,9 @@
+
+
#endif
-diff -ruNp xen-3.1.0-src.orig/tools/ioemu/Makefile.target xen-3.1.0-src.new/tools/ioemu/Makefile.target
---- xen-3.1.0-src.orig/tools/ioemu/Makefile.target 2007-09-24 18:42:25.000000000 -0400
-+++ xen-3.1.0-src.new/tools/ioemu/Makefile.target 2007-09-24 18:50:44.000000000 -0400
+diff -rupN xen-3.1.0-src.orig/tools/ioemu/Makefile.target xen-3.1.0-src.new/tools/ioemu/Makefile.target
+--- xen-3.1.0-src.orig/tools/ioemu/Makefile.target 2007-09-25 00:39:46.000000000 -0400
++++ xen-3.1.0-src.new/tools/ioemu/Makefile.target 2007-09-25 00:42:39.000000000 -0400
@@ -371,7 +371,7 @@ VL_OBJS+= xenstore.o
VL_OBJS+= xen_platform.o
VL_OBJS+= xen_machine_fv.o
@@ -930,9 +1040,9 @@
VL_OBJS+= tpm_tis.o
DEFINES += -DHAS_AUDIO
endif
-diff -ruNp xen-3.1.0-src.orig/tools/python/xen/xend/server/vfbif.py xen-3.1.0-src.new/tools/python/xen/xend/server/vfbif.py
---- xen-3.1.0-src.orig/tools/python/xen/xend/server/vfbif.py 2007-09-24 18:42:25.000000000 -0400
-+++ xen-3.1.0-src.new/tools/python/xen/xend/server/vfbif.py 2007-09-24 18:50:44.000000000 -0400
+diff -rupN xen-3.1.0-src.orig/tools/python/xen/xend/server/vfbif.py xen-3.1.0-src.new/tools/python/xen/xend/server/vfbif.py
+--- xen-3.1.0-src.orig/tools/python/xen/xend/server/vfbif.py 2007-09-25 00:39:46.000000000 -0400
++++ xen-3.1.0-src.new/tools/python/xen/xend/server/vfbif.py 2007-09-25 00:42:39.000000000 -0400
@@ -50,7 +50,11 @@ class VfbifController(DevController):
if self.vm.info.is_hvm():
# is HVM, so qemu-dm will handle the vfb.
@@ -946,9 +1056,9 @@
args = [ xen.util.auxbin.pathTo("qemu-dm"),
"-M", "xenpv",
"-d", "%d" % self.vm.getDomid(),
-diff -ruNp xen-3.1.0-src.orig/tools/python/xen/xend/XendConfig.py xen-3.1.0-src.new/tools/python/xen/xend/XendConfig.py
+diff -rupN xen-3.1.0-src.orig/tools/python/xen/xend/XendConfig.py xen-3.1.0-src.new/tools/python/xen/xend/XendConfig.py
--- xen-3.1.0-src.orig/tools/python/xen/xend/XendConfig.py 2007-05-18 10:45:21.000000000 -0400
-+++ xen-3.1.0-src.new/tools/python/xen/xend/XendConfig.py 2007-09-24 18:50:44.000000000 -0400
++++ xen-3.1.0-src.new/tools/python/xen/xend/XendConfig.py 2007-09-25 00:42:39.000000000 -0400
@@ -689,7 +689,7 @@ class XendConfig(dict):
self['vtpm_refs'] = cfg.get('vtpm_refs', [])
@@ -967,9 +1077,9 @@
if key in self['platform']:
dev_config.append([key, self['platform'][key]])
-diff -ruNp xen-3.1.0-src.orig/tools/python/xen/xm/create.py xen-3.1.0-src.new/tools/python/xen/xm/create.py
+diff -rupN xen-3.1.0-src.orig/tools/python/xen/xm/create.py xen-3.1.0-src.new/tools/python/xen/xm/create.py
--- xen-3.1.0-src.orig/tools/python/xen/xm/create.py 2007-05-18 10:45:21.000000000 -0400
-+++ xen-3.1.0-src.new/tools/python/xen/xm/create.py 2007-09-24 18:50:44.000000000 -0400
++++ xen-3.1.0-src.new/tools/python/xen/xm/create.py 2007-09-25 00:42:39.000000000 -0400
@@ -610,7 +610,7 @@ def configure_vfbs(config_devs, vals):
d['type'] = 'sdl'
for (k,v) in d.iteritems():
More information about the fedora-extras-commits
mailing list