<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    To start I am now running Arch with the VFIO kernel, I did not
    compile with the i915, my machine failed to boot with that last
    time.  Currently I can't seem to get VFIO to claim the devices I
    want to pass-through.  You can see kernel driver is still nvidia.  I
    added my configs below.  I even tried a script.  Every time I modify
    mkinitcpio.conf I regenerate my intramfd with mkinitcpio -p
    linux-vfio<br>
    <br>
    What am I missing?
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <br>
    <br>
    lspci -nnk -d 10de:1087<br>
    <blockquote>02:00.0 VGA compatible controller [0300]: NVIDIA
      Corporation GF110 [GeForce GTX 560 Ti 448 Cores] [10de:1087] (rev
      a1)<br>
              Subsystem: NVIDIA Corporation Device [10de:0000]<br>
              Kernel driver in use: nvidia<br>
              Kernel modules: nouveau, nvidia_drm, nvidia<br>
    </blockquote>
    <br>
    <br>
    /etc/mkinitcpio.conf<br>
    <blockquote>MODULES="vfio vfio_iommu_type1 vfio_pci vfio_virqfd"<br>
    </blockquote>
    kernel boot options.<br>
    <blockquote>intel_iommu=on pcie_acs_override=downstream
      rd.driver.pre=vfio-pci<br>
    </blockquote>
    /etc/modprobe.d/VFIO.conf <br>
    <blockquote>options vfio-pci ids=10de:1087,10de:0e09<br>
    </blockquote>
    modinfo vfio-pci<br>
    <blockquote>filename:      
      /lib/modules/4.5.1-1-vfio/kernel/drivers/vfio/pci/vfio-pci.ko.gz<br>
      description:    VFIO PCI - User Level meta-driver<br>
      author:         Alex Williamson <a class="moz-txt-link-rfc2396E" href="mailto:alex.williamson@redhat.com"><alex.williamson@redhat.com></a><br>
      license:        GPL v2<br>
      version:        0.2<br>
      srcversion:     C2A1332D492B2BE5378D1E1<br>
      depends:        vfio,irqbypass,vfio_virqfd<br>
      intree:         Y<br>
      vermagic:       4.5.1-1-vfio SMP preempt mod_unload modversions <br>
      parm:           ids:Initial PCI IDs to add to the vfio driver,
      format is
      "vendor:device[:subvendor[:subdevice[:class[:class_mask]]]]" and
      multiple comma separated entries can be specified (string)<br>
      parm:           nointxmask:Disable support for PCI 2.3 style INTx
      masking.  If this resolves problems for specific devices, report
      lspci -vvvxxx to <a class="moz-txt-link-abbreviated" href="mailto:linux-pci@vger.kernel.org">linux-pci@vger.kernel.org</a> so the device can be
      fixed automatically via the broken_intx_masking flag. (bool)<br>
      parm:           disable_vga:Disable VGA resource access through
      vfio-pci (bool)<br>
      parm:           disable_idle_d3:Disable using the PCI D3 low power
      state for idle, unused devices (bool)<br>
    </blockquote>
    dmesg|grep -e DMAR -e IOMMU<br>
    <blockquote>[    0.000000] Warning: PCIe ACS overrides enabled; This
      may allow non-IOMMU protected peer-to-peer DMA<br>
      [    0.000000] ACPI: DMAR 0x0000000087F4D9F8 000070 (v01 INTEL 
      SKL      00000001 INTL 00000001)<br>
      [    0.000000] DMAR: IOMMU enabled<br>
      [    0.033182] DMAR: Host address width 39<br>
      [    0.033183] DMAR: DRHD base: 0x000000fed90000 flags: 0x1<br>
      [    0.033187] DMAR: dmar0: reg_base_addr fed90000 ver 1:0 cap
      d2008c40660462 ecap f050da<br>
      [    0.033188] DMAR: RMRR base: 0x00000087906000 end:
      0x00000087925fff<br>
      [    0.033189] DMAR-IR: IOAPIC id 2 under DRHD base  0xfed90000
      IOMMU 0<br>
      [    0.033190] DMAR-IR: HPET id 0 under DRHD base 0xfed90000<br>
      [    0.033191] DMAR-IR: x2apic is disabled because BIOS sets
      x2apic opt out bit.<br>
      [    0.033191] DMAR-IR: Use 'intremap=no_x2apic_optout' to
      override the BIOS setting.<br>
      [    0.034540] DMAR-IR: Enabled IRQ remapping in xapic mode<br>
      [    0.352192] DMAR: No ATSR found<br>
      [    0.352245] DMAR: dmar0: Using Queued invalidation<br>
      [    0.352251] DMAR: Setting RMRR:<br>
      [    0.352258] DMAR: Setting identity map for device 0000:00:14.0
      [0x87906000 - 0x87925fff]<br>
      [    0.352262] DMAR: Prepare 0-16MiB unity mapping for LPC<br>
      [    0.352266] DMAR: Setting identity map for device 0000:00:1f.0
      [0x0 - 0xffffff]<br>
      [    0.352270] DMAR: Intel(R) Virtualization Technology for
      Directed I/O<br>
    </blockquote>
    <br>
    Incase this helps, here are my IOMMU groupings<br>
    <blockquote>IOMMU group 0<br>
              00:00.0 Host bridge [0600]: Intel Corporation Skylake Host
      Bridge/DRAM Registers [8086:191f] (rev 07)<br>
      IOMMU group 1<br>
              00:01.0 PCI bridge [0604]: Intel Corporation Skylake PCIe
      Controller (x16) [8086:1901] (rev 07)<br>
      IOMMU group 2<br>
              00:01.1 PCI bridge [0604]: Intel Corporation Skylake PCIe
      Controller (x8) [8086:1905] (rev 07)<br>
      IOMMU group 3<br>
              00:14.0 USB controller [0c03]: Intel Corporation Sunrise
      Point-H USB 3.0 xHCI Controller [8086:a12f] (rev 31)<br>
              00:14.2 Signal processing controller [1180]: Intel
      Corporation Sunrise Point-H Thermal subsystem [8086:a131] (rev 31)<br>
      IOMMU group 4<br>
              00:16.0 Communication controller [0780]: Intel Corporation
      Sunrise Point-H CSME HECI #1 [8086:a13a] (rev 31)<br>
      IOMMU group 5<br>
              00:17.0 SATA controller [0106]: Intel Corporation Sunrise
      Point-H SATA controller [AHCI mode] [8086:a102] (rev 31)<br>
      IOMMU group 6<br>
              00:1b.0 PCI bridge [0604]: Intel Corporation Sunrise
      Point-H PCI Root Port #17 [8086:a167] (rev f1)<br>
      IOMMU group 7<br>
              00:1c.0 PCI bridge [0604]: Intel Corporation Sunrise
      Point-H PCI Express Root Port #1 [8086:a110] (rev f1)<br>
      IOMMU group 8<br>
              00:1c.4 PCI bridge [0604]: Intel Corporation Sunrise
      Point-H PCI Express Root Port #5 [8086:a114] (rev f1)<br>
      IOMMU group 9<br>
              00:1c.5 PCI bridge [0604]: Intel Corporation Sunrise
      Point-H PCI Express Root Port #6 [8086:a115] (rev f1)<br>
      IOMMU group 10<br>
              00:1d.0 PCI bridge [0604]: Intel Corporation Sunrise
      Point-H PCI Express Root Port #9 [8086:a118] (rev f1)<br>
      IOMMU group 11<br>
              00:1d.4 PCI bridge [0604]: Intel Corporation Sunrise
      Point-H PCI Express Root Port #13 [8086:a11c] (rev f1)<br>
      IOMMU group 12<br>
              00:1f.0 ISA bridge [0601]: Intel Corporation Sunrise
      Point-H LPC Controller [8086:a145] (rev 31)<br>
              00:1f.2 Memory controller [0580]: Intel Corporation
      Sunrise Point-H PMC [8086:a121] (rev 31)<br>
              00:1f.3 Audio device [0403]: Intel Corporation Sunrise
      Point-H HD Audio [8086:a170] (rev 31)<br>
              00:1f.4 SMBus [0c05]: Intel Corporation Sunrise Point-H
      SMBus [8086:a123] (rev 31)<br>
      IOMMU group 13<br>
              00:1f.6 Ethernet controller [0200]: Intel Corporation
      Ethernet Connection (2) I219-V [8086:15b8] (rev 31)<br>
      IOMMU group 14<br>
              01:00.0 VGA compatible controller [0300]: NVIDIA
      Corporation GM204 [GeForce GTX 970] [10de:13c2] (rev a1)<br>
              01:00.1 Audio device [0403]: NVIDIA Corporation GM204 High
      Definition Audio Controller [10de:0fbb] (rev a1)<br>
      IOMMU group 15<br>
              02:00.0 VGA compatible controller [0300]: NVIDIA
      Corporation GF110 [GeForce GTX 560 Ti 448 Cores] [10de:1087] (rev
      a1)<br>
              02:00.1 Audio device [0403]: NVIDIA Corporation GF110 High
      Definition Audio Controller [10de:0e09] (rev a1)<br>
      IOMMU group 16<br>
              04:00.0 PCI bridge [0604]: Intel Corporation DSL6540
      Thunderbolt 3 Bridge [Alpine Ridge 4C 2015] [8086:1578]<br>
      IOMMU group 17<br>
              05:00.0 PCI bridge [0604]: Intel Corporation DSL6540
      Thunderbolt 3 Bridge [Alpine Ridge 4C 2015] [8086:1578]<br>
      IOMMU group 18<br>
              05:01.0 PCI bridge [0604]: Intel Corporation DSL6540
      Thunderbolt 3 Bridge [Alpine Ridge 4C 2015] [8086:1578]<br>
      IOMMU group 19<br>
              05:02.0 PCI bridge [0604]: Intel Corporation DSL6540
      Thunderbolt 3 Bridge [Alpine Ridge 4C 2015] [8086:1578]<br>
      IOMMU group 20<br>
              05:04.0 PCI bridge [0604]: Intel Corporation DSL6540
      Thunderbolt 3 Bridge [Alpine Ridge 4C 2015] [8086:1578]<br>
      IOMMU group 21<br>
              08:00.0 USB controller [0c03]: Intel Corporation DSL6540
      USB 3.1 Controller [Alpine Ridge] [8086:15b6]<br>
      IOMMU group 22<br>
              0a:00.0 Ethernet controller [0200]: Intel Corporation I211
      Gigabit Network Connection [8086:1539] (rev 03)<br>
      IOMMU group 23<br>
              0b:00.0 SATA controller [0106]: ASMedia Technology Inc.
      ASM1062 Serial ATA Controller [1b21:0612] (rev 02)<br>
    </blockquote>
    <br>
    <br>
    <br>
    <br>
  </body>
</html>