On 06/11/2022 20:06, Julien Grall wrote:
Hi Wei,
On 04/11/2022 10:07, Wei Chen wrote:
There are lots of MMU specific code in head.S. This code will not
be used in MPU systems. If we use #ifdef to gate them, the code
will become messy and hard to maintain. So we move MMU related
code to head_mmu.S, and keep common code still in head.S.
I am afraid that you can't simply move the MMU code out of head.S
because this will break Xen when running using the identity map.
This is because we only map the first 4KB of Xen with PA == VA. At the
moment, we guarantee it by having everything that needs to be used in
the identity mapping before _end_boot and checking at link time if this
fits in 4KB.
Now that you moved the MMU code outside of head.S. We need to find a
different way to guarantee it. One way to do it would be to create a
section that would be used for everything that needs to be identity mapped.
Looking at the code this morning, I noticed that we already have the
section ".text.header". For now, that should do the job. So we just need
to check the size of .text.header.
Ideally, checking the size should be done in a separate pre-patch so it
is easier to review.
Cheers,
--
Julien Grall