Re: [PATCH] kvm: arm: Fix handling of stage2 huge mappings

From: Suzuki K Poulose
Date: Wed Mar 20 2019 - 07:12:57 EST


Marc,

On 20/03/2019 10:35, Marc Zyngier wrote:
On Wed, 20 Mar 2019 10:23:39 +0000
Suzuki K Poulose <suzuki.poulose@xxxxxxx> wrote:

Hi Suzuki,

Marc,

On 20/03/2019 10:11, Marc Zyngier wrote:
On Wed, 20 Mar 2019 09:44:38 +0000
Suzuki K Poulose <suzuki.poulose@xxxxxxx> wrote:
Hi Marc,

On 20/03/2019 08:15, Marc Zyngier wrote:
Hi Suzuki,

On Tue, 19 Mar 2019 14:11:08 +0000,
Suzuki K Poulose <suzuki.poulose@xxxxxxx> wrote:

...

+ if (!pmd_thp_or_huge(old_pmd)) {
+ unmap_stage2_range(kvm, addr & S2_PMD_MASK, S2_PMD_SIZE);
+ goto retry;

+ if (!stage2_pud_huge(kvm, old_pud)) {
+ unmap_stage2_range(kvm, addr & S2_PUD_MASK, S2_PUD_SIZE);

We should really get rid of the S2_P{U/M}D_* definitions, as they are
always the same as the host. The only thing that changes is the PGD size
which varies according to the IPA and the concatenation.

Also what do you think about using P{M,U}D_* instead of S2_P{M,U}D_*
above ? I could make that change with the respin.

Given that this is a fix, I'd like it to be as small as obvious as
possible, making it easier to backport.

I'm happy to take another patch for 5.2 that will drop the whole S2_P*
if we still think that this should be the case (though what I'd really
like is to have architectural levels instead of these arbitrary
definitions).

I only meant the two new instances added above in the patch. Of course, I
could send something to fix the existing ones.

Cheers
Suzuki