Dear Hossein,
The error that you are seeing appears to be caused by the kernel trying to access devices which are not at the expected location in the memory map. If a device cannot be found, gem5 with throw the error you have below. Therefore, you should see this error by running the command without WA. For example, try running the following: ./build/ARM/gem5.opt configs/example/fs.py --kernel=/home/hossein/gem5_images/binaries/vmlinux-android --disk-image=/home/hossein/gem5_images/disks/android_image.img --cpu-type=AtomicSimpleCPU --frame-capture -n 1 --caches --l2cache --l1d_size=16kB --l1i_size=16kB --l2_assoc=16 --l2_size=2MB --mem-size=256MB --mem-type=LPDDR3_1600_x32 --os-type=android-kitkat I would expect you to see the same error message as when you are running with WA. I notice that you are not specifying a DTB when running the simulation. The DTB informs the kernel about the devices present, and their locations in the memory map. You should be able to specify a "--dtb-filename=<path/to/dtb>" argument. Please try this outside of WA first to see if you can get it to work there. You should be able to generate a DTB from the kernel sources. Please see http://gem5.org/ARM_Linux_Kernel#32_bit_kernel_.28AArch32.29 for more information. Please let me know if you get this working, or if you have further issues. Regards, Sascha ________________________________ From: gem5-users <gem5-users-boun...@gem5.org> on behalf of Hossein Golestani <hosse...@umich.edu> Sent: 22 November 2016 22:52:37 To: gem5-users@gem5.org Subject: [gem5-users] Android boot problem with workload automation Dear gem5 maintainers, I'm having difficulty booting Android Kitkat on gem5 and using ARM workload automation tool. I'm going to completely explain my problem here, so excuse me for this long message. I have prepared the Android file system and compiled the kernel according to the instructions on this page: http://www.gem5.org/Android_KitKat (I've done all the things up to the 'Android Runtime Configuration' section completely, but since the instructions in the mentioned section is somewhat vague, I didn't have an idea how to follow them). According to these pages: http://www.gem5.org/WA-gem5 http://www.mail-archive.com/gem5-users@gem5.org/msg13218.html I prepared the gem5 stuff for integration with ARM workload automation and prepared the following agenda file (my_agenda.yaml): config: device: gem5_android device_config: gem5_binary: "./build/ARM/gem5.opt" gem5_args: "configs/example/fs.py --kernel=/home/hossein/gem5_images/binaries/vmlinux-android --disk-image=/home/hossein/gem5_images/disks/android_image.img --cpu-type=AtomicSimpleCPU --frame-capture -n 1 --caches --l2cache --l1d_size=16kB --l1i_size=16kB --l2_assoc=16 --l2_size=2MB --mem-size=256MB --mem-type=LPDDR3_1600_x32 --os-type=android-kitkat" gem5_vio_args: "--workload-automation-vio={}" temp_dir: "/tmp" checkpoint: True run_delay: 10 core_names: ['a15'] reboot_policy: never result_processors: [~sqlite] instrumentation: [~cpufreq] workloads: - id: dhrystone workload_name: dhrystone iterations: 1 Note that 'vmlinux-android' and 'android_image.img' are the files that I generated according to the instructions. Then, in the gem5 installation root directory, I executed the workload. Here's what happened in the command line: hossein@mercury:~/gem5$ wa run -f my_agenda.yaml INFO Removing existing output directory. INFO Creating output directory. INFO Initializing INFO Running workloads INFO Creating temporary directory: /tmp/wa_3 INFO Starting the gem5 simulator INFO Connecting to device INFO Connecting to the gem5 simulation on port 3463 INFO Connected! Waiting for prompt... CRITICAL File "/usr/local/lib/python2.7/dist-packages/wlauto/core/entry_point.py", line 66, in main CRITICAL sys.exit(command.execute(args)) CRITICAL File "/usr/local/lib/python2.7/dist-packages/wlauto/commands/run.py", line 104, in execute CRITICAL executor.execute(agenda, selectors={'ids': args.only_run_ids}) CRITICAL File "/usr/local/lib/python2.7/dist-packages/wlauto/core/execution.py", line 346, in execute CRITICAL runner.run() CRITICAL File "/usr/local/lib/python2.7/dist-packages/wlauto/core/execution.py", line 484, in run CRITICAL self._initialize_run() CRITICAL File "/usr/local/lib/python2.7/dist-packages/wlauto/core/execution.py", line 537, in _initialize_run CRITICAL self._connect_to_device() CRITICAL File "/usr/local/lib/python2.7/dist-packages/wlauto/core/execution.py", line 570, in _connect_to_device CRITICAL self.device.connect() CRITICAL File "/usr/local/lib/python2.7/dist-packages/wlauto/common/gem5/device.py", line 207, in connect CRITICAL self.connect_gem5() CRITICAL File "/usr/local/lib/python2.7/dist-packages/wlauto/common/gem5/device.py", line 271, in connect_gem5 CRITICAL self.sckt.expect([r'# ', self.sckt.UNIQUE_PROMPT, r'\[PEXPECT\][\\\$\#]+ '], timeout=60) CRITICAL File "/usr/local/lib/python2.7/dist-packages/pexpect/spawnbase.py", line 321, in expect CRITICAL timeout, searchwindowsize, async) CRITICAL File "/usr/local/lib/python2.7/dist-packages/pexpect/spawnbase.py", line 345, in expect_list CRITICAL return exp.expect_loop(timeout) CRITICAL File "/usr/local/lib/python2.7/dist-packages/pexpect/expect.py", line 105, in expect_loop CRITICAL return self.eof(e) CRITICAL File "/usr/local/lib/python2.7/dist-packages/pexpect/expect.py", line 50, in eof CRITICAL raise EOF(msg) CRITICAL CRITICAL EOF(End Of File (EOF). Exception style platform. CRITICAL <wlauto.utils.ssh.TelnetConnection object at 0x7f0c3b7e2150> CRITICAL command: /usr/bin/telnet CRITICAL args: ['/usr/bin/telnet', '-l', 'None', 'mercury', '3463'] CRITICAL buffer (last 100 chars): '' CRITICAL before (last 100 chars): 'erface driver hub\r\r\nusbcore: registered new device driver usb\r\r\nConnection closed by foreign host.\r\n' CRITICAL after: <class 'pexpect.exceptions.EOF'> CRITICAL match: None CRITICAL match_index: None CRITICAL exitstatus: 1 CRITICAL flag_eof: True CRITICAL pid: 4935 CRITICAL child_fd: 9 CRITICAL closed: False CRITICAL timeout: 30 CRITICAL delimiter: <class 'pexpect.exceptions.EOF'> CRITICAL logfile: None CRITICAL logfile_read: None CRITICAL logfile_send: None CRITICAL maxread: 2000 CRITICAL ignorecase: False CRITICAL searchwindowsize: None CRITICAL delaybeforesend: 0.05 CRITICAL delayafterclose: 0.1 CRITICAL delayafterterminate: 0.1 CRITICAL searcher: searcher_re: CRITICAL 0: re.compile("# ") CRITICAL 1: re.compile("\[PEXPECT\][\$\#] ") CRITICAL 2: re.compile("\[PEXPECT\][\\\$\#]+ ")) ARM WA saves stderr, stdout, and system.terminal of gem5 into a particular folder. Here's the contents of stderr: warn: DRAM device capacity (512 Mbytes) does not match the address range assigned (256 Mbytes) Listening for system connection on port 5907 Listening for system connection on port 3463 0: system.remote_gdb.listener: listening for remote gdb #0 on port 7007 warn: ClockedObject: More than one power state change request encountered within the same simulation tick warn: Existing EnergyCtrl, but no enabled DVFSHandler found. warn: The csselr register isn't implemented. warn: The ccsidr register isn't implemented and always reads as 0. warn: instruction 'mcr dcisw' unimplemented warn: Not doing anything for miscreg ACTLR warn: Not doing anything for write of miscreg ACTLR warn: instruction 'mcr dccmvau' unimplemented warn: instruction 'mcr icimvau' unimplemented warn: instruction 'mcr bpiallis' unimplemented warn: The clidr register always reports 0 caches. warn: clidr LoUIS field of 0b001 to match current ARM implementations. warn: instruction 'mcr icialluis' unimplemented warn: instruction 'mcr dccimvac' unimplemented warn: Tried to read RealView I/O at offset 0x60 that doesn't exist warn: Tried to read RealView I/O at offset 0x48 that doesn't exist warn: Tried to write RVIO at offset 0xa8 (data 0) that doesn't exist warn: Tried to write RVIO at offset 0xa8 (data 0) that doesn't exist warn: Tried to write RVIO at offset 0xa8 (data 0) that doesn't exist warn: Tried to write RVIO at offset 0xa8 (data 0) that doesn't exist warn: Tried to write RVIO at offset 0xa8 (data 0) that doesn't exist warn: Tried to write RVIO at offset 0xa8 (data 0) that doesn't exist warn: Tried to write RVIO at offset 0xa8 (data 0) that doesn't exist warn: Tried to write RVIO at offset 0xa8 (data 0) that doesn't exist warn: Tried to write RVIO at offset 0xa8 (data 0) that doesn't exist warn: CP14 unimplemented crn[1], opc1[0], crm[3], opc2[4] warn: CP14 unimplemented crn[1], opc1[0], crm[0], opc2[4] warn: CP14 unimplemented crn[0], opc1[0], crm[7], opc2[0] fatal: Unable to find destination for addr 0x1c030000 on system.iobus @ tick 101175788500 [findPort:build/ARM/mem/xbar.cc, line 358] Memory Usage: 624608 KBytes Program aborted at tick 101175788500 --- BEGIN LIBC BACKTRACE --- ./build/ARM/gem5.opt(_Z15print_backtracev+0x28)[0x91dab8] ./build/ARM/gem5.opt(_Z12abortHandleri+0x46)[0x93eea6] /lib/x86_64-linux-gnu/libpthread.so.0(+0x113e0)[0x7f0ddafac3e0] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x38)[0x7f0dd99b5428] /lib/x86_64-linux-gnu/libc.so.6(abort+0x16a)[0x7f0dd99b702a] ./build/ARM/gem5.opt(_Z15__exit_epilogueiPKcS0_iS0_+0x440)[0x1094360] ./build/ARM/gem5.opt(_Z14__exit_messageIJmNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEvPKciS7_S7_iS7_DpRKT_+0x1c1)[0xc0a2a1] ./build/ARM/gem5.opt(_ZN8BaseXBar8findPortEm+0x344)[0xc21b34] ./build/ARM/gem5.opt(_ZN15NoncoherentXBar10recvAtomicEP6Packets+0x172)[0xbeb792] ./build/ARM/gem5.opt(_ZN6Bridge15BridgeSlavePort10recvAtomicEP6Packet+0x24)[0xbaf864] ./build/ARM/gem5.opt(_ZN12CoherentXBar10recvAtomicEP6Packets+0x6f3)[0xbc2303] ./build/ARM/gem5.opt(_ZN5Cache10recvAtomicEP6Packet+0x517)[0xc66a77] ./build/ARM/gem5.opt(_ZN12CoherentXBar10recvAtomicEP6Packets+0x6f3)[0xbc2303] ./build/ARM/gem5.opt(_ZN5Cache10recvAtomicEP6Packet+0x517)[0xc66a77] ./build/ARM/gem5.opt(_ZN15AtomicSimpleCPU8writeMemEPhjm5FlagsIjEPm+0x3a4)[0xb32744] ./build/ARM/gem5.opt(_ZN17SimpleExecContext8writeMemEPhjm5FlagsIjEPm+0x29)[0xb3e759] ./build/ARM/gem5.opt(_Z14writeMemAtomicI11ExecContextjESt10shared_ptrI9FaultBaseEPT_PN5Trace10InstRecordERKT0_m5FlagsIjEPm+0x5c)[0x193b9bc] ./build/ARM/gem5.opt(_ZNK10ArmISAInst28STORE_IMM_AY_PN_SN_UN_WN_SZ47executeEP11ExecContextPN5Trace10InstRecordE+0x1a7)[0x18f6467] ./build/ARM/gem5.opt(_ZN15AtomicSimpleCPU4tickEv+0x2af)[0xb30edf] ./build/ARM/gem5.opt(_ZN10EventQueue10serviceOneEv+0xb1)[0x92d291] ./build/ARM/gem5.opt(_Z9doSimLoopP10EventQueue+0x50)[0x963fe0] ./build/ARM/gem5.opt(_Z8simulatem+0x203)[0x9645b3] ./build/ARM/gem5.opt[0xe90192] /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x7852)[0x7f0ddb276552] /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x85c)[0x7f0ddb3a001c] /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x6ffd)[0x7f0ddb275cfd] /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x7124)[0x7f0ddb275e24] /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x7124)[0x7f0ddb275e24] /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x85c)[0x7f0ddb3a001c] /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalCode+0x19)[0x7f0ddb26eb89] /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalFrameEx+0x613b)[0x7f0ddb274e3b] /usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0(PyEval_EvalCodeEx+0x85c)[0x7f0ddb3a001c] --- END LIBC BACKTRACE --- It seems that the source of my problem can be understood from this error message: fatal: Unable to find destination for addr 0x1c030000 on system.iobus @ tick 101175788500 [findPort:build/ARM/mem/xbar.cc, line 358] I've spent so much time to reach this point because the gem5 documentation for Android and ARM WA is not clear enough. I'd appreciate it if you help me on this issue. Regards, Hossein Golestani IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
_______________________________________________ gem5-users mailing list gem5-users@gem5.org http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users