(note: c0.b means byte at register c0, and c0.l means 32-bits at c0. this is the 'setpci' command nomenclature)
I'm seeing something on Function 1 on K8 that I don't understand.
Consider config. register c0.b. That register, if set to 0x33, enables ISA and legacy VGA ports to the link defined in register c4.l (i.e. dest node/dest link). In the case of the s2885, and a vga card in the pci33 slot, the pair c0.l and c4.l set up legacy vga to go to HT link #2, and c0.b is set to 0x33.
What I don't understand is this: if, after booting, I use setpci to set c0.b to 0, the system as a whole continues to work fine. If I set c0.l AND c4.l to 0, then the system works. I would expect the system to die as I/O no longer would be routed to HT link #2.
What am I missing? This is a system booted nosmp, so all I/O should be going through cpu 0 and 0:18.1 settings should control I/O. Is there some 'magic' to make these settings really set into the chip?
I've run into this as we are trying to get vga to work under linuxbios using the emulation code (freebios/util/vgabios/testbios). We have actually got this code close to working on the normal bios, and have even made an nvidia card come up correctly in the agp slot, but we can't get vga enables set up so that I/O to the legacy VGA ports works under linuxbios.
Any hints would be gratefully accepted!
thanks
ron
* ron minnich rminnich@lanl.gov [040108 18:22]:
What I don't understand is this: if, after booting, I use setpci to set c0.b to 0, the system as a whole continues to work fine. If I set c0.l AND c4.l to 0, then the system works. I would expect the system to die as I/O no longer would be routed to HT link #2.
What am I missing? This is a system booted nosmp, so all I/O should be going through cpu 0 and 0:18.1 settings should control I/O. Is there some 'magic' to make these settings really set into the chip?
Do these registers maybe want an LDTSTOP_L or a reset asserted to become significant?
Are you sure your other operations do access the VGA ports at all and don't operate on the graphics device directly?
I've run into this as we are trying to get vga to work under linuxbios using the emulation code (freebios/util/vgabios/testbios). We have actually got this code close to working on the normal bios, and have even made an nvidia card come up correctly in the agp slot, but we can't get vga enables set up so that I/O to the legacy VGA ports works under linuxbios.
I got an S2880 up with VGA by using the ATI biosless patch for 2.4.x done by some SGI guy. That is not really flexible, but it helped me to see light for the first time in LinuxBIOS
Stefan
On Thu, 8 Jan 2004, Stefan Reinauer wrote:
Do these registers maybe want an LDTSTOP_L or a reset asserted to become significant?
ouch. maybe.
Are you sure your other operations do access the VGA ports at all and don't operate on the graphics device directly?
These are operations that access 0x3cc and other legacy vga stuff, and they're not getting to vga ...
I got an S2880 up with VGA by using the ATI biosless patch for 2.4.x done by some SGI guy. That is not really flexible, but it helped me to see light for the first time in LinuxBIOS
The right solution. We're doing the wrong solution (running the VGA bios) because VGA people won't let us do the right solution.
ron
* ron minnich rminnich@lanl.gov [040108 23:11]:
I got an S2880 up with VGA by using the ATI biosless patch for 2.4.x done by some SGI guy. That is not really flexible, but it helped me to see light for the first time in LinuxBIOS
The right solution. We're doing the wrong solution (running the VGA bios) because VGA people won't let us do the right solution.
What VGA device are you using? The 2880 has the ATI Rage XL chip which seems to be used in quite some AMD64 implementations. I used this patch: http://ftp.fi.muni.cz/pub/linux/sgi/people/ppopov/aty_nobiosinit.patch
Best regards, Stefan Reinauer
On Fri, 9 Jan 2004, Stefan Reinauer wrote:
What VGA device are you using? The 2880 has the ATI Rage XL chip which seems to be used in quite some AMD64 implementations. I used this patch: http://ftp.fi.muni.cz/pub/linux/sgi/people/ppopov/aty_nobiosinit.patch
many types, unfortunately.
ron
ron minnich rminnich@lanl.gov writes:
On Fri, 9 Jan 2004, Stefan Reinauer wrote:
What VGA device are you using? The 2880 has the ATI Rage XL chip which seems to be used in quite some AMD64 implementations. I used this patch: http://ftp.fi.muni.cz/pub/linux/sgi/people/ppopov/aty_nobiosinit.patch
many types, unfortunately.
Just to clear up the conversation. There are two distinct problems, with two separate solutions.
1) Onboard video. - We should be able to do this open source and very early. As generally these are not high end chips.
2) Video Card. - This will require running a PC Option ROM.
On 8 Jan 2004, Eric W. Biederman wrote:
- Video Card.
- This will require running a PC Option ROM.
and this is the one we're working on.
ron
* ron minnich rminnich@lanl.gov [040108 23:11]:
I got an S2880 up with VGA by using the ATI biosless patch for 2.4.x done by some SGI guy. That is not really flexible, but it helped me to see light for the first time in LinuxBIOS
The right solution. We're doing the wrong solution (running the VGA bios) because VGA people won't let us do the right solution.
The right solution is actually to use FCode for device initialization. ;-) You don't really want another layer of graphics drivers next to fbdev, X11, directfb, ggi/kgi, svgalib, and what they are called (even though non really copes with the layer we are talking about)
As soon as I get a working Open Firmware PCI driver done for OpenBIOS, this is the way to go (at least for the few devices with FCode that don't do the Apple fake thingie)
Stefan
On Fri, 9 Jan 2004, Stefan Reinauer wrote:
The right solution is actually to use FCode for device initialization.
it's right, but nobody puts fcode in their VGA bios AFAIK (or am I wrong).
Plus that FCode will probably want to get to 0x3cc :-(
ron
ron minnich rminnich@lanl.gov writes:
(note: c0.b means byte at register c0, and c0.l means 32-bits at c0. this is the 'setpci' command nomenclature)
I'm seeing something on Function 1 on K8 that I don't understand.
Consider config. register c0.b. That register, if set to 0x33, enables ISA and legacy VGA ports to the link defined in register c4.l (i.e. dest node/dest link). In the case of the s2885, and a vga card in the pci33 slot, the pair c0.l and c4.l set up legacy vga to go to HT link #2, and c0.b is set to 0x33.
What I don't understand is this: if, after booting, I use setpci to set c0.b to 0, the system as a whole continues to work fine. If I set c0.l AND c4.l to 0, then the system works. I would expect the system to die as I/O no longer would be routed to HT link #2.
What am I missing? This is a system booted nosmp, so all I/O should be going through cpu 0 and 0:18.1 settings should control I/O. Is there some 'magic' to make these settings really set into the chip?
For this kind of setting I don't think there is. But you can't not route traffic on the Opteron. If traffic is not routed it goes out the default link. Which is why my broken HT routing and setup code worked for so long.
I've run into this as we are trying to get vga to work under linuxbios using the emulation code (freebios/util/vgabios/testbios). We have actually got this code close to working on the normal bios, and have even made an nvidia card come up correctly in the agp slot, but we can't get vga enables set up so that I/O to the legacy VGA ports works under linuxbios.
Any hints would be gratefully accepted!
The generic code should already handle this properly. With some small exceptions of non standard registers.
Eric
On 8 Jan 2004, Eric W. Biederman wrote:
The generic code should already handle this properly. With some small exceptions of non standard registers.
the generic code works wonderfully well but does not set the vga enable bit. The fix is trivial but as a quick test I just hardwired the 0xc0 register in the setup code and ... still no vga i/o happening to the vga card. Boy, this is driving me nuts :-)
ron