um: Remove broken highmem support
Highmem was always buggy and experimental on UML(i386). In times where 64 bit computers are default we can remove that experimental code. Signed-off-by: Richard Weinberger <richard@nod.at>
This commit is contained in:
parent
28fa468f53
commit
a98a6d864d
|
@ -95,18 +95,6 @@ config MAGIC_SYSRQ
|
|||
The keys are documented in <file:Documentation/sysrq.txt>. Don't say Y
|
||||
unless you really know what this hack does.
|
||||
|
||||
config HIGHMEM
|
||||
bool "Highmem support"
|
||||
depends on !64BIT && BROKEN
|
||||
default n
|
||||
help
|
||||
This was used to allow UML to run with big amounts of memory.
|
||||
Currently it is unstable, so if unsure say N.
|
||||
|
||||
To use big amounts of memory, it is recommended enable static
|
||||
linking (i.e. CONFIG_STATIC_LINK) - this should allow the
|
||||
guest to use up to 2.75G of memory.
|
||||
|
||||
config KERNEL_STACK_ORDER
|
||||
int "Kernel stack size order"
|
||||
default 1 if 64BIT
|
||||
|
|
|
@ -33,10 +33,6 @@
|
|||
* fix-mapped?
|
||||
*/
|
||||
enum fixed_addresses {
|
||||
#ifdef CONFIG_HIGHMEM
|
||||
FIX_KMAP_BEGIN, /* reserved pte's for temporary kernel mappings */
|
||||
FIX_KMAP_END = FIX_KMAP_BEGIN+(KM_TYPE_NR*NR_CPUS)-1,
|
||||
#endif
|
||||
__end_of_fixed_addresses
|
||||
};
|
||||
|
||||
|
|
|
@ -47,11 +47,7 @@ extern unsigned long end_iomem;
|
|||
#define VMALLOC_OFFSET (__va_space)
|
||||
#define VMALLOC_START ((end_iomem + VMALLOC_OFFSET) & ~(VMALLOC_OFFSET-1))
|
||||
#define PKMAP_BASE ((FIXADDR_START - LAST_PKMAP * PAGE_SIZE) & PMD_MASK)
|
||||
#ifdef CONFIG_HIGHMEM
|
||||
# define VMALLOC_END (PKMAP_BASE-2*PAGE_SIZE)
|
||||
#else
|
||||
# define VMALLOC_END (FIXADDR_START-2*PAGE_SIZE)
|
||||
#endif
|
||||
#define VMALLOC_END (FIXADDR_START-2*PAGE_SIZE)
|
||||
#define MODULES_VADDR VMALLOC_START
|
||||
#define MODULES_END VMALLOC_END
|
||||
#define MODULES_LEN (MODULES_VADDR - MODULES_END)
|
||||
|
|
|
@ -38,19 +38,6 @@ int kmalloc_ok = 0;
|
|||
/* Used during early boot */
|
||||
static unsigned long brk_end;
|
||||
|
||||
#ifdef CONFIG_HIGHMEM
|
||||
static void setup_highmem(unsigned long highmem_start,
|
||||
unsigned long highmem_len)
|
||||
{
|
||||
unsigned long highmem_pfn;
|
||||
int i;
|
||||
|
||||
highmem_pfn = __pa(highmem_start) >> PAGE_SHIFT;
|
||||
for (i = 0; i < highmem_len >> PAGE_SHIFT; i++)
|
||||
free_highmem_page(&mem_map[highmem_pfn + i]);
|
||||
}
|
||||
#endif
|
||||
|
||||
void __init mem_init(void)
|
||||
{
|
||||
/* clear the zero-page */
|
||||
|
@ -67,9 +54,6 @@ void __init mem_init(void)
|
|||
/* this will put all low memory onto the freelists */
|
||||
free_all_bootmem();
|
||||
max_low_pfn = totalram_pages;
|
||||
#ifdef CONFIG_HIGHMEM
|
||||
setup_highmem(end_iomem, highmem);
|
||||
#endif
|
||||
max_pfn = totalram_pages;
|
||||
mem_init_print_info(NULL);
|
||||
kmalloc_ok = 1;
|
||||
|
@ -127,49 +111,6 @@ static void __init fixrange_init(unsigned long start, unsigned long end,
|
|||
}
|
||||
}
|
||||
|
||||
#ifdef CONFIG_HIGHMEM
|
||||
pte_t *kmap_pte;
|
||||
pgprot_t kmap_prot;
|
||||
|
||||
#define kmap_get_fixmap_pte(vaddr) \
|
||||
pte_offset_kernel(pmd_offset(pud_offset(pgd_offset_k(vaddr), (vaddr)),\
|
||||
(vaddr)), (vaddr))
|
||||
|
||||
static void __init kmap_init(void)
|
||||
{
|
||||
unsigned long kmap_vstart;
|
||||
|
||||
/* cache the first kmap pte */
|
||||
kmap_vstart = __fix_to_virt(FIX_KMAP_BEGIN);
|
||||
kmap_pte = kmap_get_fixmap_pte(kmap_vstart);
|
||||
|
||||
kmap_prot = PAGE_KERNEL;
|
||||
}
|
||||
|
||||
static void __init init_highmem(void)
|
||||
{
|
||||
pgd_t *pgd;
|
||||
pud_t *pud;
|
||||
pmd_t *pmd;
|
||||
pte_t *pte;
|
||||
unsigned long vaddr;
|
||||
|
||||
/*
|
||||
* Permanent kmaps:
|
||||
*/
|
||||
vaddr = PKMAP_BASE;
|
||||
fixrange_init(vaddr, vaddr + PAGE_SIZE*LAST_PKMAP, swapper_pg_dir);
|
||||
|
||||
pgd = swapper_pg_dir + pgd_index(vaddr);
|
||||
pud = pud_offset(pgd, vaddr);
|
||||
pmd = pmd_offset(pud, vaddr);
|
||||
pte = pte_offset_kernel(pmd, vaddr);
|
||||
pkmap_page_table = pte;
|
||||
|
||||
kmap_init();
|
||||
}
|
||||
#endif /* CONFIG_HIGHMEM */
|
||||
|
||||
static void __init fixaddr_user_init( void)
|
||||
{
|
||||
#ifdef CONFIG_ARCH_REUSE_HOST_VSYSCALL_AREA
|
||||
|
@ -211,9 +152,6 @@ void __init paging_init(void)
|
|||
|
||||
zones_size[ZONE_NORMAL] = (end_iomem >> PAGE_SHIFT) -
|
||||
(uml_physmem >> PAGE_SHIFT);
|
||||
#ifdef CONFIG_HIGHMEM
|
||||
zones_size[ZONE_HIGHMEM] = highmem >> PAGE_SHIFT;
|
||||
#endif
|
||||
free_area_init(zones_size);
|
||||
|
||||
/*
|
||||
|
@ -224,10 +162,6 @@ void __init paging_init(void)
|
|||
fixrange_init(vaddr, FIXADDR_TOP, swapper_pg_dir);
|
||||
|
||||
fixaddr_user_init();
|
||||
|
||||
#ifdef CONFIG_HIGHMEM
|
||||
init_highmem();
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
@ -301,11 +301,6 @@ int __init linux_main(int argc, char **argv)
|
|||
if (physmem_size + iomem_size > max_physmem) {
|
||||
highmem = physmem_size + iomem_size - max_physmem;
|
||||
physmem_size -= highmem;
|
||||
#ifndef CONFIG_HIGHMEM
|
||||
highmem = 0;
|
||||
printf("CONFIG_HIGHMEM not enabled - physical memory shrunk "
|
||||
"to %Lu bytes\n", physmem_size);
|
||||
#endif
|
||||
}
|
||||
|
||||
high_physmem = uml_physmem + physmem_size;
|
||||
|
|
|
@ -21,7 +21,6 @@ obj-$(CONFIG_BINFMT_ELF) += elfcore.o
|
|||
|
||||
subarch-y = ../lib/string_32.o ../lib/atomic64_32.o ../lib/atomic64_cx8_32.o
|
||||
subarch-$(CONFIG_RWSEM_XCHGADD_ALGORITHM) += ../lib/rwsem.o
|
||||
subarch-$(CONFIG_HIGHMEM) += ../mm/highmem_32.o
|
||||
|
||||
else
|
||||
|
||||
|
|
Loading…
Reference in New Issue