Message ID | 20210719104735.3681732-6-qperret@google.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Track shared pages at EL2 in protected mode | expand |
On Mon, 19 Jul 2021 11:47:26 +0100, Quentin Perret <qperret@google.com> wrote: > > The nVHE protected mode uses invalid mappings in the host stage-2 > page-table to track the owner of each page in the system. In order to > allow the usage of ignored bits (a.k.a. software bits) in these > mappings, move the owner encoding away from the top bits. But that's exactly what the current situation is allowing: the use of the SW bits. I am guessing that what you really mean is that you want to *preserve* the SW bits from an existing mapping and use other bits when the mapping is invalid? Thanks, M. > > Signed-off-by: Quentin Perret <qperret@google.com> > --- > arch/arm64/kvm/hyp/pgtable.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/arch/arm64/kvm/hyp/pgtable.c b/arch/arm64/kvm/hyp/pgtable.c > index a60653cbd8e5..a0ac8c2bc174 100644 > --- a/arch/arm64/kvm/hyp/pgtable.c > +++ b/arch/arm64/kvm/hyp/pgtable.c > @@ -50,7 +50,7 @@ > KVM_PTE_LEAF_ATTR_LO_S2_S2AP_W | \ > KVM_PTE_LEAF_ATTR_HI_S2_XN) > > -#define KVM_INVALID_PTE_OWNER_MASK GENMASK(63, 56) > +#define KVM_INVALID_PTE_OWNER_MASK GENMASK(9, 2) > #define KVM_MAX_OWNER_ID 1 > > struct kvm_pgtable_walk_data { > -- > 2.32.0.402.g57bb445576-goog > >
On Monday 19 Jul 2021 at 13:55:29 (+0100), Marc Zyngier wrote: > On Mon, 19 Jul 2021 11:47:26 +0100, > Quentin Perret <qperret@google.com> wrote: > > > > The nVHE protected mode uses invalid mappings in the host stage-2 > > page-table to track the owner of each page in the system. In order to > > allow the usage of ignored bits (a.k.a. software bits) in these > > mappings, move the owner encoding away from the top bits. > > But that's exactly what the current situation is allowing: the use of > the SW bits. I am guessing that what you really mean is that you want > to *preserve* the SW bits from an existing mapping and use other bits > when the mapping is invalid? Yes, this is really just forward looking, but I think it might be useful to allow annotating invalid mappings with both an owner id _and_ additional flags for e.g. shared pages and such. And using bits [58-55] to store those flags just like we do for valid mappings should make things easier, but no big deal. I see how this is going to conflict with kvm_pgtable_stage2_annotate() from your series though, so maybe I should just drop this patch and leave the encoding 'issue' to the caller -- the rest of the series doesn't depend on this anyway, this was just small cleanup. Thanks, Quentin
On Mon, 19 Jul 2021 14:39:05 +0100, Quentin Perret <qperret@google.com> wrote: > > On Monday 19 Jul 2021 at 13:55:29 (+0100), Marc Zyngier wrote: > > On Mon, 19 Jul 2021 11:47:26 +0100, > > Quentin Perret <qperret@google.com> wrote: > > > > > > The nVHE protected mode uses invalid mappings in the host stage-2 > > > page-table to track the owner of each page in the system. In order to > > > allow the usage of ignored bits (a.k.a. software bits) in these > > > mappings, move the owner encoding away from the top bits. > > > > But that's exactly what the current situation is allowing: the use of > > the SW bits. I am guessing that what you really mean is that you want > > to *preserve* the SW bits from an existing mapping and use other bits > > when the mapping is invalid? > > Yes, this is really just forward looking, but I think it might be useful > to allow annotating invalid mappings with both an owner id _and_ > additional flags for e.g. shared pages and such. And using bits [58-55] > to store those flags just like we do for valid mappings should make > things easier, but no big deal. Right, so maybe worth calling that out. > I see how this is going to conflict with kvm_pgtable_stage2_annotate() > from your series though, so maybe I should just drop this patch and > leave the encoding 'issue' to the caller -- the rest of the series > doesn't depend on this anyway, this was just small cleanup. I'm not too worried about that for now. We can always rewrite one in terms of the other, but I wanted to understand exactly this change was about. Thanks, M.
diff --git a/arch/arm64/kvm/hyp/pgtable.c b/arch/arm64/kvm/hyp/pgtable.c index a60653cbd8e5..a0ac8c2bc174 100644 --- a/arch/arm64/kvm/hyp/pgtable.c +++ b/arch/arm64/kvm/hyp/pgtable.c @@ -50,7 +50,7 @@ KVM_PTE_LEAF_ATTR_LO_S2_S2AP_W | \ KVM_PTE_LEAF_ATTR_HI_S2_XN) -#define KVM_INVALID_PTE_OWNER_MASK GENMASK(63, 56) +#define KVM_INVALID_PTE_OWNER_MASK GENMASK(9, 2) #define KVM_MAX_OWNER_ID 1 struct kvm_pgtable_walk_data {
The nVHE protected mode uses invalid mappings in the host stage-2 page-table to track the owner of each page in the system. In order to allow the usage of ignored bits (a.k.a. software bits) in these mappings, move the owner encoding away from the top bits. Signed-off-by: Quentin Perret <qperret@google.com> --- arch/arm64/kvm/hyp/pgtable.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)