* [PATCH v3] Illuminate thread id to user space [not found] <CGME20170403093307eucas1p2e1110dd2550426c53a7b8825efa34f99@eucas1p2.samsung.com> @ 2017-04-03 9:32 ` Alexey Perevalov [not found] ` <CGME20170403093318eucas1p2ebd57e5e4c33707063687ccd571f67bb@eucas1p2.samsung.com> 2017-04-03 9:38 ` [PATCH v3] please don't see patch set Alexey Perevalov 0 siblings, 2 replies; 6+ messages in thread From: Alexey Perevalov @ 2017-04-03 9:32 UTC (permalink / raw) To: Andrea Arcangeli, linux-mm; +Cc: Alexey Perevalov, rppt, mike.kravetz, dgilbert Hi Andrea, This is third version of the patch. Modifications since previous versions: (v3 -> v2) - type of ptid now is __u32. As you suggested. (v2 -> v1) - process thread id is provided only when it was requested with UFFD_FEATURE_THREAD_ID bit. - pid from namespace is provided, so locking thread's gettid in namespace and msg.arg.pagefault.ptid will be equal. This patch is based on git://git.kernel.org/pub/scm/linux/kernel/git/andrea/aa.git userfault branch. HEAD commit is "userfaultfd: switch to exclusive wakeup for blocking reads" Alexey Perevalov (1): userfaultfd: provide pid in userfault msg fs/userfaultfd.c | 8 ++++++-- include/uapi/linux/userfaultfd.h | 8 +++++++- 2 files changed, 13 insertions(+), 3 deletions(-) -- 2.7.4 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> ^ permalink raw reply [flat|nested] 6+ messages in thread
[parent not found: <CGME20170403093318eucas1p2ebd57e5e4c33707063687ccd571f67bb@eucas1p2.samsung.com>]
* [PATCH v3] userfaultfd: provide pid in userfault msg [not found] ` <CGME20170403093318eucas1p2ebd57e5e4c33707063687ccd571f67bb@eucas1p2.samsung.com> @ 2017-04-03 9:32 ` Alexey Perevalov 2017-04-04 19:04 ` Andrea Arcangeli 0 siblings, 1 reply; 6+ messages in thread From: Alexey Perevalov @ 2017-04-03 9:32 UTC (permalink / raw) To: Andrea Arcangeli, linux-mm; +Cc: Alexey Perevalov, rppt, mike.kravetz, dgilbert 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. Signed-off-by: Alexey Perevalov <a.perevalov@samsung.com> --- fs/userfaultfd.c | 8 ++++++-- include/uapi/linux/userfaultfd.h | 8 +++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/fs/userfaultfd.c b/fs/userfaultfd.c index 24fd7e0..14c30d4 100644 --- a/fs/userfaultfd.c +++ b/fs/userfaultfd.c @@ -180,7 +180,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); @@ -204,6 +205,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; } @@ -408,7 +411,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; diff --git a/include/uapi/linux/userfaultfd.h b/include/uapi/linux/userfaultfd.h index 819e235..ff8d0d2 100644 --- a/include/uapi/linux/userfaultfd.h +++ b/include/uapi/linux/userfaultfd.h @@ -24,7 +24,8 @@ UFFD_FEATURE_EVENT_REMOVE | \ UFFD_FEATURE_EVENT_UNMAP | \ UFFD_FEATURE_MISSING_HUGETLBFS | \ - UFFD_FEATURE_MISSING_SHMEM) + UFFD_FEATURE_MISSING_SHMEM | \ + UFFD_FEATURE_THREAD_ID) #define UFFD_API_IOCTLS \ ((__u64)1 << _UFFDIO_REGISTER | \ (__u64)1 << _UFFDIO_UNREGISTER | \ @@ -83,6 +84,7 @@ struct uffd_msg { struct { __u64 flags; __u64 address; + __u32 ptid; } pagefault; struct { @@ -158,6 +160,9 @@ struct uffdio_api { * UFFD_FEATURE_MISSING_SHMEM works the same as * UFFD_FEATURE_MISSING_HUGETLBFS, but it applies to shmem * (i.e. tmpfs and other shmem based APIs). + * + * UFFD_FEATURE_THREAD_ID pid of the page faulted task_struct will + * be returned, if feature is not requested 0 will be returned. */ #define UFFD_FEATURE_PAGEFAULT_FLAG_WP (1<<0) #define UFFD_FEATURE_EVENT_FORK (1<<1) @@ -166,6 +171,7 @@ struct uffdio_api { #define UFFD_FEATURE_MISSING_HUGETLBFS (1<<4) #define UFFD_FEATURE_MISSING_SHMEM (1<<5) #define UFFD_FEATURE_EVENT_UNMAP (1<<6) +#define UFFD_FEATURE_THREAD_ID (1<<7) __u64 features; __u64 ioctls; -- 2.7.4 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v3] userfaultfd: provide pid in userfault msg 2017-04-03 9:32 ` [PATCH v3] userfaultfd: provide pid in userfault msg Alexey Perevalov @ 2017-04-04 19:04 ` Andrea Arcangeli 2017-04-05 12:42 ` Alexey Perevalov 0 siblings, 1 reply; 6+ messages in thread From: Andrea Arcangeli @ 2017-04-04 19:04 UTC (permalink / raw) To: Alexey Perevalov; +Cc: linux-mm, rppt, mike.kravetz, dgilbert Hello Alexey, v3 looks great to me. Reviewed-by: Andrea Arcangeli <aarcange@redhat.com> On top of v3 I think we could add this to make it more obvious to the developer tpid isn't necessarily there by just looking at the data structure. This is purely cosmetical, so feel free to comment if you disagree. I'm also fine to add an anonymous union later if a new usage for those bytes emerges (ABI side doesn't change anything which is why this could be done later as well, only the API changes here but then I doubt we'd break the API later for this, so if we want pagefault.feat.* it probably should be done right now). Thanks, Andrea ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v3] userfaultfd: provide pid in userfault msg 2017-04-04 19:04 ` Andrea Arcangeli @ 2017-04-05 12:42 ` Alexey Perevalov 0 siblings, 0 replies; 6+ messages in thread From: Alexey Perevalov @ 2017-04-05 12:42 UTC (permalink / raw) To: Andrea Arcangeli; +Cc: linux-mm, rppt, mike.kravetz, dgilbert On 04/04/2017 10:04 PM, Andrea Arcangeli wrote: > Hello Alexey, > > v3 looks great to me. > > Reviewed-by: Andrea Arcangeli <aarcange@redhat.com> > > On top of v3 I think we could add this to make it more obvious to the > developer tpid isn't necessarily there by just looking at the data > structure. > > This is purely cosmetical, so feel free to comment if you > disagree. Why not, I agree with this change. > > I'm also fine to add an anonymous union later if a new usage for those > bytes emerges (ABI side doesn't change anything which is why this > could be done later as well, only the API changes here but then I > doubt we'd break the API later for this, so if we want pagefault.feat.* > it probably should be done right now). > > Thanks, > Andrea > > >From 901951f5a0456aa07d4fb1231cf2b1d352beb36f Mon Sep 17 00:00:00 2001 > From: Andrea Arcangeli <aarcange@redhat.com> > Date: Tue, 4 Apr 2017 20:50:54 +0200 > Subject: [PATCH 1/1] userfaultfd: provide pid in userfault msg - add feat > union > > No ABI change, but this will make it more explicit to software that > ptid is only available if requested by passing UFFD_FEATURE_THREAD_ID > to UFFDIO_API. The fact it's a union will also self document it > shouldn't be taken for granted there's a tpid there. > > Signed-off-by: Andrea Arcangeli <aarcange@redhat.com> > --- > include/uapi/linux/userfaultfd.h | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/include/uapi/linux/userfaultfd.h b/include/uapi/linux/userfaultfd.h > index ff8d0d2..524b860 100644 > --- a/include/uapi/linux/userfaultfd.h > +++ b/include/uapi/linux/userfaultfd.h > @@ -84,7 +84,9 @@ struct uffd_msg { > struct { > __u64 flags; > __u64 address; > - __u32 ptid; > + union { > + __u32 ptid; > + } feat; > } pagefault; > > struct { > > > > -- Best regards, Alexey Perevalov -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v3] please don't see patch set 2017-04-03 9:32 ` [PATCH v3] Illuminate thread id to user space Alexey Perevalov [not found] ` <CGME20170403093318eucas1p2ebd57e5e4c33707063687ccd571f67bb@eucas1p2.samsung.com> @ 2017-04-03 9:38 ` Alexey Perevalov 2017-04-03 9:42 ` Alexey Perevalov 1 sibling, 1 reply; 6+ messages in thread From: Alexey Perevalov @ 2017-04-03 9:38 UTC (permalink / raw) To: Andrea Arcangeli, linux-mm; +Cc: rppt, mike.kravetz, dgilbert I'm so sorry, commit message in patch is wrong. I'll resend On 04/03/2017 12:32 PM, Alexey Perevalov wrote: > Hi Andrea, > > This is third version of the patch. Modifications since previous versions: > (v3 -> v2) > - type of ptid now is __u32. As you suggested. > > (v2 -> v1) > - process thread id is provided only when it was requested with > UFFD_FEATURE_THREAD_ID bit. > - pid from namespace is provided, so locking thread's gettid in namespace > and msg.arg.pagefault.ptid will be equal. > > This patch is based on > git://git.kernel.org/pub/scm/linux/kernel/git/andrea/aa.git userfault branch. > HEAD commit is "userfaultfd: switch to exclusive wakeup for blocking reads" > > > Alexey Perevalov (1): > userfaultfd: provide pid in userfault msg > > fs/userfaultfd.c | 8 ++++++-- > include/uapi/linux/userfaultfd.h | 8 +++++++- > 2 files changed, 13 insertions(+), 3 deletions(-) > -- Best regards, Alexey Perevalov -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v3] please don't see patch set 2017-04-03 9:38 ` [PATCH v3] please don't see patch set Alexey Perevalov @ 2017-04-03 9:42 ` Alexey Perevalov 0 siblings, 0 replies; 6+ messages in thread From: Alexey Perevalov @ 2017-04-03 9:42 UTC (permalink / raw) To: Andrea Arcangeli, linux-mm; +Cc: Mike Kravetz, rppt It's all correct with commit message, something was wrong with my email client. Sorry again ). On 04/03/2017 12:38 PM, Alexey Perevalov wrote: > I'm so sorry, commit message in patch is wrong. > > I'll resend > > On 04/03/2017 12:32 PM, Alexey Perevalov wrote: >> Hi Andrea, >> >> This is third version of the patch. Modifications since previous >> versions: >> (v3 -> v2) >> - type of ptid now is __u32. As you suggested. >> >> (v2 -> v1) >> - process thread id is provided only when it was requested with >> UFFD_FEATURE_THREAD_ID bit. >> - pid from namespace is provided, so locking thread's gettid in >> namespace >> and msg.arg.pagefault.ptid will be equal. >> >> This patch is based on >> git://git.kernel.org/pub/scm/linux/kernel/git/andrea/aa.git userfault >> branch. >> HEAD commit is "userfaultfd: switch to exclusive wakeup for blocking >> reads" >> >> >> Alexey Perevalov (1): >> userfaultfd: provide pid in userfault msg >> >> fs/userfaultfd.c | 8 ++++++-- >> include/uapi/linux/userfaultfd.h | 8 +++++++- >> 2 files changed, 13 insertions(+), 3 deletions(-) >> > > -- Best regards, Alexey Perevalov -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a> ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2017-04-05 12:42 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <CGME20170403093307eucas1p2e1110dd2550426c53a7b8825efa34f99@eucas1p2.samsung.com> 2017-04-03 9:32 ` [PATCH v3] Illuminate thread id to user space Alexey Perevalov [not found] ` <CGME20170403093318eucas1p2ebd57e5e4c33707063687ccd571f67bb@eucas1p2.samsung.com> 2017-04-03 9:32 ` [PATCH v3] userfaultfd: provide pid in userfault msg Alexey Perevalov 2017-04-04 19:04 ` Andrea Arcangeli 2017-04-05 12:42 ` Alexey Perevalov 2017-04-03 9:38 ` [PATCH v3] please don't see patch set Alexey Perevalov 2017-04-03 9:42 ` Alexey Perevalov
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.