On Thu, Oct 21, 2010 at 7:08 PM, Scott Duplichan scott@notabs.org wrote:
-----Original Message----- From: coreboot-bounces+scott=notabs.org@coreboot.org [mailto:coreboot-bounces+scott=notabs.org@coreboot.org] On Behalf Of Marc Jones Sent: Thursday, October 21, 2010 07:47 PM To: Scott Duplichan Cc: coreboot@coreboot.org 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@notabs.org wrote: ]> Hello, ]> ]> 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? ] ]Scott, ] ]I think that you can define the device you want disabled in ]devicetree.cb and set it to off. ] ]Marc ]-- ]http://se-eng.com
Hello Marc,
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 comment?
Marc