2018-08-24 18:24:22

by Guenter Roeck

[permalink] [raw]
Subject: [PATCH] riscv: tlb: Provide definition of tlb_flush() before including tlb.h

From: Will Deacon <[email protected]>

As of commit fd1102f0aade ("mm: mmu_notifier fix for tlb_end_vma"),
asm-generic/tlb.h now calls tlb_flush() from a static inline function,
so we need to make sure that it's declared before #including the
asm-generic header in the arch header.

Reported-by: Guenter Roeck <[email protected]>
Fixes: fd1102f0aade ("mm: mmu_notifier fix for tlb_end_vma")
Signed-off-by: Will Deacon <[email protected]>
[groeck: Use forward declaration instead of moving inline function]
Signed-off-by: Guenter Roeck <[email protected]>
---
arch/riscv/include/asm/tlb.h | 4 ++++
1 file changed, 4 insertions(+)

diff --git a/arch/riscv/include/asm/tlb.h b/arch/riscv/include/asm/tlb.h
index c229509288ea..439dc7072e05 100644
--- a/arch/riscv/include/asm/tlb.h
+++ b/arch/riscv/include/asm/tlb.h
@@ -14,6 +14,10 @@
#ifndef _ASM_RISCV_TLB_H
#define _ASM_RISCV_TLB_H

+struct mmu_gather;
+
+static void tlb_flush(struct mmu_gather *tlb);
+
#include <asm-generic/tlb.h>

static inline void tlb_flush(struct mmu_gather *tlb)
--
2.7.4



2018-08-27 19:51:58

by Palmer Dabbelt

[permalink] [raw]
Subject: Re: [PATCH] riscv: tlb: Provide definition of tlb_flush() before including tlb.h

On Fri, 24 Aug 2018 11:22:55 PDT (-0700), [email protected] wrote:
> From: Will Deacon <[email protected]>
>
> As of commit fd1102f0aade ("mm: mmu_notifier fix for tlb_end_vma"),
> asm-generic/tlb.h now calls tlb_flush() from a static inline function,
> so we need to make sure that it's declared before #including the
> asm-generic header in the arch header.
>
> Reported-by: Guenter Roeck <[email protected]>
> Fixes: fd1102f0aade ("mm: mmu_notifier fix for tlb_end_vma")
> Signed-off-by: Will Deacon <[email protected]>
> [groeck: Use forward declaration instead of moving inline function]
> Signed-off-by: Guenter Roeck <[email protected]>
> ---
> arch/riscv/include/asm/tlb.h | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/arch/riscv/include/asm/tlb.h b/arch/riscv/include/asm/tlb.h
> index c229509288ea..439dc7072e05 100644
> --- a/arch/riscv/include/asm/tlb.h
> +++ b/arch/riscv/include/asm/tlb.h
> @@ -14,6 +14,10 @@
> #ifndef _ASM_RISCV_TLB_H
> #define _ASM_RISCV_TLB_H
>
> +struct mmu_gather;
> +
> +static void tlb_flush(struct mmu_gather *tlb);
> +
> #include <asm-generic/tlb.h>
>
> static inline void tlb_flush(struct mmu_gather *tlb)

Thanks! I'm going to take this into my for-linus branch which I'm still hoping
to tag today, pending my email queue.