mirror of https://gitee.com/openkylin/linux.git
AMD IOMMU: add protection domain flags
Imapct: add a new struct member to 'struct protection_domain' When using protection domains for dma_ops and KVM its better to know for which subsystem it was allocated. Add a flags member to struct protection domain for that purpose. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com>
This commit is contained in:
parent
43f4960983
commit
9fdb19d64c
|
@ -190,16 +190,20 @@
|
||||||
/* FIXME: move this macro to <linux/pci.h> */
|
/* FIXME: move this macro to <linux/pci.h> */
|
||||||
#define PCI_BUS(x) (((x) >> 8) & 0xff)
|
#define PCI_BUS(x) (((x) >> 8) & 0xff)
|
||||||
|
|
||||||
|
/* Protection domain flags */
|
||||||
|
#define PD_DMA_OPS_MASK (1UL << 0) /* domain used for dma_ops */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This structure contains generic data for IOMMU protection domains
|
* This structure contains generic data for IOMMU protection domains
|
||||||
* independent of their use.
|
* independent of their use.
|
||||||
*/
|
*/
|
||||||
struct protection_domain {
|
struct protection_domain {
|
||||||
spinlock_t lock; /* mostly used to lock the page table*/
|
spinlock_t lock; /* mostly used to lock the page table*/
|
||||||
u16 id; /* the domain id written to the device table */
|
u16 id; /* the domain id written to the device table */
|
||||||
int mode; /* paging mode (0-6 levels) */
|
int mode; /* paging mode (0-6 levels) */
|
||||||
u64 *pt_root; /* page table root pointer */
|
u64 *pt_root; /* page table root pointer */
|
||||||
void *priv; /* private data */
|
unsigned long flags; /* flags to find out type of domain */
|
||||||
|
void *priv; /* private data */
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -729,6 +729,7 @@ static struct dma_ops_domain *dma_ops_domain_alloc(struct amd_iommu *iommu,
|
||||||
goto free_dma_dom;
|
goto free_dma_dom;
|
||||||
dma_dom->domain.mode = PAGE_MODE_3_LEVEL;
|
dma_dom->domain.mode = PAGE_MODE_3_LEVEL;
|
||||||
dma_dom->domain.pt_root = (void *)get_zeroed_page(GFP_KERNEL);
|
dma_dom->domain.pt_root = (void *)get_zeroed_page(GFP_KERNEL);
|
||||||
|
dma_dom->domain.flags = PD_DMA_OPS_MASK;
|
||||||
dma_dom->domain.priv = dma_dom;
|
dma_dom->domain.priv = dma_dom;
|
||||||
if (!dma_dom->domain.pt_root)
|
if (!dma_dom->domain.pt_root)
|
||||||
goto free_dma_dom;
|
goto free_dma_dom;
|
||||||
|
|
Loading…
Reference in New Issue