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