Hi Ricardo, On Sat, Nov 12, 2022 at 08:17:03AM +0000, Ricardo Koller wrote: > stage2_make_pte() throws a warning when used in a non-shared walk, as PTEs > are not "locked" when walking non-shared. Add a check so it can be used > non-shared. > > Signed-off-by: Ricardo Koller <ricarkol@xxxxxxxxxx> I would very much prefer to leave this WARN as-is. Correct me if I am wrong, but I do not believe this warning is firing with the existing code. While the locking portion doesn't make a whole lot of sense for a non-shared walk, it is also a magic value that indicates we've already done the break side of break-before-make. If the warning fires then that would suggest our break-before-make implementation isn't working as expected. -- Thanks, Oliver > --- > arch/arm64/kvm/hyp/pgtable.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/arch/arm64/kvm/hyp/pgtable.c b/arch/arm64/kvm/hyp/pgtable.c > index c12462439e70..b16107bf917c 100644 > --- a/arch/arm64/kvm/hyp/pgtable.c > +++ b/arch/arm64/kvm/hyp/pgtable.c > @@ -733,7 +733,8 @@ static void stage2_make_pte(const struct kvm_pgtable_visit_ctx *ctx, kvm_pte_t n > { > struct kvm_pgtable_mm_ops *mm_ops = ctx->mm_ops; > > - WARN_ON(!stage2_pte_is_locked(*ctx->ptep)); > + if (kvm_pgtable_walk_shared(ctx)) > + WARN_ON(!stage2_pte_is_locked(*ctx->ptep)); > > if (stage2_pte_is_counted(new)) > mm_ops->get_page(ctx->ptep); > -- > 2.38.1.431.g37b22c650d-goog > >