kernel-resource-remove-first_lvl-siblings_only-logic.patch removed from -mm tree
The patch titled
Subject: kernel/resource: remove first_lvl / siblings_only logic
has been removed from the -mm tree. Its filename was
kernel-resource-remove-first_lvl-siblings_only-logic.patch
This patch was dropped because it was merged into mainline or a subsystem tree
------------------------------------------------------
From: David Hildenbrand <[email protected]>
Subject: kernel/resource: remove first_lvl / siblings_only logic
All functions that search for IORESOURCE_SYSTEM_RAM or IORESOURCE_MEM resources now properly consider the whole resource tree, not just the first level. Let's drop the unused first_lvl / siblings_only logic.
Remove documentation that indicates that some functions behave differently, all consider the full resource tree now.
---
kernel/resource.c | 45 +++++++++++--------------------------------- 1 file changed, 12 insertions(+), 33 deletions(-)
kernel/resource.c renamed from kernel/resource.c~kernel-resource-remove-first_lvl-siblings_only-logic +12 -33
@@ -64,12 +64,8 @@ static DEFINE_RWLOCK(resource_lock);static struct resource *bootmem_resource_free;static DEFINE_SPINLOCK (bootmem_resource_lock); -static struct resource *next_resource (struct resource *p,bool sibling_only) +static struct resource *next_resource (struct resource *p) { -/* Caller wants to traverse through siblings only */ -if (sibling_only) -return p->sibling; -if (p->child)return p->child;while (!p->sibling && p->parent)
@@ -81,7 +77,7 @@ static void *r_next(struct seq_file *m, {struct resource *p = v; (*pos)++; -return (void *)next_resource (p, false); +return (void *)next_resource (p); }#ifdef CONFIG_PROC_FS
@@ -330,14 +326,10 @@ EXPORT_SYMBOL(release_resource);* of the resource that's within [@start..@end]; if none is found, returns * -ENODEV. Returns -EINVAL for invalid parameters. * -* This function walks the whole tree and not just first level children -* unless @first_lvl is true. -* * @start: start address of the resource searched for * @end: end address of same resource * @flags: flags which the resource must have * @desc: descriptor the resource must have -* @first_lvl: walk only the first level children, if set * @res: return ptr, if resource found * * The caller must specify @start, @end, @flags, and @desc
@@ -345,9 +337,8 @@ EXPORT_SYMBOL(release_resource);*/ static int find_next_iomem_res (resource_size_t start,resource_size_t end,unsigned long flags,unsigned long desc, -bool first_lvl,struct resource *res) +struct resource *res) { -bool siblings_only = true;struct resource *p;if (!res)
@@ -358,7 +349,7 @@ static int find_next_iomem_res(resource_read_lock (&resource_lock); -for (p = iomem_resource.child; p; p =next_resource (p, siblings_only)) { +for (p = iomem_resource.child; p; p =next_resource (p)) {/* If we passed the resource we are looking for, stop */ if (p->start > end) { p =NULL ;
@@ -369,13 +360,6 @@ static int find_next_iomem_res(resource_if (p->end < start)continue ; -/* -* Now that we found a range that matches what we look for, -* check the flags and the descriptor. If we were not asked to -* use only the first level, start looking at children as well. -*/ - siblings_only = first_lvl; -if ((p->flags & flags) != flags)continue ;if ((desc !=IORES_DESC_NONE ) && (desc != p->desc))
@@ -402,14 +386,14 @@ static int find_next_iomem_res(resource_static int __walk_iomem_res_desc (resource_size_t start,resource_size_t end,unsigned long flags,unsigned long desc, -bool first_lvl,void *arg, +void *arg,int (*func)(struct resource *,void *)) {struct resource res;int ret = -EINVAL ;while (start < end && - !find_next_iomem_res (start, end, flags, desc, first_lvl, &res)) { + !find_next_iomem_res (start, end, flags, desc, &res)) { ret = (*func)(&res, arg);if (ret)break ;
@@ -431,7 +415,6 @@ static int __walk_iomem_res_desc(resourc* @arg: function argument for the callback @func * @func: callback function that is called for each qualifying resource area * -* This walks through whole tree and not just first level children. * All the memory ranges which overlap start,end and also match flags and * desc are valid candidates. *
@@ -441,7 +424,7 @@ static int __walk_iomem_res_desc(resourcint walk_iomem_res_desc (unsigned long desc,unsigned long flags,u64 start,u64 end,void *arg,int (*func)(struct resource *,void *)) { -return __walk_iomem_res_desc (start, end, flags, desc, false, arg, func); +return __walk_iomem_res_desc (start, end, flags, desc, arg, func); }EXPORT_SYMBOL_GPL (walk_iomem_res_desc);
@@ -457,8 +440,8 @@ int walk_system_ram_res(u64 start, u64 e {unsigned long flags =IORESOURCE_SYSTEM_RAM |IORESOURCE_BUSY ; -return __walk_iomem_res_desc (start, end, flags,IORES_DESC_NONE , false, - arg, func); +return __walk_iomem_res_desc (start, end, flags,IORES_DESC_NONE , arg, + func); }/*
@@ -470,17 +453,14 @@ int walk_mem_res(u64 start, u64 end, voi {unsigned long flags =IORESOURCE_MEM |IORESOURCE_BUSY ; -return __walk_iomem_res_desc (start, end, flags,IORES_DESC_NONE , false, - arg, func); +return __walk_iomem_res_desc (start, end, flags,IORES_DESC_NONE , arg, + func); }/* * This function calls the @func callback against all memory ranges of type * System RAM which are marked as IORESOURCE_SYSTEM_RAM and IORESOUCE_BUSY. * It is to be used only for System RAM. -* -* This will find System RAM ranges that are children of top-level resources -* in addition to top-level System RAM resources. */ int walk_system_ram_range (unsigned long start_pfn,unsigned long nr_pages,void *arg,int (*func)(unsigned long ,unsigned long ,void *))
@@ -495,8 +475,7 @@ int walk_system_ram_range(unsigned long end = ((u64)(start_pfn + nr_pages) <<PAGE_SHIFT ) -1 ; flags =IORESOURCE_SYSTEM_RAM |IORESOURCE_BUSY ;while (start < end && - !find_next_iomem_res (start, end, flags,IORES_DESC_NONE , - false, &res)) { + !find_next_iomem_res (start, end, flags,IORES_DESC_NONE , &res)) { pfn =PFN_UP (res.start); end_pfn =PFN_DOWN (res.end +1 );if (end_pfn > pfn)
_
Patches currently in -mm which might be from [email protected] are