From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 0C269C4345F for ; Mon, 15 Apr 2024 15:20:52 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 7D2A16B0083; Mon, 15 Apr 2024 11:20:51 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 782B06B009D; Mon, 15 Apr 2024 11:20:51 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 64A756B009E; Mon, 15 Apr 2024 11:20:51 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 4762C6B0083 for ; Mon, 15 Apr 2024 11:20:51 -0400 (EDT) Received: from smtpin25.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id DBC5CA0197 for ; Mon, 15 Apr 2024 15:20:50 +0000 (UTC) X-FDA: 82012128660.25.4F6F56E Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf02.hostedemail.com (Postfix) with ESMTP id 3688480008 for ; Mon, 15 Apr 2024 15:20:49 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=jUNKo6jV; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf02.hostedemail.com: domain of rppt@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=rppt@kernel.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1713194449; a=rsa-sha256; cv=none; b=NiwVQARUW9GDBj67IXg0LUbC0NMQq4c7nvRDqNEXVFBf7sKYeo/XuuCrtlLC0589rXM9K2 +4LS1aTIAKmY/73SdQmUfHMrEj3syob6hCsVbkCtKbMmhywv7bB/GBWEJkPFIKKt2z9WPg tLnCI2xRuApHvprXkWezniMtKiMKGvg= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=jUNKo6jV; dmarc=pass (policy=none) header.from=kernel.org; spf=pass (imf02.hostedemail.com: domain of rppt@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=rppt@kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1713194449; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=cEHjv0ziUl44/JVWrWbuvI8A+Ds6jeBJkwRhuetZRw8=; b=0hYXgOGBoUKxoKLMF+emyeTiIL8QXK+80ChEuCRQzlDapLxZPH9A0DD4pr1jamAVTHlHRK YmlioFhnvdyzh65uZd3i5ps6ZfhmZQBVk+G/A3maWlCq5WIrtTNq/ouHhNtny/+vpxOXgh EFOUca/Y0OfGMZjWqYCf14f2fMXH64Q= Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id 2A4AF60BD4; Mon, 15 Apr 2024 15:20:48 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 8F2D8C113CC; Mon, 15 Apr 2024 15:20:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1713194447; bh=dvSa6a6BBFVbRQ4Rg8PmrHZrGNkw+5Zbk34B/YpZnlc=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=jUNKo6jVM3tC/T/FAaJ5Grt1vgRR83PVnPo/2GgdhuhorApPYf2xH3EET8+WUhybY 4eIwlP7nWv1ptSbhmtITLIgEHV2RoMzORJIlgeBIMWEcISjr+e686jxXpsllh63Vwj cTFvzO9YSTMjiWZT3HINxdiaC8z7JxFr7Uwi766btA3Mzi7Cg1lg4jiZ+WRyD6BH0G X3ZJWZ0URi5xf6A/YfZ0VqTwg0p3qSRKuutQR+zPQhCoMGWY7i09SeyiHNNbomviTQ +m+DKxYyBWuEVD3BNdw6TKV0YrL7U72O1NRe8aozCyt9Q6HuQ8JBq/BMrSTiYS/Mz9 MPzWIP/cgZixg== Date: Mon, 15 Apr 2024 18:19:42 +0300 From: Mike Rapoport To: Wei Yang Cc: akpm@linux-foundation.org, linux-mm@kvack.org Subject: Re: [PATCH 2/6] memblock tests: add the 129th memory block at all possible position Message-ID: References: <20240414004531.6601-1-richard.weiyang@gmail.com> <20240414004531.6601-2-richard.weiyang@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240414004531.6601-2-richard.weiyang@gmail.com> X-Rspam-User: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 3688480008 X-Stat-Signature: ebghsrj8s7aqkb19g5hjhae57muk6zss X-HE-Tag: 1713194449-941086 X-HE-Meta: U2FsdGVkX184JYuYcOtW6ZrpS8A/uXwtgYZTpSq4Ego7mSxgTQeyowxtQyuFK0DmKnHMbSQQ9mlW0bhCXHfESqeP3zbA4x3qngRxhfBnRS8TQONAbva7YUlVwGXksA/o9vPgiuGwdekHmnpYob08YExVUXyRdiYprh3BqWwHyGzUENgU4/dAhK//Ls9ycHSgT8yxX/fDnQPgvZ2RYFrM3UQ++aNbiyoJSalAqwA1hhybuzY2GIwwqBrWH1eqANkOD7nSMkt3qGQ4Muo7DgL+YO1ZlNWToJ9+euzF5qBbLFl627tp0aRUZBFf96AgatBSWYM6fYTp3bicDTHMqUrpQN94fXcVdEH9bPhND4ChXAME9AG0UwcjEAGaldZ1oFt4X6zG8d2DBobU7dFue4xbLMeM0+9u0JpWOvskzOXAgepwABUi3/HiM23y58j1Qu7iqtpZ/3VVgiW0c3lN0fGeT8GyqzY8/yYLxZSX2gT3llGzerDVHGG2/B77NxrtHtEpKXVFzCzkwPoTlSjZXK8VTkhobHQ9tSAV0m8kxU87hVhNjMiRLt/vUVvsm3kqm9Qt9y8J6BLTVDInXWPTl0PqPkc+eybpJa6Ey+4bOf8m+W8BVRDVVKf58jL2z7JCUVrRrF4IrpCrwBQq66uebttw+Hwu+XBBYBenx2vVMfEpbDzbdOdw21cgt2P2uXj2e76KOrvD6hYFz2CBEjADrvBmlpO7KGgprTUa9SKJ3b0StQ9rOeF6Q4SVMI8CzNmIoCfjvKcrWCpMkFkaaDru9RNf49MRp/evO22dkIugBlOBMS4x1xjCnmraf9DtHJONmBv70xUsok8qgrqqtsLQxyrq3DqgbjqmDOYHcX/AlaEwRn8H7Qnhw/DsBl4ARmatTy8BvjpzIFLjjDgfL7W9Q00iMdszUgS+Y4xBWB8sNcVpLhKRTw86Xrbuvfkkbb6h8byqYmOmBTAjp84PKqxRAJn L94267al KfbDbLbnujcSxW+V/wvdm2UJSeS5UFNjQkkl/EG5sxEPJIELALEfw08jj93k0F0cPh17tiYSN/AvMyQs98e87ucRDt2rDh0zZGPgScYvhbcKqLwvQLDOo+KyqSv2hOXlD9jhLExLQO9YMfz2o16mnzFHDzetUSTJjmsXTiYESAgCwN6DDsL56uvIweSeDbBmkLaY8UOw+WzxRC86Tq/pJvRBsuOasAb+IJQER51/B9j4V2+ZXsaLrmtuoHw== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Sun, Apr 14, 2024 at 12:45:27AM +0000, Wei Yang wrote: > After previous change, we may double the array based on the position of > the new range. > > Let's make sure the 129th memory block would double the size correctly > at all possible position. Rather than rewrite an existing test, just add a new one. Besides, it would be more interesting to test additions to memblock.reserved and a mix of memblock_add() and memblock_reserve() that will require resizing the memblock arrays. > Signed-off-by: Wei Yang > --- > tools/testing/memblock/tests/basic_api.c | 132 +++++++++++++---------- > 1 file changed, 73 insertions(+), 59 deletions(-) > > diff --git a/tools/testing/memblock/tests/basic_api.c b/tools/testing/memblock/tests/basic_api.c > index f317fe691fc4..f1569ebb9872 100644 > --- a/tools/testing/memblock/tests/basic_api.c > +++ b/tools/testing/memblock/tests/basic_api.c > @@ -431,84 +431,98 @@ static int memblock_add_near_max_check(void) > */ > static int memblock_add_many_check(void) > { > - int i; > + int i, skip; > void *orig_region; > struct region r = { > .base = SZ_16K, > .size = SZ_16K, > }; > phys_addr_t new_memory_regions_size; > - phys_addr_t base, size = SZ_64; > + phys_addr_t base, base_start, size = SZ_64; > phys_addr_t gap_size = SZ_64; > > PREFIX_PUSH(); > > - reset_memblock_regions(); > - memblock_allow_resize(); > - > - dummy_physical_memory_init(); > - /* > - * We allocated enough memory by using dummy_physical_memory_init(), and > - * split it into small block. First we split a large enough memory block > - * as the memory region which will be choosed by memblock_double_array(). > - */ > - base = PAGE_ALIGN(dummy_physical_memory_base()); > - new_memory_regions_size = PAGE_ALIGN(INIT_MEMBLOCK_REGIONS * 2 * > - sizeof(struct memblock_region)); > - memblock_add(base, new_memory_regions_size); > - > - /* This is the base of small memory block. */ > - base += new_memory_regions_size + gap_size; > - > - orig_region = memblock.memory.regions; > + /* Add the 129th memory block for all possible positions*/ > + for (skip = 0; skip < INIT_MEMBLOCK_REGIONS; skip++) { > + reset_memblock_regions(); > + memblock_allow_resize(); > > - for (i = 0; i < INIT_MEMBLOCK_REGIONS; i++) { > + dummy_physical_memory_init(); > /* > - * Add these small block to fulfill the memblock. We keep a > - * gap between the nearby memory to avoid being merged. > + * We allocated enough memory by using dummy_physical_memory_init(), and > + * split it into small block. First we split a large enough memory block > + * as the memory region which will be choosed by memblock_double_array(). > */ > - memblock_add(base, size); > - base += size + gap_size; > - > - ASSERT_EQ(memblock.memory.cnt, i + 2); > + base = PAGE_ALIGN(dummy_physical_memory_base()); > + new_memory_regions_size = PAGE_ALIGN(INIT_MEMBLOCK_REGIONS * 2 * > + sizeof(struct memblock_region)); > + memblock_add(base, new_memory_regions_size); > + > + /* This is the base of small memory block. */ > + base_start = base += new_memory_regions_size + gap_size; > + orig_region = memblock.memory.regions; > + > + for (i = 0; i < INIT_MEMBLOCK_REGIONS; i++, base += size + gap_size) { > + if (i == skip) > + continue; > + /* > + * Add these small block to fulfill the memblock. We keep a > + * gap between the nearby memory to avoid being merged. > + */ > + memblock_add(base, size); > + > + if (i < skip) { > + ASSERT_EQ(memblock.memory.cnt, i + 2); > + ASSERT_EQ(memblock.memory.total_size, > + new_memory_regions_size + (i + 1) * size); > + } else { > + ASSERT_EQ(memblock.memory.cnt, i + 1); > + ASSERT_EQ(memblock.memory.total_size, > + new_memory_regions_size + i * size); > + } > + } > + > + /* Add the skipped one to trigger memblock_double_array() */ > + memblock_add(base_start + skip * (size + gap_size), size); > + ASSERT_EQ(memblock.memory.cnt, i + 1); > ASSERT_EQ(memblock.memory.total_size, new_memory_regions_size + > - (i + 1) * size); > - } > + i * size); > + /* > + * At there, memblock_double_array() has been succeed, check if it > + * update the memory.max. > + */ > + ASSERT_EQ(memblock.memory.max, INIT_MEMBLOCK_REGIONS * 2); > > - /* > - * At there, memblock_double_array() has been succeed, check if it > - * update the memory.max. > - */ > - ASSERT_EQ(memblock.memory.max, INIT_MEMBLOCK_REGIONS * 2); > + /* memblock_double_array() will reserve the memory it used. Check it. */ > + ASSERT_EQ(memblock.reserved.cnt, 1); > + ASSERT_EQ(memblock.reserved.total_size, new_memory_regions_size); > > - /* memblock_double_array() will reserve the memory it used. Check it. */ > - ASSERT_EQ(memblock.reserved.cnt, 1); > - ASSERT_EQ(memblock.reserved.total_size, new_memory_regions_size); > - > - /* > - * Now memblock_double_array() works fine. Let's check after the > - * double_array(), the memblock_add() still works as normal. > - */ > - memblock_add(r.base, r.size); > - ASSERT_EQ(memblock.memory.regions[0].base, r.base); > - ASSERT_EQ(memblock.memory.regions[0].size, r.size); > + /* > + * Now memblock_double_array() works fine. Let's check after the > + * double_array(), the memblock_add() still works as normal. > + */ > + memblock_add(r.base, r.size); > + ASSERT_EQ(memblock.memory.regions[0].base, r.base); > + ASSERT_EQ(memblock.memory.regions[0].size, r.size); > > - ASSERT_EQ(memblock.memory.cnt, INIT_MEMBLOCK_REGIONS + 2); > - ASSERT_EQ(memblock.memory.total_size, INIT_MEMBLOCK_REGIONS * size + > - new_memory_regions_size + > - r.size); > - ASSERT_EQ(memblock.memory.max, INIT_MEMBLOCK_REGIONS * 2); > + ASSERT_EQ(memblock.memory.cnt, INIT_MEMBLOCK_REGIONS + 2); > + ASSERT_EQ(memblock.memory.total_size, INIT_MEMBLOCK_REGIONS * size + > + new_memory_regions_size + > + r.size); > + ASSERT_EQ(memblock.memory.max, INIT_MEMBLOCK_REGIONS * 2); > > - dummy_physical_memory_cleanup(); > + dummy_physical_memory_cleanup(); > > - /* > - * The current memory.regions is occupying a range of memory that > - * allocated from dummy_physical_memory_init(). After free the memory, > - * we must not use it. So restore the origin memory region to make sure > - * the tests can run as normal and not affected by the double array. > - */ > - memblock.memory.regions = orig_region; > - memblock.memory.cnt = INIT_MEMBLOCK_REGIONS; > + /* > + * The current memory.regions is occupying a range of memory that > + * allocated from dummy_physical_memory_init(). After free the memory, > + * we must not use it. So restore the origin memory region to make sure > + * the tests can run as normal and not affected by the double array. > + */ > + memblock.memory.regions = orig_region; > + memblock.memory.cnt = INIT_MEMBLOCK_REGIONS; > + } > > test_pass_pop(); > > -- > 2.34.1 > -- Sincerely yours, Mike.