Open lorc opened 1 week ago
Correct solution is to allocate a block of ASIDs for each VM separately. But we can't move
g_asid
from nexus, because it is used in partition allocator itself. Looks like ASID allocator should be virtualization-aware.
Yes, that's the quickest solution. However, with a few partitions, we may end up with not so many ASIDs per partition so in the longer term we may need to look for a way of reusing ASIDs even before the different TAs have been terminated. Anyway, dividing the ASID ranges per partition is a good first step.
The way how ASID allocator is defined:
Creates an issue in virtualized environment. As this bitmask is shared between all VMs:
We encountered problem 2 while restarting Android VM multiple times. At some point new VM just can't open a session:
Correct solution is to allocate a block of ASIDs for each VM separately. But we can't move
g_asid
from nexus, because it is used in partition allocator itself. Looks like ASID allocator should be virtualization-aware.