|
@@ -105,12 +105,6 @@ static void __iomem *__ioremap_caller(resource_size_t phys_addr,
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
- /*
|
|
|
- * Don't remap the low PCI/ISA area, it's always mapped..
|
|
|
- */
|
|
|
- if (is_ISA_range(phys_addr, last_addr))
|
|
|
- return (__force void __iomem *)phys_to_virt(phys_addr);
|
|
|
-
|
|
|
/*
|
|
|
* Don't allow anybody to remap normal RAM that we're using..
|
|
|
*/
|
|
@@ -340,13 +334,17 @@ void iounmap(volatile void __iomem *addr)
|
|
|
return;
|
|
|
|
|
|
/*
|
|
|
- * __ioremap special-cases the PCI/ISA range by not instantiating a
|
|
|
- * vm_area and by simply returning an address into the kernel mapping
|
|
|
- * of ISA space. So handle that here.
|
|
|
+ * The PCI/ISA range special-casing was removed from __ioremap()
|
|
|
+ * so this check, in theory, can be removed. However, there are
|
|
|
+ * cases where iounmap() is called for addresses not obtained via
|
|
|
+ * ioremap() (vga16fb for example). Add a warning so that these
|
|
|
+ * cases can be caught and fixed.
|
|
|
*/
|
|
|
if ((void __force *)addr >= phys_to_virt(ISA_START_ADDRESS) &&
|
|
|
- (void __force *)addr < phys_to_virt(ISA_END_ADDRESS))
|
|
|
+ (void __force *)addr < phys_to_virt(ISA_END_ADDRESS)) {
|
|
|
+ WARN(1, "iounmap() called for ISA range not obtained using ioremap()\n");
|
|
|
return;
|
|
|
+ }
|
|
|
|
|
|
addr = (volatile void __iomem *)
|
|
|
(PAGE_MASK & (unsigned long __force)addr);
|