From patchwork Fri Dec 22 12:28:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Ilpo_J=C3=A4rvinen?= X-Patchwork-Id: 182659 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7300:2483:b0:fb:cd0c:d3e with SMTP id q3csp1025837dyi; Fri, 22 Dec 2023 04:31:15 -0800 (PST) X-Google-Smtp-Source: AGHT+IEiXj5/CXPh90/2+Zb2LxTPSLgH1gq0H+TSTjyDIHB30t9ja5/jfgJU6w+MiT2WcrGkLD0a X-Received: by 2002:a05:6122:2d2:b0:4b6:ea3a:f87a with SMTP id k18-20020a05612202d200b004b6ea3af87amr335734vki.4.1703248275505; Fri, 22 Dec 2023 04:31:15 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1703248275; cv=none; d=google.com; s=arc-20160816; b=SHbrcVkYRD1xicoUKMQN2dDXiqRfeZjgdHMR5F5snQY1ySRYrPRg1oTgTF/5Mv1PEn HEQOb4qKc38/qrtDFp16XezmR11ai8ImT3dmXWtqY9CBafTiYN/593y5b8DNTKSJ0pv5 QJJvJ3oemmj6xJR+KTgkzI6OjtQsPhGOIQFTkLToT7trehFioWGE5uOE5PoHzJmwqDRy 4uIlW64ld/Muu35HiXzqXsgzGYhamJRD2nwamFJvZ+6zc50YM230haBc3saC32VjIf0j mJi+FEmRTspO3eDR4y1EwoV0si+gwuItUIDFrqg/EBlIJCtQz9VU+SyegjBfONS7knQt 5h0w== 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=WcbAqW/PNrzRYLCNksnIRdgQ/ltM7aSdE/0wL8PnbPY=; fh=yqUIIgKqVOYsTyZW6w8zcpjOuZt/iZwb7E0FG62Kafw=; b=JW++hmE3qS3BeBQ1rhb67QTckBPCs+2NfhLm0/hdYMBDoQpUcONwdWcs62mJ4taJUI eLkgzaVY0yhwLFYB9cmZhQLyaIRZEteMNNx0DA3lgSCkZhwqbXPpaVoQGqlxRpjUWo1L nCdZk7VyYNBwrDBv+wwZufOLhMUuE9AHKHC8OYJFEuBh8BUWn4WtbtBXNEsrxrervMOh YoCatAhA3NOKrJFgNxljKabkl//aCI5kNPw7IJ/RpcECq4JaiwEwQnL076aKOZCktTpc yfSvIqFjpiXtdpIkinRTZtIVZT29gkmjNZiZFj2c+KlTGmsPv5ZfdDAE4pxKBQsCivLG /APg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=aqHQFIXK; spf=pass (google.com: domain of linux-kernel+bounces-9706-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-9706-ouuuleilei=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id x186-20020a1fc7c3000000b0049ab92b3667si766783vkf.215.2023.12.22.04.31.15 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 Dec 2023 04:31:15 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-9706-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=aqHQFIXK; spf=pass (google.com: domain of linux-kernel+bounces-9706-ouuuleilei=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-9706-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 ny.mirrors.kernel.org (Postfix) with ESMTPS id 48F381C209A8 for ; Fri, 22 Dec 2023 12:31:15 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 58FE0210F5; Fri, 22 Dec 2023 12:30:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=intel.com header.i=@intel.com header.b="aqHQFIXK" X-Original-To: linux-kernel@vger.kernel.org Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.9]) (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 71FDC1A5A3; Fri, 22 Dec 2023 12:30:15 +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=1703248216; x=1734784216; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=tV8ZA6+9dVotj+4bWIAu5XQOfKl/tj4X1maAI3jCdoY=; b=aqHQFIXKctmYpZLQVTMnWNeFSGYbZ+cqyCFGWaTKGN6uytd+n4+xBZcA ttN1z12lwm/+oj1MSsXE2ZF4DnEdtRL/O6gzgBkMnFPE00hjU/hCcIQQ+ 8/EmYw9cLQMNHZEEQG1IS/V/ZP0Boj+HntTaDMv7KrLFFuIUwXIAqYXi0 ENzPsY39NcrKNHh9QrdbdWKTrxfEJnMB50Pq8DYt/22AdVMcoVwNvNHZ/ MYAymt0iPB6q2Cxz8P2TKlRSg9knwAfZb4/DhAZgjwDmAu686bxoKc+Im MOacT8iAM/E6QbPLychAXyY2VwEUmdsQnA9UmUpFY//R4527d/R2K80qY A==; X-IronPort-AV: E=McAfee;i="6600,9927,10931"; a="2957180" X-IronPort-AV: E=Sophos;i="6.04,296,1695711600"; d="scan'208";a="2957180" Received: from fmviesa001.fm.intel.com ([10.60.135.141]) by fmvoesa103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Dec 2023 04:30:15 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.04,296,1695711600"; d="scan'208";a="19016876" Received: from ijarvine-desk1.ger.corp.intel.com (HELO localhost) ([10.94.248.105]) by smtpauth.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Dec 2023 04:30:10 -0800 From: =?utf-8?q?Ilpo_J=C3=A4rvinen?= To: linux-pci@vger.kernel.org, Bjorn Helgaas , Lorenzo Pieralisi , Rob Herring , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , Igor Mammedov , Lukas Wunner , Mika Westerberg , Andy Shevchenko , "Rafael J . Wysocki" , linux-kernel@vger.kernel.org Cc: =?utf-8?q?Ilpo_J=C3=A4rvinen?= Subject: [PATCH 5/7] resource: Handle simple alignment inside __find_empty_resource_slot() Date: Fri, 22 Dec 2023 14:28:59 +0200 Message-Id: <20231222122901.49538-6-ilpo.jarvinen@linux.intel.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20231222122901.49538-1-ilpo.jarvinen@linux.intel.com> References: <20231222122901.49538-1-ilpo.jarvinen@linux.intel.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1785985264066918551 X-GMAIL-MSGID: 1785985264066918551 allocate_resource() accepts alignf callback to perform custom alignment beyond constraint->align. If alignf is NULL, simple_align_resource() is used which only returns avail->start (no change). Using avail->start directly is natural and can be done with a conditional in __find_empty_resource_slot() instead which avoids unnecessarily using callback. It makes the code inside __find_empty_resource_slot() more obvious and removes the need for the caller to provide constraint->alignf unnecessarily. This is preparation for exporting find_empty_resource_slot(). Signed-off-by: Ilpo Järvinen Reviewed-by: Andy Shevchenko --- kernel/resource.c | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/kernel/resource.c b/kernel/resource.c index 9d7920104120..80d64b6467b3 100644 --- a/kernel/resource.c +++ b/kernel/resource.c @@ -563,14 +563,6 @@ void __weak arch_remove_reservations(struct resource *avail) { } -static resource_size_t simple_align_resource(void *data, - const struct resource *avail, - resource_size_t size, - resource_size_t align) -{ - return avail->start; -} - static void resource_clip(struct resource *res, resource_size_t min, resource_size_t max) { @@ -590,6 +582,7 @@ static int __find_empty_resource_slot(struct resource *root, struct resource *ol { struct resource *this = root->child; struct resource tmp = *new, avail, alloc; + resource_alignf alignf = constraint->alignf; tmp.start = root->start; /* @@ -618,8 +611,13 @@ static int __find_empty_resource_slot(struct resource *root, struct resource *ol avail.flags = new->flags & ~IORESOURCE_UNSET; if (avail.start >= tmp.start) { alloc.flags = avail.flags; - alloc.start = constraint->alignf(constraint->alignf_data, &avail, - size, constraint->align); + if (alignf) { + alloc.start = alignf(constraint->alignf_data, + &avail, size, + constraint->align); + } else { + alloc.start = avail.start; + } alloc.end = alloc.start + size - 1; if (alloc.start <= alloc.end && resource_contains(&avail, &alloc)) { @@ -730,9 +728,6 @@ int allocate_resource(struct resource *root, struct resource *new, int err; struct resource_constraint constraint; - if (!alignf) - alignf = simple_align_resource; - constraint.min = min; constraint.max = max; constraint.align = align;