• T
    resource: Add System RAM resource type · 9babd5c8
    Toshi Kani 提交于
    The IORESOURCE_MEM I/O resource type is used for all types of
    memory-mapped ranges, ex. System RAM, System ROM, Video RAM,
    Persistent Memory, PCI Bus, PCI MMCONFIG, ACPI Tables, IOAPIC,
    reserved, and so on.
    
    This requires walk_system_ram_range(), walk_system_ram_res(),
    and region_intersects() to use strcmp() against string "System
    RAM" to search for System RAM ranges in the iomem table, which
    is inefficient. __ioremap_caller() and reserve_memtype() on x86,
    for instance, call walk_system_ram_range() for every request to
    check if a given range is in System RAM ranges.
    
    However, adding a new I/O resource type for System RAM is not a
    viable option, see [1]. There are approx. 3800 references to
    IORESOURCE_MEM in the kernel/drivers, which makes it very
    difficult to distinguish their usages between new type and
    IORESOURCE_MEM.
    
    The I/O resource types are also used by the PNP subsystem.
    Therefore, introduce an extended I/O resource type,
    IORESOURCE_SYSTEM_RAM, which consists of IORESOURCE_MEM and a
    new modifier flag IORESOURCE_SYSRAM, see [2].
    
    To keep the code 'if (resource_type(r) == IORESOURCE_MEM)' still
    working for System RAM, resource_ext_type() is added for
    extracting extended type bits.
    
    Link[1]: http://lkml.kernel.org/r/1449168859.9855.54.camel@hpe.com
    Link[2]: http://lkml.kernel.org/r/CA+55aFy4WQrWexC4u2LxX9Mw2NVoznw7p3Yh=iF4Xtf7zKWnRw@mail.gmail.comSigned-off-by: NToshi Kani <toshi.kani@hpe.com>
    Signed-off-by: NBorislav Petkov <bp@suse.de>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Brian Gerst <brgerst@gmail.com>
    Cc: Dan Williams <dan.j.williams@intel.com>
    Cc: Denys Vlasenko <dvlasenk@redhat.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Hanjun Guo <hanjun.guo@linaro.org>
    Cc: Jakub Sitnicki <jsitnicki@gmail.com>
    Cc: Jiang Liu <jiang.liu@linux.intel.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Luis R. Rodriguez <mcgrof@suse.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Toshi Kani <toshi.kani@hp.com>
    Cc: linux-arch@vger.kernel.org
    Cc: linux-mm <linux-mm@kvack.org>
    Link: http://lkml.kernel.org/r/1453841853-11383-2-git-send-email-bp@alien8.deSigned-off-by: NIngo Molnar <mingo@kernel.org>
    9babd5c8
ioport.h 9.9 KB