WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [IA64] cleanup CONFIG_VIRTUAL_MEM_MAP.

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [IA64] cleanup CONFIG_VIRTUAL_MEM_MAP.
From: Xen patchbot -unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Thu, 27 Apr 2006 10:32:45 +0000
Delivery-date: Thu, 27 Apr 2006 03:40:46 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User awilliam@xxxxxxxxxxx
# Node ID 4ed269e73e95cc7618950ab6cea58ca1e1c243db
# Parent  bdb08c9ef3d1905721484c47634a019defb79abb
[IA64] cleanup CONFIG_VIRTUAL_MEM_MAP.

Signed-off-by: Kouya Shimura <kouya@xxxxxxxxxxxxxx>

diff -r bdb08c9ef3d1 -r 4ed269e73e95 xen/arch/ia64/xen/mm_init.c
--- a/xen/arch/ia64/xen/mm_init.c       Mon Apr 17 08:46:52 2006 -0600
+++ b/xen/arch/ia64/xen/mm_init.c       Mon Apr 17 08:47:36 2006 -0600
@@ -8,286 +8,10 @@
 #include <linux/kernel.h>
 #include <linux/init.h>
 
-#ifdef XEN
 #include <xen/sched.h>
-#endif
-#include <linux/bootmem.h>
-#include <linux/efi.h>
-#include <linux/elf.h>
-#include <linux/mm.h>
-#include <linux/mmzone.h>
-#include <linux/module.h>
-#ifndef XEN
-#include <linux/personality.h>
-#endif
-#include <linux/reboot.h>
-#include <linux/slab.h>
-#include <linux/swap.h>
-#ifndef XEN
-#include <linux/proc_fs.h>
-#endif
-
-#ifndef XEN
-#include <asm/a.out.h>
-#endif
-#include <asm/bitops.h>
-#include <asm/dma.h>
-#ifndef XEN
-#include <asm/ia32.h>
-#endif
-#include <asm/io.h>
-#include <asm/machvec.h>
-#include <asm/numa.h>
-#include <asm/patch.h>
-#include <asm/pgalloc.h>
-#include <asm/sal.h>
-#include <asm/sections.h>
-#include <asm/system.h>
-#include <asm/tlb.h>
-#include <asm/uaccess.h>
-#include <asm/unistd.h>
-#include <asm/mca.h>
 #include <asm/vhpt.h>
 
-#ifndef XEN
-DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);
-#endif
-
 extern void ia64_tlb_init (void);
