On Mon, Dec 14, 2015 at 04:37:16PM -0700, Toshi Kani wrote: > I/O resource type, IORESOURCE_MEM, 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 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 [1]. I think you should explain here why it isn't a viable option instead of quoting some flaky reference which might or might not be there in the future. > Instead, this patch adds a new modifier > flag IORESOURCE_SYSRAM to IORESOURCE_MEM, which introduces an > extended I/O resource type, IORESOURCE_SYSTEM_RAM [2]. > > To keep the code 'if (resource_type(r) == IORESOURCE_MEM)' to > work continuously for System RAM, resource_ext_type() is added > for extracting extended type bit(s). > > Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> > Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> > Cc: Borislav Petkov <bp@xxxxxxxxx> > Cc: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx> > Cc: Dan Williams <dan.j.williams@xxxxxxxxx> > Reference[1]: https://lkml.org/lkml/2015/12/3/540 > Reference[2]: https://lkml.org/lkml/2015/12/3/582 References should look something like this: Link: http://lkml.kernel.org/r/<Message-ID> > Signed-off-by: Toshi Kani <toshi.kani@xxxxxxx> > --- > include/linux/ioport.h | 11 +++++++++++ > 1 file changed, 11 insertions(+) > > diff --git a/include/linux/ioport.h b/include/linux/ioport.h > index 24bea08..4b65d94 100644 > --- a/include/linux/ioport.h > +++ b/include/linux/ioport.h > @@ -49,12 +49,19 @@ struct resource { > #define IORESOURCE_WINDOW 0x00200000 /* forwarded by bridge */ > #define IORESOURCE_MUXED 0x00400000 /* Resource is software muxed */ > > +#define IORESOURCE_EXT_TYPE_BITS 0x01000000 /* Resource extended types */ Should this be 0x07000000 so that we make all there bits belong to the extended types? Are we going to need so many? -- Regards/Gruss, Boris. ECO tip #101: Trim your mails when you reply. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>