From patchwork Mon Jun 20 11:02:16 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tomasz Nowicki X-Patchwork-Id: 9187215 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id CE06A6075E for ; Mon, 20 Jun 2016 11:05:47 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id B8B7A265B9 for ; Mon, 20 Jun 2016 11:05:47 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id ACE7026861; Mon, 20 Jun 2016 11:05:47 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3BBEF2665D for ; Mon, 20 Jun 2016 11:05:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754622AbcFTLFl (ORCPT ); Mon, 20 Jun 2016 07:05:41 -0400 Received: from mail-lf0-f45.google.com ([209.85.215.45]:33562 "EHLO mail-lf0-f45.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932427AbcFTLDz (ORCPT ); Mon, 20 Jun 2016 07:03:55 -0400 Received: by mail-lf0-f45.google.com with SMTP id f6so35277106lfg.0 for ; Mon, 20 Jun 2016 04:03:55 -0700 (PDT) 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=iW0fEMs+vV8piusbfmKkf0+ZmiTjGjqBn1SyvdUsTkg=; b=B9WraVA2hH8LkbQJYvV0f23/EmdRLHnQiMvAiUi/vPsGcANQ19Wp/yszPz/wy04jbW JzJIxJPn5/dFl0D3QBkfdMM24wBfR09kCGO0qEwDcW3aK+OwL6GrPHCcLCkgbEZsENPS s5Hb/J86cT+/LfF7AjDQ+IoOpMcK2E8JLWBGxJ3vGGck3TJIQG742GBSyukqLkpaUdGc dksv9fuKDXUt3/Lj0F3PVEckHQUbdRtA0UVq0KEqD5SlmLmojOj5Z9mVla4uwzHJXKLe NcM8uqUk+uMr8Wa5r6qST7s3T1BHc8Ly/e6UyugHUEhKMngjsZO6P0rM4Jd35MJYKACK lfGg== 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=iW0fEMs+vV8piusbfmKkf0+ZmiTjGjqBn1SyvdUsTkg=; b=baoIanEBB/l9+L8GXv2+y3+vwF0yZFJfQ5ZlbmROl/gBO0dwUj9Lfl03Ys8EExc4pC Z+wRcWgOx0Mm17ItBoGT3G+ObKhOagFE9gDMYwVxsK7Sq/6oBn6P7rGPEL889a+9zKOj 4BSn77Tf2hHD6p1saVFvaAJwSwl5Z/3h7d4NnxovIBrMuHQK2gCmGwvt8yT9MUHyHxFo 7I59ty+MozEyWCtJ4coZFUzCTUTDNzWzh1CSjWeNx2Q8wEz8Z2MzpvOQuEcoZhjkxnWX /mOgT71TGKVirUQ9E30cQsoksyh+4LRLAZgdpEtMthZ2IMLAi+DJ4bf8qHF5A+vzzSwN RIdQ== X-Gm-Message-State: ALyK8tKAGTCDEbg/0lEEvdpd5IpqrvmQpGv8ka9U4lji5pyXh3ELro5iARhyrieXQteRXQ== X-Received: by 10.46.33.133 with SMTP id h5mr3552476lji.39.1466420629384; Mon, 20 Jun 2016 04:03:49 -0700 (PDT) Received: from tn-HP-4.semihalf.local (31-172-191-173.noc.fibertech.net.pl. [31.172.191.173]) by smtp.gmail.com with ESMTPSA id e10sm44291lbr.36.2016.06.20.04.03.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 20 Jun 2016 04:03:48 -0700 (PDT) From: Tomasz Nowicki To: marc.zyngier@arm.com, tglx@linutronix.de, jason@lakedaemon.net, rjw@rjwysocki.net, bhelgaas@google.com, lorenzo.pieralisi@arm.com, robert.richter@caviumnetworks.com, shijie.huang@arm.com, Suravee.Suthikulpanit@amd.com, hanjun.guo@linaro.org Cc: al.stone@linaro.org, mw@semihalf.com, graeme.gregory@linaro.org, Catalin.Marinas@arm.com, will.deacon@arm.com, linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, linux-arm-kernel@lists.infradead.org, ddaney.cavm@gmail.com, okaya@codeaurora.org, andrea.gallo@linaro.org, linux-pci@vger.kernel.org, Tomasz Nowicki Subject: [PATCH V7 3/8] PCI/MSI: Setup MSI domain on a per-device basis using IORT ACPI table Date: Mon, 20 Jun 2016 13:02:16 +0200 Message-Id: <1466420541-20101-4-git-send-email-tn@semihalf.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1466420541-20101-1-git-send-email-tn@semihalf.com> References: <1466420541-20101-1-git-send-email-tn@semihalf.com> Sender: linux-acpi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-acpi@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP It is possible to provide information about which MSI controller to use on a per-device basis for DT. This patch supply this with ACPI support. Currently, IORT is the only one ACPI table which can provide such mapping. In order to plug IORT into MSI infrastructure we are adding ACPI equivalents for finding PCI device domain and its RID translation (pci_msi_domain_get_msi_rid and pci_msi_domain_get_msi_rid calls). Signed-off-by: Tomasz Nowicki Acked-by: Marc Zyngier Reviewed-by: Hanjun Guo Acked-by: Bjorn Helgaas --- drivers/pci/msi.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/drivers/pci/msi.c b/drivers/pci/msi.c index a080f44..1d45e81 100644 --- a/drivers/pci/msi.c +++ b/drivers/pci/msi.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -1364,8 +1365,8 @@ u32 pci_msi_domain_get_msi_rid(struct irq_domain *domain, struct pci_dev *pdev) pci_for_each_dma_alias(pdev, get_msi_id_cb, &rid); of_node = irq_domain_get_of_node(domain); - if (of_node) - rid = of_msi_map_rid(&pdev->dev, of_node, rid); + rid = of_node ? of_msi_map_rid(&pdev->dev, of_node, rid) : + iort_msi_map_rid(&pdev->dev, rid); return rid; } @@ -1381,9 +1382,13 @@ u32 pci_msi_domain_get_msi_rid(struct irq_domain *domain, struct pci_dev *pdev) */ struct irq_domain *pci_msi_get_device_domain(struct pci_dev *pdev) { + struct irq_domain *dom; u32 rid = 0; pci_for_each_dma_alias(pdev, get_msi_id_cb, &rid); - return of_msi_map_get_device_domain(&pdev->dev, rid); + dom = of_msi_map_get_device_domain(&pdev->dev, rid); + if (!dom) + dom = iort_get_device_domain(&pdev->dev, rid); + return dom; } #endif /* CONFIG_PCI_MSI_IRQ_DOMAIN */