Message ID | 20231228165707.3447-2-ilpo.jarvinen@linux.intel.com |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel+bounces-12788-ouuuleilei=gmail.com@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7301:6f82:b0:100:9c79:88ff with SMTP id tb2csp2110959dyb; Thu, 28 Dec 2023 08:57:55 -0800 (PST) X-Google-Smtp-Source: AGHT+IF3ni4TKEMvlR5zvcIP/frvX4vrOb5s1Cmd+JmHmZ7KHscv2lR+IFXQA+c1MNtktmQsS/W3 X-Received: by 2002:a17:902:d50f:b0:1d3:fa6a:fc88 with SMTP id b15-20020a170902d50f00b001d3fa6afc88mr6136092plg.17.1703782674984; Thu, 28 Dec 2023 08:57:54 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1703782674; cv=none; d=google.com; s=arc-20160816; b=CAqvYm35eMFoia3ky84zUi85PelDy/vd+fn86f5JAHW3/16ByxFXHMu/JDX7yQ9I5r TBiQsiAxnlBEfCqNTI7UUOhqcSwrF6Z9SnwLZwoqlFw2TIm3Lpj9LKVTr3/i5h997Yfl b63zegIoZZD3Zb4Eru3/EAKwTCTjqfCif69hcoJYTUxDM11ds8KHVQcqjU1f137LvooI i/gfvtp04ZCs81Xhh6bgI8K0J8M5ZebzJaAOK8tJ+SJeGTJkHtSaMueRRhT/xdPtByFz Jz9IbM5eUn70AT9MteVRP4uR6PvpXD6XoCCMcxKE7vNf1Ex87oJr8pqQZAEDfDoIJKus zetA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=gwEOFxbI2yDL2y6iq/2YGqhZ0x0H2WQKRKiCddsl91o=; fh=vws1ojMgn7Xtcq0W2UEGXR6D8J/YV6XONd4X+QA+ojA=; b=zIlu3VPGa7dsBL+rVpuQlyaR6Xh5pu4y7bxTf16FUCgYP1an/2mqtQC+7ZOAsq0QDx 5GdDsKZdASDD8gx5KAnyJX+C90AQbul78VkCSxtS8lXqErZC9/LaSQGgS917zxW1Uoi8 roUP0mAxTFU87aqWJk3zkUbsPNMcSLtqNNlrSRpUt2sUqv+yL7iTZYQL1V73MRCNAeNa AzVmOKOOdK8z5fr7KPIJgtkVX8hHbMVzCLlV17uMhCsScaI4UErAnk9oHdxTj3ray1S4 6xPwjLkEt7bhvO3LFAMcnQo9gyLHfWPod3EEiEYFm+8iWiFqTxcHOmXgChUzBdk2s3+A HQng== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=AlQ3hn6V; spf=pass (google.com: domain of linux-kernel+bounces-12788-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-12788-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from sv.mirrors.kernel.org (sv.mirrors.kernel.org. [2604:1380:45e3:2400::1]) by mx.google.com with ESMTPS id d10-20020a170902ceca00b001cfee4c128asi13046793plg.356.2023.12.28.08.57.54 for <ouuuleilei@gmail.com> (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 28 Dec 2023 08:57:54 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-12788-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) client-ip=2604:1380:45e3:2400::1; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=AlQ3hn6V; spf=pass (google.com: domain of linux-kernel+bounces-12788-ouuuleilei=gmail.com@vger.kernel.org designates 2604:1380:45e3:2400::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-12788-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id BFEDA285CEF for <ouuuleilei@gmail.com>; Thu, 28 Dec 2023 16:57:54 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 70BFD101D4; Thu, 28 Dec 2023 16:57:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="AlQ3hn6V" X-Original-To: linux-kernel@vger.kernel.org Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.24]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BF584101C8; Thu, 28 Dec 2023 16:57:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.intel.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1703782654; x=1735318654; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=LCe+OPVf6ypAOTjFWig95nNeJVsgngMAJh/hD3RJ254=; b=AlQ3hn6VQyZT+Yt+YqQ76HGZTBfE3/Qcf9XZViby66JOy81i7qPJ6L4S Ghe4qMMNl+z+9pV0xAxrLSFNvzu+MjOqah77U2u0cdARDWOu841CX/3DB 4uJPxBDi1b+wfBeYKO5ysY6ToW/CnWg9aoAr1Xvdgh+UgPanBB2KsNXin 7Ceqnr+w+5Plt43Y3AemSaDXiQCkUyQibZrOkkOfREbtul7TitYEtvz3q oWDsi3PMPtzzBr3Gkzcqbk0+WCdjJOb6hwL1OCEd1bfazxqODxFLdEVnZ HWuuhytGXPvNNCXq1uC2dIWmrHefTYFIzGfzf30eA+cl6ljSnNMNiFjlo Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10937"; a="399349946" X-IronPort-AV: E=Sophos;i="6.04,312,1695711600"; d="scan'208";a="399349946" Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Dec 2023 08:57:34 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10937"; a="728356748" X-IronPort-AV: E=Sophos;i="6.04,312,1695711600"; d="scan'208";a="728356748" Received: from ijarvine-desk1.ger.corp.intel.com (HELO localhost) ([10.94.250.171]) by orsmga003-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Dec 2023 08:57:28 -0800 From: =?utf-8?q?Ilpo_J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com> To: linux-pci@vger.kernel.org, Bjorn Helgaas <bhelgaas@google.com>, Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>, Rob Herring <robh@kernel.org>, =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kw@linux.com>, Igor Mammedov <imammedo@redhat.com>, Lukas Wunner <lukas@wunner.de>, Mika Westerberg <mika.westerberg@linux.intel.com>, Andy Shevchenko <andriy.shevchenko@intel.com>, "Rafael J . Wysocki" <rafael@kernel.org>, Jesse Barnes <jbarnes@virtuousgeek.org>, Yinghai Lu <yinghai@kernel.org>, linux-kernel@vger.kernel.org Cc: =?utf-8?q?Ilpo_J=C3=A4rvinen?= <ilpo.jarvinen@linux.intel.com> Subject: [PATCH v2 1/7] PCI: Fix resource double counting on remove & rescan Date: Thu, 28 Dec 2023 18:57:01 +0200 Message-Id: <20231228165707.3447-2-ilpo.jarvinen@linux.intel.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20231228165707.3447-1-ilpo.jarvinen@linux.intel.com> References: <20231228165707.3447-1-ilpo.jarvinen@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: <linux-kernel.vger.kernel.org> List-Subscribe: <mailto:linux-kernel+subscribe@vger.kernel.org> List-Unsubscribe: <mailto:linux-kernel+unsubscribe@vger.kernel.org> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1786545622640297742 X-GMAIL-MSGID: 1786545622640297742 |
Series |
PCI: Solve two bridge window sizing issues
|
|
Commit Message
Ilpo Järvinen
Dec. 28, 2023, 4:57 p.m. UTC
pbus_size_mem() keeps the size of the optional resources in
children_add_size. When calculating the PCI bridge window size,
calculate_memsize() lower bounds size by old_size before adding
children_add_size and performing the window size alignment. This
results in double counting for the resources in children_add_size
because old_size may be based on the previous size of the bridge
window after it has already included children_add_size (that is,
size1 in pbus_size_mem() from an earlier invocation of that
function).
As a result, on repeated remove of the bus & rescan cycles the resource
size keeps increasing when children_add_size is non-zero as can be seen
from this extract:
iomem0: 23fffd00000-23fffdfffff : PCI Bus 0000:03
iomem1: 20000000000-200001fffff : PCI Bus 0000:03
iomem2: 20000000000-200002fffff : PCI Bus 0000:03
iomem3: 20000000000-200003fffff : PCI Bus 0000:03
iomem4: 20000000000-200004fffff : PCI Bus 0000:03
Solve the double counting by moving old_size check later in
calculate_memsize() so that children_add_size is already accounted for.
After the patch, the bridge window retains its size as expected:
iomem0: 23fffd00000-23fffdfffff : PCI Bus 0000:03
iomem1: 20000000000-200000fffff : PCI Bus 0000:03
iomem2: 20000000000-200000fffff : PCI Bus 0000:03
Fixes: a4ac9fea016f ("PCI : Calculate right add_size")
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
---
drivers/pci/setup-bus.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/drivers/pci/setup-bus.c b/drivers/pci/setup-bus.c index fd74f1c99dba..e3e6ff8854a7 100644 --- a/drivers/pci/setup-bus.c +++ b/drivers/pci/setup-bus.c @@ -820,11 +820,9 @@ static resource_size_t calculate_memsize(resource_size_t size, size = min_size; if (old_size == 1) old_size = 0; - if (size < old_size) - size = old_size; - size = ALIGN(max(size, add_size) + children_add_size, align); - return size; + size = max(size, add_size) + children_add_size; + return ALIGN(max(size, old_size), align); } resource_size_t __weak pcibios_window_alignment(struct pci_bus *bus,