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
- Repository
- rG FreeBSD src repository
- Lint
Lint Not Applicable - Unit
Tests Not Applicable
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 | 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 |