summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEric W. Biederman <ebiederm@xmission.com>2006-10-04 02:17:01 -0700
committerLinus Torvalds <torvalds@g5.osdl.org>2006-10-04 07:55:30 -0700
commit95d77884c77beed676036d2f74d10b470a483c63 (patch)
tree7897bc159d0d8ac972abc76e01d6e54c2bca3c84
parent03571e11c4a6d08230657f80970f0a5cc7820471 (diff)
[PATCH] htirq: tidy up the htirq code
This moves the declarations for the architecture helpers into include/linux/htirq.h from the generic include/linux/pci.h. Hopefully this will make this distinction clearer. htirq.h is included where it is needed. The dependency on the msi code is fixed and removed. The Makefile is tidied up. Signed-off-by: Eric W. Biederman <ebiederm@xmission.com> Cc: Ingo Molnar <mingo@elte.hu> Cc: Tony Luck <tony.luck@intel.com> Cc: Andi Kleen <ak@suse.de> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Greg KH <greg@kroah.com> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
-rw-r--r--arch/i386/kernel/io_apic.c5
-rw-r--r--arch/x86_64/kernel/io_apic.c1
-rw-r--r--drivers/pci/Kconfig1
-rw-r--r--drivers/pci/Makefile4
-rw-r--r--drivers/pci/htirq.c1
-rw-r--r--include/linux/htirq.h15
-rw-r--r--include/linux/pci.h11
7 files changed, 22 insertions, 16 deletions
diff --git a/arch/i386/kernel/io_apic.c b/arch/i386/kernel/io_apic.c
index 5a1252753db..b7287fb499f 100644
--- a/arch/i386/kernel/io_apic.c
+++ b/arch/i386/kernel/io_apic.c
@@ -33,6 +33,7 @@
#include <linux/sysdev.h>
#include <linux/pci.h>
#include <linux/msi.h>
+#include <linux/htirq.h>
#include <asm/io.h>
#include <asm/smp.h>
@@ -2409,9 +2410,8 @@ static int __init ioapic_init_sysfs(void)
device_initcall(ioapic_init_sysfs);
-#ifdef CONFIG_PCI_MSI
/*
- * Dynamic irq allocate and deallocation for MSI
+ * Dynamic irq allocate and deallocation
*/
int create_irq(void)
{
@@ -2450,7 +2450,6 @@ void destroy_irq(unsigned int irq)
irq_vector[irq] = 0;
spin_unlock_irqrestore(&vector_lock, flags);
}
-#endif /* CONFIG_PCI_MSI */
/*
* MSI mesage composition
diff --git a/arch/x86_64/kernel/io_apic.c b/arch/x86_64/kernel/io_apic.c
index e55028fba94..91728d9d347 100644
--- a/arch/x86_64/kernel/io_apic.c
+++ b/arch/x86_64/kernel/io_apic.c
@@ -31,6 +31,7 @@
#include <linux/acpi.h>
#include <linux/sysdev.h>
#include <linux/msi.h>
+#include <linux/htirq.h>
#ifdef CONFIG_ACPI
#include <acpi/acpi_bus.h>
#endif
diff --git a/drivers/pci/Kconfig b/drivers/pci/Kconfig
index 0af6d728841..30294127a0a 100644
--- a/drivers/pci/Kconfig
+++ b/drivers/pci/Kconfig
@@ -55,7 +55,6 @@ config PCI_DEBUG
config HT_IRQ
bool "Interrupts on hypertransport devices"
default y
- depends on PCI_MSI
depends on X86_LOCAL_APIC && X86_IO_APIC
help
This allows native hypertransport devices to use interrupts.
diff --git a/drivers/pci/Makefile b/drivers/pci/Makefile
index 04694ec7224..e3beb784406 100644
--- a/drivers/pci/Makefile
+++ b/drivers/pci/Makefile
@@ -17,6 +17,9 @@ obj-$(CONFIG_HOTPLUG_PCI) += hotplug/
# Build the PCI MSI interrupt support
obj-$(CONFIG_PCI_MSI) += msi.o
+# Build the Hypertransport interrupt support
+obj-$(CONFIG_HT_IRQ) += htirq.o
+
#
# Some architectures use the generic PCI setup functions
#
@@ -29,7 +32,6 @@ obj-$(CONFIG_PPC32) += setup-irq.o
obj-$(CONFIG_PPC64) += setup-bus.o
obj-$(CONFIG_MIPS) += setup-bus.o setup-irq.o
obj-$(CONFIG_X86_VISWS) += setup-irq.o
-obj-$(CONFIG_HT_IRQ) += htirq.o
#
# ACPI Related PCI FW Functions
diff --git a/drivers/pci/htirq.c b/drivers/pci/htirq.c
index 4ba46359d36..0e27f2404a8 100644
--- a/drivers/pci/htirq.c
+++ b/drivers/pci/htirq.c
@@ -11,6 +11,7 @@
#include <linux/spinlock.h>
#include <linux/slab.h>
#include <linux/gfp.h>
+#include <linux/htirq.h>
/* Global ht irq lock.
*
diff --git a/include/linux/htirq.h b/include/linux/htirq.h
new file mode 100644
index 00000000000..1f15ce279a2
--- /dev/null
+++ b/include/linux/htirq.h
@@ -0,0 +1,15 @@
+#ifndef LINUX_HTIRQ_H
+#define LINUX_HTIRQ_H
+
+/* Helper functions.. */
+void write_ht_irq_low(unsigned int irq, u32 data);
+void write_ht_irq_high(unsigned int irq, u32 data);
+u32 read_ht_irq_low(unsigned int irq);
+u32 read_ht_irq_high(unsigned int irq);
+void mask_ht_irq(unsigned int irq);
+void unmask_ht_irq(unsigned int irq);
+
+/* The arch hook for getting things started */
+int arch_setup_ht_irq(unsigned int irq, struct pci_dev *dev);
+
+#endif /* LINUX_HTIRQ_H */
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 0da5a4a8940..5c604f5fad6 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -615,20 +615,9 @@ extern void msi_remove_pci_irq_vectors(struct pci_dev *dev);
#endif
#ifdef CONFIG_HT_IRQ
-/* Helper functions.. */
-void write_ht_irq_low(unsigned int irq, u32 data);
-void write_ht_irq_high(unsigned int irq, u32 data);
-u32 read_ht_irq_low(unsigned int irq);
-u32 read_ht_irq_high(unsigned int irq);
-void mask_ht_irq(unsigned int irq);
-void unmask_ht_irq(unsigned int irq);
-
/* The functions a driver should call */
int ht_create_irq(struct pci_dev *dev, int idx);
void ht_destroy_irq(unsigned int irq);
-
-/* The arch hook for getting things started */
-int arch_setup_ht_irq(unsigned int irq, struct pci_dev *dev);
#endif /* CONFIG_HT_IRQ */
extern void pci_block_user_cfg_access(struct pci_dev *dev);