mbox series

[v5,00/15] demacro softmmu (plus tests/coverage)

Message ID 20190430165234.32272-1-alex.bennee@linaro.org
Headers show
Series demacro softmmu (plus tests/coverage) | expand

Message

Alex Bennée April 30, 2019, 4:52 p.m. UTC
Hi,

This is the latest iteration of the softmmu demacro series. The main
changes from the last submission are some updates from Richard. Some
are merged into the main demacro patch (mostly casting cleanups) and
then a series of 3 patches to out of line some of the less hot code to
keep the main access functions a reasonable size. For example:

  readelf -s aarch64-softmmu/accel/tcg/cputlb.o | ag helper |\
    ag -v atomic | ag mmu | tr -s ' ' | cut -d ' ' -f 4,9 | sort -n

Before:

  16 helper_be_ldsl_mmu
  16 helper_le_ldsl_mmu
  18 helper_be_ldsw_mmu
  18 helper_le_ldsw_mmu
  18 helper_ret_ldsb_mmu
  535 helper_ret_ldub_mmu
  556 helper_ret_ldb_cmmu
  586 helper_ret_stb_mmu
  679 helper_le_ldul_mmu
  681 helper_be_ldul_mmu
  685 helper_le_ldq_mmu
  688 helper_be_ldq_mmu
  688 helper_le_lduw_mmu
  693 helper_le_ldl_cmmu
  701 helper_le_ldq_cmmu
  701 helper_le_ldw_cmmu
  703 helper_be_ldl_cmmu
  704 helper_be_ldq_cmmu
  708 helper_be_lduw_mmu
  713 helper_be_ldw_cmmu
  943 helper_le_stw_mmu
  944 helper_le_stl_mmu
  952 helper_be_stl_mmu
  952 helper_le_stq_mmu
  959 helper_be_stw_mmu
  960 helper_be_stq_mmu

After:

  5 helper_be_ldul_mmu
  5 helper_be_lduw_mmu
  5 helper_le_ldul_mmu
  5 helper_le_lduw_mmu
  5 helper_ret_ldub_mmu
  14 helper_be_ldl_cmmu
  14 helper_be_ldw_cmmu
  14 helper_le_ldl_cmmu
  14 helper_le_ldw_cmmu
  16 helper_be_ldsl_mmu
  16 helper_le_ldsl_mmu
  18 helper_be_ldsw_mmu
  18 helper_le_ldsw_mmu
  18 helper_ret_ldsb_mmu
  783 helper_ret_stb_mmu
  785 helper_ret_ldb_cmmu
  881 helper_be_ldq_mmu
  881 helper_le_ldq_mmu
  889 helper_le_ldq_cmmu
  897 helper_be_ldq_cmmu
  1150 helper_be_stw_mmu
  1150 helper_le_stw_mmu
  1151 helper_be_stq_mmu
  1151 helper_le_stl_mmu
  1151 helper_le_stq_mmu
  1159 helper_be_stl_mmu

I've also moved the existing system memory test and made it multiarch
and added the bootstrapping for aarch64 system tests. I would like to
add support for Big Endian as well but I didn't want to delay the
posting of the series. It would also be nice to exercise the
ioread/write paths and other handling but I leave this as an exercise
for later.

There are also some minor tweaks for the code coverage reports now I'm
running with out-of-tree builds.

Alex Bennée (11):
  tests/tcg/multiarch: add support for multiarch system tests
  tests/tcg/multiarch: add hello world system test
  tests/tcg/aarch64: add system boot.S
  tests/tcg/multiarch: move the system memory test
  tests/tcg/minilib: support %c format char
  tests/tcg/multiarch: expand system memory test to cover more
  accel/tcg: demacro cputlb
  accel/tcg: remove softmmu_template.h
  Makefile: fix coverage-report reference to BUILD_DIR
  Makefile: include per-target build directories in coverage report
  Makefile.target: support per-target coverage reports

Richard Henderson (4):
  cputlb: Move TLB_RECHECK handling into load/store_helper
  cputlb: Drop attribute flatten
  cputlb: Do unaligned load recursion to outermost function
  cputlb: Do unaligned store recursion to outermost function

 Makefile                                      |   4 +-
 Makefile.target                               |  16 +
 accel/tcg/cputlb.c                            | 626 +++++++++++++++---
 accel/tcg/softmmu_template.h                  | 454 -------------
 tests/tcg/Makefile                            |   1 +
 tests/tcg/aarch64/Makefile.softmmu-target     |  32 +
 tests/tcg/aarch64/system/boot.S               | 200 ++++++
 tests/tcg/aarch64/system/kernel.ld            |  22 +
 tests/tcg/i386/Makefile.softmmu-target        |   2 +-
 tests/tcg/i386/system/memory.c                | 243 -------
 tests/tcg/minilib/printf.c                    |   6 +-
 .../multiarch/system/Makefile.softmmu-target  |  14 +
 tests/tcg/{i386 => multiarch}/system/hello.c  |   0
 tests/tcg/multiarch/system/memory.c           | 427 ++++++++++++
 14 files changed, 1267 insertions(+), 780 deletions(-)
 delete mode 100644 accel/tcg/softmmu_template.h
 create mode 100644 tests/tcg/aarch64/Makefile.softmmu-target
 create mode 100644 tests/tcg/aarch64/system/boot.S
 create mode 100644 tests/tcg/aarch64/system/kernel.ld
 delete mode 100644 tests/tcg/i386/system/memory.c
 create mode 100644 tests/tcg/multiarch/system/Makefile.softmmu-target
 rename tests/tcg/{i386 => multiarch}/system/hello.c (100%)
 create mode 100644 tests/tcg/multiarch/system/memory.c

