On Wednesday, August 26, 2015 12:33:29 AM Suravee Suthikulpanit wrote:
> This patch adds support for setting up PCI device DMA coherency from
> ACPI _CCA object that should normally be specified in the DSDT node
> of its PCI host bridge.
> 
> Signed-off-by: Suravee Suthikulpanit <suravee.suthikulpa...@amd.com>
> CC: Bjorn Helgaas <bhelg...@google.com>
> CC: Catalin Marinas <catalin.mari...@arm.com>
> CC: Rob Herring <robh...@kernel.org>
> CC: Will Deacon <will.dea...@arm.com>
> CC: Rafael J. Wysocki <r...@rjwysocki.net>
> CC: Murali Karicheri <m-kariche...@ti.com>
> ---
>  drivers/pci/probe.c | 15 ++++++++++-----
>  1 file changed, 10 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
> index 4de6594..2fd2a60 100644
> --- a/drivers/pci/probe.c
> +++ b/drivers/pci/probe.c
> @@ -1551,17 +1551,22 @@ static void pci_init_capabilities(struct pci_dev *dev)
>   * @dev: ptr to pci_dev struct of the PCI device
>   *
>   * Function to update PCI devices's DMA configuration using the same
> - * info from the OF node of host bridge's parent (if any).
> + * info from the OF node or ACPI node of host bridge's parent (if any).
>   */
>  static void pci_dma_configure(struct pci_dev *dev)
>  {
>       struct device *bridge = pci_get_host_bridge_device(dev);
>  
>       if (IS_ENABLED(CONFIG_OF) && dev->dev.of_node) {
> -             if (!bridge->parent)
> -                     return;
> -
> -             of_dma_configure(&dev->dev, bridge->parent->of_node);
> +             if (bridge->parent)
> +                     of_dma_configure(&dev->dev,
> +                                      bridge->parent->of_node);
> +     } else if (has_acpi_companion(bridge)) {
> +             struct acpi_device *adev = to_acpi_node(bridge->fwnode);
> +             int coherent = acpi_check_dma_coherency(adev);
> +
> +             if (-1 != coherent)

The ordering of this check is somewhat unusual.


> +                     arch_setup_dma_ops(&dev->dev, 0, 0, NULL, coherent);
>       }
>  
>       pci_put_host_bridge_device(bridge);
> 

Thanks,
Rafael

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to