Lines Matching refs:res
150 static void free_resource(struct resource *res) in free_resource() argument
152 if (!res) in free_resource()
155 if (!PageSlab(virt_to_head_page(res))) { in free_resource()
157 res->sibling = bootmem_resource_free; in free_resource()
158 bootmem_resource_free = res; in free_resource()
161 kfree(res); in free_resource()
167 struct resource *res = NULL; in alloc_resource() local
171 res = bootmem_resource_free; in alloc_resource()
172 bootmem_resource_free = res->sibling; in alloc_resource()
176 if (res) in alloc_resource()
177 memset(res, 0, sizeof(struct resource)); in alloc_resource()
179 res = kzalloc(sizeof(struct resource), flags); in alloc_resource()
181 return res; in alloc_resource()
343 bool first_lvl, struct resource *res) in find_next_iomem_res() argument
348 if (!res) in find_next_iomem_res()
385 res->start = max(start, p->start); in find_next_iomem_res()
386 res->end = min(end, p->end); in find_next_iomem_res()
387 res->flags = p->flags; in find_next_iomem_res()
388 res->desc = p->desc; in find_next_iomem_res()
400 struct resource res; in __walk_iomem_res_desc() local
404 !find_next_iomem_res(start, end, flags, desc, first_lvl, &res)) { in __walk_iomem_res_desc()
405 ret = (*func)(&res, arg); in __walk_iomem_res_desc()
409 start = res.end + 1; in __walk_iomem_res_desc()
480 struct resource res; in walk_system_ram_range() local
489 false, &res)) { in walk_system_ram_range()
490 pfn = PFN_UP(res.start); in walk_system_ram_range()
491 end_pfn = PFN_DOWN(res.end + 1); in walk_system_ram_range()
496 start = res.end + 1; in walk_system_ram_range()
539 struct resource res; in region_intersects() local
543 res.start = start; in region_intersects()
544 res.end = start + size - 1; in region_intersects()
552 if (resource_overlaps(p, &res)) in region_intersects()
579 static void resource_clip(struct resource *res, resource_size_t min, in resource_clip() argument
582 if (res->start < min) in resource_clip()
583 res->start = min; in resource_clip()
584 if (res->end > max) in resource_clip()
585 res->end = max; in resource_clip()
765 struct resource *res; in lookup_resource() local
768 for (res = root->child; res; res = res->sibling) { in lookup_resource()
769 if (res->start == start) in lookup_resource()
774 return res; in lookup_resource()
935 static int __adjust_resource(struct resource *res, resource_size_t start, in __adjust_resource() argument
938 struct resource *tmp, *parent = res->parent; in __adjust_resource()
948 if (res->sibling && (res->sibling->start <= end)) in __adjust_resource()
952 if (tmp != res) { in __adjust_resource()
953 while (tmp->sibling != res) in __adjust_resource()
960 for (tmp = res->child; tmp; tmp = tmp->sibling) in __adjust_resource()
964 res->start = start; in __adjust_resource()
965 res->end = end; in __adjust_resource()
982 int adjust_resource(struct resource *res, resource_size_t start, in adjust_resource() argument
988 result = __adjust_resource(res, start, size); in adjust_resource()
1000 struct resource *res = alloc_resource(GFP_ATOMIC); in __reserve_region_with_split() local
1004 if (!res) in __reserve_region_with_split()
1007 res->name = name; in __reserve_region_with_split()
1008 res->start = start; in __reserve_region_with_split()
1009 res->end = end; in __reserve_region_with_split()
1010 res->flags = type | IORESOURCE_BUSY; in __reserve_region_with_split()
1011 res->desc = IORES_DESC_NONE; in __reserve_region_with_split()
1015 conflict = __request_resource(parent, res); in __reserve_region_with_split()
1019 res = next_res; in __reserve_region_with_split()
1025 if (conflict->start <= res->start && in __reserve_region_with_split()
1026 conflict->end >= res->end) { in __reserve_region_with_split()
1027 free_resource(res); in __reserve_region_with_split()
1033 if (conflict->start > res->start) { in __reserve_region_with_split()
1034 end = res->end; in __reserve_region_with_split()
1035 res->end = conflict->start - 1; in __reserve_region_with_split()
1039 free_resource(res); in __reserve_region_with_split()
1049 res->start = conflict->end + 1; in __reserve_region_with_split()
1090 resource_size_t resource_alignment(struct resource *res) in resource_alignment() argument
1092 switch (res->flags & (IORESOURCE_SIZEALIGN | IORESOURCE_STARTALIGN)) { in resource_alignment()
1094 return resource_size(res); in resource_alignment()
1096 return res->start; in resource_alignment()
1128 struct resource *res = alloc_resource(GFP_KERNEL); in __request_region() local
1130 if (!res) in __request_region()
1133 res->name = name; in __request_region()
1134 res->start = start; in __request_region()
1135 res->end = start + n - 1; in __request_region()
1142 res->flags = resource_type(parent) | resource_ext_type(parent); in __request_region()
1143 res->flags |= IORESOURCE_BUSY | flags; in __request_region()
1144 res->desc = parent->desc; in __request_region()
1146 conflict = __request_resource(parent, res); in __request_region()
1156 conflict->name, conflict, res); in __request_region()
1174 free_resource(res); in __request_region()
1175 res = NULL; in __request_region()
1179 return res; in __request_region()
1203 struct resource *res = *p; in __release_region() local
1205 if (!res) in __release_region()
1207 if (res->start <= start && res->end >= end) { in __release_region()
1208 if (!(res->flags & IORESOURCE_BUSY)) { in __release_region()
1209 p = &res->child; in __release_region()
1212 if (res->start != start || res->end != end) in __release_region()
1214 *p = res->sibling; in __release_region()
1216 if (res->flags & IORESOURCE_MUXED) in __release_region()
1218 free_resource(res); in __release_region()
1221 p = &res->sibling; in __release_region()
1257 struct resource *res; in release_mem_region_adjustable() local
1272 while ((res = *p)) { in release_mem_region_adjustable()
1273 if (res->start >= end) in release_mem_region_adjustable()
1277 if (res->start > start || res->end < end) { in release_mem_region_adjustable()
1278 p = &res->sibling; in release_mem_region_adjustable()
1292 if (!(res->flags & IORESOURCE_SYSRAM)) { in release_mem_region_adjustable()
1297 if (!(res->flags & IORESOURCE_MEM)) in release_mem_region_adjustable()
1300 if (!(res->flags & IORESOURCE_BUSY)) { in release_mem_region_adjustable()
1301 p = &res->child; in release_mem_region_adjustable()
1306 if (res->start == start && res->end == end) { in release_mem_region_adjustable()
1308 *p = res->sibling; in release_mem_region_adjustable()
1309 free_resource(res); in release_mem_region_adjustable()
1311 } else if (res->start == start && res->end != end) { in release_mem_region_adjustable()
1313 ret = __adjust_resource(res, end + 1, in release_mem_region_adjustable()
1314 res->end - end); in release_mem_region_adjustable()
1315 } else if (res->start != start && res->end == end) { in release_mem_region_adjustable()
1317 ret = __adjust_resource(res, res->start, in release_mem_region_adjustable()
1318 start - res->start); in release_mem_region_adjustable()
1325 new_res->name = res->name; in release_mem_region_adjustable()
1327 new_res->end = res->end; in release_mem_region_adjustable()
1328 new_res->flags = res->flags; in release_mem_region_adjustable()
1329 new_res->desc = res->desc; in release_mem_region_adjustable()
1330 new_res->parent = res->parent; in release_mem_region_adjustable()
1331 new_res->sibling = res->sibling; in release_mem_region_adjustable()
1334 ret = __adjust_resource(res, res->start, in release_mem_region_adjustable()
1335 start - res->start); in release_mem_region_adjustable()
1338 res->sibling = new_res; in release_mem_region_adjustable()
1403 static int devm_resource_match(struct device *dev, void *res, void *data) in devm_resource_match() argument
1405 struct resource **ptr = res; in devm_resource_match()
1430 static void devm_region_release(struct device *dev, void *res) in devm_region_release() argument
1432 struct region_devres *this = res; in devm_region_release()
1437 static int devm_region_match(struct device *dev, void *res, void *match_data) in devm_region_match() argument
1439 struct region_devres *this = res, *match = match_data; in devm_region_match()
1450 struct resource *res; in __devm_request_region() local
1461 res = __request_region(parent, start, n, name, 0); in __devm_request_region()
1462 if (res) in __devm_request_region()
1467 return res; in __devm_request_region()
1501 struct resource *res = reserve + x; in reserve_setup() local
1508 res->flags = IORESOURCE_IO; in reserve_setup()
1511 res->flags = IORESOURCE_MEM; in reserve_setup()
1514 res->name = "reserved"; in reserve_setup()
1515 res->start = io_start; in reserve_setup()
1516 res->end = io_start + io_num - 1; in reserve_setup()
1517 res->flags |= IORESOURCE_BUSY; in reserve_setup()
1518 res->desc = IORES_DESC_NONE; in reserve_setup()
1519 res->child = NULL; in reserve_setup()
1520 if (request_resource(parent, res) == 0) in reserve_setup()
1622 struct resource_entry *resource_list_create_entry(struct resource *res, in resource_list_create_entry() argument
1630 entry->res = res ? res : &entry->__res; in resource_list_create_entry()
1651 struct resource *res; in __request_free_mem_region() local
1663 res = devm_request_mem_region(dev, addr, size, name); in __request_free_mem_region()
1665 res = request_mem_region(addr, size, name); in __request_free_mem_region()
1666 if (!res) in __request_free_mem_region()
1668 res->desc = IORES_DESC_DEVICE_PRIVATE_MEMORY; in __request_free_mem_region()
1669 return res; in __request_free_mem_region()