[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v2 11/40] xen/mpu: build up start-of-day Xen MPU memory region map





On 02/02/2023 10:53, Penny Zheng wrote:
Hi Julien,

Hi,

-----Original Message-----
From: Julien Grall <julien@xxxxxxx>
Sent: Thursday, February 2, 2023 2:57 AM
To: Penny Zheng <Penny.Zheng@xxxxxxx>; xen-devel@xxxxxxxxxxxxxxxxxxxx;
Wei Chen <Wei.Chen@xxxxxxx>; Stefano Stabellini
<sstabellini@xxxxxxxxxx>; Bertrand Marquis <Bertrand.Marquis@xxxxxxx>;
ayan.kumar.halder@xxxxxxxxxx
Cc: Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>
Subject: Re: [PATCH v2 11/40] xen/mpu: build up start-of-day Xen MPU
memory region map

Hi Penny,

On 01/02/2023 05:39, Penny Zheng wrote:
If we are adding MPU regions in sequence as you suggested, while
using bitmap at the same time to record used entry.
TBH, this is how I designed at the very beginning internally. We
found that if we don't do reorg late-boot to keep fixed in front and
switching ones after, each time when we do vcpu context switch, not
only we need to hunt down switching ones to disable, while we add
new switch-in regions, using bitmap to find free entry is saying
that the
process is unpredictable. Uncertainty is what we want to avoid in
Armv8-R architecture.

I don't understand why it would be unpredictable. For a given
combination of platform/device-tree, the bitmap will always look the
same. So the number of cycles/instructions will always be the same.


In boot-time, it will be always the same. But if we still use bitmap
to find free entry(for switching MPU regions) on runtime, hmmm, I
thought this part will be unpredictable.

I know this point is now moot as we agreed on not using a bitmap but I
wanted to answer on the unpredictability part.

It depends on whether you decide to allocate more entry at runtime. My
assumption is you won't and therefore the the time to walk the bitmap will
always be consistent.


In MPU, we don't have something like vttbr_el2 in MMU, to store stage 2
EL1/EL0 translation table. Xen stage 1 EL2 mapping and stage 2 EL1/EL0
mapping are both sharing one table.
So when context switching into different guest, the current design is to disable
DOM1's guest RAM mapping firstly, then enable DOM2's guest RAM mapping,
to ensure isolation and safety.

I understood that but I don't understand how this is related to my point here. The entries you are replacing are always going to be the same after boot.

So if you have a bitmap indicate the fixed entries and you don't add more fixed one at runtime, then it will always take the same time to walk it.

Cheers,

--
Julien Grall



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.