From: Sean Christopherson <seanjc@google.com>
To: Gavin Shan <gshan@redhat.com>
Cc: shan.gavin@gmail.com, maz@kernel.org,
linux-kernel@vger.kernel.org, oliver.upton@linux.dev,
linux-kselftest@vger.kernel.org, pbonzini@redhat.com,
shuah@kernel.org, kvmarm@lists.cs.columbia.edu
Subject: Re: [PATCH v3] KVM: selftests: Fix target thread to be migrated in rseq_test
Date: Mon, 18 Jul 2022 23:46:44 +0000 [thread overview]
Message-ID: <YtXw5DKI7z9s1TA6@google.com> (raw)
In-Reply-To: <20220719013540.3477946-1-gshan@redhat.com>
On Tue, Jul 19, 2022, Gavin Shan wrote:
> ---
> v3: Improved changelog (Oliver Upon)
Sorry I didn't catch v3, I saw that you waited but just didn't get to this earlier :-/
> ---
> tools/testing/selftests/kvm/rseq_test.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/tools/testing/selftests/kvm/rseq_test.c b/tools/testing/selftests/kvm/rseq_test.c
> index 4158da0da2bb..c83ac7b467f8 100644
> --- a/tools/testing/selftests/kvm/rseq_test.c
> +++ b/tools/testing/selftests/kvm/rseq_test.c
> @@ -38,6 +38,7 @@ static __thread volatile struct rseq __rseq = {
> */
> #define NR_TASK_MIGRATIONS 100000
>
> +static pid_t rseq_tid;
> static pthread_t migration_thread;
> static cpu_set_t possible_mask;
> static int min_cpu, max_cpu;
> @@ -106,7 +107,8 @@ static void *migration_worker(void *ign)
Pass the target TID to the worker, then there's no need to use a global and no
chance of consuming rseq_tid "uninitialized". The casting to convert gettid() to
a "void *" is annoying, but not the end of the world.
> * stable, i.e. while changing affinity is in-progress.
> */
> smp_wmb();
> - r = sched_setaffinity(0, sizeof(allowed_mask), &allowed_mask);
> + r = sched_setaffinity(rseq_tid, sizeof(allowed_mask),
> + &allowed_mask);
Eh, let this poke out, don't think it's worth wrapping here.
E.g.
---
tools/testing/selftests/kvm/rseq_test.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/tools/testing/selftests/kvm/rseq_test.c b/tools/testing/selftests/kvm/rseq_test.c
index aba7be178dab..a54d4d05a058 100644
--- a/tools/testing/selftests/kvm/rseq_test.c
+++ b/tools/testing/selftests/kvm/rseq_test.c
@@ -80,8 +80,9 @@ static int next_cpu(int cpu)
return cpu;
}
-static void *migration_worker(void *ign)
+static void *migration_worker(void *__rseq_tid)
{
+ pid_t rseq_tid = (pid_t)(unsigned long)__rseq_tid;
cpu_set_t allowed_mask;
int r, i, cpu;
@@ -104,7 +105,7 @@ static void *migration_worker(void *ign)
* stable, i.e. while changing affinity is in-progress.
*/
smp_wmb();
- r = sched_setaffinity(0, sizeof(allowed_mask), &allowed_mask);
+ r = sched_setaffinity(rseq_tid, sizeof(allowed_mask), &allowed_mask);
TEST_ASSERT(!r, "sched_setaffinity failed, errno = %d (%s)",
errno, strerror(errno));
smp_wmb();
@@ -227,7 +228,8 @@ int main(int argc, char *argv[])
vm = vm_create_with_one_vcpu(&vcpu, guest_code);
ucall_init(vm, NULL);
- pthread_create(&migration_thread, NULL, migration_worker, 0);
+ pthread_create(&migration_thread, NULL, migration_worker,
+ (void *)(unsigned long)gettid());
for (i = 0; !done; i++) {
vcpu_run(vcpu);
base-commit: ad6cb756bb497997032df2bda7cbdff076e4a66a
--
_______________________________________________
kvmarm mailing list
kvmarm@lists.cs.columbia.edu
https://lists.cs.columbia.edu/mailman/listinfo/kvmarm
WARNING: multiple messages have this Message-ID (diff)
From: Sean Christopherson <seanjc@google.com>
To: Gavin Shan <gshan@redhat.com>
Cc: kvmarm@lists.cs.columbia.edu, linux-kernel@vger.kernel.org,
linux-kselftest@vger.kernel.org, oliver.upton@linux.dev,
shuah@kernel.org, maz@kernel.org, pbonzini@redhat.com,
shan.gavin@gmail.com
Subject: Re: [PATCH v3] KVM: selftests: Fix target thread to be migrated in rseq_test
Date: Mon, 18 Jul 2022 23:46:44 +0000 [thread overview]
Message-ID: <YtXw5DKI7z9s1TA6@google.com> (raw)
In-Reply-To: <20220719013540.3477946-1-gshan@redhat.com>
On Tue, Jul 19, 2022, Gavin Shan wrote:
> ---
> v3: Improved changelog (Oliver Upon)
Sorry I didn't catch v3, I saw that you waited but just didn't get to this earlier :-/
> ---
> tools/testing/selftests/kvm/rseq_test.c | 5 ++++-
> 1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/tools/testing/selftests/kvm/rseq_test.c b/tools/testing/selftests/kvm/rseq_test.c
> index 4158da0da2bb..c83ac7b467f8 100644
> --- a/tools/testing/selftests/kvm/rseq_test.c
> +++ b/tools/testing/selftests/kvm/rseq_test.c
> @@ -38,6 +38,7 @@ static __thread volatile struct rseq __rseq = {
> */
> #define NR_TASK_MIGRATIONS 100000
>
> +static pid_t rseq_tid;
> static pthread_t migration_thread;
> static cpu_set_t possible_mask;
> static int min_cpu, max_cpu;
> @@ -106,7 +107,8 @@ static void *migration_worker(void *ign)
Pass the target TID to the worker, then there's no need to use a global and no
chance of consuming rseq_tid "uninitialized". The casting to convert gettid() to
a "void *" is annoying, but not the end of the world.
> * stable, i.e. while changing affinity is in-progress.
> */
> smp_wmb();
> - r = sched_setaffinity(0, sizeof(allowed_mask), &allowed_mask);
> + r = sched_setaffinity(rseq_tid, sizeof(allowed_mask),
> + &allowed_mask);
Eh, let this poke out, don't think it's worth wrapping here.
E.g.
---
tools/testing/selftests/kvm/rseq_test.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/tools/testing/selftests/kvm/rseq_test.c b/tools/testing/selftests/kvm/rseq_test.c
index aba7be178dab..a54d4d05a058 100644
--- a/tools/testing/selftests/kvm/rseq_test.c
+++ b/tools/testing/selftests/kvm/rseq_test.c
@@ -80,8 +80,9 @@ static int next_cpu(int cpu)
return cpu;
}
-static void *migration_worker(void *ign)
+static void *migration_worker(void *__rseq_tid)
{
+ pid_t rseq_tid = (pid_t)(unsigned long)__rseq_tid;
cpu_set_t allowed_mask;
int r, i, cpu;
@@ -104,7 +105,7 @@ static void *migration_worker(void *ign)
* stable, i.e. while changing affinity is in-progress.
*/
smp_wmb();
- r = sched_setaffinity(0, sizeof(allowed_mask), &allowed_mask);
+ r = sched_setaffinity(rseq_tid, sizeof(allowed_mask), &allowed_mask);
TEST_ASSERT(!r, "sched_setaffinity failed, errno = %d (%s)",
errno, strerror(errno));
smp_wmb();
@@ -227,7 +228,8 @@ int main(int argc, char *argv[])
vm = vm_create_with_one_vcpu(&vcpu, guest_code);
ucall_init(vm, NULL);
- pthread_create(&migration_thread, NULL, migration_worker, 0);
+ pthread_create(&migration_thread, NULL, migration_worker,
+ (void *)(unsigned long)gettid());
for (i = 0; !done; i++) {
vcpu_run(vcpu);
base-commit: ad6cb756bb497997032df2bda7cbdff076e4a66a
--
next prev parent reply other threads:[~2022-07-18 23:46 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-19 1:35 [PATCH v3] KVM: selftests: Fix target thread to be migrated in rseq_test Gavin Shan
2022-07-19 1:35 ` Gavin Shan
2022-07-18 23:46 ` Sean Christopherson [this message]
2022-07-18 23:46 ` Sean Christopherson
2022-07-19 2:13 ` Gavin Shan
2022-07-19 2:13 ` Gavin Shan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YtXw5DKI7z9s1TA6@google.com \
--to=seanjc@google.com \
--cc=gshan@redhat.com \
--cc=kvmarm@lists.cs.columbia.edu \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=maz@kernel.org \
--cc=oliver.upton@linux.dev \
--cc=pbonzini@redhat.com \
--cc=shan.gavin@gmail.com \
--cc=shuah@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.