Commit 79bf3a13 authored by Michal Simek's avatar Michal Simek

microblaze: PCI early support for noMMU system

Signed-off-by: default avatarMichal Simek <monstr@monstr.eu>
parent 1be53e08
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#include <asm/io.h> #include <asm/io.h>
#include <asm/page.h> #include <asm/page.h>
#include <asm/cache.h> #include <asm/cache.h>
#include <asm/pgtable.h>
#define PGDIR_ORDER 0 #define PGDIR_ORDER 0
...@@ -111,7 +112,6 @@ static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, ...@@ -111,7 +112,6 @@ static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm,
unsigned long address) unsigned long address)
{ {
pte_t *pte; pte_t *pte;
extern int mem_init_done;
extern void *early_get_page(void); extern void *early_get_page(void);
if (mem_init_done) { if (mem_init_done) {
pte = (pte_t *)__get_free_page(GFP_KERNEL | pte = (pte_t *)__get_free_page(GFP_KERNEL |
......
...@@ -16,6 +16,10 @@ ...@@ -16,6 +16,10 @@
#define io_remap_pfn_range(vma, vaddr, pfn, size, prot) \ #define io_remap_pfn_range(vma, vaddr, pfn, size, prot) \
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 #ifndef CONFIG_MMU
#define pgd_present(pgd) (1) /* pages are always present on non 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; } ...@@ -51,6 +55,8 @@ static inline int pte_file(pte_t pte) { return 0; }
#define arch_enter_lazy_cpu_mode() do {} while (0) #define arch_enter_lazy_cpu_mode() do {} while (0)
#define pgprot_noncached_wc(prot) prot
#else /* CONFIG_MMU */ #else /* CONFIG_MMU */
#include <asm-generic/4level-fixup.h> #include <asm-generic/4level-fixup.h>
......
...@@ -23,6 +23,9 @@ ...@@ -23,6 +23,9 @@
#include <asm/sections.h> #include <asm/sections.h>
#include <asm/tlb.h> #include <asm/tlb.h>
/* Use for MMU and noMMU because of PCI generic code */
int mem_init_done;
#ifndef CONFIG_MMU #ifndef CONFIG_MMU
unsigned int __page_offset; unsigned int __page_offset;
EXPORT_SYMBOL(__page_offset); EXPORT_SYMBOL(__page_offset);
...@@ -30,7 +33,6 @@ EXPORT_SYMBOL(__page_offset); ...@@ -30,7 +33,6 @@ EXPORT_SYMBOL(__page_offset);
#else #else
DEFINE_PER_CPU(struct mmu_gather, mmu_gathers); DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);
int mem_init_done;
static int init_bootmem_done; static int init_bootmem_done;
#endif /* CONFIG_MMU */ #endif /* CONFIG_MMU */
...@@ -202,9 +204,7 @@ void __init mem_init(void) ...@@ -202,9 +204,7 @@ void __init mem_init(void)
printk(KERN_INFO "Memory: %luk/%luk available\n", printk(KERN_INFO "Memory: %luk/%luk available\n",
nr_free_pages() << (PAGE_SHIFT-10), nr_free_pages() << (PAGE_SHIFT-10),
num_physpages << (PAGE_SHIFT-10)); num_physpages << (PAGE_SHIFT-10));
#ifdef CONFIG_MMU
mem_init_done = 1; mem_init_done = 1;
#endif
} }
#ifndef CONFIG_MMU #ifndef CONFIG_MMU
...@@ -216,6 +216,10 @@ int ___range_ok(unsigned long addr, unsigned long size) ...@@ -216,6 +216,10 @@ int ___range_ok(unsigned long addr, unsigned long size)
} }
EXPORT_SYMBOL(___range_ok); EXPORT_SYMBOL(___range_ok);
int page_is_ram(unsigned long pfn)
{
return __range_ok(pfn, 0);
}
#else #else
int page_is_ram(unsigned long pfn) int page_is_ram(unsigned long pfn)
{ {
...@@ -344,6 +348,8 @@ void __init *early_get_page(void) ...@@ -344,6 +348,8 @@ void __init *early_get_page(void)
return p; return p;
} }
#endif /* CONFIG_MMU */
void * __init_refok alloc_maybe_bootmem(size_t size, gfp_t mask) void * __init_refok alloc_maybe_bootmem(size_t size, gfp_t mask)
{ {
if (mem_init_done) if (mem_init_done)
...@@ -365,5 +371,3 @@ void * __init_refok zalloc_maybe_bootmem(size_t size, gfp_t mask) ...@@ -365,5 +371,3 @@ void * __init_refok zalloc_maybe_bootmem(size_t size, gfp_t mask)
} }
return p; return p;
} }
#endif /* CONFIG_MMU */
...@@ -561,11 +561,13 @@ int pci_mmap_legacy_page_range(struct pci_bus *bus, ...@@ -561,11 +561,13 @@ int pci_mmap_legacy_page_range(struct pci_bus *bus,
* memory, effectively behaving just like /dev/zero * memory, effectively behaving just like /dev/zero
*/ */
if ((offset + size) > hose->isa_mem_size) { if ((offset + size) > hose->isa_mem_size) {
#ifdef CONFIG_MMU
printk(KERN_DEBUG printk(KERN_DEBUG
"Process %s (pid:%d) mapped non-existing PCI" "Process %s (pid:%d) mapped non-existing PCI"
"legacy memory for 0%04x:%02x\n", "legacy memory for 0%04x:%02x\n",
current->comm, current->pid, pci_domain_nr(bus), current->comm, current->pid, pci_domain_nr(bus),
bus->number); bus->number);
#endif
if (vma->vm_flags & VM_SHARED) if (vma->vm_flags & VM_SHARED)
return shmem_zero_setup(vma); return shmem_zero_setup(vma);
return 0; return 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment