On Mon, Sep 23, 2013 at 11:11:07AM +0100, Marc Zyngier wrote: [...]
> > > > +static bool transparent_hugepage_adjust(pfn_t *pfnp, phys_addr_t *ipap) > > +{ > > + pfn_t pfn = *pfnp; > > + gfn_t gfn = *ipap >> PAGE_SHIFT; > > + > > + if (PageTransCompound(pfn_to_page(pfn))) { > > + unsigned long mask; > > + /* > > + * mmu_notifier_retry was successful and we hold the > > + * mmu_lock here, so the pmd can't become splitting > > + * from under us, and in turn > > + * __split_huge_page_refcount() can't run from under > > + * us and we can safely transfer the refcount from > > + * PG_tail to PG_head as we switch the pfn from tail to > > + * head. > > + */ > > -ECANTPARSE. Well, I sort of can, but this deserves a clearer explanation. > > > + mask = (PMD_SIZE / PAGE_SIZE) - 1; > > mask = PTRS_PER_PMD -1; > > > + VM_BUG_ON((gfn & mask) != (pfn & mask)); > > + if (pfn & mask) { > > + gfn &= ~mask; > > This doesn't seem to be used later on. > > > + *ipap &= ~(PMD_SIZE - 1); > > *ipap &= ~PMD_MASK; > damn, I trust you too much, you surely meant *ipap &= PMD_MASK; right? > > + kvm_release_pfn_clean(pfn); > > + pfn &= ~mask; > > + kvm_get_pfn(pfn); > > + *pfnp = pfn; > > + } > > > > > + return true; > > + } > > + > > + return false; > > +} > > + -Christoffer -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html