(Short week: 4 days, bank holiday)
Current Milestones:
|| || Planned || Estimate || Actual ||
|| clean up kvm-qemu cp i/f || 2012-09-20 || 2012-09-20 || ||
|| fake-trustzone || 2012-10-15 || 2012-10-15 || ||
Also planned: general keeping up with kernel changes; upstream patch
review; qemu-linaro releases. May change dates to align with overall
KVM plan for the quarter when that is finalised.
Previous Milestones:
||cp15-rework || 2012-01-06 || 2012-06-23 || 2012-06-24 ||
||a15-lpae-support || 2012-07-13 || 2012-07-20 || 2012-07-20 ||
== track-kvm-abi-changes ==
* working through design of how we do sync of register state between
QEMU and the kernel and how we handle migration (the two turn out
to be related and I now have a nice looking design that resolves
both of these at once)
* both the interrupt injection ABI and the coprocessor access
ABI are changing (again!)
== other ==
* fixed an embarrassing bug which made qemu-system-arm segfault
on 32 bit hosts; luckily spotted just in time for QEMU 1.2 release
* AFDS (annual review) season again
KVM blueprint progress tracker:
http://ex.seabright.co.nz/helpers/backlog?group_by=topic&colour_by=state&pr…
-- PMM
== Progress ==
* Bank Holiday on Monday
* Got symbol_ref split benchmarking going
* Hot/Cold partitioning in PGO:
* https://blueprints.launchpad.net/gcc-linaro/+spec/hot-cold-partitioning-in-…
* Investigated and fixed all compile-time failures in SPEC
* Investigated and fixed a silent code-gen fault in SPEC
== Next Week ==
* Look at symbol_ref split benchmarking results
* Hot/Cold Partitioning:
* Investigate remaining silent code-gen faults and non-termination
issue in SPEC
* If failures are fixed start profiledbootstraps and tests on the
central boards.
== Future ==
* Look at Cards for Vectorization, PGO and LTO with Michael.
--
Matthew Gretton-Dann
Linaro Toolchain Working Group
matthew.gretton-dann(a)linaro.org
== Progress ==
* Validation of my vext patch in big-endian mode proved that proper
support would be non-trivial.
Spent a lot of time writing a self-testing executable test, which
works in both big and little endian modes.
Posted an updated patch which makes no optimization in big-endian.
After discussion with Ramana, I will post a 2nd patch which improves
the testing in big-endian mode.
* In the process, wrote a patch to fix 3 other testcases which used to
fail in big-endian mode.
* Received no answer from the original contributor of bswap16 support patch.
== Next ==
* Have my vext patch accepted on trunk.
* Continue with bswap16 support.
(Short week: 3 days)
Current Milestones:
|| || Planned || Estimate || Actual ||
|| clean up kvm-qemu cp i/f || 2012-09-20 || 2012-09-20 || ||
|| fake-trustzone || 2012-10-15 || 2012-10-15 || ||
Also planned: general keeping up with kernel changes; upstream patch
review; qemu-linaro releases. May change dates to align with overall
KVM plan for the quarter when that is finalised.
Previous Milestones:
||cp15-rework || 2012-01-06 || 2012-06-23 || 2012-06-24 ||
||a15-lpae-support || 2012-07-13 || 2012-07-20 || 2012-07-20 ||
== clean-up-kvm-patches ==
* patches as they stand look good; currently blocked waiting
for changes to go into kernel side
== track-kvm-abi-changes ==
* thinking about some interesting corner cases in accessing
cp15 state via KVM, notably how userspace should get at the
cache ID registers, which are exposed by hardware as a "select"
and "read value of selected register" cp15 register pair.
Consensus seems to be that the kernel should deal with converting
this into a simple interface that userspace can use to just
read all the ID register state at once.
== other ==
* fixed breakage in ARM TCG host support (recent changes had failed
to account for the ABI requirement that 64 bit arguments to functions
must be passed in even-odd register pairs)
* KVM bootwrapper: pushed 64-bit-addresses-in-dtb patch to main repo;
reviewed patch from Guodong Xu adding uInitrd support
KVM blueprint progress tracker:
http://apus.seabright.co.nz/helpers/backlog?group_by=topic&colour_by=state&…
-- PMM
The Linaro Toolchain Working Group is pleased to announce the 2012.08
release of the Linaro Toolchain Binaries, a pre-built version of
Linaro GCC and Linaro GDB that runs on generic Linux or Windows and
targets the glibc Linaro Evaluation Build.
Uses include:
* Cross compiling ARM applications from your laptop
* Remote debugging
* Build the Linux kernel for your board
What's included:
* Linaro GCC 4.7 2012.08
* Linaro GDB 7.4 2012.06
* A statically linked gdbserver
* A system root
* Manuals under share/doc/
The system root contains the basic header files and libraries to link
your programs against.
Interesting changes include:
* Enable threaded gold linker in Linux package
The Linux version is supported on Ubuntu 10.04.3 and 12.04, Debian
6.0.2, Fedora 16, openSUSE 12.1, Red Hat Enterprise Linux Workstation
5.7 and later, and should run on any Linux Standard Base 3.0
compatible distribution. Please see the README about running on
x86_64 hosts.
The Windows version is supported on Windows XP Pro SP3, Windows Vista
Business SP2, and Windows 7 Pro SP1.
The binaries and build scripts are available from:
https://launchpad.net/linaro-toolchain-binaries/trunk/2012.08
Need help? Ask a question on https://ask.linaro.org/
Already on Launchpad? Submit a bug at
https://bugs.launchpad.net/linaro-toolchain-binaries
On IRC? See us on #linaro on Freenode.
Other ways that you can contact us or get involved are listed at
https://wiki.linaro.org/GettingInvolved.
Summary:
* Identify the root cause of performance regression for the "split2" patch.
* Validate Linaro binary toolchain prerelease.
Details:
1. Identify the root cause of performance regression for the "split2" patch.
* Code alignment is the root cause for the performance regression
(Michael reproduced it with "__attribute__ ((aligned(16)))").
* "build-id" section is the root cause of result difference from
cbuild test (the additional section makes the function address
different).
* Workout a small case to show the impact of code alignment on performance.
2. Linaro binary toolchain 2012.08 prerelease validation. All tests pass.
Absence:
* Annual leave: Aug. 24.
Plans:
* Linaro binary toolchain 2012.08 release.
* Start shink-wrap work.
Best regards!
-Zhenqiang
== Progress ==
* Fixed problems with my patch for "constant vec permute operation for
the vext instruction" blue-print, validated in cbuild.
* Ported it to trunk and submitted for review. R.Earnshaw requested
validation on big-endian. I need to upgrade my qemu to have it
supported.
* Compiled my Neon intrinsics testsuite with LLVM (version 3.2 trunk 160543).
It compiles at O0/O1/O2/O3, but only O0 produces the expected results.
Errors include: vset_lane, vld3, and vld4.
* Started looking a bswap16 support
== Next ==
* Have my "constant vec permute operation for the vext instruction"
patch accepted on trunk
* Continue with bswap16 support.
== Progress ==
* Follow up from 2012.08 Toolchain release
* Updated Wiki pages
* Start working on symbol_ref split benchmarking.
* Backport to PR54212 done upstream to 4.6 and 4.7
* Started picking up Hot/Cold partitioning in PGO blueprint:
* https://blueprints.launchpad.net/gcc-linaro/+spec/hot-cold-partitioning-in-…
* Got SPEC running locally and I think I have reproduced Ramana's failures.
== Next Week ==
* Bank Holiday on Monday
* Investiagte SPEC failures in Hot/Cold PGO
* Get symbol_ref benchmarking going properly
== Future ==
* Look at Cards for Vectorization, PGO and LTO with Michael.
--
Matthew Gretton-Dann
Linaro Toolchain Working Group
matthew.gretton-dann(a)linaro.org
(cc'd to linaro-toolchain to archive)
Hi Matt. I've had a look at the manual builds you tried to spawn.
Here's what I did to run cbuild locally to test it:
* cd linaro
* bzr branch lp:cbuild
* cd cbuild/slaves
* cp -a example `hostname`
* cd `hostname`
* make -f ../../lib/build.mk final/gcc-4.8+svn190558.stamp
I'm not proud of the whole 'slaves/$hostname' setup, but it is what it is.
Results are in $version, such as gcc-4.8+svn190558. The build tree is
in $version/gcc/default/build. Nuke using rm -rf final results
$version. See lib/common.mk and override the email address etc in
local.mk to stop build results going out You should put a proxy in
$http_proxy or ~/.wgetrc to reduce the download cost. Please add to
the cbuild README.
A nit: we use the Debian versioning scheme so the version should be
4.8~svn190558, i.e. a SVN checkout leading up to 4.8. Compare with
4.7+svn1234, which is a SVN checkout of the 4.7 branch.
The tarballs look generally good. I've spawned them into the a9hf
queue as that's what we benchmark on. Note that they're low priority
due to not having 'linaro' in the name.
-- Michael
Zhenqiang's been working on the later split 2 patch which causes more
constants to be built using a movw/movt instead of a constant pool
load. There was an unexpected ~10 % regression in one benchmark which
seems to be due to function alignment. I think we've tracked down the
reason but not the action.
Compared to the baseline, the split2 branch took 113 % of the time to
run, i.e. 13 % longer. Adding an explicit 16 byte alignment to the
function changed this to 97 % of the time, i.e. 3 % faster. The
reason Zhenqiang and I got different results was the build-id. He
used the binary build scripts to make the cross compiler, which turn
on the build ID, which added an extra 20 bytes ahead of .text, which
happened to align the function to 16 bytes. cbuild doesn't use the
build-id (although it should) which happened to align the function to
an 8 byte boundary.
The disassembly is identical so I assume the regression is cache or
fast loop related. I'm not sure what to do, so let's talk about this
at the next performance call.
-- Michael
All,
I have updated the minutes from today's Performance Call here:
https://wiki.linaro.org/WorkingGroups/ToolChain/Meetings/2012-08-21
The following are the actions from the meeting:
* michaelh to folow-up and ping Mans on getting a hold of his benchmark runs
* michaelh to investigate regression with movw/movt patch by hand
* mgrettondann to run current symbol ref splitting patch over SPEC
against FSF trunk
* michaelh to point mgrettondann to existing cards
* michaelh and mgrettondann to start writing card for PGO work
* mgrettondann to pick up Hot/Cold Partitioning patch from ramana,
cross-test against SPEC for correctness, and then do a benchmarking
run
* ramana to create a Blueprint for min-idion in middle-end and
update Todo list with link
* mgrettondann to update todo list with changes in 2012.08 release.
* zchen to work on shrink-wrapping
* clyon to update his vext patch
The next meeting is on 4 September and a proposed Agenda is here:
https://wiki.linaro.org/WorkingGroups/ToolChain/Meetings/2012-09-04
Please add any items you wish to discuss to the agenda.
Thanks,
Matt
--
Matthew Gretton-Dann
Linaro Toolchain Working Group
matthew.gretton-dann(a)linaro.org
On 18 August 2012 12:06, Ramana Radhakrishnan
<ramana.radhakrishnan(a)linaro.org> wrote:
> This should have been fixed by this patch . I'm a bit surprised that
> we are seeing these failures still ?
>
> ../ports/sysdeps/unix/sysv/linux/arm/ldsodefs.h:41:0: warning:
> "MORE_ELF_HEADER_DATA" redefined [enabled by default]
>
> http://permalink.gmane.org/gmane.comp.lib.glibc.ports/1428
>
> which should have made it back to eglibc 2.16 ?
Well, that's embarrassing. The eglibc script is used to both build
eglibc and to use a fixed eglibc to test GCC. The latter was winning
so every snapshot build was actually building eglibc 2.12.
Fixed and testing,
-- Michael
Current Milestones:
|| || Planned || Estimate || Actual ||
||cp15-rework || 2012-01-06 || 2012-06-23 || 2012-06-24 ||
||a15-lpae-support || 2012-07-13 || 2012-07-20 || 2012-07-20 ||
||clean-up-kvm-patches || || || ||
||track-kvm-abi-changes || || || ||
||fake-trustzone || || || ||
== clean-up-kvm-patches ==
* started on driving "read/write cp15 regs from kernel" from the existing
QEMU hashtable of cp regs it knows about. First cut seems to work,
but needs more testing and also qemu's ARMCPRegInfo struct needs to
provide raw_read/write methods which bypass access permission and
similar checks.
== other ==
* shepherded various things into upstream QEMU for 1.2 release freeze:
arm-devs patch queue, linux-user patches, some minor stuff
* qemu-linaro 2012.08 released
* travel booked for Connect/ELC-E/KVM Forum; rest is blocked on
the Connect conference hotel discount rate/booking info appearing
KVM blueprint progress tracker:
http://apus.seabright.co.nz/helpers/backlog?group_by=topic&colour_by=state&…
-- PMM
The Linaro Toolchain Working Group is pleased to announce the 2012.08
release of both Linaro GCC 4.7 and Linaro GCC 4.6.
Linaro GCC 4.7 2012.08 is the fifth release in the 4.7 series. Based
off the latest GCC 4.7.1+svn189992 release, it includes many
ARM-focused performance improvements and bug fixes.
Interesting changes include:
* Updates to GCC 4.7.1+svn189992
* An ABI fix for vectors with the wrong layout
* Backports improvements to the NEON vdup instruction with immediates
* Backports a fix to performance regressions in partial redundancy
elimination at high optimisation
* Backports faster 64 bit core register adds with immediates
A bug has been fixed in GCC's implementation of the AAPCS rules for
the layout of vectors that could lead to wrong code being generated.
Vectors larger than 8 bytes in size are now by default aligned to an
8-byte boundary. This is an ABI change: code that makes explicit use
of vector types may be incompatible with binary objects built with
older versions of GCC. Auto-vectorized code is not affected by this
change.
Fixes:
* LP: #1020601 Strange behaviour with __builtin_unreachable()
* PR38785 huge performance regression on EEMBC bitmnp01
* PR53447 missed optimization of 64bit ALU operation with small constant
Linaro GCC 4.6 2012.08 is the eighteenth release in the 4.6 series.
Based off the latest GCC 4.6.3+svn189991 release, this is the fifth
release after entering maintenance.
Interesting changes include:
* Updates to 4.6.3+svn189991
* An ABI fix for vectors with the wrong layout
The source tarballs are available from:
https://launchpad.net/gcc-linaro/+milestone/4.7-2012.08https://launchpad.net/gcc-linaro/+milestone/4.6-2012.08
Downloads are available from the Linaro GCC page on Launchpad:
https://launchpad.net/gcc-linaro
More information on the features and issues are available from the
release page:
https://launchpad.net/gcc-linaro/4.7/4.7-2012.08
Mailing list: http://lists.linaro.org/mailman/listinfo/linaro-toolchain
Bugs: https://bugs.launchpad.net/gcc-linaro/
Questions? https://ask.linaro.org/
Interested in commercial support? Inquire at support(a)linaro.org
-- Michael
== Progress ==
* Out of office Friday 17
* Attended Virtual Connect sessions:
* Vectorization
* PGO/LTO: provided benchmarking results on Webkit computed in ST last
year.
* At last managed to have bzr working
* Prepared a patch for "constant vec permute operation for the vext
instruction" blue-print, based on linaro-gcc/4.7
* Some pending internal work
== Next week ==
* Out of office Monday 20
* Check reviews for my patch to have it accepted.
Hi Matt. I've fleshed out the Etherpad for the PGO and LTO session at:
http://pad.linaro.org/GzRj35tXFt
It's a topic list that needs some specifics. Could you make sure we
have basic answers to any correctness or performance questions?
Ramana, could you add the specifics from the performance call? I
can't seem to find the right meeting in the logs.
-- Michael
== Progress ==
* Out of office Friday 17
* Attended Virtual Connect sessions
* Vectorization
* Ran PGO/LTO session
* Lurked on AArch64/OpenEmbedded and Dalvik Performance sessions
* Did the 2012.08 release of the Toolchain
* Ran into infrastructure problems with armv5 builds
* Most of the build process is now done
* Start working on symbol_ref split benchmarking.
* Struggled to get my jobs to spawn
* Started to backport Ramana's fix to PR54212
* Submitted merge request for 4.7 backport
== Next Week ==
* Ensure 2012.08 release is completed
* Get symbol_ref benchmarking going properly
* Complete backports of PR54212
* Follow up to Virtual Connect Sessions
== Future ==
* Get my name against some blue-prints
* Find a small patch to GCC to use to pipeclean the submission process
--
Matthew Gretton-Dann
Linaro Toolchain Working Group
matthew.gretton-dann(a)linaro.org
The Linaro Toolchain Working Group is pleased to announce the release of
Linaro QEMU 2012.08.
Linaro QEMU 2012.08 is the latest monthly release of qemu-linaro. Based
off upstream (trunk) QEMU, it includes a number of ARM-focused bug fixes
and enhancements.
There are no major changes in this month's release, though
it has been updated to track the latest upstream QEMU changes.
The source tarball is available at:
https://launchpad.net/qemu-linaro/+milestone/2012.08
More information on Linaro QEMU is available at:
https://launchpad.net/qemu-linaro
On 15 August 2012 00:45, Matthew Gretton-Dann
<matthew.gretton-dann(a)linaro.org> wrote:
> So looking at the logs this seems to be a transient data transfer error:
>
> The logs (http://builds.linaro.org/toolchain/gcc-linaro-4.7-2012.08/logs/armv7l-natty…)
> have:
>
> make[4]: Entering directory `/scratch/cbuild/slave/slaves/tcpanda02'
> make -s -f ../../lib/fetch.mk
> gcc-linaro-4.7-2012.08/gcc-linaro-4.7-2012.08.tar-spawn 2>&1 | grep -v
> '^make\['
> Trying http://builds.linaro.org/toolchain/snapshots/gcc-linaro-4.7/gcc-linaro-4.7-…
> Trying http://ex.seabright.co.nz/snapshots/gcc-linaro-4.7/gcc-linaro-4.7-2012.08.t…
> Trying http://builds.linaro.org/toolchain/snapshots/gcc-linaro-4.7-2012.08.tar.xz
> Trying http://ex.seabright.co.nz/snapshots/gcc-linaro-4.7-2012.08.tar.xz
> Trying http://builds.linaro.org/toolchain/snapshots/gcc-linaro-4.7/gcc-linaro-4.7-…
> Trying http://ex.seabright.co.nz/snapshots/gcc-linaro-4.7/gcc-linaro-4.7-2012.08.t…
> Trying http://builds.linaro.org/toolchain/snapshots/gcc-linaro-4.7-2012.08.tar.bz2
> Trying http://ex.seabright.co.nz/snapshots/gcc-linaro-4.7-2012.08.tar.bz2
> bunzip2: gcc-linaro-4.7-2012.08/gcc-linaro-4.7-2012.08.tar.bz2: data
> integrity (CRC) error in data
Not sure here. ex.seabright is the authoritative source. Perhaps
there was a fault with the proxy in the control lab?
The good news is that the test fired and the build failed early. I've
logged LP: #1036867 to see if it happens again.
> The x86_64 build has succeeded OK though, so I (well Ramana really)
> have, eventually, restarted that build. We did encounter some issues
> with restarting the build as follows:
>
> 1) My Launchpad ID doesn't have permissions to spawn jobs through the
> web interface at ex.seabright.co.nz
Fixed.
> 2) So I attempted to spawn the job manually as follows:
>
> $ ssh -p7023 cbuild(a)ex.seabright.co.nz ./cbuild/tools/spawn.sh
> gcc-linaro-4.7-2012.08 armv5-builder
> Spawning gcc-linaro-4.7-2012.08 into the queue benchmarks
> Spawned into a9-builder
>
> This wasn't exactly what I expected. What are the correct runes
> here to get a build?
Spawn picks the closest spawn class based on the filename or, if
supplied, the second argument. Here you supplied 'armv5...' which is
closest to 'benchmarks'.
What you want is to click 'Release' beside the job name in the
scheduler view, to respawn through the /spawn interface, or to touch
the .job file in cbuild@orion:~/queue/armv5-builder.
> I've left this job in place as I've probably done enough damage already...
>
> 3) Ramana then attempted to use the web-interface at
> http://ex.seabright.co.nz/helpers/recent to get the job to rebuild
> (http://ex.seabright.co.nz/helpers/scheduler/spawn?queue=armv7l&job=gcc-lina…).
> However, this results in a Python exception.
Real men don't use user-friendly argument checking :) Well, not on
hacks like this tool. There is no armv7l queue so an assert fired.
> 4) Finally we used Ramana's credentials on the spawn interface, and
> that seems to have spawned the rebuild correctly.
Good.
> I'll let this run and see what happens.
>
> Michael, can you just check that things are progressing properly
> please, and also give me appropriate permissions on the web interface?
Checking:
http://ex.seabright.co.nz/helpers/buildlog/gcc-linaro-4.7-2012
shows that the build finished on x86_64 and i686. Checking /scheduler
shows that ARM builds are in progress on a9hf, a9, and armv5. Most
are in the testsuite and have ~6 hours to go.
-- Michael
== Progress ==
Linaro tasks.
* Some work on the intrinsics patches.
* Looked into auto-inc-dec stuff. Not enough improvements with scheduler
changes.
* Helped Matt get up to speed and wrote up some stuff for Christophe
with the vext examples.
* Investigated a bug that Mans reported upstream with the compiler
generating vdupeq . Have a patch being tested.
== Plans ==
* Finish up pending patches upstream. (neon intrinsics patches need to
be committed)
* Finish handing over patches.
* Fix PR54212.
Looks like I missed sending this for 2 weeks in a row.
== Progress ==
Linaro tasks.
* Some upstream discussions on neon testsuite bug. Poked at ML for
quite a bit. Looks like regexps in the neon intrinsics testsuite is
just wrong.
* Looking at a better way of doing the 64 bit arithmetic patches that
carrot proposed. Don't like them.
* Discussed with Richard about ubfx for a while.
* Reviewed the backlog and came up with suggestions for things for
people to do . Thought a bit about some stuff that Michael asked me to
look at .
== Plans ==
* Look at auto-inc-dec patches more and investigate benchmark results.
* Follow up on Intrinsics work.
* Follow-up on my intrinsics patches upstream.
* Finish looking at PR53664 and clean up testsuite further.
* Set up a TC2 for Linaro for benchmarking in the validation lab.
== Absences ==
* 17th Sept - 5th Oct - Vacation approved.
* 29th Oct - 5th Nov - Copenhagen Linaro Connect. Travel and hotel to
be booked.
All,
Is there anything left to go into the branches that needs to be in the
releases this week?
I believe Uli's patches have gone in - is there anything else required?
I will start spinning the releases around 0800 UTC tomorrow if nothing
else is needed for the release.
Thanks,
Matt
--
Matthew Gretton-Dann
Linaro Toolchain Working Group
matthew.gretton-dann(a)linaro.org
I would like to run Ubuntu 12.04 on a A9 Cortex-MP/armv7-a
development system that has *no FPU* hardware floating point unit.
Does this mean the entire toolchain needs to be recompiled?
Could you please shed light on appropriate settings
(toolchain and/or kernel) soft FPU emulation related options
for armv7-a without a FPU?
Thank...Peter
== Progress ==
* Started Linaro ramp up process
* Lots of admin, PC setup, Linaro docs reading
* Still unable to make bzr work. Investigating proxy restrictions.
* Started working on "constant vec permute operation for the vext
instruction"
* Still some pending internal work
== Next week
* Out of office Wed 15, Friday 17 and Monday 20
* Attend appropriate Virtual Connect sessions
* Progress on "constant vec permute operation for the vext instruction"