Merge git://git.infradead.org/iommu-2.6
[pandora-kernel.git] / drivers / pci / intr_remapping.c
index 1694a0e..fd1d286 100644 (file)
@@ -21,6 +21,8 @@ static int ir_ioapic_num, ir_hpet_num;
 int intr_remapping_enabled;
 
 static int disable_intremap;
+static int disable_sourceid_checking;
+
 static __init int setup_nointremap(char *str)
 {
        disable_intremap = 1;
@@ -28,6 +30,22 @@ static __init int setup_nointremap(char *str)
 }
 early_param("nointremap", setup_nointremap);
 
+static __init int setup_intremap(char *str)
+{
+       if (!str)
+               return -EINVAL;
+
+       if (!strncmp(str, "on", 2))
+               disable_intremap = 0;
+       else if (!strncmp(str, "off", 3))
+               disable_intremap = 1;
+       else if (!strncmp(str, "nosid", 5))
+               disable_sourceid_checking = 1;
+
+       return 0;
+}
+early_param("intremap", setup_intremap);
+
 struct irq_2_iommu {
        struct intel_iommu *iommu;
        u16 irte_index;
@@ -453,6 +471,8 @@ int free_irte(int irq)
 static void set_irte_sid(struct irte *irte, unsigned int svt,
                         unsigned int sq, unsigned int sid)
 {
+       if (disable_sourceid_checking)
+               svt = SVT_NO_VERIFY;
        irte->svt = svt;
        irte->sq = sq;
        irte->sid = sid;