mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-08 02:03:56 -06:00
virtio-pci: address space translation service (ATS) support
This patches enable the Address Translation Service support for virtio pci devices. This is needed for a guest visible Device IOTLB implementation and will be required by vhost device IOTLB API implementation for intel IOMMU. Cc: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Jason Wang <jasowang@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
This commit is contained in:
parent
554f5e1604
commit
615c4ed205
5 changed files with 31 additions and 0 deletions
|
@ -717,3 +717,18 @@ void pcie_dev_ser_num_init(PCIDevice *dev, uint16_t offset, uint64_t ser_num)
|
|||
PCI_EXT_CAP_DSN_SIZEOF);
|
||||
pci_set_quad(dev->config + offset + pci_dsn_cap, ser_num);
|
||||
}
|
||||
|
||||
void pcie_ats_init(PCIDevice *dev, uint16_t offset)
|
||||
{
|
||||
pcie_add_capability(dev, PCI_EXT_CAP_ID_ATS, 0x1,
|
||||
offset, PCI_EXT_CAP_ATS_SIZEOF);
|
||||
|
||||
dev->exp.ats_cap = offset;
|
||||
|
||||
/* Invalidate Queue Depth 0, Page Aligned Request 0 */
|
||||
pci_set_word(dev->config + offset + PCI_ATS_CAP, 0);
|
||||
/* STU 0, Disabled by default */
|
||||
pci_set_word(dev->config + offset + PCI_ATS_CTRL, 0);
|
||||
|
||||
pci_set_word(dev->wmask + dev->exp.ats_cap + PCI_ATS_CTRL, 0x800f);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue