On 01/13/2015 03:22 AM, Anshuman Khandual wrote: > This test continuously updates the system wide DSCR default value > in the sysfs interface and makes sure that the same is reflected > across all the sysfs interfaces for each individual CPUs present > on the system. > > Signed-off-by: Anshuman Khandual <khand...@linux.vnet.ibm.com> > --- > tools/testing/selftests/powerpc/dscr/Makefile | 3 +- > .../selftests/powerpc/dscr/dscr_sysfs_test.c | 89 > ++++++++++++++++++++++ > 2 files changed, 91 insertions(+), 1 deletion(-) > create mode 100644 tools/testing/selftests/powerpc/dscr/dscr_sysfs_test.c > > diff --git a/tools/testing/selftests/powerpc/dscr/Makefile > b/tools/testing/selftests/powerpc/dscr/Makefile > index 4e84309..fada526 100644 > --- a/tools/testing/selftests/powerpc/dscr/Makefile > +++ b/tools/testing/selftests/powerpc/dscr/Makefile > @@ -1,5 +1,6 @@ > PROGS := dscr_default_test dscr_explicit_test dscr_user_test \ > - dscr_inherit_test dscr_inherit_exec_test > + dscr_inherit_test dscr_inherit_exec_test \ > + dscr_sysfs_test > > CFLAGS := $(CFLAGS) -lpthread > > diff --git a/tools/testing/selftests/powerpc/dscr/dscr_sysfs_test.c > b/tools/testing/selftests/powerpc/dscr/dscr_sysfs_test.c > new file mode 100644 > index 0000000..3d11439 > --- /dev/null > +++ b/tools/testing/selftests/powerpc/dscr/dscr_sysfs_test.c > @@ -0,0 +1,89 @@ > +/* > + * POWER Data Stream Control Register (DSCR) sysfs interface test > + * > + * This test updates to system wide DSCR default through the sysfs interface > + * and then verifies that all the CPU specific DSCR defaults are updated as > + * well verified from their sysfs interfaces. > + * > + * Copyright (C) 2015 Anshuman Khandual <khand...@linux.vnet.ibm.com>, IBM > + * > + * This program is free software; you can redistribute it and/or > + * modify it under the terms of the GNU General Public License > + * as published by the Free Software Foundation; either version > + * 2 of the License, or (at your option) any later version. > + */ > +#include "dscr.h" > + > +static int check_cpu_dscr_default(char *file, unsigned long val) > +{ > + char buf[10]; > + int fd, rc; > + > + fd = open(file, O_RDWR); > + if (fd == -1) { > + perror("open() failed\n"); > + return 1; > + } > + > + rc = read(fd, buf, sizeof(buf)); > + if (rc == -1) { > + perror("read() failed\n"); > + return 1; > + } > + close(fd); > + > + buf[rc] = '\0'; > + if (strtol(buf, NULL, 16) != val) { > + printf("DSCR match failed: %ld (system) %ld (cpu)\n", > + val, strtol(buf, NULL, 16)); > + return 1; > + } > + return 0; > +} > + > +static int check_all_cpu_dscr_defaults(unsigned long val) > +{ > + DIR *sysfs; > + struct dirent *dp; > + char file[LEN_MAX]; > + > + sysfs = opendir(CPU_PATH); > + if (!sysfs) { > + perror("opendir() failed\n"); > + return 1; > + } > + > + while ((dp = readdir(sysfs))) { > + if (!(dp->d_type & DT_DIR)) > + continue; > + if (!strcmp(dp->d_name, "cpuidle")) > + continue; > + if (!strstr(dp->d_name, "cpu")) > + continue; > + > + sprintf(file, "%s%s/dscr", CPU_PATH, dp->d_name); > + if (check_cpu_dscr_default(file, val)) > + return 1; > + } > + closedir(sysfs); > + return 0; > +} > + > +int test_body(void) > +{ > + int i, j; > + > + for (i = 0; i < COUNT; i++) { > + for (j = 0; j < DSCR_MAX; j++) { > + set_default_dscr(j); > + if (check_all_cpu_dscr_defaults(j)) > + return 1; > + } > + } > + return 0; > +} > + > +int main(int argc, char *argv[]) > +{ > + return test_harness(test_body, "dscr_sysfs_test"); > +} > Could you please add a .gitignore for powerpc targets as we discussed earlier. It can be separate patch.
Also, I would like to see the test results reports using kselftest.h - it can be separate patch in the interest of getting tests in. Acked-by: Shuah Khan <shua...@osg.samsung.com> Please take this through powerpc maintainer git. thanks, -- Shuah -- Shuah Khan Sr. Linux Kernel Developer Open Source Innovation Group Samsung Research America (Silicon Valley) shua...@osg.samsung.com | (970) 217-8978 _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev