diff options
author | Keir Fraser <keir@xensource.com> | 2007-10-25 15:54:19 +0100 |
---|---|---|
committer | Keir Fraser <keir@xensource.com> | 2007-10-25 15:54:19 +0100 |
commit | bb59a254afbc5cef94d6b02d707bcf6906c59b05 (patch) | |
tree | 53eff041b7618d55a72637a8c1c67277a680ddb4 /unmodified_drivers/linux-2.6/platform-pci | |
parent | 80273cb18f581206d41a47f011e85d7badee02dc (diff) | |
download | xen-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/linux-2.6/platform-pci')
3 files changed, 19 insertions, 8 deletions
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"); |