Browse Source

pci: Add a memory attribute for pre-translated DMA operations

The address_type bit will be set to PCI_AT_TRANSLATED by devices that
use cached addresses obtained via ATS.

Signed-off-by: Clement Mathieu--Drif <clement.mathieu--drif@eviden.com>
Message-Id: <20250628180226.133285-2-clement.mathieu--drif@eviden.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
pull/294/head
CLEMENT MATHIEU--DRIF 10 months ago
committed by Michael S. Tsirkin
parent
commit
06895f7948
  1. 3
      include/exec/memattrs.h
  2. 9
      include/hw/pci/pci.h

3
include/exec/memattrs.h

@ -54,6 +54,9 @@ typedef struct MemTxAttrs {
*/
unsigned int pid:8;
/* PCI - IOMMU operations, see PCIAddressType */
unsigned int address_type:1;
/*
* Bus masters which don't specify any attributes will get this
* (via the MEMTXATTRS_UNSPECIFIED constant), so that we can

9
include/hw/pci/pci.h

@ -134,6 +134,15 @@ struct PCIHostDeviceAddress {
unsigned int function;
};
/*
* Represents the Address Type (AT) field in a PCI request,
* see MemTxAttrs.address_type
*/
typedef enum PCIAddressType {
PCI_AT_UNTRANSLATED = 0, /* Default when no attribute is set */
PCI_AT_TRANSLATED = 1,
} PCIAddressType;
typedef void PCIConfigWriteFunc(PCIDevice *pci_dev,
uint32_t address, uint32_t data, int len);
typedef uint32_t PCIConfigReadFunc(PCIDevice *pci_dev,

Loading…
Cancel
Save