On Tue, Jul 08, 2025 at 07:05:43AM -0400, Zhenzhong Duan wrote: > diff --git a/include/hw/iommu.h b/include/hw/iommu.h > new file mode 100644 > index 0000000000..e80aaf4431 > --- /dev/null > +++ b/include/hw/iommu.h > @@ -0,0 +1,16 @@ > +/* > + * General vIOMMU capabilities, flags, etc > + * > + * Copyright (C) 2025 Intel Corporation. > + * > + * SPDX-License-Identifier: GPL-2.0-or-later > + */ > + > +#ifndef HW_IOMMU_H > +#define HW_IOMMU_H > + > +enum { > + VIOMMU_CAP_STAGE1 = BIT_ULL(0), /* stage1 page table supported */ > +};
Thanks for this work. I am happy to see that we can share the common code that allocates a NESTING_PARENT in the core using this flag. Yet on ARM, a STAGE1 page table isn't always a nested S1, the hardware accelerated one. More often, it can be just a regular 1-stage translation table via emulated translation code and an emulated iotlb. I think this flag should indicate that the vIOMMU supports a HW-accelerated nested S1 HWPT allocation/invalidation. So, perhaps: /* hardware-accelerated nested stage-1 page table support */ VIOMMU_CAP_NESTED_S1 = BIT_ULL(0), ? Nicolin