Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1f8d419e authored by David Gibson's avatar David Gibson Committed by Linus Torvalds
Browse files

[PATCH] ppc64: pgtable.h and other header cleanups



This patch started as simply removing a few never-used macros from
asm-ppc64/pgtable.h, then kind of grew.  It now makes a bunch of
cleanups to the ppc64 low-level header files (with corresponding
changes to .c files where necessary) such as:
	- Abolishing never-used macros
	- Eliminating multiple #defines with the same purpose
	- Removing pointless macros (cases where just expanding the
macro everywhere turns out clearer and more sensible)
	- Removing some cases where macros which could be defined in
terms of each other weren't
	- Moving imalloc() related definitions from pgtable.h to their
own header file (imalloc.h)
	- Re-arranging headers to group things more logically
	- Moving all VSID allocation related things to mmu.h, instead
of being split between mmu.h and mmu_context.h
	- Removing some reserved space for flags from the PMD - we're
not using it.
	- Fix some bugs which broke compile with STRICT_MM_TYPECHECKS.

Signed-off-by: default avatarDavid Gibson <dwg@au1.ibm.com>
Acked-by: default avatarPaul Mackerras <paulus@samba.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent e685752d
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -438,7 +438,7 @@ pgprot_t pci_phys_mem_access_prot(struct file *file,
	int i;

	if (page_is_ram(offset >> PAGE_SHIFT))
		return prot;
		return __pgprot(prot);

	prot |= _PAGE_NO_CACHE | _PAGE_GUARDED;

+1 −2
Original line number Diff line number Diff line
@@ -320,8 +320,7 @@ static void native_flush_hash_range(unsigned long context,

	j = 0;
	for (i = 0; i < number; i++) {
		if ((batch->addr[i] >= USER_START) &&
		    (batch->addr[i] <= USER_END))
		if (batch->addr[i] < KERNELBASE)
			vsid = get_vsid(context, batch->addr[i]);
		else
			vsid = get_kernel_vsid(batch->addr[i]);
+5 −6
Original line number Diff line number Diff line
@@ -298,24 +298,23 @@ int hash_page(unsigned long ea, unsigned long access, unsigned long trap)
	int local = 0;
	cpumask_t tmp;

	if ((ea & ~REGION_MASK) > EADDR_MASK)
		return 1;

 	switch (REGION_ID(ea)) {
	case USER_REGION_ID:
		user_region = 1;
		mm = current->mm;
		if ((ea > USER_END) || (! mm))
		if (! mm)
			return 1;

		vsid = get_vsid(mm->context.id, ea);
		break;
	case IO_REGION_ID:
		if (ea > IMALLOC_END)
			return 1;
		mm = &ioremap_mm;
		vsid = get_kernel_vsid(ea);
		break;
	case VMALLOC_REGION_ID:
		if (ea > VMALLOC_END)
			return 1;
		mm = &init_mm;
		vsid = get_kernel_vsid(ea);
		break;
@@ -362,7 +361,7 @@ void flush_hash_page(unsigned long context, unsigned long ea, pte_t pte,
	unsigned long vsid, vpn, va, hash, secondary, slot;
	unsigned long huge = pte_huge(pte);

	if ((ea >= USER_START) && (ea <= USER_END))
	if (ea < KERNELBASE)
		vsid = get_vsid(context, ea);
	else
		vsid = get_kernel_vsid(ea);
+3 −2
Original line number Diff line number Diff line
@@ -14,6 +14,7 @@
#include <asm/pgalloc.h>
#include <asm/pgtable.h>
#include <asm/semaphore.h>
#include <asm/imalloc.h>

static DECLARE_MUTEX(imlist_sem);
struct vm_struct * imlist = NULL;
@@ -23,11 +24,11 @@ static int get_free_im_addr(unsigned long size, unsigned long *im_addr)
	unsigned long addr;
	struct vm_struct **p, *tmp;

	addr = IMALLOC_START;
	addr = ioremap_bot;
	for (p = &imlist; (tmp = *p) ; p = &tmp->next) {
		if (size + addr < (unsigned long) tmp->addr)
			break;
		if ((unsigned long)tmp->addr >= IMALLOC_START) 
		if ((unsigned long)tmp->addr >= ioremap_bot)
			addr = tmp->size + (unsigned long) tmp->addr;
		if (addr > IMALLOC_END-size) 
			return 1;
+1 −0
Original line number Diff line number Diff line
@@ -64,6 +64,7 @@
#include <asm/iommu.h>
#include <asm/abs_addr.h>
#include <asm/vdso.h>
#include <asm/imalloc.h>

int mem_init_done;
unsigned long ioremap_bot = IMALLOC_BASE;
Loading