[coreboot] how to prevent legacy resource conflict with multiple VGA cards
marcj303 at gmail.com
Fri Oct 22 03:51:55 CEST 2010
On Thu, Oct 21, 2010 at 7:08 PM, Scott Duplichan <scott at notabs.org> wrote:
> -----Original Message-----
> From: coreboot-bounces+scott=notabs.org at coreboot.org [mailto:coreboot-bounces+scott=notabs.org at coreboot.org] On Behalf Of Marc Jones
> Sent: Thursday, October 21, 2010 07:47 PM
> To: Scott Duplichan
> Cc: coreboot at 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 at 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?
> ]I think that you can define the device you want disabled in
> ]devicetree.cb and set it to off.
> 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
More information about the coreboot