/linux-6.8/block/ |
D | blk-mq-tag.c | 4 * fairer distribution of tags between multiple submitters when a shared tag map 20 static void blk_mq_update_wake_batch(struct blk_mq_tags *tags, in blk_mq_update_wake_batch() argument 26 sbitmap_queue_recalculate_wake_batch(&tags->bitmap_tags, in blk_mq_update_wake_batch() 28 sbitmap_queue_recalculate_wake_batch(&tags->breserved_tags, in blk_mq_update_wake_batch() 41 struct blk_mq_tags *tags = hctx->tags; in __blk_mq_tag_busy() local 59 spin_lock_irq(&tags->lock); in __blk_mq_tag_busy() 60 users = tags->active_queues + 1; in __blk_mq_tag_busy() 61 WRITE_ONCE(tags->active_queues, users); in __blk_mq_tag_busy() 62 blk_mq_update_wake_batch(tags, users); in __blk_mq_tag_busy() 63 spin_unlock_irq(&tags->lock); in __blk_mq_tag_busy() [all …]
|
D | blk-mq.h | 58 void blk_mq_free_rqs(struct blk_mq_tag_set *set, struct blk_mq_tags *tags, 60 void blk_mq_free_rq_map(struct blk_mq_tags *tags); 64 struct blk_mq_tags *tags, 154 /* allocate multiple requests/tags in one go */ 165 void blk_mq_free_tags(struct blk_mq_tags *tags); 173 void blk_mq_put_tag(struct blk_mq_tags *tags, struct blk_mq_ctx *ctx, 175 void blk_mq_put_tags(struct blk_mq_tags *tags, int *tag_array, int nr_tags); 177 struct blk_mq_tags **tags, unsigned int depth, bool can_grow); 182 void blk_mq_tag_wakeup_all(struct blk_mq_tags *tags, bool); 185 void blk_mq_all_tag_iter(struct blk_mq_tags *tags, busy_tag_iter_fn *fn, [all …]
|
D | blk-mq.c | 311 blk_mq_tag_wakeup_all(hctx->tags, true); in blk_mq_wake_waiters() 348 struct blk_mq_tags *tags, unsigned int tag) in blk_mq_rq_ctx_init() argument 353 struct request *rq = tags->static_rqs[tag]; in blk_mq_rq_ctx_init() 408 struct blk_mq_tags *tags; in __blk_mq_alloc_requests_batch() local 417 tags = blk_mq_tags_from_data(data); in __blk_mq_alloc_requests_batch() 422 prefetch(tags->static_rqs[tag]); in __blk_mq_alloc_requests_batch() 424 rq = blk_mq_rq_ctx_init(data, tags, tag); in __blk_mq_alloc_requests_batch() 453 * All requests use scheduler tags when an I/O scheduler is in __blk_mq_alloc_requests() 718 blk_mq_put_tag(hctx->tags, ctx, rq->tag); in __blk_mq_free_request() 1075 blk_mq_put_tags(hctx->tags, tag_array, nr_tags); in blk_mq_flush_tag_batch() [all …]
|
/linux-6.8/drivers/gpu/drm/nouveau/nvkm/core/ |
D | memory.c | 34 struct nvkm_tags *tags = *ptags; in nvkm_memory_tags_put() local 35 if (tags) { in nvkm_memory_tags_put() 36 mutex_lock(&fb->tags.mutex); in nvkm_memory_tags_put() 37 if (refcount_dec_and_test(&tags->refcount)) { 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() 40 memory->tags = NULL; in nvkm_memory_tags_put() 42 mutex_unlock(&fb->tags.mutex); in nvkm_memory_tags_put() 53 struct nvkm_tags *tags; in nvkm_memory_tags_get() local 55 mutex_lock(&fb->tags.mutex); in nvkm_memory_tags_get() [all …]
|
/linux-6.8/arch/arm64/mm/ |
D | mteswap.c | 14 /* tags granule is 16 bytes, 2 tags stored per byte */ in mte_allocate_tag_storage() 39 if (WARN(xa_is_err(ret), "Failed to store MTE tags")) { in mte_save_tags() 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() 75 void *tags; in mte_invalidate_tags_area() local 80 xas_for_each(&xa_state, tags, last_entry.val - 1) { in mte_invalidate_tags_area() 82 mte_free_tag_storage(tags); in mte_invalidate_tags_area()
|
/linux-6.8/Documentation/arch/arm64/ |
D | memory-tagging-extension.rst | 36 To access the allocation tags, a user process must enable the Tagged 40 ``PROT_MTE`` - Pages allow access to the MTE allocation tags. 44 supported and the allocation tags can be shared between processes. 55 ``MADV_FREE`` may have the allocation tags cleared (set to 0) at any 62 the logical and allocation tags occurs on access, there are three 108 **Note**: There are no *match-all* logical tags available for user 119 Excluding Tags in the ``IRG``, ``ADDG`` and ``SUBG`` instructions 122 The architecture allows excluding certain tags to be randomly generated 124 excludes all tags other than 0. A user thread can enable specific tags 126 flags, 0, 0, 0)`` system call where ``flags`` contains the tags bitmap [all …]
|
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.8/arch/arm64/lib/ |
D | mte.S | 27 * Clear the tags in a page 40 * Zero the page and tags at the same time 66 * Copy the tags from the source page to the destination one 84 * Read tags from a user buffer (one tag per byte) and set the corresponding 85 * tags at the given kernel address. Used by PTRACE_POKEMTETAGS. 88 * x2 - number of tags/bytes (n) 90 * x0 - number of tags read/set 104 2: sub x0, x1, x3 // update the number of tags set 109 * Get the tags from a kernel address range and write the tag values to the 113 * x2 - number of tags/bytes (n) [all …]
|
/linux-6.8/arch/sparc/kernel/ |
D | adi_64.c | 17 /* Each page of storage for ADI tags can accommodate tags for 128 21 * store tags for four SWAPFILE_CLUSTER pages to reduce need for 100 /* Some of the code to support swapping ADI tags is written in mdesc_adi_init() 101 * assumption that two ADI tags can fit inside one byte. If in mdesc_adi_init() 160 unsigned char *tags; in alloc_tag_store() local 231 * store tags for as many pages in this vma as possible but not in alloc_tag_store() 233 * two ADI tags since each ADI tag is 4 bits. Each ADI tag in alloc_tag_store() 261 * only one page for storing ADI tags in alloc_tag_store() 284 tags = kzalloc(size, GFP_NOWAIT|__GFP_NOWARN); in alloc_tag_store() 285 if (tags == NULL) { in alloc_tag_store() [all …]
|
/linux-6.8/arch/arm/kernel/ |
D | atags_parse.c | 11 * of variable-sized tags to the kernel. The first tag must be a ATAG_CORE 158 * Parse all tags in the list, checking both the global and architecture 179 struct tag *tags = (struct tag *)&default_tags; in setup_machine_tags() local 199 tags = atags_vaddr; in setup_machine_tags() 201 tags = (void *)(PAGE_OFFSET + mdesc->atag_offset); 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() [all …]
|
/linux-6.8/Documentation/arch/sparc/ |
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 61 - Version tags are set on virtual addresses from userspace even though 62 tags are stored in physical memory. Tags are set on a physical page 66 - When a task frees a memory page it had set version tags on, the page 69 version tags as well for the page. If a page allocated to a task is 70 freed and allocated back to the same task, old version tags set by the [all …]
|
/linux-6.8/arch/arm64/kernel/ |
D | mte.c | 43 /* if PG_mte_tagged is set, tags have already been initialised */ in mte_sync_tags() 51 /* ensure the tags are visible before the PTE is set */ in mte_sync_tags() 70 * pages is tagged, set_pte_at() may zero or change the tags of the in memcmp_pages() 389 * Access MTE tags in another process' address space as given in mm. Update 390 * the number of tags copied. Return 0 if any tags copied, error otherwise. 409 unsigned long tags, offset; in __access_remote_tags() local 420 * Only copy tags if the page has been mapped as PROT_MTE in __access_remote_tags() 421 * (PG_mte_tagged set). Otherwise the tags are not valid and in __access_remote_tags() 423 * would cause the existing tags to be cleared if the page in __access_remote_tags() 435 tags = min(len, (PAGE_SIZE - offset) / MTE_GRANULE_SIZE); in __access_remote_tags() [all …]
|
D | elfcore.c | 29 void *tags = NULL; in mte_dump_tag_range() local 55 if (!tags) { in mte_dump_tag_range() 56 tags = mte_allocate_tag_storage(); in mte_dump_tag_range() 57 if (!tags) { in mte_dump_tag_range() 64 mte_save_page_tags(page_address(page), tags); in mte_dump_tag_range() 66 if (!dump_emit(cprm, tags, MTE_PAGE_TAG_STORAGE)) { in mte_dump_tag_range() 72 if (tags) in mte_dump_tag_range() 73 mte_free_tag_storage(tags); in mte_dump_tag_range()
|
/linux-6.8/drivers/gpu/drm/nouveau/nvkm/subdev/fb/ |
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,
|
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,
|
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,
|
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,
|
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()
|
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,
|
/linux-6.8/Documentation/admin-guide/device-mapper/ |
D | dm-integrity.rst | 6 per-sector tags that can be used for storing integrity information. 8 A general problem with storing integrity tags with every sector is that 13 writes sector data and integrity tags into a journal, commits the journal 14 and then copies the data and integrity tags to their respective location. 30 region's data and integrity tags are not synchronized - if the machine 41 Accesses to the on-disk metadata area containing checksums (aka tags) are 77 not used and data sectors and integrity tags are written 81 data and integrity tags are written to the 131 integrity tags from the upper target, but it will automatically 132 generate and verify the integrity tags. [all …]
|
/linux-6.8/tools/perf/ |
D | Makefile | 64 # (Except for tags and TAGS targets. The reason is that the 65 # Makefile does not treat tags/TAGS as targets but as files 68 all tags TAGS: target 115 .PHONY: tags TAGS FORCE Makefile
|
/linux-6.8/include/linux/ |
D | radix-tree.h | 76 /* The top bits of xa_flags are used to store the root tags */ 96 * @tags: bit-mask for tag-iterating 109 unsigned long tags; member 123 * - any function _modifying_ the tree or tags (inserting or deleting 124 * items, setting or clearing tags) must exclude other modifications, and 126 * - any function _reading_ the tree or tags (looking up items or tags, 155 * if only the RCU read lock is held. Functions to set/clear tags and to 284 * Leave iter->tags uninitialized. radix_tree_next_chunk() will fill it in radix_tree_iter_init() 286 * unsuccessful or non-tagged then nobody cares about ->tags. in radix_tree_iter_init() 307 * its end (next_index), and constructs a bit mask for tagged iterating (tags). [all …]
|
/linux-6.8/drivers/gpu/drm/nouveau/nvkm/subdev/volt/ |
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.8/drivers/i2c/busses/ |
D | i2c-qup.c | 97 /* QUP tags */ 105 /* QUP v2 tags */ 144 * Max tags length (start, stop and maximum 2 bytes address) for each QUP 148 /* Max data length for each DATARD tags */ 177 * cur_tx_tags: pointer to tell cur position in tags 184 * tags: contains tx tag bytes for current QUP transfer 209 u8 tags[6]; member 276 /* function to write tags in tx fifo for i2c read transfer */ 520 static int qup_i2c_set_tags_smb(u16 addr, u8 *tags, struct qup_i2c_dev *qup, in qup_i2c_set_tags_smb() argument 526 tags[len++] = QUP_TAG_V2_DATARD_STOP; in qup_i2c_set_tags_smb() [all …]
|
/linux-6.8/tools/testing/selftests/arm64/mte/ |
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()
|