• Logan Gunthorpe's avatar
    iommu/vt-d: Add helper to set an IRTE to verify only the bus number · 9ca82611
    Logan Gunthorpe authored
    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: default avatarLogan 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: default avatarJoerg Roedel <jroedel@suse.de>
    9ca82611
intel_irq_remapping.c 36.5 KB