From patchwork Tue Mar 10 11:35:16 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tomasz Nowicki X-Patchwork-Id: 5976571 Return-Path: X-Original-To: patchwork-linux-acpi@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.136]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 3C2DFBF440 for ; Tue, 10 Mar 2015 11:36:41 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 79BA72015A for ; Tue, 10 Mar 2015 11:36:39 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 8C6792022A for ; Tue, 10 Mar 2015 11:36:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752905AbbCJLe5 (ORCPT ); Tue, 10 Mar 2015 07:34:57 -0400 Received: from mail-la0-f44.google.com ([209.85.215.44]:46723 "EHLO mail-la0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752859AbbCJLes (ORCPT ); Tue, 10 Mar 2015 07:34:48 -0400 Received: by labgm9 with SMTP id gm9so899397lab.13 for ; Tue, 10 Mar 2015 04:34:46 -0700 (PDT) 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=+/TXhL3K0KQZZYffvno1DF6QE6eXfSh4QLW6TStj4E8=; b=QnpED8cbACbyzcHCSVRrlp5vhcD9ObfEJMF/uQkRAlP4o2IJ4N5d6Fp0YrWiU9tPEw RvprECQhmCwDsj3btvvQx3pKC0wjthbLE63uUWMdHh4UuHIxf41bgeK7OmrvjpWUrKYE zTV1eAh4w/bHZ/Kd9Mv58oH87e8oMZ5p3ajmF7dPYRxMmu/N4GL1535CZfyYj3feiTqd f3tOEW7OfC109fPiZrwSEgC9HuMMtzOgvhYIIytkCc8cpjqFw4QQHqvXp70Xh0tcLXMx evsJuLe8NkWQxeo7643OWibyOcqLqo0owj4Wq1pWYkW+dLG/3SfvdbDsxAFvXQh/Ulwn d69g== X-Gm-Message-State: ALoCoQlf2cnbk2fE32Y4te0cu+NF42k4KW57IZ3GZ6sKhJWjFKy3hvYD8KDrhNrIojiFgtYCfxiJ X-Received: by 10.112.92.66 with SMTP id ck2mr29825174lbb.105.1425987286794; Tue, 10 Mar 2015 04:34:46 -0700 (PDT) Received: from tn-HP-4.semihalf.com (cardhu.semihalf.com. [213.17.239.108]) by mx.google.com with ESMTPSA id n12sm57206lbg.31.2015.03.10.04.34.44 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 10 Mar 2015 04:34:46 -0700 (PDT) From: Tomasz Nowicki To: bhelgaas@google.com, wangyijing@huawei.com, arnd@arndb.de, hanjun.guo@linaro.org, Liviu.Dudau@arm.com, tglx@linutronix.de, mingo@redhat.com, hpa@zytor.com, rjw@rjwysocki.net, al.stone@linaro.org Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, x86@kernel.org, linux-pci@vger.kernel.org, linux-acpi@vger.kernel.org, linaro-acpi@lists.linaro.org, Tomasz Nowicki Subject: [PATCH v3 5/9] pci, acpi, mcfg: Provide generic implementation of MCFG code initialization. Date: Tue, 10 Mar 2015 12:35:16 +0100 Message-Id: <1425987320-15020-6-git-send-email-tomasz.nowicki@linaro.org> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1425987320-15020-1-git-send-email-tomasz.nowicki@linaro.org> References: <1425987320-15020-1-git-send-email-tomasz.nowicki@linaro.org> Sender: linux-acpi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-acpi@vger.kernel.org X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, T_RP_MATCHES_RCVD, 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 Those two functions are required by ACPI subsystem to make PCI config space accessible. Generic code assume to do nothing for early init call but late init call does as follow: - parse MCFG table and add regions to ECAM resource list - map regions - add regions to iomem_resource Signed-off-by: Tomasz Nowicki --- drivers/acpi/mcfg.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/drivers/acpi/mcfg.c b/drivers/acpi/mcfg.c index a2e2326..1e646fc 100644 --- a/drivers/acpi/mcfg.c +++ b/drivers/acpi/mcfg.c @@ -79,3 +79,23 @@ int __init acpi_parse_mcfg(struct acpi_table_header *header) return 0; } + +void __init __weak pci_mmcfg_early_init(void) +{ + +} + +void __init __weak pci_mmcfg_late_init(void) +{ + struct pci_mmcfg_region *cfg; + + acpi_table_parse(ACPI_SIG_MCFG, acpi_parse_mcfg); + + if (list_empty(&pci_mmcfg_list)) + return; + if (!pci_mmcfg_arch_init()) + free_all_mmcfg(); + + list_for_each_entry(cfg, &pci_mmcfg_list, list) + insert_resource(&iomem_resource, &cfg->res); +}