Hi guys. I just realized that today's meeting will be right in the middle of dinner
plans. I'll organize better next week. Anyway, here's my status:
- Fourth SME patch set -- parts merged, and some bugs fixed.
- Base/arm-compat portion of semihosting rewrite now upstream.
Target-specific bits for m68k, mips, nios2, xtensa outstanding.
- Almost done with FEAT_HAFDBS (hardware access/dirty updates).
Big changes to ptw.c to make that work: 50+ patches.
The reorg should make FEAT_RME easier though.
r~
Hello,
I just noticed that I didn't send a report for week #24. Sorry about
that. For that reason, this report covers two weeks.
# Linaro CI's GDB testsuite results
* Submitted upstream patch fixing gdb_compile regexp to account for our
GNATMAKE_FOR_TARGET value containing spaces. This should solve the Ada
test failures in our CI.
* Fixed the Abe shell script to correctly set auto-load-safe-path so
that GDB can load libthread_db.so.1. Unfortunately the CI detected a
problem with using the generated manifest to reproduce the toolchain
build, so I'm back to the drawing board on this one.
* Sent a Gerrit change request for the Abe script updating it to use
release 12's branch and tag for GDB and gdbserver, and another one
removing a workaround for a build problem fixed in GDB 9.
* Sent a Gerrit change request for tcwg-dev-build.sh fixing a couple of
issues I found when using it to build and test GDB.
# [GNU-767] Support changing SVE vector length in remote debugging
* Analysed and fixed a couple more regressions in my branch.
# Misc
* Attended a few online sessions from Linaro San Francisco Get Together.
* Sent Gerrit change request updating the TCWG script that generates our
SSH known_hosts file to include the Ed25519 host keys, which are now
preferred in Ubuntu 22.04.
* Was out one day due to “Corpus Christi” public holiday.
--
Thiago
Progress:
* UM-2 [QEMU upstream maintainership]
- First week back after holiday: lots of catchup
- Good progress with the code review queue, including getting
rid of a few things that had been lurking in it for too
long, and another pass through the latest SME series
- KVM Forum programme committee work
-- PMM
Hello,
# [GNU-767] Support changing SVE vector length in remote debugging
* Debugged and fixed a few issues in my code where gdbserver was having
trouble with setting the target description for new threads. Also
fixed regressions in a couple more testcases.
# Linaro CI's GDB testsuite results
* Luis commented on IRC that the GDB testsuite results from the Linaro CI
seemed a bit high with about 540 failures, so I set out to investigate.
The two biggest sources of failures are:
1. Ada tests were failing because they can't build their test
executables. This is expected because we don't have the Ada compiler
in the CI, but normally these testcases would just bail out as
unsupported. Found out that there was a regex in the GDB testsuite
that was (IMHO) too strict for our particular setup and fixed it.
2. All CTF tests are failing. The compiler in the CI seems to be
building test executables with CTF debug info, so we do seem to have a
problem there.
The CI's GDB is also not loading libthread_db.so because of a GDB
security setting, so I fixed that as well and expect some more tests
to pass now.
I still haven't submitted my fixes for 1. to upstream and for the
libthread_db.so.1 issue to our CI scripts because I'm still working
with jenkins-scripts and Abe to reproduce the CI environment to verify
the fixes.
--
Thiago
Progress:
* UM-2 [QEMU upstream maintainership]
- This week was almost entirely code review and similar upstream tasks
- managed to review all the preliminary parts of the SME patchset
- reviewed several other refactoring series from rth
- reviewed a big PS/2 keyboard emulation refactoring patchset
- prep for KVM Forum program committee session
* QEMU-422 [QEMU Arm Neoverse V1 vCPU for TCG]
- FEAT_RASv1p1 and FEAT_DoubleFault now upstream
-- PMM
Hello,
# [GNU-767] Support changing SVE vector length in remote debugging
* Debugged and fixed issues in my code where gdbserver was in some cases
trying to read inferior registers before aarch64_target was fully
initialised, and also while the inferior thread was running. This
improved reliability but there are still some testsuite regressions to
look into.
# Sourceware bug 28561 - [gdb/testsuite] Error due to not reading \r\n
at end of mi prompt
* Posted comment to the bug report summarising my current results.
* Tried to reproduce the bug using the upstream v5.3 kernel (since I was
able to see it with openSUSE Leap's v5.3 kernel), but failed. Still
trying to understand what that implies.
--
Thiago
Progress (covers two half-weeks):
* UM-2 [QEMU upstream maintainership]
- investigating a reported bug with semihosting syscalls over gdbstub
- reviewed a massive series from RTH refactoring our SVE code
in preparation for handling SME
* QEMU-422 [QEMU Arm Neoverse V1 vCPU for TCG]
- looking at exactly what FEAT_RASv1p1 and FEAT_DoubleFault require
of a minimal RAS implementation like QEMU's
- sent a patch implementing FEAT_RASv1p1 (a no-op for QEMU)
- sent a patch implementing FEAT_DoubleFault (turns out to be
simpler than I initially feared it might be)
-- PMM
Hello,
# [GNU-767] Support changing SVE vector length in remote debugging
* Found out that one issue I was having with gdbserver was caused by an
incompatibility it has with zsh (sourceware bug 26116).
* Fixed a gdbserver crash in my code where a register set was NULL in
the target description.
* Now working on an issue where the target description says SVE isn't
supported, but the regsets information says they are. This is caused
by my code sometimes moving the first ptrace call to get the inferior
registers to a time before it is properly stopped.
# Sourceware bug 28561 - [gdb/testsuite] Error due to not reading \r\n
at end of mi prompt
* Set up a few containers and KVM guests to attempt to reproduce this
bug on different environments. Reproduced it successfully on an
openSUSE Leap 15.3 guest, as well as Ubuntu 20.04 and 22.04 containers
in said guest. I wasn't able to reproduce on Ubuntu 20.04 nor 22.04
guests. Suspecting it's a kernel issue where the fix was backported to
the Ubuntu kernels.
--
Thiago
Hello,
# [GNU-767] Support changing SVE vector length in remote debugging
- Rebased my code on current master branch.
- Ran into issues with running the GDB testsuite against gdbserver, both
on my branch and on master. Currently investigating.
- Regarding the ptrace issues I'm running into, at Richard's suggestion
I checked the errno and it's ESRCH. This means that the inferior isn't
in a state where gdbserver can fetch its registers. So maybe there's
a race condition in gdbserver itself and it's trying to do that before
the inferior is stopped. Currently investigating.
# Sourceware bug 28561 - [gdb/testsuite] Error due to not reading \r\n
at end of mi prompt
* Luis mentioned this bug so I started investigating it. Tried
reproducing it on Ubuntu 20.04 and 22.04 but without success.
Also tried setting up an openSUSE Leap 15.3 KVM guest to try to
reproduce it there, but the distro's installer hangs.
--
Thiago
Progress:
* UM-2 [QEMU upstream maintainership]
- Joint Linaro/Arm meeting on the Realm Management Extension (RME).
Mostly this was "how the software stack is going to work"; some
useful discussion on how this intersects with QEMU, both as a
potential emulation platform for software development and also
as the VMM for a realm-using KVM virtual machine.
- Kicked off a discussion thread on getting rid of the last parts
of our "ad-hoc CI" this release cycle. The main thing that's
not yet handled by Gitlab CI is FreeBSD and NetBSD hosts.
We might be able to do this if we can find an x86 Linux machine
to act as a gitlab runner (it needs to be able to run guest
BSD VMs).
* QEMU-422 [QEMU Arm Neoverse V1 vCPU for TCG]
- Several small features have now made it upstream so those
subtasks have been closed out
- Looking at FEAT_RASv1p1 and FEAT_DoubleFault. The first of these
is easy because we only model the minimal "no error records"
RAS: I think we can simply bump the ID register fields to
indicate support. The second is a little bit more interesting
because the new SCR_EL3.EASE bit means we suddenly have a
source of physical SErrors (from synchronous external aborts)
when we previously could not have any...
-- PMM
Hello,
# [GNU-767] Support changing SVE vector length in remote debugging
* Continued working on the testsuite regressions introduced by my code.
- Found out that the crash I was investigating (which happens when
gdbserver thinks that the kernel doesn't support SVE and crashes)
only occurs with kernel v5.4 from Ubuntu 20.04 and not with
Ubuntu 22.04's v5.15. In the former version,
ptrace(PTRACE_GETREGSET, …, NT_ARM_SVE, …) often returns -1 (but not
always) and gdbserver interprets this as meaning that SVE isn't
supported. The newer kernel always returns successfully from this
call. gdbserver still acts weird so there's more digging to do, but
at least it doesn't crash.
# Misc
- Took one day of vacation.
--
Thiago
Progress:
* UM-2 [QEMU upstream maintainership]
+ had a look at adding an option to allow semihosting from
userspace (handy for some test case purposes); have a working
prototype which I used to test the FEAT_IDST patch, but
probably won't pursue further until some refactoring of the
whole semihosting code has landed, to avoid conflicts
+ reading through the Realm Management Extension documentation:
there's a Linaro Kernel Working Group sprint in Cambridge
next week, and possible QEMU RME support is on the agenda
+ back before QEMU 6.0 we tried to fix a bug where QEMU always
provided 4 PMU counters, not the number the emulated CPU really
has. We had to revert that change before the 6.0 release, but
then forgot to go back and revisit it afterwards. Alex
reminded me of it this week, so I rebased it, fixed the problem
that meant it got reverted, and sent it out for review.
* QEMU-422 [QEMU Arm Neoverse V1 vCPU for TCG]
+ sent patch implementing FEAT_IDST
+ next up: FEAT_DoubleFault (likely a no-op for us, as we don't
ever have physical SErrors)
-- PMM
Hello,
# [GNU-767] Support changing SVE vector length in remote debugging
* Continued working on the testsuite regressions introduced by my code.
- Currently investigating a crash that happens when for some reason
gdbserver thinks that the kernel doesn't support SVE and crashes
while building the internal representation of the regular vector
registers.
# Misc
- Attended Google's Fuchsia boot camp.
--
Thiago
Progress:
* UM-2 [QEMU upstream maintainership]
+ tracked down the UEFI crash with KVM on AArch64 to a combination of
(a) host system was heterogenous and user hadn't restricted QEMU to
only running on one set of cores and (b) QEMU silently throws away
the error it gets from KVM in this situation, resulting in most
things seeming to work except that vcpu power on/off state isn't
written to KVM and so the guest starts with all vcpus running
instead of just the primary. We should really improve the error
handling, but I worry that that might break previously functional
setups...
+ tidied up some patches I wrote while doing the GICv4 work that
fix an odd inconsistency in our GIC emulation where we correctly
implement the right number of virtual priority bits for the CPU
but always provide 8 bits of physical priority regardless of what
the real CPU implementation should have, and sent them out for review
+ usual code review and pullreq management
* QEMU-422 [QEMU Arm Neoverse V1 vCPU for TCG]
+ Implemented support for FEAT_S2FWB and sent patches to the list
+ Next up is probably FEAT_IDST (ID space trap handling)
-- PMM
Hello,
# [GNU-767] Support changing SVE vector length in remote debugging
* Continued working on the testsuite regressions introduced by my code.
- Realised that gdbserver uses “thread->tdesc != NULL” as a proxy of
whether it has already attached to the inferior process. My change to
track the target description per-thread instead of per-process
invalidated this equivalence. Fixed a few places to use “proc->attached”
instead, which is the direct way of testing that condition.
- Now looking into an issue with gdbserver loading libthread_db.so.
# Misc
- Reviewed Tom Tromey's “[PATCH 00/36] C++-ify breakpoints” patch series¹.
Spotted one bug.
--
Thiago
¹ https://sourceware.org/pipermail/gdb-patches/2022-January/185256.html
msgid:20220118194007.2853108-1-tom@tromey.com
Progress:
* UM-2 [QEMU upstream maintainership]
+ investigating a bug report about the guest UEFI crashing on
startup when using KVM on AArch64 with an SMP guest (sadly I haven't
been able to repro it myself thus far)
* QEMU-422 [QEMU Arm Neoverse V1 vCPU for TCG]
+ audited code to check we can enable FEAT_TTL in QEMU (ie we ignore the
new TTL hint field in TLB invalidate operations)
+ audited code to check we can enable FEAT_BBM level 2 in QEMU
(our TLB implementation never allows multiple clashing TLB entries)
+ audited code to check we can enable SMMUv3.2-BBML2 in our SMMUv3
(our SMMU TLB does allow multiple entries but will always select
the one for the lowest level and ignore the others)
+ sent patches to advertise FEAT_TTL, FEAT_BBM, SMMUv3.2-BBML2 in
CPU and SMMU ID registers
-- PMM
Hello,
# [GNU-767] Support changing SVE vector length in remote debugging
* Found and fixed problem with the gdbserver prototype: it didn't clear the
registers cache when the target description changed. The prototype is
working now.
* Turned my attention to the testsuite regressions introduced by my changes.
Fixed one where gdbserver was crashing when debugging multi-threaded
programs, and now investigating one where gdbserver returns an error when
handling the ‘vRun’ remote protocol packet.
# Misc
* Public holiday on Thursday — but I took it on Friday instead.
--
Thiago
Progress (two half-weeks):
* UM-2 [QEMU upstream maintainership]
+ Got the 7.0 release out of the door and handed over pullrequest
processing to RTH for the 7.1 cycle \o/
+ Code review backlog now pretty nearly empty (worked through several
large patchsets from RTH as well as some smaller things)
+ two arm pullreqs for 7.1 sent out already
* QEMU-420 [GICv4 emulation]
+ The GICv4 emulation has now made it through code review and since
we've released 7.0 it is now in upstream git for 7.1
+ The GICv4.1 work has been moved to a new epic QEMU-479, as we're
not going to do that immediately
+ This epic is therefore closed!
-- PMM
Hello,
# [GNU-767] Support changing SVE vector length in remote debugging
* Implemented prototype of GDB and gdbserver changing the target
description in sync when the vg pseudo-register changes. The GDB side
seems to be working, but gdbserver still has issues which I'm
currently debugging.
# Misc
* Public holiday on Friday.
--
Thiago
Hello,
# [GNU-767] Support changing SVE vector length in remote debugging
* Got prototype of variable length vectors in GDB target descriptions
barely working, but fell down a rabbit hole trying to fix an issue
with the vector register size being misreported by ‘sizeof()’. Decided
to change tack and implement the simpler aim of updating the client
and server target descriptions in sync when the vector length changes.
This is Luis' idea from 2020¹, and closer to how native GDB debugging
currently works in this scenario.
--
Thiago
¹ https://sourceware.org/pipermail/gdb/2020-January/048341.html
Progress:
* UM-2 [QEMU upstream maintainership]
+ Finished sorting out the exynos4210 SoC interrupt wiring and sent
a patchset that cleans it up and makes it stop using qemu_split_irq()
+ rc3 tagged this week. We will need an rc4 next week for a couple of
late-breaking security fixes.
* QEMU-420 [GICv4 emulation]
+ Finished the last bits of debugging and wiring up GICv4 support on
the virt board, and sent initial patchset to the list for review:
https://patchew.org/QEMU/20220408141550.1271295-1-peter.maydell@linaro.org/
-- PMM
Hello,
# [GNU-767] Support changing SVE vector length in remote debugging
* Moved tracking of this work from GNU-732 (GDB support for SME) to
more specific story GNU-767.
* Started writing prototype of variable length vectors in GDB target
descriptions.
# Basic setup / onboarding
- Read a couple more Linaro processes documents.
# Misc
* Attended Linaro Connect Tech Day: Core Technologies.
--
Thiago
Project Stratos
===============
- more follow-up on Re: Understanding osdep_xenforeignmemory_map mmap
behaviour Message-Id:
<alpine.DEB.2.22.394.2203231838130.2910984@ubuntu-linux-20-04-desktop>
- various Stratos sync-ups
vhost-device maintainer effort ([UM-196])
- bit of maintainer review work
Linux RPMB Sub-system and virtio-driver ([STR-40])
- got [kernel] and [vhost-user] daemon passing all tests with
multi-block reads/writes
- will clean-up series next week for posting to the lists
[STR-40] <https://linaro.atlassian.net/browse/STR-40>
[kernel]
<https://git.linaro.org/people/alex.bennee/linux.git/tag/?h=testing/vrpmb-re…>
[vhost-user]
<https://github.com/stsquad/qemu/tree/virtio/vhost-user-rpmb-v2>
QEMU Upstream Work ([UM-2])
===========================
- posted [PATCH v1 0/2] some tests and plugin tweaks for SVE
Message-Id: <20220328152614.2452259-1-alex.bennee(a)linaro.org>
- posted [PATCH v3] tests/avocado: update aarch64_virt test to
exercise -cpu max Message-Id:
<20220328161357.2464572-1-alex.bennee(a)linaro.org>
- posted [RFC PATCH] docs/devel: add some notes on the
binfmt-image-debian targets Message-Id:
<20220329095041.2758355-1-alex.bennee(a)linaro.org>
[UM-2] <https://linaro.atlassian.net/browse/UM-2>
Other
=====
- Presented [LTD 2022 QEMU talk]
- attneded some others
[LTD 2022 QEMU talk]
<https://resources.linaro.org/en/resource/tL9M2yyti73StqK1d9ap8f>
Completed Reviews [1/1]
=======================
[PATCH 00/15] tests/docker and tests/tcg cleanup and diet
Message-Id: <87czi6xbzo.fsf(a)linaro.org>
Absences
========
Current Review Queue
====================
TODO [PATCH 00/17] tests/docker and tests/tcg cleanup and diet
Message-Id: <20220401141326.1244422-1-pbonzini(a)redhat.com>
========================================================================================================================
TODO [RFC PATCH 0/6] softfloat 128-bit integer support
Message-Id: <20220328201442.175206-1-matheus.ferst(a)eldorado.org.br>
=========================================================================================================================
TODO [PATCH for-7.1 v2 00/39] Logging cleanup and per-thread logfiles
Message-Id: <20220326132534.543738-1-richard.henderson(a)linaro.org>
=======================================================================================================================================
--
Alex Bennée
Progress (short week, 2 days):
* UM-2 [QEMU upstream maintainership]
+ More of the usual freeze-related work
+ Tracked down and fixed assertion when running with clang sanitizers
+ We finally got a Coverity Scan run through for the first time in a
month or two, and it was full of new issues. Spent some time going
through them and marking false positives or reporting the problems
back to original code authors to be fixed
+ Looking at the tangle of interrupt lines in our exynos4210 SoC
model -- this needs a refactoring and cleanup so we can get rid
of its uses of an obsolete function
-- PMM
Hello,
# [GNU-732] GDB support for ARMv9 Scalable Matrix Extension (SME)
* Continued working on gdbserver and remote protocol support for
programs that change the SVE vector length during execution:
- Studied the 2020 discussion around Luis' proposal to support changed
VL size in the Remote Serial Protocol / gdbserver, as well as
relevant parts of the RSP itself.
- Started studying GDB's type system and how it handles dynamic types,
and also the target description code to assess the feasibility of
making the vector registers use a dynamically sized type.
- Luis made a second proposal in that mailing list discussion where
the target description wouldn't be transferred via the remote
protocol, just the vector length. Then both GDB and gdbserver could
locally update their own descriptions based on that. Starting to
think about this alternative. It would probably be simpler than
changing the target description to use a dynamically sized type for
the Z registers.
# Basic setup / onboarding
* Work laptop arrived. Set it up.
--
Thiago
Progress:
* UM-2 [QEMU upstream maintainership]
+ More of the usual freeze-related work
* QEMU-420 [GICv4 emulation]
+ I think the code is more or less bug-free now; still need to
figure out the best way for a board to request a GICv4
(eg do we want a 'revision' property specifying 3, 3.1, 4, 4.1,
or just 3 vs 4 with some optional booleans for extra features?)
-- PMM
Hello,
# [GNU-732] GDB support for ARMv9 Scalable Matrix Extension (SME)
* Continued reading patches from Mark Brown's v12 patch set adding SME
support to the Linux kernel. Sent a few trivial review comments.
* After conversation with Luis, decided to work on gdbserver and remote
protocol support for programs which change the SVE vector length
during execution (native GDB already supports it). This issue will
most likely be relevant for SME as well. Started by studying Luis'
proposal from 2020 and background information provided by him.
# Basic setup / onboarding
* Bought a work laptop.
* Set up access to the team's machines.
--
Thiago
Progress (for a week-and-a-half)
* UM-2 [QEMU upstream maintainership]
+ Lots of freeze-related work (softfreeze was last week and we tagged
rc0 this week)
+ Code review of other peoples's stuff to go into the release
+ Assembling arm pullreqs
+ Investigating an intermittent failure in one of our test cases on
s390 host, which seems like it may be a bug in the s390
h/w-accelerated zlib
* QEMU-420 [GICv4 emulation]
+ Still debugging...
-- PMM
Hello,
I see this release gcc-linaro-4.9-2016.02 for 86_64_arm-linux-gnueabihf:
https://releases.linaro.org/components/toolchain/binaries/4.9-2016.02/arm-l…
and would like to reproduce the toolchain for aarch64 hosts. I see that it was built with ABE, though I have generally been unsuccessful in getting ABE to work on aarch64 for this. I was looking for some build or ci breadcrumbs or documentation. What can you recommend?
The motivation here is to support legacy development/testing from modern aarch64 hardware.
Cheers,
Joe Gorse
Hello,
# GDB support for ARMv9 Scalable Matrix Extension (SME)
- Synced with Luis Machado to learn what the current status is. Read
discussions in the linux-arm-kernel mailing list which he pointed to.
- Read Arm architecture documentation about Neon, SVE, SVE2 and SME to
familiarise myself with these features.
- Basic setup / onboarding
- Joined some internal and external mailing lists, IRC and Slack
channels.
- Read some company policy documents.
- Researched models and got a quote for a work laptop.
- Set up aarch64 cross-compilation environment on my laptop.
- Set up emulated aarch64 machine with Fedora on my laptop.
- Attempted setting up emulated aarch64 machine with Ubuntu on my
laptop, but ran into problems with the Ubuntu Server installer.
--
Thiago
Project Stratos
===============
- spent some time talking through design approaches for xen
vhost-master with Viresh
Linux RPMB Sub-system and virtio-driver ([STR-40])
- continued working on [Linux driver]
- discovered a bug in vhost-user config handling in QEMU as well
[STR-40] <https://linaro.atlassian.net/browse/STR-40>
[Linux driver]
<http://git.linaro.org/people/alex.bennee/linux.git/shortlog/refs/heads/rpmb…>
QEMU Upstream Work ([UM-2])
===========================
- posted [PULL 00/18] testing and semihosting updates Message-Id:
<20220301094715.550871-1-alex.bennee(a)linaro.org>
Other
=====
- started work on presentation for LTD
Completed Reviews [5/5]
=======================
[PATCH] gdbstub.c: add support for info proc mappings
Message-Id: <20220221030910.3203063-1-dominik.b.czarnota(a)gmail.com>
[PATCH] tests/Makefile.include: Let "make clean" remove the TCG tests, too
Message-Id: <20220301085900.1443232-1-thuth(a)redhat.com>
[PATCH 0/3] gdbstub: add support for switchable endianness
Message-Id: <20210823142004.17935-1-changbin.du(a)gmail.com>
[PATCH 0/6] More record/replay acceptance tests
Message-Id: <162332427732.194926.7555369160312506539.stgit@pasha-ThinkPad-X280>
[PATCH v6 00/43] CXl 2.0 emulation Support
Message-Id: <20220211120747.3074-1-Jonathan.Cameron(a)huawei.com>
Absences
========
Current Review Queue
====================
TODO [PATCH v4 00/18] target/arm: Implement LVA, LPA, LPA2 features
Message-Id: <20220301215958.157011-1-richard.henderson(a)linaro.org>
=====================================================================================================================================
TODO [RFC PATCH 00/27] Virtio sound card implementation
Message-Id: <20210429120445.694420-1-chouhan.shreyansh2702(a)gmail.com>
============================================================================================================================
TODO [PATCH v4 00/41] linux-user: Streamline handling of SIGSEGV
Message-Id: <20211006172307.780893-1-richard.henderson(a)linaro.org>
==================================================================================================================================
--
Alex Bennée
Progress
* UM-2 [QEMU upstream maintainership]
+ Looked at and sent patches to fix a minor decode error for Neon
VLD1/VST1 that RTH found
+ softfreeze is next Tuesday -- sent out last big Arm pullreq before
freeze, though there will probably need to be another smaller one
+ code review, respinning previously sent patches, looking at bug
reports, all to get things in before freeze
* QEMU-420 [GICv4 emulation]
+ All the GICv4.0 stuff is now code-complete, but testing and
loose ends (like plumbing it into the virt board) will take a
while still.
-- PMM