numa_32.c 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. /*
  2. * Written by: Patricia Gaughen <[email protected]>, IBM Corporation
  3. * August 2002: added remote node KVA remap - Martin J. Bligh
  4. *
  5. * Copyright (C) 2002, IBM Corp.
  6. *
  7. * All rights reserved.
  8. *
  9. * This program is free software; you can redistribute it and/or modify
  10. * it under the terms of the GNU General Public License as published by
  11. * the Free Software Foundation; either version 2 of the License, or
  12. * (at your option) any later version.
  13. *
  14. * This program is distributed in the hope that it will be useful, but
  15. * WITHOUT ANY WARRANTY; without even the implied warranty of
  16. * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or
  17. * NON INFRINGEMENT. See the GNU General Public License for more
  18. * details.
  19. *
  20. * You should have received a copy of the GNU General Public License
  21. * along with this program; if not, write to the Free Software
  22. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  23. */
  24. #include <linux/memblock.h>
  25. #include <linux/init.h>
  26. #include "numa_internal.h"
  27. extern unsigned long highend_pfn, highstart_pfn;
  28. void __init initmem_init(void)
  29. {
  30. x86_numa_init();
  31. #ifdef CONFIG_HIGHMEM
  32. highstart_pfn = highend_pfn = max_pfn;
  33. if (max_pfn > max_low_pfn)
  34. highstart_pfn = max_low_pfn;
  35. printk(KERN_NOTICE "%ldMB HIGHMEM available.\n",
  36. pages_to_mb(highend_pfn - highstart_pfn));
  37. high_memory = (void *) __va(highstart_pfn * PAGE_SIZE - 1) + 1;
  38. #else
  39. high_memory = (void *) __va(max_low_pfn * PAGE_SIZE - 1) + 1;
  40. #endif
  41. printk(KERN_NOTICE "%ldMB LOWMEM available.\n",
  42. pages_to_mb(max_low_pfn));
  43. printk(KERN_DEBUG "max_low_pfn = %lx, highstart_pfn = %lx\n",
  44. max_low_pfn, highstart_pfn);
  45. printk(KERN_DEBUG "Low memory ends at vaddr %08lx\n",
  46. (ulong) pfn_to_kaddr(max_low_pfn));
  47. printk(KERN_DEBUG "High memory starts at vaddr %08lx\n",
  48. (ulong) pfn_to_kaddr(highstart_pfn));
  49. __vmalloc_start_set = true;
  50. setup_bootmem_allocator();
  51. }