aboutsummaryrefslogtreecommitdiffstats
path: root/unmodified_drivers
diff options
context:
space:
mode:
authorKeir Fraser <keir@xensource.com>2007-10-25 15:54:19 +0100
committerKeir Fraser <keir@xensource.com>2007-10-25 15:54:19 +0100
commitbb59a254afbc5cef94d6b02d707bcf6906c59b05 (patch)
tree53eff041b7618d55a72637a8c1c67277a680ddb4 /unmodified_drivers
parent80273cb18f581206d41a47f011e85d7badee02dc (diff)
downloadxen-bb59a254afbc5cef94d6b02d707bcf6906c59b05.tar.gz
xen-bb59a254afbc5cef94d6b02d707bcf6906c59b05.tar.bz2
xen-bb59a254afbc5cef94d6b02d707bcf6906c59b05.zip
pv-on-hvm: fixes for unmodified drivers build and modern Linux
- The adjustments to README and overrides.mk are generic. - The removal of explicit linux/config.h inclusion should also not cause any issues. - The introduction of irq_handler_t should eliminiate warnings on 2.6.19+ kernels (I didn't check they're there, but since the request_irq prototype changed, I'm sure there's at least one. However, as a result changes to the Linux tree are expected to be required. - The change setup_xen_features -> xen_setup_features follows the naming in mainline 2.6.23 but would apparently also require changes to the Linux tree. - The changes SA_* -> IRQF_ and pci_module_init -> pci_register_driver should also not cause issues. Signed-off-by: Jan Beulich <jbeulich@novell.com>
Diffstat (limited to 'unmodified_drivers')
-rw-r--r--unmodified_drivers/linux-2.6/README10
-rw-r--r--unmodified_drivers/linux-2.6/compat-include/xen/platform-compat.h8
-rw-r--r--unmodified_drivers/linux-2.6/overrides.mk2
-rw-r--r--unmodified_drivers/linux-2.6/platform-pci/evtchn.c22
-rw-r--r--unmodified_drivers/linux-2.6/platform-pci/machine_reboot.c1
-rw-r--r--unmodified_drivers/linux-2.6/platform-pci/platform-pci.c4
6 files changed, 33 insertions, 14 deletions
diff --git a/unmodified_drivers/linux-2.6/README b/unmodified_drivers/linux-2.6/README
index f46da3d3aa..18d451c69c 100644
--- a/unmodified_drivers/linux-2.6/README
+++ b/unmodified_drivers/linux-2.6/README
@@ -1,12 +1,12 @@
To build:
1. ./mkbuildtree
- NB. You can override paths to Xen sources and XenLinux sources via
- the XEN and XL environment variable.
+ NB. You can override paths to Xen sources and a (stub) XenLinux
+ build tree via the XEN and XL environment variable.
-2. make -C /path/to/kernel/source M=$PWD modules
- NB. The kernel sources here are your native kernel build tree, not
- the XenLinux sources referred to in step 1.
+2. make -C /path/to/kernel/build M=$PWD modules
+ NB. This is your native kernel build tree (or a distro provided
+ stub), not the XenLinux sources referred to in step 1.
You get four modules, xen-platform-pci.ko, xenbus.ko, xen-vbd.ko, and
xen-vnif.ko. Load xen-platform-pci first, then xenbus, and then
diff --git a/unmodified_drivers/linux-2.6/compat-include/xen/platform-compat.h b/unmodified_drivers/linux-2.6/compat-include/xen/platform-compat.h
index 54a81f6ee9..c720d6e9be 100644
--- a/unmodified_drivers/linux-2.6/compat-include/xen/platform-compat.h
+++ b/unmodified_drivers/linux-2.6/compat-include/xen/platform-compat.h
@@ -125,4 +125,12 @@ extern char *kasprintf(gfp_t gfp, const char *fmt, ...)
#define DEFINE_RWLOCK(x) rwlock_t x = RW_LOCK_UNLOCKED
#endif
+#if defined(_LINUX_INTERRUPT_H) && LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
+typedef irqreturn_t (*irq_handler_t)(int, void *, struct pt_regs *);
+#endif
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,23)
+#define setup_xen_features xen_setup_features
+#endif
+
#endif
diff --git a/unmodified_drivers/linux-2.6/overrides.mk b/unmodified_drivers/linux-2.6/overrides.mk
index db791e75ef..643d814c56 100644
--- a/unmodified_drivers/linux-2.6/overrides.mk
+++ b/unmodified_drivers/linux-2.6/overrides.mk
@@ -11,4 +11,4 @@ ifeq ($(ARCH),ia64)
EXTRA_CFLAGS += -DCONFIG_VMX_GUEST
endif
-EXTRA_CFLAGS += -include $(srctree)/include/linux/autoconf.h
+EXTRA_CFLAGS += -include $(objtree)/include/linux/autoconf.h
diff --git a/unmodified_drivers/linux-2.6/platform-pci/evtchn.c b/unmodified_drivers/linux-2.6/platform-pci/evtchn.c
index 64bd7ca3ea..2efa6a353d 100644
--- a/unmodified_drivers/linux-2.6/platform-pci/evtchn.c
+++ b/unmodified_drivers/linux-2.6/platform-pci/evtchn.c
@@ -28,7 +28,6 @@
* IN THE SOFTWARE.
*/
-#include <linux/config.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/spinlock.h>
@@ -48,7 +47,7 @@ void *shared_info_area;
static struct {
spinlock_t lock;
- irqreturn_t(*handler) (int, void *, struct pt_regs *);
+ irq_handler_t handler;
void *dev_id;
int evtchn;
int close:1; /* close on unbind_from_irqhandler()? */
@@ -146,7 +145,7 @@ EXPORT_SYMBOL(unmask_evtchn);
int bind_listening_port_to_irqhandler(
unsigned int remote_domain,
- irqreturn_t (*handler)(int, void *, struct pt_regs *),
+ irq_handler_t handler,
unsigned long irqflags,
const char *devname,
void *dev_id)
@@ -187,7 +186,7 @@ EXPORT_SYMBOL(bind_listening_port_to_irqhandler);
int bind_caller_port_to_irqhandler(
unsigned int caller_port,
- irqreturn_t (*handler)(int, void *, struct pt_regs *),
+ irq_handler_t handler,
unsigned long irqflags,
const char *devname,
void *dev_id)
@@ -254,13 +253,18 @@ void notify_remote_via_irq(int irq)
}
EXPORT_SYMBOL(notify_remote_via_irq);
-static irqreturn_t evtchn_interrupt(int irq, void *dev_id,
- struct pt_regs *regs)
+static irqreturn_t evtchn_interrupt(int irq, void *dev_id
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,19)
+ , struct pt_regs *regs
+#else
+# define handler(irq, dev_id, regs) handler(irq, dev_id)
+#endif
+ )
{
unsigned int l1i, port;
/* XXX: All events are bound to vcpu0 but irq may be redirected. */
int cpu = 0; /*smp_processor_id();*/
- irqreturn_t(*handler) (int, void *, struct pt_regs *);
+ irq_handler_t handler;
shared_info_t *s = shared_info_area;
vcpu_info_t *v = &s->vcpu_info[cpu];
unsigned long l1, l2;
@@ -331,6 +335,10 @@ int xen_irq_init(struct pci_dev *pdev)
spin_lock_init(&irq_evtchn[irq].lock);
return request_irq(pdev->irq, evtchn_interrupt,
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,22)
SA_SHIRQ | SA_SAMPLE_RANDOM | SA_INTERRUPT,
+#else
+ IRQF_SHARED | IRQF_SAMPLE_RANDOM | IRQF_DISABLED,
+#endif
"xen-platform-pci", pdev);
}
diff --git a/unmodified_drivers/linux-2.6/platform-pci/machine_reboot.c b/unmodified_drivers/linux-2.6/platform-pci/machine_reboot.c
index 2c225b76ac..cb8cded198 100644
--- a/unmodified_drivers/linux-2.6/platform-pci/machine_reboot.c
+++ b/unmodified_drivers/linux-2.6/platform-pci/machine_reboot.c
@@ -1,4 +1,3 @@
-#include <linux/config.h>
#include <linux/cpumask.h>
#include <linux/preempt.h>
#include <xen/evtchn.h>
diff --git a/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c b/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
index e147f3d59a..7a512073d2 100644
--- a/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
+++ b/unmodified_drivers/linux-2.6/platform-pci/platform-pci.c
@@ -367,7 +367,11 @@ static int __init platform_pci_module_init(void)
{
int rc;
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,10)
rc = pci_module_init(&platform_driver);
+#else
+ rc = pci_register_driver(&platform_driver);
+#endif
if (rc) {
printk(KERN_INFO DRV_NAME
": No platform pci device model found\n");