microblaze: PCI early support for noMMU system
authorMichal Simek <monstr@monstr.eu>
Wed, 20 Jan 2010 14:17:08 +0000 (15:17 +0100)
committerMichal Simek <monstr@monstr.eu>
Thu, 11 Mar 2010 13:16:17 +0000 (14:16 +0100)
Signed-off-by: Michal Simek <monstr@monstr.eu>
arch/microblaze/include/asm/pgalloc.h
arch/microblaze/include/asm/pgtable.h
arch/microblaze/mm/init.c
arch/microblaze/pci/pci-common.c

index 7547f50645608c9c34170e9680d3072b9e636a8d..f44b0d696fe2d9faef35887373163ec3d22e3e8d 100644 (file)
@@ -19,6 +19,7 @@
 #include <asm/io.h>
 #include <asm/page.h>
 #include <asm/cache.h>
+#include <asm/pgtable.h>
 
 #define PGDIR_ORDER    0
 
@@ -111,7 +112,6 @@ static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm,
                unsigned long address)
 {
        pte_t *pte;
-       extern int mem_init_done;
        extern void *early_get_page(void);
        if (mem_init_done) {
                pte = (pte_t *)__get_free_page(GFP_KERNEL |
index adcc3320e52ad3ec373bf348e7f717e4ef377f59..dd2bb60651c7f3520b257df57f2b46940e9835d9 100644 (file)
 #define io_remap_pfn_range(vma, vaddr, pfn, size, prot)                \
                remap_pfn_range(vma, vaddr, pfn, size, prot)
 
+#ifndef __ASSEMBLY__
+extern int mem_init_done;
+#endif
+
 #ifndef CONFIG_MMU
 
 #define pgd_present(pgd)       (1) /* pages are always present on non MMU */
@@ -51,6 +55,8 @@ static inline int pte_file(pte_t pte) { return 0; }
 
 #define arch_enter_lazy_cpu_mode()     do {} while (0)
 
+#define pgprot_noncached_wc(prot)      prot
+
 #else /* CONFIG_MMU */
 
 #include <asm-generic/4level-fixup.h>
index aa6e163411b52a6f0326b0313ef4669d8f611cf7..1608e2e1a44abcb553a82b73b18d6bacef94556f 100644 (file)
@@ -23,6 +23,9 @@
 #include <asm/sections.h>
 #include <asm/tlb.h>
 
+/* Use for MMU and noMMU because of PCI generic code */
+int mem_init_done;
+
 #ifndef CONFIG_MMU
 unsigned int __page_offset;
 EXPORT_SYMBOL(__page_offset);
@@ -30,7 +33,6 @@ EXPORT_SYMBOL(__page_offset);
 #else
 DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);
 
-int mem_init_done;
 static int init_bootmem_done;
 #endif /* CONFIG_MMU */
 
@@ -202,9 +204,7 @@ void __init mem_init(void)
        printk(KERN_INFO "Memory: %luk/%luk available\n",
               nr_free_pages() << (PAGE_SHIFT-10),
               num_physpages << (PAGE_SHIFT-10));
-#ifdef CONFIG_MMU
        mem_init_done = 1;
-#endif
 }
 
 #ifndef CONFIG_MMU
@@ -216,6 +216,10 @@ int ___range_ok(unsigned long addr, unsigned long size)
 }
 EXPORT_SYMBOL(___range_ok);
 
+int page_is_ram(unsigned long pfn)
+{
+       return __range_ok(pfn, 0);
+}
 #else
 int page_is_ram(unsigned long pfn)
 {
@@ -344,6 +348,8 @@ void __init *early_get_page(void)
        return p;
 }
 
+#endif /* CONFIG_MMU */
+
 void * __init_refok alloc_maybe_bootmem(size_t size, gfp_t mask)
 {
        if (mem_init_done)
@@ -365,5 +371,3 @@ void * __init_refok zalloc_maybe_bootmem(size_t size, gfp_t mask)
        }
        return p;
 }
-
-#endif /* CONFIG_MMU */
index f03f8be2740a9c1040d984c2d9abab0d21646a2c..0be34350d7335e1aea4ead8b142ea35017ea43b9 100644 (file)
@@ -561,11 +561,13 @@ int pci_mmap_legacy_page_range(struct pci_bus *bus,
                 * memory, effectively behaving just like /dev/zero
                 */
                if ((offset + size) > hose->isa_mem_size) {
+#ifdef CONFIG_MMU
                        printk(KERN_DEBUG
                                "Process %s (pid:%d) mapped non-existing PCI"
                                "legacy memory for 0%04x:%02x\n",
                                current->comm, current->pid, pci_domain_nr(bus),
                                                                bus->number);
+#endif
                        if (vma->vm_flags & VM_SHARED)
                                return shmem_zero_setup(vma);
                        return 0;