[PATCH] ACPI: clean up memory attribute checking for map/read/write
authorBjorn Helgaas <bjorn.helgaas@hp.com>
Sun, 26 Mar 2006 09:37:10 +0000 (01:37 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Sun, 26 Mar 2006 16:56:54 +0000 (08:56 -0800)
ia64 ioremap is now smart enough to use the correct memory attributes, so
remove the EFI checks from osl.c.

Signed-off-by: Bjorn Helgaas <bjorn.helgaas@hp.com>
Cc: Matt Domsch <Matt_Domsch@dell.com>
Cc: "Tolentino, Matthew E" <matthew.e.tolentino@intel.com>
Cc: "Brown, Len" <len.brown@intel.com>
Cc: Andi Kleen <ak@muc.de>
Acked-by: "Luck, Tony" <tony.luck@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
drivers/acpi/osl.c

index fc8a3bce6cbbe75db2bc2d465203161ceb51b33d..13b5fd5854a80bd9f92d1eb8e90764a3fe8f6d5a 100644 (file)
@@ -180,22 +180,14 @@ acpi_status
 acpi_os_map_memory(acpi_physical_address phys, acpi_size size,
                   void __iomem ** virt)
 {
-       if (efi_enabled) {
-               if (EFI_MEMORY_WB & efi_mem_attributes(phys)) {
-                       *virt = (void __iomem *)phys_to_virt(phys);
-               } else {
-                       *virt = ioremap(phys, size);
-               }
-       } else {
-               if (phys > ULONG_MAX) {
-                       printk(KERN_ERR PREFIX "Cannot map memory that high\n");
-                       return AE_BAD_PARAMETER;
-               }
-               /*
-                * ioremap checks to ensure this is in reserved space
-                */
-               *virt = ioremap((unsigned long)phys, size);
+       if (phys > ULONG_MAX) {
+               printk(KERN_ERR PREFIX "Cannot map memory that high\n");
+               return AE_BAD_PARAMETER;
        }
+       /*
+        * ioremap checks to ensure this is in reserved space
+        */
+       *virt = ioremap((unsigned long)phys, size);
 
        if (!*virt)
                return AE_NO_MEMORY;
@@ -407,18 +399,8 @@ acpi_os_read_memory(acpi_physical_address phys_addr, u32 * value, u32 width)
 {
        u32 dummy;
        void __iomem *virt_addr;
-       int iomem = 0;
 
-       if (efi_enabled) {
-               if (EFI_MEMORY_WB & efi_mem_attributes(phys_addr)) {
-                       /* HACK ALERT! We can use readb/w/l on real memory too.. */
-                       virt_addr = (void __iomem *)phys_to_virt(phys_addr);
-               } else {
-                       iomem = 1;
-                       virt_addr = ioremap(phys_addr, width);
-               }
-       } else
-               virt_addr = (void __iomem *)phys_to_virt(phys_addr);
+       virt_addr = ioremap(phys_addr, width);
        if (!value)
                value = &dummy;
 
@@ -436,10 +418,7 @@ acpi_os_read_memory(acpi_physical_address phys_addr, u32 * value, u32 width)
                BUG();
        }
 
-       if (efi_enabled) {
-               if (iomem)
-                       iounmap(virt_addr);
-       }
+       iounmap(virt_addr);
 
        return AE_OK;
 }
@@ -448,18 +427,8 @@ acpi_status
 acpi_os_write_memory(acpi_physical_address phys_addr, u32 value, u32 width)
 {
        void __iomem *virt_addr;
-       int iomem = 0;
 
-       if (efi_enabled) {
-               if (EFI_MEMORY_WB & efi_mem_attributes(phys_addr)) {
-                       /* HACK ALERT! We can use writeb/w/l on real memory too */
-                       virt_addr = (void __iomem *)phys_to_virt(phys_addr);
-               } else {
-                       iomem = 1;
-                       virt_addr = ioremap(phys_addr, width);
-               }
-       } else
-               virt_addr = (void __iomem *)phys_to_virt(phys_addr);
+       virt_addr = ioremap(phys_addr, width);
 
        switch (width) {
        case 8:
@@ -475,8 +444,7 @@ acpi_os_write_memory(acpi_physical_address phys_addr, u32 value, u32 width)
                BUG();
        }
 
-       if (iomem)
-               iounmap(virt_addr);
+       iounmap(virt_addr);
 
        return AE_OK;
 }