1. 12 5月, 2022 1 次提交
    • N
      PCI: vmd: Assign VMD IRQ domain before enumeration · 886e6710
      Nirmal Patel 提交于
      During the boot process all the PCI devices are assigned default PCI-MSI
      IRQ domain including VMD endpoint devices. If interrupt-remapping is
      enabled by IOMMU, the PCI devices except VMD get new INTEL-IR-MSI IRQ
      domain. And VMD is supposed to create and assign a separate VMD-MSI IRQ
      domain for its child devices in order to support MSI-X remapping
      capabilities.
      
      Now when MSI-X remapping in VMD is disabled in order to improve
      performance, VMD skips VMD-MSI IRQ domain assignment process to its
      child devices. Thus the devices behind VMD get default PCI-MSI IRQ
      domain instead of INTEL-IR-MSI IRQ domain when VMD creates root bus and
      configures child devices.
      
      As a result host OS fails to boot and DMAR errors were observed when
      interrupt remapping was enabled on Intel Icelake CPUs. For instance:
      
        DMAR: DRHD: handling fault status reg 2
        DMAR: [INTR-REMAP] Request device [0xe2:0x00.0] fault index 0xa00 [fault reason 0x25] Blocked a compatibility format interrupt request
      
      To fix this issue, dev_msi_info struct in dev struct maintains correct
      value of IRQ domain. VMD will use this information to assign proper IRQ
      domain to its child devices when it doesn't create a separate IRQ domain.
      
      Link: https://lore.kernel.org/r/20220511095707.25403-2-nirmal.patel@linux.intel.comSigned-off-by: NNirmal Patel <nirmal.patel@linux.intel.com>
      Signed-off-by: NLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      886e6710
  2. 21 2月, 2022 1 次提交
  3. 06 1月, 2022 1 次提交
  4. 04 1月, 2022 1 次提交
  5. 01 12月, 2021 1 次提交
  6. 19 11月, 2021 1 次提交
  7. 04 11月, 2021 1 次提交
  8. 12 10月, 2021 1 次提交
    • A
      PCI: vmd: Do not disable MSI-X remapping if interrupt remapping is enabled by IOMMU · 2565e5b6
      Adrian Huang 提交于
      When enabling VMD in BIOS setup (Ice Lake Processor: Whitley platform),
      the host OS cannot boot successfully with the following error message:
      
        nvme nvme0: I/O 12 QID 0 timeout, completion polled
        nvme nvme0: Shutdown timeout set to 6 seconds
        DMAR: DRHD: handling fault status reg 2
        DMAR: [INTR-REMAP] Request device [0x00:0x00.5] fault index 0xa00 [fault reason 0x25] Blocked a compatibility format interrupt request
      
      The request device is the VMD controller:
        # lspci -s 0000:00.5 -nn
        0000:00:00.5 RAID bus controller [0104]: Intel Corporation Volume
        Management Device NVMe RAID Controller [8086:28c0] (rev 04)
      
      `git bisect` points to this offending commit ee81ee84 ("PCI:
      vmd: Disable MSI-X remapping when possible"), which disables VMD MSI
      remapping. The IOMMU hardware blocks the compatibility format
      interrupt request because Interrupt Remapping Enable Status (IRES) and
      Extended Interrupt Mode Enable (EIME) are enabled. Please refer to
      section "5.1.4 Interrupt-Remapping Hardware Operation" in Intel VT-d
      spec.
      
      To fix the issue, VMD driver still enables the interrupt remapping
      irrespective of VMD_FEAT_CAN_BYPASS_MSI_REMAP if the IOMMU subsystem
      enables the interrupt remapping.
      
      Test configuration is shown as follows:
        * Two VMD controllers
          1. 8086:28c0 (Whitley's VMD)
          2. 8086:201d (Purley's VMD: The issue does not appear in this
             controller. Just make sure if any side effect occurs.)
        * w/wo intremap=off
      
      Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=214219
      Link: https://lore.kernel.org/r/20210901124047.1615-1-adrianhuang0701@gmail.comSigned-off-by: NAdrian Huang <ahuang12@lenovo.com>
      Signed-off-by: NLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
      Reviewed-by: NJon Derrick <jonathan.derrick@intel.com>
      Cc: Jon Derrick <jonathan.derrick@intel.com>
      Cc: Nirmal Patel <nirmal.patel@linux.intel.com>
      Cc: Joerg Roedel <jroedel@suse.de>
      2565e5b6
  9. 07 10月, 2021 1 次提交
  10. 02 9月, 2021 1 次提交
    • R
      PCI: VMD: ACPI: Make ACPI companion lookup work for VMD bus · 59dc3325
      Rafael J. Wysocki 提交于
      On some systems, in order to get to the deepest low-power state of
      the platform (which may be necessary to save significant enough
      amounts of energy while suspended to idle. for example), devices on
      the PCI bus exposed by the VMD driver need to be power-managed via
      ACPI.  However, the layout of the ACPI namespace below the VMD
      controller device object does not reflect the layout of the PCI bus
      under the VMD host bridge, so in order to identify the ACPI companion
      objects for the devices on that bus, it is necessary to use a special
      _ADR encoding on the ACPI side.  In other words, acpi_pci_find_companion()
      does not work for these devices, so it needs to be amended with a
      special lookup logic specific to the VMD bus.
      
      Address this issue by allowing the VMD driver to temporarily install
      an ACPI companion lookup hook containing the code matching the devices
      on the VMD PCI bus with the corresponding objects in the ACPI
      namespace.
      Signed-off-by: NRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Acked-by: NJon Derrick <jonathan.derrick@intel.com>
      59dc3325
  11. 22 3月, 2021 1 次提交
  12. 11 12月, 2020 2 次提交
  13. 23 11月, 2020 1 次提交
  14. 29 10月, 2020 1 次提交
  15. 21 10月, 2020 5 次提交
  16. 16 9月, 2020 2 次提交
  17. 23 7月, 2020 1 次提交
  18. 14 7月, 2020 1 次提交
  19. 06 7月, 2020 1 次提交
  20. 30 5月, 2020 1 次提交
  21. 30 1月, 2020 1 次提交
  22. 29 1月, 2020 1 次提交
  23. 25 1月, 2020 2 次提交
  24. 22 11月, 2019 1 次提交
  25. 21 11月, 2019 2 次提交
  26. 18 9月, 2019 2 次提交
  27. 09 7月, 2019 1 次提交
  28. 24 4月, 2019 1 次提交
  29. 30 1月, 2019 1 次提交
  30. 14 12月, 2018 1 次提交
  31. 06 12月, 2018 1 次提交