-
-unsigned long MAX_DMA_ADDRESS = PAGE_OFFSET + 0x100000000UL;
-
-#ifdef CONFIG_VIRTUAL_MEM_MAP
-unsigned long vmalloc_end = VMALLOC_END_INIT;
-EXPORT_SYMBOL(vmalloc_end);
-struct page_info *vmem_map;
-EXPORT_SYMBOL(vmem_map);
-#endif
-
-// static int pgt_cache_water[2] = { 25, 50 };
-
-#ifndef XEN
-struct page_info *zero_page_memmap_ptr;        /* map entry for zero page */
-EXPORT_SYMBOL(zero_page_memmap_ptr);
-
-void *high_memory;
-EXPORT_SYMBOL(high_memory);
-
-/////////////////////////////////////////////
-// following from linux-2.6.7/mm/mmap.c
-/* description of effects of mapping type and prot in current implementation.
- * this is due to the limited x86 page protection hardware.  The expected
- * behavior is in parens:
- *
- * map_type    prot
- *             PROT_NONE       PROT_READ       PROT_WRITE      PROT_EXEC
- * MAP_SHARED  r: (no) no      r: (yes) yes    r: (no) yes     r: (no) yes
- *             w: (no) no      w: (no) no      w: (yes) yes    w: (no) no
- *             x: (no) no      x: (no) yes     x: (no) yes     x: (yes) yes
- *             
- * MAP_PRIVATE r: (no) no      r: (yes) yes    r: (no) yes     r: (no) yes
- *             w: (no) no      w: (no) no      w: (copy) copy  w: (no) no
- *             x: (no) no      x: (no) yes     x: (no) yes     x: (yes) yes
- *
- */
-pgprot_t protection_map[16] = {
-       __P000, __P001, __P010, __P011, __P100, __P101, __P110, __P111,
-       __S000, __S001, __S010, __S011, __S100, __S101, __S110, __S111
-};
-
-void insert_vm_struct(struct mm_struct * mm, struct vm_area_struct * vma)
-{
-       printf("insert_vm_struct: called, not implemented yet\n");
-}
-
-/////////////////////////////////////////////
-//following from linux/mm/memory.c
-
-#ifndef __ARCH_HAS_4LEVEL_HACK
-/*
- * Allocate page upper directory.
- *
- * We've already handled the fast-path in-line, and we own the
- * page table lock.
- *
- * On a two-level or three-level page table, this ends up actually being
- * entirely optimized away.
- */
-pud_t fastcall *__pud_alloc(struct mm_struct *mm, pgd_t *pgd, unsigned long 
address)
-{
-       pud_t *new;
-
-       spin_unlock(&mm->page_table_lock);
-       new = pud_alloc_one(mm, address);
-       spin_lock(&mm->page_table_lock);
-       if (!new)
-               return NULL;
-
-       /*
-        * Because we dropped the lock, we should re-check the
-        * entry, as somebody else could have populated it..
-        */
-       if (pgd_present(*pgd)) {
-               pud_free(new);
-               goto out;
-       }
-       pgd_populate(mm, pgd, new);
- out:
-       return pud_offset(pgd, address);
-}
-
-/*
- * Allocate page middle directory.
- *
- * We've already handled the fast-path in-line, and we own the
- * page table lock.
- *
- * On a two-level page table, this ends up actually being entirely
- * optimized away.
- */
-pmd_t fastcall *__pmd_alloc(struct mm_struct *mm, pud_t *pud, unsigned long 
address)
-{
-       pmd_t *new;
-
-       spin_unlock(&mm->page_table_lock);
-       new = pmd_alloc_one(mm, address);
-       spin_lock(&mm->page_table_lock);
-       if (!new)
-               return NULL;
-
-       /*
-        * Because we dropped the lock, we should re-check the
-        * entry, as somebody else could have populated it..
-        */
-       if (pud_present(*pud)) {
-               pmd_free(new);
-               goto out;
-       }
-       pud_populate(mm, pud, new);
- out:
-       return pmd_offset(pud, address);
-}
-#endif
-
-pte_t fastcall * pte_alloc_map(struct mm_struct *mm, pmd_t *pmd, unsigned long 
address)
-{
-       if (!pmd_present(*pmd)) {
-               struct page_info *new;
-
-               spin_unlock(&mm->page_table_lock);
-               new = pte_alloc_one(mm, address);
-               spin_lock(&mm->page_table_lock);
-               if (!new)
-                       return NULL;
-
-               /*
-                * Because we dropped the lock, we should re-check the
-                * entry, as somebody else could have populated it..
-                */
-               if (pmd_present(*pmd)) {
-                       pte_free(new);
-                       goto out;
-               }
-               inc_page_state(nr_page_table_pages);
-               pmd_populate(mm, pmd, new);
-       }
-out:
-       return pte_offset_map(pmd, address);
-}
-/////////////////////////////////////////////
-#endif /* XEN */
-
-#if 0
-void
-update_mmu_cache (struct vm_area_struct *vma, unsigned long vaddr, pte_t pte)
-{
-       unsigned long addr;
-       struct page_info *page;
-
-       if (!pte_exec(pte))
-               return;                         /* not an executable page... */
-
-       page = pte_page(pte);
-       /* don't use VADDR: it may not be mapped on this CPU (or may have just 
been flushed): */
-       addr = (unsigned long) page_address(page);
-
-       if (test_bit(PG_arch_1, &page->flags))
-               return;                         /* i-cache is already coherent 
with d-cache */
-
-       flush_icache_range(addr, addr + PAGE_SIZE);
-       set_bit(PG_arch_1, &page->flags);       /* mark page as clean */
-}
-#endif
-
-#if 0
-inline void
-ia64_set_rbs_bot (void)
-{
-#ifdef XEN
-       unsigned long stack_size = MAX_USER_STACK_SIZE;
-#else
-       unsigned long stack_size = current->rlim[RLIMIT_STACK].rlim_max & -16;
-#endif
-
-       if (stack_size > MAX_USER_STACK_SIZE)
-               stack_size = MAX_USER_STACK_SIZE;
-       current->arch._thread.rbs_bot = STACK_TOP - stack_size;
-}
-#endif
-
-/*
- * This performs some platform-dependent address space initialization.
- * On IA-64, we want to setup the VM area for the register backing
- * store (which grows upwards) and install the gateway page which is
- * used for signal trampolines, etc.
- */
-#if 0
-void
-ia64_init_addr_space (void)
-{
-#ifdef XEN
-printf("ia64_init_addr_space: called, not implemented\n");
-#else
-       struct vm_area_struct *vma;
-
-       ia64_set_rbs_bot();
-
-       /*
-        * If we're out of memory and kmem_cache_alloc() returns NULL, we 
simply ignore
-        * the problem.  When the process attempts to write to the register 
backing store
-        * for the first time, it will get a SEGFAULT in this case.
-        */
-       vma = kmem_cache_alloc(vm_area_cachep, SLAB_KERNEL);
-       if (vma) {
-               memset(vma, 0, sizeof(*vma));
-               vma->vm_mm = current->mm;
-               vma->vm_start = current->arch._thread.rbs_bot & PAGE_MASK;
-               vma->vm_end = vma->vm_start + PAGE_SIZE;
-               vma->vm_page_prot = protection_map[VM_DATA_DEFAULT_FLAGS & 0x7];
-               vma->vm_flags = 
VM_READ|VM_WRITE|VM_MAYREAD|VM_MAYWRITE|VM_GROWSUP;
-               insert_vm_struct(current->mm, vma);
-       }
-
-       /* map NaT-page at address zero to speed up speculative dereferencing 
of NULL: */
-       if (!(current->personality & MMAP_PAGE_ZERO)) {
-               vma = kmem_cache_alloc(vm_area_cachep, SLAB_KERNEL);
-               if (vma) {
-                       memset(vma, 0, sizeof(*vma));
-                       vma->vm_mm = current->mm;
-                       vma->vm_end = PAGE_SIZE;
-                       vma->vm_page_prot = __pgprot(pgprot_val(PAGE_READONLY) 
| _PAGE_MA_NAT);
-                       vma->vm_flags = VM_READ | VM_MAYREAD | VM_IO | 
VM_RESERVED;
-                       insert_vm_struct(current->mm, vma);
-               }
-       }
-#endif
-}
-#endif
-
-void setup_gate (void)
-{
-       printk("setup_gate not-implemented.\n");
-}
 
 void __devinit
 ia64_mmu_init (void *my_cpu_data)
