Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp2971527ybb; Mon, 30 Mar 2020 17:20:33 -0700 (PDT) X-Google-Smtp-Source: ADFU+vuHvXWQpmx03cjiBxlkwsxaLPfMi+Xp9LnFSg3/bNwPo8C+sSAVqc0LICN9dUuAgC8oO9d6 X-Received: by 2002:a9d:3f2:: with SMTP id f105mr11791690otf.187.1585614033382; Mon, 30 Mar 2020 17:20:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585614033; cv=none; d=google.com; s=arc-20160816; b=ycp7VJ6V1y+4MzxQrWu2ONLlfd6jwDXlrw9RqxAyUKojw7Soy+hb6RpaJCc8ObEpuc iZS0G2QGc6OXT+jpMfsQKOFZG6Z6jqItM5g8lNtwlRI3pzhxnGACLtCOIi+6B9c3ysdD lTkQqwKchOg33+Q1Zu+U4DPZBWTTJRNrV/bvh4sqlnvjEWUzZQgxi23MOgq3QQZ34Z3q haAFw39REwuWqWDnsFmHN+7bZdMpLvaez6V7eaTDWYB1H2jcEplx5dRcIm/nQ5WCV6+h adRnyV5hW3SubbUYOpX/ySAB15PWIizUJofmA6x/+r7l0hZ3rAmBnscJs5x5PXZmg5Pu jO8Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:message-id:date:subject:cc:to:from :dkim-signature; bh=nzstlQpIyRmo1VDCg2iWQAJyN95Yb00537nPa+CVJCU=; b=xv5dLS+Bhn1DNgibS0hJQRrlqwMGmNWhtl0TpAEyy3m93ZqLidgtw6egn7144tFM0i 4WRfTPkWNpGL1N4wF0xwHYFChbugqLRPcuWYngnin1ufyecBMD8Pwa5dyiKSKkCLb5qG NKDAb05VaNC+l6XtLE1yXk4kfHzU1ufaUMOx86Y7aC6n1YzsFTAJia1IJpCe2mPIuLAl DHBzHWXbsQzxtNzrr4xrF6Y7qeuLohpxvzP57jf/CrG4/VKEY8LL+RtpLw/T+0vhoLHR BgcCd8S4Kax80FICcKlhIxeikHlFSz0zhwFKSvsWN8s5J0aBPVL/L9rjmG0DnX+4tw8+ NClw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sifive.com header.s=google header.b=gZ3J4Cao; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m205si5724094oib.116.2020.03.30.17.20.20; Mon, 30 Mar 2020 17:20:33 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@sifive.com header.s=google header.b=gZ3J4Cao; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729239AbgCaAUC (ORCPT + 99 others); Mon, 30 Mar 2020 20:20:02 -0400 Received: from mail-pg1-f194.google.com ([209.85.215.194]:37155 "EHLO mail-pg1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729019AbgCaAUC (ORCPT ); Mon, 30 Mar 2020 20:20:02 -0400 Received: by mail-pg1-f194.google.com with SMTP id a32so9500527pga.4 for ; Mon, 30 Mar 2020 17:20:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sifive.com; s=google; h=from:to:cc:subject:date:message-id; bh=nzstlQpIyRmo1VDCg2iWQAJyN95Yb00537nPa+CVJCU=; b=gZ3J4CaoSvY0pAx9b12IkXUUsAj4hJOGdGwXK8xSBf8TwdxNAPx507FelCRgohNBfV MDgEkp7PqXQvMYb4xLetmuFxv9WQNA0GjJcwPVGSPu55Q8IxDDnJwHjrqi9Lxfr5QYPN fqE04SBjbvkY08Ubf5skIBgDMSJR0LbARqBG2WtX2jaYjaefAtvlOjdGzLfR6/UTCubF +lt0dOpBsCY2vKley4ZnzbXOTUkp2KFAv/cvqk9ddutU+vc6EJnEbORiQyXTjdwW9T1T kCI13kPKbrOxGbnh69mn0bSSQMcTzvPXj1SPvq6yk+J4bM9eeKHKNYYsu4xTJonoRFI5 FFYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=nzstlQpIyRmo1VDCg2iWQAJyN95Yb00537nPa+CVJCU=; b=Rthadc1BQFads3F6O3qyk34gBV9ocQ/iKspWGwysWkDiIJyFZMLZ8JOlQoZN/FH1ld oxbVU7Pb/L3g7kOJJCHUDm73FJ7HVlYn5Inga6TaG4royBlZlDsBHEEZLD6uPJw4vz98 7g/yFvhAWVgdlh1ssP30r1A81NGx/6q9HZ2DRFkM2YPqyXycwqhZXYknfDKpK6RCNn2x UQ+gF+5MAhd33zlwh1wnE+o88m5LBSgI/1dNeQ81Ij10f9dIU0AyIMgmBOtYl0PlG3n4 rYp2e/Wyfdlq0JMj8jPF/vuZnTquEBzzJNs1361bLArwYYCo++09EJvUekmB7ZfHI0N3 O9Vg== X-Gm-Message-State: ANhLgQ2svFiki0KsXU9Hv3IPq46oaFvSK+/uIPpeVpxErfgRwBhb8j2c EMJYJvf/xzY6nzFn95pEVj3hRVc0mG4= X-Received: by 2002:a05:6a00:c8:: with SMTP id e8mr14715763pfj.131.1585614000257; Mon, 30 Mar 2020 17:20:00 -0700 (PDT) Received: from nuc7.sifive.com (c-24-5-48-146.hsd1.ca.comcast.net. [24.5.48.146]) by smtp.gmail.com with ESMTPSA id w127sm11069176pfb.70.2020.03.30.17.19.58 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Mon, 30 Mar 2020 17:19:59 -0700 (PDT) From: Alan Mikhak X-Google-Original-From: Alan Mikhak < alan.mikhak@sifive.com > To: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, jingoohan1@gmail.com, gustavo.pimentel@synopsys.com, lorenzo.pieralisi@arm.com, amurray@thegoodpenguin.co.uk, bhelgaas@google.com, kishon@ti.com, paul.walmsley@sifive.com Cc: Alan Mikhak Subject: [PATCH] PCI: Warn about MEM resource size being too big Date: Mon, 30 Mar 2020 17:19:47 -0700 Message-Id: <1585613987-8453-1-git-send-email-alan.mikhak@sifive.com> X-Mailer: git-send-email 2.7.4 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Output a warning for MEM resource size with non-zero upper 32-bits. ATU programming functions limit the size of the translated region to 4GB by using a u32 size parameter. Function dw_pcie_prog_outbound_atu() does not program the upper 32-bit ATU limit register. This may result in undefined behavior for resource sizes with non-zero upper 32-bits. For example, a 128GB address space starting at physical CPU address of 0x2000000000 with size of 0x2000000000 needs the following values programmed into the lower and upper 32-bit limit registers: 0x3fffffff in the upper 32-bit limit register 0xffffffff in the lower 32-bit limit register Currently, only the lower 32-bit limit register is programmed with a value of 0xffffffff but the upper 32-bit limit register is not being programmed. As a result, the upper 32-bit limit register remains at its default value after reset of 0x0. This would be a problem for a 128GB PCIe space because in effect its size gets reduced to 4GB. ATU programming functions can be changed to specify a u64 size parameter for the translated region. Along with this change, the internal calculation of the limit address, the address of the last byte in the translated region, needs to change such that both the lower 32-bit and upper 32-bit limit registers can be programmed correctly. Changing the ATU programming functions is high impact. Without change, this issue can go unnoticed. A warning may prompt the user to look into possible issues. This limitation also means that multiple ATUs would need to be used to map larger regions. Signed-off-by: Alan Mikhak --- drivers/pci/controller/dwc/pcie-designware-host.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c index 395feb8ca051..37a8c71ef89a 100644 --- a/drivers/pci/controller/dwc/pcie-designware-host.c +++ b/drivers/pci/controller/dwc/pcie-designware-host.c @@ -325,6 +325,7 @@ int dw_pcie_host_init(struct pcie_port *pp) struct pci_bus *child; struct pci_host_bridge *bridge; struct resource *cfg_res; + resource_size_t mem_size; u32 hdr_type; int ret; @@ -362,7 +363,10 @@ int dw_pcie_host_init(struct pcie_port *pp) case IORESOURCE_MEM: pp->mem = win->res; pp->mem->name = "MEM"; - pp->mem_size = resource_size(pp->mem); + mem_size = resource_size(pp->mem); + if (upper_32_bits(mem_size)) + dev_warn(dev, "MEM resource size too big\n"); + pp->mem_size = mem_size; pp->mem_bus_addr = pp->mem->start - win->offset; break; case 0: -- 2.7.4