> From: Liu, Yi L <yi.l.liu@xxxxxxxxx> > Sent: Thursday, May 11, 2023 10:51 PM > > From: Lu Baolu <baolu.lu@xxxxxxxxxxxxxxx> > > The nested domain fields are exclusive to those that used for a DMA > remapping domain. Use union to avoid memory waste. > > Signed-off-by: Lu Baolu <baolu.lu@xxxxxxxxxxxxxxx> > Signed-off-by: Yi Liu <yi.l.liu@xxxxxxxxx> > --- > drivers/iommu/intel/iommu.h | 35 +++++++++++++++++++++++++++++------ > 1 file changed, 29 insertions(+), 6 deletions(-) > > diff --git a/drivers/iommu/intel/iommu.h b/drivers/iommu/intel/iommu.h > index 1c5e1d88862b..e818520f4068 100644 > --- a/drivers/iommu/intel/iommu.h > +++ b/drivers/iommu/intel/iommu.h > @@ -596,15 +596,38 @@ struct dmar_domain { > spinlock_t lock; /* Protect device tracking lists */ > struct list_head devices; /* all devices' list */ > > - struct dma_pte *pgd; /* virtual address */ > - int gaw; /* max guest address width */ > - > - /* adjusted guest address width, 0 is level 2 30-bit */ > - int agaw; > int iommu_superpage;/* Level of superpages supported: > 0 == 4KiB (no superpages), 1 == > 2MiB, > 2 == 1GiB, 3 == 512GiB, 4 == 1TiB */ > - u64 max_addr; /* maximum mapped address */ > + union { > + /* DMA remapping domain */ > + struct { > + /* virtual address */ > + struct dma_pte *pgd; > + /* max guest address width */ > + int gaw; > + /* > + * adjusted guest address width: > + * 0: level 2 30-bit > + * 1: level 3 39-bit > + * 2: level 4 48-bit > + * 3: level 5 57-bit > + */ > + int agaw; > + /* maximum mapped address */ > + u64 max_addr; > + }; what about 'nid'? > + > + /* Nested user domain */ > + struct { > + /* 2-level page table the user domain nested */ /* parent page table which the user domain is nested on */ > + struct dmar_domain *s2_domain; > + /* user page table pointer (in GPA) */ > + unsigned long s1_pgtbl; > + /* page table attributes */ > + struct iommu_hwpt_intel_vtd s1_cfg; > + }; > + }; > > struct iommu_domain domain; /* generic domain data structure for > iommu core */ > -- > 2.34.1