On Wed, Jun 04, 2014 at 12:24:20PM +0200, Borislav Petkov wrote: > On Tue, Jun 03, 2014 at 09:06:53AM -0400, Vivek Goyal wrote: > > @@ -322,7 +327,71 @@ int release_resource(struct resource *old) > > > > EXPORT_SYMBOL(release_resource); > > > > -#if !defined(CONFIG_ARCH_HAS_WALK_MEMORY) > > +/* > > + * Finds the lowest iomem reosurce exists with-in [res->start.res->end) > > + * the caller must specify res->start, res->end, res->flags and "name". > > + * If found, returns 0, res is overwritten, if not found, returns -1. > > + * This walks through whole tree and not just first level children. > > + */ > > +static int find_next_iomem_res(struct resource *res, char *name) > > +{ > > + resource_size_t start, end; > > + struct resource *p; > > + > > + BUG_ON(!res); > > + > > + start = res->start; > > + end = res->end; > > + BUG_ON(start >= end); > > + > > + read_lock(&resource_lock); > > + p = &iomem_resource; > > + while ((p = next_resource(p))) { > > Just a thought - this function differs from find_next_system_ram() only > in the traversal mode through resources. I wonder if next_resource() > could be given a flag, say TRAVERSE_SIBLINGS_ONLY or so and be called > from both, once with the flag set and once without and thus save us the > code duplication. Yep, that makes sense. I will change it and start passing a flag. Thanks Vivek