Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > 27922b4260f65d317aabda37e42bbbff > files > 1993

kernel-2.6.18-238.el5.src.rpm

From: Don Dutile <ddutile@redhat.com>
Date: Fri, 15 May 2009 10:21:12 -0400
Subject: [misc] IOMMU MSI header cleanup
Message-id: 4A0D7A58.3050503@redhat.com
O-Subject: [RHEL5.4 PATCH 1/3] IOMMU MSI header cleanup
Bugzilla: 500901
RH-Acked-by: Rik van Riel <riel@redhat.com>
RH-Acked-by: Justin M. Forbes <jforbes@redhat.com>
RH-Acked-by: Chris Wright <chrisw@redhat.com>

BZ 500901

MSI related h-files are split differently to
enable KVM to be built using arch-independent h files (linux/msi.h)
vs arch-dependent h-file (linux/dmar.h).
msidef.h is placed in common linux directory
vs. per-arch directory as upstream does in order not to
replicate it for ia64 & ppc64 (& if we ever support i386, that too!).

  arch/x86_64/kernel/io_apic.c |    1 +
  drivers/pci/msi-apic.c       |    2 +-
  include/linux/dmar.h         |    6 ----
  include/linux/msi.h          |   55 ++++--------------------------------------
  include/linux/msidef.h       |   55 ++++++++++++++++++++++++++++++++++++++++++
  5 files changed, 62 insertions(+), 57 deletions(-)
  create mode 100644 include/linux/msidef.h

Please review and ack.
Note: this bz is a beta blocker for 5.4.

- Don

diff --git a/arch/x86_64/kernel/io_apic.c b/arch/x86_64/kernel/io_apic.c
index 9cf3574..e4ddc3c 100644
--- a/arch/x86_64/kernel/io_apic.c
+++ b/arch/x86_64/kernel/io_apic.c
@@ -30,6 +30,7 @@
 #include <linux/acpi.h>
 #include <linux/sysdev.h>
 #include <linux/msi.h>
+#include <linux/msidef.h>
 #ifdef CONFIG_ACPI
 #include <acpi/acpi_bus.h>
 #endif
diff --git a/drivers/pci/msi-apic.c b/drivers/pci/msi-apic.c
index ce62574..3ba41e6 100644
--- a/drivers/pci/msi-apic.c
+++ b/drivers/pci/msi-apic.c
@@ -4,7 +4,7 @@
 
 #include <linux/pci.h>
 #include <linux/irq.h>
-#include <linux/msi.h>
+#include <linux/msidef.h>
 #include <asm/smp.h>
 
 #include "msi.h"
diff --git a/include/linux/dmar.h b/include/linux/dmar.h
index 867dc97..56d5435 100644
--- a/include/linux/dmar.h
+++ b/include/linux/dmar.h
@@ -167,12 +167,6 @@ static inline struct intel_iommu *map_ioapic_to_ir(int apic)
 
 extern const char *dmar_get_fault_reason(u8 fault_reason, int* fault_type);
 
-struct msi_msg {
-        u32     address_lo;     /* low 32 bits of msi message address */
-        u32     address_hi;     /* high 32 bits of msi message address */
-        u32     data;           /* 16 bits of msi message data */
-};
-
 /* Can't use the common MSI interrupt functions
  * since DMAR is not a pci device
  */
diff --git a/include/linux/msi.h b/include/linux/msi.h
index 92f9d3e..ad63983 100644
--- a/include/linux/msi.h
+++ b/include/linux/msi.h
@@ -1,55 +1,10 @@
 #ifndef LINUX_MSI_H
 #define LINUX_MSI_H
 
