Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 1 Sep 2019 16:20:38 +0930
From:      "O'Connor, Daniel" <darius@dons.net.au>
To:        Pete Wright <pete@nomadlogic.org>
Cc:        freebsd-stable <freebsd-stable@freebsd.org>
Subject:   Re: FreeBSD 12 Xorg vs X11SSH-F / AST
Message-ID:  <A1B16DCD-1B96-4216-A555-09C0B3B2AF0E@dons.net.au>
In-Reply-To: <2B354C0E-8F94-412B-B6B5-DCF681DAE5C8@dons.net.au>
References:  <2EDB82D8-9EC5-4988-AD1C-21305E712E46@dons.net.au> <4dbdbf1e-b823-20e4-8516-55bb9fdfab88@nomadlogic.org> <7AC86383-2C8E-427D-88BD-48B91FE9ECBC@dons.net.au> <2EB91070-54F2-4046-BB5A-86FBE41FFBE1@dons.net.au> <2B354C0E-8F94-412B-B6B5-DCF681DAE5C8@dons.net.au>

next in thread | previous in thread | raw e-mail | index | archive | help


> On 27 Aug 2019, at 18:10, O'Connor, Daniel <darius@dons.net.au> wrote:
>=20
>> On 27 Aug 2019, at 13:45, O'Connor, Daniel <darius@dons.net.au> =
wrote:
>>=20
>> Although I could set uncacheable (no difference).
>>=20
>> Next stop will be obscure BIOS settings I suppose.
>=20
> I couldn't find anything useful there.
>=20
> I realised that my scfb failure was because I am booting BIOS rather =
than UEFI but I will have to reinstall before I can fix that.

I reinstalled with UEFI and scfb works now (not sure if it's any faster =
yet). It didn't fix ast though.

I rebuilt the AST driver with debugging and found it was stuck at..
0x0000000801ae1d86 in ASTGetDRAMInfo (pScrn=3D0x801af7000) at =
ast_vgatool.c:439
439	    } while (*(volatile ULONG *) (pAST->MMIOVirtualAddr + =
0x10000) !=3D 0x01);

(gdb) print/x *(volatile ULONG *) (pAST->MMIOVirtualAddr + 0x10000)
$2 =3D 0xffffffff

Reading around this area also reads 0xffffffff all the time.

If I comment that out X runs but the AST driver then rejects every mode =
line, eg
[ 48784.246] (II) AST(0): Not using driver mode "1920x1080" (bad mode =
clock/interlace/doublescan)

I checked the code against what is working in FreeBSD 11 and it is =
identical. That does use an older Xorg server though so I am not sure if =
it is FreeBSD 12 (compiler or kernel or..) or an Xorg change that has =
broken things.

I modified the driver on the working system to dump the values that =
ASTGetDRAMInfo extracts and hard coded them and it works(!) on the =
FreeBSD 12 system. Obviously while this works for me it's not a long =
term solution :)

I added some debugging to the mapping process in ASTMapMMIO:
[ 71021.555] (II) AST(0): pci_device_map_range Addr 0xdf000000 size =
0x20000, err 0 result 0x01b30000

But when I check ASTGetDRAMInfo()..
(gdb) print/x pAST->MMIOVirtualAddr
$2 =3D 0x801b30000

(gdb) print/x *(0x01b30000)
Cannot access memory at address 0x1b30000

The mappings look to match dmesg:
vgapci0: <VGA-compatible display> port 0xc000-0xc07f mem =
0xde000000-0xdeffffff,0xdf000000-0xdf01ffff irq 18 at device 0.0 on pci4

Curiously on the working machine with an identical motherboard it is at =
a different location:
vgapci0: <VGA-compatible display> port 0xd000-0xd07f mem =
0xf6000000-0xf6ffffff,0xf7000000-0xf701ffff irq 16 at device 0.0 on pci4

Any suggestions welcome :)

--
Daniel O'Connor
"The nice thing about standards is that there
are so many of them to choose from."
 -- Andrew Tanenbaum





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?A1B16DCD-1B96-4216-A555-09C0B3B2AF0E>