Lines Matching +full:per +full:- +full:hart
1 // SPDX-License-Identifier: GPL-2.0-only
35 * Performs an icache flush for the given MM context. RISC-V has no direct
39 * single-hart processes on a many-hart machine, ie 'make -j') we avoid the
42 * execution resumes on each hart.
51 /* Mark every hart's icache as needing a flush for this MM. */ in flush_icache_mm()
52 mask = &mm->context.icache_stale_mask; in flush_icache_mm()
54 /* Flush this hart's I$ now, and mark it as flushed. */ in flush_icache_mm()
65 if (mm == current->active_mm && local) { in flush_icache_mm()
68 * performed on this hart between setting a hart's cpumask bit in flush_icache_mm()
69 * and scheduling this MM context on that hart. Sending an SBI in flush_icache_mm()
71 * messages are sent we still need to order this hart's writes in flush_icache_mm()
91 if (!test_bit(PG_dcache_clean, &folio->flags)) { in flush_icache_pte()
93 set_bit(PG_dcache_clean, &folio->flags); in flush_icache_pte()
136 /* set block-size for cbom and/or cboz extension if available */ in riscv_init_cbo_blocksizes()
137 cbo_get_block_size(node, "riscv,cbom-block-size", in riscv_init_cbo_blocksizes()
139 cbo_get_block_size(node, "riscv,cboz-block-size", in riscv_init_cbo_blocksizes()
166 * Mark every other hart's icache as needing a flush for in set_icache_stale_mask()
171 mask = ¤t->mm->context.icache_stale_mask; in set_icache_stale_mask()
181 * riscv_set_icache_flush_ctx() - Enable/disable icache flushing instructions in
210 * process is migrated, the corresponding hart's icache will be guaranteed to be
215 * instruction. This must be performed by the user-space program.
217 * In per-thread context (eg. ``scope == PR_RISCV_SCOPE_PER_THREAD``) only the
219 * instructions. When the thread is migrated, the corresponding hart's icache
232 current->mm->context.force_icache_flush = true; in riscv_set_icache_flush_ctx()
235 current->thread.force_icache_flush = true; in riscv_set_icache_flush_ctx()
238 return -EINVAL; in riscv_set_icache_flush_ctx()
245 current->mm->context.force_icache_flush = false; in riscv_set_icache_flush_ctx()
249 current->thread.force_icache_flush = false; in riscv_set_icache_flush_ctx()
252 return -EINVAL; in riscv_set_icache_flush_ctx()
256 return -EINVAL; in riscv_set_icache_flush_ctx()
265 return -EINVAL; in riscv_set_icache_flush_ctx()