[TCWG-1424] Investigation into profile and size optimisations
- Completed the pass and got it working on both the old and new pass managers
- Spent quite a bit of time trying to understand how llvm classifies
hot and cold functions, a lot of the details are not documented well
or at all.
- Found another problem with --pgo and lnt when the exec-multisample
option is used. I've applied a local fix to stop the extra runs from
triggering profile collection
- Upstream lnt doesn't seem to collect code size information for a
benchmarks-only run, wrote a script to measure and inject it back.
- Got some benchmark figures on the pass. Difficult to interpret as I
suspect that too many of the benchmarks are too small to give useful
results. There seemed to be some huge regressions when a critical
function stopped getting inlined, but overall performance was
comparable. I need to find some better benchmarks and learn how to
make sense of results.
[TCWG-1368] Buildbot failure investigation
Decided to take a look as an exercise in using the packet.net machines.
Some libfuzzer tests are hanging or taking an extremely long time to
run on aarch64. Reproduced on one of TCWGs packet.net machines. At
early stage of investigation right now as there doesn't seem to be any
obvious answers or easily available diagnostics.
Progress:
* VIRT-65 [QEMU upstream maintainership]
+ code review in preparation for 3.0 softfreeze next week:
- PMU emulation improvements
- last round of SVE patches
- i.mx minor code cleanups
- put 'address' annotations into DTB node names
- virtualization extension support in GICv2 emulation
+ sent two target-arm pull requests
+ bug investigation: the small-MPU-regions patchset had a bug which
broke an m68k test image
+ handling lots of pull requests from everybody else
thanks
-- PMM
=== Work done during this 2.5day week ===
* 2.5 day off to take care of my sick son
* stack-protector failure on GCC ARM: more testing needed
+ submitted CVE ID request -> will be known as CVE-2018-12886 once published
+ start testing
* Continue work on DSGHACK-25 (Support arithmetic on FileCheck regex variable)
* Misc improvement to Linaro TCWG infrastructure
=== Plan for week 27 ===
* finish testing of stack protector bug fix and submit patch for review
* DSGHACK-25 (Support arithmetic on FileCheck regex variable): finish patch
o GNU releases
* 6.4 and 7.3 2018.05 deployed
o LLVM
* First prototype implemented for ARM mode
* Working on more cases to handle
* Investigating potential issues w/r to pass ordering
o Misc
* Various meetings and discussions.
[VIRT-198 # QEMU: SVE Emulation Support ]
Implemented FCADD, FCMLA, SDOT, UDOT.
Posted v5 patch set.
[VIRT-210 # SVE first-fault and no-fault loads ]
Implemented for user-only.
Posted an RFC for using a rwlock instead of a mutex to
protect from mmap changes. Emilio Cota wants perf numbers.
Rebased previous glibc sve string patches to align with
the cortex-strings work reviewed by Richard Sandiford.
Found that strrchr fails with glibc's testsuite even though
it didn't work cortex-strings' testsuite.
Found that it would *really* help to have a gdb that understands
the new sve registers, especially predicates. Found that some
sve support is now upstream in gdb. Added some support to the
qemu gdbstub, but so far it just crashes gdb.
[Upstream]
Patch review; the big tickets being SVE RISU and nanoMIPS.
r~
SVE Support ([VIRT-198])
========================
- spin next version of CNT{VCT|FRQ}_EL0 from user-space Message-Id:
<20180518114424.18054-1-alex.bennee(a)linaro.org> with ID regs :todo
- the HPC guys hit this in their test setups
[VIRT-198] https://projects.linaro.org/browse/VIRT-198
RISU Support for SVE ([VIRT-199])
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Investigated some weirdness in SVE traces
- didn't figure out what was happening :-/
- but did generate a new "clean" set of tests that pass repeat runs
- posted {RISU PATCH v4 00/22} ARM SVE support for RISU Message-Id:
<20180622141205.16306-1-alex.bennee(a)linaro.org>
- support load/store memory instructions from ASL :todo
- awaiting legal clearance from ARM to publish script
[VIRT-199] https://projects.linaro.org/browse/VIRT-199
SVE Reviews
~~~~~~~~~~~
Upstream Work ([VIRT-109])
==========================
- posted {RFC PATCH 0/5} Tweak code coverage reporting Message-Id:
<20180620132032.12952-1-alex.bennee(a)linaro.org>
- found a bug with gcov + linux-user
- build a [hacky fix] will include in next patch series
[VIRT-109] https://projects.linaro.org/browse/VIRT-109
[hacky fix]
https://github.com/stsquad/qemu/commit/a15577f8a6629f9924d2671a82f0b9801351…
Fixing up tests/tcg
~~~~~~~~~~~~~~~~~~~
- sent {PULL 00/56} add check-tcg and associated machinery Message-Id:
<20180619154435.18898-1-alex.bennee(a)linaro.org>
- sent {PULL v2 00/57} add check-tcg and associated machinery
Message-Id: <20180621062605.941-1-alex.bennee(a)linaro.org>
- spent some time digging into build failures in pm215's merge tests
KVM CI Loop ([VIRT-2])
======================
- need to sync-up on the current state of this work :todo
- spoke with LAVA team about build status and build button
- now have a qa-reports account to submit LAVA jobs via
[VIRT-2] https://projects.linaro.org/browse/VIRT-2
[our wiki] https://wiki.linaro.org/Core/Virtualization
Completed Reviews [1/1]
=======================
{PATCH v2 00/13} iommu: support txattrs, support TCG execution, implement TZ MPC
Message-Id: <20180604152941.20374-10-peter.maydell(a)linaro.org>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- CLOSING NOTE [2018-06-14 Thu 19:27]
Looks good.
Absences
========
- YVR18 Connect (17th-21st September 2018)
- KVM Forum 2018 (24th-26th October 2018)
Current Review Queue
====================
* {Qemu-devel} {PATCH v5 00/35} target/arm SVE patches
Message-Id: <20180621015359.12018-1-richard.henderson(a)linaro.org>
* {PATCH v4 00/14} fp-test + hardfloat
Message-Id: <1528768140-17894-1-git-send-email-cota(a)braap.org>
* {PATCH 0/4} KVM: arm64: FPSIMD/SVE fixes for 4.17
Message-Id: <1528976039-25826-1-git-send-email-Dave.Martin(a)arm.com>
* {RFC PATCH 00/12} tests/tcg: Add TriCore tests
Message-Id: <20180501142222.19154-1-kbastian(a)mail.uni-paderborn.de>
* {PATCH v4 00/19} reverse debugging
Message-Id: <20180528071332.9424.27343.stgit@pasha-VirtualBox>
* {RFC PATCH 00/16} KVM: arm64: Initial support for SVE guests
Message-Id: <1529593060-542-1-git-send-email-Dave.Martin(a)arm.com>
--
Alex Bennée
Progress:
* VIRT-65 [QEMU upstream maintainership]
+ lots of code review (including patchsets supporting up to
512 CPUs and lots of PCI devices for KVM virt)
+ put together another target-arm pullreq
* VIRT-164 [improve Cortex-M emulation]
+ Got small-MPU-regions working for read/write; patches sent for review
+ MPC support patchset is now in master
Lots of meetings this week; clearly the stars have aligned.
thanks
-- PMM
[TCWG-1424] Profile guided information code size investigation.
- Wrote up initial findings in Jira
- Have written a pass that works with both the new and old pass
manager that I can use to selectively add size optimisation attributes
to functions.
- Spent way too much time trying to work out where to put the pass in
both the old and new pass manager.
-- I now understand why the new pass manager is required to get the
most benefits of profile feedback.
-- I now understand a bit better some of the frustrations of the old
pass manager.
-- I can see why the new pass manager isn't quite ready yet.
- Fixed up, I think, -fprofile-instr-generate in the new pass manager.
I didn't realise that were two separate instrumentation methods as
-fprofile-generate is subtly different.
Misc:
- Updated state of sanitizer tests on Arm and AArch64 to enable a PR
to be closed.
=== Work done during this week ===
* stack-protector failure on GCC ARM: more testing needed
+ rework to introduce new standard pattern including guard's address
computation and make pattern opaque until after register allocation
+ fill in form for new CVE ID and ask feedback on CVE description
* Resume work on extending FileCheck to allow variable with arithmetic
expression
+ created TCWG-1428 to track this work
* Tried to fix LD_LIBRARY_PATH issue with depot build of GNU Arm
Embedded Toolchain
-> need to talk to someone who know better depot module recipes
* Misc:
+ Arm meetings
+ Linaro syncs
+ 1.5 day spent on IT issue (personal investigation to help IT,
blocked on broken system after some IT attempts to solve it)
-> issue finally fully resolved
=== Plan for Linaro week 26 ===
* Do extended testing of stack protector bug fix
* TCWG-1428 (Support arithmetic on FileCheck regex variable): finish patch