Re: [PATCH 23/27] sparc: Use common bits from generic tlb.h

From: Guenter Roeck
Date: Wed May 14 2014 - 23:14:18 EST


On 05/14/2014 01:27 PM, Richard Weinberger wrote:
Am 14.05.2014 22:22, schrieb Sam Ravnborg:
On Wed, May 14, 2014 at 10:04:41PM +0200, Richard Weinberger wrote:
Am 14.05.2014 21:55, schrieb Sam Ravnborg:
On Wed, May 14, 2014 at 08:59:55PM +0200, Richard Weinberger wrote:
It is no longer needed to define them on our own.

Cc: "David S. Miller" <davem@xxxxxxxxxxxxx>
Cc: Richard Weinberger <richard@xxxxxx>
Cc: sparclinux@xxxxxxxxxxxxxxx
Cc: linux-kernel@xxxxxxxxxxxxxxx
Signed-off-by: Richard Weinberger <richard@xxxxxx>
---
arch/sparc/include/asm/tlb_32.h | 8 --------
arch/sparc/include/asm/tlb_64.h | 3 ---
2 files changed, 11 deletions(-)

diff --git a/arch/sparc/include/asm/tlb_32.h b/arch/sparc/include/asm/tlb_32.h
index 6d02d1c..60641a1 100644
--- a/arch/sparc/include/asm/tlb_32.h
+++ b/arch/sparc/include/asm/tlb_32.h
@@ -11,14 +11,6 @@ do { \
flush_tlb_range(vma, vma->vm_start, vma->vm_end); \
} while (0)

-#define __tlb_remove_tlb_entry(tlb, pte, address) \
- do { } while (0)
-
-#define tlb_flush(tlb) \
-do { \
- flush_tlb_mm((tlb)->mm); \
-} while (0)
-
#include <asm-generic/tlb.h>

#endif /* _SPARC_TLB_H */

This part looks OK.

diff --git a/arch/sparc/include/asm/tlb_64.h b/arch/sparc/include/asm/tlb_64.h
index 190e189..36fdcec 100644
--- a/arch/sparc/include/asm/tlb_64.h
+++ b/arch/sparc/include/asm/tlb_64.h
@@ -22,9 +22,6 @@ extern void smp_flush_tlb_mm(struct mm_struct *mm);
extern void __flush_tlb_pending(unsigned long, unsigned long, unsigned long *);
extern void flush_tlb_pending(void);

-#define tlb_start_vma(tlb, vma) do { } while (0)
-#define tlb_end_vma(tlb, vma) do { } while (0)
-#define __tlb_remove_tlb_entry(tlb, ptep, address) do { } while (0)
#define tlb_flush(tlb) flush_tlb_pending()

#include <asm-generic/tlb.h>

This does not fly for sparc64.
__pte_free_tlb is a static inline in pgalloc_64.h so no
define exist to teach tlb.h that an arch override exist.

Okay, we need a #define __pte_free_tlb __pte_free_tlb.

Likewise for __pmd_free_tlb

__pmd_free_tlb is already a macro so the generic tlb.h should handle it correctly.

#define __pmd_free_tlb(tlb, pmd, addr) \
pgtable_free_tlb(tlb, pmd, false)

I'd move both __pmd_free_tlb and __pte_free_tlb into tlb.h such that the include order
of tlb.h vs pgalloc.h does not matter.
Are you fine with that?
Yes, as long as sparc64 continue to build it makes good sense
to define these in the same file as done by most other architectures.

Sam

Will do.
Sadly also with my (broken) patch sparc64 builds fine.

Is there an easy way to boot a sparc64 Linux within qemu?


Try rootfs/sparc64 from https://github.com/groeck/linux-build-test.git

Guenter

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/