Skip to content
  • Lv Zheng's avatar
    ACPI: Clean up acpi_os_map/unmap_memory() to eliminate __iomem. · a238317c
    Lv Zheng authored
    
    
    ACPICA doesn't include protections around address space checking, Linux
    build tests always complain increased sparse warnings around ACPICA
    internal acpi_os_map/unmap_memory() invocations.  This patch tries to fix
    this issue permanently.
    
    There are 2 choices left for us to solve this issue:
     1. Add __iomem address space awareness into ACPICA.
     2. Remove sparse checker of __iomem from ACPICA source code.
    
    This patch chooses solution 2, because:
     1.  Most of the acpi_os_map/unmap_memory() invocations are used for ACPICA.
         table mappings, which in fact are not IO addresses.
     2.  The only IO addresses usage is for "system memory space" mapping code in:
          drivers/acpi/acpica/exregion.c
          drivers/acpi/acpica/evrgnini.c
          drivers/acpi/acpica/exregion.c
        The mapped address is accessed in the handler of "system memory space"
        - acpi_ex_system_memory_space_handler().  This function in fact can be
        changed to invoke acpi_os_read/write_memory() so that __iomem can
        always be type-casted in the OSL layer.
    
    According to the above investigation, we drew the following conclusion:
    It is not a good idea to introduce __iomem address space awareness into
    ACPICA mostly in order to protect non-IO addresses.
    
    We can simply remove __iomem for acpi_os_map/unmap_memory() to remove
    __iomem checker for ACPICA code. Then we need to enforce external usages
    to invoke other APIs that are aware of __iomem address space.
    The external usages are:
     drivers/acpi/apei/einj.c
     drivers/acpi/acpi_extlog.c
     drivers/char/tpm/tpm_acpi.c
     drivers/acpi/nvs.c
    
    This patch thus performs cleanups in this way:
     1. Add acpi_os_map/unmap_iomem() to be invoked by non-ACPICA code.
     2. Remove __iomem from acpi_os_map/unmap_memory().
    
    Signed-off-by: default avatarLv Zheng <lv.zheng@intel.com>
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    a238317c