xen/arm: mm: Set-up page permission for Xen mappings earlier on
authorJulien Grall <julien.grall@arm.com>
Thu, 29 Nov 2018 11:37:43 +0000 (11:37 +0000)
committerStefano Stabellini <sstabellini@kernel.org>
Thu, 6 Jun 2019 22:18:26 +0000 (15:18 -0700)
commit6c33308a8dbb990e89fa7809e47b900570e67723
tree8ea130855348b6dcf671f846a96653a983ecd1f0
parentf9233b7804ec422d052c2a9d9cc9ef435c742f61
xen/arm: mm: Set-up page permission for Xen mappings earlier on

Xen mapping is first create using a 2MB page and then shatterred in 4KB
page for fine-graine permission. However, it is not safe to break-down
superpage page without going to an intermediate step invalidating
the entry.

As we are changing Xen mappings, we cannot go through the intermediate
step. The only solution is to create Xen mapping using 4KB entries
directly. As the Xen should always access the mappings according with
the runtime permission, it is then possible to set-up the permissions
while create the mapping.

We are still playing with the fire as there are still some
break-before-make issue in setup_pagetables (i.e switch between 2 sets of
page-tables). But it should slightly be better than the current state.

Signed-off-by: Julien Grall <julien.grall@arm.com>
Reported-by: Shameerali Kolothum Thodi <shameerali.kolothum.thodi@huawei.com>
Reported-by: Jan-Peter Larsson <Jan-Peter.Larsson@arm.com>
Reviewed-by: Stefano Stabellini <sstabellini@kernel.org>
Tested-by: Shameer Kolothum <shameerali.kolothum.thodi@huawei.com>
Tested-by: Matthew Daley <mattd@bugfuzz.com>
(cherry picked from commit 00c96d77422a4b84247bec5dadf434363d312cac)
xen/arch/arm/mm.c