From patchwork Thu Feb 4 17:28:49 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tomasz Nowicki X-Patchwork-Id: 8226131 X-Patchwork-Delegate: bhelgaas@google.com Return-Path: X-Original-To: patchwork-linux-pci@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 474D29F1C0 for ; Thu, 4 Feb 2016 17:34:00 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 5A92B20108 for ; Thu, 4 Feb 2016 17:33:59 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 3A4FD203A5 for ; Thu, 4 Feb 2016 17:33:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S966224AbcBDR32 (ORCPT ); Thu, 4 Feb 2016 12:29:28 -0500 Received: from mail-wm0-f49.google.com ([74.125.82.49]:36520 "EHLO mail-wm0-f49.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S966176AbcBDR3U (ORCPT ); Thu, 4 Feb 2016 12:29:20 -0500 Received: by mail-wm0-f49.google.com with SMTP id p63so222661710wmp.1 for ; Thu, 04 Feb 2016 09:29:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=semihalf-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=9YN1Gd4SpI4A0hkGiy4pI5eOT2i3WQRtTJ5DxLrXgc8=; b=YsiYchKkK6irkntzxYEKAsrXGh8V5GSiipZ2zzEVyxwrOufTTUmbMjKulxPTB3T8ic 0lI0B1rqfS5qlfpYxcO1C3Fvm8itSAz7wDIjDPKL/z2dsp4KWdelWyapGcEGE21MN/3Y XWBNnBPx/5aZlTRxM+W5ifPNToh+WBz4xgCwBfLReEAdtc4hFRswPJjjG8W8+MJ0VWEY 46QV8m4fYqafB9pR7GCdPNRv9YDn1TJbEKOBG34Uso5SESReR0EkhmQZvUncKdCYtgcw W9ok7B0Oy4ff9fCPM1iH1hV8QBftsYkvM1+DGoYmmY6ItskvGAWZ5NPD5zs2I2p9++Vg uNJA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=9YN1Gd4SpI4A0hkGiy4pI5eOT2i3WQRtTJ5DxLrXgc8=; b=gO2iBNtT8guw/jxHSW2OS0KxEfLWC2r/S8SZJS9JV0M9SrH33s2P2znAHmM18JoAXt 3WYg8v88fao5EP1Jnsi3Fl/V29Wxooj6hwY1nrXUeXxtmxr4ZbBUOjiAMRYu1uNdi4S/ SwkLgIsWU1yf6IwhnWEYWSd8Pd/w8R/vyisO422jXwTh/C9tJa/jiYmeHsYLsP6OjCxJ iT4xbqqL1EjXqgzHic+GYr75Bs4SLQllv8D1fsqUEYZz/2sRZMUqWU0+m8RPfJaTkOKy Cz2DUBIx7XajH6m6syxOx9y4gFTqWYpP5OqglUBxpjMz48w7P3YBdeuxt2XplbHorjTz P+Zg== X-Gm-Message-State: AG10YOR3ArLssf3zm3zN109cjVT/oFHUGzlrumyVKTKsn/aEvYUrlSFAYlxE2IJtZTNsvg== X-Received: by 10.28.217.74 with SMTP id q71mr31508903wmg.68.1454606958914; Thu, 04 Feb 2016 09:29:18 -0800 (PST) Received: from tn-HP-4.semihalf.local (cardhu.semihalf.com. [213.17.239.108]) by smtp.gmail.com with ESMTPSA id w8sm12238889wjx.21.2016.02.04.09.29.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 04 Feb 2016 09:29:18 -0800 (PST) From: Tomasz Nowicki To: bhelgaas@google.com, arnd@arndb.de, will.deacon@arm.com, catalin.marinas@arm.com, rjw@rjwysocki.net, hanjun.guo@linaro.org, Lorenzo.Pieralisi@arm.com, okaya@codeaurora.org, jiang.liu@linux.intel.com, Stefano.Stabellini@eu.citrix.com Cc: robert.richter@caviumnetworks.com, mw@semihalf.com, Liviu.Dudau@arm.com, ddaney@caviumnetworks.com, wangyijing@huawei.com, Suravee.Suthikulpanit@amd.com, msalter@redhat.com, linux-pci@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, linaro-acpi@lists.linaro.org, jchandra@broadcom.com, jcm@redhat.com, Tomasz Nowicki Subject: [PATCH V4 11/23] pci, acpi: Move ACPI host bridge device companion assignment to core code. Date: Thu, 4 Feb 2016 18:28:49 +0100 Message-Id: <1454606941-9523-12-git-send-email-tn@semihalf.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1454606941-9523-1-git-send-email-tn@semihalf.com> References: <1454606941-9523-1-git-send-email-tn@semihalf.com> Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org X-Spam-Status: No, score=-7.2 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,RP_MATCHES_RCVD,T_DKIM_INVALID,UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Currently we have two platforms (x86 & ia64) capable of PCI ACPI host bridge initialization. They both use sysdata to pass down parent device reference and both rely on NULL parent in pci_create_root_bus() to validate sysdata content. It looks hacky and prevents us from getting some firmware specific info for PCI host controller e.g. PCI bus domain number. However, we overcome that blocker by passing down parent device via pci_create_root_bus parameter (as the ACPI device type) and using ACPI_COMPANION_SET in core code for ACPI boot method. ACPI_COMPANION_SET is safe to run for all cases DT, ACPI and DT&ACPI. Suggested-by: Lorenzo Pieralisi Signed-off-by: Tomasz Nowicki Tested-by: Duc Dang Tested-by: Dongdong Liu Tested-by: Hanjun Guo Tested-by: Graeme Gregory Tested-by: Sinan Kaya Reviewed-by: Lorenzo Pieralisi --- drivers/acpi/pci_root.c | 5 ++++- drivers/pci/probe.c | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/acpi/pci_root.c b/drivers/acpi/pci_root.c index ae3fe4e..a65c8c2 100644 --- a/drivers/acpi/pci_root.c +++ b/drivers/acpi/pci_root.c @@ -846,7 +846,10 @@ struct pci_bus *acpi_pci_root_create(struct acpi_pci_root *root, pci_acpi_root_add_resources(info); pci_add_resource(&info->resources, &root->secondary); - bus = pci_create_root_bus(NULL, busnum, ops->pci_ops, + + /* Root bridge device needs to be sure of parent ACPI type */ + ACPI_COMPANION_SET(&device->dev, device); + bus = pci_create_root_bus(&device->dev, busnum, ops->pci_ops, sysdata, &info->resources); if (!bus) goto out_release_info; diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c index 6d7ab9b..81dd3a2 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c @@ -2100,6 +2100,8 @@ struct pci_bus *pci_create_root_bus(struct device *parent, int bus, bridge->dev.parent = parent; bridge->dev.release = pci_release_host_bridge_dev; dev_set_name(&bridge->dev, "pci%04x:%02x", pci_domain_nr(b), bus); + ACPI_COMPANION_SET(&bridge->dev, + parent ? to_acpi_device_node(parent->fwnode) : NULL); error = pcibios_root_bridge_prepare(bridge); if (error) { kfree(bridge);