Re: [RFC PATCH v12 11/33] KVM: Introduce per-page memory attributes

From: Sean Christopherson
Date: Wed Sep 20 2023 - 17:03:56 EST


On Mon, Sep 18, 2023, Binbin Wu wrote:
>
>
> On 9/14/2023 9:55 AM, Sean Christopherson wrote:
> > From: Chao Peng <chao.p.peng@xxxxxxxxxxxxxxx>
> [...]
> > +#ifdef CONFIG_KVM_GENERIC_MEMORY_ATTRIBUTES
> > +/*
> > + * Returns true if _all_ gfns in the range [@start, @end) have attributes
> > + * matching @attrs.
> > + */
> > +bool kvm_range_has_memory_attributes(struct kvm *kvm, gfn_t start, gfn_t end,
> > + unsigned long attrs)
> > +{
> > + XA_STATE(xas, &kvm->mem_attr_array, start);
> > + unsigned long index;
> > + bool has_attrs;
> > + void *entry;
> > +
> > + rcu_read_lock();
> > +
> > + if (!attrs) {
> > + has_attrs = !xas_find(&xas, end);
> IIUIC, xas_find() is inclusive for "end", so here should be "end - 1" ?

Yes, that does appear to be the case. Inclusive vs. exclusive on gfn ranges has
is the bane of my existence.