tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Missing ACPI PCI devices in acpi_pcidev_scan
> Hi Christoph,
>
> >> As AcpiWalkNamespace performs a DFS (with both pre and post order
> >> visitor callbacks), the parent-child information could be stored
> >> during the ACPI walk done by acpi_build_tree (in acpi.c), provided
> >> that struct acpi_devnode is modified to contain that information.
> >> What do you think?
> >
> > I appreciate it very much if you get acpi bus scanning done.
>
> With the attached patch, all PCI devices in the ACPI namespace should be
> detected by acpi_pcidev_scan(). This was more complex than I thought:
> the _BBN only applies to the PCI bus segment of the PCI host bridge.
> For PCI devices that are behind PCI-to-PCI bridges, getting the bus
> segment number is more tricky. By the way, I could not test that part
> since there are no PCI devices behind PCI-to-PCI bridges in the ACPI
> namespace of the two boxes that I use for testing.
>
> The file acpica/OsdHardware.c already contained PCI bus scanning code
> for ACPI. The function AcpiOsDerivePciId() in that file is supposed to
> do just that. There was a bug in this function (the PCI address in the
> returned PCI address is the address of the parent PCI-to-PCI bridge),
> and moreover the interface has changed in recent ACPICA. So I adapted
> the implementation to make it easily compatible with the latest ACPICA,
> as well as directly usable by acpi_pcidev_scan(). The main function
> doing the PCI bus scan has been moved from acpica/OsdHardware.c to
> acpi_pci.c.
>
> Since AcpiOsDerivePciId() is supposed to be called at ACPI's PCI_Config
> region initialization, there is surely a way to obtain the PCI id
> directly from ACPI (instead of re-executing AcpiOsDerivePciId()), but I
> do not know how to do that.
>
> I should also mention that AcpiOsReadPciConfiguration() is used to read
> the PCI configuration space, but this function does not take the segment
> group (aka PCI domain) into account.
First of all, thanks for doing the great work.
The patch looks really good to me. I will test it as soon as
possible.
>
> > The way you propose sounds right to me.
>
> This was about storing the parent-child relationships in acpi_devnode.
> The AcpiWalkNamespace function in -current does not have the new
> interface with both pre-order and post-order callbacks. According to
> ACPICA's changelog [1], this was added in november 2009. I tried using
> a stack (SLIST) to do it with the old interface, but the code was
> becoming ugly, whereas it would be trivial with the new interface, so I
> guess it's not worth it.
Right.
*Adding jmcneill to CC*
Jared: Can you update acpica to latest version, please?
Christoph
>
> [1] http://www.acpica.org/download/changes.txt
>
Home |
Main Index |
Thread Index |
Old Index