Re: [patch 3/7] Check root chipset no_msi flag instead of all parent busses flags

From: Grant Grundler
Date: Thu Jul 06 2006 - 11:37:52 EST


On Wed, Jul 05, 2006 at 12:38:27AM -0400, Brice Goglin wrote:
> Grant Grundler wrote:
> > I still don't want the generic PCI code to assume a "root"
> > PCI Host bus controller was found after that loop.
>
> If I am not mistaken, we can use the following code to check whether we
> found a root chipset:
> unsigned cap;
> u16 val;
> u8 ext_type;
> cap = pci_find_capability(pdev, PCI_CAP_ID_EXP);

That might work fine on x86 boxen where firmware fakes all devices
to show up in PCI config space. That's not the case on many other
architectures. My whole point was the pdev doesn't exist for
a root chipset on those other arch's.

grant

> if (cap) {
> pci_read_config_word(pdev, cap + PCI_CAP_FLAGS, &val);
> ext_type = (val & PCI_EXP_FLAGS_TYPE) >> 4;
> if (ext_type == PCI_EXP_TYPE_ROOT_PORT)
> <check no_msi flag>
> }
>
> Brice
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/