[Xorg-driver-geode] Geode LX video testing results

Jordan Crouse jordan.crouse at amd.com
Sun Dec 23 09:11:08 PST 2007


On 22/12/07 15:47 -0500, Bart Trojanowski wrote:
> A bit more info on the PIC change...
> 
> * Bart Trojanowski <bart at jukie.net> [071222 11:35]:
> > * the emulator dies when executing outl(0x20, 00000018)
> > 
> >    This is *not* the first out() instruction.  It is the first port
> >    operation on port 0x20.
> > 
> >    0x20 is the initialization port for the PIC.  Why any INT 10 routine
> >    would need to (re)initialize the PIC is a mystery to me.
> 
> Here are the bits in port 0x20...
> 
>  7-5    0 (only used in 8080/8085 mode)
>  4      ICW1 is being issued
>  3      (LTIM)
>         =0  edge triggered mode
>         =1  level triggered mode
>  2      interrupt vector size
>         =0 successive interrupt vectors use 8 bytes (8080/8085)
>         =1 successive interrupt vectors use 4 bytes (80x86)
>  1      (SNGL)
>         =0  cascade mode
>         =1  single mode, no ICW3 needed
>  0      ICW4 needed
> 
> ... so 0x0018 means:
> 
>  - ICW1 is used
>  - level triggerred
>  - successive interrupt vectors use 8 bytes
>  - cascade mode
> 
> > Some thoughts...
> > 
> > * Is it common for other VIDEO BIOS implementations to muck with the PIC?
> > * What would happen if I ignored a write to port 20?
> 
> So I made the code skip over any writes to port 20.  Freeze is gone.  X
> starts up in 800x600... looks like DDC is not working.  Also exiting
> from X (ctrl-alt-bs) does not restore the display back to text mode.  I
> get (pseudo-)random blue and green noise on the screen.

Thats probably because the int10 code is failing when we sut down
graphics.  With a VGA text console, we _need_ a int10 to get back
the VGA mode.  Don't ask me why, I have no idea.

> I think that the x86emu needs to have a black list of ports that it
> should never ever touch even if the BIOS code it's executing requests
> it.  It would seem that port 20 is one of them... but there ought to be
> others.  Like port 0 for example; I don't know if this is a mistake or a real
> port.  What's at port 0?
> 
> Anyway, I propose that we try this trivial patch against xorg-core on
> some other hardware...
> 
> http://www.jukie.net/~bart/patches/xorg-server/20071222/0001-X86EMU-blacklist-I-O-port-20-for-INT-10-emulation.patch


> The xorg-server and video-amd packages rebuilt for Ubuntu/Gutsy are
> available here:
> 
> http://www.jukie.net/~bart/debian/xorg/xserver-xorg-core_1.3.0.0.dfsg-12ubuntu8_i386.deb
> http://www.jukie.net/~bart/debian/xorg/xserver-xorg-video-amd_2.7.7.3-1_i386.deb
> 
> It starts up X for me, but does it work for you? :)

if the int10 doesn't work on shutdown, then this is not useful to us,
unfortunately.  Also, we need to make sure this works on Insyde BIOS
too - but I expect that this might have the side effect of disabling
DDC everywhere, and that would be bad.  I can't test this until after
the New Year - can anybody try this on an Insyde BIOS that previously
had working DDC?

Jordan

-- 
Jordan Crouse
Systems Software Development Engineer 
Advanced Micro Devices, Inc.




More information about the Xorg-driver-geode mailing list