Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp963904pxb; Tue, 9 Feb 2021 18:10:57 -0800 (PST) X-Google-Smtp-Source: ABdhPJyBECk0tHRdCCmdm4awf5GqL/TaYz5p87EkuT5GIecV9rgcMQxtqDVhMYAvu/eM/vAPgn4T X-Received: by 2002:a05:6402:27cf:: with SMTP id c15mr995802ede.179.1612923057093; Tue, 09 Feb 2021 18:10:57 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1612923057; cv=none; d=google.com; s=arc-20160816; b=RL+tpsj7zuXSS22DfjmxmpgQpK+On8IFuPK0V/aBi+GU8i7m+3gXLihBFLOVqM8zC4 W3fQ29iVMy5+3XkXUlcJY+akCCj6epnydPUkbQH5cN3uVEn7t+GeH0JncSbvcTvJ4yjM asZMAQQZykDAbS5ijpcqQoTa7bkczhfoA67X5jT20gw/YNKrXlraV5nGiJnh1nzYzgBE eHI2RofG/AFswcX1Y6wKwKb6Yj+NFPOhdJeho9qN8vX/jhA+hB08HQVDD5IhrcU7bPUL QPfAYIUbhicnOCWNzWkbGUoKVEQR4D+Dwp85hJKX82pa8TufhJTs9ZOLb16V8AjV/N6a 1u5w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from; bh=AGWiC0oNmSs2v1kVYE3ST3OC2CUYMR/SNi36tGU0Fgw=; b=pi/O+HxlUbajkV9poGdWL10iKvppK2Mxpl0aaY2owX6zfO9npDf6dcU2Mxj3Hk60/o N1ZorWgIm9qczkrqR1Kx2mLhcNWgiTHnKlWivd4Pn1aaIFqEDvpEtwCCLst2XF76eJL4 vt+Jv1pduKOqkSOaCajY3bNk1fcZxX9EJSvVT+jUJBV5b5UNZn/FmK8uKfetIUZVdDCd J20YYo0md2z/HPF8ILRLp8dtZBSbh5P3NUat9PjhV9b55GiuYg+fc2j54MWWHye39PBz 3B7fyOTatka7ejlMf1EL2NZ5/OeQr2Mj+T4g9l9w7UNcAAOY4ea6hc0Zezugl7Vb3MxU 3t3Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id j23si351942eje.690.2021.02.09.18.10.34; Tue, 09 Feb 2021 18:10:57 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234881AbhBJCHO (ORCPT + 99 others); Tue, 9 Feb 2021 21:07:14 -0500 Received: from mail.windriver.com ([147.11.1.11]:59128 "EHLO mail.windriver.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234127AbhBJAxQ (ORCPT ); Tue, 9 Feb 2021 19:53:16 -0500 X-Greylist: delayed 6077 seconds by postgrey-1.27 at vger.kernel.org; Tue, 09 Feb 2021 19:43:53 EST Received: from ala-exchng01.corp.ad.wrs.com (ala-exchng01.corp.ad.wrs.com [147.11.82.252]) by mail.windriver.com (8.15.2/8.15.2) with ESMTPS id 119N0Lwc018627 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Tue, 9 Feb 2021 15:00:21 -0800 (PST) Received: from ala-exchng01.corp.ad.wrs.com (147.11.82.252) by ala-exchng01.corp.ad.wrs.com (147.11.82.252) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Tue, 9 Feb 2021 14:59:18 -0800 Received: from yow-pgortmak-lx2.corp.ad.wrs.com (128.224.56.62) by ala-exchng01.corp.ad.wrs.com (147.11.82.252) with Microsoft SMTP Server id 15.1.2106.2 via Frontend Transport; Tue, 9 Feb 2021 14:59:17 -0800 From: Paul Gortmaker To: CC: Li Zefan , Ingo Molnar , Yury Norov , Thomas Gleixner , Josh Triplett , Peter Zijlstra , "Paul E. McKenney" , Frederic Weisbecker , Rasmus Villemoes , Andy Shevchenko , Paul Gortmaker Subject: [PATCH 5/8] lib: bitmap: pair nbits value with region struct Date: Tue, 9 Feb 2021 17:59:04 -0500 Message-ID: <20210209225907.78405-6-paul.gortmaker@windriver.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210209225907.78405-1-paul.gortmaker@windriver.com> References: <20210209225907.78405-1-paul.gortmaker@windriver.com> MIME-Version: 1.0 Content-Type: text/plain Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org A region is a standalone entity to some degree, but it needs to be paired with a bitmap width in order to set context and determine if the region even fits into the width of the bitmap. This will reduce parameter passing and enable using nbits as part of future dynamic region parameter parsing. Cc: Yury Norov Cc: Rasmus Villemoes Cc: Andy Shevchenko Suggested-by: Yury Norov Suggested-by: Andy Shevchenko Signed-off-by: Paul Gortmaker --- lib/bitmap.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/lib/bitmap.c b/lib/bitmap.c index 9596ba53c36b..6b568f98af3d 100644 --- a/lib/bitmap.c +++ b/lib/bitmap.c @@ -499,6 +499,16 @@ struct region { unsigned int end; }; +/* + * The region "0-3" is a complete specification, i.e. "the 1st four cores" + * for a CPU map, but it needs to be paired to a width in order to have a + * meaningful and valid context. (i.e. 4 core region on 4+ core machine...) + */ +struct bitmap_region { + struct region *r; + unsigned int nbits; +}; + static void bitmap_set_region(const struct region *r, unsigned long *bitmap) { unsigned int start; @@ -507,12 +517,14 @@ static void bitmap_set_region(const struct region *r, unsigned long *bitmap) bitmap_set(bitmap, start, min(r->end - start + 1, r->off)); } -static int bitmap_check_region(const struct region *r, int nbits) +static int bitmap_check_region(const struct bitmap_region *br) { + struct region *r = br->r; + if (r->start > r->end || r->group_len == 0 || r->off > r->group_len) return -EINVAL; - if (r->end >= nbits) + if (r->end >= br->nbits) return -ERANGE; return 0; @@ -635,8 +647,12 @@ static const char *bitmap_parse_region(const char *str, struct region *r) int bitmap_parselist(const char *buf, unsigned long *maskp, int nmaskbits) { struct region r; + struct bitmap_region br; long ret; + br.r = &r; + br.nbits = nmaskbits; + bitmap_zero(maskp, nmaskbits); while (buf) { @@ -648,7 +664,7 @@ int bitmap_parselist(const char *buf, unsigned long *maskp, int nmaskbits) if (IS_ERR(buf)) return PTR_ERR(buf); - ret = bitmap_check_region(&r, nmaskbits); + ret = bitmap_check_region(&br); if (ret) return ret; -- 2.17.1