-/*
- * Constants for Intel APIC based MSI messages.
- */
-
-/*
- * Shifts for MSI data
- */
-
-#define MSI_DATA_VECTOR_SHIFT           0
-#define  MSI_DATA_VECTOR_MASK           0x000000ff
-#define  MSI_DATA_VECTOR(v)             (((v) << MSI_DATA_VECTOR_SHIFT) & \
-						MSI_DATA_VECTOR_MASK)
-
-#define MSI_DATA_DELIVERY_MODE_SHIFT    8
-#define  MSI_DATA_DELIVERY_FIXED        (0 << MSI_DATA_DELIVERY_MODE_SHIFT)
-#define  MSI_DATA_DELIVERY_LOWPRI       (1 << MSI_DATA_DELIVERY_MODE_SHIFT)
-
-#define MSI_DATA_LEVEL_SHIFT            14
-#define  MSI_DATA_LEVEL_DEASSERT        (0 << MSI_DATA_LEVEL_SHIFT)
-#define  MSI_DATA_LEVEL_ASSERT          (1 << MSI_DATA_LEVEL_SHIFT)
-
-#define MSI_DATA_TRIGGER_SHIFT          15
-#define  MSI_DATA_TRIGGER_EDGE          (0 << MSI_DATA_TRIGGER_SHIFT)
-#define  MSI_DATA_TRIGGER_LEVEL         (1 << MSI_DATA_TRIGGER_SHIFT)
-
-/*
- * Shift/mask fields for msi address
- */
-
-#define MSI_ADDR_BASE_HI                0
-#define MSI_ADDR_BASE_LO                0xfee00000
-
-#define MSI_ADDR_DEST_MODE_SHIFT        2
-#define  MSI_ADDR_DEST_MODE_PHYSICAL    (0 << MSI_ADDR_DEST_MODE_SHIFT)
-#define  MSI_ADDR_DEST_MODE_LOGICAL     (1 << MSI_ADDR_DEST_MODE_SHIFT)
-
-#define MSI_ADDR_REDIRECTION_SHIFT      3
-#define  MSI_ADDR_REDIRECTION_CPU       (0 << MSI_ADDR_REDIRECTION_SHIFT)
-					/* dedicated cpu */
-#define  MSI_ADDR_REDIRECTION_LOWPRI    (1 << MSI_ADDR_REDIRECTION_SHIFT)
-					/* lowest priority */
-#define MSI_ADDR_DEST_ID_SHIFT          12
-#define  MSI_ADDR_DEST_ID_MASK          0x00ffff0
-#define  MSI_ADDR_DEST_ID(dest)         (((dest) << MSI_ADDR_DEST_ID_SHIFT) & \
-						MSI_ADDR_DEST_ID_MASK)
-#define MSI_ADDR_EXT_DEST_ID(dest)      ((dest) & 0xffffff00)
-#define MSI_ADDR_IR_EXT_INT             (1 << 4)
-#define MSI_ADDR_IR_SHV                 (1 << 3)
-#define MSI_ADDR_IR_INDEX1(index)       ((index & 0x8000) >> 13)
-#define MSI_ADDR_IR_INDEX2(index)       ((index & 0x7fff) << 5)
+struct msi_msg {
+        u32     address_lo;     /* low 32 bits of msi message address */
+        u32     address_hi;     /* high 32 bits of msi message address */
+        u32     data;           /* 16 bits of msi message data */
+};
 
 #endif /* LINUX_MSI_H */
diff --git a/include/linux/msidef.h b/include/linux/msidef.h
new file mode 100644
index 0000000..252019d
--- /dev/null
+++ b/include/linux/msidef.h
@@ -0,0 +1,55 @@
+#ifndef LINUX_MSIDEF_H
+#define LINUX_MSIDEF_H
+
+/*
+ * Constants for Intel APIC based MSI messages.
+ */
+
+/*
+ * Shifts for MSI data
+ */
+
+#define MSI_DATA_VECTOR_SHIFT           0
+#define  MSI_DATA_VECTOR_MASK           0x000000ff
+#define  MSI_DATA_VECTOR(v)             (((v) << MSI_DATA_VECTOR_SHIFT) & \
+						MSI_DATA_VECTOR_MASK)
+
+#define MSI_DATA_DELIVERY_MODE_SHIFT    8
+#define  MSI_DATA_DELIVERY_FIXED        (0 << MSI_DATA_DELIVERY_MODE_SHIFT)
+#define  MSI_DATA_DELIVERY_LOWPRI       (1 << MSI_DATA_DELIVERY_MODE_SHIFT)
+
+#define MSI_DATA_LEVEL_SHIFT            14
+#define  MSI_DATA_LEVEL_DEASSERT        (0 << MSI_DATA_LEVEL_SHIFT)
+#define  MSI_DATA_LEVEL_ASSERT          (1 << MSI_DATA_LEVEL_SHIFT)
+
+#define MSI_DATA_TRIGGER_SHIFT          15
+#define  MSI_DATA_TRIGGER_EDGE          (0 << MSI_DATA_TRIGGER_SHIFT)
+#define  MSI_DATA_TRIGGER_LEVEL         (1 << MSI_DATA_TRIGGER_SHIFT)
+
+/*
+ * Shift/mask fields for msi address
+ */
+
+#define MSI_ADDR_BASE_HI                0
+#define MSI_ADDR_BASE_LO                0xfee00000
+
+#define MSI_ADDR_DEST_MODE_SHIFT        2
+#define  MSI_ADDR_DEST_MODE_PHYSICAL    (0 << MSI_ADDR_DEST_MODE_SHIFT)
+#define  MSI_ADDR_DEST_MODE_LOGICAL     (1 << MSI_ADDR_DEST_MODE_SHIFT)
+
+#define MSI_ADDR_REDIRECTION_SHIFT      3
+#define  MSI_ADDR_REDIRECTION_CPU       (0 << MSI_ADDR_REDIRECTION_SHIFT)
+					/* dedicated cpu */
+#define  MSI_ADDR_REDIRECTION_LOWPRI    (1 << MSI_ADDR_REDIRECTION_SHIFT)
+					/* lowest priority */
+#define MSI_ADDR_DEST_ID_SHIFT          12
+#define  MSI_ADDR_DEST_ID_MASK          0x00ffff0
+#define  MSI_ADDR_DEST_ID(dest)         (((dest) << MSI_ADDR_DEST_ID_SHIFT) & \
+						MSI_ADDR_DEST_ID_MASK)
+#define MSI_ADDR_EXT_DEST_ID(dest)      ((dest) & 0xffffff00)
+#define MSI_ADDR_IR_EXT_INT             (1 << 4)
+#define MSI_ADDR_IR_SHV                 (1 << 3)
+#define MSI_ADDR_IR_INDEX1(index)       ((index & 0x8000) >> 13)
+#define MSI_ADDR_IR_INDEX2(index)       ((index & 0x7fff) << 5)
+
+#endif /* LINUX_MSIDEF_H */