Paul Mackerras <paulus@xxxxxxxxx> writes: > On Mon, Mar 04, 2013 at 04:32:24PM +0530, Aneesh Kumar K.V wrote: >> >> Now with table_size argument, the first arg is no more the shift value, >> rather it is index into the array. Hence i changed the variable name. I >> will split that patch to make it easy for review. > > OK, so you're saying that the simple relation between index and the > size of the objects in PGT_CACHE(index) no longer holds. That worries > me, because now, what guarantees that two callers won't use the same > index value with two different sizes? And what guarantees that we > won't have two callers using different index values but the same size > (which wouldn't be a disaster but would be a waste of space)? > > I think it would be preferable to keep the relation between shift and > the size of the objects and just arrange to use a different shift > value for the pmd objects when you need to. Most of the places we get the cache pointer by doing something like. PGT_CACHE(PMD_INDEX_SIZE). What we need is that kmem_cache to return an object twice the size of PMD_TABLE_SIZE. The relevant diff in the later patch is below. +#ifdef CONFIG_TRANSPARENT_HUGEPAGE + /* + * we store the pgtable details in the second half of PMD + */ + if (PGT_CACHE(PMD_INDEX_SIZE)) + pr_err("PMD Page cache already initialized with different size\n"); + __pgtable_cache_add(PMD_INDEX_SIZE, PMD_TABLE_SIZE * 2, pmd_ctor); +#else pgtable_cache_add(PMD_INDEX_SIZE, pmd_ctor); +#endif -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>