From patchwork Tue Nov 18 14:45:27 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Thomas Petazzoni X-Patchwork-Id: 5330111 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.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 626D09F1E1 for ; Tue, 18 Nov 2014 14:50:21 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 87B42201CE for ; Tue, 18 Nov 2014 14:50:20 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id AAED620172 for ; Tue, 18 Nov 2014 14:50:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755900AbaKROuO (ORCPT ); Tue, 18 Nov 2014 09:50:14 -0500 Received: from down.free-electrons.com ([37.187.137.238]:58998 "EHLO mail.free-electrons.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754445AbaKROuL (ORCPT ); Tue, 18 Nov 2014 09:50:11 -0500 Received: by mail.free-electrons.com (Postfix, from userid 106) id 195C21EC; Tue, 18 Nov 2014 15:50:10 +0100 (CET) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Spam-Level: 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 Received: from localhost (col31-4-88-188-83-94.fbx.proxad.net [88.188.83.94]) by mail.free-electrons.com (Postfix) with ESMTPSA id 299EB266; Tue, 18 Nov 2014 15:46:20 +0100 (CET) From: Thomas Petazzoni To: Bjorn Helgaas , linux-pci@vger.kernel.org Cc: Tawfik Bayouk , Nadav Haklai , Lior Amsalem , Ezequiel Garcia , Yinghai Lu , Thomas Petazzoni Subject: [PATCH] PCI: fix probe.c warning on !CONFIG_ARCH_DMA_ADDR_T_64BIT platforms Date: Tue, 18 Nov 2014 15:45:27 +0100 Message-Id: <1416321927-29120-1-git-send-email-thomas.petazzoni@free-electrons.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: References: MIME-Version: 1.0 Sender: linux-pci-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP Commit 3a02517d5e2a ("PCI: Support 64-bit bridge windows if we have 64-bit dma_addr_t") modified the pci_read_bridge_mmio_pref() function to support 64 bits bridge windows if the dma_addr_t type if 64 bits. However, even though it accounts for platforms where dma_addr_t is 32 bits, it introduced a compile-time warning on such platforms: drivers/pci/probe.c: In function ‘pci_read_bridge_mmio_pref’: drivers/pci/probe.c:430:5: warning: left shift count >= width of type base |= ((dma_addr_t) mem_base_hi) << 32; ^ drivers/pci/probe.c:431:5: warning: left shift count >= width of type limit |= ((dma_addr_t) mem_limit_hi) << 32; This is due to the fact that the code that gets used on platforms where dma_addr_t is 64 bits is also compiled on platforms where dma_addr_t is 32 bits. To solve this, this patch switches from using the runtime 'sizeof(dma_addr_t) < 8' test to a compile time test on CONFIG_ARCH_DMA_ADDR_T_64BIT, which is the configuration option used by to decide whether dma_addr_t is 32 bits or 64 bits. Note that in the case mentionned in the commit log of 3a02517d5e2a, i.e x86 32 bits with PAE enabled, CONFIG_ARCH_DMA_ADDR_T_64BIT is enabled, because this option is enabled when either x86-64 is used, or x86 with HIGHMEM64G. Signed-off-by: Thomas Petazzoni Fixes: 3a02517d5e2a ("PCI: Support 64-bit bridge windows if we have 64-bit dma_addr_t") --- Applies on top of pci/for-linus drivers/pci/probe.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c index 1c5b1ca..9de2994 100644 --- a/drivers/pci/probe.c +++ b/drivers/pci/probe.c @@ -429,15 +429,15 @@ static void pci_read_bridge_mmio_pref(struct pci_bus *child) * this, just assume they are not being used. */ if (mem_base_hi <= mem_limit_hi) { - if (sizeof(dma_addr_t) < 8) { - if (mem_base_hi || mem_limit_hi) { - dev_err(&dev->dev, "can't handle 64-bit address space for bridge\n"); - return; - } - } else { - base |= ((dma_addr_t) mem_base_hi) << 32; - limit |= ((dma_addr_t) mem_limit_hi) << 32; +#ifdef CONFIG_ARCH_DMA_ADDR_T_64BIT + base |= ((dma_addr_t) mem_base_hi) << 32; + limit |= ((dma_addr_t) mem_limit_hi) << 32; +#else + if (mem_base_hi || mem_limit_hi) { + dev_err(&dev->dev, "can't handle 64-bit address space for bridge\n"); + return; } +#endif } } if (base <= limit) {