On Wed, 2010-10-27 at 20:07 +0000, Blue Swirl wrote: > On Wed, Oct 27, 2010 at 1:10 AM, Zhiyuan Shao <zys...@mail.hust.edu.cn> wrote: > > On Tue, 2010-10-26 at 18:59 +0000, Blue Swirl wrote: > >> On Tue, Oct 26, 2010 at 12:22 PM, Zhiyuan Shao <zys...@hust.edu.cn> wrote: > >> > Hi team, > >> > > >> > I am a Qemu User, and using Qemu 0.13.0 to debugging the linux kernel > >> > code (Qemu+GDB). > >> > > >> > During the usage, I found the Qemu debugging console (i.e., entered by > >> > pressing Ctl+Alt+2 in Qemu SDL window or by passing "-monitor stdio" to > >> > Qemu in the command line) is rather difficult to use. It can not show > >> > some important information, e.g., on i386 platform, which is my major > >> > interest, it can not show IDT, GDT information. Regarding the page > >> > mapping information, "info tlb" actually do a really bad job. > >> > >> How is that bad? > >> > > I booted a Linux OS (i386 with PAE support), and has following > > virtual-to-physical mappings: > > [0xff00-0000,0xffbf-ffff] -> [0x0000-0000, 0x00bf-ffff] > > [0x0000-0000,0x00ff-ffff] -> [0x0000-0000, 0x00ff-ffff] > > > > while now, with "info mem" command of Qemu debugging console, the output > > is like: > > (qemu) info mem > > 00000000-00400000 00400000 -r- > > 00c00000-00c08000 00008000 -rw > > 00c08000-00c09000 00001000 ur- > > 00c09000-00c0a000 00001000 urw > > 00c0e000-00c0f000 00001000 urw > > 00c10000-00c11000 00001000 -r- > > 00c11000-00c12000 00001000 ur- > > 00c12000-00c13000 00001000 -r- > > 00c14000-00c16000 00002000 -r- > > 00c1b000-00c1e000 00003000 -rw > > 00c20000-00c40000 00020000 -rw > > 00c40000-00c41000 00001000 -r- > > 00c41000-00c42000 00001000 ur- > > 00c42000-00c43000 00001000 -rw > > 00c44000-00c60000 0001c000 -rw > > 00c67000-00c70000 00009000 -rw > > 00c71000-00c74000 00003000 ur- > > 00c75000-00c76000 00001000 urw > > 00c77000-00c78000 00001000 ur- > > 00c78000-00c79000 00001000 -rw > > 00c7a000-00d00000 00086000 -rw > > 00d18000-00d19000 00001000 urw > > 00d19000-00d1a000 00001000 -rw > > 00d1d000-00d1e000 00001000 -r- > > 00d22000-00d23000 00001000 -r- > > 00d2a000-00d2b000 00001000 -rw > > 00df0000-00df1000 00001000 -r- > > 00df1000-00df2000 00001000 urw > > 00df4000-00df5000 00001000 -r- > > 00df5000-00df6000 00001000 urw > > 00df7000-00df8000 00001000 urw > > 01000000-01400000 00400000 -rw > > 01400000-01800000 00400000 -r- > > 01800000-01c00000 00400000 urw > > 01c00000-02000000 00400000 -rw > > 04c00000-05000000 00400000 ur- > > 05c00000-06000000 00400000 -rw > > 0bc00000-0c000000 00400000 -r- > > 0c800000-0cc00000 00400000 urw > > 0d800000-0e000000 00800000 ur- > > 0e400000-0e800000 00400000 ur- > > 10400000-10800000 00400000 -rw > > 12000000-12001000 00001000 -rw > > 12002000-12003000 00001000 -rw > > 12004000-12005000 00001000 -rw > > 12006000-12007000 00001000 -rw > > 12008000-12009000 00001000 -rw > > 1200a000-1200b000 00001000 -rw > > 1200c000-1200d000 00001000 -rw > > 1200e000-1200f000 00001000 -rw > > 13bf0000-13bf1000 00001000 -rw > > 13bf2000-13bf3000 00001000 -rw > > 13bf4000-13bf5000 00001000 -rw > > 13bf6000-13bf7000 00001000 -rw > > 13bf8000-13bf9000 00001000 -rw > > 13bfa000-13bfb000 00001000 -rw > > > > Donot know what the "active virtual memory mappings" means for "info > > mem" command, but the results displayed is not very likely being > > correct. > > > > While with "info tlb" command: > > > > (qemu) info tlb > > 00000000: 15c00000 -PDA-T-- > > 00c00000: f000f000 G-D-C--W > > 00c01000: f000f000 G-D-C--W > > 00c02000: f000e000 --D----W > > 00c03000: f000f000 G-D-C--W > > 00c04000: f000f000 G-D-C--W > > 00c05000: f000f000 G-D-C--W > > 00c06000: f000f000 G-D-C--W > > 00c07000: f000f000 G-D-C--W > > 00c08000: f000f000 ---A--U- > > 00c09000: f000e000 G-----UW > > 00c0e000: f000e000 G-D-C-UW > > 00c10000: c0008000 G--ACT-- > > 00c11000: f000f000 --D--TU- > > 00c12000: f000f000 --D----- > > 00c14000: f000e000 G--ACT-- > > 00c15000: f000f000 --D-CT-- > > 00c1b000: f000f000 G-D-C--W > > 00c1c000: f000f000 G-D-C--W > > 00c1d000: f000f000 G-D-C--W > > 00c20000: f000f000 G-D-C--W > > 00c21000: f000f000 G-D-C--W > > 00c22000: f000f000 G-D-C--W > > 00c23000: f000f000 G-D-C--W > > 00c24000: f000f000 G-D-C--W > > 00c25000: f000f000 G-D-C--W > > 00c26000: f000f000 G-D-C--W > > 00c27000: f000f000 G-D-C--W > > 00c28000: f000f000 G-D-C--W > > 00c29000: f000f000 G-D-C--W > > 00c2a000: f000f000 G-D-C--W > > 00c2b000: f000f000 G-D-C--W > > 00c2c000: f000f000 G-D-C--W > > 00c2d000: f000f000 G-D-C--W > > 00c2e000: f000f000 G-D-C--W > > 00c2f000: f000f000 G-D-C--W > > 00c30000: f000f000 G-D-C--W > > 00c31000: f000f000 G-D-C--W > > 00c32000: f000f000 G-D-C--W > > 00c33000: f000f000 G-D-C--W > > 00c34000: f000f000 G-D-C--W > > 00c35000: f000f000 G-D-C--W > > 00c36000: f000f000 G-D-C--W > > 00c37000: f000f000 G-D-C--W > > 00c38000: f000f000 G-D-C--W > > 00c39000: f000f000 G-D-C--W > > 00c3a000: f000f000 G-D-C--W > > 00c3b000: f000f000 G-D-C--W > > 00c3c000: f000f000 G-D-C--W > > 00c3d000: f000f000 G-D-C--W > > 00c3e000: f000f000 G-D-C--W > > 00c3f000: f000f000 G-D-C--W > > 00c40000: f000e000 --D-CT-- > > 00c41000: 9fc00000 ---ACTU- > > 00c42000: f000f000 G-D-C--W > > 00c44000: f000f000 G-D-C--W > > 00c45000: f000f000 G-D-C--W > > 00c46000: f000f000 G-D-C--W > > 00c47000: f000f000 G-D-C--W > > 00c48000: f000f000 G-D-C--W > > 00c49000: f000f000 G-D-C--W > > 00c4a000: f000f000 G-D-C--W > > 00c4b000: f000f000 G-D-C--W > > 00c4c000: f000f000 G-D-C--W > > 00c4d000: f000f000 G-D-C--W > > 00c4e000: f000f000 G-D-C--W > > 00c4f000: f000f000 G-D-C--W > > 00c50000: f000f000 G-D-C--W > > 00c51000: f000f000 G-D-C--W > > 00c52000: f000f000 G-D-C--W > > 00c53000: f000f000 G-D-C--W > > 00c54000: f000f000 G-D-C--W > > 00c55000: f000f000 G-D-C--W > > 00c56000: f000f000 G-D-C--W > > 00c57000: f000f000 G-D-C--W > > 00c58000: f000f000 G-D-C--W > > 00c59000: f000f000 G-D-C--W > > 00c5a000: f000f000 G-D-C--W > > 00c5b000: f000f000 G-D-C--W > > 00c5c000: f000f000 G-D-C--W > > 00c5d000: f000f000 G-D-C--W > > 00c5e000: f000f000 G-D-C--W > > 00c5f000: f000f000 G-D-C--W > > 00c67000: f000f000 G-D-C--W > > 00c68000: f000f000 G-D-C--W > > 00c69000: f000f000 G-D-C--W > > 00c6a000: f000f000 G-D-C--W > > 00c6b000: f000f000 G-D-C--W > > 00c6c000: f000f000 G-D-C--W > > 00c6d000: f000f000 G-D-C--W > > 00c6e000: f000f000 G-D-C--W > > 00c6f000: f000f000 G-D-C--W > > 00c71000: f000f000 G-D---U- > > 00c72000: f000f000 G-D---U- > > 00c73000: f000f000 G-D---U- > > 00c75000: f000e000 --DA--UW > > 00c77000: f000f000 G-D---U- > > 00c78000: f000f000 G-D-C--W > > 00c7a000: f000f000 G-D-C--W > > 00c7b000: f000f000 G-D-C--W > > 00c7c000: f000f000 G-D-C--W > > 00c7d000: f000f000 G-D-C--W > > 00c7e000: f000f000 G-D-C--W > > 00c7f000: f000f000 G-D-C--W > > 00c80000: f000f000 G-D-C--W > > 00c81000: f000f000 G-D-C--W > > 00c82000: f000f000 G-D-C--W > > 00c83000: f000f000 G-D-C--W > > 00c84000: f000f000 G-D-C--W > > 00c85000: f000f000 G-D-C--W > > 00c86000: f000f000 G-D-C--W > > 00c87000: f000f000 G-D-C--W > > 00c88000: f000f000 G-D-C--W > > 00c89000: f000f000 G-D-C--W > > 00c8a000: f000f000 G-D-C--W > > 00c8b000: f000f000 G-D-C--W > > 00c8c000: f000f000 G-D-C--W > > 00c8d000: f000f000 G-D-C--W > > 00c8e000: f000f000 G-D-C--W > > 00c8f000: f000f000 G-D-C--W > > 00c90000: f000f000 G-D-C--W > > 00c91000: f000f000 G-D-C--W > > 00c92000: f000f000 G-D-C--W > > 00c93000: f000f000 G-D-C--W > > 00c94000: f000f000 G-D-C--W > > 00c95000: f000f000 G-D-C--W > > 00c96000: f000f000 G-D-C--W > > 00c97000: f000f000 G-D-C--W > > 00c98000: f000f000 G-D-C--W > > 00c99000: f000f000 G-D-C--W > > 00c9a000: f000f000 G-D-C--W > > 00c9b000: f000f000 G-D-C--W > > 00c9c000: f000f000 G-D-C--W > > 00c9d000: f000f000 G-D-C--W > > 00c9e000: f000f000 G-D-C--W > > 00c9f000: f000f000 G-D-C--W > > 00ca0000: f000f000 G-D-C--W > > 00ca1000: f000f000 G-D-C--W > > 00ca2000: f000f000 G-D-C--W > > 00ca3000: f000f000 G-D-C--W > > 00ca4000: f000f000 G-D-C--W > > 00ca5000: f000f000 G-D-C--W > > 00ca6000: f000f000 G-D-C--W > > 00ca7000: f000f000 G-D-C--W > > 00ca8000: f000f000 G-D-C--W > > 00ca9000: f000f000 G-D-C--W > > 00caa000: f000f000 G-D-C--W > > 00cab000: f000f000 G-D-C--W > > 00cac000: f000f000 G-D-C--W > > 00cad000: f000f000 G-D-C--W > > 00cae000: f000f000 G-D-C--W > > 00caf000: f000f000 G-D-C--W > > 00cb0000: f000f000 G-D-C--W > > 00cb1000: f000f000 G-D-C--W > > 00cb2000: f000f000 G-D-C--W > > 00cb3000: f000f000 G-D-C--W > > 00cb4000: f000f000 G-D-C--W > > 00cb5000: f000f000 G-D-C--W > > 00cb6000: f000f000 G-D-C--W > > 00cb7000: f000f000 G-D-C--W > > 00cb8000: f000f000 G-D-C--W > > 00cb9000: f000f000 G-D-C--W > > 00cba000: f000f000 G-D-C--W > > 00cbb000: f000f000 G-D-C--W > > 00cbc000: f000f000 G-D-C--W > > 00cbd000: f000f000 G-D-C--W > > 00cbe000: f000f000 G-D-C--W > > 00cbf000: f000f000 G-D-C--W > > 00cc0000: f000f000 G-D-C--W > > 00cc1000: f000f000 G-D-C--W > > 00cc2000: f000f000 G-D-C--W > > 00cc3000: f000f000 G-D-C--W > > 00cc4000: f000f000 G-D-C--W > > 00cc5000: f000f000 G-D-C--W > > 00cc6000: f000f000 G-D-C--W > > 00cc7000: f000f000 G-D-C--W > > 00cc8000: f000f000 G-D-C--W > > 00cc9000: f000f000 G-D-C--W > > 00cca000: f000f000 G-D-C--W > > 00ccb000: f000f000 G-D-C--W > > 00ccc000: f000f000 G-D-C--W > > 00ccd000: f000f000 G-D-C--W > > 00cce000: f000f000 G-D-C--W > > 00ccf000: f000f000 G-D-C--W > > 00cd0000: f000f000 G-D-C--W > > 00cd1000: f000f000 G-D-C--W > > 00cd2000: f000f000 G-D-C--W > > 00cd3000: f000f000 G-D-C--W > > 00cd4000: f000f000 G-D-C--W > > 00cd5000: f000f000 G-D-C--W > > 00cd6000: f000f000 G-D-C--W > > 00cd7000: f000f000 G-D-C--W > > 00cd8000: f000f000 G-D-C--W > > 00cd9000: f000f000 G-D-C--W > > 00cda000: f000f000 G-D-C--W > > 00cdb000: f000f000 G-D-C--W > > 00cdc000: f000f000 G-D-C--W > > 00cdd000: f000f000 G-D-C--W > > 00cde000: f000f000 G-D-C--W > > 00cdf000: f000f000 G-D-C--W > > 00ce0000: f000f000 G-D-C--W > > 00ce1000: f000f000 G-D-C--W > > 00ce2000: f000f000 G-D-C--W > > 00ce3000: f000f000 G-D-C--W > > 00ce4000: f000f000 G-D-C--W > > 00ce5000: f000f000 G-D-C--W > > 00ce6000: f000f000 G-D-C--W > > 00ce7000: f000f000 G-D-C--W > > 00ce8000: f000f000 G-D-C--W > > 00ce9000: f000f000 G-D-C--W > > 00cea000: f000f000 G-D-C--W > > 00ceb000: f000f000 G-D-C--W > > 00cec000: f000f000 G-D-C--W > > 00ced000: f000f000 G-D-C--W > > 00cee000: f000f000 G-D-C--W > > 00cef000: f000f000 G-D-C--W > > 00cf0000: f000f000 G-D-C--W > > 00cf1000: f000f000 G-D-C--W > > 00cf2000: f000f000 G-D-C--W > > 00cf3000: f000f000 G-D-C--W > > 00cf4000: f000f000 G-D-C--W > > 00cf5000: f000f000 G-D-C--W > > 00cf6000: f000f000 G-D-C--W > > 00cf7000: f000f000 G-D-C--W > > 00cf8000: f000f000 G-D-C--W > > 00cf9000: f000f000 G-D-C--W > > 00cfa000: f000f000 G-D-C--W > > 00cfb000: f000f000 G-D-C--W > > 00cfc000: f000f000 G-D-C--W > > 00cfd000: f000f000 G-D-C--W > > 00cfe000: f000f000 G-D-C--W > > 00cff000: f000f000 G-D-C--W > > 00d18000: d4000000 ------UW > > 00d19000: 00000000 -------W > > 00d1d000: 00c00000 G------- > > 00d22000: 00085000 G-DACT-- > > 00d2a000: c0003000 G--A---W > > 00df0000: fe830000 -------- > > 00df1000: 003f7000 G-DACTUW > > 00df4000: fe827000 --D----- > > 00df5000: a87cb000 --DACTUW > > 00df7000: 00000000 -----TUW > > 01000000: e4500000 GPDACT-W > > 01400000: 24500000 -P-A---- > > 01800000: e0200000 GPDACTUW > > 01c00000: 00e00000 GP---T-W > > 04c00000: b8a00000 GP---TU- > > 05c00000: e2000000 GP-----W > > 0bc00000: 75f00000 GP---T-- > > 0c800000: 13e00000 -PDACTUW > > 0d800000: 90f00000 GPDA--U- > > 0dc00000: 00200000 -P---TU- > > 0e400000: 00000000 -P---TU- > > 10400000: 90900000 -PDA-T-W > > 12000000: 002a8000 --DA---W > > 12002000: 00200000 --DA---W > > 12004000: 00400000 --DA---W > > 12006000: 00600000 --DA---W > > 12008000: 00800000 --DA---W > > 1200a000: 00a00000 --DA---W > > 1200c000: 00c00000 --DA---W > > 1200e000: 00e00000 --DA---W > > 13bf0000: 002a8000 --DA---W > > 13bf2000: 00200000 --DA---W > > 13bf4000: 00400000 --DA---W > > 13bf6000: 00600000 --DA---W > > 13bf8000: 00800000 --DA---W > > 13bfa000: 00a00000 --DA---W > > (qemu) > > > > Is here someone can explain such output? > > The output is generated in monitor.c:1812:1926. The functions use only > uint32_t, so I suppose PAE support has not been added. > > >> > On this side, I think Bochs is good. Unfortunately, it seems do not > >> > support gdb-stub debugging and general purpose debugging at the same > >> > time. > >> > > >> > I do not know if the Qemu team had made any plans to improve this? such > >> > as embedding the bochs debugging alike functionalities in future Qemu > >> > releases? > >> > >> Perhaps nobody were aware that there were any lack of functionalities. > >> I think these should be very easy to add. > >> > > > > This should be not so hard, and I may have a try in the close future. > > The difficulty here is that you have to consider several paging > > techniques invented by Intel, such as, i386, PAE, PSE(36), x86_64. And > > these works ONLY for the i386 platform. > > > > I just wondering: It is for sure that I am not the very first person who > > encounter such problems in the history of Qemu development. Why these > > simple functionalities were not added to the main release till now? > > I think that you really are the first one to report, so nobody has > ever needed such functionalities yet. In fact, I searched mail > archives and there was nothing relevant for PAE. >
OK, If I get some time in the close future, I will try to improve the relevant part (todo list: PAE/PSE(36), IDT, GDT, x86_64, possibly pipe-like feature) of Qemu that I think it will be helpful for people debugging code on the i386 platform. Anyway, are such improvements interested in Qemu community? If so, I will submit the code patch I made based on 0.13.0 to this list. Do hope later version of Qemu supports these.