diff options
author | Paul Mackerras <paulus@samba.org> | 2004-08-22 22:34:52 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | 2004-08-22 22:34:52 -0700 |
commit | 78d51cf88b35283da44101a48458361c886b1f92 (patch) | |
tree | 464d2ec2ee5f09fe227ea185c6b47873c11675b5 /include | |
parent | 1492512062879ab3a13eae692dfa163aa705d10c (diff) | |
download | history-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.h | 1 |
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, |