sorear changed the topic of #riscv to: RISC-V instruction set architecture | https://riscv.org | Logs: https://libera.irclog.whitequark.org/riscv | Backup if libera.chat and freenode fall over: irc.oftc.net
vagrantc has quit [Quit: leaving]
<palmer> olofj: do you have a LMKL link? I can't actually find that patch posted
<olofj> No, I can't spot it either, but it seems good to go.
<palmer> OK
<palmer> davidlt: any reason it's not posted?
<olofj> D'oh, just noticed that you already sent in. Ah well, next -rc perhaps.
<palmer> ya, well, I sent for tomorrow
<palmer> but I already have some fixes
<palmer> more worried about finding the patch...
<palmer> I'm always a bit leery of picking up patches that weren't posted
<palmer> davidlt isn't tab completing (and I don't understand matrix well enough to find the list of user names), does he have a different handle here?
<psydroid> you can try @username
<palmer> ya, still not tab completing
iorem has joined #riscv
<palmer> OK, well, I posted David's patch
<palmer> I'll take it if he doesn't say anything by the time it gets back to me
<olofj> sgtm
<olofj> thanks
<palmer> OK
<palmer> not sure why it didn't get posted, David is usually pretty good about that sort of thing
iorem has quit [Ping timeout: 252 seconds]
iorem has joined #riscv
TMM_ has quit [Quit: https://quassel-irc.org - Chat comfortably. Anywhere.]
TMM_ has joined #riscv
riff-IRC has quit [Quit: PROTO-IRC v0.73a (C) 1988 NetSoft - Built on 11-13-1988 on AT&T System V]
riff-IRC has joined #riscv
Skyz has quit [Ping timeout: 250 seconds]
Skyz has joined #riscv
zjason`` is now known as zjason
Skyz has quit [Quit: Client closed]
Skyz has joined #riscv
vagrantc has joined #riscv
TwoNotes has quit [Quit: Leaving]
Skyz has quit [Ping timeout: 250 seconds]
Skyz29 has joined #riscv
Skyz29 is now known as skyz
FluffyMask has quit [Quit: WeeChat 2.9]
elastic_dog has quit [Ping timeout: 268 seconds]
elastic_dog has joined #riscv
skyz has quit [Quit: Client closed]
mahmutov has quit [Ping timeout: 252 seconds]
mahmutov has joined #riscv
iorem has quit [Quit: Connection closed]
GenTooMan has quit [Ping timeout: 244 seconds]
GenTooMan has joined #riscv
vagrantc has quit [Quit: leaving]
riff-IRC has quit [Remote host closed the connection]
riff-IRC has joined #riscv
iorem has joined #riscv
Sos has joined #riscv
frost has joined #riscv
frost has quit [Quit: Connection closed]
frost has joined #riscv
hendursa1 has joined #riscv
hendursaga has quit [Ping timeout: 252 seconds]
smartin has joined #riscv
jeancf has joined #riscv
K285 has joined #riscv
jeancf has quit [Ping timeout: 272 seconds]
TwoNotes has joined #riscv
K285 has quit [Quit: Client closed]
wingsorc has quit [Ping timeout: 244 seconds]
leah2 has quit [Remote host closed the connection]
leah2 has joined #riscv
hendursa1 has quit [Quit: hendursa1]
hendursaga has joined #riscv
mhorne has quit [Ping timeout: 272 seconds]
radu2422 has quit [Quit: The Lounge - https://thelounge.chat]
radu2422 has joined #riscv
mhorne has joined #riscv
aredridel has quit [Quit: The Lounge - https://thelounge.chat]
aredridel has joined #riscv
Andre_H has joined #riscv
<TwoNotes> I get 'illegal instruction' in S mode doing a write to CSR stvec. AT least I think I am in S mode, as mstatus contains 0x800
<sorear> mstatus doesn't contain the current mode. how are you reading mstatus anyway?
<sorear> oh you mean mstatus after the trap?
<sorear> are you writing a properly aligned value to stvec?
<sorear> hmm, probably no effect from alignment in qemu. what exactly are you seeing?
<TwoNotes> This is in my M-interrupt handler
<TwoNotes> So I interpret mstatus MPP field saying what the mode was BEFORE the trap
<TwoNotes> I have just done an mret to drop into S mode.
<sorear> on what basis do you say "illegal instruction"? on what basis do you say "doing a write to CSR stvec"?
<TwoNotes> I have PMP set up. It gets a couple instructions into the S-mode code
<sorear> have you looked closely at mepc?
<TwoNotes> mcause contains a 2
<TwoNotes> mepc points to an instruction "csrw stvec, t5"
<sorear> what's the value of t5? what riscv implementation is this?
<TwoNotes> t5 contains 0x20000284, the address of the S-mode interrupt handler
<TwoNotes> This is QEMU emulating an sifive_u
<sorear> does not add up. does qemu-level tracing help
<TwoNotes> I will try that
TMM_ has quit [Quit: https://quassel-irc.org - Chat comfortably. Anywhere.]
TMM_ has joined #riscv
<xentrac> ♥
frost has quit [Ping timeout: 252 seconds]
<TwoNotes> sorear, were you referring to qemu-trace-stap?
<sorear> No, I'm referring to -D
<TwoNotes> The output logfile option?
<sorear> -d cpu,exec,int -singlestep etc been a while
<TwoNotes> Ah I see. That looks useful. Especially as I am trying to debug my own interrupt handler
wingsorc has joined #riscv
wingsorc has quit [Quit: Leaving]
iorem has quit [Quit: Connection closed]
mahmutov has quit [Ping timeout: 272 seconds]
craigo has joined #riscv
TwoNotes has quit [Remote host closed the connection]
FluffyMask has joined #riscv
skyz has joined #riscv
mahmutov has joined #riscv
Narrat has joined #riscv
craigo has quit [Quit: Leaving]
TwoNotes has joined #riscv
<TwoNotes> sorear, it just ocurred to me that the sifive_u has 5 harts, and hart zero is an E51, which I think lacks S mode and an MMU. no?
<sorear> it lacks S-mode, but that should mean that attempting to set mstatus.MPP to 01 fails then (it will set MPP to a different valid mode instead)
<sorear> although that doesn't seem to be implemented in write_mstatus, so maybe
<sorear> yeah I think that's what you're hitting. qemu bug
snild1 has joined #riscv
snild1 is now known as snild
<TwoNotes> But that might explain why I get illegal instruction trying to write to stvec
<TwoNotes> I will play with the QEMU options to change the cpu configuration
sm2n has quit [Ping timeout: 268 seconds]
IanHanschen has joined #riscv
IanHanschen is now known as ianhanschen
ianhanschen is now known as furan
<TwoNotes> Using the QEMU 'cpu 1' command to change which cpu it runs on DOES give different behavior, so there may be somehting in this
<xentrac> ooh
<xentrac> sounds promising
smartin has quit [Quit: smartin]
<TwoNotes> Ah, now I get a store access early in the S code where it tries to push registers on the stack. The SP is pointing to a place that SHOULD be writable in S mode, but isn't. SO I messed up PMP or MMU. This I can deal with.
<TwoNotes> If I had just written this in C or Rust I might have avoided all this fun. :)
<TwoNotes> But the point is to learn the grittystuff
<sorear> access errors are PMP, page faults are MMU
mthall has joined #riscv
skyz has quit [Quit: Client closed]
<TwoNotes> This is type 7, access fault.
<TwoNotes> Ok, so its PMP. The coding for that is very complex
<TwoNotes> For example, if A=01 (TOR) does the setting of X, W, and R matter?
jimwilson has quit [Quit: Leaving]
<geist> curious: what are you booing on? qemu?
<geist> if so, which machine are you telling it to emulate?
<TwoNotes> Yes qeumu, sifive_u, selecting cpu=1 to get (I think) an U54
<geist> right. okay. sorry if you already covered it but you're explicitly not using the opensbi thing to get your code into S mode?
<geist> fine if that's your purpose, just wanted to make sure you knew about it in case you werent interested in all the machine mode -> s mode bounce stuff
<geist> since normally the opensbi code handles all of that, including not handing you HART 0 (the m mode only one) and only giving you boot control of one of the S mode cpus until you ask for me
<geist> more
llamp[m] has quit [Remote host closed the connection]
demostanis[m] has quit [Read error: Connection reset by peer]
khem has quit [Remote host closed the connection]
ahs3[m] has quit [Write error: Connection reset by peer]
psydroid has quit [Read error: Connection reset by peer]
jc7 has joined #riscv
llamp[m] has joined #riscv
mahmutov_ has joined #riscv
aredridel1 has joined #riscv
<TwoNotes> No, I am doing this bare hardware, not using OpenSBI.
mahmutov has quit [Ping timeout: 245 seconds]
aredridel has quit [Ping timeout: 245 seconds]
aredridel1 is now known as aredridel
psydroid has joined #riscv
demostanis[m] has joined #riscv
Thalheim_ has joined #riscv
somlo_ has joined #riscv
ahs3[m] has joined #riscv
khem has joined #riscv
somlo has quit [Read error: Connection reset by peer]
stefanct has quit [Ping timeout: 252 seconds]
FluffyMask has quit [Ping timeout: 252 seconds]
Thalheim has quit [Ping timeout: 252 seconds]
fabs has quit [Ping timeout: 252 seconds]
jc has quit [Ping timeout: 252 seconds]
TwoNotes has quit [Ping timeout: 245 seconds]
peeps[zen] has joined #riscv
djdelorie has quit [Ping timeout: 252 seconds]
riff-IRC has quit [Ping timeout: 252 seconds]
jc has joined #riscv
peepsalot has quit [Killed (NickServ (GHOST command used by peeps[zen]))]
aredridel5 has joined #riscv
peeps[zen] is now known as peepsalot
FluffyMask has joined #riscv
stefanct has joined #riscv
xentrac_ has joined #riscv
wolfshappen_ has joined #riscv
mahmutov has joined #riscv
snild1 has joined #riscv
s0ph0s has joined #riscv
dlan_ has joined #riscv
TMM__ has joined #riscv
wolfshappen has quit [Read error: Connection reset by peer]
aredridel has quit [Ping timeout: 264 seconds]
jc7 has quit [Ping timeout: 264 seconds]
mahmutov_ has quit [Ping timeout: 264 seconds]
wgrant has quit [Ping timeout: 264 seconds]
TMM_ has quit [Remote host closed the connection]
xentrac has quit [Ping timeout: 264 seconds]
jotweh has quit [Ping timeout: 264 seconds]
Andre_H has quit [Ping timeout: 264 seconds]
dlan has quit [Ping timeout: 264 seconds]
s0ph0s|alt has quit [Ping timeout: 264 seconds]
snild has quit [Read error: Connection reset by peer]
jotweh has joined #riscv
somlo__ has joined #riscv
peeps[zen] has joined #riscv
jc1 has joined #riscv
TwoNotes has joined #riscv
Thalheim has joined #riscv
<TwoNotes> I was disconnected 18 mins ago.
guerby has quit [Read error: Connection reset by peer]
kgz has quit [Ping timeout: 265 seconds]
rektide has quit [Ping timeout: 265 seconds]
palmer has quit [Ping timeout: 265 seconds]
rektide has joined #riscv
palmer has joined #riscv
aurel32_ has joined #riscv
aredridel has joined #riscv
guerby has joined #riscv
Amanieu_ has joined #riscv
jn has quit [Ping timeout: 265 seconds]
dh` has quit [Ping timeout: 265 seconds]
agraf has quit [Ping timeout: 265 seconds]
Amanieu has quit [Ping timeout: 265 seconds]
oaken-source has quit [Ping timeout: 265 seconds]
jotweh has quit [Ping timeout: 265 seconds]
aurel32 has quit [Ping timeout: 265 seconds]
jn has joined #riscv
jn has joined #riscv
jn has quit [Changing host]
agraf_ has joined #riscv
oaken-source has joined #riscv
merry_ has joined #riscv
agraf_ is now known as agraf
adamse has quit [Ping timeout: 265 seconds]
merry has quit [Ping timeout: 265 seconds]
kgz has joined #riscv
jotweh has joined #riscv
adamse has joined #riscv
merry_ is now known as merry
aredridel5 has quit [*.net *.split]
jc has quit [*.net *.split]
peepsalot has quit [*.net *.split]
somlo_ has quit [*.net *.split]
Thalheim_ has quit [*.net *.split]
jc1 is now known as jc
gruetze_ has joined #riscv
gruetzkopf has quit [Ping timeout: 265 seconds]
jn has quit [Read error: Connection reset by peer]
jn has joined #riscv
jn has joined #riscv
<TwoNotes> geist, where might I find the opensbi code that does this (force hart ID) for risc-v? ALl I have found so far is the opensbi top interface spec, not how it actually works
rvalles has quit [Ping timeout: 265 seconds]
rvalles has joined #riscv
<geist> https://github.com/riscv/opensbi is the source
sm2n has joined #riscv
<geist> hmmm, dont see a specific platform dir for the sifive stuff though
<geist> oh it's under generic
<geist> but, what do you mean by 'force hart id'?
elastic_dog has quit [Ping timeout: 244 seconds]
mahmutov has quit [Ping timeout: 244 seconds]
<geist> in general my previous tracing of opensbi was that it traps all the cpus that have started (probably started all simultaneously) and only allows one through, based on a combination of features mask (ie, not HART 0 on real sifive hardware) and a hardware lottery (atomic variable that the other ones roll, first one to get the atomic wins)
<geist> then it passes one core through to supervisor, and if the supervisor OS wants more it makes SBI calls to boot additional harts, which then SBI just releases from M mode, since it had previously trapped them
wgrant has joined #riscv
<geist> and hart 0 in particular (the M mode one) i think just sits there forever. i'm not sure it has a specific job in opensbi
<TwoNotes> Yes, I am wondering how it does that. The way I read the specs, all harts boot at once, and follow the same logic. I suppose I could read the hartid (it is in a CSR) and do nothing if it is zero. Now, to make QEMU and GDB cooperate in this ...
elastic_dog has joined #riscv
peeps[zen] is now known as peepsalot
<TwoNotes> Maybe this is what the QEMU monitor command "cpu N" is for
skyz has joined #riscv
Ultrasauce is now known as sauce
<geist> that just switches which one subsequent info commands work with
<geist> like, say 'info registers'
<geist> it doesn't change how it emulates it, or anything
dh` has joined #riscv
dlan_ is now known as dlan
dlan has quit [Changing host]
dlan has joined #riscv
jimwilson has joined #riscv
somlo__ is now known as somlo
jellydonut has quit [Ping timeout: 252 seconds]
skyz has quit [Quit: Client closed]
skyz has joined #riscv
skyz has quit [Quit: Client closed]
skyz has joined #riscv
riff-IRC has joined #riscv
skyz has quit [Client Quit]
skyz has joined #riscv
djdelorie has joined #riscv
skyz has quit [Quit: Client closed]
skyz has joined #riscv
skyz has quit [Client Quit]
Narrat has quit [Quit: They say a little knowledge is a dangerous thing, but it's not one half so bad as a lot of ignorance.]
skyz has joined #riscv
skyz has quit [Client Quit]
skyz has joined #riscv
skyz has quit [Quit: Client closed]
iorem has joined #riscv