On Thu, Mar 19, 2020 at 06:33:04PM -0700, Ralph Campbell wrote: > > > + .default_flags = dmirror_hmm_flags[HMM_PFN_VALID] | > > > + (write ? dmirror_hmm_flags[HMM_PFN_WRITE] : 0), > > > + .dev_private_owner = dmirror->mdevice, > > > + }; > > > + int ret = 0; > > > > > +static int dmirror_snapshot(struct dmirror *dmirror, > > > + struct hmm_dmirror_cmd *cmd) > > > +{ > > > + struct mm_struct *mm = dmirror->mm; > > > + unsigned long start, end; > > > + unsigned long size = cmd->npages << PAGE_SHIFT; > > > + unsigned long addr; > > > + unsigned long next; > > > + uint64_t pfns[64]; > > > + unsigned char perm[64]; > > > + char __user *uptr; > > > + struct hmm_range range = { > > > + .pfns = pfns, > > > + .flags = dmirror_hmm_flags, > > > + .values = dmirror_hmm_values, > > > + .pfn_shift = DPT_SHIFT, > > > + .pfn_flags_mask = ~0ULL, > > > > Same here, especially since this is snapshot > > > > Jason > > Actually, snapshot ignores pfn_flags_mask and default_flags. Yes, so no reason to set them to not 0.. Jason