currently, iommu gas could not allocate a guest VA.
setting domain->end to BUS_SPACE_MAXADDR resolve the issue, but the hardware does not fully support BUS_SPACE_MAXADDR range.
So we are currently trying to limit space to 48 or 52 bit based on hardware capabilities.
Details
Details
Diff Detail
Diff Detail
- Lint
Lint Skipped - Unit
Tests Skipped
Event Timeline
Comment Actions
Having looked at it again we should ask the SMMU the maximum virtual address it supports. On the SMMUv3 it is the SMMU_IDR5.VAX field to decide if it's a 48 or 52 bit address space.
Comment Actions
it does not seem to work with 52 bit
+ if (sc->features & SMMU_FEATURE_VAX) + iodom->end = MAXADDR_52BIT; + else + iodom->end = MAXADDR_48BIT;
sys/arm64/iommu/smmu.c | ||
---|---|---|
1752 ↗ | (On Diff #114336) | I would skip the VAX check and only use the 48-bit option. We can only use 52-bit with a 64k IOMMU PAGE_SIZE |