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 7CE85C4167B for ; Thu, 30 Nov 2023 10:13:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A27086B0454; Thu, 30 Nov 2023 05:13:03 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 9D6CE6B0455; Thu, 30 Nov 2023 05:13:03 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 89E876B0456; Thu, 30 Nov 2023 05:13:03 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 79BAA6B0454 for ; Thu, 30 Nov 2023 05:13:03 -0500 (EST) Received: from smtpin11.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 4CB7714014C for ; Thu, 30 Nov 2023 10:13:03 +0000 (UTC) X-FDA: 81514207446.11.3409391 Received: from mail-oa1-f52.google.com (mail-oa1-f52.google.com [209.85.160.52]) by imf04.hostedemail.com (Postfix) with ESMTP id 98F8E40028 for ; Thu, 30 Nov 2023 10:13:01 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=FR13qc4U; spf=pass (imf04.hostedemail.com: domain of 42.hyeyoo@gmail.com designates 209.85.160.52 as permitted sender) smtp.mailfrom=42.hyeyoo@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1701339181; a=rsa-sha256; cv=none; b=u2d76duA8Ivfy0rte/HXrT62TKYrQwVdN5wgORkt4YYvEGSXr14DbdPjKYpNOGi5BzQ89G FyBrl09Oc/9M0DaYtpY02W3R0TD4p6AOmhumtcisDRvV4ZdBW1scyKlLLdGjV0A1UUxlNB KSsSxKjmJAUMBpROoJJaIKFfr3DXTmE= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=FR13qc4U; spf=pass (imf04.hostedemail.com: domain of 42.hyeyoo@gmail.com designates 209.85.160.52 as permitted sender) smtp.mailfrom=42.hyeyoo@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1701339181; 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=bDtGp0IqWaqhptiPttFtf8canQN2QZLdB/jSh7wIClc=; b=RXtoR+LodgC92C3s9I2AhkQN92go/DjLi1f+DC42QlAELOS2rM8mt3V2lqgsJOO29BstWc onRqtZNUwrMo9e6tvE7IGMSzWtzmzZFYD9Ch+kK14pxtMVhR8MYEE49dFaYsKWG5EoWuUZ xsJ3lLraGBOWULSl3dpqxydYhfriys8= Received: by mail-oa1-f52.google.com with SMTP id 586e51a60fabf-1fab887fab8so345295fac.0 for ; Thu, 30 Nov 2023 02:13:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1701339180; x=1701943980; darn=kvack.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=bDtGp0IqWaqhptiPttFtf8canQN2QZLdB/jSh7wIClc=; b=FR13qc4Umqovxs7BJfkYTgyqs9Nmck3oGL8uCAZCB+ElbJqZZ314B/3PwCw3p9BLBi jR5o8OGGJpONV9/a0HRg8JYoU1NK/M4Z5wZFJq22YLfCzqbN0yYwiPkaI1qRr4ZUm/RN pGmXJf2SbrmnLFvrsi55vSfaV5QVGq8Jrzb7s8MCGphTcXz6XktnFLVcIt50fF6Fka28 xW7Ds2KBidRvrP4mlQpV0UMju3LnqKsHKl6IwBZLJ1K4wOcyJpMLqA/3cB2ebGyCV25P rHYH7pfDUR1v9DtTIk1+oUsBYJQKN67j6tATg8wKSVNu+ISsOq+ifhtlOOv31kub0A97 GJPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701339180; x=1701943980; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=bDtGp0IqWaqhptiPttFtf8canQN2QZLdB/jSh7wIClc=; b=mSzYzCyQv6gnJ1nzMyLkPNw6xmBHOxBRgAmzXCNZYuRwpLXN0RBb4r7QdPdSgNWLo3 N3bcmYfMn39riv85hPnXcN5kidJpap5wxoL00O6nhoxyDXlBtp6KfyMW6jhbICN+GK/J u474crF+5YrSsvReYOaJr5cLzjEHqnJuRCelt5qaYBs1zRCCBDA54SzpUd/oYSjpxAXr 4AmOQpK62lqzBKePUBDp/y3P/kvBuboPMjBV7EycXjf5ozH2ESfPoJFs7HeNmjcaz+2I l7ZEzMNnwcFC4hsdXLiBuoIXEyR6tCSWozpAXNgYgThjxe25toeGaPEXd3CO6aPqRYme Xphw== X-Gm-Message-State: AOJu0YzNB4BWB18HqSta9b4yCvkzoJcjAjOP7mP/xXWSZaa8/n6G9BTn iG07CHF3GJpdKZ2WRxEaz20= X-Google-Smtp-Source: AGHT+IGvB7M22ldV2klQ7MdKTVC9aeLEnA1C2WXCIfU70zfMjhM3i6VoIWWgCzkBATEDCRwrJUTW6A== X-Received: by 2002:a05:6870:b28a:b0:1fa:2660:1a41 with SMTP id c10-20020a056870b28a00b001fa26601a41mr21804521oao.48.1701339180321; Thu, 30 Nov 2023 02:13:00 -0800 (PST) Received: from localhost.localdomain ([1.245.180.67]) by smtp.gmail.com with ESMTPSA id r27-20020aa78b9b000000b006900cb919b8sm841402pfd.53.2023.11.30.02.12.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 30 Nov 2023 02:12:59 -0800 (PST) From: Hyeonggon Yoo <42.hyeyoo@gmail.com> To: Minchan Kim , Sergey Senozhatsky Cc: Matthew Wilcox , Mike Rapoport , Yosry Ahmed , linux-mm@kvack.org, Hyeonggon Yoo <42.hyeyoo@gmail.com> Subject: [RFC PATCH v3 00/21] mm/zsmalloc: Split zsdesc from struct page Date: Thu, 30 Nov 2023 19:12:21 +0900 Message-Id: <20231130101242.2590384-1-42.hyeyoo@gmail.com> X-Mailer: git-send-email 2.39.3 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam08 X-Rspamd-Queue-Id: 98F8E40028 X-Stat-Signature: mkdkkijswef8nibtpcdmdhebwz77beu9 X-Rspam-User: X-HE-Tag: 1701339181-476455 X-HE-Meta: U2FsdGVkX181KxjNV8p8EFP0dt6htoGSoTTTdwWnY5SyY1iPls4MYED2bPPN7GSqqAE5Cfls8lig4UChN3+bO9PooQqRmhSYRKXA+JY3MEnyhlk2e4fxiPP74zBorquaDeJ896rfI/mproRCfWIAwbP2OcpIZGzbUlYJsjA+Bsx5M2XB9MmrRGAZ8WZKzofAFZZYnORsffuX1Y7Mx5PQk/z4LWxSbrf8j2zDH7kkz+JgGPPcokpGBKTN55ftPO2dFHBm5sd10AYUuuUWBs4LOZbVID1JwPFK/76l8Dnvl3P1uaeZfPt/Lvzh/llJyUETaev3DoFLhwllNNnehy0KUpsmhPDjUEw/MVMFvbZBgo+03qKZ4ZGO2QDTDonHMBudXDH/LI3D5PoeezwUkhU4/ICjksmDLdsaroYVRBCjL+3ogkOGIpKVacfl/B0bZlWLnu5gT7zYAwsfcIUuqWm2L6+qJWAJ6wTgR99oP+EU1lOnf/Eb2akXcalaKyaiEzyEX8d9UTJu9o07iJ3yzPYyXqcqzfAHos+k/zpoGF7IWVwgPiwPn9NrcAVl3bY0VGX9pf/4DAuw0p6Rp8AAvOcbuyfDlSOjvI18SnkMZg9p1SxAOmFEnosP1gOlAoJui6WsIZ2FRY95TkWRWolpl8FB9853AC+fSvXbsTV+7B89pqCEdbMma7iw9SdyBv/+dBqpuwHGq5QMuxaLmkb/3sZ3RFqIY4VQUATeYAStu/QD4Lt9BiTZQjp9xEVJsvlpTo7R6Xi10gTCORonq9neLwkEYlEXaK3V0UnxGxq0x0uwDbW1OP3SW4BgyFYFZ4s1GDcvBINcehBPsWBI3IMRyjUn9O9RFCfIdEeaCyGsO8DFWHyhAQJQutM1a5xcfDrH78R5RMUNTTzkzb3xEBWy+8RQ0U2Lz0W+BVMMgPN9+KyEvIb4Zu/kFk4nbpaZcg1UXbOE35CIaln04t8WlXVxfIc xVFIsXvO SxnCU1iabJXRur1Ste+WhPopLPJxuMuvb25Crgjs0tTKAvv7Daw6HqYTsZ6HHH2F7RlfW1qxU9qwV3i4jyg+PmOWZ2laWDlLAH0TqaGSKwJ8dPHRjQlcb0xxZm0yHIMs9Z1IBLzdsMO1q3vBYU6fFgBJRT2fXBC8py1kxl4H9YltcgYYNYCuHInoe9rWy8L2+9tyflwf3662ak0GqfC3KrUaodm4ZsPtR2IxaLZEwPhTMn89+aNU/jn4V10kQkIr3gkOO2d2BW4K9T/6oy0/7xQRuNGg6dx+XCzIPrUGsei+bhAsLH2Jz7jRhAmC+2ozp9DIe1w43KgZzuE4KTO+uD2p4y/6reVO+44S0+ZBkr7Z9O9J1gCTgdr/J9PyUVYu1jFmp4obF2k/17sAzXYxqHgwy+wqd85ndrumcYtsLLtjuu7GuKt91Al2EEuGWHIMpZA7bArhdBUmzTk9oAjQe+W/wmjh7gFrnqpbngJS+2ir0q9SGKKOOGKkt2NJmvrEvXddkOr60xOK7MS29Jg3rmXX5/9u2rQK3EV9oLWpauvJq8Cq/EMeWXkZRb3+TMuuycu2HYKV7c/arh+TINdeb80Bf5QhUWI1FYVooRzSKpCrtlNRFeeAm0AhQYtAE5XwTwlmGZJ4VeX7HZPs= 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: RFC v2: https://lore.kernel.org/linux-mm/20230713042037.980211-1-42.hyeyoo@gmail.com/ v2 -> v3: - rebased to the latest mm-unstable - adjusted comments from Sergey Senozhatsky (Moving zsdesc definition, kerneldoc fix) and Yosry Ahmed (adding memcg_data field to zsdesc) V3 update is a bit late, but I still believe this is worth doing. It would be nice to get comments/reviews/acks from maintainers/people. Cover Letter: The purpose of this series is to define own memory descriptor for zsmalloc, instead of re-using various fields of struct page. This is a part of the effort to reduce the size of struct page to unsigned long and enable dynamic allocation of memory descriptors. While [1] outlines this ultimate objective, the current use of struct page is highly dependent on its definition, making it challenging to separately allocate memory descriptors. Therefore, this series introduces new descriptor for zsmalloc, called zsdesc. It overlays struct page for now, but will eventually be allocated independently in the future. And apart from dynamic allocation of descriptors, this is a nice cleanup. This work is also available at: https://gitlab.com/hyeyoo/linux/-/tree/separate_zsdesc_rfc-v3 [1] State Of The Page, August 2022 https://lore.kernel.org/lkml/YvV1KTyzZ+Jrtj9x@casper.infradead.org Hyeonggon Yoo (21): mm/zsmalloc: create new struct zsdesc mm/zsmalloc: add utility functions for zsdesc mm/zsmalloc: replace first_page to first_zsdesc in struct zspage mm/zsmalloc: add alternatives of frequently used helper functions mm/zsmalloc: convert {try,}lock_zspage() to use zsdesc mm/zsmalloc: convert __zs_{map,unmap}_object() to use zsdesc mm/zsmalloc: convert obj_to_location() and its users to use zsdesc mm/zsmalloc: convert obj_malloc() to use zsdesc mm/zsmalloc: convert create_page_chain() and its users to use zsdesc mm/zsmalloc: convert obj_allocated() and related helpers to use zsdesc mm/zsmalloc: convert init_zspage() to use zsdesc mm/zsmalloc: convert obj_to_page() and zs_free() to use zsdesc mm/zsmalloc: convert reset_page() to reset_zsdesc() mm/zsmalloc: convert zs_page_{isolate,migrate,putback} to use zsdesc mm/zsmalloc: convert __free_zspage() to use zsdesc mm/zsmalloc: convert location_to_obj() to use zsdesc mm/zsmalloc: convert migrate_zspage() to use zsdesc mm/zsmalloc: convert get_zspage() to take zsdesc mm/zsmalloc: convert SetZsPageMovable() to use zsdesc mm/zsmalloc: remove now unused helper functions mm/zsmalloc: convert {get,set}_first_obj_offset() to use zsdesc mm/zsmalloc.c | 578 +++++++++++++++++++++++++++++++------------------- 1 file changed, 364 insertions(+), 214 deletions(-) -- 2.39.3