[gem5-dev] GEM5 Running SE Mode Does not terminated
I am running benchmark with gem5 but it does not terminate itself. I waited approximately 30 minutes but it did not end so I interrupted process. Output emin@emin-S300CA://home/emin/gem5$ ./build/ARM/gem5.opt configs/example/se.py -c sobel -o 4 gem5 Simulator System. http://gem5.org gem5 is copyrighted software; use the --copyright option for details. gem5 compiled Jan 13 2017 02:38:42 gem5 started Jan 13 2017 03:36:28 gem5 executing on emin-S300CA, pid 11490 command line: ./build/ARM/gem5.opt configs/example/se.py -c sobel -o 4 Global frequency set at 1 ticks per second warn: DRAM device capacity (8192 Mbytes) does not match the address range assigned (512 Mbytes) 0: system.remote_gdb.listener: listening for remote gdb #0 on port 7000 warn: ClockedObject: More than one power state change request encountered within the same simulation tick REAL SIMULATION info: Entering event queue @ 0. Starting simulation... warn: readlink() called on '/proc/self/exe' may yield unexpected results in various settings. Returning '/home/emin/gem5/sobel' info: Increasing stack size by one page. Sobel: input/output matrix has been allocated. ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Review Request 3780: riscv: Fix crash when syscall argument reg index is too high
--- This is an automatically generated e-mail. To reply, visit: http://reviews.gem5.org/r/3780/ --- Review request for Default. Repository: gem5 Description --- Changeset 11795:44b4eec15cd7 --- riscv: Fix crash when syscall argument reg index is too high By default, doSyscall gets the values of six registers to be used for system call arguments. RISC-V, by convention, only has four. Because RISC-V's implementation of these indices is as arrays of integers rather than as base indices plus offsets, trying to get the fifth argument register's value will cause a crash. This patch fixes that by providing the fourth register's value for any index higher than 3. Diffs - src/arch/riscv/process.cc 97eebddaae84 Diff: http://reviews.gem5.org/r/3780/diff/ Testing --- Thanks, Alec Roelke ___ gem5-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
Re: [gem5-dev] changeset in gem5: syscall_emul: add support for x86 statfs syst...
We do not have access to BSD or OSX, so unless somebody can give Brandon access to such a machine he would have no way to test any potential fix. From a high level, the only easy solution I see is to guard OS-specific code with #ifdefs or something similar. It seems that if we are going to support more advanced OS features and syscalls in SE mode a fundamental refactoring of SE code may be necessary, and will require help from everybody. Brandon has already done a lot down this path, adding support for dynamic linking, pthreads, and has done a lot of refactoring here. Could somebody who is more familiar with BSD, and has access, try to come up with a fix? Brandon is merely adding a feature here, and the fact that it breaks support for some other feature is an artifact of the simulator design, and I don't want to put the onus on individual contributors to fix fundamental flaws when adding useful features. Hopefully we can come up with a solution as a community. -Original Message- From: gem5-dev [mailto:gem5-dev-boun...@gem5.org] On Behalf Of Andreas Hansson Sent: Thursday, January 12, 2017 12:45 AM To: gem5 Developer List; Potter, Brandon Cc: gem5-...@m5sim.org Subject: Re: [gem5-dev] changeset in gem5: syscall_emul: add support for x86 statfs syst... Hi Brandon, Could you have a look at this and come up with some form of solution so that gem5 compiles on BSD and OSX as well? Thanks, Andreas On 22/12/2016, 10:30, "gem5-dev on behalf of Bjoern A. Zeeb" wrote: >On 15 Dec 2016, at 18:17, Brandon Potter wrote: > >> changeset deaf82fd2e7c in /z/repo/gem5 >> details: http://repo.gem5.org/gem5?cmd=changeset;node=deaf82fd2e7c >> description: >> syscall_emul: add support for x86 statfs system calls >> > >Does this compile on anything but Linux? statfs.h doesn’t exists >elsewhere I guess? statfs is historic and still more or less OS >specific. > >Did you actually implement statfs, or is this statvfs as in >http://pubs.opengroup.org/onlinepubs/95399/basedefs/sys/statvfs.h.h >tml > >? Not sure what the linux syscall does there? > > > >> diffstat: >> >> src/arch/x86/linux/linux.hh | 18 ++ >> src/arch/x86/linux/process.cc | 2 +- >> src/sim/syscall_emul.hh | 32 ++-- >> 3 files changed, 49 insertions(+), 3 deletions(-) >> >> diffs (110 lines): >> >> diff -r 104a404d426e -r deaf82fd2e7c src/arch/x86/linux/linux.hh >> --- a/src/arch/x86/linux/linux.hhThu Dec 15 13:14:41 2016 -0500 >> +++ b/src/arch/x86/linux/linux.hhThu Dec 15 13:16:03 2016 -0500 >> @@ -67,6 +67,24 @@ >> int64_t unused0[3]; >> } tgt_stat64; >> >> +typedef struct { >> +long val[2]; >> +} tgt_fsid; >> + >> +typedef struct { >> +long f_type; >> +long f_bsize; >> +long f_blocks; >> +long f_bfree; >> +long f_bavail; >> +long f_files; >> +long f_ffree; >> +tgt_fsid f_fsid; >> +long f_namelen; >> +long f_frsize; >> +long f_spare[5]; >> +} tgt_statfs; >> + >> static const int TGT_SIGHUP = 0x01; >> static const int TGT_SIGINT = 0x02; >> static const int TGT_SIGQUIT= 0x03; >> diff -r 104a404d426e -r deaf82fd2e7c src/arch/x86/linux/process.cc >> --- a/src/arch/x86/linux/process.ccThu Dec 15 13:14:41 2016 -0500 >> +++ b/src/arch/x86/linux/process.ccThu Dec 15 13:16:03 2016 -0500 >> @@ -355,7 +355,7 @@ >> /* 134 */ SyscallDesc("uselib", unimplementedFunc), >> /* 135 */ SyscallDesc("personality", unimplementedFunc), >> /* 136 */ SyscallDesc("ustat", unimplementedFunc), >> -/* 137 */ SyscallDesc("statfs", unimplementedFunc), >> +/* 137 */ SyscallDesc("statfs", statfsFunc), >> /* 138 */ SyscallDesc("fstatfs", unimplementedFunc), >> /* 139 */ SyscallDesc("sysfs", unimplementedFunc), >> /* 140 */ SyscallDesc("getpriority", unimplementedFunc), diff -r >> 104a404d426e -r deaf82fd2e7c src/sim/syscall_emul.hh >> --- a/src/sim/syscall_emul.hhThu Dec 15 13:14:41 2016 -0500 >> +++ b/src/sim/syscall_emul.hhThu Dec 15 13:16:03 2016 -0500 >> @@ -62,6 +62,7 @@ >> #include >> #include >> #include >> +#include >> #include >> #include >> #include >> @@ -451,6 +452,7 @@ >> // >> >> / >> / >> >> +typedef struct statfs hst_statfs; >> #if NO_STAT64 >> typedef struct stat hst_stat; >> typedef struct stat hst_stat64; >> @@ -556,6 +558,32 @@ >> tgt.copyOut(mem); >> } >> >> +template >> +static void >> +copyOutStatfsBuf(SETranslatingPortProxy , Addr addr, >> + hst_statfs *host) >> +{ >> +TypedBufferArg tgt(addr); >> + >> +#if defined(__OpenBSD__) || defined(__APPLE__) || >> defined(__FreeBSD__) >> +tgt->f_type = 0; >> +#else >> +
[gem5-dev] Header order issues
Hi Everyone, Brandon’s recent header reorder patch (thanks Brandon!) uncovered some issues in the style guide. The style guide currently mandates that the primary header (foo.hh in the case of foo.cc) is included first, then Python.hh (if needed), then other header. This turns out to be a bit troublesome in some cases. Our internal CI system started having trouble some issues because one of the Python headers seem to define _POSIX_C_SOURCE and _XOPEN_SOURCE despite these being defined already. This causes a warning which ends up being treated as an error. This issue doesn’t seem to affect all Python versions though. I would suggest that we change the style guide to mandate that Python.h is included before the main header where applicable. That /should/ solve the problem. Would everyone be fine with that? Cheers, Andreas 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-dev mailing list gem5-dev@gem5.org http://m5sim.org/mailman/listinfo/gem5-dev
[gem5-dev] Cron <m5test@zizzer> /z/m5/regression/do-regression quick
* build/ALPHA/tests/opt/quick/se/00.hello/alpha/linux/minor-timing: CHANGED! * build/ALPHA/tests/opt/quick/se/01.hello-2T-smt/alpha/linux/o3-timing-mt: CHANGED! * build/ALPHA/tests/opt/quick/se/00.hello/alpha/linux/o3-timing: CHANGED! * build/MIPS/tests/opt/quick/se/00.hello/mips/linux/o3-timing: CHANGED! * build/POWER/tests/opt/quick/se/00.hello/power/linux/o3-timing: CHANGED! * build/SPARC/tests/opt/quick/se/02.insttest/sparc/linux/o3-timing: CHANGED! * build/SPARC/tests/opt/quick/se/40.m5threads-test-atomic/sparc/linux/o3-timing-mp: CHANGED! * build/X86/tests/opt/quick/se/00.hello/x86/linux/o3-timing: CHANGED! * build/ARM/tests/opt/quick/se/00.hello/arm/linux/o3-timing-checker: CHANGED! * build/ARM/tests/opt/quick/se/00.hello/arm/linux/o3-timing: CHANGED! * build/ARM/tests/opt/quick/se/00.hello/arm/linux/minor-timing: CHANGED! * build/RISCV/tests/opt/quick/se/00.hello/riscv/linux/o3-timing: CHANGED! * build/RISCV/tests/opt/quick/se/00.hello/riscv/linux/minor-timing: CHANGED! * build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64a/minor-timing: CHANGED! * build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64d/minor-timing: CHANGED! * build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64i/simple-timing: CHANGED! * build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64f/minor-timing: CHANGED! * build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64m/minor-timing: CHANGED! * build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64i/simple-timing-ruby: CHANGED! * build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64m/o3-timing: CHANGED! * build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64f/o3-timing: CHANGED! * build/RISCV/tests/opt/quick/se/02.insttest/riscv/linux-rv64i/minor-timing: CHANGED! * build/ALPHA/tests/opt/quick/se/00.hello/alpha/linux/simple-atomic: passed. * build/ALPHA/tests/opt/quick/se/00.hello/alpha/linux/simple-timing-ruby: passed. * build/ALPHA/tests/opt/quick/se/03.learning-gem5/alpha/linux/learning-gem5-p1-simple: passed. * build/ALPHA/tests/opt/quick/se/00.hello/alpha/linux/simple-timing: passed. * build/ALPHA/tests/opt/quick/se/03.learning-gem5/alpha/linux/learning-gem5-p1-two-level: passed. * build/ALPHA/tests/opt/quick/fs/10.linux-boot/alpha/linux/tsunami-simple-atomic: passed. * build/ALPHA/tests/opt/quick/fs/10.linux-boot/alpha/linux/tsunami-simple-atomic-dual: passed. * build/ALPHA/tests/opt/quick/fs/10.linux-boot/alpha/linux/tsunami-simple-timing: passed. * build/ALPHA/tests/opt/quick/se/50.memtest/alpha/linux/memtest-ruby: passed. * build/ALPHA/tests/opt/quick/fs/10.linux-boot/alpha/linux/tsunami-simple-timing-dual: passed. * build/MIPS/tests/opt/quick/se/03.learning-gem5/mips/linux/learning-gem5-p1-simple: passed. * build/MIPS/tests/opt/quick/se/03.learning-gem5/mips/linux/learning-gem5-p1-two-level: passed. * build/MIPS/tests/opt/quick/se/00.hello/mips/linux/simple-atomic: passed. * build/MIPS/tests/opt/quick/se/00.hello/mips/linux/simple-timing: passed. * build/MIPS/tests/opt/quick/se/00.hello/mips/linux/simple-timing-ruby: passed. * build/NULL/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby: passed. * build/NULL/tests/opt/quick/se/70.tgen/null/none/tgen-simple-mem: passed. * build/NULL/tests/opt/quick/se/50.memtest/null/none/memtest-filter: passed. * build/NULL/tests/opt/quick/se/50.memtest/null/none/memtest: passed. * build/NULL/tests/opt/quick/se/70.tgen/null/none/tgen-dram-ctrl: passed. * build/NULL/tests/opt/quick/se/51.memcheck/null/none/memcheck: passed. * build/NULL_MOESI_hammer/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MOESI_hammer: passed. * build/NULL_MESI_Two_Level/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MESI_Two_Level: passed. * build/NULL_MOESI_CMP_directory/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MOESI_CMP_directory: passed. * build/ALPHA/tests/opt/quick/fs/80.netperf-stream/alpha/linux/twosys-tsunami-simple-atomic: passed. * build/NULL_MOESI_CMP_token/tests/opt/quick/se/60.rubytest/null/none/rubytest-ruby-MOESI_CMP_token: passed. * build/POWER/tests/opt/quick/se/00.hello/power/linux/simple-atomic: passed. * build/SPARC/tests/opt/quick/se/00.hello/sparc/linux/simple-timing: passed. * build/SPARC/tests/opt/quick/se/00.hello/sparc/linux/simple-timing-ruby: passed. * build/SPARC/tests/opt/quick/se/03.learning-gem5/sparc/linux/learning-gem5-p1-simple: passed. * build/SPARC/tests/opt/quick/se/02.insttest/sparc/linux/simple-atomic: passed. * build/SPARC/tests/opt/quick/se/40.m5threads-test-atomic/sparc/linux/simple-timing-mp: passed. * build/SPARC/tests/opt/quick/se/40.m5threads-test-atomic/sparc/linux/simple-atomic-mp: passed. * build/SPARC/tests/opt/quick/se/00.hello/sparc/linux/simple-atomic:
Re: [gem5-dev] changeset in gem5: syscall_emul: add support for x86 statfs syst...
Hi Brandon, Could you have a look at this and come up with some form of solution so that gem5 compiles on BSD and OSX as well? Thanks, Andreas On 22/12/2016, 10:30, "gem5-dev on behalf of Bjoern A. Zeeb"wrote: >On 15 Dec 2016, at 18:17, Brandon Potter wrote: > >> changeset deaf82fd2e7c in /z/repo/gem5 >> details: http://repo.gem5.org/gem5?cmd=changeset;node=deaf82fd2e7c >> description: >> syscall_emul: add support for x86 statfs system calls >> > >Does this compile on anything but Linux? statfs.h doesn’t exists >elsewhere I guess? statfs is historic and still more or less OS >specific. > >Did you actually implement statfs, or is this statvfs as in >http://pubs.opengroup.org/onlinepubs/95399/basedefs/sys/statvfs.h.html > >? Not sure what the linux syscall does there? > > > >> diffstat: >> >> src/arch/x86/linux/linux.hh | 18 ++ >> src/arch/x86/linux/process.cc | 2 +- >> src/sim/syscall_emul.hh | 32 ++-- >> 3 files changed, 49 insertions(+), 3 deletions(-) >> >> diffs (110 lines): >> >> diff -r 104a404d426e -r deaf82fd2e7c src/arch/x86/linux/linux.hh >> --- a/src/arch/x86/linux/linux.hhThu Dec 15 13:14:41 2016 -0500 >> +++ b/src/arch/x86/linux/linux.hhThu Dec 15 13:16:03 2016 -0500 >> @@ -67,6 +67,24 @@ >> int64_t unused0[3]; >> } tgt_stat64; >> >> +typedef struct { >> +long val[2]; >> +} tgt_fsid; >> + >> +typedef struct { >> +long f_type; >> +long f_bsize; >> +long f_blocks; >> +long f_bfree; >> +long f_bavail; >> +long f_files; >> +long f_ffree; >> +tgt_fsid f_fsid; >> +long f_namelen; >> +long f_frsize; >> +long f_spare[5]; >> +} tgt_statfs; >> + >> static const int TGT_SIGHUP = 0x01; >> static const int TGT_SIGINT = 0x02; >> static const int TGT_SIGQUIT= 0x03; >> diff -r 104a404d426e -r deaf82fd2e7c src/arch/x86/linux/process.cc >> --- a/src/arch/x86/linux/process.ccThu Dec 15 13:14:41 2016 -0500 >> +++ b/src/arch/x86/linux/process.ccThu Dec 15 13:16:03 2016 -0500 >> @@ -355,7 +355,7 @@ >> /* 134 */ SyscallDesc("uselib", unimplementedFunc), >> /* 135 */ SyscallDesc("personality", unimplementedFunc), >> /* 136 */ SyscallDesc("ustat", unimplementedFunc), >> -/* 137 */ SyscallDesc("statfs", unimplementedFunc), >> +/* 137 */ SyscallDesc("statfs", statfsFunc), >> /* 138 */ SyscallDesc("fstatfs", unimplementedFunc), >> /* 139 */ SyscallDesc("sysfs", unimplementedFunc), >> /* 140 */ SyscallDesc("getpriority", unimplementedFunc), >> diff -r 104a404d426e -r deaf82fd2e7c src/sim/syscall_emul.hh >> --- a/src/sim/syscall_emul.hhThu Dec 15 13:14:41 2016 -0500 >> +++ b/src/sim/syscall_emul.hhThu Dec 15 13:16:03 2016 -0500 >> @@ -62,6 +62,7 @@ >> #include >> #include >> #include >> +#include >> #include >> #include >> #include >> @@ -451,6 +452,7 @@ >> // >> // >> >> +typedef struct statfs hst_statfs; >> #if NO_STAT64 >> typedef struct stat hst_stat; >> typedef struct stat hst_stat64; >> @@ -556,6 +558,32 @@ >> tgt.copyOut(mem); >> } >> >> +template >> +static void >> +copyOutStatfsBuf(SETranslatingPortProxy , Addr addr, >> + hst_statfs *host) >> +{ >> +TypedBufferArg tgt(addr); >> + >> +#if defined(__OpenBSD__) || defined(__APPLE__) || >> defined(__FreeBSD__) >> +tgt->f_type = 0; >> +#else >> +tgt->f_type = TheISA::htog(host->f_type); >> +#endif >> +tgt->f_bsize = TheISA::htog(host->f_bsize); >> +tgt->f_blocks = TheISA::htog(host->f_blocks); >> +tgt->f_bfree = TheISA::htog(host->f_bfree); >> +tgt->f_bavail = TheISA::htog(host->f_bavail); >> +tgt->f_files = TheISA::htog(host->f_files); >> +tgt->f_ffree = TheISA::htog(host->f_ffree); >> +memcpy(>f_fsid, >f_fsid, sizeof(host->f_fsid)); >> +tgt->f_namelen = TheISA::htog(host->f_namelen); >> +tgt->f_frsize = TheISA::htog(host->f_frsize); >> +memcpy(>f_spare, >f_spare, sizeof(host->f_spare)); >> + >> +tgt.copyOut(mem); >> +} >> + >> /// Target ioctl() handler. For the most part, programs call ioctl() >> /// only to find out if their stdout is a tty, to determine whether >> to >> /// do line or block buffering. We always claim that output fds are >> @@ -1156,7 +1184,7 @@ >> if (result < 0) >> return -errno; >> >> -OS::copyOutStatfsBuf(tc->getMemProxy(), bufPtr, ); >> +copyOutStatfsBuf(tc->getMemProxy(), bufPtr, ); >> >> return 0; >> } >> @@ -1182,7 +1210,7 @@ >> if (result < 0) >> return -errno; >> >> -OS::copyOutStatfsBuf(tc->getMemProxy(), bufPtr, ); >> +copyOutStatfsBuf(tc->getMemProxy(), bufPtr, ); >> >> return 0; >> } >> ___ >> gem5-dev