aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@samba.org>2004-08-22 22:34:52 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2004-08-22 22:34:52 -0700
commit78d51cf88b35283da44101a48458361c886b1f92 (patch)
tree464d2ec2ee5f09fe227ea185c6b47873c11675b5 /include
parent1492512062879ab3a13eae692dfa163aa705d10c (diff)
downloadhistory-78d51cf88b35283da44101a48458361c886b1f92.tar.gz
[PATCH] ppc64: Extend ioremap/iounmap infrastructure
The patch below implements the ability to query outstanding imalloc regions for a given virtual address range. (Imalloc is the allocator of virtual space for ioremap.) The patch extends im_get_area() to allow a region criterion of IM_REGION_SUPERSET. For a particular "superset" virtual address and size passed into im_get_area(), the function returns the first outstanding region that is contained within this superset region. The patch also changes iounmap_explicit() to allow for the unmapping of all regions that fit under a "superset". This ability is necessary for dynamic (runtime) removal of pci host bridges (PHBs). For a PHB removal, the platform specification (the RPA) requires that all of its children slots already be dynamically removed. Each of these slot-level removals has fractured the imalloc region assigned to the PHB at boot. At PHB removal time, it is necessary to iounmap() the remaining artifacts of the initial PHB region. Signed-off-by: John Rose <johnrose@austin.ibm.com> Signed-off-by: Paul Mackerras <paulus@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include')
-rw-r--r--include/asm-ppc64/pgtable.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/include/asm-ppc64/pgtable.h b/include/asm-ppc64/pgtable.h
index 8499868b277ebe..b5bbb1f0c53290 100644
--- a/include/asm-ppc64/pgtable.h
+++ b/include/asm-ppc64/pgtable.h
@@ -497,6 +497,7 @@ extern void hpte_init_iSeries(void);
#define IM_REGION_SUBSET 0x2
#define IM_REGION_EXISTS 0x4
#define IM_REGION_OVERLAP 0x8
+#define IM_REGION_SUPERSET 0x10
extern struct vm_struct * im_get_free_area(unsigned long size);
extern struct vm_struct * im_get_area(unsigned long v_addr, unsigned long size,