gem5-users@gem5.org

The gem5 Users mailing list

View all threads

RV32 Dhrystone Benchmark Error: Syscall 403 not found

SJ
S J Satish Kumar
Sat, Jul 6, 2024 6:19 AM

Hello! My query consists of two parts. The first one being "How do I build
gem5.opt for a RISC-V 32 simulation". The build I have done now is
following a stack overflow solution wherein I made the following
replacements:

RiscvISA.py  95: riscv_type = Param.RiscvType("RV32","RV32 or RV64") #
RV64 --> RV32RiscvISA.py 103: elen =
Param.RiscvVectorElementLength(32, ....... ) # 64 --> 32

Following this replacement and build ( correct me if the build process was
wrong ), I had cross-compiled a dhrystone benchmark (src: Fleker's
Dhrystone benchmark
https://github.com/Fleker/memristor-research/blob/master/experiments/dhrystone.c)
using riscv32-unknown-elf-gcc 13.1.0 as follows:

riscv32-unknown-elf-gcc -march=rv32gc -mabi=ilp32d -static -o
dhrystone_rv32 dhrystone.c -lm -g

The simple-riscv.py config file in the learning_gem/part1 directory was
updated with the new binary's location and was simulated. The simulation
abruptly stops with a "fatal: Syscall 403 out of range" error
[image: Screenshot from 2024-07-06 11-14-14]
https://private-user-images.githubusercontent.com/96340698/346254200-23e4a5b8-4a89-424a-bdb2-f8a9e3975ece.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjAyNDcxMDMsIm5iZiI6MTcyMDI0NjgwMywicGF0aCI6Ii85NjM0MDY5OC8zNDYyNTQyMDAtMjNlNGE1YjgtNGE4OS00MjRhLWJkYjItZjhhOWUzOTc1ZWNlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MDYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzA2VDA2MjAwM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTNjOGQyMDcyZmY4ZjlmMWIxNzUxYWVlNTFmMmE5YTA1MTM3OTYxOTZkOTFhMGIyZWQ3YjUwMTFlMGUwYjc0YTUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.-dM3bAaP532J06dL68uiWST7mdwJEFjLE90rjwiERBM

An observation I made was that the config file was setting up an SEWorkload
which led me to look into the se_workload.cc file which had a
SyscallDescTable for SEWorkload::SyscallABI32 containing many ID's and
their respective command. The ID 403 was not present in this Table as well:

[image: Screenshot from 2024-07-06 11-19-30]
https://private-user-images.githubusercontent.com/96340698/346254397-cd64799b-8727-4e17-abeb-55846d68cffe.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjAyNDcxMDMsIm5iZiI6MTcyMDI0NjgwMywicGF0aCI6Ii85NjM0MDY5OC8zNDYyNTQzOTctY2Q2NDc5OWItODcyNy00ZTE3LWFiZWItNTU4NDZkNjhjZmZlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MDYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzA2VDA2MjAwM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTBlMDZmMzk3ZWMwYTU5ZmQ2ODJlZjdhMjk1ZDJkYTczZDdiZjc3MzdkZTdlZTA1MjRiYjVhNmJhMDhhOTI5MTEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.tBy0tZ67BHOhKSUJRqAAzKQxaZhNfNDCN8nwqB1bIrw

My objective is to run an RV32 simulation for the dhrystone benchmark.
Please correct me on the build method if its incorrect and also information
on the syscall error. Any help on this would be very helpful! Thank you in
advance!

Hello! My query consists of two parts. The first one being "How do I build gem5.opt for a RISC-V 32 simulation". The build I have done now is following a stack overflow solution wherein I made the following replacements: RiscvISA.py 95: riscv_type = Param.RiscvType("RV32","RV32 or RV64") # RV64 --> RV32RiscvISA.py 103: elen = Param.RiscvVectorElementLength(32, ....... ) # 64 --> 32 Following this replacement and build ( correct me if the build process was wrong ), I had cross-compiled a dhrystone benchmark (src: Fleker's Dhrystone benchmark <https://github.com/Fleker/memristor-research/blob/master/experiments/dhrystone.c>) using riscv32-unknown-elf-gcc 13.1.0 as follows: riscv32-unknown-elf-gcc -march=rv32gc -mabi=ilp32d -static -o dhrystone_rv32 dhrystone.c -lm -g The *simple-riscv.py* config file in the learning_gem/part1 directory was updated with the new binary's location and was simulated. The simulation abruptly stops with a "*fatal: Syscall 403 out of range*" error [image: Screenshot from 2024-07-06 11-14-14] <https://private-user-images.githubusercontent.com/96340698/346254200-23e4a5b8-4a89-424a-bdb2-f8a9e3975ece.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjAyNDcxMDMsIm5iZiI6MTcyMDI0NjgwMywicGF0aCI6Ii85NjM0MDY5OC8zNDYyNTQyMDAtMjNlNGE1YjgtNGE4OS00MjRhLWJkYjItZjhhOWUzOTc1ZWNlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MDYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzA2VDA2MjAwM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTNjOGQyMDcyZmY4ZjlmMWIxNzUxYWVlNTFmMmE5YTA1MTM3OTYxOTZkOTFhMGIyZWQ3YjUwMTFlMGUwYjc0YTUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.-dM3bAaP532J06dL68uiWST7mdwJEFjLE90rjwiERBM> An observation I made was that the config file was setting up an SEWorkload which led me to look into the se_workload.cc file which had a SyscallDescTable for SEWorkload::SyscallABI32 containing many ID's and their respective command. The ID 403 was not present in this Table as well: [image: Screenshot from 2024-07-06 11-19-30] <https://private-user-images.githubusercontent.com/96340698/346254397-cd64799b-8727-4e17-abeb-55846d68cffe.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjAyNDcxMDMsIm5iZiI6MTcyMDI0NjgwMywicGF0aCI6Ii85NjM0MDY5OC8zNDYyNTQzOTctY2Q2NDc5OWItODcyNy00ZTE3LWFiZWItNTU4NDZkNjhjZmZlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MDYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzA2VDA2MjAwM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTBlMDZmMzk3ZWMwYTU5ZmQ2ODJlZjdhMjk1ZDJkYTczZDdiZjc3MzdkZTdlZTA1MjRiYjVhNmJhMDhhOTI5MTEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.tBy0tZ67BHOhKSUJRqAAzKQxaZhNfNDCN8nwqB1bIrw> My objective is to run an RV32 simulation for the dhrystone benchmark. Please correct me on the build method if its incorrect and also information on the syscall error. Any help on this would be very helpful! Thank you in advance!
HN
Hoa Nguyen
Sat, Jul 6, 2024 7:27 AM

Hi,

It looks like the syscall 403 for rv32 has not been implemented in gem5
yet. I believe it is the clock_gettime64 syscall returning the time in
64-bit integer [1]. It looks like this syscall will be preferred over the
32-bit version moving forward.

I think it should be straightforward to implement this syscall as it has
been implemented for other ISAs [2]. It'll be great if you could make a
patch for this!

[1]
https://patchwork.kernel.org/project/qemu-devel/patch/5fa31f8938fb16e6d07d3ec10e6ddb7a4e274f79.1583518447.git.alistair.francis@wdc.com/

[2]
https://github.com/search?q=repo%3Agem5%2Fgem5%20clock_gettimeFunc&type=code

Regards,
Hoa Nguyen

On Fri, Jul 5, 2024, 23:21 S J Satish Kumar via gem5-users <
gem5-users@gem5.org> wrote:

Hello! My query consists of two parts. The first one being "How do I build
gem5.opt for a RISC-V 32 simulation". The build I have done now is
following a stack overflow solution wherein I made the following
replacements:

RiscvISA.py  95: riscv_type = Param.RiscvType("RV32","RV32 or RV64") # RV64 --> RV32RiscvISA.py 103: elen = Param.RiscvVectorElementLength(32, ....... ) # 64 --> 32

Following this replacement and build ( correct me if the build process was
wrong ), I had cross-compiled a dhrystone benchmark (src: Fleker's
Dhrystone benchmark
https://github.com/Fleker/memristor-research/blob/master/experiments/dhrystone.c)
using riscv32-unknown-elf-gcc 13.1.0 as follows:

riscv32-unknown-elf-gcc -march=rv32gc -mabi=ilp32d -static -o
dhrystone_rv32 dhrystone.c -lm -g

The simple-riscv.py config file in the learning_gem/part1 directory was
updated with the new binary's location and was simulated. The simulation
abruptly stops with a "fatal: Syscall 403 out of range" error
[image: Screenshot from 2024-07-06 11-14-14]
https://private-user-images.githubusercontent.com/96340698/346254200-23e4a5b8-4a89-424a-bdb2-f8a9e3975ece.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjAyNDcxMDMsIm5iZiI6MTcyMDI0NjgwMywicGF0aCI6Ii85NjM0MDY5OC8zNDYyNTQyMDAtMjNlNGE1YjgtNGE4OS00MjRhLWJkYjItZjhhOWUzOTc1ZWNlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MDYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzA2VDA2MjAwM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTNjOGQyMDcyZmY4ZjlmMWIxNzUxYWVlNTFmMmE5YTA1MTM3OTYxOTZkOTFhMGIyZWQ3YjUwMTFlMGUwYjc0YTUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.-dM3bAaP532J06dL68uiWST7mdwJEFjLE90rjwiERBM

An observation I made was that the config file was setting up an
SEWorkload which led me to look into the se_workload.cc file which had a
SyscallDescTable for SEWorkload::SyscallABI32 containing many ID's and
their respective command. The ID 403 was not present in this Table as well:

[image: Screenshot from 2024-07-06 11-19-30]
https://private-user-images.githubusercontent.com/96340698/346254397-cd64799b-8727-4e17-abeb-55846d68cffe.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjAyNDcxMDMsIm5iZiI6MTcyMDI0NjgwMywicGF0aCI6Ii85NjM0MDY5OC8zNDYyNTQzOTctY2Q2NDc5OWItODcyNy00ZTE3LWFiZWItNTU4NDZkNjhjZmZlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MDYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzA2VDA2MjAwM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTBlMDZmMzk3ZWMwYTU5ZmQ2ODJlZjdhMjk1ZDJkYTczZDdiZjc3MzdkZTdlZTA1MjRiYjVhNmJhMDhhOTI5MTEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.tBy0tZ67BHOhKSUJRqAAzKQxaZhNfNDCN8nwqB1bIrw

My objective is to run an RV32 simulation for the dhrystone benchmark.
Please correct me on the build method if its incorrect and also information
on the syscall error. Any help on this would be very helpful! Thank you in
advance!


gem5-users mailing list -- gem5-users@gem5.org
To unsubscribe send an email to gem5-users-leave@gem5.org

Hi, It looks like the syscall 403 for rv32 has not been implemented in gem5 yet. I believe it is the clock_gettime64 syscall returning the time in 64-bit integer [1]. It looks like this syscall will be preferred over the 32-bit version moving forward. I think it should be straightforward to implement this syscall as it has been implemented for other ISAs [2]. It'll be great if you could make a patch for this! [1] https://patchwork.kernel.org/project/qemu-devel/patch/5fa31f8938fb16e6d07d3ec10e6ddb7a4e274f79.1583518447.git.alistair.francis@wdc.com/ [2] https://github.com/search?q=repo%3Agem5%2Fgem5%20clock_gettimeFunc&type=code Regards, Hoa Nguyen On Fri, Jul 5, 2024, 23:21 S J Satish Kumar via gem5-users < gem5-users@gem5.org> wrote: > Hello! My query consists of two parts. The first one being "How do I build > gem5.opt for a RISC-V 32 simulation". The build I have done now is > following a stack overflow solution wherein I made the following > replacements: > > RiscvISA.py 95: riscv_type = Param.RiscvType("RV32","RV32 or RV64") # RV64 --> RV32RiscvISA.py 103: elen = Param.RiscvVectorElementLength(32, ....... ) # 64 --> 32 > > Following this replacement and build ( correct me if the build process was > wrong ), I had cross-compiled a dhrystone benchmark (src: Fleker's > Dhrystone benchmark > <https://github.com/Fleker/memristor-research/blob/master/experiments/dhrystone.c>) > using riscv32-unknown-elf-gcc 13.1.0 as follows: > > riscv32-unknown-elf-gcc -march=rv32gc -mabi=ilp32d -static -o > dhrystone_rv32 dhrystone.c -lm -g > > The *simple-riscv.py* config file in the learning_gem/part1 directory was > updated with the new binary's location and was simulated. The simulation > abruptly stops with a "*fatal: Syscall 403 out of range*" error > [image: Screenshot from 2024-07-06 11-14-14] > <https://private-user-images.githubusercontent.com/96340698/346254200-23e4a5b8-4a89-424a-bdb2-f8a9e3975ece.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjAyNDcxMDMsIm5iZiI6MTcyMDI0NjgwMywicGF0aCI6Ii85NjM0MDY5OC8zNDYyNTQyMDAtMjNlNGE1YjgtNGE4OS00MjRhLWJkYjItZjhhOWUzOTc1ZWNlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MDYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzA2VDA2MjAwM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTNjOGQyMDcyZmY4ZjlmMWIxNzUxYWVlNTFmMmE5YTA1MTM3OTYxOTZkOTFhMGIyZWQ3YjUwMTFlMGUwYjc0YTUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.-dM3bAaP532J06dL68uiWST7mdwJEFjLE90rjwiERBM> > > An observation I made was that the config file was setting up an > SEWorkload which led me to look into the se_workload.cc file which had a > SyscallDescTable for SEWorkload::SyscallABI32 containing many ID's and > their respective command. The ID 403 was not present in this Table as well: > > [image: Screenshot from 2024-07-06 11-19-30] > <https://private-user-images.githubusercontent.com/96340698/346254397-cd64799b-8727-4e17-abeb-55846d68cffe.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjAyNDcxMDMsIm5iZiI6MTcyMDI0NjgwMywicGF0aCI6Ii85NjM0MDY5OC8zNDYyNTQzOTctY2Q2NDc5OWItODcyNy00ZTE3LWFiZWItNTU4NDZkNjhjZmZlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MDYlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzA2VDA2MjAwM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTBlMDZmMzk3ZWMwYTU5ZmQ2ODJlZjdhMjk1ZDJkYTczZDdiZjc3MzdkZTdlZTA1MjRiYjVhNmJhMDhhOTI5MTEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.tBy0tZ67BHOhKSUJRqAAzKQxaZhNfNDCN8nwqB1bIrw> > > My objective is to run an RV32 simulation for the dhrystone benchmark. > Please correct me on the build method if its incorrect and also information > on the syscall error. Any help on this would be very helpful! Thank you in > advance! > _______________________________________________ > gem5-users mailing list -- gem5-users@gem5.org > To unsubscribe send an email to gem5-users-leave@gem5.org >