aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/asm-x86/msi.h
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@suse.com>2011-09-18 00:26:52 +0100
committerJan Beulich <jbeulich@suse.com>2011-09-18 00:26:52 +0100
commit1b0061ac2b57297e7d7211ce6f4e1b197b8e0ec2 (patch)
tree4bb3b14eb7af3223ce36a09fbf9de90776aa3919 /xen/include/asm-x86/msi.h
parentac4afd4aaac5f8e6e706f97bbfb0bd925577ed15 (diff)
downloadxen-1b0061ac2b57297e7d7211ce6f4e1b197b8e0ec2.tar.gz
xen-1b0061ac2b57297e7d7211ce6f4e1b197b8e0ec2.tar.bz2
xen-1b0061ac2b57297e7d7211ce6f4e1b197b8e0ec2.zip
x86: split MSI IRQ chip
With the .end() accessor having become optional and noting that several of the accessors' behavior really depends on the result of msi_maskable_irq(), the splits the MSI IRQ chip type into two - one for the maskable ones, and the other for the (MSI only) non-maskable ones. At once the implementation of those methods gets moved from io_apic.c to msi.c. Signed-off-by: Jan Beulich <jbeulich@suse.com>
Diffstat (limited to 'xen/include/asm-x86/msi.h')
-rw-r--r--xen/include/asm-x86/msi.h16
1 files changed, 7 insertions, 9 deletions
diff --git a/xen/include/asm-x86/msi.h b/xen/include/asm-x86/msi.h
index 5917746a39..09d4231ece 100644
--- a/xen/include/asm-x86/msi.h
+++ b/xen/include/asm-x86/msi.h
@@ -74,15 +74,14 @@ struct msi_msg {
u32 dest32; /* used when Interrupt Remapping with EIM is enabled */
};
+struct irq_desc;
struct msi_desc;
/* Helper functions */
-extern void mask_msi_irq(struct irq_desc *);
-extern void unmask_msi_irq(struct irq_desc *);
-extern void set_msi_affinity(struct irq_desc *, const cpumask_t *);
extern int pci_enable_msi(struct msi_info *msi, struct msi_desc **desc);
extern void pci_disable_msi(struct msi_desc *desc);
extern void pci_cleanup_msi(struct pci_dev *pdev);
-extern int setup_msi_irq(struct msi_desc *desc, int irq);
+extern void setup_msi_handler(struct irq_desc *, struct msi_desc *);
+extern void setup_msi_irq(struct irq_desc *);
extern void teardown_msi_irq(int irq);
extern int msi_free_vector(struct msi_desc *entry);
extern int pci_restore_msi_state(struct pci_dev *pdev);
@@ -90,14 +89,14 @@ extern int pci_restore_msi_state(struct pci_dev *pdev);
extern unsigned int pci_msix_get_table_len(struct pci_dev *pdev);
struct msi_desc {
- struct {
+ struct msi_attrib {
__u8 type : 5; /* {0: unused, 5h:MSI, 11h:MSI-X} */
__u8 maskbit : 1; /* mask-pending bit supported ? */
__u8 masked : 1;
__u8 is_64 : 1; /* Address size: 0=32bit 1=64bit */
__u8 pos; /* Location of the msi capability */
__u16 entry_nr; /* specific enabled entry */
- }msi_attrib;
+ } msi_attrib;
struct list_head list;
@@ -123,8 +122,6 @@ int msi_free_irq(struct msi_desc *entry);
*/
#define NR_HP_RESERVED_VECTORS 20
-extern const struct hw_interrupt_type pci_msi_type;
-
#define PCI_MSIX_ENTRY_SIZE 16
#define PCI_MSIX_ENTRY_LOWER_ADDR_OFFSET 0
#define PCI_MSIX_ENTRY_UPPER_ADDR_OFFSET 4
@@ -222,5 +219,6 @@ struct msg_address {
__u32 hi_address;
} __attribute__ ((packed));
-void msi_compose_msg(int irq, struct msi_msg *);
+void msi_compose_msg(struct irq_desc *, struct msi_msg *);
+
#endif /* __ASM_MSI_H */