Message ID | 20200626210917.358969-2-brendanhiggins@google.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v5,01/12] vmlinux.lds.h: add linker section for KUnit test suites | expand |
On Fri, Jun 26, 2020 at 02:09:06PM -0700, Brendan Higgins wrote: > Add a linker section where KUnit can put references to its test suites. > This patch is the first step in transitioning to dispatching all KUnit > tests from a centralized executor rather than having each as its own > separate late_initcall. > > Co-developed-by: Iurii Zaikin <yzaikin@google.com> > Signed-off-by: Iurii Zaikin <yzaikin@google.com> > Signed-off-by: Brendan Higgins <brendanhiggins@google.com> > Reviewed-by: Stephen Boyd <sboyd@kernel.org> > --- > include/asm-generic/vmlinux.lds.h | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h > index db600ef218d7d..4f9b036fc9616 100644 > --- a/include/asm-generic/vmlinux.lds.h > +++ b/include/asm-generic/vmlinux.lds.h > @@ -881,6 +881,13 @@ > KEEP(*(.con_initcall.init)) \ > __con_initcall_end = .; > > +/* Alignment must be consistent with (kunit_suite *) in include/kunit/test.h */ Nit on naming: > +#define KUNIT_TEST_SUITES \ I would call this KUNIT_TABLE to maintain the same names as other things of this nature. > + . = ALIGN(8); \ > + __kunit_suites_start = .; \ > + KEEP(*(.kunit_test_suites)) \ > + __kunit_suites_end = .; > + > #ifdef CONFIG_BLK_DEV_INITRD > #define INIT_RAM_FS \ > . = ALIGN(4); \ > @@ -1056,6 +1063,7 @@ > INIT_CALLS \ > CON_INITCALL \ > INIT_RAM_FS \ > + KUNIT_TEST_SUITES \ > } Nack: this must be in INIT_DATA, not in INIT_DATA_SECTION. Not all architectures use the INIT_DATA_SECTION macro (e.g. arm64), but everything uses INIT_DATA.
On Fri, Jun 26, 2020 at 2:20 PM Kees Cook <keescook@chromium.org> wrote: > > On Fri, Jun 26, 2020 at 02:09:06PM -0700, Brendan Higgins wrote: > > Add a linker section where KUnit can put references to its test suites. > > This patch is the first step in transitioning to dispatching all KUnit > > tests from a centralized executor rather than having each as its own > > separate late_initcall. > > > > Co-developed-by: Iurii Zaikin <yzaikin@google.com> > > Signed-off-by: Iurii Zaikin <yzaikin@google.com> > > Signed-off-by: Brendan Higgins <brendanhiggins@google.com> > > Reviewed-by: Stephen Boyd <sboyd@kernel.org> > > --- > > include/asm-generic/vmlinux.lds.h | 8 ++++++++ > > 1 file changed, 8 insertions(+) > > > > diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h > > index db600ef218d7d..4f9b036fc9616 100644 > > --- a/include/asm-generic/vmlinux.lds.h > > +++ b/include/asm-generic/vmlinux.lds.h > > @@ -881,6 +881,13 @@ > > KEEP(*(.con_initcall.init)) \ > > __con_initcall_end = .; > > > > +/* Alignment must be consistent with (kunit_suite *) in include/kunit/test.h */ > > Nit on naming: > > > +#define KUNIT_TEST_SUITES \ > > I would call this KUNIT_TABLE to maintain the same names as other things > of this nature. > > > + . = ALIGN(8); \ > > + __kunit_suites_start = .; \ > > + KEEP(*(.kunit_test_suites)) \ > > + __kunit_suites_end = .; > > + > > #ifdef CONFIG_BLK_DEV_INITRD > > #define INIT_RAM_FS \ > > . = ALIGN(4); \ > > @@ -1056,6 +1063,7 @@ > > INIT_CALLS \ > > CON_INITCALL \ > > INIT_RAM_FS \ > > + KUNIT_TEST_SUITES \ > > } > > Nack: this must be in INIT_DATA, not in INIT_DATA_SECTION. Not all > architectures use the INIT_DATA_SECTION macro (e.g. arm64), but everything > uses INIT_DATA. Oh, maybe that would eliminate the need for the other linkerscript patches? That would be nice. Alright, will fix.
On Fri, Jun 26, 2020 at 02:22:11PM -0700, Brendan Higgins wrote: > On Fri, Jun 26, 2020 at 2:20 PM Kees Cook <keescook@chromium.org> wrote: > > > > On Fri, Jun 26, 2020 at 02:09:06PM -0700, Brendan Higgins wrote: > > > Add a linker section where KUnit can put references to its test suites. > > > This patch is the first step in transitioning to dispatching all KUnit > > > tests from a centralized executor rather than having each as its own > > > separate late_initcall. > > > > > > Co-developed-by: Iurii Zaikin <yzaikin@google.com> > > > Signed-off-by: Iurii Zaikin <yzaikin@google.com> > > > Signed-off-by: Brendan Higgins <brendanhiggins@google.com> > > > Reviewed-by: Stephen Boyd <sboyd@kernel.org> > > > --- > > > include/asm-generic/vmlinux.lds.h | 8 ++++++++ > > > 1 file changed, 8 insertions(+) > > > > > > diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h > > > index db600ef218d7d..4f9b036fc9616 100644 > > > --- a/include/asm-generic/vmlinux.lds.h > > > +++ b/include/asm-generic/vmlinux.lds.h > > > @@ -881,6 +881,13 @@ > > > KEEP(*(.con_initcall.init)) \ > > > __con_initcall_end = .; > > > > > > +/* Alignment must be consistent with (kunit_suite *) in include/kunit/test.h */ > > > > Nit on naming: > > > > > +#define KUNIT_TEST_SUITES \ > > > > I would call this KUNIT_TABLE to maintain the same names as other things > > of this nature. > > > > > + . = ALIGN(8); \ > > > + __kunit_suites_start = .; \ > > > + KEEP(*(.kunit_test_suites)) \ > > > + __kunit_suites_end = .; > > > + > > > #ifdef CONFIG_BLK_DEV_INITRD > > > #define INIT_RAM_FS \ > > > . = ALIGN(4); \ > > > @@ -1056,6 +1063,7 @@ > > > INIT_CALLS \ > > > CON_INITCALL \ > > > INIT_RAM_FS \ > > > + KUNIT_TEST_SUITES \ > > > } > > > > Nack: this must be in INIT_DATA, not in INIT_DATA_SECTION. Not all > > architectures use the INIT_DATA_SECTION macro (e.g. arm64), but everything > > uses INIT_DATA. > > Oh, maybe that would eliminate the need for the other linkerscript > patches? That would be nice. Curious, did changing it as Kees suggest fix it for m68k? Luis
On Tue, Jul 7, 2020 at 9:31 PM Luis Chamberlain <mcgrof@kernel.org> wrote: > > On Fri, Jun 26, 2020 at 02:22:11PM -0700, Brendan Higgins wrote: > > On Fri, Jun 26, 2020 at 2:20 PM Kees Cook <keescook@chromium.org> wrote: > > > > > > On Fri, Jun 26, 2020 at 02:09:06PM -0700, Brendan Higgins wrote: > > > > Add a linker section where KUnit can put references to its test suites. > > > > This patch is the first step in transitioning to dispatching all KUnit > > > > tests from a centralized executor rather than having each as its own > > > > separate late_initcall. > > > > > > > > Co-developed-by: Iurii Zaikin <yzaikin@google.com> > > > > Signed-off-by: Iurii Zaikin <yzaikin@google.com> > > > > Signed-off-by: Brendan Higgins <brendanhiggins@google.com> > > > > Reviewed-by: Stephen Boyd <sboyd@kernel.org> > > > > --- > > > > include/asm-generic/vmlinux.lds.h | 8 ++++++++ > > > > 1 file changed, 8 insertions(+) > > > > > > > > diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h > > > > index db600ef218d7d..4f9b036fc9616 100644 > > > > --- a/include/asm-generic/vmlinux.lds.h > > > > +++ b/include/asm-generic/vmlinux.lds.h > > > > @@ -881,6 +881,13 @@ > > > > KEEP(*(.con_initcall.init)) \ > > > > __con_initcall_end = .; > > > > > > > > +/* Alignment must be consistent with (kunit_suite *) in include/kunit/test.h */ > > > > > > Nit on naming: > > > > > > > +#define KUNIT_TEST_SUITES \ > > > > > > I would call this KUNIT_TABLE to maintain the same names as other things > > > of this nature. > > > > > > > + . = ALIGN(8); \ > > > > + __kunit_suites_start = .; \ > > > > + KEEP(*(.kunit_test_suites)) \ > > > > + __kunit_suites_end = .; > > > > + > > > > #ifdef CONFIG_BLK_DEV_INITRD > > > > #define INIT_RAM_FS \ > > > > . = ALIGN(4); \ > > > > @@ -1056,6 +1063,7 @@ > > > > INIT_CALLS \ > > > > CON_INITCALL \ > > > > INIT_RAM_FS \ > > > > + KUNIT_TEST_SUITES \ > > > > } > > > > > > Nack: this must be in INIT_DATA, not in INIT_DATA_SECTION. Not all > > > architectures use the INIT_DATA_SECTION macro (e.g. arm64), but everything > > > uses INIT_DATA. > > > > Oh, maybe that would eliminate the need for the other linkerscript > > patches? That would be nice. Sorry for the delayed response. I got pulled into some other things. > Curious, did changing it as Kees suggest fix it for m68k? It did! There are still some architectures I cannot test due to a lack of GCC or QEMU support, but it seems to work on everything else now.
diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h index db600ef218d7d..4f9b036fc9616 100644 --- a/include/asm-generic/vmlinux.lds.h +++ b/include/asm-generic/vmlinux.lds.h @@ -881,6 +881,13 @@ KEEP(*(.con_initcall.init)) \ __con_initcall_end = .; +/* Alignment must be consistent with (kunit_suite *) in include/kunit/test.h */ +#define KUNIT_TEST_SUITES \ + . = ALIGN(8); \ + __kunit_suites_start = .; \ + KEEP(*(.kunit_test_suites)) \ + __kunit_suites_end = .; + #ifdef CONFIG_BLK_DEV_INITRD #define INIT_RAM_FS \ . = ALIGN(4); \ @@ -1056,6 +1063,7 @@ INIT_CALLS \ CON_INITCALL \ INIT_RAM_FS \ + KUNIT_TEST_SUITES \ } #define BSS_SECTION(sbss_align, bss_align, stop_align) \