tech-userlevel archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: [PATCH] pcictl: simplify its usage
On Thu, Jun 04, 2009 at 10:17:04PM +0200, Christoph Egger wrote:
> Manuel Bouyer wrote:
> > On Thu, Jun 04, 2009 at 08:01:39PM +0200, Manuel Bouyer wrote:
> >> On Thu, Jun 04, 2009 at 07:18:50PM +0200, Matthias Drochner wrote:
> >>> mouse%Rodents-Montreal.ORG@localhost said:
> >>>> But you need /dev/pci in order to have something to open when you
> >>>> don't have a bus number available.
> >>> I didn't follow all the thread, just want to make sure that
> >>> everyone is aware of the fact that the N and the M in
> >>> pcictl /dev/pciN <command> -b M
> >>> are not the same: N is a logical index chosen by autoconf
> >>> and M is the physical bus number.
> >>> This might be not a big issue with a simple PC, but on
> >>> a big box with multiple PCI hierarchies the same physical bus
> >>> number can occur multiple times.
> >> Yes, you're right. The API proposed by Christoph doens't work in
> >> that case. I think it needs to use the autoconf index in this case,
> >> not the physical bus number.
> >
> > This is the case on a DS20 system:
> > cpu0 at mainbus0: ID 0 (primary), 21264-4
> > cpu0: Architecture extensions: 303<PAT,MVI,FIX,BWX>
> > tsc0 at mainbus0: 21272 Core Logic Chipset, Cchip rev 0
> > tsc0: 8 Dchips, 2 memory buses of 32 bytes
> > tsc0: arrays present: 256MB, 256MB, 0MB, 0MB, Dchip 0 rev 1
> > tsp0 at tsc0
> > pci0 at tsp0 bus 0
> > [...]
> > tsp1 at tsc0
> > pci1 at tsp1 bus 0
> >
> > both have the same physical bus number (which is stored in sc_bus).
> > What's unique is the autoconf index.
>
> PCI domains should be unique, too.
> In my patch, I have this snippet:
>
> + for (i = 0; i < pci_cd.cd_ndevs; i++) {
> + pci = pci_cd.cd_devs[i];
> + if (pci == NULL)
> + continue;
> +
> + sc = device_private(pci);
> + if (sc != NULL && /* sc->sc_domain == minor(dev) && */
> + sc->sc_bus == bdfr->bus)
> + break;
> + }
> + if (i >= pci_cd.cd_ndevs)
> + return NULL;
>
> Note the commented out PCI domain check.
> As Joerg pointed out we don't support PCI domains, therefore I can't
> enable the check which Manuel needs on his machine.
But what we have right now does work !
You just need to use the autoconf index instead of the bus number.
Also, minor(dev) is not the PCI bus domain but the autoconf index.
--
Manuel Bouyer <bouyer%antioche.eu.org@localhost>
NetBSD: 26 ans d'experience feront toujours la difference
--
Home |
Main Index |
Thread Index |
Old Index