linux-next: manual merge of the catalin tree with the arm tree

From: Stephen Rothwell
Date: Thu Jul 22 2010 - 23:15:20 EST


Hi Catalin,

Today's linux-next merge of the catalin tree got a conflict in
arch/arm/mm/mmu.c between commit 3abe9d33b382cb9eee7bfee8d90b10078f4baa4d
("ARM: early_alloc()") from the arm tree and commit
838105a674b7b72cb26c346155a40901c5bf7723 ("ARM: Remove the domain
switching on ARMv6k/v7 CPUs") from the catalin tree.

I fixed it up (I think - see below) and can carry the fix as necessary.
--
Cheers,
Stephen Rothwell sfr@xxxxxxxxxxxxxxxx

diff --cc arch/arm/mm/mmu.c
index 9ee3c75,e107f1b..0000000
--- a/arch/arm/mm/mmu.c
+++ b/arch/arm/mm/mmu.c
@@@ -11,12 -11,14 +11,13 @@@
#include <linux/kernel.h>
#include <linux/errno.h>
#include <linux/init.h>
-#include <linux/bootmem.h>
#include <linux/mman.h>
#include <linux/nodemask.h>
+#include <linux/memblock.h>
#include <linux/sort.h>
+ #include <linux/fs.h>

#include <asm/cputype.h>
-#include <asm/mach-types.h>
#include <asm/sections.h>
#include <asm/cachetype.h>
#include <asm/setup.h>
@@@ -498,30 -488,33 +500,43 @@@ static void __init build_mem_type_table
}
}

+ #ifdef CONFIG_ARM_DMA_MEM_BUFFERABLE
+ pgprot_t phys_mem_access_prot(struct file *file, unsigned long pfn,
+ unsigned long size, pgprot_t vma_prot)
+ {
+ if (!pfn_valid(pfn))
+ return pgprot_noncached(vma_prot);
+ else if (file->f_flags & O_SYNC)
+ return pgprot_writecombine(vma_prot);
+ return vma_prot;
+ }
+ EXPORT_SYMBOL(phys_mem_access_prot);
+ #endif
+
#define vectors_base() (vectors_high() ? 0xffff0000 : 0)

-static void __init alloc_init_pte(pmd_t *pmd, unsigned long addr,
- unsigned long end, unsigned long pfn,
- const struct mem_type *type)
+static void __init *early_alloc(unsigned long sz)
{
- pte_t *pte;
+ void *ptr = __va(memblock_alloc(sz, sz));
+ memset(ptr, 0, sz);
+ return ptr;
+}

+static pte_t *early_pte_alloc(pmd_t *pmd, unsigned long addr, unsigned long prot)
+{
if (pmd_none(*pmd)) {
- pte = alloc_bootmem_low_pages(2 * PTRS_PER_PTE * sizeof(pte_t));
- __pmd_populate(pmd, __pa(pte) | type->prot_l1);
+ pte_t *pte = early_alloc(2 * PTRS_PER_PTE * sizeof(pte_t));
+ __pmd_populate(pmd, __pa(pte) | prot);
}
+ BUG_ON(pmd_bad(*pmd));
+ return pte_offset_kernel(pmd, addr);
+}

- pte = pte_offset_kernel(pmd, addr);
+static void __init alloc_init_pte(pmd_t *pmd, unsigned long addr,
+ unsigned long end, unsigned long pfn,
+ const struct mem_type *type)
+{
+ pte_t *pte = early_pte_alloc(pmd, addr, type->prot_l1);
do {
set_pte_ext(pte, pfn_pte(pfn, __pgprot(type->prot_pte)), 0);
pfn++;
@@@ -888,7 -954,7 +902,7 @@@ static void __init devicemaps_init(stru
/*
* Allocate the vector page early.
*/
- vectors = early_alloc(PAGE_SIZE);
- vectors_page = alloc_bootmem_low_pages(PAGE_SIZE);
++ vectors_page = early_alloc(PAGE_SIZE);

for (addr = VMALLOC_END; addr; addr += PGDIR_SIZE)
pmd_clear(pmd_off_k(addr));
--
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/