mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 10:41:38 -04:00
userfaultfd: provide pid in userfault msg
It could be useful for calculating downtime during postcopy live migration per vCPU. Side observer or application itself will be informed about proper task's sleep during userfaultfd processing. Process's thread id is being provided when user requeste it by setting UFFD_FEATURE_THREAD_ID bit into uffdio_api.features. Link: http://lkml.kernel.org/r/[email protected] Signed-off-by: Alexey Perevalov <[email protected]> Signed-off-by: Andrea Arcangeli <[email protected]> Cc: "Dr. David Alan Gilbert" <[email protected]> Cc: Maxime Coquelin <[email protected]> Cc: Mike Kravetz <[email protected]> Cc: Mike Rapoport <[email protected]> Signed-off-by: Andrew Morton <[email protected]> Signed-off-by: Linus Torvalds <[email protected]>
This commit is contained in:
parent
2376dd7ced
commit
9d4ac93482
2 changed files with 13 additions and 5 deletions
|
|
@ -178,7 +178,8 @@ static inline void msg_init(struct uffd_msg *msg)
|
|||
|
||||
static inline struct uffd_msg userfault_msg(unsigned long address,
|
||||
unsigned int flags,
|
||||
unsigned long reason)
|
||||
unsigned long reason,
|
||||
unsigned int features)
|
||||
{
|
||||
struct uffd_msg msg;
|
||||
msg_init(&msg);
|
||||
|
|
@ -202,6 +203,8 @@ static inline struct uffd_msg userfault_msg(unsigned long address,
|
|||
* write protect fault.
|
||||
*/
|
||||
msg.arg.pagefault.flags |= UFFD_PAGEFAULT_FLAG_WP;
|
||||
if (features & UFFD_FEATURE_THREAD_ID)
|
||||
msg.arg.pagefault.ptid = task_pid_vnr(current);
|
||||
return msg;
|
||||
}
|
||||
|
||||
|
|
@ -422,7 +425,8 @@ int handle_userfault(struct vm_fault *vmf, unsigned long reason)
|
|||
|
||||
init_waitqueue_func_entry(&uwq.wq, userfaultfd_wake_function);
|
||||
uwq.wq.private = current;
|
||||
uwq.msg = userfault_msg(vmf->address, vmf->flags, reason);
|
||||
uwq.msg = userfault_msg(vmf->address, vmf->flags, reason,
|
||||
ctx->features);
|
||||
uwq.ctx = ctx;
|
||||
uwq.waken = false;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue