From patchwork Wed Jan 13 13:20:57 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tomasz Nowicki X-Patchwork-Id: 8025581 Return-Path: X-Original-To: patchwork-linux-arm@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 440609F744 for ; Wed, 13 Jan 2016 13:31:22 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 6D1F02047D for ; Wed, 13 Jan 2016 13:31:21 +0000 (UTC) Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.9]) (using TLSv1.2 with cipher AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 9B09720461 for ; Wed, 13 Jan 2016 13:31:20 +0000 (UTC) Received: from localhost ([127.0.0.1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.80.1 #2 (Red Hat Linux)) id 1aJLTd-00089F-LL; Wed, 13 Jan 2016 13:28:41 +0000 Received: from mail-wm0-x234.google.com ([2a00:1450:400c:c09::234]) by bombadil.infradead.org with esmtps (Exim 4.80.1 #2 (Red Hat Linux)) id 1aJLNB-0001EO-Ah for linux-arm-kernel@lists.infradead.org; Wed, 13 Jan 2016 13:22:04 +0000 Received: by mail-wm0-x234.google.com with SMTP id f206so293989915wmf.0 for ; Wed, 13 Jan 2016 05:21:40 -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=G6+VTwv6O6sUI5oI2pPkb3N2mHg+HDR4NxEhaSG2bfo=; b=C0Cya4bwEtrzuLICCxHgdantIKg3CXNgUfskaTHPl4e7Nm6+5dZywjRGSLLiJlCmd0 2bEWsXaBh2F52wcxxnXoEQlsYNjhVbhEr9Sr2ef3yRs1+QGsrA2THWI9Kt+6AwLhv8hz tkAUpBf5XDhIIHIaNiITh4VMB8Y07MOGH3UyqVV0bDi3ey5R/slDkD+RNxyLaoZGdap/ D0g5BNaXxDY428WFmT6IjQYY37+0i8uVfjFDkPcV4f6nWTTmp8ckKnd+7ukwY+g8aFyU U6Vi3L7mbNRboPvG+NBOhZjUKQNzwpFfuClSoifM79VPSjL4WwbvrC2iaZKLyNccRUDg 4XpA== 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=G6+VTwv6O6sUI5oI2pPkb3N2mHg+HDR4NxEhaSG2bfo=; b=aah2Dog1WVwbRTYcdqp/lxqlcqUwXTq+rSlSO1heC7S9zsDHbEFvqMCOJsQ3n4a6JS HOuqTbmnQRcHqk5EBX68UCLLzXQKepYZmsPBmUgyufk08Njqasyc59qGVj2YbB3hqTkQ I/aLyMxYq/BoeMsMZ2OvuIYtE9gRoTgXcwHFiFIb9rRa8ldoz2uvSj8l/k1DFYV1dE56 UUOroLNJ6jKyAmbPRXBJZXbdbt0fDQ4/JRzFYVysxB61GXDBf+0HikoSl/foVoaYbS0P pdadX9or6C/ggDWTn4NRRAKfDIaFutrcEZpZIxFDPBKg3CiiaVxVL9yWkjYC+dIE0mQR N6Hw== X-Gm-Message-State: ALoCoQnawpdsRS0LfSFSSPvMqkdAbE91Ow45hVkTxgf74HvUlyZ3sCgWSLYVLNVFudEtcvgB7yFBF5g51X6Ip7kPpmbfXXVdZw== X-Received: by 10.28.216.134 with SMTP id p128mr24185651wmg.59.1452691299812; Wed, 13 Jan 2016 05:21:39 -0800 (PST) Received: from tn-HP-4.semihalf.local (cardhu.semihalf.com. [213.17.239.108]) by smtp.gmail.com with ESMTPSA id y124sm8858741wmg.3.2016.01.13.05.21.38 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 13 Jan 2016 05:21:39 -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 Subject: [PATCH V3 11/21] pci, acpi: Move ACPI host bridge device companion assignment to core code. Date: Wed, 13 Jan 2016 14:20:57 +0100 Message-Id: <1452691267-32240-12-git-send-email-tn@semihalf.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1452691267-32240-1-git-send-email-tn@semihalf.com> References: <1452691267-32240-1-git-send-email-tn@semihalf.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20160113_052201_867721_A2CDE9A0 X-CRM114-Status: GOOD ( 11.24 ) X-Spam-Score: -2.6 (--) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: jchandra@broadcom.com, jcm@redhat.com, linaro-acpi@lists.linaro.org, linux-pci@vger.kernel.org, Liviu.Dudau@arm.com, ddaney@caviumnetworks.com, linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, robert.richter@caviumnetworks.com, Suravee.Suthikulpanit@amd.com, msalter@redhat.com, wangyijing@huawei.com, Tomasz Nowicki , tglx@linutronix.de, mw@semihalf.com, linux-arm-kernel@lists.infradead.org MIME-Version: 1.0 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+patchwork-linux-arm=patchwork.kernel.org@lists.infradead.org X-Spam-Status: No, score=-4.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_MED,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 pill to pass down parent device reference and both relay on NULL parent in pci_create_root_bus() to validate sysdata content. It looks hacky and prevent us from getting some frimware specific info for PCI host controller e.g. bus domain number. However, it seems we can 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 --- 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 553a029..cad836f 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c @@ -2107,6 +2107,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);