Page 1 of 1

Reading VGA's PCI BAR Register in QEMU causes failure

Posted: Thu Nov 26, 2020 1:49 pm
by kashimoto
Hi Guys!
I am trying to read/write the VGA's memory(bochs display in qemu).
it is running in 64 bit protected mode.
I retrieved the BAR address: 0xFD000800, so the actual address is 0xFD000000.
i used this as a source: viewtopic.php?f=1&t=32898

Here they say to write to that BAR location, but it cause failures on my site.
But when i just simply read that region *(uint8_t*)(address), it just dies seemingly in Qemu.

VGA is set to the correct resolution, qemu window resizes, etc.

Although in Bochs can see (i think) the content of that address: 0xF000FF53, but it is still just keeps restarting over and over.

What am i doing wrong? Thanks for any ideas

bochs log:
0001425690d[CPU0 ] inhibit interrupts mask = 3
00001425695d[CPU0 ] real mode activated
00001425703d[CPU0 ] inhibit interrupts mask = 3
00001554541i[VBIOS ] VGABios $Id: vgabios.c 226 2020-01-02 21:36:23Z vruppert $
00001554612i[BXVGA ] VBE known Display Interface b0c0
00001554644i[BXVGA ] VBE known Display Interface b0c5
00001557287i[VBIOS ] VBE Bios $Id: vbe.c 228 2020-01-02 23:09:02Z vruppert
00001557380d[CPU0 ] interrupt(): vector = 10, TYPE = 4, EXT = 0
00001597090d[CPU0 ] interrupt(): vector = 10, TYPE = 4, EXT = 0
00001615408d[CPU0 ] interrupt(): vector = 10, TYPE = 4, EXT = 0

Re: Reading VGA's PCI BAR Register in QEMU causes failure

Posted: Thu Nov 26, 2020 5:37 pm
by Octocontrabass
kashimoto wrote:What am i doing wrong?
Did you map physical address 0xFD000000 to a virtual address in order to access it? (Also, you should set up exception handlers.)
kashimoto wrote:Although in Bochs can see (i think) the content of that address: 0xF000FF53
That looks like the contents of physical address 0.

Re: Reading VGA's PCI BAR Register in QEMU causes failure

Posted: Tue Dec 22, 2020 5:58 am
by kashimoto
Yeah i forgot to map that address range!
Thank you!