On Thu, Oct 21, 2010 at 7:08 PM, Scott Duplichan <scott(a)notabs.org> wrote:
[mailto:email@example.com] On Behalf Of Marc Jones
Sent: Thursday, October 21, 2010 07:47 PM
To: Scott Duplichan
Subject: Re: [coreboot] how to prevent legacy resource conflict with multiple VGA cards
]On Thu, Oct 21, 2010 at 4:18 PM, Scott Duplichan <scott(a)notabs.org> wrote:
]> I have Win7 working well with mahogany_fam10 if I use a PCI
]> video card. However, Device manager complains that it is unable
]> to find enough free resources for the UMA graphics controller.
]> Running an AMI legacy BIOS shows the problem can be solved by
]> enabling the PCI command register memory and I/O enable bits
]> for only the graphics card that you are using. Is there a way
]> to make coreboot do this, and if not, any suggestions on where
]> best to implement such a feature?
]I think that you can define the device you want disabled in
]devicetree.cb and set it to off.
Thanks for the suggestion. What I am really looking for is the
special handling that a commercial BIOS does for legacy video
devices. Say you have a typical desktop UMA board. If you add a
PCI video card, Windows resource manager will not report any
resource conflicts. The same is not true for coreboot+seabios.
When you add the PCI video card, Windows device manager reports
a resource conflict.
One detail I forgot to mention in the original email. What is
the exact resource conflict? Coreboot does properly assign
unique bar values for both video devices. However, the PCI class
code tells the OS that in addition to the bars, both video
devices decode memory range a0000-bffff, I/O 3b0-3bb, and I/O
3c0-3df. So there really is a conflict, and using the pci
command register to turn off memory and I/O decoding for all but
one video card solves the problem.
To disable the command register should be to set the device to off.
I think that you really want is the legacy video bit in the device and
bridge, VGA pallet snoop and VGA enable in the command register. As
far as I know, this isn't something we have had to handle previously.
I think that the right way is to add a resource ( like IORESOURCE),
but I don't have any implementation ideas beyond that (like how to
mark a specific one as the VGA resource.) Maybe Myles or Stefan can