-- 
2.20.1

Comments

Richard Henderson May 1, 2019, 6:39 p.m. UTC | #1
On 4/30/19 9:52 AM, Alex Bennée wrote:
> I've also moved the existing system memory test and made it multiarch

> and added the bootstrapping for aarch64 system tests. I would like to

> add support for Big Endian as well but I didn't want to delay the

> posting of the series. It would also be nice to exercise the

> ioread/write paths and other handling but I leave this as an exercise

> for later.


Somewhere in there you're adding

  -chardev file,path=hello.out,id=output

but there's no corresponding use of the chardev.
Which, somehow doesn't seem to matter to your aarch64
testcase, but when I try this for alpha I truly get
no output at all.  I needed

  -serial chardev:output

to populate the file.


r~
Alex Bennée May 3, 2019, 7:28 p.m. UTC | #2
Richard Henderson <richard.henderson@linaro.org> writes:

> On 4/30/19 9:52 AM, Alex Bennée wrote:

>> I've also moved the existing system memory test and made it multiarch

>> and added the bootstrapping for aarch64 system tests. I would like to

>> add support for Big Endian as well but I didn't want to delay the

>> posting of the series. It would also be nice to exercise the

>> ioread/write paths and other handling but I leave this as an exercise

>> for later.

>

> Somewhere in there you're adding

>

>   -chardev file,path=hello.out,id=output


It's in the default runner config in tests/tcg/Makefile

> but there's no corresponding use of the chardev.

> Which, somehow doesn't seem to matter to your aarch64

> testcase,


Argh.. it's because -semihosting is different from -serial and doesn't
allow the usual redirection rules you get with a chardev..

> but when I try this for alpha I truly get

> no output at all.  I needed

>

>   -serial chardev:output


or -serial chadev,id=output?
>

> to populate the file.

>

>

> r~



--
Alex Bennée
Alex Bennée May 10, 2019, 10:36 a.m. UTC | #3
Alex Bennée <alex.bennee@linaro.org> writes:

> Hi,

>

> This is the latest iteration of the softmmu demacro series. The main

> changes from the last submission are some updates from Richard.


Ping Emilio/Mark

Would you be able to re-run your tests to check there are no other
regressions? I can then get the PR prepared for merging ;-)

> Some

> are merged into the main demacro patch (mostly casting cleanups) and

> then a series of 3 patches to out of line some of the less hot code to

> keep the main access functions a reasonable size. For example:

>

>   readelf -s aarch64-softmmu/accel/tcg/cputlb.o | ag helper |\

>     ag -v atomic | ag mmu | tr -s ' ' | cut -d ' ' -f 4,9 | sort -n

>

> Before:

>

>   16 helper_be_ldsl_mmu

>   16 helper_le_ldsl_mmu

>   18 helper_be_ldsw_mmu

>   18 helper_le_ldsw_mmu

>   18 helper_ret_ldsb_mmu

>   535 helper_ret_ldub_mmu

>   556 helper_ret_ldb_cmmu

>   586 helper_ret_stb_mmu

>   679 helper_le_ldul_mmu

>   681 helper_be_ldul_mmu

>   685 helper_le_ldq_mmu

>   688 helper_be_ldq_mmu

>   688 helper_le_lduw_mmu

>   693 helper_le_ldl_cmmu

>   701 helper_le_ldq_cmmu

>   701 helper_le_ldw_cmmu

>   703 helper_be_ldl_cmmu

>   704 helper_be_ldq_cmmu

>   708 helper_be_lduw_mmu

>   713 helper_be_ldw_cmmu

>   943 helper_le_stw_mmu

>   944 helper_le_stl_mmu

>   952 helper_be_stl_mmu

>   952 helper_le_stq_mmu

>   959 helper_be_stw_mmu

>   960 helper_be_stq_mmu

>

> After:

>

>   5 helper_be_ldul_mmu

>   5 helper_be_lduw_mmu

>   5 helper_le_ldul_mmu

>   5 helper_le_lduw_mmu

>   5 helper_ret_ldub_mmu

>   14 helper_be_ldl_cmmu

>   14 helper_be_ldw_cmmu

>   14 helper_le_ldl_cmmu

