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>