| /linux-6.15/block/ |
| H A D | blk-mq-tag.c | 42 struct blk_mq_tags *tags = hctx->tags; in __blk_mq_tag_busy() local 83 struct blk_mq_tags *tags = hctx->tags; in __blk_mq_tag_idle() local 279 tags = hctx->tags; in bt_iter() 341 struct blk_mq_tags *tags = iter_data->tags; in bt_tags_iter() local 384 .tags = tags, in bt_tags_for_each() 400 bt_tags_for_each(tags, &tags->breserved_tags, fn, priv, in __blk_mq_all_tag_iter() 445 if (tagset->tags && tagset->tags[i]) in blk_mq_tagset_busy_iter() 520 struct blk_mq_tags *tags = hctx->tags; in blk_mq_queue_tag_busy_iter() local 558 tags = kzalloc_node(sizeof(*tags), GFP_KERNEL, node); in blk_mq_init_tags() 559 if (!tags) in blk_mq_init_tags() [all …]
|
| H A D | blk-mq.h | 62 void blk_mq_free_rq_map(struct blk_mq_tags *tags); 66 struct blk_mq_tags *tags, 165 void blk_mq_free_tags(struct blk_mq_tags *tags); 174 struct blk_mq_tags **tags, unsigned int depth, bool can_grow); 179 void blk_mq_tag_wakeup_all(struct blk_mq_tags *tags, bool); 208 static inline bool blk_mq_tag_is_reserved(struct blk_mq_tags *tags, in blk_mq_tag_is_reserved() argument 211 return tag < tags->nr_reserved_tags; in blk_mq_tag_is_reserved() 223 return data->hctx->tags; in blk_mq_tags_from_data() 246 return hctx->nr_ctx && hctx->tags; in blk_mq_hw_queue_mapped() 348 blk_mq_put_tag(hctx->tags, rq->mq_ctx, rq->tag); in __blk_mq_put_driver_tag() [all …]
|
| H A D | blk-mq.c | 3487 if (!tags) in blk_mq_alloc_rq_map() 3493 if (!tags->rqs) in blk_mq_alloc_rq_map() 3502 return tags; in blk_mq_alloc_rq_map() 3849 if (!tags) in blk_mq_clear_flush_rq_mapping() 3913 hctx->tags = set->tags[hctx_idx]; in blk_mq_init_hctx() 4043 if (!tags) in blk_mq_alloc_map_and_rqs() 4052 return tags; in blk_mq_alloc_map_and_rqs() 4074 if (tags) { in blk_mq_free_map_and_rqs() 4178 hctx->tags = set->tags[i]; in blk_mq_map_swqueue() 4707 if (set->tags) in blk_mq_realloc_tag_set_tags() [all …]
|
| /linux-6.15/drivers/gpu/drm/nouveau/nvkm/core/ |
| H A D | memory.c | 35 if (tags) { in nvkm_memory_tags_put() 38 nvkm_mm_free(&fb->tags.mm, &tags->mn); in nvkm_memory_tags_put() 39 kfree(memory->tags); in nvkm_memory_tags_put() 56 if ((tags = memory->tags)) { in nvkm_memory_tags_get() 61 if (tags->mn && tags->mn->length != nr) { in nvkm_memory_tags_get() 68 *ptags = tags; in nvkm_memory_tags_get() 72 if (!(tags = kmalloc(sizeof(*tags), GFP_KERNEL))) { in nvkm_memory_tags_get() 77 if (!nvkm_mm_head(&fb->tags.mm, 0, 1, nr, nr, 1, &tags->mn)) { in nvkm_memory_tags_get() 79 clr(device, tags->mn->offset, tags->mn->length); in nvkm_memory_tags_get() 90 tags->mn = NULL; in nvkm_memory_tags_get() [all …]
|
| /linux-6.15/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ |
| H A D | nv20.c | 47 u32 tags = round_up(tiles / fb->ram->parts, 0x40); in nv20_fb_tile_comp() local 48 if (!nvkm_mm_head(&fb->tags.mm, 0, 1, tags, tags, 1, &tile->tag)) { in nv20_fb_tile_comp() 66 nvkm_mm_free(&fb->tags.mm, &tile->tag); in nv20_fb_tile_fini() 83 const u32 tags = nvkm_rd32(fb->subdev.device, 0x100320); in nv20_fb_tags() local 84 return tags ? tags + 1 : 0; in nv20_fb_tags() 89 .tags = nv20_fb_tags,
|
| H A D | nv35.c | 34 u32 tags = round_up(tiles / fb->ram->parts, 0x40); in nv35_fb_tile_comp() local 35 if (!nvkm_mm_head(&fb->tags.mm, 0, 1, tags, tags, 1, &tile->tag)) { in nv35_fb_tile_comp() 39 tile->zcomp |= ((tile->tag->offset + tags - 1) >> 6) << 13; in nv35_fb_tile_comp() 48 .tags = nv20_fb_tags,
|
| H A D | nv36.c | 34 u32 tags = round_up(tiles / fb->ram->parts, 0x40); in nv36_fb_tile_comp() local 35 if (!nvkm_mm_head(&fb->tags.mm, 0, 1, tags, tags, 1, &tile->tag)) { in nv36_fb_tile_comp() 39 tile->zcomp |= ((tile->tag->offset + tags - 1) >> 6) << 14; in nv36_fb_tile_comp() 48 .tags = nv20_fb_tags,
|
| H A D | nv40.c | 34 u32 tags = round_up(tiles / fb->ram->parts, 0x100); in nv40_fb_tile_comp() local 36 !nvkm_mm_head(&fb->tags.mm, 0, 1, tags, tags, 1, &tile->tag)) { in nv40_fb_tile_comp() 39 tile->zcomp |= ((tile->tag->offset + tags - 1) >> 8) << 13; in nv40_fb_tile_comp() 54 .tags = nv20_fb_tags,
|
| H A D | nv25.c | 34 u32 tags = round_up(tiles / fb->ram->parts, 0x40); in nv25_fb_tile_comp() local 35 if (!nvkm_mm_head(&fb->tags.mm, 0, 1, tags, tags, 1, &tile->tag)) { in nv25_fb_tile_comp() 47 .tags = nv20_fb_tags,
|
| H A D | base.c | 109 u32 tags = 0; in nvkm_fb_oneinit() local 129 if (fb->func->tags) { in nvkm_fb_oneinit() 130 tags = fb->func->tags(fb); in nvkm_fb_oneinit() 131 nvkm_debug(subdev, "%d comptags\n", tags); in nvkm_fb_oneinit() 134 return nvkm_mm_init(&fb->tags.mm, 0, 0, tags, 1); in nvkm_fb_oneinit() 243 nvkm_mm_fini(&fb->tags.mm); in nvkm_fb_dtor() 244 mutex_destroy(&fb->tags.mutex); in nvkm_fb_dtor() 279 mutex_init(&fb->tags.mutex); in nvkm_fb_ctor()
|
| H A D | nv30.c | 53 u32 tags = round_up(tiles / fb->ram->parts, 0x40); in nv30_fb_tile_comp() local 54 if (!nvkm_mm_head(&fb->tags.mm, 0, 1, tags, tags, 1, &tile->tag)) { in nv30_fb_tile_comp() 58 tile->zcomp |= ((tile->tag->offset + tags - 1) >> 6) << 12; in nv30_fb_tile_comp() 119 .tags = nv20_fb_tags,
|
| /linux-6.15/arch/arm/kernel/ |
| H A D | atags_parse.c | 179 struct tag *tags = (struct tag *)&default_tags; in setup_machine_tags() local 199 tags = atags_vaddr; in setup_machine_tags() 208 if (tags->hdr.tag != ATAG_CORE) in setup_machine_tags() 209 convert_to_tag_list(tags); in setup_machine_tags() 211 if (tags->hdr.tag != ATAG_CORE) { in setup_machine_tags() 213 tags = (struct tag *)&default_tags; in setup_machine_tags() 217 mdesc->fixup(tags, &from); in setup_machine_tags() 219 if (tags->hdr.tag == ATAG_CORE) { in setup_machine_tags() 221 squash_mem_tags(tags); in setup_machine_tags() 222 save_atags(tags); in setup_machine_tags() [all …]
|
| /linux-6.15/drivers/gpu/drm/nouveau/nvkm/subdev/volt/ |
| H A D | gpio.c | 30 static const u8 tags[] = { variable 42 for (i = 0; i < ARRAY_SIZE(tags); i++) { in nvkm_voltgpio_get() 44 int ret = nvkm_gpio_get(gpio, 0, tags[i], 0xff); in nvkm_voltgpio_get() 60 for (i = 0; i < ARRAY_SIZE(tags); i++, vid >>= 1) { in nvkm_voltgpio_set() 62 int ret = nvkm_gpio_set(gpio, 0, tags[i], 0xff, vid & 1); in nvkm_voltgpio_set() 85 for (i = 0; i < ARRAY_SIZE(tags); i++) { in nvkm_voltgpio_init() 87 int ret = nvkm_gpio_find(gpio, 0, tags[i], 0xff, &func); in nvkm_voltgpio_init()
|
| /linux-6.15/arch/arm64/mm/ |
| H A D | mteswap.c | 52 void *tags = xa_load(&mte_pages, entry.val); in mte_restore_tags() local 54 if (!tags) in mte_restore_tags() 58 mte_restore_page_tags(page_address(page), tags); in mte_restore_tags() 66 void *tags = xa_erase(&mte_pages, entry.val); in mte_invalidate_tags() local 68 mte_free_tag_storage(tags); in mte_invalidate_tags() 82 void *tags; in mte_invalidate_tags_area() local 87 xas_for_each(&xa_state, tags, last_entry.val - 1) { in mte_invalidate_tags_area() 89 mte_free_tag_storage(tags); in mte_invalidate_tags_area()
|
| /linux-6.15/arch/arm64/kernel/ |
| H A D | elfcore.c | 29 void *tags = NULL; in mte_dump_tag_range() local 56 if (!tags) { in mte_dump_tag_range() 57 tags = mte_allocate_tag_storage(); in mte_dump_tag_range() 58 if (!tags) { in mte_dump_tag_range() 65 mte_save_page_tags(page_address(page), tags); in mte_dump_tag_range() 67 if (!dump_emit(cprm, tags, MTE_PAGE_TAG_STORAGE)) { in mte_dump_tag_range() 73 if (tags) in mte_dump_tag_range() 74 mte_free_tag_storage(tags); in mte_dump_tag_range()
|
| H A D | mte.c | 426 unsigned long tags, offset; in __access_remote_tags() local 458 tags = min(len, (PAGE_SIZE - offset) / MTE_GRANULE_SIZE); in __access_remote_tags() 462 tags = mte_copy_tags_from_user(maddr + offset, buf, tags); in __access_remote_tags() 465 tags = mte_copy_tags_to_user(buf, maddr + offset, tags); in __access_remote_tags() 470 if (!tags) in __access_remote_tags() 473 len -= tags; in __access_remote_tags() 474 buf += tags; in __access_remote_tags() 475 addr += tags * MTE_GRANULE_SIZE; in __access_remote_tags()
|
| H A D | hibernate.c | 244 void *tags; in swsusp_mte_free_storage() local 247 xas_for_each(&xa_state, tags, ULONG_MAX) { in swsusp_mte_free_storage() 248 mte_free_tag_storage(tags); in swsusp_mte_free_storage() 301 void *tags; in swsusp_mte_restore_tags() local 304 xas_for_each(&xa_state, tags, ULONG_MAX) { in swsusp_mte_restore_tags() 308 mte_restore_page_tags(page_address(page), tags); in swsusp_mte_restore_tags() 310 mte_free_tag_storage(tags); in swsusp_mte_restore_tags()
|
| /linux-6.15/arch/sparc/kernel/ |
| H A D | adi_64.c | 160 unsigned char *tags; in alloc_tag_store() local 284 tags = kzalloc(size, GFP_NOWAIT|__GFP_NOWARN); in alloc_tag_store() 285 if (tags == NULL) { in alloc_tag_store() 291 tag_desc->tags = tags; in alloc_tag_store() 302 unsigned char *tags = NULL; in del_tag_store() local 313 tags = tag_desc->tags; in del_tag_store() 314 tag_desc->tags = NULL; in del_tag_store() 318 kfree(tags); in del_tag_store() 322 ((tag_desc)->tags + ((addr - (tag_desc)->start)/(2*adi_blksize())))
|
| /linux-6.15/Documentation/arch/arm64/ |
| H A D | memory-tagging-extension.rst | 40 ``PROT_MTE`` - Pages allow access to the MTE allocation tags. 44 supported and the allocation tags can be shared between processes. 62 the logical and allocation tags occurs on access, there are three 124 excludes all tags other than 0. A user thread can enable specific tags 173 - ``PR_MTE_TAG_MASK`` set to 0 (all tags excluded) 186 the tags from or set the tags to a tracee's address space. The 211 address) and no tags copied. ``iov_len`` not updated. 241 (two 4-bit tags cover 32 bytes of memory) 246 The tags are stored in the core file at ``p_offset`` as two 4-bit tags 322 * non-zero tags in the randomly generated set. [all …]
|
| H A D | tagged-pointers.rst | 38 Using non-zero address tags in any of these locations when the 44 passing non-zero address tags to the kernel via system calls is 49 address tags may suffer impaired or inaccurate debug and profiling 53 Preserving tags 56 When delivering signals, non-zero tags are not preserved in 59 that signal handlers in applications making use of tags cannot rely 73 Non-zero tags are never preserved in sigcontext.fault_address
|
| /linux-6.15/tools/testing/selftests/arm64/mte/ |
| H A D | mte_common_util.c | 125 bool tags, int fd) in __mte_allocate_memory_range() argument 163 if (tags) in __mte_allocate_memory_range() 175 void *mte_allocate_memory(size_t size, int mem_type, int mapping, bool tags) in mte_allocate_memory() argument 177 return __mte_allocate_memory_range(size, mem_type, mapping, 0, 0, tags, -1); in mte_allocate_memory() 180 void *mte_allocate_file_memory(size_t size, int mem_type, int mapping, bool tags, int fd) in mte_allocate_file_memory() argument 202 return __mte_allocate_memory_range(size, mem_type, mapping, 0, 0, tags, fd); in mte_allocate_file_memory() 233 size_t range_before, size_t range_after, bool tags) in __mte_free_memory_range() argument 241 if (tags) in __mte_free_memory_range() 257 void mte_free_memory(void *ptr, size_t size, int mem_type, bool tags) in mte_free_memory() argument 259 __mte_free_memory_range(ptr, size, mem_type, 0, 0, tags); in mte_free_memory()
|
| H A D | mte_common_util.h | 45 void *mte_allocate_memory(size_t size, int mem_type, int mapping, bool tags); 49 bool tags, int fd); 52 void mte_free_memory(void *ptr, size_t size, int mem_type, bool tags); 96 int mem_type, bool tags) in check_allocated_memory() argument 103 if (tags && !MT_FETCH_TAG((uintptr_t)ptr)) { in check_allocated_memory()
|
| /linux-6.15/include/linux/ |
| H A D | radix-tree.h | 109 unsigned long tags; member 343 iter->tags = 0; in radix_tree_iter_retry() 401 iter->tags >>= 1; in radix_tree_next_slot() 402 if (unlikely(!iter->tags)) in radix_tree_next_slot() 404 if (likely(iter->tags & 1ul)) { in radix_tree_next_slot() 410 unsigned offset = __ffs(iter->tags); in radix_tree_next_slot() 412 iter->tags >>= offset++; in radix_tree_next_slot()
|
| /linux-6.15/Documentation/arch/sparc/ |
| H A D | adi.rst | 6 ADI allows a task to set version tags on any subset of its address 7 space. Once ADI is enabled and version tags are set for ranges of 26 be repeated for entire page to set tags for entire page. 34 SPARC M7 processor, MMU uses bits 63-60 for version tags and ADI block 41 kernel sets the PSTATE.mcde bit for the task. Version tags for memory 62 tags are stored in physical memory. Tags are set on a physical page 69 version tags as well for the page. If a page allocated to a task is 75 - Kernel does not set any tags for user pages and it is entirely a 77 version tags are preserved if a page is swapped out to the disk and 78 swapped back in. It also preserves that version tags if a page is [all …]
|
| /linux-6.15/drivers/block/ |
| H A D | ps3vram.c | 64 struct ps3vram_tag *tags; member 317 cache->tags[entry].address); in ps3vram_cache_evict() 319 cache->tags[entry].address, DMA_PAGE_SIZE, in ps3vram_cache_evict() 326 cache->tags[entry].flags &= ~CACHE_PAGE_DIRTY; in ps3vram_cache_evict() 345 cache->tags[entry].address = address; in ps3vram_cache_load() 359 cache->tags[i].flags = 0; in ps3vram_cache_flush() 379 cache->tags[i].address == base) { in ps3vram_cache_match() 382 cache->tags[i].address); in ps3vram_cache_match() 404 priv->cache.tags = kcalloc(CACHE_PAGE_COUNT, in ps3vram_cache_init() 407 if (!priv->cache.tags) in ps3vram_cache_init() [all …]
|