Merge git://git.infradead.org/intel-iommu
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 27 Apr 2015 00:47:46 +0000 (17:47 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 27 Apr 2015 00:47:46 +0000 (17:47 -0700)
Pull intel iommu updates from David Woodhouse:
 "This lays a little of the groundwork for upcoming Shared Virtual
  Memory support — fixing some bogus #defines for capability bits and
  adding the new ones, and starting to use the new wider page tables
  where we can, in anticipation of actually filling in the new fields
  therein.

  It also allows graphics devices to be assigned to VM guests again.
  This got broken in 3.17 by disallowing assignment of RMRR-afflicted
  devices.  Like USB, we do understand why there's an RMRR for graphics
  devices — and unlike USB, it's actually sane.  So we can make an
  exception for graphics devices, just as we do USB controllers.

  Finally, tone down the warning about the X2APIC_OPT_OUT bit, due to
  persistent requests.  X2APIC_OPT_OUT was added to the spec as a nasty
  hack to allow broken BIOSes to forbid us from using X2APIC when they
  do stupid and invasive things and would break if we did.

  Someone noticed that since Windows doesn't have full IOMMU support for
  DMA protection, setting the X2APIC_OPT_OUT bit made Windows avoid
  initialising the IOMMU on the graphics unit altogether.

  This means that it would be available for use in "driver mode", where
  the IOMMU registers are made available through a BAR of the graphics
  device and the graphics driver can do SVM all for itself.

  So they started setting the X2APIC_OPT_OUT bit on *all* platforms with
  SVM capabilities.  And even the platforms which *might*, if the
  planets had been aligned correctly, possibly have had SVM capability
  but which in practice actually don't"

* git://git.infradead.org/intel-iommu:
  iommu/vt-d: support extended root and context entries
  iommu/vt-d: Add new extended capabilities from v2.3 VT-d specification
  iommu/vt-d: Allow RMRR on graphics devices too
  iommu/vt-d: Print x2apic opt out info instead of printing a warning
  iommu/vt-d: kill bogus ecap_niotlb_iunits()

1  2 
drivers/iommu/intel-iommu.c
drivers/iommu/intel_irq_remapping.c

Simple merge
index 6c25b3c5b729b97dd61e5ae09a9167d7f05234cb,07d1a6848ad7bf7a1e5ac05098d7dd213ed64081..5709ae9c3e771d2f82a1bda2a23d500d8f4faffe
@@@ -631,16 -599,23 +631,13 @@@ static int __init intel_enable_irq_rema
  {
        struct dmar_drhd_unit *drhd;
        struct intel_iommu *iommu;
 -      bool x2apic_present;
 -      int setup = 0;
 +      bool setup = false;
        int eim = 0;
  
 -      x2apic_present = x2apic_supported();
 -
 -      if (parse_ioapics_under_ir() != 1) {
 -              printk(KERN_INFO "Not enable interrupt remapping\n");
 -              goto error;
 -      }
 -
 -      if (x2apic_present) {
 -              pr_info("Queued invalidation will be enabled to support x2apic and Intr-remapping.\n");
 -
 +      if (x2apic_supported()) {
                eim = !dmar_x2apic_optout();
                if (!eim)
-                       printk(KERN_WARNING
-                               "Your BIOS is broken and requested that x2apic be disabled.\n"
-                               "This will slightly decrease performance.\n"
-                               "Use 'intremap=no_x2apic_optout' to override BIOS request.\n");
+                       pr_info("x2apic is disabled because BIOS sets x2apic opt out bit. You can use 'intremap=no_x2apic_optout' to override the BIOS setting.\n");
        }
  
        for_each_iommu(iommu, drhd) {