Hi Alec,

Thanks for the reply.
For the mhart id issue, could you please point out the file which
implements mhart id?
I will give a shot to understand the necessary files.
If you can let me know, I can send a pull request regarding the same which
you can check and merge.
Also, do you plan to implement RISC-V FS mode? If yes, I wish to help by
contributing to gem5.

Please let me know how to get started.

Thanks and regards,
Rishabh Jain



On Thu, Mar 7, 2019 at 8:19 AM Alec Roelke <ar...@virginia.edu> wrote:

> When gem5 runs in SE mode, it is intended to mainly run user-level code,
> which higher-privilege code that executes during system calls offloaded to
> the host.  The privileged instructions do have definitions and at least
> partial implementations, and you can run them in SE mode because privilege
> checking hasn't been implemented yet (and would only matter for FS mode
> anyway).
>
> You should be able to run garnet2.0 and ruby, since they are separate from
> the ISA definitions and I didn't see anything in the ISAs that needs to be
> implemented for them while poking around when I was implementing RISC-V.  I
> haven't actually used them myself, though.
>
> Yes, inline assembly with CSRR is what I had intended.  I'll take a closer
> look at it this weekend and try to fix it.
>
> On Mon, Mar 4, 2019 at 12:22 PM Rishabh Jain <rishucod...@gmail.com>
> wrote:
>
>> Hi Alec,
>>
>> Thanks for the reply.
>>
>> First, I have a few queries (for RISCV ISA):
>> 1. In which privilege mode does gem5 boot in? If it is supervisor mode or
>> user mode, then how do I run binaries in machine mode?
>> 2. Can I use garnet2.0 and ruby model for riscv?
>>
>> I applied the patch by updating the src/arch/riscv/isa.cc file. Then, I
>> rebuilt the system using "$ scons build/RISCV/gem5.opt -j4".
>> I compiled my C program file using the command: "
>> riscv64-unknown-linux-gnu-gcc-7.2.0 -static hello1.c -o a.out"
>> Again, I ran my python config file using the command " $
>> build/RISCV/gem5.opt configs/multi_core/two_core/two_core_copy.py "
>> and I got the same previous value of mhartid. Both 0.
>> I used inline assembly :
>> asm ("csrr %0,0xF14\n\t"
>> :"=r" (hartID)
>> );
>> to read the value of mhartid and store in variable hartID. But here, I am
>> using the csrr instruction, right?
>> As you mentioned earlier, may you please elaborate on reading CSRR
>> instruction?
>>
>> Thanks and Regards,
>> Rishabh Jain
>>
>>
>>
>>
>>
>>
>>
>>
>> On Mon, Mar 4, 2019 at 1:57 AM Alec Roelke <ar...@virginia.edu> wrote:
>>
>>> Hi Rishabh,
>>>
>>> You're right that mhartid should not be the same for every CPU.  It
>>> looks like you may have found a bug in RISC-V in that mhartid had not been
>>> implemented yet.  This is odd, though, because I thought I had implemented
>>> it.  In any case, try this patch (
>>> https://gem5-review.googlesource.com/c/public/gem5/+/16988), which
>>> implements this CSR by returning the current thread's ID.  Note that trying
>>> to manually get the contents of the register by inspecting it as you did
>>> will still get 0 for all CPUs, but reading it using the CSRR instruction
>>> should produce correct results.  It would also be helpful if you review the
>>> patch (just +1 or -1 is okay unless you have more information you want to
>>> share) so I know it works on others' machines.
>>>
>>> As for your other problem, did you compile with the Linux toolchain or
>>> the Newlib one?  Gem5 is generally intended to run Linux binaries, so there
>>> may be problems running code compiled for Newlib.  I tried your program
>>> with both, and it works with the Linux toolchain.  Try that and let me know
>>> if it still fails.
>>>
>>> -Alec
>>>
>>> On Fri, Mar 1, 2019 at 9:50 AM Rishabh Jain <rishucod...@gmail.com>
>>> wrote:
>>>
>>>> Hi everyone,
>>>>
>>>> I have started working with gem5 from past 2 weeks and am trying to
>>>> simulate a multi-core CPU system with RISC-V ISA on gem5.
>>>>
>>>> I have written a C file where I use inline assembly snippet to grab the
>>>> value of mhartid (Hardware Thread id), marchid and mstatus.
>>>> I used this command to statically compile C code: $
>>>> riscv64-unknown-elf-gcc-7.2.0 -static hello1.c
>>>> The C code is available at (hello1.c) https://pastebin.com/t5XBBWEz.
>>>>
>>>> I have written my multi-core python configuration code: where the
>>>> system has two CPU cores, each having a private
>>>> I cache and D cache. These cache memories are connected to shared L2
>>>> cache via L2 bus. The L2 cache memory
>>>> is connected to the memory controller via membus.
>>>> The code is attached or available at (python configuration file)
>>>> https://pastebin.com/utxxNfJg
>>>> I used the cache python file which Jason has provided as part of
>>>> learning-gem5 book. ((python cache file) https://pastebin.com/sTc8vwdh)
>>>> The command used to simulate on gem5: $ build/RISCV/gem5.opt
>>>> configs/multi_core/two_core/two_core_copy.py
>>>>
>>>> After running this command, I get the console log : (console log
>>>> without loop) https://pastebin.com/t8rM9thk
>>>> From this log, I am able to get the values as follows:
>>>> CPU1:
>>>> mhartid = 0
>>>>  marchid = 8192
>>>> mstatus = 0
>>>>
>>>> CPU2:
>>>> mhartid = 0
>>>>  marchid = 8192
>>>> mstatus = 0
>>>>
>>>> I strongly feel that mhartid of each processor should be different. Can
>>>> someone explain to me why they are the same?
>>>>
>>>> Out of curiosity, I had put a loop in the C code to observe cache
>>>> misses! (please uncomment the loop in above C code to run! )
>>>> Again, I compiled the C code using the above command and simulated
>>>> using gem5.
>>>> I get a long message starting with "panic: Page table fault when
>>>> accessing virtual address 0x8000000000000000".
>>>> (console log with loop) https://pastebin.com/0xNyGkCE
>>>>
>>>> Also, my max_miss_count parameter in config.ini remains to be 0 for all
>>>> caches.
>>>> I am unable to understand this error?
>>>>
>>>> Other than this, may someone guide me to the steps of finding memory
>>>> trace and instruction trace for a binary executed on gem5 in RISC-V isa.
>>>>
>>>> Thanks and regards,
>>>> Rishabh Jain
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
_______________________________________________
gem5-users mailing list
gem5-users@gem5.org
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to