From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932487AbdBPQNB (ORCPT ); Thu, 16 Feb 2017 11:13:01 -0500 Received: from mout.kundenserver.de ([212.227.126.130]:56918 "EHLO mout.kundenserver.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754386AbdBPQM6 (ORCPT ); Thu, 16 Feb 2017 11:12:58 -0500 From: Arnd Bergmann To: Nikita Yushchenko Cc: Catalin Marinas , Will Deacon , linux-arm-kernel@lists.infradead.org, Simon Horman , Bjorn Helgaas , linux-pci@vger.kernel.org, linux-renesas-soc@vger.kernel.org, artemi.ivanov@cogentembedded.com, linux-kernel@vger.kernel.org Subject: Re: [PATCH 1/2] arm64: dma_mapping: allow PCI host driver to limit DMA mask Date: Thu, 29 Dec 2016 22:18:41 +0100 Message-ID: <2103911.qf9H68dkRp@wuerfel> User-Agent: KMail/5.1.3 (Linux/4.4.0-34-generic; KDE/5.18.0; x86_64; ; ) In-Reply-To: <1483044304-2085-1-git-send-email-nikita.yoush@cogentembedded.com> References: <1483044304-2085-1-git-send-email-nikita.yoush@cogentembedded.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" X-Provags-ID: V03:K0:+88f0UGmrguFsCou1jbn1At5dXLuvtbnDvQsq7mBwdGuc7EC73l 5mPfWTfWIHHtbNDpEoYw+nlOGDkXaD1NO/Z5Mj0CLwpsGs4tqh9EF282Ifc16/0rwKZHG43 sEBp09EnEzKbF+fRDym7YVcRDZ/TpGzmtGYkrsIS6W+P1Yq6Yr1nUd1Civ62eXUsQZ438/H Exx+dMvrdaT5TkComvXyw== X-UI-Out-Filterresults: notjunk:1;V01:K0:bvoycw2bt5M=:h//IPSCLN/hzoteSLHs5SI c7S/7qosZFNswNokdJ2qgyOB1+a4ub5K3WQ1WzNvYKQ4wqomPa6RwUah6IPEheBUaZKSrZ0yn mTTkkehDW5FEK87x+Nkrjy9TicyXU9e7sXXh0i7UxrrGG90CUpqooifXwT7dWGuV9y4cjkTfg MgFup0OKSDs58FptXqv3MdS3ZzUSU1glp5H+LAwRm3jEIiUHCWg6ShGoi+C3XX3wt5Yc3rVz1 r2ousEsrUnjx9pvmUPCYuC6UAnvnerJsXyXTx6niD+vxFdAtfwkGY+/g5BfJD9RYA8tB+8KGX eSQg+yNOML8x2j1qXcjXl9BqwCjuH3Ten/e8LjeY6cvc96oea1jZmreVeXgXa34722K98GOjd K2GHFJb3iRJKJB5bxi6rWd+A5zTfF0Fn1W4MBs2oP2YVzKVpoYj40K9ScwHuFXM9NpTaLWKPf /PgcNcrr9lgTA6fROiw++uSnd8wqYCGaGZNc5vbW47Ls+2Vmr6XJDvrT7VJkcIgCvSQO4QOl/ 2DYCG6eZr0/uD5Qpg7nxdAOXkuvi/rET5WyJa2fgrAOZVgD5q9zi9jnEnBlpvzclp0oL0uDVf NMrU7UrC6yAFjBt3EEDXOMhCqZMj6ixaHgvIVxaf7+JTd5dQ7656qvA4P/PPMBB6wLxA/cQba sfkVo+gYICCpEklml/9H+PKHmQUOM1jb6fHAEIePKcYIH61WR0NbY6iAnO5i0J51FQtpzA9Il 293pQrxnmfZ4dzXY Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thursday, December 29, 2016 11:45:03 PM CET Nikita Yushchenko wrote: > > static int __swiotlb_dma_supported(struct device *hwdev, u64 mask) > { > +#ifdef CONFIG_PCI > + if (dev_is_pci(hwdev)) { > + struct pci_dev *pdev = to_pci_dev(hwdev); > + struct pci_host_bridge *br = pci_find_host_bridge(pdev->bus); > + > + if (br->dev.dma_mask && (*br->dev.dma_mask) && > + (mask & (*br->dev.dma_mask)) != mask) > + return 0; > + } > +#endif > if (swiotlb) > return swiotlb_dma_supported(hwdev, mask); > return 1; > I think it's wrong to make this a special case for PCI. Instead, we should follow the dma-ranges properties during dma_set_mask() to ensure we don't set a mask that any of the parents up to the root cannot support. Arnd