OSDN Git Service

iommu/vt-d: Add helper to set an IRTE to verify only the bus number
authorLogan Gunthorpe <logang@deltatee.com>
Wed, 13 Feb 2019 17:54:45 +0000 (10:54 -0700)
committerJoerg Roedel <jroedel@suse.de>
Tue, 26 Feb 2019 09:34:03 +0000 (10:34 +0100)
commit9ca8261173fc06ba1bd3c52e83eae0a0b7146b3b
tree2d33a592b18325a57361d9b9df92595b0e8be343
parentf096d6657a7714e62a4799893ac9bdee75be29c8
iommu/vt-d: Add helper to set an IRTE to verify only the bus number

The current code uses set_irte_sid() with SVT_VERIFY_BUS and PCI_DEVID
to set the SID value. However, this is very confusing because, with
SVT_VERIFY_BUS, the SID value is not a PCI devfn address, but the start
and end bus numbers to match against.

According to the Intel Virtualization Technology for Directed I/O
Architecture Specification, Rev. 3.0, page 9-36:

  The most significant 8-bits of the SID field contains the Startbus#,
  and the least significant 8-bits of the SID field contains the Endbus#.
  Interrupt requests that reference this IRTE must have a requester-id
  whose bus# (most significant 8-bits of requester-id) has a value equal
  to or within the Startbus# to Endbus# range.

So to make this more clear, introduce a new set_irte_verify_bus() that
explicitly takes a start bus and end bus so that we can stop abusing
the PCI_DEVID macro.

This helper function will be called a second time in an subsequent patch.

Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
Cc: David Woodhouse <dwmw2@infradead.org>
Cc: Joerg Roedel <joro@8bytes.org>
Cc: Jacob Pan <jacob.jun.pan@linux.intel.com>
Signed-off-by: Joerg Roedel <jroedel@suse.de>
drivers/iommu/intel_irq_remapping.c