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 C533EC05027 for ; Mon, 20 Feb 2023 14:38:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 358E56B0071; Mon, 20 Feb 2023 09:38:22 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 2E1D06B0072; Mon, 20 Feb 2023 09:38:22 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 182B46B0073; Mon, 20 Feb 2023 09:38:22 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 064516B0071 for ; Mon, 20 Feb 2023 09:38:22 -0500 (EST) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id C5CC31A02A8 for ; Mon, 20 Feb 2023 14:38:21 +0000 (UTC) X-FDA: 80487925602.01.6784105 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf03.hostedemail.com (Postfix) with ESMTP id 9B2EB2000A for ; Mon, 20 Feb 2023 14:38:19 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=OQuaRo+P; spf=pass (imf03.hostedemail.com: domain of dakr@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=dakr@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1676903899; 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=ZooPx0J4FahhlqcFr0VVGzJP8CK2Lifinz64+tcHuxs=; b=Tn97I3Mxf6QJQL8LAdBIfQuWQnoeKC5QKxWw3HPBU3y9EoARulOr0mrnunzn0t4KwVCpdW 44PpRaWPZ1yErTGQ1z3Qp6kGTA7vtAzQPj5Q5V1Wqv8edeozK52k0zUi0/G06DqH3hULO3 4Kh8Jm53NZoL9RWZ42dUaLyBqW9zcKU= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=OQuaRo+P; spf=pass (imf03.hostedemail.com: domain of dakr@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=dakr@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1676903899; a=rsa-sha256; cv=none; b=qZb7GvsADdoyFjJ+7MhRE60FEywdmnM7G0tVcsZGXXLRU5WVfGrn4CBYD33Fl2tcyNShFD 6DqVkmxp+NtnHxfp+6zcPN6rByC/imp9Uskjo0deLV5lMbUc3r5UX92kt/RmLF6HeM424K 2l/aviWdadIBHBctyk4mmn2OpNHc2QY= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1676903898; h=from:from: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; bh=ZooPx0J4FahhlqcFr0VVGzJP8CK2Lifinz64+tcHuxs=; b=OQuaRo+P1dylgkcrrlEuNfMx00z1IeN+pHP6Adohnf2LQgfrHS2ckIUYLXyoR0IGdrHRq4 vfMyNxOE8J+M0HyXa2YJSl27q33GVU9EBDsa4WQ9aqj/TPDkGqPOKRTgkvfeuzX7y8GT7H cxYyHc6IKETQIS7mPTzhdrqzv0wVsuI= Received: from mail-ed1-f72.google.com (mail-ed1-f72.google.com [209.85.208.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-86-8o5qTkB5MH-vXiXXnYaoUA-1; Mon, 20 Feb 2023 09:38:17 -0500 X-MC-Unique: 8o5qTkB5MH-vXiXXnYaoUA-1 Received: by mail-ed1-f72.google.com with SMTP id s13-20020a508dcd000000b004aab6614de9so1267602edh.6 for ; Mon, 20 Feb 2023 06:38:17 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:organization:from:references :cc:to:content-language:subject:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=ZooPx0J4FahhlqcFr0VVGzJP8CK2Lifinz64+tcHuxs=; b=LlDG1uFtUxYBFZkiPSMdwwnszFVuH+ww0FIfwmIT8rzIEUAaWyYJttqimFti1ppKr3 mjdEK8QJ/sRg1jwnTTATCSD66WDvnXatjjfx5bIFpGFncXSxvQ+LNgCv10sufe2UlEYJ lLQEyQjHNu7rlmPNVvjzPpn/fJ14+lvHhJS4xSAgwBRDAJOOrRRBahHCMT/HcDm3VdGP 1Vu+zE8/PDwf7p5sdaA30bN48eAbxhulNdrkMU90CdNyDUEY1vmptG/aKVptnegkSh9P TClzr0/JnHsJ+jt7L/rI6byh47kffjzNOZFPeObf+OiwhuZSQxKMbEaTMr1AxPy6+4Gr jxTQ== X-Gm-Message-State: AO0yUKUAxE+9sa1gdwFUvegwUnGD7uxJyGj7NSSLNQHhbLrCiRxbE0JV i9JwYWhBLHJowHg8xB0ctNMUdC/pGMiwOHn450u37g39TJYsQdFjotXSTGNHoYGiusJT+10bYHE g1EKtlcGVi+8= X-Received: by 2002:a17:907:c10:b0:87b:da74:d272 with SMTP id ga16-20020a1709070c1000b0087bda74d272mr11177668ejc.45.1676903896712; Mon, 20 Feb 2023 06:38:16 -0800 (PST) X-Google-Smtp-Source: AK7set890fgad0EenmfhXcAtdl+hYlW2r/ANHXfflzV6RWOHKEQ6317uyFhrXsZ5SSZOJN3kSOCx5Q== X-Received: by 2002:a17:907:c10:b0:87b:da74:d272 with SMTP id ga16-20020a1709070c1000b0087bda74d272mr11177652ejc.45.1676903896465; Mon, 20 Feb 2023 06:38:16 -0800 (PST) Received: from ?IPV6:2a02:810d:4b3f:de78:642:1aff:fe31:a15c? ([2a02:810d:4b3f:de78:642:1aff:fe31:a15c]) by smtp.gmail.com with ESMTPSA id kj8-20020a170907764800b008c0b8dd4cbdsm3118420ejc.112.2023.02.20.06.38.14 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 20 Feb 2023 06:38:15 -0800 (PST) Message-ID: Date: Mon, 20 Feb 2023 14:48:20 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1 Subject: Re: [PATCH drm-next v2 03/16] maple_tree: split up MA_STATE() macro To: Matthew Wilcox Cc: airlied@gmail.com, daniel@ffwll.ch, tzimmermann@suse.de, mripard@kernel.org, corbet@lwn.net, christian.koenig@amd.com, bskeggs@redhat.com, Liam.Howlett@oracle.com, matthew.brost@intel.com, boris.brezillon@collabora.com, alexdeucher@gmail.com, ogabbay@kernel.org, bagasdotme@gmail.com, jason@jlekstrand.net, dri-devel@lists.freedesktop.org, nouveau@lists.freedesktop.org, linux-doc@vger.kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org References: <20230217134422.14116-1-dakr@redhat.com> <20230217134422.14116-4-dakr@redhat.com> From: Danilo Krummrich Organization: RedHat In-Reply-To: X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspam-User: X-Rspamd-Server: rspam03 X-Stat-Signature: fkbioan6n9o55bb3u5wixy77ei81ekgs X-Rspamd-Queue-Id: 9B2EB2000A X-HE-Tag: 1676903899-233788 X-HE-Meta: U2FsdGVkX1+KCd9PILe/vUohks1sypnnFihtJGUVb473gYowwU1dgaCaVFV0+0VSC1eij58sN8sDxxpPwOr070b4x+p9L3rzT3a9yyShrD7JGA562DzYSwDDTrOcsIYs4PUDZBSXc7JobYsEwf++TqtA0mJk1ffpAygiLl4ySFYDmykzfslsugeHm8sIxR0b9pZggFWvgPe4FlQR02c4SXwnwSY6mkN55KpUZi+atn8lX9bbOGuRJXmC7rL1CqaVV+atiZnYixCNwFjYBB6u2AZiZcXoi8ZoHxjNg6og/W0zf3CEQcr0btJDdVrchkE6VXoSTV35iDo0rMhd9uVAEYTHvlhV7lJYP9PoJHnddMSh3gkHU9Jm5If+KoGCJAFE8xQ3BD9SPxB43C9yIkxJyHnPWsYeG527P9hoXJbyXoqgpEisKWOjbVFv0+t3QytfF4wMFsmMSrD/zsbxf+GERJY855mYjQZJkpw1KDYboK3QlR1jTgLeHImz37TbT3KPUTU+SYdvifuuMMFeQ5AMa3410b4wumS59QrAOGlITFTu4Oa/3m+wTLb03SQXe2vggJspOqBZvVVrSHumPbeT6vAGdSxlBY/GDV9pMU/3gEthRaeqiQo8mIHmRTHuFc3DaknWxytYPAfkIv9S2VuJS3GYhweNmFTVni4+io+7WbHQDooxTTgqEh4dV9jXMDwZLTQ5dj6+QXhYgOu0NTGyHh5SBZM7nQ8400xytW7ej/AgHNFIO1FCruISqVfegyQF0BxcgoJ1dny003o+vPiEdBXVHp0E/57oyMqf3jHoVxnDMhl3HLwTFfe6Syro43wXA08WoW73N461WMBn4Av0x5j/Y2KkeHF16pekWz94Bcj/xNpEybI1CTX4BlYcWNcXY5cGj9KVSdLqEB9h+vzHNQDenE1MTxuTtvmOBdwkUA4eh7aMsmCkkq1GDoV9Aa0+QN9c6HZqJa0F6NdO1vq oeECSomu GlCwGXZdHD7lqzwA7fTqfB8F5DU2DP8m1mmdeo0xMaoaaPkm4z7cnG8zJRTBzzi+gB9DADuMwmt0Cc5xnBxR3TTi2X2Kl0YUvcAnllxjZ+xOu0Jm3+pOXZSM7OkYM2nHTLaTt2PvEyFBU8J93gXkJc7nAjiCTkOD2OBoeFT9ftiWJnX+NSbCAphZACQCgm3NBNyWsnu45Wc4cGNjmYWvGdRU189N40zB8B6vYpsF4gU9d7XTFkODD/zDpZ1auNYB78LI2jmzCWh/b/wzRmghAOlQ2X+qJCjFwjk3nWsCi+9GjPdRED1TSTYQEs1yiLxytNKTfgVRSh/iGqxFp8bGBZeN2xHUn7HwZ+M6Ox1IGxlran/hZW9K0NJQb7115QxzXmsHiKs3WZw1hQqrIj5ulPLFAt2pXtNlynNgs0+ONaNlQ5uSpQG9AL3w7OUtDXt07nl3f 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 2/17/23 20:45, Matthew Wilcox wrote: > On Fri, Feb 17, 2023 at 02:44:09PM +0100, Danilo Krummrich wrote: >> \#define SAMPLE_ITER(name, __mgr) \ >> struct sample_iter name = { \ >> .mas = __MA_STATE(&(__mgr)->mt, 0, 0), > > This is usually called MA_STATE_INIT() Yep, that's better. > >> #define sample_iter_for_each_range(it__, start__, end__) \ >> for ((it__).mas.index = start__, (it__).entry = mas_find(&(it__).mas, end__ - 1); \ >> (it__).entry; (it__).entry = mas_find(&(it__).mas, end__ - 1)) > > This is a bad iterator design. It's usually best to do this: > > struct sample *sample; > SAMPLE_ITERATOR(si, min); > > sample_iter_for_each(&si, sample, max) { > frob(mgr, sample); > } > The reason why I don't set index (and max) within SAMPLE_ITER() is that the range to iterate might not yet be known at that time, so I thought it could just be set in sample_iter_for_each_range(). However, I see that this might prevail users to assume that it's safe to iterate a range based on the same iterator instance multiple times though. Instead users should maybe move the tree walk to another function once the range is known. The reason for the payload structure to be part of the iterator is that I have two maple trees in the GPUVA manager and hence two different payload types. Within the iterator structure they're just within a union allowing me to implement the tree walk macro just once rather than twice. Anyway, I feel like your approach looks cleaner, hence I'll change it. > I don't mind splitting apart MA_STATE_INIT from MA_STATE, and if you > do that, we can also use it in VMA_ITERATOR. >