On Fri, Sep 06, 2019 at 05:06:39PM +0530, Bharata B Rao wrote: > > Also is bit 56+ a set of values, so is there 1 << 56 and 3 << 56 as well? Seems > > like even that other patch doesn't fully define these "pfn" values. > > I realized that the bit numbers have changed, it is no longer bits 60:56, > but instead top 8bits. > > #define KVMPPC_RMAP_UVMEM_PFN 0x0200000000000000 > static inline bool kvmppc_rmap_is_uvmem_pfn(unsigned long *rmap) > { > return ((*rmap & 0xff00000000000000) == KVMPPC_RMAP_UVMEM_PFN); > } In that overall scheme I'd actually much prefer something like (names just made up, they should vaguely match the spec this written to): static inline unsigned long kvmppc_rmap_type(unsigned long *rmap) { return (rmap & 0xff00000000000000); } And then where you check it you can use: if (kvmppc_rmap_type(*rmap) == KVMPPC_RMAP_UVMEM_PFN) and where you set it you do: *rmap |= KVMPPC_RMAP_UVMEM_PFN; as in the current patch to keep things symmetric.