@@ -384,166 +108,6 @@ ia64_mmu_init (void *my_cpu_data)
 #endif
 }
 
-#ifdef CONFIG_VIRTUAL_MEM_MAP
-
-int
-create_mem_map_page_table (u64 start, u64 end, void *arg)
-{
-       unsigned long address, start_page, end_page;
-       struct page_info *map_start, *map_end;
-       int node;
-       pgd_t *pgd;
-       pmd_t *pmd;
-       pte_t *pte;
-
-       map_start = vmem_map + (__pa(start) >> PAGE_SHIFT);
-       map_end   = vmem_map + (__pa(end) >> PAGE_SHIFT);
-
-       start_page = (unsigned long) map_start & PAGE_MASK;
-       end_page = PAGE_ALIGN((unsigned long) map_end);
-       node = paddr_to_nid(__pa(start));
-
-       for (address = start_page; address < end_page; address += PAGE_SIZE) {
-               pgd = pgd_offset_k(address);
-               if (pgd_none(*pgd))
-                       pgd_populate(&init_mm, pgd, 
alloc_bootmem_pages_node(NODE_DATA(node), PAGE_SIZE));
-               pmd = pmd_offset(pgd, address);
-
-               if (pmd_none(*pmd))
-                       pmd_populate_kernel(&init_mm, pmd, 
alloc_bootmem_pages_node(NODE_DATA(node), PAGE_SIZE));
-               pte = pte_offset_kernel(pmd, address);
-
-               if (pte_none(*pte))
-                       set_pte(pte, 
pfn_pte(__pa(alloc_bootmem_pages_node(NODE_DATA(node), PAGE_SIZE)) >> 
PAGE_SHIFT,
-                                            PAGE_KERNEL));
-       }
-       return 0;
-}
-
-struct memmap_init_callback_data {
-       struct page_info *start;
-       struct page_info *end;
-       int nid;
-       unsigned long zone;
-};
-
-static int
-virtual_memmap_init (u64 start, u64 end, void *arg)
-{
-       struct memmap_init_callback_data *args;
-       struct page_info *map_start, *map_end;
-
-       args = (struct memmap_init_callback_data *) arg;
-
-       map_start = vmem_map + (__pa(start) >> PAGE_SHIFT);
-       map_end   = vmem_map + (__pa(end) >> PAGE_SHIFT);
-
-       if (map_start < args->start)
-               map_start = args->start;
-       if (map_end > args->end)
-               map_end = args->end;
-
-       /*
-        * We have to initialize "out of bounds" struct page_info elements that 
fit completely
-        * on the same pages that were allocated for the "in bounds" elements 
because they
-        * may be referenced later (and found to be "reserved").
-        */
-       map_start -= ((unsigned long) map_start & (PAGE_SIZE - 1)) / 
sizeof(struct page_info);
-       map_end += ((PAGE_ALIGN((unsigned long) map_end) - (unsigned long) 
map_end)
-                   / sizeof(struct page_info));
-
-       if (map_start < map_end)
-               memmap_init_zone(map_start, (unsigned long) (map_end - 
map_start),
-                                args->nid, args->zone, page_to_mfn(map_start));
-       return 0;
-}
-
-void
-memmap_init (struct page_info *start, unsigned long size, int nid,
-            unsigned long zone, unsigned long start_pfn)
-{
-       if (!vmem_map)
-               memmap_init_zone(start, size, nid, zone, start_pfn);
-       else {
-               struct memmap_init_callback_data args;
-
-               args.start = start;
-               args.end = start + size;
-               args.nid = nid;
-               args.zone = zone;
-
-               efi_memmap_walk(virtual_memmap_init, &args);
-       }
-}
-
-int
-ia64_mfn_valid (unsigned long pfn)
-{
-       char byte;
-       struct page_info *pg = mfn_to_page(pfn);
-
-       return     (__get_user(byte, (char *) pg) == 0)
-               && ((((u64)pg & PAGE_MASK) == (((u64)(pg + 1) - 1) & PAGE_MASK))
-                       || (__get_user(byte, (char *) (pg + 1) - 1) == 0));
-}
-EXPORT_SYMBOL(ia64_mfn_valid);
-
-int
-find_largest_hole (u64 start, u64 end, void *arg)
-{
-       u64 *max_gap = arg;
-
-       static u64 last_end = PAGE_OFFSET;
-
-       /* NOTE: this algorithm assumes efi memmap table is ordered */
-
-#ifdef XEN
-//printf("find_largest_hole: 
start=%lx,end=%lx,max_gap=%lx\n",start,end,*(unsigned long *)arg);
-#endif
-       if (*max_gap < (start - last_end))
-               *max_gap = start - last_end;
-       last_end = end;
-#ifdef XEN
-//printf("find_largest_hole2: max_gap=%lx,last_end=%lx\n",*max_gap,last_end);
-#endif
-       return 0;
-}
-#endif /* CONFIG_VIRTUAL_MEM_MAP */
-
-#ifndef XEN
-static int
-count_reserved_pages (u64 start, u64 end, void *arg)
-{
-       unsigned long num_reserved = 0;
-       unsigned long *count = arg;
-
-       for (; start < end; start += PAGE_SIZE)
-               if (PageReserved(virt_to_page(start)))
-                       ++num_reserved;
-       *count += num_reserved;
-       return 0;
-}
-#endif
-
-/*
- * Boot command-line option "nolwsys" can be used to disable the use of any 
light-weight
- * system call handler.  When this option is in effect, all fsyscalls will end 
up bubbling
- * down into the kernel and calling the normal (heavy-weight) syscall handler. 
 This is
- * useful for performance testing, but conceivably could also come in handy 
for debugging
- * purposes.
- */
-
-static int nolwsys;
-
-static int __init
-nolwsys_setup (char *s)
-{
-       nolwsys = 1;
-       return 1;
-}
-
-__setup("nolwsys", nolwsys_setup);
-
 void
 mem_init (void)
 {
diff -r bdb08c9ef3d1 -r 4ed269e73e95 xen/include/asm-ia64/mm.h
--- a/xen/include/asm-ia64/mm.h Mon Apr 17 08:46:52 2006 -0600
+++ b/xen/include/asm-ia64/mm.h Mon Apr 17 08:47:36 2006 -0600
@@ -139,11 +139,7 @@ extern unsigned int free_pfns;
 extern unsigned int free_pfns;
 extern unsigned long max_page;
 
-#ifdef CONFIG_VIRTUAL_MEM_MAP
-void __init init_frametable(void *frametable_vstart, unsigned long nr_pages);
-#else
 extern void __init init_frametable(void);
-#endif
 void add_to_domain_alloc_list(unsigned long ps, unsigned long pe);
 
 extern unsigned long gmfn_to_mfn_foreign(struct domain *d, unsigned long gpfn);

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [IA64] cleanup CONFIG_VIRTUAL_MEM_MAP., Xen patchbot -unstable <=