diff options
author | Stephen Rothwell <sfr@canb.auug.org.au> | 2022-06-28 16:54:05 +1000 |
---|---|---|
committer | Stephen Rothwell <sfr@canb.auug.org.au> | 2022-06-28 16:54:05 +1000 |
commit | 5f9df76887bf8170e8844f1907c13fbbb30e9c36 (patch) | |
tree | 3b940f7e1c36605af69ffe3a3e9bc8fa53bd12a1 /kernel/resource.c | |
parent | 8f850ad6cf932b8b5125f9585cb397e08403cccd (diff) | |
parent | 84b494dcbcc015419e629ced664d3b737e83336e (diff) | |
download | linux-next-akpm.tar.gz |
# Conflicts:
# include/linux/pagevec.h
Diffstat (limited to 'kernel/resource.c')
-rw-r--r-- | kernel/resource.c | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/kernel/resource.c b/kernel/resource.c index 34eaee179689..ecf6b9a50adc 100644 --- a/kernel/resource.c +++ b/kernel/resource.c @@ -311,7 +311,7 @@ EXPORT_SYMBOL(release_resource); * * If a resource is found, returns 0 and @*res is overwritten with the part * of the resource that's within [@start..@end]; if none is found, returns - * -ENODEV. Returns -EINVAL for invalid parameters. + * -ENODEV. * * @start: start address of the resource searched for * @end: end address of same resource @@ -328,9 +328,6 @@ static int find_next_iomem_res(resource_size_t start, resource_size_t end, { struct resource *p; - if (!res) - return -EINVAL; - if (start >= end) return -EINVAL; @@ -356,7 +353,7 @@ static int find_next_iomem_res(resource_size_t start, resource_size_t end, break; } - if (p) { + if (p && res) { /* copy data */ *res = (struct resource) { .start = max(start, p->start), @@ -474,18 +471,18 @@ int walk_system_ram_range(unsigned long start_pfn, unsigned long nr_pages, return ret; } -static int __is_ram(unsigned long pfn, unsigned long nr_pages, void *arg) -{ - return 1; -} - /* * This generic page_is_ram() returns true if specified address is * registered as System RAM in iomem_resource list. */ int __weak page_is_ram(unsigned long pfn) { - return walk_system_ram_range(pfn, 1, NULL, __is_ram) == 1; + const resource_size_t pfn_res = PFN_PHYS(pfn); + + return find_next_iomem_res(pfn_res, + pfn_res + 1, + IORESOURCE_SYSTEM_RAM | IORESOURCE_BUSY, + IORES_DESC_NONE, NULL) == 0; } EXPORT_SYMBOL_GPL(page_is_ram); |