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 A39EDC433EF for ; Wed, 23 Mar 2022 13:57:34 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 247EE6B0072; Wed, 23 Mar 2022 09:57:34 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1CFEE6B0073; Wed, 23 Mar 2022 09:57:34 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 070DF6B0074; Wed, 23 Mar 2022 09:57:34 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (relay.a.hostedemail.com [64.99.140.24]) by kanga.kvack.org (Postfix) with ESMTP id E7B466B0072 for ; Wed, 23 Mar 2022 09:57:33 -0400 (EDT) Received: from smtpin13.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay13.hostedemail.com (Postfix) with ESMTP id 7768C608BD for ; Wed, 23 Mar 2022 13:57:33 +0000 (UTC) X-FDA: 79275803586.13.42B66B2 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.220.28]) by imf31.hostedemail.com (Postfix) with ESMTP id 23F7B20034 for ; Wed, 23 Mar 2022 13:57:32 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id AFFF1210E4; Wed, 23 Mar 2022 13:57:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1648043851; h=from:from:reply-to: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; bh=itu+LHsaFezNfv+6AfxtF3Pylr5NbpawvSpL4NXWxCc=; b=ZsrLi6jex0eApPlRNLc7tI9/QKRpc0JHSa98ysm8sWkr7DGrC+Q8QNEGa0KJKSw2kCt778 tGjirxsi8jSsWMREeU6akSB3TWnB9Q7LtsohMtwJostGPbtBYCb4XwkSkI9FxRdcBNU/1E zu04qCmmAb1TOebmQZ6I/665j4BBvAU= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1648043851; h=from:from:reply-to: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; bh=itu+LHsaFezNfv+6AfxtF3Pylr5NbpawvSpL4NXWxCc=; b=E/97Ue1iAv691jvF2gSfULnJn4QIBWV3B/TyrMcNJ7SAzbH5ecCJXsF/zlagV4bEZuGCo+ WbIb3S+/6RInXNBw== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 36D8712FC5; Wed, 23 Mar 2022 13:57:31 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id RHj4C0snO2LpOQAAMHmgww (envelope-from ); Wed, 23 Mar 2022 13:57:31 +0000 Message-ID: Date: Wed, 23 Mar 2022 14:57:30 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.7.0 Subject: Re: [PATCH v6 27/39] kasan, mm: only define ___GFP_SKIP_KASAN_POISON with HW_TAGS Content-Language: en-US To: Andrey Konovalov , Sebastian Andrzej Siewior , Andrew Morton Cc: andrey.konovalov@linux.dev, Marco Elver , Alexander Potapenko , Dmitry Vyukov , Andrey Ryabinin , kasan-dev , Linux Memory Management List , Vincenzo Frascino , Catalin Marinas , Will Deacon , Mark Rutland , Linux ARM , Peter Collingbourne , Evgenii Stepanov , LKML , Andrey Konovalov , Matthew Wilcox References: <44e5738a584c11801b2b8f1231898918efc8634a.1643047180.git.andreyknvl@google.com> <63704e10-18cf-9a82-cffb-052c6046ba7d@suse.cz> From: Vlastimil Babka In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Stat-Signature: 17smqfdm381fatxnc3hbqdac33z744h9 Authentication-Results: imf31.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b=ZsrLi6je; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b="E/97Ue1i"; dmarc=none; spf=pass (imf31.hostedemail.com: domain of vbabka@suse.cz designates 195.135.220.28 as permitted sender) smtp.mailfrom=vbabka@suse.cz X-Rspam-User: X-Rspamd-Server: rspam11 X-Rspamd-Queue-Id: 23F7B20034 X-HE-Tag: 1648043852-467659 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: On 3/23/22 14:36, Andrey Konovalov wrote: > On Wed, Mar 23, 2022 at 2:02 PM Sebastian Andrzej Siewior > wrote: >> >> On 2022-03-23 12:48:29 [+0100], Vlastimil Babka wrote: >>>> +#ifdef CONFIG_KASAN_HW_TAGS >>>> #define ___GFP_SKIP_KASAN_POISON 0x1000000u >>>> +#else >>>> +#define ___GFP_SKIP_KASAN_POISON 0 >>>> +#endif >>>> #ifdef CONFIG_LOCKDEP >>>> #define ___GFP_NOLOCKDEP 0x2000000u >>>> #else >>>> @@ -251,7 +255,9 @@ struct vm_area_struct; >>>> #define __GFP_NOLOCKDEP ((__force gfp_t)___GFP_NOLOCKDEP) >>>> >>>> /* Room for N __GFP_FOO bits */ >>>> -#define __GFP_BITS_SHIFT (25 + IS_ENABLED(CONFIG_LOCKDEP)) >>>> +#define __GFP_BITS_SHIFT (24 + \ >>>> + IS_ENABLED(CONFIG_KASAN_HW_TAGS) + \ >>>> + IS_ENABLED(CONFIG_LOCKDEP)) >>> >>> This breaks __GFP_NOLOCKDEP, see: >>> https://lore.kernel.org/all/YjoJ4CzB3yfWSV1F@linutronix.de/ >> >> This could work because ___GFP_NOLOCKDEP is still 0x2000000u. In >> ("kasan, page_alloc: allow skipping memory init for HW_TAGS") >> https://lore.kernel.org/all/0d53efeff345de7d708e0baa0d8829167772521e.1643047180.git.andreyknvl@google.com/ >> >> This is replaced with 0x8000000u which breaks lockdep. >> >> Sebastian > > Hi Sebastian, > > Indeed, sorry for breaking lockdep. Thank you for the report! > > I wonder what's the proper fix for this. Perhaps, don't hide KASAN GFP > bits under CONFIG_KASAN_HW_TAGS? And then do: > > #define __GFP_BITS_SHIFT (27 + IS_ENABLED(CONFIG_LOCKDEP)) > > Vlastimil, Andrew do you have any preference? I guess it's the simplest thing to do for now. For the future we can still improve and handle all combinations of kasan/lockdep to occupy as few bits as possible and set the shift/mask appropriately. Or consider first if it's necessary anyway. I don't know if we really expect at any point to start triggering the BUILD_BUG_ON() in radix_tree_init() and then only some combination of configs will reduce the flags to a number that works. Or is there anything else that depends on __GFP_BITS_SHIFT? I mean if we don't expect to go this way, we can just define __GFP_BITS_SHIFT as a constant that assumes all the config-dependent flags to be defined (not zero). > If my suggestion sounds good, Andrew, could you directly apply the > changes? They are needed for these 3 patches: > > kasan, page_alloc: allow skipping memory init for HW_TAGS > kasan, page_alloc: allow skipping unpoisoning for HW_TAGS > kasan, mm: only define ___GFP_SKIP_KASAN_POISON with HW_TAGS > > As these depend on each other, I can't send separate patches that can > be folded for all 3. > > Thanks!