Both distros now include Xen support from their respective upstreams and these
kernels are very out of date wrt both the upstream distro kernel and the
upstream Xen kernel.
Signed-off-by: Ian Campbell <ian.campbell@xxxxxxxxxx>
diff -r 6d41644623de -r 261a36c617df buildconfigs/mk.linux-2.6.5-SLES-xen
--- a/buildconfigs/mk.linux-2.6.5-SLES-xen Mon Jul 20 10:58:06 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-XEN_TARGET_ARCH = x86_32
-
-EXTRAVERSION = -xen
-LINUX_VER = 2.6.5-SLES
-
-XEN_LINUX_SOURCE = hg-clone
-XEN_LINUX_HGREPO ?= http://xenbits.xensource.com/kernels/sles9x.hg
-XEN_LINUX_HGREV ?= tip
-
-include buildconfigs/mk.linux-2.6-xen
diff -r 6d41644623de -r 261a36c617df buildconfigs/mk.linux-2.6.9-RHEL-xen
--- a/buildconfigs/mk.linux-2.6.9-RHEL-xen Mon Jul 20 10:58:06 2009 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,10 +0,0 @@
-XEN_TARGET_ARCH = x86_32
-
-EXTRAVERSION = -xen
-LINUX_VER = 2.6.9-RHEL
-
-XEN_LINUX_SOURCE = hg-clone
-XEN_LINUX_HGREPO ?= http://xenbits.xensource.com/kernels/rhel4x.hg
-XEN_LINUX_HGREV ?= tip
-
-include buildconfigs/mk.linux-2.6-xen
diff -r 6d41644623de -r 261a36c617df
unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
--- a/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c Mon Jul 20
10:58:06 2009 +0100
+++ b/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c Mon Jul 20
15:29:10 2009 +0100
@@ -257,6 +257,60 @@
int xen_panic_handler_init(void);
int gnttab_init(void);
+#define XEN_IOPORT_BASE 0x10
+
+#define XEN_IOPORT_PLATFLAGS (XEN_IOPORT_BASE + 0) /* 1 byte access (R/W) */
+#define XEN_IOPORT_MAGIC (XEN_IOPORT_BASE + 0) /* 2 byte access (R) */
+#define XEN_IOPORT_UNPLUG (XEN_IOPORT_BASE + 0) /* 2 byte access (W) */
+#define XEN_IOPORT_DRVVER (XEN_IOPORT_BASE + 0) /* 4 byte access (W) */
+
+#define XEN_IOPORT_SYSLOG (XEN_IOPORT_BASE + 2) /* 1 byte access (W) */
+#define XEN_IOPORT_PROTOVER (XEN_IOPORT_BASE + 2) /* 1 byte access (R) */
+#define XEN_IOPORT_PRODNUM (XEN_IOPORT_BASE + 2) /* 2 byte access (W) */
+
+#define XEN_IOPORT_MAGIC_VAL 0x49d2
+#define XEN_IOPORT_LINUX_PRODNUM 0xffff /* NB: register a proper one */
+#define XEN_IOPORT_LINUX_DRVVER ((LINUX_VERSION_CODE << 8) + 0x0)
+
+static int check_platform_magic(struct device *dev, long ioaddr, long iolen)
+{
+ short magic;
+ char protocol;
+
+ if (iolen < 0x16)
+ return -ENODEV;
+
+ magic = inw(XEN_IOPORT_MAGIC);
+
+ if (magic != XEN_IOPORT_MAGIC_VAL) {
+ dev_err(dev, "invalid magic %#x", magic);
+ return -ENODEV;
+ }
+
+ protocol = inb(XEN_IOPORT_PROTOVER);
+
+ dev_info(dev, "I/O protocol version %d\n", protocol);
+
+ switch (protocol) {
+ case 1:
+ outw(XEN_IOPORT_PRODNUM, 0xbeef);
+ outl(XEN_IOPORT_DRVVER, 0xdead);
+ if (inw(XEN_IOPORT_MAGIC) != XEN_IOPORT_MAGIC_VAL) {
+ dev_err(dev, "blacklisted by host\n");
+ return -ENODEV;
+ }
+ /* Fall through */
+ case 0:
+ outw(XEN_IOPORT_UNPLUG, 0xf);
+ break;
+ default:
+ dev_err(dev, "unknown qemu version\n");
+ return -ENODEV;
+ }
+
+ return 0;
+}
+
static int __devinit platform_pci_init(struct pci_dev *pdev,
const struct pci_device_id *ent)
{
@@ -302,6 +356,10 @@
platform_mmiolen = mmio_len;
ret = init_hypercall_stubs();
+ if (ret < 0)
+ goto out;
+
+ ret = check_platform_magic(&pdev->dev, ioaddr, iolen);
if (ret < 0)
goto out;
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|