On Tue, 30 Aug 2005, Bang Jun-Young wrote:
On Mon, 29 Aug 2005 17:49:02 +0900, Bang Jun-Young <junyoung@xxxxxxxxx>
wrote:
I got the following error when I ran XFree86 tagged xf-4_5_99_10 with vesa
driver on a VMware virtual machine running NetBSD/i386:
Fatal server error:
xf86MapVidMem: could not mmap /dev/mem [s=ffec0000,a=ffeb9898] (Invalid argument)
I have found that this was caused by changes made in helper_exec.c r1.28.
Reverting to r1.27 fixed the problem.
Upon some experiments, I have found that the following code is causing
the problem:
CARD32
x_inl(CARD16 port)
{
CARD32 val;
if (port & 0x0003U) {
UnalignedIO(Int10Current, "read", port, 4);
if (port & 0x0001U) {
val = x_inb(port);
val |= (CARD32)x_inw(port + 1) << 8;
val |= (CARD32)x_inb(port + 3) << 24;
} else {
val = x_inw(port);
val |= (CARD32)x_inw(port + 2) << 16;
}
} ... snipped ...
}
It seems that a unaligned dword-sized IO can't be separated to smaller
word/byte-sized IO's. I'm not sure if this is a bug of VMware virtual
graphics adapter.
It is, one I pointed out to VMWare sometime ago. I'll commit a workaround
for this soon. Thanks for reminding me of VMWare's unaligned accesses.
Marc.
+----------------------------------+-----------------------------------+
| Marc Aurele La France | work: 1-780-492-9310 |
| Academic Information and | fax: 1-780-492-1729 |
| Communications Technologies | email: tsi@xxxxxxxxxxx |
| 352 General Services Building +-----------------------------------+
| University of Alberta | |
| Edmonton, Alberta | Standard disclaimers apply |
| T6G 2H1 | |
| CANADA | |
+----------------------------------+-----------------------------------+
XFree86 developer and VP. ATI driver and X server internals.
_______________________________________________
XFree86 mailing list
XFree86@xxxxxxxxxxx
http://XFree86.Org/mailman/listinfo/xfree86