• Home
  • Raw
  • Download

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 = (struct resource) { in find_next_iomem_res()
403 struct resource res; in __walk_iomem_res_desc() local
407 !find_next_iomem_res(start, end, flags, desc, first_lvl, &res)) { in __walk_iomem_res_desc()
408 ret = (*func)(&res, arg); in __walk_iomem_res_desc()
412 start = res.end + 1; in __walk_iomem_res_desc()
483 struct resource res; in walk_system_ram_range() local
492 false, &res)) { in walk_system_ram_range()
493 pfn = PFN_UP(res.start); in walk_system_ram_range()
494 end_pfn = PFN_DOWN(res.end + 1); in walk_system_ram_range()
499 start = res.end + 1; in walk_system_ram_range()
542 struct resource res; in region_intersects() local
546 res.start = start; in region_intersects()
547 res.end = start + size - 1; in region_intersects()
555 if (resource_overlaps(p, &res)) in region_intersects()
582 static void resource_clip(struct resource *res, resource_size_t min, in resource_clip() argument
585 if (res->start < min) in resource_clip()
586 res->start = min; in resource_clip()
587 if (res->end > max) in resource_clip()
588 res->end = max; in resource_clip()
768 struct resource *res; in lookup_resource() local
771 for (res = root->child; res; res = res->sibling) { in lookup_resource()
772 if (res->start == start) in lookup_resource()
777 return res; in lookup_resource()
938 static int __adjust_resource(struct resource *res, resource_size_t start, in __adjust_resource() argument
941 struct resource *tmp, *parent = res->parent; in __adjust_resource()
951 if (res->sibling && (res->sibling->start <= end)) in __adjust_resource()
955 if (tmp != res) { in __adjust_resource()
956 while (tmp->sibling != res) in __adjust_resource()
963 for (tmp = res->child; tmp; tmp = tmp->sibling) in __adjust_resource()
967 res->start = start; in __adjust_resource()
968 res->end = end; in __adjust_resource()
985 int adjust_resource(struct resource *res, resource_size_t start, in adjust_resource() argument
991 result = __adjust_resource(res, start, size); in adjust_resource()
1003 struct resource *res = alloc_resource(GFP_ATOMIC); in __reserve_region_with_split() local
1007 if (!res) in __reserve_region_with_split()
1010 res->name = name; in __reserve_region_with_split()
1011 res->start = start; in __reserve_region_with_split()
1012 res->end = end; in __reserve_region_with_split()
1013 res->flags = type | IORESOURCE_BUSY; in __reserve_region_with_split()
1014 res->desc = IORES_DESC_NONE; in __reserve_region_with_split()
1018 conflict = __request_resource(parent, res); in __reserve_region_with_split()
1022 res = next_res; in __reserve_region_with_split()
1028 if (conflict->start <= res->start && in __reserve_region_with_split()
1029 conflict->end >= res->end) { in __reserve_region_with_split()
1030 free_resource(res); in __reserve_region_with_split()
1036 if (conflict->start > res->start) { in __reserve_region_with_split()
1037 end = res->end; in __reserve_region_with_split()
1038 res->end = conflict->start - 1; in __reserve_region_with_split()
1042 free_resource(res); in __reserve_region_with_split()
1052 res->start = conflict->end + 1; in __reserve_region_with_split()
1093 resource_size_t resource_alignment(struct resource *res) in resource_alignment() argument
1095 switch (res->flags & (IORESOURCE_SIZEALIGN | IORESOURCE_STARTALIGN)) { in resource_alignment()
1097 return resource_size(res); in resource_alignment()
1099 return res->start; in resource_alignment()
1131 struct resource *res = alloc_resource(GFP_KERNEL); in __request_region() local
1134 if (!res) in __request_region()
1137 res->name = name; in __request_region()
1138 res->start = start; in __request_region()
1139 res->end = start + n - 1; in __request_region()
1146 res->flags = resource_type(parent) | resource_ext_type(parent); in __request_region()
1147 res->flags |= IORESOURCE_BUSY | flags; in __request_region()
1148 res->desc = parent->desc; in __request_region()
1150 conflict = __request_resource(parent, res); in __request_region()
1160 conflict->name, conflict, res); in __request_region()
1178 free_resource(res); in __request_region()
1179 res = NULL; in __request_region()
1184 if (res && orig_parent == &iomem_resource) in __request_region()
1185 revoke_devmem(res); in __request_region()
1187 return res; in __request_region()
1211 struct resource *res = *p; in __release_region() local
1213 if (!res) in __release_region()
1215 if (res->start <= start && res->end >= end) { in __release_region()
1216 if (!(res->flags & IORESOURCE_BUSY)) { in __release_region()
1217 p = &res->child; in __release_region()
1220 if (res->start != start || res->end != end) in __release_region()
1222 *p = res->sibling; in __release_region()
1224 if (res->flags & IORESOURCE_MUXED) in __release_region()
1226 free_resource(res); in __release_region()
1229 p = &res->sibling; in __release_region()
1266 struct resource *res; in release_mem_region_adjustable() local
1286 while ((res = *p)) { in release_mem_region_adjustable()
1287 if (res->start >= end) in release_mem_region_adjustable()
1291 if (res->start > start || res->end < end) { in release_mem_region_adjustable()
1292 p = &res->sibling; in release_mem_region_adjustable()
1296 if (!(res->flags & IORESOURCE_MEM)) in release_mem_region_adjustable()
1299 if (!(res->flags & IORESOURCE_BUSY)) { in release_mem_region_adjustable()
1300 p = &res->child; in release_mem_region_adjustable()
1305 if (res->start == start && res->end == end) { in release_mem_region_adjustable()
1307 *p = res->sibling; in release_mem_region_adjustable()
1308 free_resource(res); in release_mem_region_adjustable()
1309 } else if (res->start == start && res->end != end) { in release_mem_region_adjustable()
1311 WARN_ON_ONCE(__adjust_resource(res, end + 1, in release_mem_region_adjustable()
1312 res->end - end)); in release_mem_region_adjustable()
1313 } else if (res->start != start && res->end == end) { in release_mem_region_adjustable()
1315 WARN_ON_ONCE(__adjust_resource(res, res->start, in release_mem_region_adjustable()
1316 start - res->start)); in release_mem_region_adjustable()
1327 new_res->name = res->name; in release_mem_region_adjustable()
1329 new_res->end = res->end; in release_mem_region_adjustable()
1330 new_res->flags = res->flags; in release_mem_region_adjustable()
1331 new_res->desc = res->desc; in release_mem_region_adjustable()
1332 new_res->parent = res->parent; in release_mem_region_adjustable()
1333 new_res->sibling = res->sibling; in release_mem_region_adjustable()
1336 if (WARN_ON_ONCE(__adjust_resource(res, res->start, in release_mem_region_adjustable()
1337 start - res->start))) in release_mem_region_adjustable()
1339 res->sibling = new_res; in release_mem_region_adjustable()
1379 void merge_system_ram_resource(struct resource *res) in merge_system_ram_resource() argument
1384 if (WARN_ON_ONCE((res->flags & flags) != flags)) in merge_system_ram_resource()
1388 res->flags |= IORESOURCE_SYSRAM_MERGEABLE; in merge_system_ram_resource()
1391 cur = res->sibling; in merge_system_ram_resource()
1392 if (cur && system_ram_resources_mergeable(res, cur)) { in merge_system_ram_resource()
1393 res->end = cur->end; in merge_system_ram_resource()
1394 res->sibling = cur->sibling; in merge_system_ram_resource()
1399 cur = res->parent->child; in merge_system_ram_resource()
1400 while (cur && cur->sibling != res) in merge_system_ram_resource()
1402 if (cur && system_ram_resources_mergeable(cur, res)) { in merge_system_ram_resource()
1403 cur->end = res->end; in merge_system_ram_resource()
1404 cur->sibling = res->sibling; in merge_system_ram_resource()
1405 free_resource(res); in merge_system_ram_resource()
1463 static int devm_resource_match(struct device *dev, void *res, void *data) in devm_resource_match() argument
1465 struct resource **ptr = res; in devm_resource_match()
1490 static void devm_region_release(struct device *dev, void *res) in devm_region_release() argument
1492 struct region_devres *this = res; in devm_region_release()
1497 static int devm_region_match(struct device *dev, void *res, void *match_data) in devm_region_match() argument
1499 struct region_devres *this = res, *match = match_data; in devm_region_match()
1510 struct resource *res; in __devm_request_region() local
1521 res = __request_region(parent, start, n, name, 0); in __devm_request_region()
1522 if (res) in __devm_request_region()
1527 return res; in __devm_request_region()
1561 struct resource *res = reserve + x; in reserve_setup() local
1568 res->flags = IORESOURCE_IO; in reserve_setup()
1571 res->flags = IORESOURCE_MEM; in reserve_setup()
1574 res->name = "reserved"; in reserve_setup()
1575 res->start = io_start; in reserve_setup()
1576 res->end = io_start + io_num - 1; in reserve_setup()
1577 res->flags |= IORESOURCE_BUSY; in reserve_setup()
1578 res->desc = IORES_DESC_NONE; in reserve_setup()
1579 res->child = NULL; in reserve_setup()
1580 if (request_resource(parent, res) == 0) in reserve_setup()
1682 struct resource_entry *resource_list_create_entry(struct resource *res, in resource_list_create_entry() argument
1690 entry->res = res ? res : &entry->__res; in resource_list_create_entry()
1711 struct resource *res; in __request_free_mem_region() local
1723 res = devm_request_mem_region(dev, addr, size, name); in __request_free_mem_region()
1725 res = request_mem_region(addr, size, name); in __request_free_mem_region()
1726 if (!res) in __request_free_mem_region()
1728 res->desc = IORES_DESC_DEVICE_PRIVATE_MEMORY; in __request_free_mem_region()
1729 return res; in __request_free_mem_region()