>   14 helper_le_ldw_cmmu

>   16 helper_be_ldsl_mmu

>   16 helper_le_ldsl_mmu

>   18 helper_be_ldsw_mmu

>   18 helper_le_ldsw_mmu

>   18 helper_ret_ldsb_mmu

>   783 helper_ret_stb_mmu

>   785 helper_ret_ldb_cmmu

>   881 helper_be_ldq_mmu

>   881 helper_le_ldq_mmu

>   889 helper_le_ldq_cmmu

>   897 helper_be_ldq_cmmu

>   1150 helper_be_stw_mmu

>   1150 helper_le_stw_mmu

>   1151 helper_be_stq_mmu

>   1151 helper_le_stl_mmu

>   1151 helper_le_stq_mmu

>   1159 helper_be_stl_mmu

>

> I've also moved the existing system memory test and made it multiarch

> and added the bootstrapping for aarch64 system tests. I would like to

> add support for Big Endian as well but I didn't want to delay the

> posting of the series. It would also be nice to exercise the

> ioread/write paths and other handling but I leave this as an exercise

> for later.

>

> There are also some minor tweaks for the code coverage reports now I'm

> running with out-of-tree builds.

>

> Alex Bennée (11):

>   tests/tcg/multiarch: add support for multiarch system tests

>   tests/tcg/multiarch: add hello world system test

>   tests/tcg/aarch64: add system boot.S

>   tests/tcg/multiarch: move the system memory test

>   tests/tcg/minilib: support %c format char

>   tests/tcg/multiarch: expand system memory test to cover more

>   accel/tcg: demacro cputlb

>   accel/tcg: remove softmmu_template.h

>   Makefile: fix coverage-report reference to BUILD_DIR

>   Makefile: include per-target build directories in coverage report

>   Makefile.target: support per-target coverage reports

>

> Richard Henderson (4):

>   cputlb: Move TLB_RECHECK handling into load/store_helper

>   cputlb: Drop attribute flatten

>   cputlb: Do unaligned load recursion to outermost function

>   cputlb: Do unaligned store recursion to outermost function

>

>  Makefile                                      |   4 +-

>  Makefile.target                               |  16 +

>  accel/tcg/cputlb.c                            | 626 +++++++++++++++---

>  accel/tcg/softmmu_template.h                  | 454 -------------

>  tests/tcg/Makefile                            |   1 +

>  tests/tcg/aarch64/Makefile.softmmu-target     |  32 +

>  tests/tcg/aarch64/system/boot.S               | 200 ++++++

>  tests/tcg/aarch64/system/kernel.ld            |  22 +

>  tests/tcg/i386/Makefile.softmmu-target        |   2 +-

>  tests/tcg/i386/system/memory.c                | 243 -------

>  tests/tcg/minilib/printf.c                    |   6 +-

>  .../multiarch/system/Makefile.softmmu-target  |  14 +

>  tests/tcg/{i386 => multiarch}/system/hello.c  |   0

>  tests/tcg/multiarch/system/memory.c           | 427 ++++++++++++

>  14 files changed, 1267 insertions(+), 780 deletions(-)

>  delete mode 100644 accel/tcg/softmmu_template.h

>  create mode 100644 tests/tcg/aarch64/Makefile.softmmu-target

>  create mode 100644 tests/tcg/aarch64/system/boot.S

>  create mode 100644 tests/tcg/aarch64/system/kernel.ld

>  delete mode 100644 tests/tcg/i386/system/memory.c

>  create mode 100644 tests/tcg/multiarch/system/Makefile.softmmu-target

>  rename tests/tcg/{i386 => multiarch}/system/hello.c (100%)

>  create mode 100644 tests/tcg/multiarch/system/memory.c



--
Alex Bennée
Mark Cave-Ayland May 10, 2019, 2:55 p.m. UTC | #4
On 10/05/2019 11:36, Alex Bennée wrote:

> Alex Bennée <alex.bennee@linaro.org> writes:

> 

>> Hi,

>>

>> This is the latest iteration of the softmmu demacro series. The main

>> changes from the last submission are some updates from Richard.

> 

> Ping Emilio/Mark

> 

> Would you be able to re-run your tests to check there are no other

> regressions? I can then get the PR prepared for merging ;-)


Hi Alex,

Sorry for the delay - I've run this through my complete set of PPC/SPARC32/SPARC64
test images and no regressions as far as I can see with this latest version.

Tested-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>



ATB,

Mark.
Emilio Cota May 10, 2019, 5:01 p.m. UTC | #5
On Fri, May 10, 2019 at 11:36:33 +0100, Alex Bennée wrote:
> Ping Emilio/Mark

> 

> Would you be able to re-run your tests to check there are no other

> regressions? I can then get the PR prepared for merging ;-)


I'll try to run some tests next week, but I am not sure I'll
have time to do so. If I were you I'd go ahead with the PR --
it's best to have these type of changes merged early in the
development cycle.

Thanks,

		Emilio