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 C59AAC54798 for ; Wed, 28 Feb 2024 02:39:08 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1B5B36B0107; Tue, 27 Feb 2024 21:39:08 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 161BD6B010A; Tue, 27 Feb 2024 21:39:08 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 029CD6B0286; Tue, 27 Feb 2024 21:39:07 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id E46296B0107 for ; Tue, 27 Feb 2024 21:39:07 -0500 (EST) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id B7E93C0D0B for ; Wed, 28 Feb 2024 02:39:07 +0000 (UTC) X-FDA: 81839655534.19.AC08541 Received: from out-186.mta1.migadu.com (out-186.mta1.migadu.com [95.215.58.186]) by imf13.hostedemail.com (Postfix) with ESMTP id 281E920009 for ; Wed, 28 Feb 2024 02:39:05 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=M6VRNueb; spf=pass (imf13.hostedemail.com: domain of chengming.zhou@linux.dev designates 95.215.58.186 as permitted sender) smtp.mailfrom=chengming.zhou@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1709087946; 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-transfer-encoding:content-transfer-encoding: in-reply-to:references:dkim-signature; bh=W49AL2L4dBY0pya+pySiI7auyAe7hw/1CeIi/DrQqm0=; b=W6x4q0oFv8QBFbWCdnnaxH1lA/Mqgr37oLsLgaW9ihFO8E5vYPGdGeVVRS4qRjXEpdD1Em aFqRotBxh7eOyuFI/i1agibxrNFb1sfYJp+PHPttscLvum8bvwCW6SsPq/4z+a6bBZVr/e TsNm+JA8Vg62PLce3H/ZiBWj1gjjyeA= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1709087946; a=rsa-sha256; cv=none; b=S7+xxkbg8jtSINY212UtbI3V0nUG2UaraIJMLZlZJPtmy7bW4lG1bt5xEnVcHj2JWVfdth CsRgb/qxCLBK4NeD8+AW6JJiyU7JNw7rf2i3IH8s9UbFOzVM+RyZRlxXcPMQChdhzkSffX uUVvjqE05VmbRfJhG2Fws+DIoaEyThY= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=M6VRNueb; spf=pass (imf13.hostedemail.com: domain of chengming.zhou@linux.dev designates 95.215.58.186 as permitted sender) smtp.mailfrom=chengming.zhou@linux.dev; dmarc=pass (policy=none) header.from=linux.dev X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1709087943; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=W49AL2L4dBY0pya+pySiI7auyAe7hw/1CeIi/DrQqm0=; b=M6VRNuebEnauruoB8iKCfMYtMdMOamdgBCSZW52IQ7GDKnLjDrzulxldCWlGdIx6BMpYP1 sszPdsCbEcCUPiYDKUc2gtN1+4T2eL0sGHZcEpT33sXI8cfF+gFgxjv8OiBFLsK/UXQK5M T60r2pamlUoSwEVstvjnw61ZrIVspjE= From: Chengming Zhou To: minchan@kernel.org, senozhatsky@chromium.org, akpm@linux-foundation.org Cc: hannes@cmpxchg.org, nphamcs@gmail.com, yosryahmed@google.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, chengming.zhou@linux.dev Subject: [PATCH v2] mm/zsmalloc: don't need to reserve LSB in handle Date: Wed, 28 Feb 2024 02:38:54 +0000 Message-Id: <20240228023854.3511239-1-chengming.zhou@linux.dev> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Migadu-Flow: FLOW_OUT X-Rspamd-Queue-Id: 281E920009 X-Rspam-User: X-Rspamd-Server: rspam11 X-Stat-Signature: 5ktejcz7fozwzqqtwkxqdidbw85q6ymb X-HE-Tag: 1709087945-565855 X-HE-Meta: U2FsdGVkX18HYMlzjQntyfLvr+XMKFcZx2KxCyYR00xd1A/ggY/ohuRE9kfgUxMz4e1zQOqAI17Pog3j2NiLZZwCzGwd8vPR7mErN818VCwXRosAeMQQvtQ4aiU4LFfjrdR3KHpld+McQya2jkBT3iXvzB/aayxGgsJNSOcvdn0Ou93hUXRs3TwHLyujRhQvlTqamUzAckWZ1s16Uexob11FQHRwl2XjfWmAY6ZAUs4IOpawdcWv16+gNYUF5RqThwnsrIOTCEWDTSBsooDtqtUst940VY3cLwphyHbToSyBVU/3KuS+M+F/Fl3SrTMa0Q+oL6uqR3t6q91Hn3d0Pw7MMEhdlu1iZNfkdoXeEMHYm3mrhKdBLeVGLB9RzrnCVAWhkKcACeScASwQLBf3+0cdlPFC0iBBq6iDwDD3ZDtPyUQ9wE9hrakvZk/A4PzBCQmsNKGisig4eW9aqsXAjwn1DxHtDHmFoqiBSHez70/XhhvKFj+XbCgpWxeCoLXT1c7L7yGF+SKPXYhFB6cgMTfGV8X6qzS3iS5SvdwL3zftTKnsUYv+FO0mYRzJche35ksFRHslxni4/V8f5Ob2qUxW17ZigH+bKl4CHsXkqB5+fIglkBGaV05Xb2A3XMVzTcCVmUzaP95wwcq9zSrJm0DzEoBMxTAK+V2aoT/h9WOed28P3UXI+tIA016D6csqoApFMB7SPIhUz+8jT+bPvtkdS6MxGNjbwtip617lKbYjDp5nIqKgCAwsmxzXQyyU/QcM53qmzwKIwAPPnOrFADWI7xdzsD5Hvi9bN1oPODQ93jrggKNZ7Oy7dRmGQbWQMHa6OFOPxoCkU1Nlu7OCuQ== 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: We will save allocated tag in the object header to indicate that it's allocated. handle |= OBJ_ALLOCATED_TAG; So the object header needs to reserve LSB for this tag bit. But the handle itself doesn't need to reserve LSB to save tag, since it's only used to find the position of object, by (pfn + obj_idx). So remove LSB reserve from handle, one more bit can be used as obj_idx. Signed-off-by: Chengming Zhou --- v2: - Improve the commit message to make it clearer, per Sergey. - Link to v1: https://lore.kernel.org/all/20240227030045.3443702-1-chengming.zhou@linux.dev/ --- mm/zsmalloc.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/mm/zsmalloc.c b/mm/zsmalloc.c index 63ec385cd670..7d7cb3eaabe0 100644 --- a/mm/zsmalloc.c +++ b/mm/zsmalloc.c @@ -110,7 +110,7 @@ #define OBJ_TAG_BITS 1 #define OBJ_TAG_MASK OBJ_ALLOCATED_TAG -#define OBJ_INDEX_BITS (BITS_PER_LONG - _PFN_BITS - OBJ_TAG_BITS) +#define OBJ_INDEX_BITS (BITS_PER_LONG - _PFN_BITS) #define OBJ_INDEX_MASK ((_AC(1, UL) << OBJ_INDEX_BITS) - 1) #define HUGE_BITS 1 @@ -737,14 +737,12 @@ static struct page *get_next_page(struct page *page) static void obj_to_location(unsigned long obj, struct page **page, unsigned int *obj_idx) { - obj >>= OBJ_TAG_BITS; *page = pfn_to_page(obj >> OBJ_INDEX_BITS); *obj_idx = (obj & OBJ_INDEX_MASK); } static void obj_to_page(unsigned long obj, struct page **page) { - obj >>= OBJ_TAG_BITS; *page = pfn_to_page(obj >> OBJ_INDEX_BITS); } @@ -759,7 +757,6 @@ static unsigned long location_to_obj(struct page *page, unsigned int obj_idx) obj = page_to_pfn(page) << OBJ_INDEX_BITS; obj |= obj_idx & OBJ_INDEX_MASK; - obj <<= OBJ_TAG_BITS; return obj; } -- 2.40.1