Re: dexconf should default to PCI:1:0:0 ?
On Sat, May 29, 2004 at 03:56:03AM -0500, Branden Robinson wrote:
> On Thu, May 27, 2004 at 11:03:24AM +0200, Bill Allombert wrote:
> > Hello X Strike Force,
> > I have just made a sarge install and I found that
> > dexconf default to PCI:0:1:0.
> That's just about completely incorrect.
> More accurately, it defaults to:
> 1) whatever lspci says the first VGA compatible device is, if lspci is
> available, returns information, and (if you have more than one video
> card or if you're on a PowerPC);
This is not the case here. dexconf default to PCI:0:1:0, but I have
0000:00:01.0 PCI bridge: Intel Corp. 82865G/PE/P PCI to AGP Controller (rev 02)
0000:01:00.0 VGA compatible controller: ATI Technologies Inc Radeon RV250 If [Radeon 9000] (rev 01)
> Let's look at the code, shall we?
> VIDEO_CARD=$(LC_ALL=C lspci -n | grep "Class 0300:" | head -n 1 | cut -d\ -f1)
> if [ -n "$VIDEO_CARD" ]; then
> # we now have an entry in "hex:hex.hex" format, need "PCI:decimal:decimal:decimal"
> BUS=$(printf "%d" 0x$(echo $VIDEO_CARD | cut -d: -f1) )
> DEVICE=$(printf "%d" 0x$(echo $VIDEO_CARD | cut -d: -f2 | cut -d. -f1) )
> FUNCTION=$(printf "%d" 0x$(echo $VIDEO_CARD | cut -d. -f2) )
OK, that settle it: VIDEO_CARD is 0000:01:00.0, which is the correct device,
but then DEFAULT is set incorrectly, apparently it expects a different lspci
As a matter of fact:
$ BUS=$(printf "%d" 0x$(echo $VIDEO_CARD | cut -d: -f1) )
$ DEVICE=$(printf "%d" 0x$(echo $VIDEO_CARD | cut -d: -f2 | cut -d. -f1) )
$ FUNCTION=$(printf "%d" 0x$(echo $VIDEO_CARD | cut -d. -f2)
$ echo $DEFAULT
I have done a straight d-i sarge install:
ii pciutils 2.1.11-8 Linux PCI Utilities (for 2.*.* kernels)
> > I expect most box to have a video adapter on the AGP port nowadays, so
> > PCI:1:0:0 seems a better default.
> I think you're proceeding from an invalid assumption; namely that
> "PCI:0:1:0" is some sort of hard-coded default.
This is true, because "PCI:0:1:0" seemed like an hardcoded value.
> > Also it is unfortunate XFree86 and lspci does not use the same exact
> > format for PCI ids, (lspci give 0000:01:00.0, but XFree86 want
> > PCI:1:0:0) so I ended up slighlty confused...
> The debconf template explains the format, and cautions about the
> difference between decimal and hexadecimal.
The template explains the old lspci format, not the new one.
But anyway I did a similar mistake than your script by assuming
the old behaviour.
> I am unwilling to change the format of the BusID parameter that the
> XFree86 X server accepts. To do would render people's XF86Config-4
> files incompatible between distributions.
> If you have suggestions for how the following can be improved, please
> offer them.
Maybe a -X option to lspci that output XF86Config compatible ids would
be nice. Also this would allow lspci -n to change output without
breaking dexconf. Especially since lspci -n format is not documented.
Imagine a large red swirl here.