[VIRT-327 # Richard's upstream QEMU work ]
Following up on the feedback from last week on VHE and PAN, posted a patch set
eliminating MMU_MODE*_SUFFIX, and the current limit of NB_MMU_IDX <= 12 that
went with that.
Some patch review.
r~
== Progress ==
* GCC:
- -mpure-code on v6m: waiting for approval, pinged again.
* BFD Linker:
- GNU-629: non-contiguous memory support: Looking at how to handle the
case where input sections change size during the linker iterations.
* GCC upstream validation:
- reported/checked a few issues
* misc:
- infra fixes / troubleshooting / reviews
== Next ==
* GCC: pure-code/v6m, handle feedback
* Binutils: GNU-629: support non-contiguous memory regions in linker
== Future ==
Holidays: Dec 23rd-Jan 2nd
Morello:
- Updated clang driver to use lld with --image-base rather than a linker script.
- LLD changes merged.
- Fixed up a few problems spotted by CI and a test on the examples.
- Thoughts on code sequences for an experimental descriptor based ABI.
LLD:
- Committed changes to fix branch patch and thunks interaction in
instrumented Chromium build
- Discussion about deploying BTI in large programs like Chromium with
pre-compiled objects and lots of assembler files.
Planned absences
On holiday for the rest of the decade. First day back in the office 6th January
QEMU Tooling ([VIRT-252])
=========================
Extend gdbstub for SVE ([VIRT-281])
- worked on [v3 rebase]
- added a new test case and discovered a bug in upstream gdbserver
- raised [GNU-647] to track it
[v3 rebase] https://github.com/stsquad/qemu/tree/sve-registers-v3
[GNU-647] https://projects.linaro.org/browse/GNU-647
QEMU ARMv8.1 VHE ([VIRT_263])
=============================
- bunch of review and testing of rth's v4 series
[VIRT_263] https://projects.linaro.org/browse/VIRT-263
Upstream Work ([VIRT-109])
==========================
- posted {PATCH v2 0/6} linux-user mmap debug cleanup Message-Id:
<20191206110354.GA775461(a)stefanha-x1.localdomain>
Completed Reviews [8/8]
=======================
{PATCH 0/3} iotests: Check for the possibility to create large files
Message-Id: <20191202101631.10003-1-thuth(a)redhat.com>
- CLOSING NOTE [2019-12-03 Tue 10:14]
Preparatory for the multiarch Travis tests.
Added: <2019-12-02 Mon>
{PATCH v2 0/2} Run tcg tests with tci on Travis
Message-Id: <20191128153525.2646-1-thuth(a)redhat.com>
- CLOSING NOTE [2019-12-03 Tue 10:21]
will take v3 with --disable-kvm and sparc tweaks
Added: <2019-11-28 Thu>
{PATCH 0/2} flush CPU TB cache in breakpoint_invalidate
Message-Id: <20191127220602.10827-1-jcmvbkbc(a)gmail.com>
- CLOSING NOTE [2019-12-03 Tue 11:20]
Needs a slightly neater solution than always flushing everything.
Added: <2019-11-28 Thu>
{PATCH 0/1} tests/vm: Allow to set path to qemu-img
Message-Id: <20191114134246.12073-1-wainersm(a)redhat.com>
- CLOSING NOTE [2019-12-03 Tue 11:37]
Queued to my tree
Added: <2019-11-14 Thu>
{PATCH 0/4} docker: Update Travis-CI image to run acceptance tests
Message-Id: <20190818231827.27573-1-philmd(a)redhat.com>
- CLOSING NOTE [2019-12-03 Tue 16:03]
Will wait for next iteration.
{PATCH 0/4} python/qemu: New accel module and improvements
Message-Id: <20191115180829.10275-1-wainersm(a)redhat.com>
- CLOSING NOTE [2019-12-03 Tue 17:00]
All looks good. I assume will be merged with another series that
uses the new features.
Added: <2019-11-28 Thu>
{PATCH v7 0/8} Acceptance test: Add "boot_linux" acceptance test
Message-Id: <20191104151323.9883-1-crosa(a)redhat.com>
- CLOSING NOTE [2019-12-03 Tue 19:20]
Broken for me with load_module failure
Added: <2019-11-04 Mon>
{PATCH v4 00/40} target/arm: Implement ARMv8.1-VHE
Message-Id: <20191203022937.1474-1-richard.henderson(a)linaro.org>
- CLOSING NOTE [2019-12-06 Fri 18:35]
Reviewed about half the patch set, will do the remainder on v5 once
Peter's comments are addressed.
Added: <2019-12-03 Tue>
Current Review Queue
====================
* {PATCH} Semihost SYS_READC implementation (v6)
Message-Id: <20191104204230.12249-1-keithp(a)keithp.com>
Added: <2019-12-06 Fri>
* {PATCH 0/2} tests/acceptance: Add boot vmlinux test
Message-Id: <20191206140012.15517-1-wainersm(a)redhat.com>
Added: <2019-12-06 Fri>
* {RFC PATCH 00/10} hw/avr: Introduce the Arduino board
Message-Id: <20191128015030.27543-1-f4bug(a)amsat.org>
Added: <2019-11-28 Thu>
* {RFC 0/3} tests/vhost-user-fs-test: add vhost-user-fs test case
Message-Id: <20191025100152.6638-1-stefanha(a)redhat.com>
Added: <2019-10-25 Fri>
--
Alex Bennée
Morello:
- Static linking patches committed to merge branch.
- Dynamic linking patches up for review.
- Agreed definition of what LLD for stage-1 looks like.
- Discussions on what linker and ABI work is likely to be needed for stage-2.
Linaro:
Some LLD thunk/patch generation problems
https://bugs.llvm.org/show_bug.cgi?id=44071 for a gigantic build of
Chromium > 260 Mb .text section on AArch64. Diagnosed problems but
will need to fix next week.
Some support for ClangBuiltLinux with respect to some integrated
assembler compatibility with GNU as.
Buildbot duty.
Pretty quiet, attempted to reproduce some timeouts seen on the LNT
generate cmake. 3 minutes on an lightly loaded machine, exceeding 20
minutes in some cases on the heavily loaded buildbot host. Seems to
have resolved itself with the latest container update.
- Some changes to BTI for the Android team. All committed upstream.
-- Adding PT_GNU_PROPERTY support.
-- Increasing alignment of .note.gnu.property section to 8.
Holiday
- On holiday from Monday 16th to 3rd January inclusive. Back in office
January 6th.
Progress:
* VIRT-65 [QEMU upstream maintainership]
- code review (have had a go at cutting down the backlog; down to
six patchsets in my queue...):
+ reviewed the 'clock framework API' patchset; this is
looking good, the only major question to sort out is what
the right internal representation for the clock frq/period is
+ Paolo's series to add kernel-doc support to our Sphinx
setup (which is a mashup of something I hacked together
ages ago and more recent work from him)
+ RAS memory error support for KVM guests (mostly
reviewing the easy bits and noting that others have
provided code review comments on the rest)
+ reviewed RTH's MemTag emulation series
+ reviewed the bits of RTH's VHE series that Alex hadn't got to
+ tested an arm/acpi patchset from Huawei from March
which had unfortunately fallen through the cracks.
It failed 'make check' so they'll need to fix and resubmit :-(
- release work:
+ we needed an rc4
+ and it looks like we'll need an rc5 for one last important
bugfix; I'm hoping we can do an rc and then actual release
a few days later, though
thanks
-- PMM
== Progress ==
* GCC:
- -mpure-code on v6m: waiting for approval, pinged again.
* BFD Linker:
- GNU-629: non-contiguous memory support: received some feedback.
Looking at how to handle the case where input sections change size
during the linker iterations.
* GCC upstream validation:
- reported/checked a few issues
* misc:
- infra fixes / troubleshooting / reviews
== Next ==
* GCC: pure-code/v6m, handle feedback
* Binutils: GNU-629: support non-contiguous memory regions in linker
== Progress ==
* LLVM 9.0.1
- Trying to bisect the arm failures
* Triaging check-lldb failures on AArch64 [LLVM-512]
- Finished with the unexpected failures
- There are still some unexpected passes, but Omair has agreed to
look into them
* Morello
- Managed to build android and lldb-server, currently trying to see
if I can get them to work together
hi,I started implementing GDB process record and replay with ARM CoreSight as described in the rfc published early this year. Current implementation of coresight tracing in Perf is based on the sysfs interface, by accessing /sys/bus/event_source/devices/cs_etm ... file. GDB implementation of bts and ipt is based on the syscall "sys_perf_event_open".it would be nice to use the similar mechanism for realizing similar functionalities. therefore I would like to know if linux kernel (with coresight deivers) is exposing coresight drivers through the syscall sys_perf_event_open and if this is the case how shall I configure the perf_event_attr to use it.
thanks Zied Guermazi
# Progress #
o Upstream GDB
* ARM sim build failure with -fno-common
- Sent a patch to gdb-patches. Going through rounds of reviews.
* Patch reviewing and answering community questions.
o GDB
* GNU-644 - [GDB, AArch64] gdb.base/step-over-syscalls.exp failures
- Spent some more time with this in the hopes of understanding the
various failure modes. Still not clear if the kernel is doing the right
thing. It may be hard to adjust things on GDB's side, but i have a
couple patches solving some of the problems.
o Misc
* Updated personal information in the HR system.
# Plan #
o Upstream GDB
* Get approval for the fix to -fno-common build issues with ARM sim.
o GDB
* GNU-644 - [GDB, AArch64] gdb.base/step-over-syscalls.exp failures
- Engage with kernel folks for better understanding of signal
delivery scheme. Polish current fixes and submit for review.
o LLVM:
* Machine Outliner:
- Disabled asm statements.
- Added Helium LD/ST instructions support
- Adding testcases
o Misc
* Various meetings and discussions.
7 working days, then Thanksgiving.
[VIRT-262 # ARMv8.1-PAN Privileged Access Never]
Finished, still need to post.
[VIRT-273 # ARMv8.2-ATS1E1, AT S1E1R and AT S1E1W instruction variants ]
Finished, still need to post.
[VIRT-276 # ARMv8.2-UAO, PSTATE override of Unprivileged Load/Store ]
Finished, still need to post.
[VIRT-263 # ARMv8.1-VHE Virtual Host Extensions ]
FIXED! Welsh sprint with AJB; found and fixed two bugs.
Final bug causing guest kernel crash while booting fixed
upstream by Marc Zyngier vs ptrauth.
Will do some more thorough testing during rc4 and post
once the development phase opens up again.
[VIRT-327 # Richard's upstream QEMU work ]
Review of target/hexagon skeleton.
Review of arm dcpop patch set for beata.
Fixed a couple of arm translator bug for clyon.
Some investigation into a reported hppa-linux-user bug.
While I can reproduce locally, so far I have not tracked
down anything that I can prove is a translation bug.
r~
QEMU Tooling ([VIRT-252])
=========================
Extend gdbstub for SVE ([VIRT-281])
- worked on [v2 rebase addressing comments]
- posted {PATCH v2 00/14} gdbstub refactor and SVE support Message-Id:
<20191130084602.10818-1-alex.bennee(a)linaro.org>
[VIRT-281] https://projects.linaro.org/browse/VIRT-281
[working prototype]
https://github.com/stsquad/qemu/tree/gdbstub/sve-registers
[v2 rebase addressing comments]
https://github.com/stsquad/qemu/tree/gdbstub/sve-registers-v2
QEMU ARMv8.1 VHE ([VIRT_263])
=============================
- inaugural Welsh code sprint with rth
- found some new bugs, squashed some old bugs
- together with recent upstream fixes SUCCESS!
- can now boot a guest from a VHE enabled kernel :-)
[VIRT_263] https://projects.linaro.org/browse/VIRT-263
Upstream Work ([VIRT-109])
==========================
- posted {PULL for 4.2 0/3} a few vm-test fixes Message-Id:
<20191126120339.18059-1-alex.bennee(a)linaro.org>
- there are still niggling netbsd failures
- posted {PATCH for 4.2?} .travis.yml: drop xcode9.4 from build matrix
Message-Id: <20191127132430.3681-1-alex.bennee(a)linaro.org>
- investigation into [ARM HPC compiler triggered linux-user bug]
- may be 64k page related as couldn't reproduce on Ubuntu
- posted {PATCH v1 0/5} linux-user mmap debug cleanup Message-Id:
<20191128194603.24818-1-alex.bennee(a)linaro.org>
[ARM HPC compiler triggered linux-user bug]
https://bugs.launchpad.net/qemu/+bug/1853826
Other Activities
================
- published [QEMU Summit and KVM Forum trip report]
[QEMU Summit and KVM Forum trip report]
https://collaborate.linaro.org/display/CR/20191030+QEMU+Summit+and+KVM+Foru…
Absences
========
- 2nd Dec Holiday
Current Review Queue
====================
* {PATCH 0/4} python/qemu: New accel module and improvements
Message-Id: <20191115180829.10275-1-wainersm(a)redhat.com>
Added: <2019-11-28 Thu>
* {PATCH v2 0/2} Run tcg tests with tci on Travis
Message-Id: <20191128153525.2646-1-thuth(a)redhat.com>
Added: <2019-11-28 Thu>
* {PATCH 0/2} flush CPU TB cache in breakpoint_invalidate
Message-Id: <20191127220602.10827-1-jcmvbkbc(a)gmail.com>
Added: <2019-11-28 Thu>
* {RFC PATCH 00/10} hw/avr: Introduce the Arduino board
Message-Id: <20191128015030.27543-1-f4bug(a)amsat.org>
Added: <2019-11-28 Thu>
--
Alex Bennée
Progress:
* VIRT-65 [QEMU upstream maintainership]
- code review:
+ finally got back to the reset-refactoring patchset
and gave review on v5 of that. This is very nearly ready.
+ reviewed and got into 4.2 rc3 some patches from Marc Z
fixing some missing emulation/bugs that newer Linux
guest kernels trip over
+ rc3 out of the door; we will need an rc4, though
- more time consumed by office-move
thanks
-- PMM
[Morello]
Rebase of LLD against September CUCL update complete
- Painful due to LLD changing address layout (every test expected
value shifted), and a naming convention change.
- No functional changes needed to patch.
- Submitted static linking patches for review. Will send the dynamic
ones after all static linking has been merged.
Wrote up notes of Linaro Tech-leads Morello Q&A.
Misc:
Upstream LLD reviews
== Progress ==
* Out of office on Thursday
* LLVM 9.0.1
- Uploaded ARM & AArch64 binaries for rc1
- ARM: opened 2 bug reports (asan and cfi tests failing)
* Triaging check-lldb failures on AArch64 [LLVM-512]
- Opened a few more bug reports
- Got one nasty failure that I want to look into a bit more before
committing a patch XFAIL-ing everything so far
* Morello
- Got a VM working, built the toolchain, currently trying to build android
- Setting up all sorts of gerrit accounts and other minutiae
== Plan ==
* More of the same
Hi!
I've attempted to study the implementation of memcpy for 32-bit Arm cores in
Glibc (which is also found in arm-optimized-routines and first appeared in
Linaro's cortex-strings project), and I came across a peculiar snippet:
#ifdef USE_VFP
/* Magic dust alert! Force VFP on Cortex-A9. Experiments show
that the FP pipeline is much better at streaming loads and
stores. This is outside the critical loop. */
vmov.f32 s0, s0
#endif
This seems to imply that this NOP-like instruction affects CPU state and makes
the vldr/vstr instructions that follow use different datapaths that they might
otherwise? Can anyone shed more light on this, please?
I was able to trace history of this code back to revision 100 in cortex-strings
repository, where it appeared as part of a large rewrite by Will Newton:
https://bazaar.launchpad.net/~linaro-toolchain-dev/cortex-strings/trunk/rev…
The entire memcpy.S file in Arm optimized-routines repo can be found here:
https://github.com/ARM-software/optimized-routines/blob/master/string/arm/m…
Thanks!
Alexander
Hi Arnd,
I took a look on the stack usage issue in the kernel snippet you provided [1],
and as you have noted the most impact indeed come from -ftree-ch optimization.
It is enabled in all optimization levels besides -Os (since besides possible
increasing the stack usage it also might increase code side).
I am still fulling grasping what free-ch optimization does, but my understanding
so far is it tries to reorganize the loop for later loop optimization phases.
More specifically, what it ends up doing on the specific snippet is create extra
stack variables for the internal membber access in the inner loop (which in its
turns increase stack usage).
This is also why adding the compiler barrier inhibits the optimization, since it
prevents the ftree-ch to optimize the internal loop reorganization and it is
passed as is to later optimizations phases.
It is also a generic pass that affects all architecture, albeit the resulting
stack will depend on later passes. With GCC 9.2.1 I see the resulting stack
usage using -fstack-usage along with -O2:
arm 632
aarch64 448
powerpc 912
powerpc64le 560
s390 600
s390x 632
i386 1376
x86_64 784
Also, -fconserve-stack does not really help with this pass since ftree-ch does
not check the flag usage. The fconserve-stack currently only seems to effect
the inliner by setting both large-stack-frame and large-stack-frame-growth to
some conservative values.
The straightforward change I am checking is just to disable tree-ch optimization
if fconserve-stack is also enabled:
diff --git a/gcc/tree-ssa-loop-ch.c b/gcc/tree-ssa-loop-ch.c
index b894a7e0918..b14dd66257c 100644
--- a/gcc/tree-ssa-loop-ch.c
+++ b/gcc/tree-ssa-loop-ch.c
@@ -291,7 +291,8 @@ public:
{}
/* opt_pass methods: */
- virtual bool gate (function *) { return flag_tree_ch != 0; }
+ virtual bool gate (function *) { return flag_tree_ch != 0
+ && flag_conserve_stack == 0; }
/* Initialize and finalize loop structures, copying headers inbetween. */
virtual unsigned int execute (function *);
On powerpc64le with gcc master:
$ /home/azanella/gcc/gcc-git-build/gcc/xgcc -B /home/azanella/gcc/gcc-git-build/gcc -O2 ../stack_usage.c -c -fstack-usage && cat stack_usage.su
../stack_usage.c:157:6:mlx5e_grp_sw_update_stats 496 static
$ /home/azanella/gcc/gcc-git-build/gcc/xgcc -B /home/azanella/gcc/gcc-git-build/gcc -O2 ../stack_usage.c -c -fstack-usage -fconserve-stack && cat stack_usage.su
../stack_usage.c:157:6:mlx5e_grp_sw_update_stats 176 static
The reference for minimal stack usage is with -Os:
$ /home/azanella/gcc/gcc-git-build/gcc/xgcc -B /home/azanella/gcc/gcc-git-build/gcc -Os ../stack_usage.c -c -fstack-usage && cat stack_usage.su
../stack_usage.c:157:6:mlx5e_grp_sw_update_stats 32 static
I will try to check if also enable the same test for -fgcse and -free-ter
do make sense.
[1] https://godbolt.org/z/WKa-Bd
# Progress #
o Upstream GDB
* Make remote packet length in debugging output adjustable (as
opposed to fix to 512 bytes).
* Investigated ARM sim build issues with the GCC default moving to
-fno-common.
o GDB:
* GNU-644 - [GDB, AArch64] gdb.base/step-over-syscalls.exp failures
- No progress yet. Waiting for Kernel feedback.
* [RESOLVED] GNU-645 - gdbserver is not using SVE register
descriptions properly
- Pushed a fix upstream.
* GNU-170 - GDB BZ #21221 - gdb hangs while stepping an empty loop
- On hold for now.
o Friday off
# Plan #
o Upstream GDB
* Fox -fno-common build issues with ARM sim.
o GDB
* GNU-644 - [GDB, AArch64] gdb.base/step-over-syscalls.exp failures
- Continue working on a fix.
== This Week ==
* GCC
- PR92554: Spent some time triaging the issue, but gave up after
Richard posted better fix.
- PR89007: Addressing upstream suggestions.
- PR92608: Committed fix to trunk.
- GNU-583: Looking thru Kugan's patch and upstream discussion.
* Validation
- Submitted patch to add --gcc_patch_file option to abe.
- Submitted patch to remove --interactive from abe.
== Next Week ==
- Continue ongoing tasks
== Progress ==
* GCC:
- -mpure-code on v6m: sent an updated patch, waiting for approval.
* BFD Linker:
- non-contiguous memory support: partial prototype working on the
use-case, but causes regressions.
* GCC upstream validation:
- reported several issues
* misc:
- infra fixes / troubleshooting / reviews
== Next ==
* GCC: pure-code/v6m, handle feedback
* Binutils: support non-contiguous memory regions in linker
QEMU Tooling ([VIRT-252])
=========================
Extend gdbstub for SVE ([VIRT-281])
- worked on [v2 rebase addressing comments]
[VIRT-281] https://projects.linaro.org/browse/VIRT-281
[v2 rebase addressing comments]
https://github.com/stsquad/qemu/tree/gdbstub/sve-registers-v2
Upstream Work ([VIRT-109])
==========================
- general poking around and stress testing on the run up to release
- documented some outstanding issues [on the planning page]
- posted {PULL for rc3 0/5} a few doc and testing tweaks Message-Id:
<20191120105801.2735-1-alex.bennee(a)linaro.org>
- posted {PATCH for 4.2 v1 0/3} some tests/vm fixes Message-Id:
<20191122112231.18431-1-alex.bennee(a)linaro.org>
[VIRT-109] https://projects.linaro.org/browse/VIRT-109
[on the planning page] https://wiki.qemu.org/Planning/4.2
Other Activities
================
- finalising [draft of KVM Forum conference report]
- will publish on Monday once Beata adds the last note
[draft of KVM Forum conference report]
https://collaborate.linaro.org/pages/resumedraft.action?draftId=128647720
Completed Reviews [3/3]
=======================
{PATCH v2 0/6} Make the qemu_logfile handle thread safe.
Message-Id: <20191115131040.2834-1-robert.foley(a)linaro.org>
- CLOSING NOTE [2019-11-22 Fri 17:15]
Ad of v3 this is ready to go, just awaiting the tree to open again
Added: <2019-11-15 Fri>
{PATCH v3 0/6} Make the qemu_logfile handle thread safe.
Message-Id: <20191118211528.3221-1-robert.foley(a)linaro.org>
{PATCH 0/6} Enable Travis builds on arm64, ppc64le and s390x
Message-Id: <20191119170822.45649-1-thuth(a)redhat.com>
Current Review Queue
====================
* {PATCH 0/1} tests/vm: Allow to set path to qemu-img
Message-Id: <20191114134246.12073-1-wainersm(a)redhat.com>
Added: <2019-11-14 Thu>
* {PATCH v7 0/8} Acceptance test: Add "boot_linux" acceptance test
Message-Id: <20191104151323.9883-1-crosa(a)redhat.com>
Added: <2019-11-04 Mon>
* {RFC 0/3} tests/vhost-user-fs-test: add vhost-user-fs test case
Message-Id: <20191025100152.6638-1-stefanha(a)redhat.com>
Added: <2019-10-25 Fri>
* {PATCH v5 00/22} target/arm: Implement ARMv8.5-MemTag, system mode
Message-Id: <20191011134744.2477-1-richard.henderson(a)linaro.org>
Added: <2019-10-11 Fri>
--
Alex Bennée
[Morello]
- LLD finished pre-review refactoring and splitting up into reviewable chunks
- Implemented range-extension and interworking thunks to test
interaction with aligning .text to comply with Cheri Concentrate
- Answered some questions from Linaro tech-leads about Morello
Plans
- Rebase once CUCL merge has been completed and submit for review.
Planned Absences:
Christmas Holiday 16th December - 3rd January inclusive
Progress:
* VIRT-65 [QEMU upstream maintainership]
- code review:
+ Marc-Andre's series trying to get rid of QOM pointer properties
+ various minor bits for rc2
- unsuccessfully tried to work out why one of QEMU's test
cases asserts on BSD hosts only
- some time consumed by office-move
thanks
-- PMM
== Progress ==
* Triaging check-lldb failures on AArch64 [LLVM-512]
- Opened 4 bug reports
- One of them got a lot of attention so I was asked to upload more
logs/try various things
- Still have a couple of test failures to look into
* Morello
- First contact with the team
- Started looking at the internal docs
- Trying to build the existing toolchain
== Plan ==
* Figure out the current state of LLDB for Morello and what needs to be done
* Continue triaging LLDB failures
Dear Linaro,
Dear Linaro I'm using arm cortex A53 (mt6735 [part number]). But I do not know which tool-chain I have to use. I found your website https://www.linaro.org/downloads/ on internet. and my guess is aarch64-linux-gnu. can you please guide me through selecting a proper tool-chain.
Regards,
Saeed Djamali
# Progress #
o Upstream GDB
* More patch reviewing and answering questions.
o GDB:
* GNU-644 - [GDB, AArch64] gdb.base/step-over-syscalls.exp failures
- Managed to track this down all the way to the aarch64
single-stepping infrastructure in the kernel. Created reproduction steps
and sent an e-mail to linux-arm-kernel
- Also noticed a difference in the order in which SIGCHLD's are
delivered between x86_64 and aarch64. This confused GDB, which expects
the ordering it sees on x86_64. Working on a fix.
* Tweaked QEMU setup a little for SVE testing
* GNU-645 - gdbserver is not using SVE register descriptions properly
- Tracked down why gdbserver is not sending SVE register data back
to GDB. Working on a fix.
* GNU-170 - GDB BZ #21221 - gdb hangs while stepping an empty loop
- On hold for now.
# Plan #
o GDB
* GNU-644 - [GDB, AArch64] gdb.base/step-over-syscalls.exp failures
- Continue working on a fix.
* GNU-645 - gdbserver is not using SVE register descriptions properly
- Continue working on a fix.
[VIRT-262 # ARMv8.1-PAN Privileged Access Never]
Started, based on VHE patch set due to mmu_idx reorg therein.
Needs some minor re-work to handle Secure EL1.
[VIRT-273 # ARMv8.2-ATS1E1, AT S1E1R and AT S1E1W instruction variants ]
Started.
[VIRT-327 # Richard's upstream QEMU work ]
Some soft-freeze bug fixing of stuff that I broke this cycle.
Some patch review.
[Kernel]
Posted v7 of the ARMv8.5-RNG patch set. There's some significant
mis-communication going on between me and Mark Rutland; I have no
idea what he wants at this point...
[GCC]
Committed the base asm-flags patch set. Posted a follow-up
to un-break thumb1, and add tests for it.
r~
== This Week ==
* GCC
- PR89007: Posted patch upstream.
- GNU-583: Worked with Kugan, to reproduce LTO failure and verified
his patch fixes it.
- Bug 5479: Investigated with Maxim, most likely a glibc issue.
* Validation:
- Posted abe patch to add --gcc_patch_file option.
== Next Week ==
- Continue ongoing tasks.
Monday off
== Progress ==
* GCC:
- -mpure-code on v6m: answered questions about my patch. Almost OK
* Linker:
- started looking at implementing non-contiguous memory support
* GCC upstream validation:
- reported several issues
* misc:
- infra fixes / troubleshooting / reviews
== Next ==
* GCC: pure-code/v6m, handle feedback
* Binutils: support non-contiguous memory regions in linker
[Morello]
- Dynamic linking implementation complete and tests written based on
GNU ld output.
- Good progress on refactoring the work prior to breaking it down into
reviewable chunks. Have got a good idea of what I'd like the
implementation to look like.
TODO:
- Finish refactoring patches.
- Rebase into reviewable patches.
- Document the design decisions.
- Test on more than just the examples in the toolchain.
- Rebase on top of latest CUCL drop when merge is finished.
[Other]
LLVM-MC upstream review for the Linux Kernel.
QEMU Tooling ([VIRT-252])
=========================
QEMU plugin support ([VIRT-280])
- feature now merged in 4.2
- closed out a bunch of related JIRA cards
- API version now merged and this card is closed
Extend gdbstub for SVE ([VIRT-281])
- posted {RFC PATCH 00/11} gdbstub re-factor and SVE support
Message-Id: <20191115173000.21891-1-alex.bennee(a)linaro.org>
[VIRT-281] https://projects.linaro.org/browse/VIRT-281
[working prototype]
https://github.com/stsquad/qemu/tree/gdbstub/sve-registers
Upstream Work ([VIRT-109])
==========================
- posted {PULL 0/8} testing and tcg plugin api ver Message-Id:
<CAFEAcA_9AwoTE9zaKbiF6DkpN+O8LaEKGOct-m5S3yvFBHGK1g(a)mail.gmail.com>
- posted {PATCH for 4.2-rc2 v1 0/5} misc doc and testing fixes
Message-Id: <20191113115952.775-1-alex.bennee(a)linaro.org>
- posted {RFC PATCH} scripts/tap-driver: report "slow" tests (HACK)
Message-Id: <20191113142101.30280-1-alex.bennee(a)linaro.org>
Other Activities
================
- wrote [draft of KVM Forum conference report]
[draft of KVM Forum conference report]
https://collaborate.linaro.org/pages/resumedraft.action?draftId=128647720
Completed Reviews [5/5]
=======================
{PATCH 0/2} replace sysconf(_SC_PAGESIZE) with qemu_real_host_page_size
Message-Id: <20191015031350.4345-2-richardw.yang(a)linux.intel.com>
{PATCH v2 0/4} arm/aspeed: Watchdog and SDRAM fixes
Message-Id: <20191113005201.19005-1-joel(a)jms.id.au>
{kvm-unit-test PATCH 0/5} Improvements for the Travis CI
Message-Id: <20191113112649.14322-6-thuth(a)redhat.com>
{PATCH} target/arm: Clean up arm_cpu_vq_map_next_smaller asserts
Message-Id: <20191115131623.322-1-richard.henderson(a)linaro.org>
{PATCH v1 0/5} Make the qemu_logfile handle thread safe.
Message-Id: <20191112150105.2498-1-robert.foley(a)linaro.org>
Current Review Queue
====================
* {PATCH v2 0/6} Make the qemu_logfile handle thread safe.
Message-Id: <20191115131040.2834-1-robert.foley(a)linaro.org>
Added: <2019-11-15 Fri>
* {PATCH 0/1} tests/vm: Allow to set path to qemu-img
Message-Id: <20191114134246.12073-1-wainersm(a)redhat.com>
Added: <2019-11-14 Thu>
* {PATCH v7 0/8} Acceptance test: Add "boot_linux" acceptance test
Message-Id: <20191104151323.9883-1-crosa(a)redhat.com>
Added: <2019-11-04 Mon>
* {RFC 0/3} tests/vhost-user-fs-test: add vhost-user-fs test case
Message-Id: <20191025100152.6638-1-stefanha(a)redhat.com>
Added: <2019-10-25 Fri>
--
Alex Bennée
Progress:
* VIRT-65 [QEMU upstream maintainership]
- wrote up first draft of requirements for the better CI setup for
testing pull request merge builds
(https://wiki.qemu.org/Requirements/GatingCI)
- wrote up version of the QEMU Summit minutes that includes enough
context to make sense to people who weren't present; plan to
send to qemu-devel next Friday
- got 4.2 rc1 out of the door; this release seems to be pleasantly
quiet for a change.
thanks
-- PMM
== Progress ==
* Committed SVE-related fix for InstCombine
* Started triaging check-lldb failures on AArch64 [LLVM-512]
- Committed a trivial fix for one of the tests
- Still looking into the other failures
* Received and setup laptop for Morello work
- Awaiting further instructions
== Plan ==
* Start working on Morello
* Keep triaging check-lldb failures
* If time permits, look into SVE asserts some more
# Progress #
o Annual Review
* Concluded
o Upstream GDB
* Patch reviews on gerrit and answering questions.
* Fixed PR25124 - [ARM] regression: thumb-bx-pc.exp
(https://sourceware.org/bugzilla/show_bug.cgi?id=25124)
* Investigated an odd failure in gdb.base/step-over-syscall.exp and
ended up finding some odd stepping behavior that may or may not be
kernel related. Still investigating under GNU-644
(https://projects.linaro.org/browse/GNU-644)
o GDB:
* GNU-170 - GDB BZ #21221 - gdb hangs while stepping an empty loop
- On hold for now. It would be nice to be able to use a NOP instead
of a dummy label + jump.
* Setup QEMU for running SVE bits and reproduced some SVE hiccups in
gdbserver that Alex mentioned.
* Misc discussions about SVE and the GDB implementation in general.
# Plan #
o Upstream GDB
* More patch reviewing and answering questions.
o GDB:
* GNU-644 - [GDB, AArch64] gdb.base/step-over-syscalls.exp failures
- Continue investigating
* Tweak QEMU setup a little for SVE testing
== Progress ==
* GCC:
- -mpure-code on v6m: no feedback yet
* Linker:
- started looking at implementing non-contiguous memory support
* GCC upstream validation:
- reported several issues
* misc:
- infra fixes / troubleshooting / reviews
== Next ==
* GCC: pure-code/v6m, handle feedback
* Binutils: support non-contiguous memory regions in linker
[VIRT-263 # ARMv8.1-VHE Virtual Host Extensions ]
Reworked the timer redirection. Now the EL2 and EL0 redirection
is unified, which is a bit easier to understand. Still no joy
working out where the unwanted interrupt is coming from. As far
as I can tell everything is plumbed correctly...
I'll shelve this until PMM is not swamped with release work.
It must wait for 5.0 for merging anyway.
[VIRT-327 # Richard's upstream QEMU work ]
Assorted patch review.
[Kernel]
Posted two more rounds of ARMv8.5-RNG for review. Seems I'd
misunderstood one of Mark's previous suggestions, and Ard changed
his mind about how RNDR vs RNDRRS should be used in the context
of the shared resource across host*CORES + virt*VCPUS.
[GCC]
Posted an implementation of asm-flag-output for AArch32+AArch64.
I should have done this years ago. There are two potential users
within the kernel, and one is access_ok() which has thousands
of uses. (Oh, and RNG, which has like 3 uses. :-P)
Reviewed some arm simd patches that caught my eye.
r~
QEMU Tooling ([VIRT-252])
=========================
QEMU plugin support ([VIRT-280])
- feature now merged in 4.2
- closed out a bunch of related JIRA cards
- posted {PATCH} tcg plugins: expose an API version concept
Message-Id: <20191104131836.12566-1-alex.bennee(a)linaro.org>
- requested by Peter before hardfreeze
Extend gdbstub for SVE ([VIRT-281])
- got a [working prototype]
- probably need a little core gdbstub re-factor before posting RFC
[VIRT-281] https://projects.linaro.org/browse/VIRT-281
[working prototype]
https://github.com/stsquad/qemu/tree/gdbstub/sve-registers
Upstream Work ([VIRT-109])
==========================
- posted {PULL v3 00/15} testing updates Message-Id:
<20191025193709.28783-1-alex.bennee(a)linaro.org>
- had to drop NetBSD autobuild (again)
[VIRT-109] https://projects.linaro.org/browse/VIRT-109
[branch]
https://github.com/stsquad/qemu/tree/testing/docker-multiarch-refactor
[testing/next] https://github.com/stsquad/qemu/tree/testing/next
Other Activities
================
- Presented at KVM Forum
- went down well, made a number of contacts who are interested
- A bunch of discussion on Hexagon
- More detailed write-up to follow
Completed Reviews [4/4]
=======================
{PATCH 0/5} travis.yml improvements: Update libraries, build with arm64
Message-Id: <20191009170701.14756-1-thuth(a)redhat.com>
- CLOSING NOTE [2019-10-18 Fri 19:04]
Pulled some bits into testing/next
Added: <2019-10-09 Wed>
{PATCH} Semihost SYS_READC implementation (v4)
Message-Id: <20191024224622.12371-1-keithp(a)keithp.com>
{PATCH v2 0/4} target/arm: Support for Data Cache Clean up to PoP
Message-Id: <CADSWDztHetgmbUOp4WyRAkR0daAG6kkwhUTcyKWiCTWHQ1XB=w(a)mail.gmail.com>
{PATCH 0/4} Make the qemu_logfile handle thread safe.
Message-Id: <20191107142613.2379-1-robert.foley(a)linaro.org>
Absences
========
- KVM Forum Oct 29th-Nov 1st
Current Review Queue
====================
* {PATCH v7 0/8} Acceptance test: Add "boot_linux" acceptance test
Message-Id: <20191104151323.9883-1-crosa(a)redhat.com>
Added: <2019-11-04 Mon>
* {RFC 0/3} tests/vhost-user-fs-test: add vhost-user-fs test case
Message-Id: <20191025100152.6638-1-stefanha(a)redhat.com>
Added: <2019-10-25 Fri>
* {PATCH v5 00/22} target/arm: Implement ARMv8.5-MemTag, system mode
Message-Id: <20191011134744.2477-1-richard.henderson(a)linaro.org>
Added: <2019-10-11 Fri>
* {PATCH v4 0/9} target/arm/kvm: enable SVE in guests
Message-Id: <20190924113105.19076-1-drjones(a)redhat.com>
Added: <2019-09-24 Tue>
--
Alex Bennée
Morello
- Started to document the LLD implementation.
- Implemented CHERI concentrate alignment for the important sections.
- Dynamic linking is feature complete, but not finished yet, still Todo:
-- More test cases for the various different combinations.
-- Refactor to clean up the implementation.
-- Rebase all the patches to remove the false starts.
-- Update the documentation I've just started as it is already out of date.
-- Not looked at ifunc or TLS yet.
llvm-mc
Some review on MC patch to allow limited symbolic computation when
evaluating .if
Progress / KVM Forum trip report:
* As usual, we held the QEMU Summit at the same time as the forum;
this is an hour-or-two invitation only meeting of the top 20 or
so maintainers/submaintainers, discussing process and other project
issues. A proper summary/writeup of the minutes will be posted to
qemu-devel later, but IMHO this year the most interesting topics were:
- Spreading the load of managing pull request merges; currently
I do this with the aid of some hand-hacked scripts. To be able
to spread this work among more people we need to replace that
with a more maintained and standardized CI/testing setup. RedHat
have agreed to provide some people to work on at least the initial
setup part of this, and we got some consensus that the approach to
take was to use Gitlab with some custom 'runners' to handle the
'build/test on aarch64/ppc/s390x/etc' parts.
- We talked about the project's general stance on 'plugin' interfaces;
which can be controversial both because they commit us to maintaining
a stable API/ABI and because they have the potential to be used to
work around the GPL (eg proprietary device models). We plan to
write up some guidelines here (mostly just writing down the
existing consensus).
- We also talked (again) about our handling of security issues and
CVEs. My impression is that there are some parts of this that
people aren't hugely happy with but that nobody has the time/effort to
try to improve things (eg better documentation/tracking of issues,
more prompt upstream point releases with security fixes), so things
are likely to stay about as they are now.
* Interesting talks (videos are being uploaded to:
https://www.youtube.com/channel/UCRCSQmAOh7yzgheq-emy1xA ):
- 'The Hype Around the RISC-V Hypervisor' : the RISC-V architecture's
hypervisor extension isn't completely finalized yet, but it's far
enough advanced that KVM support and also QEMU emulation of it have
been written. An amusing sign of the architecture's academic
underpinnings is that this first version doesn't have any hardware
acceleration of the interrupt controller, but does have full
nested-virtualization support.
- 'ZERO: Next Generation Virtualization Platform for Huawei Cloud':
Huawei describe hardware for a cloud environment which offloads
as much as possible of the hypervisor work to custom I/O cards
and a custom silicon cloud-control device, in a general approach
that's probably familiar to anybody who watched the Amazon Nitro
presentation from the other year.
- 'What's Going On? Taking Advantage of TCG's Total System Awareness':
Alex Bennée's talk on the introspection plugin work we've been doing
in Linaro (and which will be in QEMU 4.2).
- 'Playing Lego with Virtualization Components':
description of the Rust 'rust-vmm' set of libraries intended to
provide useful building blocks for putting together virtual machine
managers (like Firecracker, crosvm). Basically similar content to
a presentation they did for Cambridge University earlier this year,
but this talk's been recorded so is good if you weren't in the audience
the first time around.
* And as always the in-person networking is valuable:
- Oracle have a "split device emulation into separate processes" idea
that's alarmingly invasive of the source code, but Stefan came up
with an approach that might let them do what they need without making
the source code harder to work with for the rest of us.
- Met the RedHat person who's going to do the CI-for-pullreqs work
(see QEMU Summit item earlier) : getting this unstalled was probably
the most useful concrete outcome of the conference
- Finally met Aurelien Jarno (a longstanding hobbyist contributor
to QEMU who usually can't attend these conferences)
* While at the conference Drew and I managed to finally get the
SVE support for KVM guests into master (the last hurdle was an awkward
test failure on the aarch32-compat-on-aarch64-kernel setup I happen
to use as one of my build test environments; we don't care about whether
KVM really works in this setup but we need 'make check' to not fail)
* Also managed to fit in some wrangling of pull requests; the timing
of the 4.2 release unfortunately put softfreeze on the Tuesday
before the conference and rc0 on the Tuesday afterwards; rc0
ended up being postponed a couple of days as a consequence.
thanks
-- PMM
Linaro
- On buildbot monitoring duty, relatively quiet week with just a
couple of fairly simple to diagnose problems to report.
Morello
- Dynamic linking progressing albeit slowly.
-- Trying to work out the requirements from existing documents and
implementation.
-- Have some simple cases doing mostly the right thing and have
written some tests.
-- Will need to rewrite to move calculations earlier in the link-step.
-- Morello is quite different from Cheri in this regard so I have had
to diverge much more from the implementation.
Tree:
https://github.com/rth7680/qemu.git tgt-arm-vhe-5
Testcase:
qemu-test:~rth/linux/initramfs-min.cpio.gz
The host kernel could be anything, but I've been using
the same Image.gz that is inside the cpio archive.
./aarch64-softmmu/qemu-system-aarch64 -m 4G \
-M virt,virtualization=on,gic-version=max -cpu max \
-kernel Image.gz -initrd initramfs-min.cpio.gz
At the shell prompt, ./test will run a guest kernel with kvm.
As momentarily discussed with PMM in the hallway:
As soon as the guest kernel enables interrupts,
arch_timer_starting_cpu
enable_percpu_irq
irq_percpu_enable
gic_unmask_irq
-- Incorrect exception delivery.
the GTIMER_PHYS interrupt is delivered to EL2 (seems to be ok), the host kernel
does something (haven't dug into what exactly, bug presumably setting bits that
are supposed to pass the virq to the guest), and immediately another interrupt
is delivered to EL2. Repeat.
Whether this is incorrect routing of the virq interrupt, or incorrect
masking/acking of the hard irq interrupt at EL2, I do not yet know.
PMM: I don't know the answer to either (a) or (b) as asked on hangouts. I
think (b) is correct, but I can't be sure. I'm trying to understand how (a) is
supposed to work now. In particular, I can't find any code that sets
HCR_EL2.{VI,VF}, only tests them.
r~
# Progress #
o Ramp up
* Concluded.
o Annual Review
* Attended discussions.
o Upstream GDB
* Patch reviews on gerrit.
* Answered questions.
* The state of ARM/AArch64 GDB upstream seems to be reasonable, with
a few failures here and there. Numerous failures on problematic racy
tests (gdb.threads).
o GDB:
* GNU-170 - GDB BZ #21221 - gdb hangs while stepping an empty loop
- Spent some more time on this and improve the patch further,
covering most problematic cases for "for", "while" and "do/while" loops.
* Read some documentation on setting up Fast Models for testing MVE
(Helium).
* Inspected various aspects of ARM support in GDB, like SVE, PAC and
ACLE.
# Plan #
o Annual Review
* Conclude.
o GDB:
* GNU-170 - GDB BZ #21221 - gdb hangs while stepping an empty loop
- Discuss with gcc@ a bit more about my proposed solution.
* Attempt to setup system QEMU and/or Fast Model for testing ACLE SVE
and, maybe, MVE.
== Progress ==
* Out of office 1 day
* Buildbot monitoring
- Moved the buildbots to pull from github
* Trying to setup a build environment on ex40-01
- Gave up on the tcwg-sq-01/2 boards because they seemed too unstable
* Still no access to Morello docs
* Playing with lldb python scripting
- Got a script that intercepts all calls to
VectorType::getNumElements that don't come from a getElementCount
(since that likely means that they won't be preserving the 'scalable'
property)
- This should help figure out problems spotted by the fuzzer
- Likely needs a bit more refining
== Plan ==
* More of the same
* Out of office on Friday (1 November)