Re: [PATCH v2 2/3] powerpc: get hugetlbpage handling more generic
From: Christophe Leroy <hidden>
Date: 2016-09-20 05:22:22
Also in:
lkml
Le 20/09/2016 à 04:28, Aneesh Kumar K.V a écrit :
christophe leroy [off-list ref] writes:quoted
Le 19/09/2016 à 07:50, Aneesh Kumar K.V a écrit :quoted
Christophe Leroy [off-list ref] writes:quoted
+#else +static void hugepd_free(struct mmu_gather *tlb, void *hugepte) +{ + BUG(); +} + #endifI was expecting that BUG will get removed in the next patch. But I don't see it in the next patch. Considering@@ -475,11 +453,10 @@ static void free_hugepd_range(struct mmu_gather *tlb, hugepd_t *hpdp, int pdshif for (i = 0; i < num_hugepd; i++, hpdp++) hpdp->pd = 0; -#ifdef CONFIG_PPC_FSL_BOOK3E - hugepd_free(tlb, hugepte); -#else - pgtable_free_tlb(tlb, hugepte, pdshift - shift); -#endif + if (shift >= pdshift) + hugepd_free(tlb, hugepte); + else + pgtable_free_tlb(tlb, hugepte, pdshift - shift); }What is that I am missing ?Previously, call to hugepd_free() was compiled only when #ifdef CONFIG_PPC_FSL_BOOK3E Now, it is compiled at all time, but it should never be called if not CONFIG_PPC_FSL_BOOK3E because we always have shift < pdshift in that case. Then the function needs to be defined anyway but should never be called. Should I just define it static inline {} ?For 8M with 4K mode, we have shift >= pdshift right ?
Yes, thats the reason why in the following patch we get. That way we get a real hugepd_free() also for the 8xx.
@@ -366,7 +373,7 @@ int alloc_bootmem_huge_page(struct hstate *hstate) } #endif -#ifdef CONFIG_PPC_FSL_BOOK3E +#if defined(CONFIG_PPC_FSL_BOOK3E) || defined(CONFIG_PPC_8xx) #define HUGEPD_FREELIST_SIZE \ ((PAGE_SIZE - sizeof(struct hugepd_freelist)) / sizeof(pte_t))
Christophe