Lines Matching +full:reset +full:- +full:synchronized

1 // SPDX-License-Identifier: GPL-2.0-only
86 * tagged, return non-zero to avoid KSM merging. If only one of the in memcmp_pages()
168 return -EINVAL; in mte_enable_kernel_store_only()
189 * (per ARM DDI 0487F.c table D13-1). in mte_check_tfsr_el1()
211 unsigned long sctlr = task->thread.sctlr_user; in mte_update_sctlr_user()
212 unsigned long mte_ctrl = task->thread.mte_ctrl; in mte_update_sctlr_user()
237 task->thread.sctlr_user = sctlr; in mte_update_sctlr_user()
243 * SYS_GCR_EL1 will be set to current->thread.mte_ctrl value by in mte_update_gcr_excl()
250 ((task->thread.mte_ctrl >> MTE_CTRL_GCR_USER_EXCL_SHIFT) & in mte_update_gcr_excl()
263 BUG_ON(nr_inst != 1); /* Branch -> NOP */ in kasan_hw_tags_enable()
279 /* disable tag checking and reset tag generation mask */ in mte_thread_init_user()
299 * are synchronized before this point. in mte_thread_switch()
313 * CPU power-up. in mte_cpu_setup()
331 * RGSR_EL1.SEED must be non-zero for IRG to produce in mte_cpu_setup()
332 * pseudorandom numbers. As RGSR_EL1 is UNKNOWN out of reset, we in mte_cpu_setup()
355 * to TFSR_EL1 are synchronized before we report the state. in mte_suspend_enter()
399 task->thread.mte_ctrl = mte_ctrl; in set_mte_ctrl()
404 update_sctlr_el1(task->thread.sctlr_user); in set_mte_ctrl()
414 u64 mte_ctrl = task->thread.mte_ctrl; in get_mte_ctrl()
440 void __user *buf = kiov->iov_base; in __access_remote_tags()
441 size_t len = kiov->iov_len; in __access_remote_tags()
446 return -EFAULT; in __access_remote_tags()
449 return -EIO; in __access_remote_tags()
471 if (!(vma->vm_flags & VM_MTE)) { in __access_remote_tags()
472 err = -EOPNOTSUPP; in __access_remote_tags()
485 tags = min(len, (PAGE_SIZE - offset) / MTE_GRANULE_SIZE); in __access_remote_tags()
500 len -= tags; in __access_remote_tags()
507 kiov->iov_len = buf - kiov->iov_base; in __access_remote_tags()
508 if (!kiov->iov_len) { in __access_remote_tags()
511 return -EIO; in __access_remote_tags()
513 return -EFAULT; in __access_remote_tags()
531 return -EPERM; in access_remote_tags()
533 if (!tsk->ptrace || (current != tsk->parent) || in access_remote_tags()
535 !ptracer_capable(tsk, mm->user_ns))) { in access_remote_tags()
537 return -EPERM; in access_remote_tags()
555 return -EIO; in mte_ptrace_copy_tags()
557 if (get_user(kiov.iov_base, &uiov->iov_base) || in mte_ptrace_copy_tags()
558 get_user(kiov.iov_len, &uiov->iov_len)) in mte_ptrace_copy_tags()
559 return -EFAULT; in mte_ptrace_copy_tags()
569 ret = put_user(kiov.iov_len, &uiov->iov_len); in mte_ptrace_copy_tags()
577 switch (per_cpu(mte_tcf_preferred, dev->id)) { in mte_tcf_preferred_show()
602 return -EINVAL; in mte_tcf_preferred_store()
605 per_cpu(mte_tcf_preferred, dev->id) = tcf; in mte_tcf_preferred_store()
653 return end - uaddr; in mte_probe_user_range()