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 1E5A2C2D0D1 for ; Mon, 24 Jun 2024 17:31:56 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8E14C6B00DC; Mon, 24 Jun 2024 13:31:55 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 8912D6B0109; Mon, 24 Jun 2024 13:31:55 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 70AB36B01A3; Mon, 24 Jun 2024 13:31:55 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 51AEF6B00DC for ; Mon, 24 Jun 2024 13:31:55 -0400 (EDT) Received: from smtpin09.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id A5302140E80 for ; Mon, 24 Jun 2024 17:31:54 +0000 (UTC) X-FDA: 82266474948.09.59DA2B5 Received: from mail-lf1-f48.google.com (mail-lf1-f48.google.com [209.85.167.48]) by imf13.hostedemail.com (Postfix) with ESMTP id C74E12000F for ; Mon, 24 Jun 2024 17:31:52 +0000 (UTC) Authentication-Results: imf13.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=pxXuws9I; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf13.hostedemail.com: domain of yosryahmed@google.com designates 209.85.167.48 as permitted sender) smtp.mailfrom=yosryahmed@google.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1719250297; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=lJahqqcPYHh8+eBoSG26csJCzav1KQmoeVFSqgS7I8o=; b=t6UxFjHI57OwnCJ/Exc07oK608Mv/cXLTfAZC82/ZtQih8NWvHBnPmF6RTDPbhzLkLkZJK KAvdJmsNi1nqua7nOnl68PE6mnHmiBXIbh/JoxuTziQmSZZphKi6Fn9SExVvKLufjFE/L/ QJVHcdCzeCoFeRIBq/ViyjuFk+CzRbA= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1719250297; a=rsa-sha256; cv=none; b=rw1Y+9+GrHLF1lfM0FFX47f8FimZcyvSOi5j1pIYyjnUhqJ4mg9RrH9VWGMU6yQg0LApmS SmJQt5tes2BKfIkCEhhgfmnELgxp7mHWEw9JYtBOYrmiHkmJfzWvLCXBSk7yK1vHW0w7vZ uiGOYqenWoOZNkqPc7cWiDNROv23RGY= ARC-Authentication-Results: i=1; imf13.hostedemail.com; dkim=pass header.d=google.com header.s=20230601 header.b=pxXuws9I; dmarc=pass (policy=reject) header.from=google.com; spf=pass (imf13.hostedemail.com: domain of yosryahmed@google.com designates 209.85.167.48 as permitted sender) smtp.mailfrom=yosryahmed@google.com Received: by mail-lf1-f48.google.com with SMTP id 2adb3069b0e04-52ce655ff5bso1268833e87.3 for ; Mon, 24 Jun 2024 10:31:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20230601; t=1719250311; x=1719855111; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=lJahqqcPYHh8+eBoSG26csJCzav1KQmoeVFSqgS7I8o=; b=pxXuws9Iq5C4JDSGs1XskrsfDl1KfwWPssyx7x+m40+V5pGKRpE2q7pUMs12+xO3rQ Y+EVC0L8VlrrwPtWxqLAeVMvxy8smOnr0YjP6/Lyh0yCEHTPwPQl+ov/MhYv9V7tjS/X Abj1G9eaegtq3gm1DFNdx18RKALCJDn2zbqeOSzu+c26B45XXoXN4yYZEAqVmqgaUwF7 N4qKGbsB921wFyjgl6Fnsop4w7EAoPDVN/y3gxaz1wg9o3IrBmnr/RCZIKIyjOnmWX1S 0GApD0oPN86/Qa+aX0nGA2X4LYZtnaBDvR+kdhYQBYkuYJvLWxRvx92nEoIyXdJhJ33X kglQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1719250311; x=1719855111; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=lJahqqcPYHh8+eBoSG26csJCzav1KQmoeVFSqgS7I8o=; b=FFM22oslhi/nVugOasqfWaC29R4hBAd8x2hN4ykoesbf3kbumicyC0+4p+ddhZS9HK Ed1fq4ccsfNB5MPxvxrfKRCc7tpWka0B43y65SVX7Rio+2ZQFq13GQycqpbxdZ6ReuyB 3IzDOZJ5JSgax0LS8miVPENnO7fp3YCLu+sEEMHG35UU0Wg31Frpc7lyO48mA8lJ7CiR etR+XISkAt60C5yV6khgZNU5uGKywGgWtBpu3A+GD6r0po8IzJcqWDv3G+xObuUVIIWk 5zf01FZDlzejlYZrBwZl5txM/5guAPOQGZVFYnFvAJtELEFMsQsivZlNpkxu4cpwsJFI NVmg== X-Forwarded-Encrypted: i=1; AJvYcCVS6i9dAqSQOF76sWyjKA/njKr+LZmRE4uTp+fKmK01SsUACEVvDSj36kuY5fLOIklTQP8VfA0CEl+xhGibLGt65s4= X-Gm-Message-State: AOJu0YwRLwl4yLnoJDPie4/zX7otV3lAixPZUizp6Dsc0JxlHmIJL0Uw ROsIioZf0L/f7R2u6xrhxly9J3T+agCZBG3d/NolJaMxqGIj9hT9YmjJyS1mfsgDtTuRWAZgTs3 eduufSW/Z1rPTW63lt2FLcX58hjoeOGGwfnrO X-Google-Smtp-Source: AGHT+IHu/6Uvh7AV/Zv0qy/SmWhabuqLk3uy9Cs1T7gS6dfZJh34AaaZ40gcXksxb2cum4I5w5DnMWycjP5k27WphGc= X-Received: by 2002:a05:6512:6c3:b0:52c:83c2:9670 with SMTP id 2adb3069b0e04-52ce0646e8bmr4646203e87.69.1719250310229; Mon, 24 Jun 2024 10:31:50 -0700 (PDT) MIME-Version: 1.0 References: <202406241651.963e3e78-oliver.sang@intel.com> <12fb19d1-3e57-4880-be59-0e83cdc4b7f1@gmail.com> <61d19ec8-2ba7-e156-7bb7-f746dae8e120@google.com> <5b3e732c-d23d-41ef-ae5c-947fa3e866ab@gmail.com> In-Reply-To: From: Yosry Ahmed Date: Mon, 24 Jun 2024 10:31:14 -0700 Message-ID: Subject: Re: [linux-next:master] [mm] 0fa2857d23: WARNING:at_mm/page_alloc.c:#__alloc_pages_noprof To: Usama Arif Cc: Hugh Dickins , kernel test robot , oe-lkp@lists.linux.dev, lkp@intel.com, Linux Memory Management List , Andrew Morton , Chengming Zhou , Nhat Pham , David Hildenbrand , "Huang, Ying" , Johannes Weiner , Matthew Wilcox , Shakeel Butt , Andi Kleen , linux-kernel@vger.kernel.org, "Vlastimil Babka (SUSE)" , Yury Norov , Rasmus Villemoes Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: C74E12000F X-Stat-Signature: 9wogzn36aeqfywj6o7hzyn47b1ao5ckw X-Rspam-User: X-HE-Tag: 1719250312-775733 X-HE-Meta: U2FsdGVkX1+wfLHyZ8Gi9qBa/dDbEDuBzZFjrUJQsTCoCVEWNYty4t+EUxaJz4SVGriQ4zuV681Y1QorsDddO0E5nmdLodhxT+6zI58g60ru0M0QtmqAqkQPeMryzxe8jOMhh2lc27h36DFxcpR9MlJbHKznY0Dc1E6yeYHnOKmbPXlxwtuVXvuM0a3vD48mLY6NtjLjqFfJgdrCOkrYE51ZFxwS522u1/l7gCVqVRtRSdUYKOZlyb2lFFPT7SA2ZuR3Y/XyjHjkq3e1s9gZG3iTx5lL24eViBgX+Q0DBnr2iaJXfr8fP/z31brEjBWPB0FV2dsKEb3CBwQgzIJfwyzHA+MhOwVv++GuY4lDqJ0xxL69eWg3uh2nImDLeOD0Ek3GfcfAHSb2vAwxaWYrdfDQSf1kqni+4tghb7k9JK5OrYt+tSeIljxA3loPz/sNxMsR+bYj4lkdHYwGm9o2yApgYA4dorCjy6dhqcxzUAaB6l5fJfO8na/oAA19SHBMfSSb6/6M1UGod6SCR8SOu/t2L9BUr1YqcpkB3WNHgV+ai9uLR2udUrYtUQFV/tx6BNLUZXkS3Jw+6BwH1UbUU105D9/od+1RYa7tC04yKXeC6p+fodi/f+Y2Pa1/64IIcGn3NsURVqiJnXGJaPl+69AY34JLDVAmyNLN0lRxWLMcuPbqGgg0CBgF9MTrM5/w1gsxHh6+XjBbiS9Nw1V3Ni9rRUpDMlwJ8WSpyV7BQwiTN/gp9l/fR3DCqhE65ZuK9KJ6BqLtVM0O+lWh/t3O2X4RxZ+pKI2Cqzy9v6Tk4v3KosgJU+JR71jHzt1eoV5kBSXu5jP16hcx3mubPsnRD/kOWXnUEviGPK9BclyL1dg2PjmwcBT2CUgWcEllkfaooAMm/04TRgsRU2YQTFQdqMaSG0G9MsYJ0tEAAiDfPJUqq05RouHo/r/MtyNnFP4E3E5SYHt/tJFsTnArnjc 0fHURtlj 5Tc5xv0xycSJy3OH5Ob/CReVvMFe0pI/VAesxaWUcbqJA6JIIJX9vpIbymM3orqybWyG8Q5vQz/s006lLv0MyGveNofPSvXp9/hyQHgHjyx1zV0GSqGdZUkm9LuCVxEA/dhH8f4J5ymHXgfK4P1EdkqnqGdhV19FNao6uVUDSNGuKShHzzpJsSgaPmUBY5p+CujjFWaNdaDJn4IS5cHBufl1tzvW5clBZ+yn9p0Xeve48T1LB2GeXXBzH+uM+UkHg7ficFz1zEBslt+iJoMp2CeeitmniE8wSN4ZgeHY/Eru+Fhwqag9bSrgbMZzt+YvfZijQh8zT7HFRA2M4vskSc5LFHg== 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 Mon, Jun 24, 2024 at 10:26=E2=80=AFAM Usama Arif wrote: > > > On 24/06/2024 19:56, Yosry Ahmed wrote: > > [..] > >>>> - p->zeromap =3D bitmap_zalloc(maxpages, GFP_KERNEL); > >>>> + p->zeromap =3D kvzalloc(DIV_ROUND_UP(maxpages, 8), GFP_KERNE= L); > >>> No, 8 is not right for 32-bit kernels. I think you want > >>> p->zeromap =3D kvzalloc(BITS_TO_LONGS(maxpages), GFP_KERNEL); > >>> but please check it carefully, I'm easily confused by such conversion= s. > >>> > >>> Hugh > >> Ah yes, didnt take into account 32-bit kernel. I think its supposed to= be > >> > >> p->zeromap =3D kvzalloc(BITS_TO_LONGS(maxpages) * sizeof(unsigned l= ong), > >> GFP_KERNEL); > > You can do something similar to bitmap_zalloc() and use: > > > > kvmalloc_array(BITS_TO_LONGS(nbits), sizeof(unsigned long), GFP_KERNEL > > | __GFP_ZERO) > > > > I don't see a kvzalloc_array() variant to use directly, but it should > > be trivial to add it. I can see other users of kvmalloc_array() that > > pass in __GFP_ZERO (e.g. fs/ntfs3/bitmap.c). > > > > , or you could take it a step further and add bitmap_kvzalloc(), > > assuming the maintainers are open to that. > > Thanks! bitmap_kvzalloc makes most sense to me. It doesnt make sense > that bitmap should only be limited to MAX_PAGE_ORDER size. I can add > this patch below at the start of the series and use it in the patch for > zeropage swap optimization. > > > bitmap: add support for virtually contiguous bitmap > > The current bitmap_zalloc API limits the allocation to MAX_PAGE_ORDE= R, > which prevents larger order bitmap allocations. Introduce > bitmap_kvzalloc that will allow larger allocations of bitmap. > kvmalloc_array still attempts to allocate physically contiguous memo= ry, > but upon failure, falls back to non-contiguous (vmalloc) allocation. > > Suggested-by: Yosry Ahmed > Signed-off-by: Usama Arif > LGTM with a small fix below. > diff --git a/include/linux/bitmap.h b/include/linux/bitmap.h > index 8c4768c44a01..881c2ff2e834 100644 > --- a/include/linux/bitmap.h > +++ b/include/linux/bitmap.h > @@ -131,9 +131,11 @@ struct device; > */ > unsigned long *bitmap_alloc(unsigned int nbits, gfp_t flags); > unsigned long *bitmap_zalloc(unsigned int nbits, gfp_t flags); > +unsigned long *bitmap_kvzalloc(unsigned int nbits, gfp_t flags); > unsigned long *bitmap_alloc_node(unsigned int nbits, gfp_t flags, int > node); > unsigned long *bitmap_zalloc_node(unsigned int nbits, gfp_t flags, int > node); > void bitmap_free(const unsigned long *bitmap); > +void bitmap_kvfree(const unsigned long *bitmap); > > DEFINE_FREE(bitmap, unsigned long *, if (_T) bitmap_free(_T)) > > diff --git a/lib/bitmap.c b/lib/bitmap.c > index b97692854966..eabbfb85fb45 100644 > --- a/lib/bitmap.c > +++ b/lib/bitmap.c > @@ -727,6 +727,13 @@ unsigned long *bitmap_zalloc(unsigned int nbits, > gfp_t flags) > } > EXPORT_SYMBOL(bitmap_zalloc); > > +unsigned long *bitmap_kvzalloc(unsigned int nbits, gfp_t flags) > +{ > + return kvmalloc_array(BITS_TO_LONGS(nbits), sizeof(unsigned long)= , > + flags | __GFP_ZERO); > +} > +EXPORT_SYMBOL(bitmap_zalloc); EXPORT_SYMBOL(bitmap_kvzalloc)*