Hi David,

Today's linux-next merge of the sparc-next tree got a conflict in
arch/sparc/include/asm/pgtable_64.h between commit 26cf432551d7
("sparc64: Add basic validations to {pud,pmd}_bad()") from Linus' tree
and commit f05a68653e56 ("sparc: drop use of extern for prototypes in
arch/sparc/include/asm") from the sparc-next tree.

I fixed it up (see below) and can carry the fix as necessary (no action
is required).

-- 
Cheers,
Stephen Rothwell                    s...@canb.auug.org.au

diff --cc arch/sparc/include/asm/pgtable_64.h
index 1a49ffdf9da9,521b8d8c1f96..000000000000
--- a/arch/sparc/include/asm/pgtable_64.h
+++ b/arch/sparc/include/asm/pgtable_64.h
@@@ -765,23 -757,9 +765,23 @@@ static inline int pmd_present(pmd_t pmd
  
  #define pmd_none(pmd)                 (!pmd_val(pmd))
  
 +/* pmd_bad() is only called on non-trans-huge PMDs.  Our encoding is
 + * very simple, it's just the physical address.  PTE tables are of
 + * size PAGE_SIZE so make sure the sub-PAGE_SIZE bits are clear and
 + * the top bits outside of the range of any physical address size we
 + * support are clear as well.  We also validate the physical itself.
 + */
 +#define pmd_bad(pmd)                  ((pmd_val(pmd) & ~PAGE_MASK) || \
 +                                       !__kern_addr_valid(pmd_val(pmd)))
 +
 +#define pud_none(pud)                 (!pud_val(pud))
 +
 +#define pud_bad(pud)                  ((pud_val(pud) & ~PAGE_MASK) || \
 +                                       !__kern_addr_valid(pud_val(pud)))
 +
  #ifdef CONFIG_TRANSPARENT_HUGEPAGE
- extern void set_pmd_at(struct mm_struct *mm, unsigned long addr,
-                      pmd_t *pmdp, pmd_t pmd);
+ void set_pmd_at(struct mm_struct *mm, unsigned long addr,
+               pmd_t *pmdp, pmd_t pmd);
  #else
  static inline void set_pmd_at(struct mm_struct *mm, unsigned long addr,
                              pmd_t *pmdp, pmd_t pmd)
@@@ -900,28 -881,24 +900,28 @@@ static inline void __set_pte_at(struct 
  extern pgd_t swapper_pg_dir[PTRS_PER_PGD];
  extern pmd_t swapper_low_pmd_dir[PTRS_PER_PMD];
  
- extern void paging_init(void);
- extern unsigned long find_ecache_flush_span(unsigned long size);
+ void paging_init(void);
+ unsigned long find_ecache_flush_span(unsigned long size);
  
  struct seq_file;
- extern void mmu_info(struct seq_file *);
+ void mmu_info(struct seq_file *);
  
  struct vm_area_struct;
- extern void update_mmu_cache(struct vm_area_struct *, unsigned long, pte_t *);
+ void update_mmu_cache(struct vm_area_struct *, unsigned long, pte_t *);
  #ifdef CONFIG_TRANSPARENT_HUGEPAGE
- extern void update_mmu_cache_pmd(struct vm_area_struct *vma, unsigned long 
addr,
-                                pmd_t *pmd);
+ void update_mmu_cache_pmd(struct vm_area_struct *vma, unsigned long addr,
+                         pmd_t *pmd);
  
 +#define __HAVE_ARCH_PMDP_INVALIDATE
 +extern void pmdp_invalidate(struct vm_area_struct *vma, unsigned long address,
 +                          pmd_t *pmdp);
 +
  #define __HAVE_ARCH_PGTABLE_DEPOSIT
- extern void pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp,
-                                      pgtable_t pgtable);
+ void pgtable_trans_huge_deposit(struct mm_struct *mm, pmd_t *pmdp,
+                               pgtable_t pgtable);
  
  #define __HAVE_ARCH_PGTABLE_WITHDRAW
- extern pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t 
*pmdp);
+ pgtable_t pgtable_trans_huge_withdraw(struct mm_struct *mm, pmd_t *pmdp);
  #endif
  
  /* Encode and de-code a swap entry */
@@@ -937,12 -914,24 +937,12 @@@
  #define __swp_entry_to_pte(x)         ((pte_t) { (x).val })
  
  /* File offset in PTE support. */
- extern unsigned long pte_file(pte_t);
+ unsigned long pte_file(pte_t);
  #define pte_to_pgoff(pte)     (pte_val(pte) >> PAGE_SHIFT)
- extern pte_t pgoff_to_pte(unsigned long);
+ pte_t pgoff_to_pte(unsigned long);
  #define PTE_FILE_MAX_BITS     (64UL - PAGE_SHIFT - 1UL)
  
- extern int page_in_phys_avail(unsigned long paddr);
 -extern unsigned long sparc64_valid_addr_bitmap[];
 -
 -/* Needs to be defined here and not in linux/mm.h, as it is arch dependent */
 -static inline bool kern_addr_valid(unsigned long addr)
 -{
 -      unsigned long paddr = __pa(addr);
 -
 -      if ((paddr >> 41UL) != 0UL)
 -              return false;
 -      return test_bit(paddr >> 22, sparc64_valid_addr_bitmap);
 -}
 -
+ int page_in_phys_avail(unsigned long paddr);
  
  /*
   * For sparc32&64, the pfn in io_remap_pfn_range() carries <iospace> in

Attachment: signature.asc
Description: PGP signature

Reply via email to