All of lore.kernel.org
 help / color / mirror / Atom feed
From: Petr Vorel <pvorel@suse.cz>
To: Richard Palethorpe <rpalethorpe@suse.com>
Cc: ltp@lists.linux.it
Subject: Re: [LTP] [PATCH v2] getcpu01: Reinstate node_id test
Date: Tue, 13 Dec 2022 10:53:00 +0100	[thread overview]
Message-ID: <Y5hLfAN7NCvsKmNk@pevik> (raw)
In-Reply-To: <20221213094427.32743-1-rpalethorpe@suse.com>

Hi Xu,

> Presently the node_id is only checked on i386 and it is broken. The
> sched_getcpu call was substituted for getcpu when
> available. sched_getcpu does not have the node_id parameter, it's not
> the same thing as getcpu.

> Also we can check the node_id on any platform which has NUMA. Which
> includes more than just x86.

> Signed-off-by: Richard Palethorpe <rpalethorpe@suse.com>
> Cc: Cyril Hrubis <chrubis@suse.cz>
> ---

> V2:
> * Removed all the ifdefs
> * Use libc getcpu when available
> * Remove kernel version check

>  configure.ac                                |  1 +
>  include/lapi/sched.h                        |  7 +++++
>  testcases/kernel/syscalls/getcpu/getcpu01.c | 35 ++-------------------
>  3 files changed, 11 insertions(+), 32 deletions(-)

> diff --git a/configure.ac b/configure.ac
> index e9b15c7f7..1ab7cc60d 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -101,6 +101,7 @@ AC_CHECK_FUNCS_ONCE([ \
>      fstatat \
>      getauxval \
>      getcontext \
> +    getcpu \
>      getdents \
>      getdents64 \
>      io_pgetevents \
> diff --git a/include/lapi/sched.h b/include/lapi/sched.h
> index 1d22a9d7e..1065665d1 100644
> --- a/include/lapi/sched.h
> +++ b/include/lapi/sched.h
> @@ -70,6 +70,13 @@ static inline void clone3_supported_by_kernel(void)
>  	}
>  }

> +#ifndef HAVE_GETCPU
> +static inline int getcpu(unsigned *cpu, unsigned *node)
> +{
> +	return tst_syscall(__NR_getcpu, cpu, node, NULL);
> +}
> +#endif
> +
>  #ifndef SCHED_DEADLINE
>  # define SCHED_DEADLINE	6
>  #endif
> diff --git a/testcases/kernel/syscalls/getcpu/getcpu01.c b/testcases/kernel/syscalls/getcpu/getcpu01.c
> index fcc273e29..f6fcc4fc1 100644
> --- a/testcases/kernel/syscalls/getcpu/getcpu01.c
> +++ b/testcases/kernel/syscalls/getcpu/getcpu01.c
> @@ -11,26 +11,12 @@
>  #define _GNU_SOURCE
>  #include <dirent.h>
>  #include <errno.h>
> -#include <sched.h>
>  #include <stdio.h>
>  #include <stdlib.h>
>  #include <sys/types.h>
> -#include "lapi/syscalls.h"
> -#include "lapi/cpuset.h"
>  #include "tst_test.h"
> -#include "config.h"
> -
> -static inline int get_cpu(unsigned *cpu_id,
> -			  unsigned *node_id LTP_ATTRIBUTE_UNUSED,
> -			  void *cache_struct LTP_ATTRIBUTE_UNUSED)
> -{
> -#ifndef HAVE_SCHED_GETCPU
> -	return tst_syscall(__NR_getcpu, cpu_id, node_id, cache_struct);
> -#else
> -	*cpu_id = sched_getcpu();
> -#endif
> -	return 0;
> -}
> +#include "lapi/cpuset.h"
> +#include "lapi/sched.h"

>  static unsigned int max_cpuid(size_t size, cpu_set_t * set)
>  {
> @@ -78,7 +64,6 @@ realloc:
>  	return cpu_max;
>  }

> -#ifdef __i386__
>  static unsigned int get_nodeid(unsigned int cpu_id)
>  {
>  	DIR *directory_parent, *directory_node;
> @@ -119,33 +104,26 @@ static unsigned int get_nodeid(unsigned int cpu_id)
>  	}
>  	return node_id;
>  }
> -#endif

>  static void run(void)
>  {
>  	unsigned int cpu_id, node_id = 0;
>  	unsigned int cpu_set;
> -#ifdef __i386__
>  	unsigned int node_set;
> -#endif

>  	cpu_set = set_cpu_affinity();
> -#ifdef __i386__
>  	node_set = get_nodeid(cpu_set);
> -#endif

> -	TEST(get_cpu(&cpu_id, &node_id, NULL));
> +	TEST(getcpu(&cpu_id, &node_id));
>  	if (TST_RET == 0) {
>  		if (cpu_id != cpu_set)
>  			tst_res(TFAIL, "getcpu() returned wrong value"
>  				" expected cpuid:%d, returned value cpuid: %d",
>  				cpu_set, cpu_id);
> -#ifdef __i386__
>  		else if (node_id != node_set)
>  			tst_res(TFAIL, "getcpu() returned wrong value"
>  				" expected  node id:%d returned  node id:%d",
>  				node_set, node_id);
> -#endif
>  		else
>  			tst_res(TPASS, "getcpu() returned proper"
>  				" cpuid:%d, node id:%d", cpu_id,
> @@ -156,13 +134,6 @@ static void run(void)
>  	}
>  }

FYI Richie is touching the same code, one of you will need to rebase.
IMHO it's better to remove this in dedicated patchset (i.e. in Xu).

Kind regards,
Petr

> -static void setup(void)
> -{
> -	if (tst_kvercmp(2, 6, 20) < 0)
> -		tst_brk(TCONF, "kernel >= 2.6.20 required");
> -}
> -
>  static struct tst_test test = {
>  	.test_all = run,
> -	.setup = setup,
>  };

-- 
Mailing list info: https://lists.linux.it/listinfo/ltp

  reply	other threads:[~2022-12-13  9:53 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-13  9:44 [LTP] [PATCH v2] getcpu01: Reinstate node_id test Richard Palethorpe via ltp
2022-12-13  9:53 ` Petr Vorel [this message]
2022-12-13 10:00   ` xuyang2018.jy
2022-12-13 10:36     ` Richard Palethorpe
2022-12-13 19:02       ` Petr Vorel

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=Y5hLfAN7NCvsKmNk@pevik \
    --to=pvorel@suse.cz \
    --cc=ltp@lists.linux.it \
    --cc=rpalethorpe@suse.com \
    /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.