All of lore.kernel.org
 help / color / mirror / Atom feed
* [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

* [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] 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

* 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

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.