Message ID | 1543412590-29716-2-git-send-email-stefan.markovic@rt-rk.com |
---|---|
State | New |
Headers | show |
Series | qemu-doc: Update MIPS/nanoMIPS info | expand |
Hi Stefan, On 28/11/18 14:43, Stefan Markovic wrote: > From: Stefan Markovic <smarkovic@wavecomp.com> > > Add nanoMIPS information in qemu-doc.texi with example of usage > included. > > Signed-off-by: Stefan Markovic <smarkovic@wavecomp.com> > --- > qemu-doc.texi | 29 +++++++++++++++++++++++++++++ > 1 file changed, 29 insertions(+) > > diff --git a/qemu-doc.texi b/qemu-doc.texi > index f7ad1df..6ef593d 100644 > --- a/qemu-doc.texi > +++ b/qemu-doc.texi > @@ -1994,6 +1994,10 @@ Set the emulated machine type. The default is sun4u. > @section MIPS System emulator > @cindex system emulation (MIPS) > > +@menu > +* nanoMIPS System emulator :: > +@end menu > + > Four executables cover simulation of 32 and 64-bit MIPS systems in > both endian options, @file{qemu-system-mips}, @file{qemu-system-mipsel} > @file{qemu-system-mips64} and @file{qemu-system-mips64el}. > @@ -2085,6 +2089,31 @@ SCSI controller > G364 framebuffer > @end itemize > > +@node nanoMIPS System emulator > +@subsection nanoMIPS System emulator > +@cindex system emulation (nanoMIPS) > + > +Executable @file{qemu-system-mipsel} also covers simulation of > +32-bit nanoMIPS system in little endian mode: > + > +@itemize @minus > +@item > +nanoMIPS I7200 CPU > +@end itemize > + > +Example of @file{qemu-system-mipsel} usage for nanoMIPS is shown below: > + > +Download @code{<disk_image_file>} from @url{https://mipsdistros.mips.com/LinuxDistro/nanomips/buildroot/index.html}. > + > +Download @code{<kernel_image_file>} from @url{https://mipsdistros.mips.com/LinuxDistro/nanomips/kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/index.html}. > + > +Start system emulation of Malta board with nanoMIPS I7200 CPU: > +@example > +qemu-system-mipsel -cpu I7200 -kernel @code{<kernel_image_file>} \ > + -M malta -serial stdio -m @code{<memory_size>} -hda @code{<disk_image_file>} \ > + -append "mem=256m@@0x0 rw console=ttyS0 vga=cirrus vesa=0x111 root=/dev/sda" Trying your example with generic_nano32r6el_page64k_dbg current master (c56606684) I'm getting: IN: cgroup_init_early 0x8087ae64: 84f0 8050 LW a3, 0x50(s0) 0x8087ae68: a630 2c48 SWM s1, 72(s0), 0x2 0x8087ae6c: bb84 BNEZC a3, 0x8087ae72 OP: ld_i32 tmp0,env,$0xffffffffffffffe4 movi_i32 tmp1,$0x0 brcond_i32 tmp0,tmp1,lt,$L0 ---- 8087ae64 00000000 00000000 movi_i32 tmp0,$0x50 add_i32 tmp0,s0,tmp0 qemu_ld_i32 tmp0,tmp0,un+leul,0 mov_i32 a3,tmp0 ---- 8087ae68 00000000 00000000 movi_i32 tmp0,$0x48 add_i32 tmp0,s0,tmp0 mov_i32 tmp1,s1 qemu_st_i32 tmp1,tmp0,leul,0 movi_i32 tmp0,$0x4c add_i32 tmp0,s0,tmp0 mov_i32 tmp1,s2 qemu_st_i32 tmp1,tmp0,leul,0 ---- 8087ae6c 00000000 00000000 mov_i32 tmp0,a3 movi_i32 tmp1,$0x0 setcond_i32 bcond,tmp0,tmp1,ne movi_i32 tmp0,$0x0 brcond_i32 bcond,tmp0,ne,$L1 goto_tb $0x1 movi_i32 PC,$0xffffffff8087ae6e exit_tb $0x7f80a2005f01 set_label $L1 goto_tb $0x0 movi_i32 PC,$0xffffffff8087ae72 exit_tb $0x7f80a2005f00 set_label $L0 exit_tb $0x7f80a2005f03 qemu-system-mipsel: tcg/tcg-op.c:2607: tcg_gen_goto_tb: Assertion `(tcg_ctx->goto_tb_issue_mask & (1 << idx)) == 0' failed. Richard said on IRC "it means that it has issued two goto_tb with the same idx." I built QEMU on a x86_64 host, using the following options: ./configure --disable-user \ --enable-vnc-sasl --enable-trace-backends=log \ --extra-cflags=-ggdb --enable-debug Regards, Phil. > +@end example > + > > @node ARM System emulator > @section ARM System emulator >
Hi Philippe, I'll investigate further running with --enable-debug option to fix this issue. In the meantime, we could note enable-debug as 'To Be Done/Work In Progress' for nanoMIPS in qemu docs . Thanks, Stefan On 28.11.18. 15:31, Philippe Mathieu-Daudé wrote: > Hi Stefan, > > On 28/11/18 14:43, Stefan Markovic wrote: >> From: Stefan Markovic <smarkovic@wavecomp.com> >> >> Add nanoMIPS information in qemu-doc.texi with example of usage >> included. >> >> Signed-off-by: Stefan Markovic <smarkovic@wavecomp.com> >> --- >> qemu-doc.texi | 29 +++++++++++++++++++++++++++++ >> 1 file changed, 29 insertions(+) >> >> diff --git a/qemu-doc.texi b/qemu-doc.texi >> index f7ad1df..6ef593d 100644 >> --- a/qemu-doc.texi >> +++ b/qemu-doc.texi >> @@ -1994,6 +1994,10 @@ Set the emulated machine type. The default is sun4u. >> @section MIPS System emulator >> @cindex system emulation (MIPS) >> >> +@menu >> +* nanoMIPS System emulator :: >> +@end menu >> + >> Four executables cover simulation of 32 and 64-bit MIPS systems in >> both endian options, @file{qemu-system-mips}, @file{qemu-system-mipsel} >> @file{qemu-system-mips64} and @file{qemu-system-mips64el}. >> @@ -2085,6 +2089,31 @@ SCSI controller >> G364 framebuffer >> @end itemize >> >> +@node nanoMIPS System emulator >> +@subsection nanoMIPS System emulator >> +@cindex system emulation (nanoMIPS) >> + >> +Executable @file{qemu-system-mipsel} also covers simulation of >> +32-bit nanoMIPS system in little endian mode: >> + >> +@itemize @minus >> +@item >> +nanoMIPS I7200 CPU >> +@end itemize >> + >> +Example of @file{qemu-system-mipsel} usage for nanoMIPS is shown below: >> + >> +Download @code{<disk_image_file>} from @url{https://mipsdistros.mips.com/LinuxDistro/nanomips/buildroot/index.html}. >> + >> +Download @code{<kernel_image_file>} from @url{https://mipsdistros.mips.com/LinuxDistro/nanomips/kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/index.html}. >> + >> +Start system emulation of Malta board with nanoMIPS I7200 CPU: >> +@example >> +qemu-system-mipsel -cpu I7200 -kernel @code{<kernel_image_file>} \ >> + -M malta -serial stdio -m @code{<memory_size>} -hda @code{<disk_image_file>} \ >> + -append "mem=256m@@0x0 rw console=ttyS0 vga=cirrus vesa=0x111 root=/dev/sda" > Trying your example with generic_nano32r6el_page64k_dbg current master > (c56606684) I'm getting: > > IN: cgroup_init_early > 0x8087ae64: 84f0 8050 LW a3, 0x50(s0) > 0x8087ae68: a630 2c48 SWM s1, 72(s0), 0x2 > 0x8087ae6c: bb84 BNEZC a3, 0x8087ae72 > > OP: > ld_i32 tmp0,env,$0xffffffffffffffe4 > movi_i32 tmp1,$0x0 > brcond_i32 tmp0,tmp1,lt,$L0 > > ---- 8087ae64 00000000 00000000 > movi_i32 tmp0,$0x50 > add_i32 tmp0,s0,tmp0 > qemu_ld_i32 tmp0,tmp0,un+leul,0 > mov_i32 a3,tmp0 > > ---- 8087ae68 00000000 00000000 > movi_i32 tmp0,$0x48 > add_i32 tmp0,s0,tmp0 > mov_i32 tmp1,s1 > qemu_st_i32 tmp1,tmp0,leul,0 > movi_i32 tmp0,$0x4c > add_i32 tmp0,s0,tmp0 > mov_i32 tmp1,s2 > qemu_st_i32 tmp1,tmp0,leul,0 > > ---- 8087ae6c 00000000 00000000 > mov_i32 tmp0,a3 > movi_i32 tmp1,$0x0 > setcond_i32 bcond,tmp0,tmp1,ne > movi_i32 tmp0,$0x0 > brcond_i32 bcond,tmp0,ne,$L1 > goto_tb $0x1 > movi_i32 PC,$0xffffffff8087ae6e > exit_tb $0x7f80a2005f01 > set_label $L1 > goto_tb $0x0 > movi_i32 PC,$0xffffffff8087ae72 > exit_tb $0x7f80a2005f00 > set_label $L0 > exit_tb $0x7f80a2005f03 > > qemu-system-mipsel: tcg/tcg-op.c:2607: tcg_gen_goto_tb: Assertion > `(tcg_ctx->goto_tb_issue_mask & (1 << idx)) == 0' failed. > > Richard said on IRC "it means that it has issued two goto_tb with the > same idx." > > I built QEMU on a x86_64 host, using the following options: > > ./configure --disable-user \ > --enable-vnc-sasl --enable-trace-backends=log \ > --extra-cflags=-ggdb --enable-debug > > Regards, > > Phil. > >> +@end example >> + >> >> @node ARM System emulator >> @section ARM System emulator >>
On Thu, 29 Nov 2018 at 10:18, Stefan Markovic <smarkovic@wavecomp.com> wrote: > I'll investigate further running with --enable-debug option to fix this > issue. > > In the meantime, we could note enable-debug as 'To Be Done/Work In > Progress' for nanoMIPS in qemu docs . This isn't just "--enable-debug doesn't work", it means there's a definite bug because you've tripped an assert (that's only enabled in the debug config). It's quite possible that the code will misbehave at runtime even on the non-debug config... thanks -- PMM
On 11/29/18 2:23 AM, Peter Maydell wrote: > On Thu, 29 Nov 2018 at 10:18, Stefan Markovic <smarkovic@wavecomp.com> wrote: >> I'll investigate further running with --enable-debug option to fix this >> issue. >> >> In the meantime, we could note enable-debug as 'To Be Done/Work In >> Progress' for nanoMIPS in qemu docs . > > This isn't just "--enable-debug doesn't work", it means there's a > definite bug because you've tripped an assert (that's only enabled > in the debug config). It's quite possible that the code will misbehave > at runtime even on the non-debug config... Definitely. The assert says that two different exits are using the same TranslationBlock.jmp_target_arg entry. Which means that, by definition, one of them must branch to the wrong location. r~
Of course. Investigation is in progress. Thanks, Stefan On 29.11.18. 11:23, Peter Maydell wrote: > On Thu, 29 Nov 2018 at 10:18, Stefan Markovic <smarkovic@wavecomp.com> wrote: >> I'll investigate further running with --enable-debug option to fix this >> issue. >> >> In the meantime, we could note enable-debug as 'To Be Done/Work In >> Progress' for nanoMIPS in qemu docs . > This isn't just "--enable-debug doesn't work", it means there's a > definite bug because you've tripped an assert (that's only enabled > in the debug config). It's quite possible that the code will misbehave > at runtime even on the non-debug config... > > thanks > -- PMM
> From: Stefan Markovic <stefan.markovic@rt-rk.com> > Sent: Wednesday, November 28, 2018 2:43 PM > To: qemu-devel@nongnu.org > Cc: Aleksandar Markovic; Stefan Markovic; Petar Jovanovic; peter.maydell@linaro.org; huth@tuxfamily.org; > hpoussin@reactos.org; Paul Burton; jhogan@kernel.org > Subject: [PATCH 1/2] qemu-doc: Add nanoMIPS ISA information > > From: Stefan Markovic <smarkovic@wavecomp.com> > > Add nanoMIPS information in qemu-doc.texi with example of usage > included. > > Signed-off-by: Stefan Markovic <smarkovic@wavecomp.com> > --- > qemu-doc.texi | 29 +++++++++++++++++++++++++++++ > 1 file changed, 29 insertions(+) > The text itself seems fine to me. If the problem with debug runs is fixed: Reviewed-by: Aleksandar Markovic <amarkovic@wavecomp.com> > diff --git a/qemu-doc.texi b/qemu-doc.texi > index f7ad1df..6ef593d 100644 > --- a/qemu-doc.texi > +++ b/qemu-doc.texi > @@ -1994,6 +1994,10 @@ Set the emulated machine type. The default is sun4u. > @section MIPS System emulator > @cindex system emulation (MIPS) > > +@menu > +* nanoMIPS System emulator :: > +@end menu > + > Four executables cover simulation of 32 and 64-bit MIPS systems in > both endian options, @file{qemu-system-mips}, @file{qemu-system-mipsel} > @file{qemu-system-mips64} and @file{qemu-system-mips64el}. > @@ -2085,6 +2089,31 @@ SCSI controller > G364 framebuffer > @end itemize > > +@node nanoMIPS System emulator > +@subsection nanoMIPS System emulator > +@cindex system emulation (nanoMIPS) > + > +Executable @file{qemu-system-mipsel} also covers simulation of > +32-bit nanoMIPS system in little endian mode: > + > +@itemize @minus > +@item > +nanoMIPS I7200 CPU > +@end itemize > + > +Example of @file{qemu-system-mipsel} usage for nanoMIPS is shown below: > + > +Download @code{<disk_image_file>} from @url{https://mipsdistros.mips.com/LinuxDistro/nanomips/buildroot/index.html}. > + > +Download @code{<kernel_image_file>} from @url{https://mipsdistros.mips.com/LinuxDistro/nanomips/kernels/> v4.15.18-432-gb2eb9a8b07a1-20180627102142/index.html}. > + > +Start system emulation of Malta board with nanoMIPS I7200 CPU: > +@example > +qemu-system-mipsel -cpu I7200 -kernel @code{<kernel_image_file>} \ > + -M malta -serial stdio -m @code{<memory_size>} -hda @code{<disk_image_file>} \ > + -append "mem=256m@@0x0 rw console=ttyS0 vga=cirrus vesa=0x111 root=/dev/sda" > +@end example > + > > @node ARM System emulator > @section ARM System emulator > -- > 1.9.1
diff --git a/qemu-doc.texi b/qemu-doc.texi index f7ad1df..6ef593d 100644 --- a/qemu-doc.texi +++ b/qemu-doc.texi @@ -1994,6 +1994,10 @@ Set the emulated machine type. The default is sun4u. @section MIPS System emulator @cindex system emulation (MIPS) +@menu +* nanoMIPS System emulator :: +@end menu + Four executables cover simulation of 32 and 64-bit MIPS systems in both endian options, @file{qemu-system-mips}, @file{qemu-system-mipsel} @file{qemu-system-mips64} and @file{qemu-system-mips64el}. @@ -2085,6 +2089,31 @@ SCSI controller G364 framebuffer @end itemize +@node nanoMIPS System emulator +@subsection nanoMIPS System emulator +@cindex system emulation (nanoMIPS) + +Executable @file{qemu-system-mipsel} also covers simulation of +32-bit nanoMIPS system in little endian mode: + +@itemize @minus +@item +nanoMIPS I7200 CPU +@end itemize + +Example of @file{qemu-system-mipsel} usage for nanoMIPS is shown below: + +Download @code{<disk_image_file>} from @url{https://mipsdistros.mips.com/LinuxDistro/nanomips/buildroot/index.html}. + +Download @code{<kernel_image_file>} from @url{https://mipsdistros.mips.com/LinuxDistro/nanomips/kernels/v4.15.18-432-gb2eb9a8b07a1-20180627102142/index.html}. + +Start system emulation of Malta board with nanoMIPS I7200 CPU: +@example +qemu-system-mipsel -cpu I7200 -kernel @code{<kernel_image_file>} \ + -M malta -serial stdio -m @code{<memory_size>} -hda @code{<disk_image_file>} \ + -append "mem=256m@@0x0 rw console=ttyS0 vga=cirrus vesa=0x111 root=/dev/sda" +@end example + @node ARM System emulator @section ARM System emulator