with David Daney Cced
On Sun, Nov 20, 2011 at 10:56 AM, David Rientjes <rientjes@google.com> wrote:
> HPAGE_{MASK,SHIFT,SIZE} are only defined with CONFIG_HUGETLB_PAGE, so
> make sure to never use them unless that option is enabled.
>
> Signed-off-by: David Rientjes <rientjes@google.com>
> ---
> arch/mips/mm/tlb-r4k.c | 13 ++++++++-----
> 1 files changed, 8 insertions(+), 5 deletions(-)
>
> diff --git a/arch/mips/mm/tlb-r4k.c b/arch/mips/mm/tlb-r4k.c
> --- a/arch/mips/mm/tlb-r4k.c
> +++ b/arch/mips/mm/tlb-r4k.c
> @@ -124,9 +124,11 @@ void local_flush_tlb_range(struct vm_area_struct *vma,
> unsigned long start,
>
> ENTER_CRITICAL(flags);
> if (huge) {
> +#ifdef CONFIG_HUGETLB_PAGE
> start = round_down(start, HPAGE_SIZE);
> end = round_up(end, HPAGE_SIZE);
> size = (end - start) >> HPAGE_SHIFT;
> +#endif
> } else {
> start = round_down(start, PAGE_SIZE << 1);
> end = round_up(end, PAGE_SIZE << 1);
> @@ -135,15 +137,16 @@ void local_flush_tlb_range(struct vm_area_struct *vma,
> unsigned long start,
> if (size <= current_cpu_data.tlbsize/2) {
> int oldpid = read_c0_entryhi();
> int newpid = cpu_asid(cpu, mm);
> + unsigned long incr = PAGE_SIZE << 1;
>
> - while (start < end) {
> +#ifdef CONFIG_HUGETLB_PAGE
> + if (huge)
> + incr = HPAGE_SIZE;
> +#endif
> + for (; start < end; start += incr) {
Here huge is included in #ifdef, but not the above huge, so readers a bit
confused. The following diff is what I mean.
Best regards
Hillf
---
--- a/arch/mips/include/asm/page.h Sun Nov 20 13:08:44 2011
+++ b/arch/mips/include/asm/page.h Sun Nov 20 13:17:43 2011
@@ -38,6 +38,11 @@
#define HPAGE_SIZE (_AC(1,UL) << HPAGE_SHIFT)
#define HPAGE_MASK (~(HPAGE_SIZE - 1))
#define HUGETLB_PAGE_ORDER (HPAGE_SHIFT - PAGE_SHIFT)
+#else
+#define HPAGE_SHIFT ({ BUG(); 0; })
+#define HPAGE_SIZE ({ BUG(); 0; })
+#define HPAGE_MASK ({ BUG(); 0; })
+#define HUGETLB_PAGE_ORDER ({ BUG(); 0; })
#endif /* CONFIG_HUGETLB_PAGE */
#ifndef __ASSEMBLY__
|