[re-adding cc list, assuming didn't hit reply-all?]
On Tue, 14 Mar 2017 19:12:08 +0000 Mike Leach mike.leach@linaro.org wrote:
Linaro appear to have removed that release from their repo:
http://releases.linaro.org/components/toolchain/binaries/
So I used this one - which AFAICT is the closest to your version - to cross-build both the kernel with your config, and perf:
aarch64-linux-gnu-gcc (Linaro GCC 4.9-2016.02) 4.9.4 20151028 (prerelease)
Building perf didn't require the patch I sent due to an old gcc bug that apparently finally got fixed recently:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=28901
I then ran the resulting kernel (which still had the extra patch, so commit 0d15341 == c50837 + the patch), and perf:
root@juno:~# ./perf --version perf version 4.11.rc1.gc50837 root@juno:~# strings -a perf | grep "GCC: (" GCC: (Linaro GCC 4.9-2016.02) 4.9.4 20151028 (prerelease) root@juno:~# dmesg | grep gcc [ 0.000000] Linux version 4.11.0-rc1-g0d15341 (kim@dupont) (gcc version 4.9.4 20151028 (prerelease) (Linaro GCC 4.9-2016.02) ) #3 SMP PREEMPT Tue Mar 14 22:41:34 CDT 2017 root@juno:~# taskset -c 2 ./perf record -e cs_etm/@20070000.etr/u --per-thread taskset -c 2 uname [ 870.355660] coresight-replicator-qcom 20120000.replicator: REPLICATOR enabled [ 870.362736] coresight-funnel 20150000.funnel: FUNNEL inport 0 enabled [ 870.369127] coresight-tmc 20010000.etf: TMC-ETF enabled [ 870.374304] coresight-funnel 20040000.funnel: FUNNEL inport 0 enabled [ 870.380698] coresight-funnel 220c0000.funnel: FUNNEL inport 1 enabled [ 870.387858] coresight-funnel 220c0000.funnel: FUNNEL inport 1 disabled [ 870.394325] coresight-funnel 20040000.funnel: FUNNEL inport 0 disabled [ 870.400806] coresight-tmc 20010000.etf: TMC disabled [ 870.405722] coresight-funnel 20150000.funnel: FUNNEL inport 0 disabled [ 870.412184] coresight-replicator-qcom 20120000.replicator: REPLICATOR disabled [ 870.419350] coresight-tmc 20070000.etr: TMC-ETR disabled [ 870.425083] coresight-replicator-qcom 20120000.replicator: REPLICATOR enabled [ 870.432153] coresight-funnel 20150000.funnel: FUNNEL inport 0 enabled [ 870.438542] coresight-tmc 20010000.etf: TMC-ETF enabled [ 870.443718] coresight-funnel 20040000.funnel: FUNNEL inport 0 enabled [ 870.450112] coresight-funnel 220c0000.funnel: FUNNEL inport 1 enabled Linux [ 870.476156] coresight-funnel 220c0000.funnel: FUNNEL inport 1 disabled [ 870.482625] coresight-funnel 20040000.funnel: FUNNEL inport 0 disabled [ 870.489106] coresight-tmc 20010000.etf: TMC disabled [ 870.494023] coresight-funnel 20150000.funnel: FUNNEL inport 0 disabled [ 870.500485] coresight-replicator-qcom 20120000.replicator: REPLICATOR disabled [ 870.507651] coresight-tmc 20070000.etr: TMC-ETR disabled [ perf record: Woken up 2 times to write data ] [ perf record: Captured and wrote 0.015 MB perf.data ]
which appears to have worked the first time.
Then I tried a second time - literally up-arrow, enter - and got the same exact hard hang as I get with the modern compilers the first time:
root@juno:~# taskset -c 2 ./perf record -e cs_etm/@20070000.etr/u --per-thread taskset -c 2 uname [ 1965.355162] coresight-replicator-qcom 20120000.replicator: REPLICATOR enabled [ 1965.362238] coresight-funnel 20150000.funnel: FUNNEL inport 0 enabled [ 1965.368629] coresight-tmc 20010000.etf: TMC-ETF enabled [ 1965.373807] coresight-funnel 20040000.funnel: FUNNEL inport 0 enabled [ 1965.380201] coresight-funnel 220c0000.funnel: FUNNEL inport 1 enabled Linux [ 1965.405984] coresight-funnel 220c0000.funnel: FUNNEL inport 1 disabled [ 1965.412453] coresight-funnel 20040000.funnel: FUNNEL inport 0 disabled [ 1965.418934] coresight-tmc 20010000.etf: TMC disabled [ 1965.423850] coresight-funnel 20150000.funnel: FUNNEL inport 0 disabled [ 1965.430312] coresight-replicator-qcom 20120000.replicator: REPLICATOR disabled [ 1965.437478] coresight-tmc 20070000.etr: TMC-ETR disabled [ perf record: Woken up 2 times to write data ] [ perf record: Captured and wrote
which is along the same instability lines as the other time that execution behaviour differed depending on whether it executed first or not...
...here.
OK, can you try a more modern toolchain please? The one you're using isn't available anymore, AutoFDO requires gcc 5 and higher, and you're not seeing the build failures others see, but most importantly, it should make it easier to reproduce the hard lockup: at least that's the case on the Juno r2.
Thanks,
Kim
HI Kim
On 15 March 2017 at 05:38, Kim Phillips kim.phillips@arm.com wrote:
[re-adding cc list, assuming didn't hit reply-all?]
Thanks - button fatigue!
OK - tried the linaro 5.3 gcc package - this is the latest recommended compiler from the ARM connected community page for using the Linaro deliverables with Juno:-
aarch64-linux-gnu-gcc (Linaro GCC 5.3-2016.05) 5.3.1 20160412 Copyright (C) 2015 Free Software Foundation, Inc.
Built kernel and perf.
Ran a couple of times to make sure - but no issues. ========================================================= root@linaro-developer:/home/mleach/perf-tools# taskset -c 2 ./perf record -e cs_etm/@20070000.etr/u --per-thread taskset -c 2 uname Linux [ perf record: Captured and wrote 0.077 MB perf.data ] root@linaro-developer:/home/mleach/perf-tools# taskset -c 2 ./perf record -e cs_etm/@20070000.etr/u --per-thread taskset -c 2 uname Linux [ perf record: Woken up 2 times to write data ] [ perf record: Captured and wrote 0.076 MB perf.data ] root@linaro-developer:/home/mleach/perf-tools# strings -a perf | grep "GCC: (" GCC: (Linaro GCC 5.3-2016.05) 5.3.1 20160412 root@linaro-developer:/home/mleach/perf-tools# ========================================================= Next tried the 6.2 toolset from linaro.
mleach@ubu-16-04-vm:~/work/opencsd-perf-4.9-10$ ${CROSS_COMPILE}gcc --version aarch64-linux-gnu-gcc (Linaro GCC 6.2-2016.11) 6.2.1 20161016 Copyright (C) 2016 Free Software Foundation, Inc.
Built kernel and perf - so build issue on perf, applied your patch. (Sorry, I missed the question a couple of e-mails ago - it can be submitted to this list).
Checked gcc version and ran perf a few times ============================================================== root@linaro-developer:/home/mleach/perf-tools# strings -a perf | grep "GCC: (" GCC: (Linaro GCC 6.2-2016.11) 6.2.1 20161016 root@linaro-developer:/home/mleach/perf-tools#
root@linaro-developer:/home/mleach/perf-tools# taskset -c 2 ./perf record -e cs_etm/@20070000.etr/u --per-thread taskset -c 2 uname Linux [ perf record: Woken up 2 times to write data ] [ perf record: Captured and wrote 0.077 MB perf.data ] root@linaro-developer:/home/mleach/perf-tools# root@linaro-developer:/home/mleach/perf-tools# taskset -c 2 ./perf record -e cs_etm/@20070000.etr/u --per-thread taskset -c 2 uname Linux [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.077 MB perf.data ] root@linaro-developer:/home/mleach/perf-tools# taskset -c 2 ./perf record -e cs_etm/@20070000.etr/u --per-thread taskset -c 2 uname Linux [ perf record: Woken up 2 times to write data ] [ perf record: Captured and wrote 0.077 MB perf.data ] root@linaro-developer:/home/mleach/perf-tools# ==============================================================
Worked fine.
so....I'm back on the funnel / trace amount and core differences. taskset -c 2 -> selects cpu 2 -> A53(0) on both juno-r1 and juno-r2. So why on your system is the funnel for the A72 cluster (cpu 0-1) being activated. if I use taskset -c 0 (or 1) then I get the A57 cluster funnel activated as expected. (2-5 gets the A53 cluster funnel)
This seems to be indicative of some .dts issue on your system / r2. Nothing immediately obvious in the .dts that I can see.
Thanks,
Kim
Mike
On Wed, 15 Mar 2017 15:39:47 +0000 Mike Leach mike.leach@linaro.org wrote:
I like to include dmesg | grep gcc because sometimes I myself make sloppy mistakes copying the kernel image around, but OK, I should have said I gave it a lot of time before runs: several minutes.
Using the device tree compiler to show all the differences, like so:
$ dtc -I dtb -O dts -s juno.dtb > juno.dts $ dtc -I dtb -O dts -s juno-r2.dtb > juno-r2.dts $ diff -u juno.dts juno-r2.dts
We see the cpus have been renumbered such that on r2, taskset -c 2 references an A-72 (it actually happens between r0 and r1, diff r1 r2 is a simple a57->a72 rename), and phandles that coresight components reference also change, e.g., the 0x3d phandle that the etf@20140000 references used to point to the old sysctl@020000, but that node's phandle gets changed to 0x3c. Below is the full diff; is a dts patch for coresight on r1/r2 in order?
I still think there's more to it since you were able to see the inconsistent behaviour between two runs problem on r0.
Thanks,
Kim
--- juno.dts 2017-03-15 13:00:49.180455032 -0500 +++ juno-r2.dts 2017-03-15 12:41:32.568144442 -0500 @@ -3,10 +3,10 @@ / { #address-cells = <0x2>; #size-cells = <0x2>; - compatible = "arm,juno", "arm,vexpress"; + compatible = "arm,juno-r2", "arm,juno", "arm,vexpress"; dma-ranges = <0x0 0x0 0x0 0x0 0x100 0x0>; interrupt-parent = <0x1>; - model = "ARM Juno development board (r0)"; + model = "ARM Juno development board (r2)";
aliases { serial0 = "/uart@7ff80000"; @@ -21,8 +21,8 @@ clock-frequency = <0x2dc6c00>; clock-output-names = "clk48mhz"; compatible = "fixed-clock"; - linux,phandle = <0x36>; - phandle = <0x36>; + linux,phandle = <0x35>; + phandle = <0x35>; };
clk50mhz { @@ -43,109 +43,109 @@ cluster0 {
core0 { - cpu = <0xf>; + cpu = <0xe>; };
core1 { - cpu = <0x14>; + cpu = <0x13>; }; };
cluster1 {
core0 { - cpu = <0x16>; + cpu = <0x15>; };
core1 { - cpu = <0x1d>; + cpu = <0x1c>; };
core2 { - cpu = <0x1f>; + cpu = <0x1e>; };
core3 { - cpu = <0x21>; + cpu = <0x20>; }; }; };
cpu@0 { capacity-dmips-mhz = <0x400>; - clocks = <0x3f 0x0>; - compatible = "arm,cortex-a57", "arm,armv8"; - cpu-idle-states = <0x40 0x41>; + clocks = <0x44 0x0>; + compatible = "arm,cortex-a72", "arm,armv8"; + cpu-idle-states = <0x45 0x46>; device_type = "cpu"; enable-method = "psci"; - linux,phandle = <0xf>; - next-level-cache = <0x3e>; - phandle = <0xf>; + linux,phandle = <0xe>; + next-level-cache = <0x43>; + phandle = <0xe>; reg = <0x0 0x0>; };
cpu@1 { capacity-dmips-mhz = <0x400>; - clocks = <0x3f 0x0>; - compatible = "arm,cortex-a57", "arm,armv8"; - cpu-idle-states = <0x40 0x41>; + clocks = <0x44 0x0>; + compatible = "arm,cortex-a72", "arm,armv8"; + cpu-idle-states = <0x45 0x46>; device_type = "cpu"; enable-method = "psci"; - linux,phandle = <0x14>; - next-level-cache = <0x3e>; - phandle = <0x14>; + linux,phandle = <0x13>; + next-level-cache = <0x43>; + phandle = <0x13>; reg = <0x0 0x1>; };
cpu@100 { - capacity-dmips-mhz = <0x242>; - clocks = <0x3f 0x1>; + capacity-dmips-mhz = <0x1e5>; + clocks = <0x44 0x1>; compatible = "arm,cortex-a53", "arm,armv8"; - cpu-idle-states = <0x40 0x41>; + cpu-idle-states = <0x45 0x46>; device_type = "cpu"; enable-method = "psci"; - linux,phandle = <0x16>; - next-level-cache = <0x42>; - phandle = <0x16>; + linux,phandle = <0x15>; + next-level-cache = <0x47>; + phandle = <0x15>; reg = <0x0 0x100>; };
cpu@101 { - capacity-dmips-mhz = <0x242>; - clocks = <0x3f 0x1>; + capacity-dmips-mhz = <0x1e5>; + clocks = <0x44 0x1>; compatible = "arm,cortex-a53", "arm,armv8"; - cpu-idle-states = <0x40 0x41>; + cpu-idle-states = <0x45 0x46>; device_type = "cpu"; enable-method = "psci"; - linux,phandle = <0x1d>; - next-level-cache = <0x42>; - phandle = <0x1d>; + linux,phandle = <0x1c>; + next-level-cache = <0x47>; + phandle = <0x1c>; reg = <0x0 0x101>; };
cpu@102 { - capacity-dmips-mhz = <0x242>; - clocks = <0x3f 0x1>; + capacity-dmips-mhz = <0x1e5>; + clocks = <0x44 0x1>; compatible = "arm,cortex-a53", "arm,armv8"; - cpu-idle-states = <0x40 0x41>; + cpu-idle-states = <0x45 0x46>; device_type = "cpu"; enable-method = "psci"; - linux,phandle = <0x1f>; - next-level-cache = <0x42>; - phandle = <0x1f>; + linux,phandle = <0x1e>; + next-level-cache = <0x47>; + phandle = <0x1e>; reg = <0x0 0x102>; };
cpu@103 { - capacity-dmips-mhz = <0x242>; - clocks = <0x3f 0x1>; + capacity-dmips-mhz = <0x1e5>; + clocks = <0x44 0x1>; compatible = "arm,cortex-a53", "arm,armv8"; - cpu-idle-states = <0x40 0x41>; + cpu-idle-states = <0x45 0x46>; device_type = "cpu"; enable-method = "psci"; - linux,phandle = <0x21>; - next-level-cache = <0x42>; - phandle = <0x21>; + linux,phandle = <0x20>; + next-level-cache = <0x47>; + phandle = <0x20>; reg = <0x0 0x103>; };
@@ -157,10 +157,10 @@ compatible = "arm,idle-state"; entry-latency-us = <0x190>; exit-latency-us = <0x4b0>; - linux,phandle = <0x41>; + linux,phandle = <0x46>; local-timer-stop; min-residency-us = <0x9c4>; - phandle = <0x41>; + phandle = <0x46>; };
cpu-sleep-0 { @@ -168,23 +168,23 @@ compatible = "arm,idle-state"; entry-latency-us = <0x12c>; exit-latency-us = <0x4b0>; - linux,phandle = <0x40>; + linux,phandle = <0x45>; local-timer-stop; min-residency-us = <0x7d0>; - phandle = <0x40>; + phandle = <0x45>; }; };
l2-cache0 { compatible = "cache"; - linux,phandle = <0x3e>; - phandle = <0x3e>; + linux,phandle = <0x43>; + phandle = <0x43>; };
l2-cache1 { compatible = "cache"; - linux,phandle = <0x42>; - phandle = <0x42>; + linux,phandle = <0x47>; + phandle = <0x47>; }; };
@@ -193,18 +193,18 @@ #dma-channels = <0x8>; #dma-requests = <0x20>; clock-names = "apb_pclk"; - clocks = <0x2c>; + clocks = <0x2b>; compatible = "arm,pl330", "arm,primecell"; interrupts = <0x0 0x58 0x4 0x0 0x59 0x4 0x0 0x5a 0x4 0x0 0x5b 0x4 0x0 0x5c 0x4 0x0 0x6c 0x4 0x0 0x6d 0x4 0x0 0x6e 0x4 0x0 0x6f 0x4>; - iommus = <0x2b 0x0 0x2b 0x1 0x2b 0x2 0x2b 0x3 0x2b 0x4 0x2b 0x5 0x2b 0x6 0x2b 0x7 0x2b 0x8>; + iommus = <0x2a 0x0 0x2a 0x1 0x2a 0x2 0x2a 0x3 0x2a 0x4 0x2a 0x5 0x2a 0x6 0x2a 0x7 0x2a 0x8>; reg = <0x0 0x7ff00000 0x0 0x1000>; };
ehci@7ffc0000 { - clocks = <0x36>; + clocks = <0x35>; compatible = "generic-ehci"; interrupts = <0x0 0x75 0x4>; - iommus = <0x35 0x0>; + iommus = <0x34 0x0>; reg = <0x0 0x7ffc0000 0x0 0x10000>; };
@@ -234,28 +234,62 @@ reg = <0x0>;
endpoint { - linux,phandle = <0x25>; - phandle = <0x25>; + linux,phandle = <0x41>; + phandle = <0x41>; remote-endpoint = <0x6>; }; }; }; };
+ etf@20140000 { + clock-names = "apb_pclk"; + clocks = <0x4>; + compatible = "arm,coresight-tmc", "arm,primecell"; + power-domains = <0x3 0x0>; + reg = <0x0 0x20140000 0x0 0x1000>; + + ports { + #address-cells = <0x1>; + #size-cells = <0x0>; + + port@0 { + reg = <0x0>; + + endpoint { + linux,phandle = <0x3d>; + phandle = <0x3d>; + remote-endpoint = <0x3e>; + slave-mode; + }; + }; + + port@1 { + reg = <0x0>; + + endpoint { + linux,phandle = <0x42>; + phandle = <0x42>; + remote-endpoint = <0x3f>; + }; + }; + }; + }; + etm@22040000 { clock-names = "apb_pclk"; clocks = <0x4>; compatible = "arm,coresight-etm4x", "arm,primecell"; - cpu = <0xf>; + cpu = <0xe>; power-domains = <0x3 0x0>; reg = <0x0 0x22040000 0x0 0x1000>;
port {
endpoint { - linux,phandle = <0x12>; - phandle = <0x12>; - remote-endpoint = <0x10>; + linux,phandle = <0x11>; + phandle = <0x11>; + remote-endpoint = <0xf>; }; }; }; @@ -264,16 +298,16 @@ clock-names = "apb_pclk"; clocks = <0x4>; compatible = "arm,coresight-etm4x", "arm,primecell"; - cpu = <0x14>; + cpu = <0x13>; power-domains = <0x3 0x0>; reg = <0x0 0x22140000 0x0 0x1000>;
port {
endpoint { - linux,phandle = <0x13>; - phandle = <0x13>; - remote-endpoint = <0x15>; + linux,phandle = <0x12>; + phandle = <0x12>; + remote-endpoint = <0x14>; }; }; }; @@ -282,16 +316,16 @@ clock-names = "apb_pclk"; clocks = <0x4>; compatible = "arm,coresight-etm4x", "arm,primecell"; - cpu = <0x16>; + cpu = <0x15>; power-domains = <0x3 0x0>; reg = <0x0 0x23040000 0x0 0x1000>;
port {
endpoint { - linux,phandle = <0x19>; - phandle = <0x19>; - remote-endpoint = <0x17>; + linux,phandle = <0x18>; + phandle = <0x18>; + remote-endpoint = <0x16>; }; }; }; @@ -300,16 +334,16 @@ clock-names = "apb_pclk"; clocks = <0x4>; compatible = "arm,coresight-etm4x", "arm,primecell"; - cpu = <0x1d>; + cpu = <0x1c>; power-domains = <0x3 0x0>; reg = <0x0 0x23140000 0x0 0x1000>;
port {
endpoint { - linux,phandle = <0x1a>; - phandle = <0x1a>; - remote-endpoint = <0x1e>; + linux,phandle = <0x19>; + phandle = <0x19>; + remote-endpoint = <0x1d>; }; }; }; @@ -318,16 +352,16 @@ clock-names = "apb_pclk"; clocks = <0x4>; compatible = "arm,coresight-etm4x", "arm,primecell"; - cpu = <0x1f>; + cpu = <0x1e>; power-domains = <0x3 0x0>; reg = <0x0 0x23240000 0x0 0x1000>;
port {
endpoint { - linux,phandle = <0x1b>; - phandle = <0x1b>; - remote-endpoint = <0x20>; + linux,phandle = <0x1a>; + phandle = <0x1a>; + remote-endpoint = <0x1f>; }; }; }; @@ -336,16 +370,16 @@ clock-names = "apb_pclk"; clocks = <0x4>; compatible = "arm,coresight-etm4x", "arm,primecell"; - cpu = <0x21>; + cpu = <0x20>; power-domains = <0x3 0x0>; reg = <0x0 0x23340000 0x0 0x1000>;
port {
endpoint { - linux,phandle = <0x1c>; - phandle = <0x1c>; - remote-endpoint = <0x22>; + linux,phandle = <0x1b>; + phandle = <0x1b>; + remote-endpoint = <0x21>; }; }; }; @@ -354,16 +388,16 @@ clock-names = "apb_pclk"; clocks = <0x4>; compatible = "arm,coresight-tmc", "arm,primecell"; - iommus = <0xc 0x0>; + iommus = <0xb 0x0>; power-domains = <0x3 0x0>; reg = <0x0 0x20070000 0x0 0x1000>;
port {
endpoint { - linux,phandle = <0x24>; - phandle = <0x24>; - remote-endpoint = <0xd>; + linux,phandle = <0x23>; + phandle = <0x23>; + remote-endpoint = <0xc>; slave-mode; }; }; @@ -394,8 +428,8 @@ reg = <0x0>;
endpoint { - linux,phandle = <0x11>; - phandle = <0x11>; + linux,phandle = <0x10>; + phandle = <0x10>; remote-endpoint = <0x9>; slave-mode; }; @@ -405,20 +439,87 @@ reg = <0x1>;
endpoint { - linux,phandle = <0x18>; - phandle = <0x18>; + linux,phandle = <0x17>; + phandle = <0x17>; remote-endpoint = <0xa>; slave-mode; }; }; + }; + };
- port@3 { - reg = <0x2>; + funnel@20130000 { + clock-names = "apb_pclk"; + clocks = <0x4>; + compatible = "arm,coresight-funnel", "arm,primecell"; + power-domains = <0x3 0x0>; + reg = <0x0 0x20130000 0x0 0x1000>; + + ports { + #address-cells = <0x1>; + #size-cells = <0x0>; + + port@0 { + reg = <0x0>; + + endpoint { + linux,phandle = <0x3e>; + phandle = <0x3e>; + remote-endpoint = <0x3d>; + }; + }; + + port@1 { + reg = <0x0>; + + endpoint { + linux,phandle = <0xd>; + phandle = <0xd>; + slave-mode; + }; + }; + }; + }; + + funnel@20150000 { + clock-names = "apb_pclk"; + clocks = <0x4>; + compatible = "arm,coresight-funnel", "arm,primecell"; + power-domains = <0x3 0x0>; + reg = <0x0 0x20150000 0x0 0x1000>; + + ports { + #address-cells = <0x1>; + #size-cells = <0x0>; + + port@0 { + reg = <0x0>; + + endpoint { + linux,phandle = <0x24>; + phandle = <0x24>; + remote-endpoint = <0x40>; + }; + }; + + port@1 { + reg = <0x0>; + + endpoint { + linux,phandle = <0x6>; + phandle = <0x6>; + remote-endpoint = <0x41>; + slave-mode; + }; + }; + + port@2 { + reg = <0x1>;
endpoint { - linux,phandle = <0xe>; - phandle = <0xe>; - remote-endpoint = <0xb>; + linux,phandle = <0x3f>; + phandle = <0x3f>; + remote-endpoint = <0x42>; slave-mode; }; }; @@ -442,7 +543,7 @@ endpoint { linux,phandle = <0x9>; phandle = <0x9>; - remote-endpoint = <0x11>; + remote-endpoint = <0x10>; }; };
@@ -450,9 +551,9 @@ reg = <0x0>;
endpoint { - linux,phandle = <0x10>; - phandle = <0x10>; - remote-endpoint = <0x12>; + linux,phandle = <0xf>; + phandle = <0xf>; + remote-endpoint = <0x11>; slave-mode; }; }; @@ -461,9 +562,9 @@ reg = <0x1>;
endpoint { - linux,phandle = <0x15>; - phandle = <0x15>; - remote-endpoint = <0x13>; + linux,phandle = <0x14>; + phandle = <0x14>; + remote-endpoint = <0x12>; slave-mode; }; }; @@ -487,7 +588,7 @@ endpoint { linux,phandle = <0xa>; phandle = <0xa>; - remote-endpoint = <0x18>; + remote-endpoint = <0x17>; }; };
@@ -495,9 +596,9 @@ reg = <0x0>;
endpoint { - linux,phandle = <0x17>; - phandle = <0x17>; - remote-endpoint = <0x19>; + linux,phandle = <0x16>; + phandle = <0x16>; + remote-endpoint = <0x18>; slave-mode; }; }; @@ -506,9 +607,9 @@ reg = <0x1>;
endpoint { - linux,phandle = <0x1e>; - phandle = <0x1e>; - remote-endpoint = <0x1a>; + linux,phandle = <0x1d>; + phandle = <0x1d>; + remote-endpoint = <0x19>; slave-mode; }; }; @@ -517,9 +618,9 @@ reg = <0x2>;
endpoint { - linux,phandle = <0x20>; - phandle = <0x20>; - remote-endpoint = <0x1b>; + linux,phandle = <0x1f>; + phandle = <0x1f>; + remote-endpoint = <0x1a>; slave-mode; }; }; @@ -528,9 +629,9 @@ reg = <0x3>;
endpoint { - linux,phandle = <0x22>; - phandle = <0x22>; - remote-endpoint = <0x1c>; + linux,phandle = <0x21>; + phandle = <0x21>; + remote-endpoint = <0x1b>; slave-mode; }; }; @@ -539,36 +640,36 @@
hdlcd@7ff50000 { clock-names = "pxlclk"; - clocks = <0x2e 0x3>; + clocks = <0x2d 0x3>; compatible = "arm,hdlcd"; interrupts = <0x0 0x5d 0x4>; - iommus = <0x2d 0x0>; + iommus = <0x2c 0x0>; reg = <0x0 0x7ff50000 0x0 0x1000>;
port {
hdlcd1-endpoint { - linux,phandle = <0x34>; - phandle = <0x34>; - remote-endpoint = <0x2f>; + linux,phandle = <0x33>; + phandle = <0x33>; + remote-endpoint = <0x2e>; }; }; };
hdlcd@7ff60000 { clock-names = "pxlclk"; - clocks = <0x2e 0x3>; + clocks = <0x2d 0x3>; compatible = "arm,hdlcd"; interrupts = <0x0 0x55 0x4>; - iommus = <0x30 0x0>; + iommus = <0x2f 0x0>; reg = <0x0 0x7ff60000 0x0 0x1000>;
port {
hdlcd0-endpoint { - linux,phandle = <0x33>; - phandle = <0x33>; - remote-endpoint = <0x31>; + linux,phandle = <0x32>; + phandle = <0x32>; + remote-endpoint = <0x30>; }; }; }; @@ -590,9 +691,9 @@ port {
tda998x-0-endpoint { - linux,phandle = <0x31>; - phandle = <0x31>; - remote-endpoint = <0x33>; + linux,phandle = <0x30>; + phandle = <0x30>; + remote-endpoint = <0x32>; }; }; }; @@ -604,9 +705,9 @@ port {
tda998x-1-endpoint { - linux,phandle = <0x2f>; - phandle = <0x2f>; - remote-endpoint = <0x34>; + linux,phandle = <0x2e>; + phandle = <0x2e>; + remote-endpoint = <0x33>; }; }; }; @@ -626,9 +727,9 @@
v2m@0 { compatible = "arm,gic-v2m-frame"; - linux,phandle = <0x26>; + linux,phandle = <0x25>; msi-controller; - phandle = <0x26>; + phandle = <0x25>; reg = <0x0 0x0 0x0 0x1000>; }; }; @@ -639,8 +740,8 @@ compatible = "arm,mmu-401", "arm,smmu-v1"; dma-coherent; interrupts = <0x0 0x28 0x4 0x0 0x28 0x4>; - linux,phandle = <0x27>; - phandle = <0x27>; + linux,phandle = <0x26>; + phandle = <0x26>; reg = <0x0 0x2b500000 0x0 0x10000>; status = "disabled"; }; @@ -651,8 +752,8 @@ compatible = "arm,mmu-401", "arm,smmu-v1"; dma-coherent; interrupts = <0x0 0x2a 0x4 0x0 0x2a 0x4>; - linux,phandle = <0xc>; - phandle = <0xc>; + linux,phandle = <0xb>; + phandle = <0xb>; power-domains = <0x3 0x0>; reg = <0x0 0x2b600000 0x0 0x10000>; status = "disabled"; @@ -664,8 +765,8 @@ compatible = "arm,mmu-401", "arm,smmu-v1"; dma-coherent; interrupts = <0x0 0x5f 0x4 0x0 0x5f 0x4>; - linux,phandle = <0x2b>; - phandle = <0x2b>; + linux,phandle = <0x2a>; + phandle = <0x2a>; reg = <0x0 0x7fb00000 0x0 0x10000>; status = "disabled"; }; @@ -675,8 +776,8 @@ #iommu-cells = <0x1>; compatible = "arm,mmu-401", "arm,smmu-v1"; interrupts = <0x0 0x63 0x4 0x0 0x63 0x4>; - linux,phandle = <0x2d>; - phandle = <0x2d>; + linux,phandle = <0x2c>; + phandle = <0x2c>; reg = <0x0 0x7fb10000 0x0 0x10000>; status = "disabled"; }; @@ -686,8 +787,8 @@ #iommu-cells = <0x1>; compatible = "arm,mmu-401", "arm,smmu-v1"; interrupts = <0x0 0x61 0x4 0x0 0x61 0x4>; - linux,phandle = <0x30>; - phandle = <0x30>; + linux,phandle = <0x2f>; + phandle = <0x2f>; reg = <0x0 0x7fb20000 0x0 0x10000>; status = "disabled"; }; @@ -698,8 +799,8 @@ compatible = "arm,mmu-401", "arm,smmu-v1"; dma-coherent; interrupts = <0x0 0x65 0x4 0x0 0x65 0x4>; - linux,phandle = <0x35>; - phandle = <0x35>; + linux,phandle = <0x34>; + phandle = <0x34>; reg = <0x0 0x7fb30000 0x0 0x10000>; status = "disabled"; }; @@ -724,16 +825,16 @@ compatible = "arm,mhu", "arm,primecell"; interrupt-names = "mhu_lpri_rx", "mhu_hpri_rx"; interrupts = <0x0 0x24 0x4 0x0 0x23 0x4>; - linux,phandle = <0x28>; - phandle = <0x28>; + linux,phandle = <0x27>; + phandle = <0x27>; reg = <0x0 0x2b1f0000 0x0 0x1000>; };
ohci@7ffb0000 { - clocks = <0x36>; + clocks = <0x35>; compatible = "generic-ohci"; interrupts = <0x0 0x74 0x4>; - iommus = <0x35 0x0>; + iommus = <0x34 0x0>; reg = <0x0 0x7ffb0000 0x0 0x10000>; };
@@ -747,24 +848,24 @@ dma-coherent; interrupt-map = <0x0 0x0 0x0 0x1 0x1 0x0 0x0 0x0 0x88 0x4 0x0 0x0 0x0 0x2 0x1 0x0 0x0 0x0 0x89 0x4 0x0 0x0 0x0 0x3 0x1 0x0 0x0 0x0 0x8a 0x4 0x0 0x0 0x0 0x4 0x1 0x0 0x0 0x0 0x8b 0x4>; interrupt-map-mask = <0x0 0x0 0x0 0x7>; - iommu-map = <0x0 0x27 0x0 0x1>; + iommu-map = <0x0 0x26 0x0 0x1>; iommu-map-mask = <0x0>; linux,pci-domain = <0x0>; - msi-parent = <0x26>; + msi-parent = <0x25>; ranges = <0x1000000 0x0 0x0 0x0 0x5f800000 0x0 0x800000 0x2000000 0x0 0x50000000 0x0 0x50000000 0x0 0x8000000 0x42000000 0x40 0x0 0x40 0x0 0x1 0x0>; reg = <0x0 0x40000000 0x0 0x10000000>; - status = "disabled"; + status = "okay"; };
pmu_a53 { compatible = "arm,cortex-a53-pmu"; - interrupt-affinity = <0x16 0x1d 0x1f 0x21>; + interrupt-affinity = <0x15 0x1c 0x1e 0x20>; interrupts = <0x0 0x12 0x4 0x0 0x16 0x4 0x0 0x1a 0x4 0x0 0x1e 0x4>; };
- pmu_a57 { - compatible = "arm,cortex-a57-pmu"; - interrupt-affinity = <0xf 0x14>; + pmu_a72 { + compatible = "arm,cortex-a72-pmu"; + interrupt-affinity = <0xe 0x13>; interrupts = <0x0 0x2 0x4 0x0 0x6 0x4>; };
@@ -787,8 +888,8 @@ clock-frequency = <0x17d78400>; clock-output-names = "faxi_clk"; compatible = "fixed-clock"; - linux,phandle = <0x2c>; - phandle = <0x2c>; + linux,phandle = <0x2b>; + phandle = <0x2b>; };
refclk7273800hz { @@ -796,8 +897,8 @@ clock-frequency = <0x6efd48>; clock-output-names = "juno:uartclk"; compatible = "fixed-clock"; - linux,phandle = <0x32>; - phandle = <0x32>; + linux,phandle = <0x31>; + phandle = <0x31>; };
replicator@20120000 { @@ -817,7 +918,7 @@ endpoint { linux,phandle = <0x7>; phandle = <0x7>; - remote-endpoint = <0x23>; + remote-endpoint = <0x22>; }; };
@@ -825,9 +926,9 @@ reg = <0x1>;
endpoint { - linux,phandle = <0xd>; - phandle = <0xd>; - remote-endpoint = <0x24>; + linux,phandle = <0xc>; + phandle = <0xc>; + remote-endpoint = <0x23>; }; };
@@ -835,9 +936,9 @@ reg = <0x0>;
endpoint { - linux,phandle = <0x6>; - phandle = <0x6>; - remote-endpoint = <0x25>; + linux,phandle = <0x40>; + phandle = <0x40>; + remote-endpoint = <0x24>; slave-mode; }; }; @@ -846,8 +947,8 @@
scpi { compatible = "arm,scpi"; - mboxes = <0x28 0x1>; - shmem = <0x29>; + mboxes = <0x27 0x1>; + shmem = <0x28>;
clocks { compatible = "arm,scpi-clocks"; @@ -857,8 +958,8 @@ clock-indices = <0x3>; clock-output-names = "pxlclk"; compatible = "arm,scpi-variable-clocks"; - linux,phandle = <0x2e>; - phandle = <0x2e>; + linux,phandle = <0x2d>; + phandle = <0x2d>; };
scpi-dvfs { @@ -866,8 +967,8 @@ clock-indices = <0x0 0x1 0x2>; clock-output-names = "atlclk", "aplclk", "gpuclk"; compatible = "arm,scpi-dvfs-clocks"; - linux,phandle = <0x3f>; - phandle = <0x3f>; + linux,phandle = <0x44>; + phandle = <0x44>; }; };
@@ -882,8 +983,8 @@ sensors { #thermal-sensor-cells = <0x1>; compatible = "arm,scpi-sensors"; - linux,phandle = <0x2a>; - phandle = <0x2a>; + linux,phandle = <0x29>; + phandle = <0x29>; }; };
@@ -901,8 +1002,8 @@ clock-frequency = <0x16e3600>; clock-output-names = "juno_mb:clk24mhz"; compatible = "fixed-clock"; - linux,phandle = <0x3c>; - phandle = <0x3c>; + linux,phandle = <0x3b>; + phandle = <0x3b>; };
clk25mhz { @@ -910,8 +1011,8 @@ clock-frequency = <0x17d7840>; clock-output-names = "juno_mb:clk25mhz"; compatible = "fixed-clock"; - linux,phandle = <0x38>; - phandle = <0x38>; + linux,phandle = <0x37>; + phandle = <0x37>; };
motherboard { @@ -926,7 +1027,7 @@ ranges;
ethernet@2,00000000 { - clocks = <0x38>; + clocks = <0x37>; compatible = "smsc,lan9118", "smsc,lan9115"; interrupts = <0x3>; phy-mode = "mii"; @@ -934,8 +1035,8 @@ reg-io-width = <0x4>; smsc,irq-active-high; smsc,irq-push-pull; - vdd33a-supply = <0x39>; - vddvario-supply = <0x39>; + vdd33a-supply = <0x38>; + vddvario-supply = <0x38>; };
flash@0,00000000 { @@ -953,7 +1054,7 @@
home-button { debounce_interval = <0x32>; - gpios = <0x37 0x1 0x4>; + gpios = <0x36 0x1 0x4>; label = "HOME"; linux,code = <0x66>; wakeup-source; @@ -961,7 +1062,7 @@
nmi-button { debounce_interval = <0x32>; - gpios = <0x37 0x5 0x4>; + gpios = <0x36 0x5 0x4>; label = "NMI"; linux,code = <0x63>; wakeup-source; @@ -969,7 +1070,7 @@
power-button { debounce_interval = <0x32>; - gpios = <0x37 0x0 0x4>; + gpios = <0x36 0x0 0x4>; label = "POWER"; linux,code = <0x74>; wakeup-source; @@ -977,7 +1078,7 @@
rlock-button { debounce_interval = <0x32>; - gpios = <0x37 0x2 0x4>; + gpios = <0x36 0x2 0x4>; label = "RLOCK"; linux,code = <0x98>; wakeup-source; @@ -985,7 +1086,7 @@
vol-down-button { debounce_interval = <0x32>; - gpios = <0x37 0x4 0x4>; + gpios = <0x36 0x4 0x4>; label = "VOL-"; linux,code = <0x72>; wakeup-source; @@ -993,7 +1094,7 @@
vol-up-button { debounce_interval = <0x32>; - gpios = <0x37 0x3 0x4>; + gpios = <0x36 0x3 0x4>; label = "VOL+"; linux,code = <0x73>; wakeup-source; @@ -1090,14 +1191,14 @@ gpio-controller; interrupt-controller; interrupts = <0x6>; - linux,phandle = <0x37>; - phandle = <0x37>; + linux,phandle = <0x36>; + phandle = <0x36>; reg = <0x1d0000 0x1000>; };
kmi@060000 { clock-names = "KMIREFCLK", "apb_pclk"; - clocks = <0x3c 0x4>; + clocks = <0x3b 0x4>; compatible = "arm,pl050", "arm,primecell"; interrupts = <0x8>; reg = <0x60000 0x1000>; @@ -1105,7 +1206,7 @@
kmi@070000 { clock-names = "KMIREFCLK", "apb_pclk"; - clocks = <0x3c 0x4>; + clocks = <0x3b 0x4>; compatible = "arm,pl050", "arm,primecell"; interrupts = <0x8>; reg = <0x70000 0x1000>; @@ -1113,12 +1214,12 @@
mmci@050000 { clock-names = "mclk", "apb_pclk"; - clocks = <0x3c 0x4>; + clocks = <0x3b 0x4>; compatible = "arm,pl180", "arm,primecell"; interrupts = <0x5>; max-frequency = <0xb71b00>; reg = <0x50000 0x1000>; - vmmc-supply = <0x39>; + vmmc-supply = <0x38>; };
rtc@170000 { @@ -1131,20 +1232,20 @@
sysctl@020000 { #clock-cells = <0x1>; - assigned-clock-parents = <0x3b 0x3b 0x3b 0x3b>; - assigned-clocks = <0x3d 0x0 0x3d 0x1 0x3d 0x3 0x3d 0x3>; + assigned-clock-parents = <0x3a 0x3a 0x3a 0x3a>; + assigned-clocks = <0x3c 0x0 0x3c 0x1 0x3c 0x3 0x3c 0x3>; clock-names = "refclk", "timclk", "apb_pclk"; clock-output-names = "timerclken0", "timerclken1", "timerclken2", "timerclken3"; - clocks = <0x3a 0x3b 0x3c>; + clocks = <0x39 0x3a 0x3b>; compatible = "arm,sp810", "arm,primecell"; - linux,phandle = <0x3d>; - phandle = <0x3d>; + linux,phandle = <0x3c>; + phandle = <0x3c>; reg = <0x20000 0x1000>; };
timer@110000 { clock-names = "timclken1", "timclken2", "apb_pclk"; - clocks = <0x3d 0x0 0x3d 0x1 0x3c>; + clocks = <0x3c 0x0 0x3c 0x1 0x3b>; compatible = "arm,sp804", "arm,primecell"; interrupts = <0x9>; reg = <0x110000 0x10000>; @@ -1152,7 +1253,7 @@
timer@120000 { clock-names = "timclken1", "timclken2", "apb_pclk"; - clocks = <0x3d 0x2 0x3d 0x3 0x3c>; + clocks = <0x3c 0x2 0x3c 0x3 0x3b>; compatible = "arm,sp804", "arm,primecell"; interrupts = <0x9>; reg = <0x120000 0x10000>; @@ -1160,7 +1261,7 @@
wdt@0f0000 { clock-names = "wdogclk", "apb_pclk"; - clocks = <0x3c 0x4>; + clocks = <0x3b 0x4>; compatible = "arm,sp805", "arm,primecell"; interrupts = <0x7>; reg = <0xf0000 0x10000>; @@ -1169,8 +1270,8 @@
mcc-sb-3v3 { compatible = "regulator-fixed"; - linux,phandle = <0x39>; - phandle = <0x39>; + linux,phandle = <0x38>; + phandle = <0x38>; regulator-always-on; regulator-max-microvolt = <0x325aa0>; regulator-min-microvolt = <0x325aa0>; @@ -1183,8 +1284,8 @@ clock-frequency = <0xf4240>; clock-output-names = "juno_mb:refclk1mhz"; compatible = "fixed-clock"; - linux,phandle = <0x3b>; - phandle = <0x3b>; + linux,phandle = <0x3a>; + phandle = <0x3a>; };
refclk32khz { @@ -1192,8 +1293,8 @@ clock-frequency = <0x8000>; clock-output-names = "juno_mb:refclk32khz"; compatible = "fixed-clock"; - linux,phandle = <0x3a>; - phandle = <0x3a>; + linux,phandle = <0x39>; + phandle = <0x39>; }; };
@@ -1211,8 +1312,8 @@
scp-shmem@200 { compatible = "arm,juno-scp-shmem"; - linux,phandle = <0x29>; - phandle = <0x29>; + linux,phandle = <0x28>; + phandle = <0x28>; reg = <0x200 0x200>; }; }; @@ -1228,9 +1329,7 @@ port {
endpoint { - linux,phandle = <0xb>; - phandle = <0xb>; - remote-endpoint = <0xe>; + remote-endpoint = <0xd>; }; }; }; @@ -1240,41 +1339,41 @@ big_cluster { polling-delay = <0x3e8>; polling-delay-passive = <0x64>; - status = "disabled"; - thermal-sensors = <0x2a 0x15>; + status = "okay"; + thermal-sensors = <0x29 0x15>; };
gpu0 { polling-delay = <0x3e8>; polling-delay-passive = <0x64>; - status = "disabled"; - thermal-sensors = <0x2a 0x17>; + status = "okay"; + thermal-sensors = <0x29 0x17>; };
gpu1 { polling-delay = <0x3e8>; polling-delay-passive = <0x64>; - status = "disabled"; - thermal-sensors = <0x2a 0x18>; + status = "okay"; + thermal-sensors = <0x29 0x18>; };
little_cluster { polling-delay = <0x3e8>; polling-delay-passive = <0x64>; - status = "disabled"; - thermal-sensors = <0x2a 0x16>; + status = "okay"; + thermal-sensors = <0x29 0x16>; };
pmic { polling-delay = <0x3e8>; polling-delay-passive = <0x64>; - thermal-sensors = <0x2a 0x0>; + thermal-sensors = <0x29 0x0>; };
soc { polling-delay = <0x3e8>; polling-delay-passive = <0x64>; - thermal-sensors = <0x2a 0x3>; + thermal-sensors = <0x29 0x3>; }; };
@@ -1290,7 +1389,7 @@ compatible = "arm,armv7-timer-mem"; ranges; reg = <0x0 0x2a810000 0x0 0x10000>; - status = "disabled"; + status = "okay";
frame@2a830000 { frame-number = <0x1>; @@ -1319,8 +1418,8 @@ port {
endpoint { - linux,phandle = <0x23>; - phandle = <0x23>; + linux,phandle = <0x22>; + phandle = <0x22>; remote-endpoint = <0x7>; slave-mode; }; @@ -1329,7 +1428,7 @@
uart@7ff80000 { clock-names = "uartclk", "apb_pclk"; - clocks = <0x32 0x2>; + clocks = <0x31 0x2>; compatible = "arm,pl011", "arm,primecell"; interrupts = <0x0 0x53 0x4>; reg = <0x0 0x7ff80000 0x0 0x1000>;
Hi Kim,
I'm running r1 - the cs on r1 and r2 are identical - the only difference is the A57 A72 change. So I see cpu 0 and 1 as the A57, and 2-5 as the A53, I would expect the same on r2.
Mike On Wed, 15 Mar 2017 at 18:40, Kim Phillips kim.phillips@arm.com wrote:
On Wed, 15 Mar 2017 19:04:38 +0000 Mike Leach mike.leach@linaro.org wrote:
not so, according to this:
https://community.arm.com/dev-platforms/b/documents/posts/faq-how-do-i-chang...
r1 boots off an A57, whereas r2 boots off an A53, leading to different cpu assignments in Linux (cpu0 is the boot cpu).
Either way, if I use taskset -c 0 - for the A53 - I still see the failure, and on first try with gcc4.9-built binaries:
root@juno:~# dmesg | grep gcc [ 0.000000] Linux version 4.11.0-rc1-g0d15341 (kim@dupont) (gcc version 4.9.4 20151028 (prerelease) (Linaro GCC 4.9-2016.02) ) #3 SMP PREEMPT Tue Mar 14 22:41:34 CDT 2017 root@juno:~# taskset -c 0 ./perf record -e cs_etm/@20070000.etr/u --per-thread taskset -c 0 uname [ 1727.185799] coresight-replicator-qcom 20120000.replicator: REPLICATOR enabled [ 1727.192885] coresight-funnel 20150000.funnel: FUNNEL inport 0 enabled [ 1727.199278] coresight-tmc 20010000.etf: TMC-ETF enabled [ 1727.204460] coresight-funnel 20040000.funnel: FUNNEL inport 1 enabled [ 1727.210848] coresight-funnel 230c0000.funnel: FUNNEL inport 0 enabled [ 1727.217714] coresight-funnel 230c0000.funnel: FUNNEL inport 0 disabled [ 1727.224183] coresight-funnel 20040000.funnel: FUNNEL inport 1 disabled [ 1727.230666] coresight-tmc 20010000.etf: TMC disabled [ 1727.235585] coresight-funnel 20150000.funnel: FUNNEL inport 0 disabled [ 1727.242049] coresight-replicator-qcom 20120000.replicator: REPLICATOR disabled [ 1727.249217] coresight-tmc 20070000.etr: TMC-ETR disabled [ 1727.254992] coresight-replicator-qcom 20120000.replicator: REPLICATOR enabled [ 1727.262065] coresight-funnel 20150000.funnel: FUNNEL inport 0 enabled [ 1727.268456] coresight-tmc 20010000.etf: TMC-ETF enabled [ 1727.273636] coresight-funnel 20040000.funnel: FUNNEL inport 1 enabled [ 1727.280022] coresight-funnel 230c0000.funnel: FUNNEL inport 0 enabled [ 1727.286840] coresight-funnel 230c0000.funnel: FUNNEL inport 0 disabled [ 1727.293308] coresight-funnel 20040000.funnel: FUNNEL inport 1 disabled [ 1727.299790] coresight-tmc 20010000.etf: TMC disabled [ 1727.304708] coresight-funnel 20150000.funnel: FUNNEL inport 0 disabled [ 1727.311171] coresight-replicator-qcom 20120000.replicator: REPLICATOR disabled [ 1727.318339] coresight-tmc 20070000.etr: TMC-ETR disabled [ 1727.324087] coresight-replicator-qcom 20120000.replicator: REPLICATOR enabled [ 1727.331160] coresight-funnel 20150000.funnel: FUNNEL inport 0 enabled [ 1727.337551] coresight-tmc 20010000.etf: TMC-ETF enabled [ 1727.342730] coresight-funnel 20040000.funnel: FUNNEL inport 1 enabled [ 1727.349116] coresight-funnel 230c0000.funnel: FUNNEL inport 0 enabled [ 1727.369918] coresight-funnel 230c0000.funnel: FUNNEL inport 0 disabled [ 1727.376387] coresight-funnel 20040000.funnel: FUNNEL inport 1 disabled [ 1727.382871] coresight-tmc 20010000.etf: TMC disabled [ 1727.387790] coresight-funnel 20150000.funnel: FUNNEL inport 0 disabled [ 1727.394254] coresight-replicator-qcom 20120000.replicator: REPLICATOR disabled [ 1727.401422] coresight-tmc 20070000.etr: TMC-ETR disabled [ 1727.407207] coresight-replicator-qcom 20120000.replicator: REPLICATOR enabled [ 1727.414281] coresight-funnel 20150000.funnel: FUNNEL inport 0 enabled [ 1727.420672] coresight-tmc 20010000.etf: TMC-ETF enabled [ 1727.425851] coresight-funnel 20040000.funnel: FUNNEL inport 1 enabled [ 1727.432237] coresight-funnel 230c0000.funnel: FUNNEL inport 0 enabled [ 1727.439054] coresight-funnel 230c0000.funnel: FUNNEL inport 0 disabled [ 1727.445522] coresight-funnel 20040000.funnel: FUNNEL inport 1 disabled [ 1727.452006] coresight-tmc 20010000.etf: TMC disabled [ 1727.456924] coresight-funnel 20150000.funnel: FUNNEL inport 0 disabled [ 1727.463388] coresight-replicator-qcom 20120000.replicator: REPLICATOR disabled [ 1727.470556] coresight-tmc 20070000.etr: TMC-ETR disabled [ 1727.476382] coresight-replicator-qcom 20120000.replicator: REPLICATOR enabled [ 1727.483456] coresight-funnel 20150000.funnel: FUNNEL inport 0 enabled [ 1727.489847] coresight-tmc 20010000.etf: TMC-ETF enabled [ 1727.495027] coresight-funnel 20040000.funnel: FUNNEL inport 1 enabled [ 1727.501413] coresight-funnel 230c0000.funnel: FUNNEL inport 0 enabled [ 1727.508244] coresight-funnel 230c0000.funnel: FUNNEL inport 0 disabled [ 1727.514713] coresight-funnel 20040000.funnel: FUNNEL inport 1 disabled [ 1727.521196] coresight-tmc 20010000.etf: TMC disabled [ 1727.526114] coresight-funnel 20150000.funnel: FUNNEL inport 0 disabled [ 1727.532577] coresight-replicator-qcom 20120000.replicator: REPLICATOR disabled [ 1727.539745] coresight-tmc 20070000.etr: TMC-ETR disabled [ 1727.545526] coresight-replicator-qcom 20120000.replicator: REPLICATOR enabled [ 1727.552600] coresight-funnel 20150000.funnel: FUNNEL inport 0 enabled [ 1727.558990] coresight-tmc 20010000.etf: TMC-ETF enabled [ 1727.564169] coresight-funnel 20040000.funnel: FUNNEL inport 1 enabled [ 1727.570556] coresight-funnel 230c0000.funnel: FUNNEL inport 0 enabled [ 1727.577390] coresight-funnel 230c0000.funnel: FUNNEL inport 0 disabled [ 1727.583858] coresight-funnel 20040000.funnel: FUNNEL inport 1 disabled [ 1727.590340] coresight-tmc 20010000.etf: TMC disabled [ 1727.595259] coresight-funnel 20150000.funnel: FUNNEL inport 0 disabled [ 1727.601722] coresight-replicator-qcom 20120000.replicator: REPLICATOR disabled [ 1727.608890] coresight-tmc 20070000.etr: TMC-ETR disabled [ 1727.614653] coresight-replicator-qcom 20120000.replicator: REPLICATOR enabled [ 1727.621727] coresight-funnel 20150000.funnel: FUNNEL inport 0 enabled [ 1727.628117] coresight-tmc 20010000.etf: TMC-ETF enabled [ 1727.633297] coresight-funnel 20040000.funnel: FUNNEL inport 1 enabled [ 1727.639683] coresight-funnel 230c0000.funnel: FUNNEL inport 0 enabled [ 1727.646495] coresight-funnel 230c0000.funnel: FUNNEL inport 0 disabled [ 1727.652963] coresight-funnel 20040000.funnel: FUNNEL inport 1 disabled [ 1727.659446] coresight-tmc 20010000.etf: TMC disabled [ 1727.664364] coresight-funnel 20150000.funnel: FUNNEL inport 0 disabled [ 1727.670828] coresight-replicator-qcom 20120000.replicator: REPLICATOR disabled [ 1727.677995] coresight-tmc 20070000.etr: TMC-ETR disabled [ 1727.683740] coresight-replicator-qcom 20120000.replicator: REPLICATOR enabled [ 1727.690813] coresight-funnel 20150000.funnel: FUNNEL inport 0 enabled [ 1727.697203] coresight-tmc 20010000.etf: TMC-ETF enabled [ 1727.702383] coresight-funnel 20040000.funnel: FUNNEL inport 1 enabled [ 1727.708769] coresight-funnel 230c0000.funnel: FUNNEL inport 0 enabled [ 1727.715581] coresight-funnel 230c0000.funnel: FUNNEL inport 0 disabled [ 1727.722049] coresight-funnel 20040000.funnel: FUNNEL inport 1 disabled [ 1727.728532] coresight-tmc 20010000.etf: TMC disabled [ 1727.733450] coresight-funnel 20150000.funnel: FUNNEL inport 0 disabled [ 1727.739915] coresight-replicator-qcom 20120000.replicator: REPLICATOR disabled [ 1727.747083] coresight-tmc 20070000.etr: TMC-ETR disabled [ 1727.752831] coresight-replicator-qcom 20120000.replicator: REPLICATOR enabled [ 1727.759904] coresight-funnel 20150000.funnel: FUNNEL inport 0 enabled [ 1727.766294] coresight-tmc 20010000.etf: TMC-ETF enabled [ 1727.771473] coresight-funnel 20040000.funnel: FUNNEL inport 1 enabled [ 1727.777860] coresight-funnel 230c0000.funnel: FUNNEL inport 0 enabled [ 1727.785106] coresight-funnel 230c0000.funnel: FUNNEL inport 0 disabled [ 1727.791576] coresight-funnel 20040000.funnel: FUNNEL inport 1 disabled [ 1727.798059] coresight-tmc 20010000.etf: TMC disabled [ 1727.802978] coresight-funnel 20150000.funnel: FUNNEL inport 0 disabled [ 1727.809442] coresight-replicator-qcom 20120000.replicator: REPLICATOR disabled [ 1727.816610] coresight-tmc 20070000.etr: TMC-ETR disabled [ 1727.822396] coresight-replicator-qcom 20120000.replicator: REPLICATOR enabled [ 1727.829470] coresight-funnel 20150000.funnel: FUNNEL inport 0 enabled [ 1727.835860] coresight-tmc 20010000.etf: TMC-ETF enabled [ 1727.841040] coresight-funnel 20040000.funnel: FUNNEL inport 1 enabled [ 1727.847427] coresight-funnel 230c0000.funnel: FUNNEL inport 0 enabled [ 1727.854241] coresight-funnel 230c0000.funnel: FUNNEL inport 0 disabled [ 1727.860709] coresight-funnel 20040000.funnel: FUNNEL inport 1 disabled [ 1727.867192] coresight-tmc 20010000.etf: TMC disabled [ 1727.872111] coresight-funnel 20150000.funnel: FUNNEL inport 0 disabled [ 1727.878575] coresight-replicator-qcom 20120000.replicator: REPLICATOR disabled [ 1727.885742] coresight-tmc 20070000.etr: TMC-ETR disabled [ 1727.891503] coresight-replicator-qcom 20120000.replicator: REPLICATOR enabled [ 1727.898577] coresight-funnel 20150000.funnel: FUNNEL inport 0 enabled [ 1727.904968] coresight-tmc 20010000.etf: TMC-ETF enabled [ 1727.910147] coresight-funnel 20040000.funnel: FUNNEL inport 1 enabled [ 1727.916534] coresight-funnel 230c0000.funnel: FUNNEL inport 0 enabled Linux [ 1727.936635] coresight-funnel 230c0000.funnel: FUNNEL inport 0 disabled [ 1727.943106] coresight-funnel 20040000.funnel: FUNNEL inport 1 disabled [ 1727.949589] coresight-tmc 20010000.etf: TMC disabled [ 1727.954507] coresight-funnel 20150000.funnel: FUNNEL inport 0 disabled [ 1727.960971] coresight-replicator-qcom 20120000.replicator: REPLICATOR disabled [ 1727.968139] coresight-tmc 20070000.etr: TMC-ETR disabled [ perf record: Woken up 2 times to write data ] [ perf record: Captured and wrote
...and the hard lock-up.
Thanks,
Kim
p.s. please inline & trim responses, thanks.
Hi Kim,
I grabbed a Juno-r2 for an hour while the validation team where looking in the other direction :).....
On 15 March 2017 at 23:27, Kim Phillips kim.phillips@arm.com wrote:
Well that's unnecessarily confusing - but confirmed on my R2 too...
[ 0.000000] Booting Linux on physical CPU 0x100 [ 0.000000] Linux version 4.11.0-rc1-gc508373-dirty (mleach@ubu-16-04-vm) (gcc version 6.2.1 20161016 (Linaro GCC 6.2-2016.11) ) #19 SMP PREEMPT Wed Mar 15 14:41:05 GMT 2017
root@linaro-developer:/home/mleach/csal/demos/juno_demo_setup# for i in 0 1 2 3 4 5; do cat /sys/devices/system/cpu/cpu$i/regs/identification/midr_el1; done 0x00000000410fd033 0x00000000410fd080 0x00000000410fd080 0x00000000410fd033 0x00000000410fd033 0x00000000410fd033
So, running the stuff as usual, gcc 6.x built kernel and perf, as root and as my user login via sudo, various cores
====================================================== root@linaro-developer:/home/mleach/perf-tools# taskset -c 2 ./perf record -e cs_etm/@20070000.etr/u --per-thread taskset -c 2 uname Linux [ perf record: Woken up 2 times to write data ] [ perf record: Captured and wrote 0.077 MB perf.data ] root@linaro-developer:/home/mleach/perf-tools# taskset -c 2 ./perf record -e cs_etm/@20070000.etr/u --per-thread taskset -c 2 uname Linux [ perf record: Woken up 2 times to write data ] [ perf record: Captured and wrote 0.076 MB perf.data ] root@linaro-developer:/home/mleach/perf-tools# taskset -c 0 ./perf record -e cs_etm/@20070000.etr/u --per-thread taskset -c 0 uname Linux [ perf record: Woken up 2 times to write data ] [ perf record: Captured and wrote 0.076 MB perf.data ] root@linaro-developer:/home/mleach/perf-tools# root@linaro-developer:/home/mleach/perf-tools# mleach@linaro-developer:~/perf-tools$ sudo taskset -c 0 ./perf record -e cs_etm/@20070000.etr/u --per-thread taskset -c 0 uname Linux [ perf record: Woken up 2 times to write data ] [ perf record: Captured and wrote 0.077 MB perf.data ] ===========================================================
All good - at least on this R2.
The only issues I have encountered with this board and kernel are that I get an error on the PCI bus during boot, and the rear network cable does not work - I have to use the front one. Could be a new kernel issue or a h/w fault on my board. Either way CoreSight is working normally
Regards
Mike
On Thu, 16 Mar 2017 12:20:37 +0000 Mike Leach mike.leach@linaro.org wrote:
gcc, kernel, and perf versions aren't shown below again. I also don't see sudo being used.
Well I _consistently_ get the hard lockup on first try.
One obvious difference is my runs get funnel messages, whereas yours don't. Is that due to my building with DEBUG=5? Can you try building your perf like this then?:
make -C perf NO_LIBDW_DWARF_UNWIND=1 NO_LIBUNWIND=1 NO_LIBBPF=1 NO_LIBELF=1 NO_SDT=1 NO_LOCAL_LIBUNWIND=1 NO_LIBAUDIT=1 NO_LIBCRYPTO=1 NO_GTK2=1 NO_SLANG=1 NO_LIBPYTHON=1 NO_LIBPERL=1 NO_JVMTI=1 DEBUG=5
You continue to not mention trying with a time delay in between your runs. Can you wait several minutes between runs?
Here are the list of differences we should double-check:
- device tree - juno-r2.dtb from commit c508373874 - distro (i.e., libc): Debian 9 stretch:
--- root@juno:~# ldd ./perf linux-vdso.so.1 (0x0000ffff8afe8000) libpthread.so.0 => /lib/aarch64-linux-gnu/libpthread.so.0 (0x0000ffff8afac000) librt.so.1 => /lib/aarch64-linux-gnu/librt.so.1 (0x0000ffff8af95000) libm.so.6 => /lib/aarch64-linux-gnu/libm.so.6 (0x0000ffff8aeea000) libdl.so.2 => /lib/aarch64-linux-gnu/libdl.so.2 (0x0000ffff8aed7000) libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000ffff8ad8d000) /lib/ld-linux-aarch64.so.1 (0x0000aaaab6360000) ---
Can you provide your details?
- firmware (see below log) - kernel config - gcc: I can reproduce with Linaro's 4.9.4:
--- root@juno:~# dmesg | grep gcc [ 0.000000] Linux version 4.11.0-rc1-g0d15341 (kim@dupont) (gcc version 4.9.4 20151028 (prerelease) (Linaro GCC 4.9-2016.02) ) #3 SMP PREEMPT Tue Mar 14 22:41:34 CDT 2017 root@juno:~# strings -a ./perf | grep "GCC" GCC: (Linaro GCC 4.9-2016.02) 4.9.4 20151028 (prerelease) ---
My entire session log, from firmware start, is below. I didn't have any PCI badness and only use the front networking port. IIRC, those can be kernel config related, and since I'm using your kernel config, and not seeing these problems, I'd have to ask to see whether your dmesg matches?
Also, can you confirm the OOM when enabling the sinks prior to perf invocation? If all else fails, can we work on fixing that problem?
Thanks,
Kim
--------------- Cmd> reboot
Powering up system...
Switching on ATXPSU... PMIC RAM configuration (pms_v105.bin)... MBtemp : 29 degC
Configuring motherboard (rev D, var A)... IOFPGA image \MB\HBI0262D\io_b118.bit IOFPGA config: PASSED OSC CLK config: PASSED
Configuring SCC registers... Writing SCC 0x00000054 with 0x0007FFFE Writing SCC 0x0000005C with 0x00FE001E Writing SCC 0x00000100 with 0x00271000 Writing SCC 0x00000104 with 0x00013100 Writing SCC 0x00000108 with 0x003F1000 Writing SCC 0x0000010C with 0x0001F300 Writing SCC 0x00000118 with 0x003F1000 Writing SCC 0x0000011C with 0x0001F100 Writing SCC 0x000000F8 with 0x0BEC0000 Writing SCC 0x000000FC with 0xABE40000 Writing SCC 0x00000A14 with 0x00000000 Writing SCC 0x0000000C with 0x000000C2 Writing SCC 0x00000010 with 0x000000C2
Peripheral ID0:0x000000AD Peripheral ID1:0x000000B0 Peripheral ID2:0x0000001B Peripheral ID3:0x00000000 Peripheral ID4:0x0000000D Peripheral ID5:0x000000F0 Peripheral ID6:0x00000005 Peripheral ID7:0x000000B1
Programming NOR Flash PCIE clock configured...
Testing motherboard interfaces (FPGA build 118)... SRAM 32MB test: PASSED LAN9118 test: PASSED KMI1/2 test: PASSED MMC test: PASSED PB/LEDs test: PASSED FPGA UART test: PASSED PCIe init test: PASSED PCIe MAC addresss 0002-F700-6BC7 MAC addrs test: PASSED
SMC MAC address 0002-F700-6BC5 Setting HDMI0 mode for SVGA. Setting HDMI1 mode for SVGA.
SoC SMB clock enabled.
Testing SMB clock... SMB clock running Releasing system resets...
UART0 set to SoC UART0 UART1 set to SoC UART1
NOTICE: Booting Trusted Firmware NOTICE: BL1: v1.1(debug):4a1dcde NOTICE: BL1: Built : 11:03:08, Nov 25 2015 NOTICE: BL1: Booting BL2 NOTICE: BL2: v1.1(debug):4a1dcde NOTICE: BL2: Built : 11:03:13, Nov 25 2015 WARNING: Failed to obtain reference to image id=10 (-2) WARNING: Failed to load BL3-2 (-2) NOTICE: BL1: Booting BL3-1 NOTICE: BL3-1: v1.1(debug):4a1dcde NOTICE: BL3-1: Built : 11:03:16, Nov 25 2015 UEFI firmware (version ea31f8e built at 14:16:35 on Oct 15 2015) add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/ArmPlatformPkg/PrePi/PeiMPCore/DEBUG/ArmPlatformPrePiMPCore.dll 0xE0001800 add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Core/Dxe/DxeMain/DEBUG/DxeCore.dll 0xFE760260 Loading DxeCore at 0x00FE760000 EntryPoint=0x00FE760260 add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Core/Dxe/DxeMain/DEBUG/DxeCore.dll 0xFE760000 HOBLIST address in DXE = 0x9FFDAA018 Memory Allocation 0x00000004 0xFEFEA000 - 0xFEFEAFFF Memory Allocation 0x00000004 0xFEFE8000 - 0xFEFE9FFF Memory Allocation 0x00000004 0xFEFE6000 - 0xFEFE7FFF Memory Allocation 0x00000004 0xFEFE4000 - 0xFEFE5FFF Memory Allocation 0x00000004 0xFEFE2000 - 0xFEFE3FFF Memory Allocation 0x00000004 0xFEFE0000 - 0xFEFE1FFF Memory Allocation 0x00000004 0xFEFDE000 - 0xFEFDFFFF Memory Allocation 0x00000004 0xFEFEB000 - 0xFEFFFFFF Memory Allocation 0x00000004 0xFEFCE000 - 0xFEFDDFFF Memory Allocation 0x00000004 0xFEBB3000 - 0xFEFCDFFF Memory Allocation 0x00000004 0xFE798000 - 0xFEBB2FFF Memory Allocation 0x00000004 0xFE760000 - 0xFE797FFF Memory Allocation 0x00000003 0xFE760000 - 0xFE797FFF FV Hob 0xE0000000 - 0xE00EFFFF FV Hob 0xFE798000 - 0xFEBB1A7F FV2 Hob 0xFE798000 - 0xFEBB1A7F add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Universal/PCD/Dxe/Pcd/DEBUG/PcdDxe.dll 0x9FFF43260 Loading driver at 0x009FFF43000 EntryPoint=0x009FFF432A8 PcdDxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/ArmPkg/Drivers/CpuDxe/CpuDxe/DEBUG/ArmCpuDxe.dll 0x9FFF34800 Loading driver at 0x009FFF34000 EntryPoint=0x009FFF34848 ArmCpuDxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Core/RuntimeDxe/RuntimeDxe/DEBUG/RuntimeDxe.dll 0x9FFF80260 !!!!!!!! InsertImageRecord - Section Alignment(0x20) is not 4K !!!!!!!! !!!!!!!! Image - /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Core/RuntimeDxe/RuntimeDxe/DEBUG/RuntimeDxe.dll !!!!!!!! Loading driver at 0x009FFF80000 EntryPoint=0x009FFF802A8 RuntimeDxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Universal/SecurityStubDxe/SecurityStubDxe/DEBUG/SecurityStubDxe.dll 0x9FFF2D260 Loading driver at 0x009FFF2D000 EntryPoint=0x009FFF2D2A8 SecurityStubDxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/EmbeddedPkg/ResetRuntimeDxe/ResetRuntimeDxe/DEBUG/Reset.dll 0x9FFF70260 !!!!!!!! InsertImageRecord - Section Alignment(0x20) is not 4K !!!!!!!! !!!!!!!! Image - /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/EmbeddedPkg/ResetRuntimeDxe/ResetRuntimeDxe/DEBUG/Reset.dll !!!!!!!! Loading driver at 0x009FFF70000 EntryPoint=0x009FFF702A8 Reset.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe/DEBUG/RealTimeClock.dll 0x9FFF60260 !!!!!!!! InsertImageRecord - Section Alignment(0x20) is not 4K !!!!!!!! !!!!!!!! Image - /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/EmbeddedPkg/RealTimeClockRuntimeDxe/RealTimeClockRuntimeDxe/DEBUG/RealTimeClock.dll !!!!!!!! Loading driver at 0x009FFF60000 EntryPoint=0x009FFF602A8 RealTimeClock.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Universal/Acpi/AcpiTableDxe/AcpiTableDxe/DEBUG/AcpiTableDxe.dll 0x9FFF1E260 Loading driver at 0x009FFF1E000 EntryPoint=0x009FFF1E2A8 AcpiTableDxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Universal/HiiDatabaseDxe/HiiDatabaseDxe/DEBUG/HiiDatabase.dll 0x9FFEF2260 Loading driver at 0x009FFEF2000 EntryPoint=0x009FFEF22A8 HiiDatabase.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/EmbeddedPkg/SimpleTextInOutSerial/SimpleTextInOutSerial/DEBUG/SimpleTextInOutSerial.dll 0x9FFEEC260 Loading driver at 0x009FFEEC000 EntryPoint=0x009FFEEC2A8 SimpleTextInOutSerial.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe/DEBUG/CpuIo2Dxe.dll 0x9FFEE6260 Loading driver at 0x009FFEE6000 EntryPoint=0x009FFEE62A8 CpuIo2Dxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/EmbeddedPkg/Drivers/SataSiI3132Dxe/SataSiI3132Dxe/DEBUG/SataSiI3132.dll 0x9FFEDC260 Loading driver at 0x009FFEDC000 EntryPoint=0x009FFEDC2A8 SataSiI3132.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Universal/Network/DpcDxe/DpcDxe/DEBUG/DpcDxe.dll 0x9FFED6260 Loading driver at 0x009FFED6000 EntryPoint=0x009FFED62A8 DpcDxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Universal/DevicePathDxe/DevicePathDxe/DEBUG/DevicePathDxe.dll 0x9FFEC4260 Loading driver at 0x009FFEC4000 EntryPoint=0x009FFEC42A8 DevicePathDxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/EmbeddedPkg/MetronomeDxe/MetronomeDxe/DEBUG/MetronomeDxe.dll 0x9FFEBE260 Loading driver at 0x009FFEBE000 EntryPoint=0x009FFEBE2A8 MetronomeDxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe/DEBUG/ArmVeNorFlashDxe.dll 0x9FFF50260 !!!!!!!! InsertImageRecord - Section Alignment(0x20) is not 4K !!!!!!!! !!!!!!!! Image - /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/ArmPlatformPkg/Drivers/NorFlashDxe/NorFlashDxe/DEBUG/ArmVeNorFlashDxe.dll !!!!!!!! Loading driver at 0x009FFF50000 EntryPoint=0x009FFF502A8 ArmVeNorFlashDxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe/DEBUG/VariableRuntimeDxe.dll 0x9FAF10260 !!!!!!!! InsertImageRecord - Section Alignment(0x20) is not 4K !!!!!!!! !!!!!!!! Image - /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Universal/Variable/RuntimeDxe/VariableRuntimeDxe/DEBUG/VariableRuntimeDxe.dll !!!!!!!! Loading driver at 0x009FAF10000 EntryPoint=0x009FAF102A8 VariableRuntimeDxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Universal/FaultTolerantWriteDxe/FaultTolerantWriteDxe/DEBUG/FaultTolerantWriteDxe.dll 0x9FFEB2260 Loading driver at 0x009FFEB2000 EntryPoint=0x009FFEB22A8 FaultTolerantWriteDxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/ArmPkg/Drivers/ArmGic/ArmGicDxe/DEBUG/ArmGicDxe.dll 0x9FFEAA260 Loading driver at 0x009FFEAA000 EntryPoint=0x009FFEAA2A8 ArmGicDxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/EmbeddedPkg/Drivers/Lan9118Dxe/Lan9118Dxe/DEBUG/Lan9118Dxe.dll 0x9FFE9E260 Loading driver at 0x009FFE9E000 EntryPoint=0x009FFE9E2A8 Lan9118Dxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/ArmPlatformPkg/Bds/Bds/DEBUG/ArmPlatformBds.dll 0x9FFE7A260 Loading driver at 0x009FFE7A000 EntryPoint=0x009FFE7A2A8 ArmPlatformBds.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe/DEBUG/CapsuleRuntimeDxe.dll 0x9FAEE0260 !!!!!!!! InsertImageRecord - Section Alignment(0x20) is not 4K !!!!!!!! !!!!!!!! Image - /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Universal/CapsuleRuntimeDxe/CapsuleRuntimeDxe/DEBUG/CapsuleRuntimeDxe.dll !!!!!!!! Loading driver at 0x009FAEE0000 EntryPoint=0x009FAEE02A8 CapsuleRuntimeDxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe/DEBUG/MonotonicCounterRuntimeDxe.dll 0x9FAED0260 !!!!!!!! InsertImageRecord - Section Alignment(0x20) is not 4K !!!!!!!! !!!!!!!! Image - /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Universal/MonotonicCounterRuntimeDxe/MonotonicCounterRuntimeDxe/DEBUG/MonotonicCounterRuntimeDxe.dll !!!!!!!! Loading driver at 0x009FAED0000 EntryPoint=0x009FAED02A8 MonotonicCounterRuntimeDxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/ArmPkg/Drivers/TimerDxe/TimerDxe/DEBUG/ArmTimerDxe.dll 0x9FFE73260 Loading driver at 0x009FFE73000 EntryPoint=0x009FFE732A8 ArmTimerDxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/ArmPkg/Drivers/GenericWatchdogDxe/GenericWatchdogDxe/DEBUG/GenericWatchdogDxe.dll 0x9FFE6D260 Loading driver at 0x009FFE6D000 EntryPoint=0x009FFE6D2A8 GenericWatchdogDxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/ArmPlatformPkg/ArmJunoPkg/Drivers/PciHostBridgeDxe/PciHostBridgeDxe/DEBUG/PciHostBridge.dll 0x9FFE60260 Loading driver at 0x009FFE60000 EntryPoint=0x009FFE602A8 PciHostBridge.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/ArmPlatformPkg/ArmJunoPkg/Drivers/ArmJunoDxe/ArmJunoDxe/DEBUG/ArmJunoDxe.dll 0x9FFE49260 Loading driver at 0x009FFE49000 EntryPoint=0x009FFE492A8 ArmJunoDxe.efi - Found 'FACS' ACPI Table - Found 'FACP' ACPI Table - Found 'GTDT' ACPI Table - Found 'APIC' ACPI Table - Found 'DSDT' ACPI Table add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe/DEBUG/ConPlatformDxe.dll 0x9FFE41260 Loading driver at 0x009FFE41000 EntryPoint=0x009FFE412A8 ConPlatformDxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe/DEBUG/GraphicsConsoleDxe.dll 0x9FFE34260 Loading driver at 0x009FFE34000 EntryPoint=0x009FFE342A8 GraphicsConsoleDxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe/DEBUG/TerminalDxe.dll 0x9FFE24260 Loading driver at 0x009FFE24000 EntryPoint=0x009FFE242A8 TerminalDxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/ArmPlatformPkg/FileSystem/BootMonFs/BootMonFs/DEBUG/BootMonFs.dll 0x9FFE17260 Loading driver at 0x009FFE17000 EntryPoint=0x009FFE172A8 BootMonFs.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Universal/Disk/DiskIoDxe/DiskIoDxe/DEBUG/DiskIoDxe.dll 0x9FFE0D260 Loading driver at 0x009FFE0D000 EntryPoint=0x009FFE0D2A8 DiskIoDxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Universal/Disk/PartitionDxe/PartitionDxe/DEBUG/PartitionDxe.dll 0x9FFE01260 Loading driver at 0x009FFE01000 EntryPoint=0x009FFE012A8 PartitionDxe.efi add-symbol-file /work/jenkins/workspace/ap-uefi-bin/EDK2_ARCH/ARM/EDK2_BINARY/FatPkg/label/sas-sw/Build/Fat/RELEASE_GCC49/AARCH64/FatPkg/EnhancedFatDxe/Fat/DEBUG/Fat.dll 0x9FFDFA260 Loading driver at 0x009FFDFA000 EntryPoint=0x009FFDFA2A8 Fat.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Universal/Disk/UnicodeCollation/EnglishDxe/EnglishDxe/DEBUG/EnglishDxe.dll 0x9FFDF4260 Loading driver at 0x009FFDF4000 EntryPoint=0x009FFDF42A8 EnglishDxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Universal/FvSimpleFileSystemDxe/FvSimpleFileSystemDxe/DEBUG/FvSimpleFileSystem.dll 0x9FFDE8260 Loading driver at 0x009FFDE8000 EntryPoint=0x009FFDE82A8 FvSimpleFileSystem.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe/DEBUG/EhciDxe.dll 0x9FFDD5260 Loading driver at 0x009FFDD5000 EntryPoint=0x009FFDD52A8 EhciDxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe/DEBUG/UsbBusDxe.dll 0x9FFDC2260 Loading driver at 0x009FFDC2000 EntryPoint=0x009FFDC22A8 UsbBusDxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe/DEBUG/UsbKbDxe.dll 0x9FAEC1260 Loading driver at 0x009FAEC1000 EntryPoint=0x009FAEC12A8 UsbKbDxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Bus/Usb/UsbMassStorageDxe/UsbMassStorageDxe/DEBUG/UsbMassStorageDxe.dll 0x9FAEB4260 Loading driver at 0x009FAEB4000 EntryPoint=0x009FAEB42A8 UsbMassStorageDxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Bus/Usb/UsbMouseDxe/UsbMouseDxe/DEBUG/UsbMouseDxe.dll 0x9FAF82260 Loading driver at 0x009FAF82000 EntryPoint=0x009FAF822A8 UsbMouseDxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe/DEBUG/PciBusDxe.dll 0x9FAE91260 Loading driver at 0x009FAE91000 EntryPoint=0x009FAE912A8 PciBusDxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Bus/Ata/AtaBusDxe/AtaBusDxe/DEBUG/AtaBusDxe.dll 0x9FAE82260 Loading driver at 0x009FAE82000 EntryPoint=0x009FAE822A8 AtaBusDxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Universal/Network/ArpDxe/ArpDxe/DEBUG/ArpDxe.dll 0x9FAE74260 Loading driver at 0x009FAE74000 EntryPoint=0x009FAE742A8 ArpDxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Dxe/DEBUG/Dhcp4Dxe.dll 0x9FAE5F260 Loading driver at 0x009FAE5F000 EntryPoint=0x009FAE5F2A8 Dhcp4Dxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Universal/Network/Ip4ConfigDxe/Ip4ConfigDxe/DEBUG/Ip4ConfigDxe.dll 0x9FAE4D260 Loading driver at 0x009FAE4D000 EntryPoint=0x009FAE4D2A8 Ip4ConfigDxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Universal/Network/Ip4Dxe/Ip4Dxe/DEBUG/Ip4Dxe.dll 0x9FAE34260 Loading driver at 0x009FAE34000 EntryPoint=0x009FAE342A8 Ip4Dxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Universal/Network/MnpDxe/MnpDxe/DEBUG/MnpDxe.dll 0x9FAE1F260 Loading driver at 0x009FAE1F000 EntryPoint=0x009FAE1F2A8 MnpDxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Universal/Network/VlanConfigDxe/VlanConfigDxe/DEBUG/VlanConfigDxe.dll 0x9FAE10260 Loading driver at 0x009FAE10000 EntryPoint=0x009FAE102A8 VlanConfigDxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Dxe/DEBUG/Mtftp4Dxe.dll 0x9FADFD260 Loading driver at 0x009FADFD000 EntryPoint=0x009FADFD2A8 Mtftp4Dxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Universal/Network/Tcp4Dxe/Tcp4Dxe/DEBUG/Tcp4Dxe.dll 0x9FADDB260 Loading driver at 0x009FADDB000 EntryPoint=0x009FADDB2A8 Tcp4Dxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Universal/Network/Udp4Dxe/Udp4Dxe/DEBUG/Udp4Dxe.dll 0x9FADC8260 Loading driver at 0x009FADC8000 EntryPoint=0x009FADC82A8 Udp4Dxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Universal/Network/UefiPxeBcDxe/UefiPxeBcDxe/DEBUG/UefiPxe4BcDxe.dll 0x9FADB5260 Loading driver at 0x009FADB5000 EntryPoint=0x009FADB52A8 UefiPxe4BcDxe.efi add-symbol-file /linaro/platforms/uefi/edk2/Build/ArmJuno/DEBUG_GCC49/AARCH64/MdeModulePkg/Universal/Network/IScsiDxe/IScsiDxe/DEBUG/IScsi4Dxe.dll 0x9FAD94260 Loading driver at 0x009FAD94000 EntryPoint=0x009FAD942A8 IScsi4Dxe.efi PCI: The size 0x7F000000 of the region 0x80000000 has been increased to be a power of two for the AXI translation table. PCI: The size 0x180000000 of the region 0x880000000 has been increased to be a power of two for the AXI translation table. The default boot selection will start in 1 seconds Found image: fip in block 4. Found image: norkern in block 87. Found image: ramdisk.img in block 124. Found image: board.dtb in block 128. Found image: hdlcdclk in block 151. Found image: bl0 in block 249. Found image: bl1 in block 251. initrd: address 0x0 initrd: length 0x0 PEI 986 ms DXE 1478 ms BDS 1643 ms Total Time = 4108 ms
linux: address 0x80080000 linux: length 0x10CE200 fdt: address 0x9FE00000 fdt: length 0x5D40 [ 0.000000] Booting Linux on physical CPU 0x100 [ 0.000000] Linux version 4.11.0-rc1-g0d15341 (kim@dupont) (gcc version 4.9.4 20151028 (prerelease) (Linaro GCC 4.9-2016.02) ) #3 SMP PREEMPT Tue Mar 14 22:41:34 CDT 2017 [ 0.000000] Boot CPU: AArch64 Processor [410fd033] [ 0.000000] efi: Getting EFI parameters from FDT: [ 0.000000] efi: UEFI not found. [ 0.000000] cma: Reserved 16 MiB at 0x00000000fd400000 [ 0.000000] psci: probing for conduit method from DT. [ 0.000000] psci: PSCIv1.0 detected in firmware. [ 0.000000] psci: Using standard PSCI v0.2 function IDs [ 0.000000] psci: MIGRATE_INFO_TYPE not supported. [ 0.000000] percpu: Embedded 24 pages/cpu @ffff80097fe9b000 s60928 r8192 d29184 u98304 [ 0.000000] Detected VIPT I-cache on CPU0 [ 0.000000] CPU features: enabling workaround for ARM erratum 845719 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 2060288 [ 0.000000] Kernel command line: console=ttyAMA0,115200 rootwait root=PARTUUID=99389c0e-3d5a-4d98-b970-c0deb747 [ 0.000000] log_buf_len individual max cpu contribution: 4096 bytes [ 0.000000] log_buf_len total cpu_extra contributions: 20480 bytes [ 0.000000] log_buf_len min size: 16384 bytes [ 0.000000] log_buf_len: 65536 bytes [ 0.000000] early log buf free: 14648(89%) [ 0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes) [ 0.000000] Dentry cache hash table entries: 1048576 (order: 11, 8388608 bytes) [ 0.000000] Inode-cache hash table entries: 524288 (order: 10, 4194304 bytes) [ 0.000000] software IO TLB [mem 0xf9400000-0xfd400000] (64MB) mapped at [ffff800079400000-ffff80007d3fffff] [ 0.000000] Memory: 8126368K/8372224K available (9980K kernel code, 1400K rwdata, 4296K rodata, 1472K init, 299K bss, 229472K reserved, 16384K cma-reserved) [ 0.000000] Virtual kernel memory layout: [ 0.000000] modules : 0xffff000000000000 - 0xffff000008000000 ( 128 MB) [ 0.000000] vmalloc : 0xffff000008000000 - 0xffff7dffbfff0000 (129022 GB) [ 0.000000] .text : 0xffff000008080000 - 0xffff000008a40000 ( 9984 KB) [ 0.000000] .rodata : 0xffff000008a40000 - 0xffff000008e80000 ( 4352 KB) [ 0.000000] .init : 0xffff000008e80000 - 0xffff000008ff0000 ( 1472 KB) [ 0.000000] .data : 0xffff000008ff0000 - 0xffff00000914e200 ( 1401 KB) [ 0.000000] .bss : 0xffff00000914e200 - 0xffff000009198f50 ( 300 KB) [ 0.000000] fixed : 0xffff7dfffe7fd000 - 0xffff7dfffec00000 ( 4108 KB) [ 0.000000] PCI I/O : 0xffff7dfffee00000 - 0xffff7dffffe00000 ( 16 MB) [ 0.000000] vmemmap : 0xffff7e0000000000 - 0xffff800000000000 ( 2048 GB maximum) [ 0.000000] 0xffff7e0000000000 - 0xffff7e0026000000 ( 608 MB actual) [ 0.000000] memory : 0xffff800000000000 - 0xffff800980000000 ( 38912 MB) [ 0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=6, Nodes=1 [ 0.000000] Preemptible hierarchical RCU implementation. [ 0.000000] Build-time adjustment of leaf fanout to 64. [ 0.000000] RCU restricting CPUs from NR_CPUS=64 to nr_cpu_ids=6. [ 0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=64, nr_cpu_ids=6 [ 0.000000] NR_IRQS:64 nr_irqs:64 0 [ 0.000000] GIC: Using split EOI/Deactivate mode [ 0.000000] GICv2m: range[mem 0x2c1c0000-0x2c1c0fff], SPI[224:255] [ 0.000000] arm_arch_timer: Architected cp15 and mmio timer(s) running at 50.00MHz (phys/phys). [ 0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0xb8812736b, max_idle_ns: 440795202655 ns [ 0.000004] sched_clock: 56 bits at 50MHz, resolution 20ns, wraps every 4398046511100ns [ 0.000571] clocksource: arm,sp804: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 1911260446275 ns [ 0.000606] Failed to initialize '/smb@08000000/motherboard/iofpga@3,00000000/timer@120000': -22 [ 0.000856] Console: colour dummy device 80x25 [ 0.000885] Calibrating delay loop (skipped), value calculated using timer frequency.. 100.00 BogoMIPS (lpj=200000) [ 0.000898] pid_max: default: 32768 minimum: 301 [ 0.001003] Security Framework initialized [ 0.001042] Mount-cache hash table entries: 16384 (order: 5, 131072 bytes) [ 0.001052] Mountpoint-cache hash table entries: 16384 (order: 5, 131072 bytes) [ 0.001827] ftrace: allocating 37034 entries in 145 pages [ 0.092059] ASID allocator initialised with 65536 entries [ 0.113104] EFI services will not be available. [ 0.128141] smp: Bringing up secondary CPUs ... [ 0.160439] Detected PIPT I-cache on CPU1 [ 0.160478] CPU1: Booted secondary processor [410fd080] [ 0.192470] Detected PIPT I-cache on CPU2 [ 0.192492] CPU2: Booted secondary processor [410fd080] [ 0.224556] Detected VIPT I-cache on CPU3 [ 0.224600] CPU3: Booted secondary processor [410fd033] [ 0.256636] Detected VIPT I-cache on CPU4 [ 0.256668] CPU4: Booted secondary processor [410fd033] [ 0.288719] Detected VIPT I-cache on CPU5 [ 0.288749] CPU5: Booted secondary processor [410fd033] [ 0.288808] smp: Brought up 1 node, 6 CPUs [ 0.288841] SMP: Total of 6 processors activated. [ 0.288850] CPU features: detected feature: 32-bit EL0 Support [ 0.288907] CPU: All CPU(s) started at EL2 [ 0.288935] alternatives: patching kernel code [ 0.290045] devtmpfs: initialized [ 0.294851] DMI not present or invalid. [ 0.295043] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns [ 0.295060] futex hash table entries: 2048 (order: 6, 262144 bytes) [ 0.295804] pinctrl core: initialized pinctrl subsystem [ 0.296996] NET: Registered protocol family 16 [ 0.298536] cpuidle: using governor menu [ 0.298678] Failed to initialise IOMMU /iommu@2b500000 [ 0.298690] Failed to initialise IOMMU /iommu@2b600000 [ 0.298855] Failed to initialise IOMMU /iommu@7fb00000 [ 0.298866] Failed to initialise IOMMU /iommu@7fb10000 [ 0.298877] Failed to initialise IOMMU /iommu@7fb20000 [ 0.298888] Failed to initialise IOMMU /iommu@7fb30000 [ 0.299165] vdso: 2 pages (1 code @ ffff000008a47000, 1 data @ ffff000008ff4000) [ 0.299180] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers. [ 0.299972] DMA: preallocated 256 KiB pool for atomic allocations [ 0.300259] Serial: AMBA PL011 UART driver [ 0.303151] 7ff80000.uart: ttyAMA0 at MMIO 0x7ff80000 (irq = 21, base_baud = 0) is a PL011 rev3 [ 0.870944] console [ttyAMA0] enabled [ 0.889070] HugeTLB registered 2 MB page size, pre-allocated 0 pages [ 0.895983] ACPI: Interpreter disabled. [ 0.900511] vgaarb: loaded [ 0.903329] SCSI subsystem initialized [ 0.907302] usbcore: registered new interface driver usbfs [ 0.912764] usbcore: registered new interface driver hub [ 0.918079] usbcore: registered new device driver usb [ 0.923558] pps_core: LinuxPPS API ver. 1 registered [ 0.928503] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti giometti@linux.it [ 0.937574] PTP clock support registered [ 0.941569] dmi: Firmware registration failed. [ 0.946060] Advanced Linux Sound Architecture Driver Initialized. [ 0.952471] clocksource: Switched to clocksource arch_sys_counter [ 0.987170] VFS: Disk quotas dquot_6.6.0 [ 0.991096] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes) [ 0.998041] pnp: PnP ACPI: disabled [ 1.008946] NET: Registered protocol family 2 [ 1.013754] TCP established hash table entries: 65536 (order: 7, 524288 bytes) [ 1.021683] TCP bind hash table entries: 65536 (order: 8, 1048576 bytes) [ 1.029767] TCP: Hash tables configured (established 65536 bind 65536) [ 1.036339] UDP hash table entries: 4096 (order: 5, 131072 bytes) [ 1.042601] UDP-Lite hash table entries: 4096 (order: 5, 131072 bytes) [ 1.049402] NET: Registered protocol family 1 [ 1.054034] RPC: Registered named UNIX socket transport module. [ 1.059908] RPC: Registered udp transport module. [ 1.064580] RPC: Registered tcp transport module. [ 1.069245] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 1.076529] hw perfevents: enabled with armv8_cortex_a72 PMU driver, 7 counters available [ 1.084858] hw perfevents: enabled with armv8_cortex_a53 PMU driver, 7 counters available [ 1.093023] kvm [1]: 8-bit VMID [ 1.096129] kvm [1]: IDMAP page: 80a37000 [ 1.100112] kvm [1]: HYP VA range: 800000000000:ffffffffffff [ 1.106598] kvm [1]: Hyp mode initialized successfully [ 1.111728] kvm [1]: vgic-v2@2c04f000 [ 1.115490] kvm [1]: vgic interrupt IRQ1 [ 1.119393] kvm [1]: virtual timer IRQ5 [ 1.125591] audit: initializing netlink subsys (disabled) [ 1.131031] audit: type=2000 audit(0.840:1): state=initialized audit_enabled=0 res=1 [ 1.131812] workingset: timestamp_bits=46 max_order=21 bucket_order=0 [ 1.142730] squashfs: version 4.0 (2009/01/31) Phillip Lougher [ 1.143588] NFS: Registering the id_resolver key type [ 1.143608] Key type id_resolver registered [ 1.143611] Key type id_legacy registered [ 1.143620] nfs4filelayout_init: NFSv4 File Layout Driver Registering... [ 1.143799] 9p: Installing v9fs 9p2000 file system support [ 1.146600] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 247) [ 1.146606] io scheduler noop registered [ 1.146911] io scheduler cfq registered (default) [ 1.146915] io scheduler mq-deadline registered [ 1.153510] pl061_gpio 1c1d0000.gpio: PL061 GPIO chip @0x000000001c1d0000 registered [ 1.154186] OF: PCI: host bridge /pcie-controller@40000000 ranges: [ 1.154201] OF: PCI: IO 0x5f800000..0x5fffffff -> 0x00000000 [ 1.154212] OF: PCI: MEM 0x50000000..0x57ffffff -> 0x50000000 [ 1.154218] OF: PCI: MEM 0x4000000000..0x40ffffffff -> 0x4000000000 [ 1.154261] pci-host-generic 40000000.pcie-controller: ECAM at [mem 0x40000000-0x4fffffff] for [bus 00-ff] [ 1.154388] pci-host-generic 40000000.pcie-controller: PCI host bridge to bus 0000:00 [ 1.154397] pci_bus 0000:00: root bus resource [bus 00-ff] [ 1.154403] pci_bus 0000:00: root bus resource [io 0x0000-0x7fffff] [ 1.154409] pci_bus 0000:00: root bus resource [mem 0x50000000-0x57ffffff] [ 1.154415] pci_bus 0000:00: root bus resource [mem 0x4000000000-0x40ffffffff pref] [ 1.167603] pci 0000:03:00.0: disabling ASPM on pre-1.1 PCIe device. You can enable it with 'pcie_aspm=force' [ 1.168908] pci 0000:00:00.0: BAR 14: assigned [mem 0x50000000-0x501fffff] [ 1.168917] pci 0000:00:00.0: BAR 0: assigned [mem 0x4000000000-0x4000003fff 64bit pref] [ 1.168928] pci 0000:00:00.0: BAR 13: assigned [io 0x1000-0x2fff] [ 1.168937] pci 0000:01:00.0: BAR 14: assigned [mem 0x50000000-0x501fffff] [ 1.168944] pci 0000:01:00.0: BAR 13: assigned [io 0x1000-0x2fff] [ 1.168955] pci 0000:02:01.0: BAR 14: assigned [mem 0x50000000-0x500fffff] [ 1.168962] pci 0000:02:1f.0: BAR 14: assigned [mem 0x50100000-0x501fffff] [ 1.168968] pci 0000:02:01.0: BAR 13: assigned [io 0x1000-0x1fff] [ 1.168974] pci 0000:02:1f.0: BAR 13: assigned [io 0x2000-0x2fff] [ 1.168985] pci 0000:03:00.0: BAR 6: assigned [mem 0x50000000-0x5007ffff pref] [ 1.168993] pci 0000:03:00.0: BAR 2: assigned [mem 0x50080000-0x50083fff 64bit] [ 1.169016] pci 0000:03:00.0: BAR 0: assigned [mem 0x50084000-0x5008407f 64bit] [ 1.169038] pci 0000:03:00.0: BAR 4: assigned [io 0x1000-0x107f] [ 1.169050] pci 0000:02:01.0: PCI bridge to [bus 03] [ 1.169058] pci 0000:02:01.0: bridge window [io 0x1000-0x1fff] [ 1.169071] pci 0000:02:01.0: bridge window [mem 0x50000000-0x500fffff] [ 1.169091] pci 0000:02:02.0: PCI bridge to [bus 04] [ 1.169118] pci 0000:02:03.0: PCI bridge to [bus 05] [ 1.169145] pci 0000:02:0c.0: PCI bridge to [bus 06] [ 1.169173] pci 0000:02:10.0: PCI bridge to [bus 07] [ 1.169204] pci 0000:08:00.0: BAR 0: assigned [mem 0x50100000-0x50103fff 64bit] [ 1.169224] pci 0000:08:00.0: BAR 2: assigned [io 0x2000-0x20ff] [ 1.169234] pci 0000:02:1f.0: PCI bridge to [bus 08] [ 1.169241] pci 0000:02:1f.0: bridge window [io 0x2000-0x2fff] [ 1.169254] pci 0000:02:1f.0: bridge window [mem 0x50100000-0x501fffff] [ 1.169273] pci 0000:01:00.0: PCI bridge to [bus 02-08] [ 1.169280] pci 0000:01:00.0: bridge window [io 0x1000-0x2fff] [ 1.169293] pci 0000:01:00.0: bridge window [mem 0x50000000-0x501fffff] [ 1.169312] pci 0000:00:00.0: PCI bridge to [bus 01-08] [ 1.169318] pci 0000:00:00.0: bridge window [io 0x1000-0x2fff] [ 1.169325] pci 0000:00:00.0: bridge window [mem 0x50000000-0x501fffff] [ 1.169595] pcieport 0000:00:00.0: Signaling PME with IRQ 48 [ 1.169735] pcieport 0000:00:00.0: AER enabled with IRQ 48 [ 1.175210] dma-pl330 7ff00000.dma: Loaded driver for PL330 DMAC-341330 [ 1.175217] dma-pl330 7ff00000.dma: DBUFF-1024x16bytes Num_Chans-8 Num_Peri-8 Num_Events-8 [ 1.176310] xenfs: not registering filesystem on non-xen platform [ 1.179894] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled [ 1.181440] SuperH (H)SCI(F) driver initialized [ 1.181754] msm_serial: driver initialized [ 1.191037] loop: module loaded [ 1.191507] hisi_sas: driver version v1.6 [ 1.192022] sata_sil24 0000:03:00.0: enabling device (0000 -> 0003) [ 1.193305] scsi host0: sata_sil24 [ 1.193600] scsi host1: sata_sil24 [ 1.193758] ata1: SATA max UDMA/100 host m128@0x50084000 port 0x50080000 irq 55 [ 1.193765] ata2: SATA max UDMA/100 host m128@0x50084000 port 0x50082000 irq 55 [ 1.195521] libphy: Fixed MDIO Bus: probed [ 1.196456] tun: Universal TUN/TAP device driver, 1.6 [ 1.196458] tun: (C) 1999-2004 Max Krasnyansky maxk@qualcomm.com [ 1.197705] e1000e: Intel(R) PRO/1000 Network Driver - 3.2.6-k [ 1.197707] e1000e: Copyright(c) 1999 - 2015 Intel Corporation. [ 1.197806] igb: Intel(R) Gigabit Ethernet Network Driver - version 5.4.0-k [ 1.197808] igb: Copyright (c) 2007-2014 Intel Corporation. [ 1.197899] igbvf: Intel(R) Gigabit Virtual Function Network Driver - version 2.4.0-k [ 1.197901] igbvf: Copyright (c) 2009 - 2012 Intel Corporation. [ 1.197991] sky2: driver version 1.30 [ 1.198113] sky2 0000:08:00.0: enabling device (0000 -> 0003) [ 1.198170] sky2 0000:08:00.0: Yukon-2 UL 2 chip revision 0 [ 1.198231] sky2 0000:08:00.0 (unnamed net_device) (uninitialized): Invalid MAC address, defaulting to random [ 1.198946] sky2 0000:08:00.0 eth0: addr 22:11:0e:e2:0b:9e [ 1.224823] libphy: smsc911x-mdio: probed [ 1.225191] smsc911x 18000000.ethernet eth1: MAC Address: 00:02:f7:00:6b:c5 [ 1.225301] usbcore: registered new interface driver catc [ 1.225341] usbcore: registered new interface driver kaweth [ 1.225344] pegasus: v0.9.3 (2013/04/25), Pegasus/Pegasus II USB Ethernet driver [ 1.225382] usbcore: registered new interface driver pegasus [ 1.225420] usbcore: registered new interface driver rtl8150 [ 1.225466] usbcore: registered new interface driver r8152 [ 1.225508] usbcore: registered new interface driver lan78xx [ 1.225552] usbcore: registered new interface driver asix [ 1.225591] usbcore: registered new interface driver ax88179_178a [ 1.225630] usbcore: registered new interface driver cdc_ether [ 1.225667] usbcore: registered new interface driver cdc_eem [ 1.225709] usbcore: registered new interface driver dm9601 [ 1.225746] usbcore: registered new interface driver sr9700 [ 1.225792] usbcore: registered new interface driver CoreChips [ 1.225842] usbcore: registered new interface driver smsc75xx [ 1.225891] usbcore: registered new interface driver smsc95xx [ 1.225932] usbcore: registered new interface driver gl620a [ 1.225969] usbcore: registered new interface driver net1080 [ 1.226009] usbcore: registered new interface driver plusb [ 1.226047] usbcore: registered new interface driver rndis_host [ 1.226084] usbcore: registered new interface driver cdc_subset [ 1.226126] usbcore: registered new interface driver MOSCHIP usb-ethernet driver [ 1.226169] usbcore: registered new interface driver cx82310_eth [ 1.226216] usbcore: registered new interface driver cdc_ncm [ 1.226254] usbcore: registered new interface driver huawei_cdc_ncm [ 1.226292] usbcore: registered new interface driver cdc_mbim [ 1.226458] VFIO - User Level meta-driver version: 0.3 [ 1.227619] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 1.227623] ehci-pci: EHCI PCI platform driver [ 1.227670] ehci-platform: EHCI generic platform driver [ 1.227807] ehci-platform 7ffc0000.ehci: EHCI Host Controller [ 1.227828] ehci-platform 7ffc0000.ehci: new USB bus registered, assigned bus number 1 [ 1.228031] ehci-platform 7ffc0000.ehci: irq 24, io mem 0x7ffc0000 [ 1.240516] ehci-platform 7ffc0000.ehci: USB 2.0 started, EHCI 1.00 [ 1.241146] hub 1-0:1.0: USB hub found [ 1.241184] hub 1-0:1.0: 1 port detected [ 1.241504] ehci-exynos: EHCI EXYNOS driver [ 1.241589] ehci-msm: Qualcomm On-Chip EHCI Host Controller [ 1.241662] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 1.241696] ohci-pci: OHCI PCI platform driver [ 1.241748] ohci-platform: OHCI generic platform driver [ 1.241847] ohci-platform 7ffb0000.ohci: Generic Platform OHCI controller [ 1.241863] ohci-platform 7ffb0000.ohci: new USB bus registered, assigned bus number 2 [ 1.241969] ohci-platform 7ffb0000.ohci: irq 23, io mem 0x7ffb0000 [ 1.317005] hub 2-0:1.0: USB hub found [ 1.317030] hub 2-0:1.0: 1 port detected [ 1.317340] ohci-exynos: OHCI EXYNOS driver [ 1.317754] usbcore: registered new interface driver cdc_wdm [ 1.317848] usbcore: registered new interface driver usb-storage [ 1.318994] mousedev: PS/2 mouse device common for all mice [ 1.319749] rtc-pl031 1c170000.rtc: rtc core: registered pl031 as rtc0 [ 1.320186] i2c /dev entries driver [ 1.323888] mmci-pl18x 1c050000.mmci: mmc0: PL180 manf 41 rev0 at 0x1c050000 irq 28,0 (pio) [ 1.323898] mmci-pl18x 1c050000.mmci: DMA channels RX none, TX none [ 1.360945] sdhci: Secure Digital Host Controller Interface driver [ 1.360948] sdhci: Copyright(c) Pierre Ossman [ 1.361441] Synopsys Designware Multimedia Card Interface Driver [ 1.364959] sdhci-pltfm: SDHCI platform and OF driver helper [ 1.365630] leds-syscon 1c010000.apbregs:led0: registered LED vexpress:0 [ 1.365744] leds-syscon 1c010000.apbregs:led1: registered LED vexpress:1 [ 1.365845] leds-syscon 1c010000.apbregs:led2: registered LED vexpress:2 [ 1.365941] leds-syscon 1c010000.apbregs:led3: registered LED vexpress:3 [ 1.366042] leds-syscon 1c010000.apbregs:led4: registered LED vexpress:4 [ 1.366142] leds-syscon 1c010000.apbregs:led5: registered LED vexpress:5 [ 1.366245] leds-syscon 1c010000.apbregs:led6: registered LED vexpress:6 [ 1.366344] leds-syscon 1c010000.apbregs:led7: registered LED vexpress:7 [ 1.369301] ledtrig-cpu: registered to indicate activity on CPUs [ 1.370214] usbcore: registered new interface driver usbhid [ 1.370216] usbhid: USB HID core driver [ 1.370278] mhu 2b1f0000.mhu: ARM MHU Mailbox registered [ 1.374229] NET: Registered protocol family 17 [ 1.374305] 9pnet: Installing 9P2000 support [ 1.374399] Key type dns_resolver registered [ 1.375091] registered taskstats version 1 [ 1.377668] scpi_protocol scpi: SCP Protocol 1.0 Firmware 1.11.1 version [ 1.384741] cpu cpu0: bL_cpufreq_init: CPU 0 initialized [ 1.387465] cpu cpu1: bL_cpufreq_init: CPU 1 initialized [ 1.389976] arm_big_little: bL_cpufreq_register: Registered platform driver: scpi [ 1.442176] input: smb@08000000:motherboard:gpio_keys as /devices/platform/smb@08000000/smb@08000000:motherboard/smb@08000000:motherboard:gpio_keys/input/input1 [ 1.444521] rtc-pl031 1c170000.rtc: setting system clock to 2017-03-16 16:05:05 UTC (1489680305) [ 1.444633] ALSA device list: [ 1.444635] No soundcards found. [ 1.564601] usb 1-1: new high-speed USB device number 2 using ehci-platform [ 1.722535] hub 1-1:1.0: USB hub found [ 1.722763] hub 1-1:1.0: 4 ports detected [ 2.012599] usb 1-1.1: new full-speed USB device number 3 using ehci-platform [ 2.123886] usb-storage 1-1.1:1.0: USB Mass Storage device detected [ 2.124551] usb-storage 1-1.1:1.0: Quirks match for vid c251 pid 4003: 80 [ 2.125241] scsi host2: usb-storage 1-1.1:1.0 [ 2.159853] uart-pl011 7ff80000.uart: no DMA platform data [ 2.332533] atkbd serio0: keyboard reset failed on 1c060000.kmi [ 2.476482] usb 1-1.2: new high-speed USB device number 4 using ehci-platform [ 2.608412] usb-storage 1-1.2:1.0: USB Mass Storage device detected [ 2.615507] scsi host3: usb-storage 1-1.2:1.0 [ 3.138135] scsi 2:0:0:0: Direct-Access ARM V2M- JUNO 1.0 PQ: 0 ANSI: 0 [ 3.147123] sd 2:0:0:0: [sda] 3921920 512-byte logical blocks: (2.01 GB/1.87 GiB) [ 3.155584] random: fast init done [ 3.158995] sd 2:0:0:0: [sda] Write Protect is off [ 3.164865] sd 2:0:0:0: [sda] No Caching mode page found [ 3.170144] sd 2:0:0:0: [sda] Assuming drive cache: write through [ 3.184983] sda: sda1 [ 3.192348] sd 2:0:0:0: [sda] Attached SCSI removable disk [ 3.379010] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 0) [ 3.508934] ata1.00: ATA-8: SAMSUNG SSD PM830 2.5" 7mm 128GB, CXM03D1Q, max UDMA/133 [ 3.516645] ata1.00: 250069680 sectors, multi 16: LBA48 NCQ (depth 31/32) [ 3.524660] ata1.00: configured for UDMA/100 [ 3.530485] scsi 0:0:0:0: Direct-Access ATA SAMSUNG SSD PM83 3D1Q PQ: 0 ANSI: 5 [ 3.539728] sd 0:0:0:0: [sdb] 250069680 512-byte logical blocks: (128 GB/119 GiB) [ 3.547188] sd 0:0:0:0: [sdb] Write Protect is off [ 3.552006] sd 0:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 3.563555] sdb: sdb1 sdb2 sdb3 [ 3.567809] sd 0:0:0:0: [sdb] Attached SCSI disk [ 3.584596] atkbd serio1: keyboard reset failed on 1c070000.kmi [ 4.334386] scsi 3:0:0:0: Direct-Access JetFlash Transcend 16GB 1100 PQ: 0 ANSI: 6 [ 4.344075] sd 3:0:0:0: [sdc] 30851072 512-byte logical blocks: (15.8 GB/14.7 GiB) [ 4.352440] sd 3:0:0:0: [sdc] Write Protect is off [ 4.358191] sd 3:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 4.380009] sdc: sdc1 sdc2 sdc3 [ 4.388190] sd 3:0:0:0: [sdc] Attached SCSI removable disk [ 5.588624] ata2: SATA link down (SStatus 0 SControl 0) [ 5.594856] EXT4-fs (sdb2): couldn't mount as ext3 due to feature incompatibilities [ 5.604892] EXT4-fs (sdb2): INFO: recovery required on readonly filesystem [ 5.611707] EXT4-fs (sdb2): write access will be enabled during recovery [ 5.633073] coresight-etm4x 22140000.etm: ETM 4.0 initialized [ 5.639752] coresight-etm4x 23140000.etm: ETM 4.0 initialized [ 5.645947] coresight-etm4x 23240000.etm: ETM 4.0 initialized [ 5.652157] coresight-etm4x 23340000.etm: ETM 4.0 initialized [ 5.658092] coresight-replicator-qcom 20120000.replicator: REPLICATOR 1.0 initialized [ 5.667021] coresight-stm 20100000.stm: STM500 initialized [ 5.672960] coresight-etm4x 22040000.etm: ETM 4.0 initialized [ 5.678969] coresight-etm4x 23040000.etm: ETM 4.0 initialized [ 6.075836] EXT4-fs (sdb2): recovery complete [ 6.084194] EXT4-fs (sdb2): mounted filesystem with ordered data mode. Opts: (null) [ 6.091809] VFS: Mounted root (ext4 filesystem) readonly on device 8:18. [ 6.100849] devtmpfs: mounted [ 6.104361] Freeing unused kernel memory: 1472K [ 6.235706] ip_tables: Unknown symbol xt_compat_unlock (err 0) [ 6.241511] ip_tables: Unknown symbol xt_free_table_info (err 0) [ 6.247479] ip_tables: Unknown symbol xt_match_to_user (err 0) [ 6.253266] ip_tables: Unknown symbol xt_alloc_table_info (err 0) [ 6.259315] ip_tables: Unknown symbol xt_percpu_counter_free (err 0) [ 6.265617] ip_tables: Unknown symbol xt_find_jump_offset (err 0) [ 6.271656] ip_tables: Unknown symbol xt_check_match (err 0) [ 6.277275] ip_tables: Unknown symbol xt_compat_match_from_user (err 0) [ 6.283833] ip_tables: Unknown symbol xt_request_find_target (err 0) [ 6.290131] ip_tables: Unknown symbol xt_unregister_matches (err 0) [ 6.296348] ip_tables: Unknown symbol xt_request_find_match (err 0) [ 6.302565] ip_tables: Unknown symbol xt_tee_enabled (err 0) [ 6.308183] ip_tables: Unknown symbol xt_compat_add_offset (err 0) [ 6.314311] ip_tables: Unknown symbol xt_compat_init_offsets (err 0) [ 6.320607] ip_tables: Unknown symbol xt_unregister_targets (err 0) [ 6.326817] ip_tables: Unknown symbol xt_recseq (err 0) [ 6.331995] ip_tables: Unknown symbol xt_compat_calc_jump (err 0) [ 6.338033] ip_tables: Unknown symbol xt_compat_flush_offsets (err 0) [ 6.344417] ip_tables: Unknown symbol xt_compat_target_from_user (err 0) [ 6.351058] ip_tables: Unknown symbol xt_register_targets (err 0) [ 6.357100] ip_tables: Unknown symbol xt_compat_check_entry_offsets (err 0) [ 6.364016] ip_tables: Unknown symbol xt_compat_match_to_user (err 0) [ 6.370398] ip_tables: Unknown symbol xt_alloc_entry_offsets (err 0) [ 6.376694] ip_tables: Unknown symbol xt_target_to_user (err 0) [ 6.382562] ip_tables: Unknown symbol xt_register_table (err 0) [ 6.388428] ip_tables: Unknown symbol xt_proto_init (err 0) [ 6.393952] ip_tables: Unknown symbol xt_replace_table (err 0) [ 6.399732] ip_tables: Unknown symbol xt_find_table_lock (err 0) [ 6.405693] ip_tables: Unknown symbol xt_compat_target_offset (err 0) [ 6.412075] ip_tables: Unknown symbol xt_table_unlock (err 0) [ 6.417769] ip_tables: Unknown symbol xt_proto_fini (err 0) [ 6.423295] ip_tables: Unknown symbol xt_check_entry_offsets (err 0) [ 6.429592] ip_tables: Unknown symbol xt_compat_target_to_user (err 0) [ 6.436061] ip_tables: Unknown symbol xt_percpu_counter_alloc (err 0) [ 6.442443] ip_tables: Unknown symbol xt_compat_match_offset (err 0) [ 6.448740] ip_tables: Unknown symbol xt_register_matches (err 0) [ 6.454778] ip_tables: Unknown symbol xt_check_target (err 0) [ 6.460480] ip_tables: Unknown symbol xt_find_revision (err 0) [ 6.466260] ip_tables: Unknown symbol xt_compat_lock (err 0) [ 6.471869] ip_tables: Unknown symbol xt_copy_counters_from_user (err 0) [ 6.478509] ip_tables: Unknown symbol xt_unregister_table (err 0) [ 6.563153] systemd[1]: systemd 232 running in system mode. (+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN) [ 6.581366] systemd[1]: Detected architecture arm64.
Welcome to Debian GNU/Linux 9 (stretch)!
[ 6.600944] systemd[1]: Set hostname to <juno>. [ 6.722756] systemd[1]: Set up automount bootjuno.automount. [ OK ] Set up automount bootjuno.automount. [ 6.740734] systemd[1]: Started Dispatch Password Requests to Console Directory Watch. [ OK ] Started Dispatch Password Requests to Console Directory Watch. [ 6.765286] systemd[1]: Created slice User and Session Slice. [ OK ] Created slice User and Session Slice. [ 6.784940] systemd[1]: Listening on udev Control Socket. [ OK ] Listening on udev Control Socket. [ 6.804815] systemd[1]: Listening on RPCbind Server Activation Socket. [ OK ] Listening on RPCbind Server Activation Socket. [ 6.824865] systemd[1]: Listening on /dev/initctl Compatibility Named Pipe. [ OK ] Listening on /dev/initctl Compatibility Named Pipe. [ 6.845151] systemd[1]: Created slice System Slice. [ OK ] Created slice System Slice. Mounting Huge Pages File System... [ OK ] Created slice system-getty.slice. Mounting RPC Pipe File System... [ OK ] Listening on Syslog Socket. [ OK ] Created slice system-serial\x2dgetty.slice. Mounting Debug File System... [ OK ] Listening on fsck to fsckd communication Socket. [ OK ] Set up automount mnt.automount. [ OK ] Listening on udev Kernel Socket. [ OK ] Listening on Journal Socket. Starting File System Check on Root Device... Starting Load Kernel Modules... [ OK ] Listening on Journal Socket (/dev/log). [ OK ] Started Forward Password Requests to Wall Directory Watch. [ OK ] Reached target Encrypted Volumes. [ OK ] Reached target Paths. [ OK ] Reached target Slices. [ OK ] Listening on Journal Audit Socket. Starting Journal Service... Mounting POSIX Message Queue File System... Starting Create list of required st…ce nodes for the current kernel... [ OK ] Mounted RPC Pipe File System. [ OK ] Mounted Debug File System. [ OK ] Mounted Huge Pages File System. [ OK ] Mounted POSIX Message Queue File System. [ OK ] Started File System Check on Root Device. [ OK ] Started Load Kernel Modules. [ OK ] Started Create list of required sta…vice nodes for the current kernel. [ OK ] Started Journal Service. [ OK ] Started File System Check Daemon to report status. Starting Create Static Device Nodes in /dev... Mounting Configuration File System... Starting Apply Kernel Variables... Starting Remount Root and Kernel File Systems... [ OK ] Mounted Configuration File System. [ OK ] Started Create Static Device Nodes in /dev. [ OK ] Started Apply Kernel Variables. Starting udev Kernel Device Manager... [ OK ] Started udev Kernel Device Manager. [ 8.820513] EXT4-fs (sdb2): re-mounted. Opts: errors=remount-ro [ OK ] Started Remount Root and Kernel File Systems. Starting udev Coldplug all Devices... [ OK ] Reached target Local File Systems (Pre). Starting Flush Journal to Persistent Storage... Starting Load/Save Random Seed... [ OK ] Started Load/Save Random Seed. [ 8.937949] systemd-journald[1379]: Received request to flush runtime journal from PID 1 [ OK ] Started Flush Journal to Persistent Storage. [ OK ] Started udev Coldplug all Devices. [ OK ] Found device /dev/ttyAMA0. [ 9.082724] sky2 0000:08:00.0 enp8s0: renamed from eth0 [ OK ] Found device SAMSUNG_SSD_PM830_2.5__7mm_128GB 1. [ OK ] Found device SAMSUNG_SSD_PM830_2.5__7mm_128GB 3. [ OK ] Found device SAMSUNG_SSD_PM830_2.5__7mm_128GB 3. Activating swap Swap Partition... Mounting /boot/efi... [ 9.226602] Adding 7956476k swap on /dev/sdb3. Priority:-1 extents:1 across:7956476k SS [ 9.234049] FAT-fs (sdb1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck. [ OK ] Mounted /boot/efi. [ OK ] Activated swap Swap Partition. [ OK ] Activated swap /dev/disk/by-uuid/7be1d36c-df3c-486a-8ffa-4f94bb3df1a9. [ OK ] Reached target Swap. [ OK ] Reached target Local File Systems. [ OK ] Started ifup for eth1. Starting Preprocess NFS configuration... Starting Raise network interfaces... Starting Create Volatile Files and Directories... Starting Enable support for additional executable binary formats... [ 9.392860] random: crng init done [ OK ] Started Preprocess NFS configuration. [ OK ] Started Create Volatile Files and Directories. [ OK ] Started Enable support for additional executable binary formats. [ 9.464863] Generic PHY 18000000.ethernet-ffffffff:01: attached PHY driver [Generic PHY] (mii_bus:phy_addr=18000000.ethernet-ffffffff:01, irq=-1) Starting Update UTMP about System Boot/Shutdown... [ 9.488747] smsc911x 18000000.ethernet eth1: SMSC911x/921x identified at 0xffff000009280000, IRQ: 27 Starting Network Time Synchronization... Starting RPC bind portmap service... [ OK ] Reached target NFS client services. [ OK ] Started Update UTMP about System Boot/Shutdown. [ OK ] Started RPC bind portmap service. [ OK ] Reached target Remote File Systems (Pre). [ OK ] Reached target Remote File Systems. [ OK ] Reached target RPC Port Mapper. [ OK ] Started Network Time Synchronization. [ OK ] Reached target System Time Synchronized. [ OK ] Reached target System Initialization. [ OK ] Started Daily Cleanup of Temporary Directories. [ OK ] Listening on D-Bus System Message Bus Socket. [ OK ] Reached target Sockets. [ OK ] Reached target Basic System. Starting System Logging Service... [ OK ] Started Deferred execution scheduler. [ OK ] Started Regular background program processing daemon. [ OK ] Started D-Bus System Message Bus. [ OK ] Started Daily apt activities. [ OK ] Reached target Timers. Starting Login Service... [ OK ] Started irqbalance daemon. [ OK ] Started System Logging Service. Starting Daily apt activities... [ OK ] Started Login Service. [ OK ] Started Raise network interfaces. [ OK ] Reached target Network. Starting OpenBSD Secure Shell server... [ OK ] Reached target Network is Online. Starting LSB: exim Mail Transport Agent... Starting Permit User Sessions... Starting /etc/rc.local Compatibility... [ OK ] Started OpenBSD Secure Shell server. [ OK ] Started Permit User Sessions. [ OK ] Started /etc/rc.local Compatibility. [ OK ] Started Serial Getty on ttyAMA0. [ OK ] Started Getty on tty1. [ OK ] Reached target Login Prompts. [ OK ] Started Daily apt activities. [ OK ] Started LSB: exim Mail Transport Agent. [ OK ] Reached target Multi-User System. [ OK ] Reached target Graphical Interface. Starting Update UTMP about System Runlevel Changes... [ OK ] Started Update UTMP about System Runlevel Changes.
Debian GNU/Linux 9 juno ttyAMA0
juno login: root Password: [ 16.513019] systemd[1]: apt-daily.timer: Adding 1h 48min 28.800315s random time.
Last login: Wed Mar 15 17:57:12 CDT 2017 on ttyAMA0
The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. oot@juno:~# #taskset -c 2 ./perf record root@juno:~# resize COLUMNS=116; LINES=40; export COLUMNS LINES; root@juno:~# taskset -c 2 ./perf record -e cs_etm/@20070000.etr/u --per-thread taskset -c 2 uname [ 73.067323] coresight-replicator-qcom 20120000.replicator: REPLICATOR enabled [ 73.074400] coresight-funnel 20150000.funnel: FUNNEL inport 0 enabled [ 73.080791] coresight-tmc 20010000.etf: TMC-ETF enabled [ 73.085969] coresight-funnel 20040000.funnel: FUNNEL inport 0 enabled [ 73.092362] coresight-funnel 220c0000.funnel: FUNNEL inport 1 enabled [ 73.109597] coresight-funnel 220c0000.funnel: FUNNEL inport 1 disabled [ 73.116066] coresight-funnel 20040000.funnel: FUNNEL inport 0 disabled [ 73.122547] coresight-tmc 20010000.etf: TMC disabled [ 73.127464] coresight-funnel 20150000.funnel: FUNNEL inport 0 disabled [ 73.133925] coresight-replicator-qcom 20120000.replicator: REPLICATOR disabled [ 73.141092] coresight-tmc 20070000.etr: TMC-ETR disabled [ 73.146873] coresight-replicator-qcom 20120000.replicator: REPLICATOR enabled [ 73.153942] coresight-funnel 20150000.funnel: FUNNEL inport 0 enabled [ 73.160331] coresight-tmc 20010000.etf: TMC-ETF enabled [ 73.165508] coresight-funnel 20040000.funnel: FUNNEL inport 0 enabled [ 73.171901] coresight-funnel 220c0000.funnel: FUNNEL inport 1 enabled [ 73.179046] coresight-funnel 220c0000.funnel: FUNNEL inport 1 disabled [ 73.185513] coresight-funnel 20040000.funnel: FUNNEL inport 0 disabled [ 73.191994] coresight-tmc 20010000.etf: TMC disabled [ 73.196909] coresight-funnel 20150000.funnel: FUNNEL inport 0 disabled [ 73.203371] coresight-replicator-qcom 20120000.replicator: REPLICATOR disabled [ 73.210537] coresight-tmc 20070000.etr: TMC-ETR disabled [ 73.216282] coresight-replicator-qcom 20120000.replicator: REPLICATOR enabled [ 73.223351] coresight-funnel 20150000.funnel: FUNNEL inport 0 enabled [ 73.229739] coresight-tmc 20010000.etf: TMC-ETF enabled [ 73.234915] coresight-funnel 20040000.funnel: FUNNEL inport 0 enabled [ 73.241309] coresight-funnel 220c0000.funnel: FUNNEL inport 1 enabled [ 73.248667] coresight-funnel 220c0000.funnel: FUNNEL inport 1 disabled [ 73.255134] coresight-funnel 20040000.funnel: FUNNEL inport 0 disabled [ 73.261616] coresight-tmc 20010000.etf: TMC disabled [ 73.266531] coresight-funnel 20150000.funnel: FUNNEL inport 0 disabled [ 73.272993] coresight-replicator-qcom 20120000.replicator: REPLICATOR disabled [ 73.280160] coresight-tmc 20070000.etr: TMC-ETR disabled [ 73.285933] coresight-replicator-qcom 20120000.replicator: REPLICATOR enabled [ 73.293003] coresight-funnel 20150000.funnel: FUNNEL inport 0 enabled [ 73.299391] coresight-tmc 20010000.etf: TMC-ETF enabled [ 73.304568] coresight-funnel 20040000.funnel: FUNNEL inport 0 enabled [ 73.310962] coresight-funnel 220c0000.funnel: FUNNEL inport 1 enabled Linux [ 73.327157] coresight-funnel 220c0000.funnel: FUNNEL inport 1 disabled [ 73.333624] coresight-funnel 20040000.funnel: FUNNEL inport 0 disabled [ 73.340105] coresight-tmc 20010000.etf: TMC disabled [ 73.345022] coresight-funnel 20150000.funnel: FUNNEL inport 0 disabled [ 73.351483] coresight-replicator-qcom 20120000.replicator: REPLICATOR disabled [ 73.358650] coresight-tmc 20070000.etr: TMC-ETR disabled [ perf record: Woken up 2 times to write data ] [ perf record: Captured and wrote
Hi Kim,
This thread is now getting a bit unwieldy with all the inlined extensive logging. Also we are considerably off topic - no longer about perf inject, but more about simply getting the CS infrastructure working in your environment. At this point it appears that google mail is not correctly showing all the previous mail so I cannot all the answers at your questions. I have attached my boot log from the serial terminal for my r2 run. I was using the 'screen' serial terminal monitor with logging enabled. The log is tricky to read in places as the backspaces end up a special characters and repeated incrementing count message appears which stayed stationary in the serial window
It may be worth starting a new mail thread?
Some additional answers inline.
On 16 March 2017 at 17:24, Kim Phillips kim.phillips@arm.com wrote:
gcc & kernel version as per 2nd line of boot log above (well would be if google mail was properly showing it), and see attached boot log .txt file. gcc version 6.2 from the linaro toolchain dir. Perf version is unchanged as previously mentioned. I'm building off the opencsd-perf-4.11-rc1 branch.
sudo run below.
This is due to the fact that the logging messages are appearing on the uart serial terminal. I mainly run in an addtional login terminal I have ssh'd into on the juno box. This separates the perf messages above and the dmesg type driver logging onto separate terminals.
If you look at the serial log you will see various time between runs.
as per the buiild branch in opencsd.
I'm using a pre-built debian-jessie-developer rootfs from linaro - see previous earlier point in mail thread for location.
See attached log [r2-boot.txt]- one immediate difference is that I use u-boot rather than UEFI.
I cannot explain the PCI issue on that r2 board. Not seen it previously in testing - but might be a different board than the one I used last time.
Also, can you confirm the OOM when enabling the sinks prior to perf invocation? If all else fails, can we work on fixing that problem?
I can double check this when I get into the office tomorrow, but I expect it will still be there as I could reproduce on r1 + gcc 4.9. This is worth investigating a some point, but surely secondary to you figuring out why you are hitting a hard crash.
Regards
Mike
Thanks,
On Thu, 16 Mar 2017 22:36:08 +0000 Mike Leach mike.leach@linaro.org wrote:
This thread is now getting a bit unwieldy with all the inlined extensive logging.
the idea was that one could cut out all irrelevant pieces, leaving relevant ones intact for an in-line, context-sensitive response. Thus the 'no top posting/always trim your replies' recommendations for replying on development lists like these.
oh, you're referring to the title, which remains the ultimate goal, and I consider the getting-there experience still relevant (since, e.g., the AutoFDO documentation area doesn't explicitly point out what sink was enabled if any, and so on). Btw, an alternate means of splitting threads is to take a message and reply twice - once with one new title 'Subject: new theme A (was: <old title>)' and addressing that theme there, then another with a similar change in the title for theme B. I thought this thread was doing well since we were both carrying the unable to mmap and hard lockup problems along, and I had no proof they weren't related.
At this point it appears that google mail is not correctly showing all the previous mail so I cannot all the answers at your questions.
Google's webmail interface wouldn't be my first choice for an open source developer's mailer. IIRC, linaro had IMAP/SMTP instructions for hooking up your account to real mailers like thunderbird, mutt, etc. I use sylpheed, e.g., and have no problem continuing threads like these.
Indeed, I spent more than enough time trying to parse them and still failed. Normally, just cutting-n-pasting from a terminal window, where the backspace etc. characters have already been interpreted, works out ok.
It may be worth starting a new mail thread?
I see that was done for the kernel splat for running perf without enabling sinks. I'm going to just say I'd expect perf to run the same way every time, the same way 'ls' runs, no matter what underlying h/w is in use. AFAICT, Coresight is currently the only device that makes perf have this 'unnatural' behaviour. E.g., the fact that sinks have to be turned on outside of perf, only to have perf in turn, turn *off* those same sinks, I consider asymmetric behaviour and poor design in terms of a perf user's expected usage.
OK, I've trimmed out all the nitty gritty details where we were trying to compare setups, mainly because I've reached a point where I can finally run an ETM trace without locking up the machine (without having to buy an SSD for an older operating system's rootfs :).
Recipe for success - at least for this juno R2 user - is:
- Use upstream Linus' ToT as source for kernel (not OpenCSD's tree/branches). This commit (093b995) works for me, built with ubuntu's standard gcc 6.2 cross compiler:
root@juno:~# dmesg | grep gcc [ 0.000000] Linux version 4.11.0-rc3-00035-g093b995 (kim@dupont) (gcc version 6.2.0 20161005 (Ubuntu 6.2.0-5ubuntu12) ) #25 SMP PREEMPT Wed Mar 22 01:41:55 CDT 2017
- Rebase OpenCSD's perf-opencsd-4.11-rc1 branch (containing S.Pop's patches) onto acme's upstream 'perf/urgent' branch found here:
git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git
I used commit e7ede72a6d, which contains a fix for a use-after-free bug, and built perf natively:
root@juno:~# strings -a ./perf | grep "GCC:" GCC: (Debian 6.3.0-6) 6.3.0 20170205
Now I'm able to repeatedly issue these two commands:
echo 1 > /sys/bus/coresight/devices/20010000.etf/enable_sink taskset -c 2 /home/kim/git/OpenCSD/tools/perf/perf record -o perf-etm.data -e cs_etm//u --per-thread taskset -c 2 uname
somewhat successfully, but most importantly without the hard lockup.
I say somewhat because a lot of the runs lose pretty much all the data?:
root@juno:~# echo 1 > /sys/bus/coresight/devices/20010000.etf/enable_sink root@juno:~# taskset -c 2 /home/kim/git/OpenCSD/tools/perf/perf record -o perf-etm.data -e cs_etm//u --per-thread taskset -c 2 ./sort-O3 [ 1142.454452] coresight-funnel 20040000.funnel: FUNNEL inport 0 enabled [ 1142.460852] coresight-funnel 220c0000.funnel: FUNNEL inport 1 enabled Bubble sorting array of 30000 elements [ 1144.169454] coresight-funnel 220c0000.funnel: FUNNEL inport 1 disabled <lots of funnel messages snipped> [ 1153.166523] coresight-tmc 20010000.etf: TMC-ETB/ETF disabled [ 1153.172365] coresight-funnel 20040000.funnel: FUNNEL inport 0 enabled [ 1153.178760] coresight-funnel 220c0000.funnel: FUNNEL inport 1 enabled 10718 ms [ 1153.195407] coresight-funnel 220c0000.funnel: FUNNEL inport 1 disabled [ 1153.201875] coresight-funnel 20040000.funnel: FUNNEL inport 0 disabled [ 1153.208353] coresight-tmc 20010000.etf: TMC-ETB/ETF disabled [ perf record: Woken up 59 times to write data ] Warning: AUX data lost 57 times out of 58!
[ perf record: Captured and wrote 3.579 MB perf-etm.data ] root@juno:~#
Anyway, what's a good means of measuring the overhead incurred by perf -e cs-etm//? By using perf stat on perf itself?:
root@juno:~# /home/kim/git/OpenCSD/tools/perf/perf stat taskset -c 2 /home/kim/git/OpenCSD/tools/perf/perf record -o perf-etm.data -e cs_etm//u --per-thread taskset -c 2 ./sort-O3 [ 1592.081642] coresight-funnel 20040000.funnel: FUNNEL inport 0 enabled [ 1592.088042] coresight-funnel 220c0000.funnel: FUNNEL inport 1 enabled <lots of funnel messages snipped> [ 1605.184854] coresight-funnel 220c0000.funnel: FUNNEL inport 1 enabled 13035 ms [ 1605.254383] coresight-funnel 220c0000.funnel: FUNNEL inport 1 disabled [ 1605.260850] coresight-funnel 20040000.funnel: FUNNEL inport 0 disabled [ 1605.267328] coresight-tmc 20010000.etf: TMC-ETB/ETF disabled [ perf record: Woken up 83 times to write data ] Warning: AUX data lost 82 times out of 85!
[ perf record: Captured and wrote 5.164 MB perf-etm.data ]
Performance counter stats for 'taskset -c 2 /home/kim/git/OpenCSD/tools/perf/perf record -o perf-etm.data -e cs_etm//u --per-thread taskset -c 2 ./sort-O3':
6568.653900 task-clock (msec) # 0.496 CPUs utilized 181 context-switches # 0.028 K/sec 1 cpu-migrations # 0.000 K/sec 1,950 page-faults # 0.297 K/sec <not counted> cycles (0.00%) <not counted> instructions (0.00%) <not counted> branches (0.00%) <not counted> branch-misses (0.00%)
13.235000365 seconds time elapsed
root@juno:~# /home/kim/git/OpenCSD/tools/perf/perf stat taskset -c 2 ./sort-O3Bubble sorting array of 30000 elements 5364 ms
Performance counter stats for 'taskset -c 2 ./sort-O3':
5365.715560 task-clock (msec) # 1.000 CPUs utilized 3 context-switches # 0.001 K/sec 0 cpu-migrations # 0.000 K/sec 126 page-faults # 0.023 K/sec <not counted> cycles (0.00%) <not counted> instructions (0.00%) <not counted> branches (0.00%) <not counted> branch-misses (0.00%)
5.366555299 seconds time elapsed
Is this the expected overhead, given the (85 - 82) / 85 = 3.5% success rate of capturing and storing the trace data? I'd expect a lot more than 5MB of trace for the incurred 2.5x execution time (8 seconds in this case). I can't help but imagine those funnel printk's have a negative influence in the area...
Kim
Hi Km
On 24 March 2017 at 00:31, Kim Phillips kim.phillips@arm.com wrote:
Nor mine, but as I am using my linaro.org mail, ARM IT will only allow web access inside the ARM network to servers other than official ARM ones. Therefore the imap server for linaro is blocked inside ARM.
That was the initial design, but has now been changed to allow the sink to be specifed on the perf command line. We are in the process of changing the kernel docs to state this, matching the OpenCSD howto docs.
The "loss" in this case is a flag indicator that the 64k ETF is wrapping. So there is some data loss, but you do get a full 64k buffer each time. You should get less loss if you use the ETR.
Mike
Kim
On Fri, 24 Mar 2017 10:42:51 +0000 Mike Leach mike.leach@linaro.org wrote:
Linaro uses gmail, last I knew. ARM now uses microsoft's cloud, and allows non-web based access to that, so I think there's a bug in the IT dept. policy if they think allowing microsoft access
combining that with your comment from the other thread:
Don't enable the sink using sysfs, specify the sink on the perf command line and use the up arrow as much as you like.
and searching for etr in the current documentation, I assume you mean I should execute perf like this?:
root@juno:~# taskset -c 2 /home/kim/git/OpenCSD/tools/perf/perf record -o perf-etm.data -e cs_etm/@20070000.etr/u --per-thread taskset -c 2 ./sort-O3 failed to mmap with 12 (Cannot allocate memory) root@juno:~#
it doesn't matter how many times I invoke it, I get the same message (and no hints in dmesg). I've tried without the /u, but still no dice.
Here's the -vvv version:
root@juno:~# taskset -c 2 /home/kim/git/OpenCSD/tools/perf/perf record -vvv -o perf-etm.data -e cs_etm/@20070000.etr/u --per-thread taskset -c 2 ./sort-O3 ------------------------------------------------------------ perf_event_attr: type 8 size 112 { sample_period, sample_freq } 1 sample_type IP|TID|IDENTIFIER read_format ID disabled 1 exclude_kernel 1 exclude_hv 1 enable_on_exec 1 sample_id_all 1 ------------------------------------------------------------ sys_perf_event_open: pid 2528 cpu -1 group_fd -1 flags 0x8 = 4 ------------------------------------------------------------ perf_event_attr: type 1 size 112 config 0x9 { sample_period, sample_freq } 1 sample_type IP|TID|IDENTIFIER read_format ID disabled 1 exclude_kernel 1 exclude_hv 1 mmap 1 comm 1 enable_on_exec 1 task 1 sample_id_all 1 mmap2 1 comm_exec 1 ------------------------------------------------------------ sys_perf_event_open: pid 2528 cpu -1 group_fd -1 flags 0x8 = 5 mmap size 528384B AUX area mmap length 4194304 perf event ring buffer mmapped per thread failed to mmap AUX area failed to mmap with 12 (Cannot allocate memory) root@juno:~#
Thanks,
Kim
[Dropping Sudeep as he has nothing to do with this]
On 24 March 2017 at 13:04, Kim Phillips kim.phillips@arm.com wrote:
Two things can happen here:
1) The name for the ETR is wrong 2) This isn't a perf-opencsd-4.11-rc1 kernel
I'd like you to do two things:
1) From the cmd line, "ls /sys/bus/coresight/devices/" 2) Also from the cmd line, "uname -a"
Mathieu
On Fri, 24 Mar 2017 13:21:41 -0600 Mathieu Poirier mathieu.poirier@linaro.org wrote:
Nope, because that kernel locks up the machine.
This is using Linus' ToT kernel - the one that doesn't lock up:
root@juno:~# ls /sys/bus/coresight/devices/ 20010000.etf 20070000.etr 20130000.funnel 22040000.etm 23040000.etm 23240000.etm 20030000.tpiu 20100000.stm 20140000.etf 220c0000.funnel 230c0000.funnel 23340000.etm 20040000.funnel 20120000.replicator 20150000.funnel 22140000.etm 23140000.etm root@juno:~# uname -a Linux juno 4.11.0-rc3-00035-g093b995 #25 SMP PREEMPT Wed Mar 22 01:41:55 CDT 2017 aarch64 GNU/Linux root@juno:~#
I just retried, and still get it:
root@juno:~# ls /sys/bus/coresight/devices/ 20010000.etf 20070000.etr 20130000.funnel 22040000.etm 23040000.etm 23240000.etm 20030000.tpiu 20100000.stm 20140000.etf 220c0000.funnel 230c0000.funnel 23340000.etm 20040000.funnel 20120000.replicator 20150000.funnel 22140000.etm 23140000.etm root@juno:~# uname -a Linux juno 4.11.0-rc1-00027-g4222fb0-dirty #8 SMP PREEMPT Fri Mar 24 16:24:27 CDT 2017 aarch64 GNU/Linux root@juno:~# taskset -c 2 /home/kim/git/OpenCSD/tools/perf/perf record -o perf-etm.data -e cs_etm/@20070000.etr/u --per-thread taskset -c 2 ./sort-O3 [ 265.315513] coresight-replicator-qcom 20120000.replicator: REPLICATOR enabled [ 265.322590] coresight-funnel 20150000.funnel: FUNNEL inport 0 enabled [ 265.328980] coresight-tmc 20010000.etf: TMC-ETF enabled [ 265.334158] coresight-funnel 20040000.funnel: FUNNEL inport 0 enabled [ 265.340552] coresight-funnel 220c0000.funnel: FUNNEL inport 1 enabled [ 265.357418] coresight-funnel 220c0000.funnel: FUNNEL inport 1 disabled [ 265.363887] coresight-funnel 20040000.funnel: FUNNEL inport 0 disabled [ 265.370368] coresight-tmc 20010000.etf: TMC disabled [ 265.375284] coresight-funnel 20150000.funnel: FUNNEL inport 0 disabled [ 265.381747] coresight-replicator-qcom 20120000.replicator: REPLICATOR disabled [ 265.388914] coresight-tmc 20070000.etr: TMC-ETR disabled [ 265.394686] coresight-replicator-qcom 20120000.replicator: REPLICATOR enabled [ 265.401756] coresight-funnel 20150000.funnel: FUNNEL inport 0 enabled [ 265.408145] coresight-tmc 20010000.etf: TMC-ETF enabled [ 265.413321] coresight-funnel 20040000.funnel: FUNNEL inport 0 enabled [ 265.419715] coresight-funnel 220c0000.funnel: FUNNEL inport 1 enabled Bubble sorting array of 30000 elements [ 267.612175] coresight-funnel 220c0000.funnel: FUNNEL inport 1 disabled [ 267.618645] coresight-funnel 20040000.funnel: FUNNEL inport 0 disabled [ 267.625127] coresight-tmc 20010000.etf: TMC disabled [ 267.630043] coresight-funnel 20150000.funnel: FUNNEL inport 0 disabled [ 267.636506] coresight-replicator-qcom 20120000.replicator: REPLICATOR disabled [ 267.643672] coresight-tmc 20070000.etr: TMC-ETR disabled [ 267.652043] coresight-replicator-qcom 20120000.replicator: REPLICATOR enabled [ 267.659116] coresight-funnel 20150000.funnel: FUNNEL inport 0 enabled [ 267.665504] coresight-tmc 20010000.etf: TMC-ETF enabled [ 267.670682] coresight-funnel 20040000.funnel: FUNNEL inport 0 enabled [ 267.677076] coresight-funnel 220c0000.funnel: FUNNEL inport 1 enabled [ 270.096735] coresight-funnel 220c0000.funnel: FUNNEL inport 1 disabled [ 270.103203] coresight-funnel 20040000.funnel: FUNNEL inport 0 disabled [ 270.109684] coresight-tmc 20010000.etf: TMC disabled [ 270.114600] coresight-funnel 20150000.funnel: FUNNEL inport 0 disabled [ 270.121061] coresight-replicator-qcom 20120000.replicator: REPLICATOR disabled [ 270.128228] coresight-tmc 20070000.etr: TMC-ETR disabled [ 270.133498] sched: RT throttling activated [ 270.140684] coresight-replicator-qcom 20120000.replicator: REPLICATOR enabled [ 270.147755] coresight-funnel 20150000.funnel: FUNNEL inport 0 enabled [ 270.154144] coresight-tmc 20010000.etf: TMC-ETF enabled [ 270.159321] coresight-funnel 20040000.funnel: FUNNEL inport 0 enabled [ 270.165715] coresight-funnel 220c0000.funnel: FUNNEL inport 1 enabled [ 271.620865] coresight-funnel 220c0000.funnel: FUNNEL inport 1 disabled [ 271.627333] coresight-funnel 20040000.funnel: FUNNEL inport 0 disabled [ 271.633815] coresight-tmc 20010000.etf: TMC disabled [ 271.638731] coresight-funnel 20150000.funnel: FUNNEL inport 0 disabled [ 271.645193] coresight-replicator-qcom 20120000.replicator: REPLICATOR disabled [ 271.652359] coresight-tmc 20070000.etr: TMC-ETR disabled [ 271.660671] coresight-replicator-qcom 20120000.replicator: REPLICATOR enabled [ 271.667744] coresight-funnel 20150000.funnel: FUNNEL inport 0 enabled [ 271.674133] coresight-tmc 20010000.etf: TMC-ETF enabled [ 271.679310] coresight-funnel 20040000.funnel: FUNNEL inport 0 enabled [ 271.685704] coresight-funnel 220c0000.funnel: FUNNEL inport 1 enabled [ 274.097522] coresight-funnel 220c0000.funnel: FUNNEL inport 1 disabled [ 274.103989] coresight-funnel 20040000.funnel: FUNNEL inport 0 disabled [ 274.110470] coresight-tmc 20010000.etf: TMC disabled [ 274.115386] coresight-funnel 20150000.funnel: FUNNEL inport 0 disabled [ 274.121848] coresight-replicator-qcom 20120000.replicator: REPLICATOR disabled [ 274.129014] coresight-tmc 20070000.etr: TMC-ETR disabled [ 274.137360] coresight-replicator-qcom 20120000.replicator: REPLICATOR enabled [ 274.144432] coresight-funnel 20150000.funnel: FUNNEL inport 0 enabled [ 274.150821] coresight-tmc 20010000.etf: TMC-ETF enabled [ 274.155997] coresight-funnel 20040000.funnel: FUNNEL inport 0 enabled [ 274.162391] coresight-funnel 220c0000.funnel: FUNNEL inport 1 enabled [ 275.637795] coresight-funnel 220c0000.funnel: FUNNEL inport 1 disabled [ 275.644263] coresight-funnel 20040000.funnel: FUNNEL inport 0 disabled [ 275.650744] coresight-tmc 20010000.etf: TMC disabled [ 275.655661] coresight-funnel 20150000.funnel: FUNNEL inport 0 disabled [ 275.662122] coresight-replicator-qcom 20120000.replicator: REPLICATOR disabled [ 275.669289] coresight-tmc 20070000.etr: TMC-ETR disabled [ 275.677110] coresight-replicator-qcom 20120000.replicator: REPLICATOR enabled [ 275.684183] coresight-funnel 20150000.funnel: FUNNEL inport 0 enabled [ 275.690572] coresight-tmc 20010000.etf: TMC-ETF enabled [ 275.695749] coresight-funnel 20040000.funnel: FUNNEL inport 0 enabled [ 275.702143] coresight-funnel 220c0000.funnel: FUNNEL inport 1 enabled [ 278.098230] coresight-funnel 220c0000.funnel: FUNNEL inport 1 disabled [ 278.104697] coresight-funnel 20040000.funnel: FUNNEL inport 0 disabled [ 278.111178] coresight-tmc 20010000.etf: TMC disabled [ 278.116094] coresight-funnel 20150000.funnel: FUNNEL inport 0 disabled [ 278.122557] coresight-replicator-qcom 20120000.replicator: REPLICATOR disabled [ 278.129723] coresight-tmc 20070000.etr: TMC-ETR disabled [ 278.137606] coresight-replicator-qcom 20120000.replicator: REPLICATOR enabled [ 278.144679] coresight-funnel 20150000.funnel: FUNNEL inport 0 enabled [ 278.151067] coresight-tmc 20010000.etf: TMC-ETF enabled [ 278.156244] coresight-funnel 20040000.funnel: FUNNEL inport 0 enabled [ 278.162638] coresight-funnel 220c0000.funnel: FUNNEL inport 1 enabled [ 279.654355] coresight-funnel 220c0000.funnel: FUNNEL inport 1 disabled [ 279.660823] coresight-funnel 20040000.funnel: FUNNEL inport 0 disabled [ 279.667305] coresight-tmc 20010000.etf: TMC disabled [ 279.672221] coresight-funnel 20150000.funnel: FUNNEL inport 0 disabled [ 279.678683] coresight-replicator-qcom 20120000.replicator: REPLICATOR disabled [ 279.685850] coresight-tmc 20070000.etr: TMC-ETR disabled [ 279.693640] coresight-replicator-qcom 20120000.replicator: REPLICATOR enabled [ 279.700711] coresight-funnel 20150000.funnel: FUNNEL inport 0 enabled [ 279.707100] coresight-tmc 20010000.etf: TMC-ETF enabled [ 279.712276] coresight-funnel 20040000.funnel: FUNNEL inport 0 enabled [ 279.718670] coresight-funnel 220c0000.funnel: FUNNEL inport 1 enabled 14979 ms [ 281.711004] coresight-funnel 220c0000.funnel: FUNNEL inport 1 disabled [ 281.717471] coresight-funnel 20040000.funnel: FUNNEL inport 0 disabled [ 281.723953] coresight-tmc 20010000.etf: TMC disabled [ 281.728868] coresight-funnel 20150000.funnel: FUNNEL inport 0 disabled [ 281.735331] coresight-replicator-qcom 20120000.replicator: REPLICATOR disabled [ 281.742497] coresight-tmc 20070000.etr: TMC-ETR disabled [ perf record: Woken up 9 times to write data ] Warning: AUX data lost 8 times out of 9!
[ perf record: Captured and wrote <hard lockup>
Mathieu
Kim
On 24 March 2017 at 15:37, Kim Phillips kim.phillips@arm.com wrote:
There lies the problem - in mainline the ETR driver doesn't have support for the perf API. Coincidentally Mike is working on this. The perf-opencsd-4.11-rc1 has an ancient (and inefficient) ETR driver that does support the perf API.
Please avoid including long traces like this in emails. If you absolutely want to included them a pastebin would be more appropriate.
On Fri, 24 Mar 2017 15:44:43 -0600 Mathieu Poirier mathieu.poirier@linaro.org wrote:
<snip>
OK. Returning -ENOTSUPP with wording to such effect on dmesg would be more helpful than 'failed to mmap' (although it's admittedly better than a stack trace).
The perf-opencsd-4.11-rc1 has an ancient (and inefficient) ETR driver that does support the perf API.
Odd, because I was told to use ETR for its superior efficiency.
perf-opencsd-4.11-rc1 locks up my machine though:
On 24 March 2017 at 16:05, Kim Phillips kim.phillips@arm.com wrote:
The IP block itself is much better than anything else, that is very true but the current driver implementation isn't. On the flip side what is currently there in perf-opencsd-4.11-rc1 allows people to use the ETR with perf while Mike is working away.
perf-opencsd-4.11-rc1 locks up my machine though:
That is very very odd. I have a Juno R2 coming my way but won't have the opportunity to fire it up until (at least) April 17th.
On Thu, 23 Mar 2017 19:31:30 -0500 Kim Phillips kim.phillips@arm.com wrote:
For the record, I've since found out that this method uses the ETB trace method, and actually produces zero valid trace data in the resulting perf.data file. It turns out that pointing create_gcov to an empty-but-valid samples perf.data file produces an empty-but-valid .gcov file, and, in turn, using that to recompile sort.c with -fauto-profile magically produces a better performing resulting executable.
So I still can't get any sort (pun intended) of trace data out of my debian-based Juno r2.
Kim
On Fri, 28 Apr 2017 15:51:22 +0100 Kim Phillips kim.phillips@arm.com wrote:
I've been able to get past the hard-lockup situation when capturing ETM data by upgrading my Juno R2's firmware to the latest (Jan 2017).
However, sadly, I am still unable to replicate the results demonstrated in the AutoFDO instructions. When using host (cross) built tools, I see no improvement in performance:
$ gcc -O3 -fauto-profile=sort-3000-O3.gcov sort.c -o sort-autofdo $ ./sort-O3 Bubble sorting array of 30000 elements 6939 ms $ taskset -c 2 ./sort-O3 Bubble sorting array of 30000 elements 5375 ms $ taskset -c 2 ./sort-O3 Bubble sorting array of 30000 elements 5362 ms $ taskset -c 2 ./sort-O3 Bubble sorting array of 30000 elements 5369 ms $ taskset -c 2 ./sort-autofdo Bubble sorting array of 30000 elements 5361 ms $ taskset -c 2 ./sort-autofdo Bubble sorting array of 30000 elements 5359 ms $ taskset -c 2 ./sort-autofdo Bubble sorting array of 30000 elements 5362 ms $ taskset -c 2 ./sort-O3 Bubble sorting array of 30000 elements 5362 ms $ taskset -c 2 ./sort-autofdo Bubble sorting array of 30000 elements 5365 ms
In trying to eliminate any arch-dependent code in the tools, I discovered perf inject fails when built and run on the Juno target itself.
See the 'failed to process type' message when running inject on native built OpenCSD 4.11 branch perf with OpenCSD master branch libs:
--- [ 8038.213380] coresight-replicator-qcom 20120000.replicator: REPLICATOR enabled [ 8038.220440] coresight-funnel 20150000.funnel: FUNNEL inport 0 enabled [ 8038.226812] coresight-tmc 20010000.etf: TMC-ETF enabled [ 8038.231978] coresight-funnel 20040000.funnel: FUNNEL inport 0 enabled [ 8038.238350] coresight-funnel 220c0000.funnel: FUNNEL inport 1 enabled 18567 ms [ 8038.284876] coresight-funnel 220c0000.funnel: FUNNEL inport 1 disabled [ 8038.291335] coresight-funnel 20040000.funnel: FUNNEL inport 0 disabled [ 8038.297793] coresight-tmc 20010000.etf: TMC-ETF disabled [ 8038.303047] coresight-funnel 20150000.funnel: FUNNEL inport 0 disabled [ 8038.309504] coresight-replicator-qcom 20120000.replicator: REPLICATOR disabled [ 8038.316651] coresight-tmc 20070000.etr: TMC-ETR disabled [ perf record: Woken up 84 times to write data ] Warning: AUX data lost 82 times out of 106!
[ perf record: Captured and wrote 86.034 MB perf.data ] + sudo perf inject -i perf.data -o inj.data --itrace=il64 --strip 0x350 [0x50]: failed to process type: 1 <<<<<<<<<<<<< here. + sudo perf report -i inj.data --stdio WARNING: The inj.data file's data size field is 0 which is unexpected. Was the 'perf record' command properly terminated? Warning: Kernel address maps (/proc/{kallsyms,modules}) were restricted.
Check /proc/sys/kernel/kptr_restrict before running 'perf record'.
As no suitable kallsyms nor vmlinux was found, kernel samples can't be resolved.
Samples in kernel modules can't be resolved as well.
Error: The inj.data file has no samples! # To display the perf.data header info, please use --header/--header-only options. # + /home/kim/git/autofdo/create_gcov --binary=./sort-O3 --profile=inj.data --gcov=./sort-O3.gcov -gcov_version=1 E0509 13:53:22.904515 11360 utils.cc:231] Failed to open file inj.data E0509 13:53:22.905418 11360 profile_creator.cc:79] Error reading profile. + gcc -O3 -fauto-profile=./sort-O3.gcov ./sort.c -o ./sort-O3-autofdo ./sort.c:1:0: error: Cannot open profile file ./sort-O3.gcov. #include <stdio.h>
./sort.c:1: confused by earlier errors, bailing out ---
Has anyone else been able to confirm successful AutoFDO tests, and the type that don't just occur due to different compiler flags being implied with the -fauto-profile gcc flags when building the autofdo binary?
Thanks,
Kim
Maybe the problem is with the fact that perf inject does not translate the ETM trace into LBR events? Here is the command that I was using: $ perf inject -i perf.data -o inj.data --itrace=i100usl --strip
On 05/12/2017 04:15 AM, Kim Phillips wrote:
The inj.data file has no samples!
Oh, I see this error now. Maybe you can launch gdb on perf-inject and see where this assert is triggered, and add code to handle/discard that opcode.
On 05/12/2017 04:15 AM, Kim Phillips wrote:
0x350 [0x50]: failed to process type: 1 <<<<<<<<<<<<< here.
A: Because we read from top to bottom, left to right. Q: Why should I start my reply below the quoted text?
A: Because it messes up the order in which people normally read text. Q: Why is top-posting such a bad thing?
A: The lost context. Q: What makes top-posted replies harder to read than bottom-posted?
On Fri, 12 May 2017 07:37:27 -0500 Sebastian Pop s.pop@samsung.com wrote:
I haven't done anything to warrant that: I was just trying to follow the AutoFDO instructions from Documentation/trace/coresight.txt:
--- $ gcc-5 -O3 sort.c -o sort $ taskset -c 2 ./sort Bubble sorting array of 30000 elements 5910 ms
$ perf record -e cs_etm/@20070000.etr/u --per-thread taskset -c 2 ./sort Bubble sorting array of 30000 elements 12543 ms [ perf record: Woken up 35 times to write data ] [ perf record: Captured and wrote 69.640 MB perf.data ]
$ perf inject -i perf.data -o inj.data --itrace=il64 --strip $ create_gcov --binary=./sort --profile=inj.data --gcov=sort.gcov -gcov_version=1 $ gcc-5 -O3 -fauto-profile=sort.gcov sort.c -o sort_autofdo $ taskset -c 2 ./sort_autofdo Bubble sorting array of 30000 elements 5806 ms ---
The following session is using a native-built perf based on the OpenCSD tree's perf-opencsd-4.11 commit e0cf71ef149f:
$ gcc -O3 sort.c -o sort $ taskset -c 2 ./sort Bubble sorting array of 30000 elements 5311 ms $ perf --version perf version 4.10.rc4.ge0cf71 $ perf record -e cs_etm/@20070000.etr/u --per-thread taskset -c 2 ./sort Error: failed to set config "20070000.etr" on event cs_etm/@20070000.etr/u with 13 (Permission denied)
$ sudo perf record -e cs_etm/@20070000.etr/u --per-thread taskset -c 2 ./sort Bubble sorting array of 30000 elements 14048 ms [ perf record: Woken up 63 times to write data ] Warning: AUX data lost 62 times out of 65!
[ perf record: Captured and wrote 62.663 MB perf.data ] $ sudo perf inject -i perf.data -o inj.data --itrace=il64 --strip File perf.data not owned by current user or root (use -f to override) $ sudo perf inject -f -i perf.data -o inj.data --itrace=il64 --strip 0x350 [0x50]: failed to process type: 1
Obviously there are missing keywords like 'sudo' (or '#' prompts instead of '$' prompts) in the instructions.
Even with the inject command provided in the last reply, I still get the error:
$ sudo perf inject -f -i perf.data -o inj.data --itrace=i100usl --strip 0x350 [0x50]: failed to process type: 1
I even went back to try the 4.11-rc1 branch, and get the same error.
That's all with native-built perf: something the instructions seem to imply: e.g., there are no instructions saying when to go in between the host and the target machines.
When trying to do the cross-built perf inject with OpenCSD libraries (also not mentioned in the instructions, nor does inject complain if not built without them), things start to work a bit better in that the "failed to process type: 1" error does not occur.
So it would have been better to have been provided more exact instructions on how to run the AutoFDO example, but now I'm seeing a different problem:
Given this excerpt of my version of sort.c (it has been modified):
void bubble_sort (int *a, int n) { int i, temp, swap_flag = 1; while (swap_flag) { swap_flag = 0; for (i = 1; i < n; i++) { if (a[i] < a[i - 1]) { temp = a[i]; a[i] = a[i - 1]; a[i - 1] = temp; swap_flag = 1; } } } }
I see this gcov generated with the intel-pt trace data:
$ dump_gcov ./sort-O3.gcov -gcov_version=1 <snip> 11: bubble_sort total:101485 2: 10 4: 28064 5: 27985 7: 8681 8: 8681 9: 28064 <snip>
which makes an improvement:
+ taskset -c 2 ./sort-O3 30000 Bubble sorting array of 30000 elements 1452 ms + taskset -c 2 ./sort-autofdo 30000 Bubble sorting array of 30000 elements 1356 ms
but the aarch64 version does not - in fact it makes things worse:
$ taskset -c 2 ./sort-O3 Bubble sorting array of 30000 elements 5302 ms $ taskset -c 2 ./sort-O3-autofdo Bubble sorting array of 30000 elements 6484 ms
Here are the instructions I used to make the aarch64 version:
x86host$ perf inject -i perf.data -o inj.data --itrace=i100usl --strip x86host$ create_gcov --binary=sort-O3 --profile=inj.data --gcov=sort-O3.gcov -gcov_version=1 x86host$ aarch64-linux-gnu-gcc -O3 -fauto-profile=./sort-O3.gcov ./sort.c -o ./sort-O3-autofdo
and here is the equivalent snippet of the gcov dump:
x86host$ dump_gcov sort-O3.gcov -gcov_version=1 <snip> 11: bubble_sort total:11570765 2: 2090 4: 2089 5: 0 7: 5436878 9: 6129708 <snip>
Any ideas?
Thanks,
Kim
On 05/15/2017 12:15 PM, Kim Phillips wrote:
This may be a problem in tuning of the aarch64 optimizations in the compiler.
I wonder why the profile you get on aarch64 looks so different than the x86_64. Could you please use the x86_64 profile when optimizing with autoFDO for aarch64? Also could you please use the aarch64 profile to optimize the x86_64 program, and report the execution time numbers?
Also what version of gcc are you using?
Thanks, Sebastian
On Mon, 15 May 2017 13:21:09 -0500 Sebastian Pop s.pop@samsung.com wrote:
the arch-independent gcov file merely suggests what paths are more or less likely, and I've seen the aarch64 compiler backend honour a likely branch, given a coverage file derived with software instrumentation: on juno r2:
$ gcc -O3 -o sort-O3 sort.c $ taskset -c 2 ./sort-O3 Bubble sorting array of 30000 elements 5303 ms $ gcc -O3 -o sort-O3-profgen -fprofile-generate sort.c $ taskset -c 2 ./sort-O3-profgen 3000 Bubble sorting array of 3000 elements 44 ms $ gcc -O3 -o sort-O3-profopt -fprofile-use sort.c $ taskset -c 2 ./sort-O3-profopt Bubble sorting array of 30000 elements 3884 ms
so it's not that the aarch64 backend isn't doing the right thing wrt branch optimization.
I have to pack my juno now, so I'll have get to that later, but I don't think it'll tell us anything new: the x86 gcov is good whereas the arm one is bad, and they are arch-independent. Your results (from the documentation) also suggest the compiler(s) is/are working properly.
Also what version of gcc are you using?
native target/juno: gcc (Debian 6.3.0-14) 6.3.0 20170415
host/x86: aarch64-linux-gnu-gcc (Ubuntu 6.2.0-5ubuntu12) 6.2.0 20161005
Thanks,
Kim
On 05/16/2017 07:13 AM, Kim Phillips wrote:
the x86 gcov is good whereas the arm one is bad, and they are arch-independent.
I think you are right, there may be some bug in creating the coverage file from the ETM traces. I will have a look at this.
Thanks, Sebastian
On 05/15/2017 12:15 PM, Kim Phillips wrote:
I have not tried to run perf inject on aarch64, though my thinking is that perf inject should work the same on all machines: what you see is a bug.
Please let me try to reproduce the bug, and if I cannot, I will ask you for your perf.data that exposes the problem.
Thanks, Sebastian
Hi Kim,
On 05/15/2017 01:26 PM, Sebastian Pop wrote:
I just verified that back last year, I did run all the commands including perf inject on aarch64-linux. I still have all the scripts and the data around, and I was able to process the perf.data containing ETM traces into LBR events. This is on a Juno-r0 board with perf built natively on aarch64-linux from top of tree git plus two patches:
commit 88e9321047b0a795d1d7c2408ac77f910768f94b Author: Sebastian Pop s.pop@samsung.com Date: Tue Dec 13 16:24:52 2016 -0600
perf tools: new inject capabilitity for CoreSight traces
Added user space perf functionality to translate CoreSight traces into last branch stack events. To invoke the new functionality, use the perf inject tool with --itrace=il. For example, to translate the ETM trace from perf.data into last branch records in a new inj.data file:
The parameter to 'l' 128 is parsed as recording the last 128 branches from the sampling point. Also note that right now the parameter to 'i' 100us is ignored, and we end up translating all the branches in the trace.
Signed-off-by: Sebastian Pop s.pop@samsung.com Signed-off-by: Brian Rzycki b.rzycki@samsung.com
commit cf5c7b9681d89585e1a80c63d2fb422f50dc4ee3 Author: Sebastian Pop s.pop@samsung.com Date: Fri Dec 9 10:57:34 2016 -0600
perf tools: fix printing of auxtrace_info
The first CS_HEADER_VERSION_0_MAX words of an ETM trace are reserved for the header. To check the ETM version, one needs to skip over the header bytes and check the next word against __perf_cs_etmv{3,4}_magic.
Signed-off-by: Sebastian Pop s.pop@samsung.com
commit b50067a52cf308aaab87a20e38cbdb2928a36c5a Author: Mike Leach mike.leach@linaro.org Date: Tue Nov 29 17:46:22 2016 +0000
cs-etm: Update to perf cs-etm decoder for OpenCSD v0.5
Adds additional generic packet types to switch statement in decoder to ensure compilation without errors.
Signed-off-by: Mike Leach mike.leach@linaro.org
Could you please send me privately (at s.pop@samsung.com) your perf.data file on which you see the error, and the sha key of the kernel repo you are using?
Thanks, Sebastian
On Mon, 15 May 2017 14:28:45 -0500 Sebastian Pop s.pop@samsung.com wrote:
$ git show 88e9321047b0a795d1d7c2408ac77f910768f94b fatal: bad object 88e9321047b0a795d1d7c2408ac77f910768f94b
there is this however:
commit 8ca6ef5392a2d5884152ce8cc382031d5de5069d Author: Sebastian Pop s.pop@samsung.com AuthorDate: Fri Dec 16 17:43:16 2016 -0600 Commit: Mathieu Poirier mathieu.poirier@linaro.org CommitDate: Mon May 1 11:15:57 2017 -0600
perf tools: new inject capabilitity for CoreSight traces
$ git show cf5c7b9681d89585e1a80c63d2fb422f50dc4ee3 fatal: bad object cf5c7b9681d89585e1a80c63d2fb422f50dc4ee3
There is this however:
commit c5bbc0416612f4656ffe890320ead454c94ab2a9 Author: Sebastian Pop <s.pop at samsung.com> AuthorDate: Thu Mar 16 11:12:43 2017 -0600 Commit: Mathieu Poirier mathieu.poirier@linaro.org CommitDate: Mon May 1 11:17:42 2017 -0600
perf tools: fix printing of auxtrace_info
this exists. Is it possible to try the upstreamed versions of the commits?
I'm using OpenCSD's perf-opencsd-4.11 branch, currently e0cf71e "coresight: tmc: minor fix for output log".
I'm attaching the perf.data file in a separate email to you.
Thank you,
Kim
On 05/16/2017 07:49 AM, Sebastian Pop wrote:
I am not able to reproduce the error on Juno-r0 with the perf.data from Kim. I rebuilt the ETM decoder from master as of today 054c07caa2eb06ae74426b79cb3875bf2569d091 linux perf as indicated at sha e0cf71e.
# export LD_LIBRARY_PATH=/root/etm/decoder-may/decoder/tests/bin/linux-arm64/dbg # /root/etm/OpenCSD-may/tools/perf/perf inject -i ~/perf.data -o /tmp/inj --itrace=il64 --strip /home/kim/sort-etm/sort-O3 with build id 69ba0f7aec800793a0d0f30d2acd50c11e87630d not found, continuing without symbols /lib/aarch64-linux-gnu/libc-2.24.so with build id 049352a85d29cb69c86c57f362dd10b7e2e62eba not found, continuing without symbols /lib/aarch64-linux-gnu/ld-2.24.so with build id f4fddd122d808f647d41d3b883f5cff43ca44f41 not found, continuing without symbols # echo $? 0 # ls -alh /tmp/inj -rw------- 1 root root 11K May 16 09:47 /tmp/inj # dump_gcov sort_3k.gcov -gcov_version=1 <empty> # /root/etm/OpenCSD-may/tools/perf/perf report -D -i inj | grep 'branch stack: nr:0' | wc -l 1
There is only one LBR event which does not have a branch stack.
However on a trace that I collect this way: # gcc -v [...] gcc version 5.4.0 20160609 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.4) # gcc -O3 -g3 sort.c -o sort_3k # /root/etm/OpenCSD-may/tools/perf/perf record -e cs_etm/@20070000.etr/u --per-thread ./sort_3k Bubble sorting array of 3000 elements 77 ms [ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.494 MB perf.data ] # /root/etm/OpenCSD-may/tools/perf/perf inject -f -i perf.data -o inj --itrace=i100usl --strip # /root/etm/OpenCSD-may/tools/perf/perf report -D -i inj | grep 'branch stack: nr:64' | wc -l 30040 # /root/etm/OpenCSD-may/tools/perf/perf report -D -i inj | grep 'branch stack: nr:39' | wc -l 1 # create_gcov --binary=./sort_3k --profile=inj --gcov=sort_3k.gcov -gcov_version=1 # dump_gcov sort_3k.gcov -gcov_version=1 sort_array total:684723 head:0 0: 1 3.3: 1 4.3: 0 7: 0 1: printf total:0 2: 0 6: bubble_sort total:684721 2: 138 4: 1 5: 0 7: 130873 9: 553709
There are 30040 * 64 + 39 = 1922599 branches recorded as "Last Branch Record" events.
On x86_64-linux with intel-pt, I see the following coverage file: $ gcc -v [...] gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4) $ gcc -O3 -g3 sort.c -o sort_3k $ perf record -e intel_pt//u ./sort_3k WARNING: Kernel address maps (/proc/{kallsyms,modules}) are restricted, check /proc/sys/kernel/kptr_restrict.
Samples in kernel functions may not be resolved if a suitable vmlinux file is not found in the buildid cache or in the vmlinux path.
Samples in kernel modules won't be resolved at all.
If some relocation was applied (e.g. kexec) symbols may be misresolved even with a suitable vmlinux or kallsyms file.
Cannot read kernel map Couldn't record kernel reference relocation symbol Symbol resolution may be skewed if relocation was used (e.g. kexec). Check /proc/kallsyms permission or run as root. Bubble sorting array of 3000 elements 39 ms [ perf record: Woken up 51 times to write data ] [ perf record: Captured and wrote 3.160 MB perf.data ] $ perf inject -i perf.data -o inj --itrace=i100usle --strip $ create_gcov --binary=./sort_3k --profile=inj --gcov=sort_3k.gcov -gcov_version=1 $ dump_gcov sort_3k.gcov -gcov_version=1 sort_array total:76281 head:0 0: 4 3.3: 4 4.3: 0 7: 0 1: printf total:0 2: 0 6: bubble_sort total:76273 2: 4 4: 19538 5: 19509 7: 8842 8: 8842 9: 19538 $ perf report -D -i inj 2> /dev/null | grep 'branch stack: nr:64' | wc -l 471 $ perf report -D -i inj 2> /dev/null | grep 'branch stack: nr:' | wc -l 491
There are in between 471 * 64 = 30144 and 491 * 64 branches recorded in as LBR events, as the --itrace option is sampling through the trace data every 100us. The sampling is not yet implemented in "perf inject" for aarch64.
If we sample every 10 micro seconds, we get more LBR events, and the profile is scaled up: $ perf inject -i perf.data -o inj --itrace=i10usle --strip $ perf report -D -i inj10 2> /dev/null | grep 'branch stack: nr:' | wc -l 4821 $ perf report -D -i inj10 2> /dev/null | grep 'branch stack: nr:64' | wc -l 4695 $ create_gcov --binary=./sort_3k --profile=inj10 --gcov=sort_3k_10.gcov -gcov_version=1 $ dump_gcov sort_3k_10.gcov -gcov_version=1 sort_array total:775053 head:0 0: 27 3.3: 56 4.3: 56 7: 0 1: printf total:0 2: 0 6: bubble_sort total:774914 2: 29 4: 195863 5: 195415 7: 93872 8: 93872 9: 195863
Now, let's investigate why the coverage samples are different on x86_64 and aarch64.
Here is again the source code for the hot code:
void bubble_sort (int *a, int n) { int i, t, s = 1; while (s) { s = 0; for (i = 1; i < n; i++) { // the condition and the inner loop are hot. if (a[i] < a[i - 1]) { // the code in the "then clause" is colder than the condition, // as most of the elements get sorted over time and do not need to be swapped. t = a[i]; a[i] = a[i - 1]; a[i - 1] = t; s = 1; } } } }
The coverage on aarch64:
6: bubble_sort total:684721 2: 138 4: 1 5: 0 7: 130873 9: 553709
"7:" is the code in the "then clause". This is colder than "9:". "9:" is the code of the innermost loop and the condition "a[i] < a[i-1]".
Looking at the assembler generated by gcc for aarch64, the inner loop is in L3 and L4:
# gcc -O3 sort.c -S -o - [...] bubble_sort: sub w5, w1, #2 add x5, x5, 1 add x5, x0, x5, lsl 2 .p2align 2 .L2: cmp w1, 1 // cold outer loop ble .L1 mov x2, x0 mov w6, 0 .p2align 2 .L4: ldp w4, w3, [x2] // hot inner loop cmp w3, w4 // hot bge .L3 // hot mov w6, 1 // colder code in "then clause" stp w3, w4, [x2] // colder code .L3: add x2, x2, 4 // hot cmp x2, x5 // hot bne .L4 // hot cbnz w6, .L2 // cold outer loop .L1: ret [...]
and here is what GCC generates for x86_64 $ gcc -O3 sort.c -S -o - [...] bubble_sort: .LFB40: .cfi_startproc leal -2(%rsi), %eax leaq 8(%rdi,%rax,4), %r8 .p2align 4,,10 .p2align 3 .L2: cmpl $1, %esi jle .L1 leaq 4(%rdi), %rax xorl %r9d, %r9d .p2align 4,,10 .p2align 3 .L4: movl (%rax), %edx movl -4(%rax), %ecx cmpl %ecx, %edx jge .L3 movl %ecx, (%rax) movl %edx, -4(%rax) movl $1, %r9d .L3: addq $4, %rax cmpq %r8, %rax jne .L4 testl %r9d, %r9d jne .L2 .L1: rep ret [...]
Here is the x86_64 coverage.
6: bubble_sort total:774914 2: 29 4: 195863 5: 195415 7: 93872 8: 93872 9: 195863
It seems to me that the debug info may be more precise on x86_64 than on aarch64, and create_gcov is able to identify in a more precise way which instruction belongs to which basic block in a more fine grain way than on aarch64. For example, "4:" and "9:" have the exact same number of event samples, and the same is true for "7:" and "8:". These may be because some instructions get tagged in the debug info as belonging to different basic blocks.
I'm adding Dehao to the "CC:" list to check my interpretation of what create_gcov does differently on x86_64 than on aarch64.
Thanks, Sebastian
On Tue, May 16, 2017 at 1:03 PM, Sebastian Pop s.pop@samsung.com wrote:
Could you copy-paste the code with line number (the one you pasted does not match the profile). Could you also provide the the assembly of the -g1 arm binary so that I can examine the debug info?
Also, it would be helpful if you can use sample_merger to generate the text version of the perf.data file and attach that to the thread too (as well as the full objdump of the bubble_sort function). This will help evaluate if profile is accurate at binary level.
Thanks, Dehao
Thanks, Sebastian
Hi Dehao,
On Tue, May 16, 2017 at 7:17 PM, Dehao Chen dehao@google.com wrote:
Could you copy-paste the code with line number (the one you pasted does not match the profile).
Please see attached sort.c
Could you also provide the the assembly of the -g1 arm binary so that I can examine the debug info?
# gcc -O3 -g1 sort.c -S -o sort-aarch64.s
See attached sort-aarch64.s
Also, it would be helpful if you can use sample_merger to generate the text version of the perf.data file and attach that to the thread too
Could you please provide the full command line I should be using? I tried the following with no meaningful output:
# sample_merger -profile inj # cat data.txt 0 0 0
When I dump the raw trace with: # perf report -D -i inj > dump.txt one of the LBR events looks like this:
0x117340 [0x630]: PERF_RECORD_SAMPLE(IP, 0x2): 15163/15163: 0x40088c period: 3 addr: 0 ... branch stack: nr:64 ..... 0: 0000ffffa3693ea4 -> 0000ffffa3693eac 0 cycles P 0 ..... 1: 0000ffffa3693a10 -> 0000ffffa3693a20 0 cycles P 0 ..... 2: 0000ffffa3693a08 -> 0000ffffa3693a10 0 cycles P 0 ..... 3: 0000ffffa36939f4 -> 0000ffffa3693a08 0 cycles P 0 ..... 4: 0000ffffa3693b88 -> 0000ffffa3693ba0 0 cycles P 0 ..... 5: 0000ffffa3693b58 -> 0000ffffa3693b88 0 cycles P 0 ..... 6: 0000ffffa3693b4c -> 0000ffffa3693b58 0 cycles P 0 ..... 7: 0000ffffa3693b40 -> 0000ffffa3693b4c 0 cycles P 0 ..... 8: 0000ffffa36939e4 -> 0000ffffa36939f4 0 cycles P 0 ..... 9: 0000ffffa36939e0 -> 0000ffffa36939e4 0 cycles P 0 ..... 10: 0000ffffa36939d8 -> 0000ffffa36939e0 0 cycles P 0 ..... 11: 0000ffffa36939b0 -> 0000ffffa36939d8 0 cycles P 0 ..... 12: 0000ffffa3693e98 -> 0000ffffa3693ea4 0 cycles P 0 ..... 13: 00000000004005a0 -> 00000000004005b0 0 cycles P 0 ..... 14: 0000000000400888 -> 000000000040088c 0 cycles P 0 ..... 15: 000000000040088c -> 0000000000400898 0 cycles P 0 ..... 16: 0000ffffa3693ea4 -> 0000ffffa3693eac 0 cycles P 0 ..... 17: 0000ffffa3693a10 -> 0000ffffa3693a20 0 cycles P 0 ..... 18: 0000ffffa3693a08 -> 0000ffffa3693a10 0 cycles P 0 ..... 19: 0000ffffa36939f4 -> 0000ffffa3693a08 0 cycles P 0 ..... 20: 0000ffffa3693b88 -> 0000ffffa3693ba0 0 cycles P 0 ..... 21: 0000ffffa3693b58 -> 0000ffffa3693b88 0 cycles P 0 ..... 22: 0000ffffa3693b4c -> 0000ffffa3693b58 0 cycles P 0 ..... 23: 0000ffffa3693b40 -> 0000ffffa3693b4c 0 cycles P 0 ..... 24: 0000ffffa36939e4 -> 0000ffffa36939f4 0 cycles P 0 ..... 25: 0000ffffa36939e0 -> 0000ffffa36939e4 0 cycles P 0 ..... 26: 0000ffffa36939d8 -> 0000ffffa36939e0 0 cycles P 0 ..... 27: 0000ffffa36939b0 -> 0000ffffa36939d8 0 cycles P 0 ..... 28: 0000ffffa3693e98 -> 0000ffffa3693ea4 0 cycles P 0 ..... 29: 00000000004005a0 -> 00000000004005b0 0 cycles P 0 ..... 30: 0000000000400888 -> 000000000040088c 0 cycles P 0 ..... 31: 000000000040088c -> 0000000000400898 0 cycles P 0 ..... 32: 0000ffffa3693ea4 -> 0000ffffa3693eac 0 cycles P 0 ..... 33: 0000ffffa3693a10 -> 0000ffffa3693a20 0 cycles P 0 ..... 34: 0000ffffa3693a08 -> 0000ffffa3693a10 0 cycles P 0 ..... 35: 0000ffffa36939f4 -> 0000ffffa3693a08 0 cycles P 0 ..... 36: 0000ffffa3693b88 -> 0000ffffa3693ba0 0 cycles P 0 ..... 37: 0000ffffa3693b58 -> 0000ffffa3693b88 0 cycles P 0 ..... 38: 0000ffffa3693b4c -> 0000ffffa3693b58 0 cycles P 0 ..... 39: 0000ffffa3693b40 -> 0000ffffa3693b4c 0 cycles P 0 ..... 40: 0000ffffa36939e4 -> 0000ffffa36939f4 0 cycles P 0 ..... 41: 0000ffffa36939e0 -> 0000ffffa36939e4 0 cycles P 0 ..... 42: 0000ffffa36939d8 -> 0000ffffa36939e0 0 cycles P 0 ..... 43: 0000ffffa36939b0 -> 0000ffffa36939d8 0 cycles P 0 ..... 44: 0000ffffa3693e98 -> 0000ffffa3693ea4 0 cycles P 0 ..... 45: 00000000004005a0 -> 00000000004005b0 0 cycles P 0 ..... 46: 0000000000400888 -> 000000000040088c 0 cycles P 0 ..... 47: 000000000040088c -> 0000000000400898 0 cycles P 0 ..... 48: 0000ffffa3693ea4 -> 0000ffffa3693eac 0 cycles P 0 ..... 49: 0000ffffa3693a10 -> 0000ffffa3693a20 0 cycles P 0 ..... 50: 0000ffffa3693a08 -> 0000ffffa3693a10 0 cycles P 0 ..... 51: 0000ffffa36939f4 -> 0000ffffa3693a08 0 cycles P 0 ..... 52: 0000ffffa3693b88 -> 0000ffffa3693ba0 0 cycles P 0 ..... 53: 0000ffffa3693b58 -> 0000ffffa3693b88 0 cycles P 0 ..... 54: 0000ffffa3693b4c -> 0000ffffa3693b58 0 cycles P 0 ..... 55: 0000ffffa3693b40 -> 0000ffffa3693b4c 0 cycles P 0 ..... 56: 0000ffffa36939e4 -> 0000ffffa36939f4 0 cycles P 0 ..... 57: 0000ffffa36939e0 -> 0000ffffa36939e4 0 cycles P 0 ..... 58: 0000ffffa36939d8 -> 0000ffffa36939e0 0 cycles P 0 ..... 59: 0000ffffa36939b0 -> 0000ffffa36939d8 0 cycles P 0 ..... 60: 0000ffffa3693e98 -> 0000ffffa3693ea4 0 cycles P 0 ..... 61: 00000000004005a0 -> 00000000004005b0 0 cycles P 0 ..... 62: 0000000000400888 -> 000000000040088c 0 cycles P 0 ..... 63: 000000000040088c -> 0000000000400898 0 cycles P 0 ... thread: sort_3k:15163 ...... dso: /root/kim/sort_3k
# objdump -d sort_3k > sort_3k.objdump
See attached sort_3k.objdump
The addresses in the above branch stack are in sort_array, as bubble_sort gets inlined:
0000000000400838 <sort_array>: 400838: d1400bff sub sp, sp, #0x2, lsl #12 40083c: 90000001 adrp x1, 400000 <_init-0x538> 400840: d13bc3ff sub sp, sp, #0xef0 400844: d285e302 mov x2, #0x2f18 // #12056 400848: 91266021 add x1, x1, #0x998 40084c: a9bd7bfd stp x29, x30, [sp,#-48]! 400850: 910003fd mov x29, sp 400854: f90013f5 str x21, [sp,#32] 400858: b0000095 adrp x21, 411000 <_GLOBAL_OFFSET_TABLE_+0x28> 40085c: 910122a3 add x3, x21, #0x48 400860: 9100e3a0 add x0, x29, #0x38 400864: f9400064 ldr x4, [x3] 400868: f9178fa4 str x4, [x29,#12056] 40086c: d2800004 mov x4, #0x0 // #0 400870: a90153f3 stp x19, x20, [sp,#16] 400874: 8b0203b4 add x20, x29, x2 400878: aa0003f3 mov x19, x0 40087c: 52817702 mov w2, #0xbb8 // #3000 400880: 52800020 mov w0, #0x1 // #1 400884: 97ffff3f bl 400580 __printf_chk@plt 400888: 97ffff46 bl 4005a0 rand@plt 40088c: b8004660 str w0, [x19],#4 400890: eb14027f cmp x19, x20 400894: 54ffffa1 b.ne 400888 <sort_array+0x50> 400898: d285e280 mov x0, #0x2f14 // #12052 40089c: 8b0003a3 add x3, x29, x0 4008a0: 9100e3a0 add x0, x29, #0x38 4008a4: 52800004 mov w4, #0x0 // #0 4008a8: 29400402 ldp w2, w1, [x0] 4008ac: 6b02003f cmp w1, w2 4008b0: 5400006a b.ge 4008bc <sort_array+0x84> 4008b4: 52800024 mov w4, #0x1 // #1 4008b8: 29000801 stp w1, w2, [x0] 4008bc: 91001000 add x0, x0, #0x4 4008c0: eb00007f cmp x3, x0 4008c4: 54ffff21 b.ne 4008a8 <sort_array+0x70> 4008c8: 35fffec4 cbnz w4, 4008a0 <sort_array+0x68> 4008cc: 910122b5 add x21, x21, #0x48 4008d0: f9578fa1 ldr x1, [x29,#12056] 4008d4: f94002a0 ldr x0, [x21] 4008d8: ca000020 eor x0, x1, x0 4008dc: b50000e0 cbnz x0, 4008f8 <sort_array+0xc0> 4008e0: a94153f3 ldp x19, x20, [sp,#16] 4008e4: f94013f5 ldr x21, [sp,#32] 4008e8: a8c37bfd ldp x29, x30, [sp],#48 4008ec: 91400bff add sp, sp, #0x2, lsl #12 4008f0: 913bc3ff add sp, sp, #0xef0 4008f4: d65f03c0 ret 4008f8: 97ffff2e bl 4005b0 __stack_chk_fail@plt 4008fc: 00000000 .inst 0x00000000 ; undefined
On Wed, May 17, 2017 at 7:31 AM, Sebastian Pop sebpop@gmail.com wrote:
You also need to have -binary point to the profiling binary.
On Wed, May 17, 2017 at 9:35 AM, Dehao Chen dehao@google.com wrote:
Thanks! I used the following command:
# sample_merger -profile ./inj -binary ./sort_3k
The output is data.txt attached.
I think there is something wrong with the branch_stack:
e.g. ..... 29: 00000000004005a0 -> 00000000004005b0 0 cycles P 0 ..... 30: 0000000000400888 -> 000000000040088c 0 cycles P 0 ..... 31: 000000000040088c -> 0000000000400898 0 cycles P 0
from the objdump: 400884: 97ffff3f bl 400580 __printf_chk@plt 400888: 97ffff46 bl 4005a0 rand@plt 40088c: b8004660 str w0, [x19],#4 400890: eb14027f cmp x19, x20 400894: 54ffffa1 b.ne 400888 <sort_array+0x50> 400898: d285e280 mov x0, #0x2f14
looks like 400888 is not jumping to 40088c, but 4005a0 instead. and 40088c is not even a jump instruction.
Dehao
On Wed, May 17, 2017 at 7:39 AM, Sebastian Pop sebpop@gmail.com wrote:
Hi,
The OpenCSD decoder outputs executed instruction ranges - which do look very much like the branch stack ranges below. These ranges are inclusive to exclusive addresses.
I'm not familiar with the required from format of the branch stack, but assuming this is a range output by the decoder....
..... 29: 00000000004005a0 -> 00000000004005b0 0 cycles P 0
it means that we traced execution starting at the instruction @ 4005a0 to the instruction _before_ address 4005b0 (i.e. the instruction @ 4005ac if aarch32 / aarch64, or the instruction @ 4005ae if Thumb16).
On 17 May 2017 at 16:43, Dehao Chen dehao@google.com wrote:
So taking a bit more of the stack from above e-mail.....
..... 30: 0000000000400888 -> 000000000040088c 0 cycles P 0 ..... 31: 000000000040088c -> 0000000000400898 0 cycles P 0 (snip the stuff in high memory ....) ..... 45: 00000000004005a0 -> 00000000004005b0 0 cycles P 0 ..... 46: 0000000000400888 -> 000000000040088c 0 cycles P 0 ..... 47: 000000000040088c -> 0000000000400898 0 cycles P 0
interpreting this as I would the decoder output....
@29 is the execution of the code @4005a0 @30 executes the bl 4005a0 @31 runs from 40088c to the b.ne 400888 @ 400894 thus looping round again.
So perhaps the interpretation of the output from the decoder in building the branch stack could be the issue here?
Mike
I see, in this output, branch_stack is more like "range_list". I think they provides equivalent info, but the profile processing tool can only interpret the branch_stack. So we either need to teach the profile processing tool to understand the range_list, or make the profiler convert range_list to branch_stack.
On Wed, May 17, 2017 at 9:35 AM, Mike Leach mike.leach@linaro.org wrote:
On Wed, May 17, 2017 at 11:35 AM, Mike Leach mike.leach@linaro.org wrote:
Mike, I think you are right: my interpretation of the ETM trace was wrong. The ETM trace contains the boundaries of the executed basic blocks, and not the start and end addresses of the branch instructions as in the LBR branch stack. The conversion from the ETM to LBR events is not a 1-to-1 translation as currently implemented. I will submit a patch to fix this in perf inject.
Thanks Kim, Dehao, and Mike for your help on identifying this issue.
Sebastian
Hi Sebastian,
You should be further aware due to the way that the program flow trace works, all branches will result in a trace range, but not all trace ranges end in a branch. The input packets from the decoder [struct ocsd_generic_trace_elem @trc_gen_elem_types.h] contain the trace range as you have seen plus information on the last instruction in that range:- a) if it was a branch or not b) if it was executed (i.e. branch taken or not).
However this additional information is not transferred into the internal cs_etm_packet structure used in cs_etm__update_last_branch_rb()
So unless I have mis-interpreted what is required, to build a correctly formatted last branch record series, this additional information is going to be required - (we don't want none-branch ranges?), meaning an update in the cs-etm-decoder.c code is also required.
Regards
Mike
On 18 May 2017 at 03:10, Sebastian Pop sebpop@gmail.com wrote:
Just curious: what's the profiling overhead for this?
Thanks, Dehao
On Thu, May 18, 2017 at 3:09 AM, Mike Leach mike.leach@linaro.org wrote:
On 05/18/2017 09:27 AM, Dehao Chen wrote:
Just curious: what's the profiling overhead for this?
To my understanding ETM has no overhead on the execution: ETM is a hardware device that was designed for debug purposes to have no overhead. The normal use of the ETM is to be able to inspect an execution trace leading to an error (like a kernel panic.) At the moment of the crash, one can stop the execution and inspect the trace recorded by the ETM.
In the use of the ETM with "perf record", there is an overhead when "perf record" wakes up to record the trace. Copying the content of the trace buffer (ETB) to perf.data has an overhead, that can be mitigated by making perf to wake up less often to record a trace, and by using a small ETB. I have tried an ETB of 1MB and 3MB, and I do not know whether one can configure the ETB to be smaller than 1MB.
I will let the experts Mike and Mathieu comment more on the overhead of the ETM.
Sebastian
On 18 May 2017 at 08:57, Sebastian Pop s.pop@samsung.com wrote:
Sebastian has properly summarised the situation. ETMs don't introduce overhead since they are HW devices. Depending on the sink being used there may be more or less overhead. Due to their inherent nature ETB and ETF sinks come along with extra processing related to copying traces from the internal memory to the perf ring buffer. That can be mitigated by using an ETR sink in scatter-gather mode. There is currently an implementation on github with another one to be posted to the kernel mailing list soon.
Mathieu
On Thu, May 18, 2017 at 5:09 AM, Mike Leach mike.leach@linaro.org wrote:
Thanks Mike for your suggestions, please see the implementation in https://lists.linaro.org/pipermail/coresight/2017-May/000601.html
Sebastian
On Wed, May 17, 2017 at 10:43 AM, Dehao Chen dehao@google.com wrote:
I processed the same perf.data into an inj file with the following two patches: https://lists.linaro.org/pipermail/coresight/2017-May/000601.html https://lists.linaro.org/pipermail/coresight/2017-May/000600.html
Please see attached data.txt, the output of: # sample_merger -profile ./inj -binary ./sort_3k
Here is one of the branch stacks from "perf report -D -i inj":
0xaeca0 [0x630]: PERF_RECORD_SAMPLE(IP, 0x2): 15163/15163: 0x4005a0 period: 4 addr: 0 ... branch stack: nr:64 ..... 0: 00000000004005ac -> 0000ffffa3693e98 0 cycles P 0 ..... 1: 0000ffffa3693ea0 -> 0000ffffa36939b0 0 cycles P 0 ..... 2: 0000ffffa36939d4 -> 0000ffffa36939d8 0 cycles P 0 ..... 3: 0000ffffa36939dc -> 0000ffffa36939e0 0 cycles P 0 ..... 4: 0000ffffa36939e0 -> 0000ffffa36939e4 0 cycles P 0 ..... 5: 0000ffffa36939f0 -> 0000ffffa3693b40 0 cycles P 0 ..... 6: 0000ffffa3693b48 -> 0000ffffa3693b4c 0 cycles P 0 ..... 7: 0000ffffa3693b54 -> 0000ffffa3693b58 0 cycles P 0 ..... 8: 0000ffffa3693b84 -> 0000ffffa3693b88 0 cycles P 0 ..... 9: 0000ffffa3693b9c -> 0000ffffa36939f4 0 cycles P 0 ..... 10: 0000ffffa3693a04 -> 0000ffffa3693a08 0 cycles P 0 ..... 11: 0000ffffa3693a0c -> 0000ffffa3693a10 0 cycles P 0 ..... 12: 0000ffffa3693a1c -> 0000ffffa3693ea4 0 cycles P 0 ..... 13: 0000ffffa3693ea8 -> 000000000040088c 0 cycles P 0 ..... 14: 0000000000400894 -> 0000000000400888 0 cycles P 0 ..... 15: 0000000000400888 -> 00000000004005a0 0 cycles P 0 ..... 16: 00000000004005ac -> 0000ffffa3693e98 0 cycles P 0 ..... 17: 0000ffffa3693ea0 -> 0000ffffa36939b0 0 cycles P 0 ..... 18: 0000ffffa36939d4 -> 0000ffffa36939d8 0 cycles P 0 ..... 19: 0000ffffa36939dc -> 0000ffffa36939e0 0 cycles P 0 ..... 20: 0000ffffa36939e0 -> 0000ffffa36939e4 0 cycles P 0 ..... 21: 0000ffffa36939f0 -> 0000ffffa3693b40 0 cycles P 0 ..... 22: 0000ffffa3693b48 -> 0000ffffa3693b4c 0 cycles P 0 ..... 23: 0000ffffa3693b54 -> 0000ffffa3693b58 0 cycles P 0 ..... 24: 0000ffffa3693b84 -> 0000ffffa3693ba0 0 cycles P 0 ..... 25: 0000ffffa3693ba4 -> 0000ffffa3693b90 0 cycles P 0 ..... 26: 0000ffffa3693b9c -> 0000ffffa36939f4 0 cycles P 0 ..... 27: 0000ffffa3693a04 -> 0000ffffa3693a08 0 cycles P 0 ..... 28: 0000ffffa3693a0c -> 0000ffffa3693a10 0 cycles P 0 ..... 29: 0000ffffa3693a1c -> 0000ffffa3693ea4 0 cycles P 0 ..... 30: 0000ffffa3693ea8 -> 000000000040088c 0 cycles P 0 ..... 31: 0000000000400894 -> 0000000000400888 0 cycles P 0 ..... 32: 0000000000400888 -> 00000000004005a0 0 cycles P 0 ..... 33: 00000000004005ac -> 0000ffffa3693e98 0 cycles P 0 ..... 34: 0000ffffa3693ea0 -> 0000ffffa36939b0 0 cycles P 0 ..... 35: 0000ffffa36939d4 -> 0000ffffa36939d8 0 cycles P 0 ..... 36: 0000ffffa36939dc -> 0000ffffa36939e0 0 cycles P 0 ..... 37: 0000ffffa36939e0 -> 0000ffffa36939e4 0 cycles P 0 ..... 38: 0000ffffa36939f0 -> 0000ffffa3693b40 0 cycles P 0 ..... 39: 0000ffffa3693b48 -> 0000ffffa3693b4c 0 cycles P 0 ..... 40: 0000ffffa3693b54 -> 0000ffffa3693b58 0 cycles P 0 ..... 41: 0000ffffa3693b84 -> 0000ffffa3693b88 0 cycles P 0 ..... 42: 0000ffffa3693b9c -> 0000ffffa36939f4 0 cycles P 0 ..... 43: 0000ffffa3693a04 -> 0000ffffa3693a08 0 cycles P 0 ..... 44: 0000ffffa3693a0c -> 0000ffffa3693a10 0 cycles P 0 ..... 45: 0000ffffa3693a1c -> 0000ffffa3693ea4 0 cycles P 0 ..... 46: 0000ffffa3693ea8 -> 000000000040088c 0 cycles P 0 ..... 47: 0000000000400894 -> 0000000000400888 0 cycles P 0 ..... 48: 0000000000400888 -> 00000000004005a0 0 cycles P 0 ..... 49: 00000000004005ac -> 0000ffffa3693e98 0 cycles P 0 ..... 50: 0000ffffa3693ea0 -> 0000ffffa36939b0 0 cycles P 0 ..... 51: 0000ffffa36939d4 -> 0000ffffa36939d8 0 cycles P 0 ..... 52: 0000ffffa36939dc -> 0000ffffa36939e0 0 cycles P 0 ..... 53: 0000ffffa36939e0 -> 0000ffffa36939e4 0 cycles P 0 ..... 54: 0000ffffa36939f0 -> 0000ffffa3693b40 0 cycles P 0 ..... 55: 0000ffffa3693b48 -> 0000ffffa3693b4c 0 cycles P 0 ..... 56: 0000ffffa3693b54 -> 0000ffffa3693b58 0 cycles P 0 ..... 57: 0000ffffa3693b84 -> 0000ffffa3693b88 0 cycles P 0 ..... 58: 0000ffffa3693b9c -> 0000ffffa36939f4 0 cycles P 0 ..... 59: 0000ffffa3693a04 -> 0000ffffa3693a08 0 cycles P 0 ..... 60: 0000ffffa3693a0c -> 0000ffffa3693a10 0 cycles P 0 ..... 61: 0000ffffa3693a1c -> 0000ffffa3693ea4 0 cycles P 0 ..... 62: 0000ffffa3693ea8 -> 000000000040088c 0 cycles P 0 ..... 63: 0000000000400894 -> 0000000000400888 0 cycles P 0