提交 95d77884 编写于 作者: E Eric W. Biederman 提交者: Linus Torvalds

[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: NEric 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: NAndrew Morton <akpm@osdl.org>
Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
上级 03571e11
...@@ -33,6 +33,7 @@ ...@@ -33,6 +33,7 @@
#include <linux/sysdev.h> #include <linux/sysdev.h>
#include <linux/pci.h> #include <linux/pci.h>
#include <linux/msi.h> #include <linux/msi.h>
#include <linux/htirq.h>
#include <asm/io.h> #include <asm/io.h>
#include <asm/smp.h> #include <asm/smp.h>
...@@ -2409,9 +2410,8 @@ static int __init ioapic_init_sysfs(void) ...@@ -2409,9 +2410,8 @@ static int __init ioapic_init_sysfs(void)
device_initcall(ioapic_init_sysfs); 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) int create_irq(void)
{ {
...@@ -2450,7 +2450,6 @@ void destroy_irq(unsigned int irq) ...@@ -2450,7 +2450,6 @@ void destroy_irq(unsigned int irq)
irq_vector[irq] = 0; irq_vector[irq] = 0;
spin_unlock_irqrestore(&vector_lock, flags); spin_unlock_irqrestore(&vector_lock, flags);
} }
#endif /* CONFIG_PCI_MSI */
/* /*
* MSI mesage composition * MSI mesage composition
......
...@@ -31,6 +31,7 @@ ...@@ -31,6 +31,7 @@
#include <linux/acpi.h> #include <linux/acpi.h>
#include <linux/sysdev.h> #include <linux/sysdev.h>
#include <linux/msi.h> #include <linux/msi.h>
#include <linux/htirq.h>
#ifdef CONFIG_ACPI #ifdef CONFIG_ACPI
#include <acpi/acpi_bus.h> #include <acpi/acpi_bus.h>
#endif #endif
......
...@@ -55,7 +55,6 @@ config PCI_DEBUG ...@@ -55,7 +55,6 @@ config PCI_DEBUG
config HT_IRQ config HT_IRQ
bool "Interrupts on hypertransport devices" bool "Interrupts on hypertransport devices"
default y default y
depends on PCI_MSI
depends on X86_LOCAL_APIC && X86_IO_APIC depends on X86_LOCAL_APIC && X86_IO_APIC
help help
This allows native hypertransport devices to use interrupts. This allows native hypertransport devices to use interrupts.
......
...@@ -17,6 +17,9 @@ obj-$(CONFIG_HOTPLUG_PCI) += hotplug/ ...@@ -17,6 +17,9 @@ obj-$(CONFIG_HOTPLUG_PCI) += hotplug/
# Build the PCI MSI interrupt support # Build the PCI MSI interrupt support
obj-$(CONFIG_PCI_MSI) += msi.o 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 # Some architectures use the generic PCI setup functions
# #
...@@ -29,7 +32,6 @@ obj-$(CONFIG_PPC32) += setup-irq.o ...@@ -29,7 +32,6 @@ obj-$(CONFIG_PPC32) += setup-irq.o
obj-$(CONFIG_PPC64) += setup-bus.o obj-$(CONFIG_PPC64) += setup-bus.o
obj-$(CONFIG_MIPS) += setup-bus.o setup-irq.o obj-$(CONFIG_MIPS) += setup-bus.o setup-irq.o
obj-$(CONFIG_X86_VISWS) += setup-irq.o obj-$(CONFIG_X86_VISWS) += setup-irq.o
obj-$(CONFIG_HT_IRQ) += htirq.o
# #
# ACPI Related PCI FW Functions # ACPI Related PCI FW Functions
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include <linux/spinlock.h> #include <linux/spinlock.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/gfp.h> #include <linux/gfp.h>
#include <linux/htirq.h>
/* Global ht irq lock. /* Global ht irq lock.
* *
......
#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 */
...@@ -615,20 +615,9 @@ extern void msi_remove_pci_irq_vectors(struct pci_dev *dev); ...@@ -615,20 +615,9 @@ extern void msi_remove_pci_irq_vectors(struct pci_dev *dev);
#endif #endif
#ifdef CONFIG_HT_IRQ #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 */ /* The functions a driver should call */
int ht_create_irq(struct pci_dev *dev, int idx); int ht_create_irq(struct pci_dev *dev, int idx);
void ht_destroy_irq(unsigned int irq); 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 */ #endif /* CONFIG_HT_IRQ */
extern void pci_block_user_cfg_access(struct pci_dev *dev); extern void pci_block_user_cfg_access(struct pci_dev *dev);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册