[parisc-linux] iotree thoughts

Grant Grundler grundler@puffin.external.hp.com
Fri, 24 Aug 2001 23:59:25 -0600


Matthew Wilcox wrote:
> I looked through the Raven ERS, it wasn't too helpful.  I managed to find
> the Dino driver in the HPUX source tree.... it doesn't seem to make the
> call itself, but instead:

[...]


I was confused. The Dino built-in discovery doesn't make PDC calls.

HPUX 11.01 (9905 release?) does make PDC calls in the boot initialization
sequence.  IIRC, This associates PCI device numbers with slot numbers
printed on the back of the machine. Useful for defective FRU ("Field
Replacable Unit") isolation/error reporting.  AFAIK, This only works
for platforms with bridge-mode Dino - ie B1XX/CXXX workstations.
(Calls are appended for interested folks).

...
> So it seems to me that we shouldn't do bus-walks underneath Dino, but
> rely on PDC telling us about the device if it's attached.

Uhm, "underneath" is ambiguous since both built-ins and PCI devices
are heirarchially below "dino" (iotree view - not HW view).
We need to do PCI bus walks for PCI devices.

I'll assume your statement only refers to Dino built-ins and agree.
FWIW, same is true for LASI devices.

grant


Grant Grundler
parisc-linux {PCI|IOMMU|SMP} hacker
+1.408.447.7253

    /*
     * Get physical platform information
     */
    status = hversion_pdc_call(
                 3,(u_int)PDC_ARG2_IS_RADDR, 10, (ulong_t)PDC_PCI,
                 (ulong_t)PDC_PCI_GET_IFACE_INFO, (ulong_t)&(DINO(this)->ifinfo)
,
                 (ulong_t)this->base_addr,(ulong_t)0,(ulong_t)0,(ulong_t)0,
                 (ulong_t)0,(ulong_t)0,(ulong_t)0);
...
    /*
     * Total number of devices to get "slot info" for - all the slots plus
     *   all the built-ins
     */
    num_devs = DINO(this)->ifinfo.num_slots + DINO(this)->ifinfo.num_built_ins;
...
    for (slot_idx = 0; slot_idx < num_devs; slot_idx++) {
        ulong_t slot_path[32];
        status = hversion_pdc_call(
                     4, (u_int)PDC_ARG2_IS_RADDR, 32, (ulong_t)PDC_PCI,
                     (ulong_t)PDC_PCI_GET_SLOT_INFO, (ulong_t) slot_path,
                     (ulong_t)this->base_addr, (ulong_t)slot_idx,(ulong_t)0,
                     (ulong_t)0, (ulong_t)0, (ulong_t)0, (ulong_t)0);
...