Message ID | 20220912014703.185471-1-rmclure@linux.ibm.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [1/3] powerpc: mm: move pud_pfn stub to common pgtable header | expand |
This patch and its successor would be avoidable if architectures could specify that they wish to use page_table_check_p{ud,md}_{clear,set}. > On 12 Sep 2022, at 11:47 am, Rohan McLure <rmclure@linux.ibm.com> wrote: > > The pud_pfn inline call is only referenced on 64-bit Book3S systems, > but its invocations are gated by pud_devmap() invocations, rendering the > body of this function as dead code. > > As such, this function is readily exportable to all platforms in the > instance where kernel features depend on it at least being defined. > > Signed-off-by: Rohan McLure <rmclure@linux.ibm.com> > --- > arch/powerpc/include/asm/book3s/64/pgtable.h | 10 ---------- > arch/powerpc/include/asm/pgtable.h | 12 ++++++++++++ > 2 files changed, 12 insertions(+), 10 deletions(-) > > diff --git a/arch/powerpc/include/asm/book3s/64/pgtable.h b/arch/powerpc/include/asm/book3s/64/pgtable.h > index 392ff48f77df..8874f2a3661d 100644 > --- a/arch/powerpc/include/asm/book3s/64/pgtable.h > +++ b/arch/powerpc/include/asm/book3s/64/pgtable.h > @@ -1411,16 +1411,6 @@ static inline int pgd_devmap(pgd_t pgd) > } > #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ > > -static inline int pud_pfn(pud_t pud) > -{ > - /* > - * Currently all calls to pud_pfn() are gated around a pud_devmap() > - * check so this should never be used. If it grows another user we > - * want to know about it. > - */ > - BUILD_BUG(); > - return 0; > -} > #define __HAVE_ARCH_PTEP_MODIFY_PROT_TRANSACTION > pte_t ptep_modify_prot_start(struct vm_area_struct *, unsigned long, pte_t *); > void ptep_modify_prot_commit(struct vm_area_struct *, unsigned long, > diff --git a/arch/powerpc/include/asm/pgtable.h b/arch/powerpc/include/asm/pgtable.h > index 33f4bf8d22b0..522145b16a07 100644 > --- a/arch/powerpc/include/asm/pgtable.h > +++ b/arch/powerpc/include/asm/pgtable.h > @@ -158,6 +158,18 @@ struct seq_file; > void arch_report_meminfo(struct seq_file *m); > #endif /* CONFIG_PPC64 */ > > +#define pud_pfn pud_pfn > +static inline int pud_pfn(pud_t pud) > +{ > + /* > + * Currently all calls to pud_pfn() are gated around a pud_devmap() > + * check so this should never be used. If it grows another user we > + * want to know about it. > + */ > + BUILD_BUG(); > + return 0; > +} > + > #endif /* __ASSEMBLY__ */ > > #endif /* _ASM_POWERPC_PGTABLE_H */ > -- > 2.34.1 >
Le 12/09/2022 à 03:47, Rohan McLure a écrit : > The pud_pfn inline call is only referenced on 64-bit Book3S systems, > but its invocations are gated by pud_devmap() invocations, rendering the > body of this function as dead code. > > As such, this function is readily exportable to all platforms in the > instance where kernel features depend on it at least being defined. I don't understand. If this function is dead code, why move it to a larger scope ? Shouldn't you remove it instead ? Or are you planning to re-use it on other platforms ? In that case say it. > > Signed-off-by: Rohan McLure <rmclure@linux.ibm.com> > --- > arch/powerpc/include/asm/book3s/64/pgtable.h | 10 ---------- > arch/powerpc/include/asm/pgtable.h | 12 ++++++++++++ > 2 files changed, 12 insertions(+), 10 deletions(-) > > diff --git a/arch/powerpc/include/asm/book3s/64/pgtable.h b/arch/powerpc/include/asm/book3s/64/pgtable.h > index 392ff48f77df..8874f2a3661d 100644 > --- a/arch/powerpc/include/asm/book3s/64/pgtable.h > +++ b/arch/powerpc/include/asm/book3s/64/pgtable.h > @@ -1411,16 +1411,6 @@ static inline int pgd_devmap(pgd_t pgd) > } > #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ > > -static inline int pud_pfn(pud_t pud) > -{ > - /* > - * Currently all calls to pud_pfn() are gated around a pud_devmap() > - * check so this should never be used. If it grows another user we > - * want to know about it. > - */ > - BUILD_BUG(); > - return 0; > -} > #define __HAVE_ARCH_PTEP_MODIFY_PROT_TRANSACTION > pte_t ptep_modify_prot_start(struct vm_area_struct *, unsigned long, pte_t *); > void ptep_modify_prot_commit(struct vm_area_struct *, unsigned long, > diff --git a/arch/powerpc/include/asm/pgtable.h b/arch/powerpc/include/asm/pgtable.h > index 33f4bf8d22b0..522145b16a07 100644 > --- a/arch/powerpc/include/asm/pgtable.h > +++ b/arch/powerpc/include/asm/pgtable.h > @@ -158,6 +158,18 @@ struct seq_file; > void arch_report_meminfo(struct seq_file *m); > #endif /* CONFIG_PPC64 */ > > +#define pud_pfn pud_pfn Why do you need to add that define ? > +static inline int pud_pfn(pud_t pud) > +{ > + /* > + * Currently all calls to pud_pfn() are gated around a pud_devmap() > + * check so this should never be used. If it grows another user we > + * want to know about it. > + */ > + BUILD_BUG(); > + return 0; > +} > + > #endif /* __ASSEMBLY__ */ > > #endif /* _ASM_POWERPC_PGTABLE_H */
diff --git a/arch/powerpc/include/asm/book3s/64/pgtable.h b/arch/powerpc/include/asm/book3s/64/pgtable.h index 392ff48f77df..8874f2a3661d 100644 --- a/arch/powerpc/include/asm/book3s/64/pgtable.h +++ b/arch/powerpc/include/asm/book3s/64/pgtable.h @@ -1411,16 +1411,6 @@ static inline int pgd_devmap(pgd_t pgd) } #endif /* CONFIG_TRANSPARENT_HUGEPAGE */ -static inline int pud_pfn(pud_t pud) -{ - /* - * Currently all calls to pud_pfn() are gated around a pud_devmap() - * check so this should never be used. If it grows another user we - * want to know about it. - */ - BUILD_BUG(); - return 0; -} #define __HAVE_ARCH_PTEP_MODIFY_PROT_TRANSACTION pte_t ptep_modify_prot_start(struct vm_area_struct *, unsigned long, pte_t *); void ptep_modify_prot_commit(struct vm_area_struct *, unsigned long, diff --git a/arch/powerpc/include/asm/pgtable.h b/arch/powerpc/include/asm/pgtable.h index 33f4bf8d22b0..522145b16a07 100644 --- a/arch/powerpc/include/asm/pgtable.h +++ b/arch/powerpc/include/asm/pgtable.h @@ -158,6 +158,18 @@ struct seq_file; void arch_report_meminfo(struct seq_file *m); #endif /* CONFIG_PPC64 */ +#define pud_pfn pud_pfn +static inline int pud_pfn(pud_t pud) +{ + /* + * Currently all calls to pud_pfn() are gated around a pud_devmap() + * check so this should never be used. If it grows another user we + * want to know about it. + */ + BUILD_BUG(); + return 0; +} + #endif /* __ASSEMBLY__ */ #endif /* _ASM_POWERPC_PGTABLE_H */
The pud_pfn inline call is only referenced on 64-bit Book3S systems, but its invocations are gated by pud_devmap() invocations, rendering the body of this function as dead code. As such, this function is readily exportable to all platforms in the instance where kernel features depend on it at least being defined. Signed-off-by: Rohan McLure <rmclure@linux.ibm.com> --- arch/powerpc/include/asm/book3s/64/pgtable.h | 10 ---------- arch/powerpc/include/asm/pgtable.h | 12 ++++++++++++ 2 files changed, 12 insertions(+), 10 deletions(-)