On 24.01.2010 17:16, Izik Eidus wrote:
On Sun, 24 Jan 2010 17:10:46 +0100 Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net wrote:
On 24.01.2010 16:32, Izik Eidus wrote:
On Sun, 24 Jan 2010 15:26:55 +0100 Carl-Daniel Hailfinger c-d.hailfinger.devel.2006@gmx.net wrote:
So we can see that even the acpi spec example mark the LFB region as reserved.
No, the memory hole is marked as reserved. The LFB region is not listed above.
But how in case you use vesa with isa, windows will know it cant remap pci devices into that physical address?
ISA only supports 24 bit addresses anyway, so you can't map any resource of an ISA card above 16 MByte. That means an ISA device will never use the region at 0xE0000000.
http://www.microsoft.com/whdc/connect/pci/isa-bus.mspx implies that the ISAPNP interface of the BIOS is available for querying any resources, so in case you have an EISA device and if that device can indeed use full 32 bit addressing (very unusual for EISA hardware) you can still ask the BIOS to retrieve the location of any memory regions.
we are talking here about the framebuffer of the vesa device, it is hardcoded mapped by the vgabios, for example qemu will map it to that address (or 0xf000000) if they changed it.
Earlier, you wrote "vesa with isa". If Qemu or the VGABIOS maps the vesa framebuffer of an ISA device at any address above 16 MB, that is a bug because it would be impossible on real hardware.
It is sure being used by std vga when not working with pci.
int isa_vga_init(void) { VGACommonState *s;
s = qemu_mallocz(sizeof(*s)); vga_common_init(s, VGA_RAM_SIZE); vga_init(s); vmstate_register(0, &vmstate_vga_common, s); s->ds = graphic_console_init(s->update, s->invalidate, s->screen_dump, s->text_update, s);
#ifdef CONFIG_BOCHS_VBE /* XXX: use optimized standard vga accesses */ cpu_register_physical_memory(VBE_DISPI_LFB_PHYSICAL_ADDRESS, VGA_RAM_SIZE, s->vram_offset);
That looks like a bug. If you're talking about an ISA device, the LFB must be smaller than 16 MB and its upper end must be at 16 MB or below. If you only allow power-of-two sizes, the maximum LFB size is 8 MB located at 8 MB. (LFB size of 16 MB is not allowed because it would mean the lowest 640 kB are part of the LFB.) If the device is EISA (instead of ISA) it can work, but I think you need the full PNPBIOS extensions for it to work (AFAIK isapnptools have readable docs/code and could help to find out what is needed).
#endif /* ROM BIOS */ rom_add_vga(VGABIOS_FILENAME); return 0; }
Thanks for quoting that code.
Regards, Carl-Daniel