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 4C4B2CA101E for ; Mon, 2 Sep 2024 02:11:35 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B8AAB8D0062; Sun, 1 Sep 2024 22:11:34 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id B39D58D0052; Sun, 1 Sep 2024 22:11:34 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id A02088D0062; Sun, 1 Sep 2024 22:11:34 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 8255D8D0052 for ; Sun, 1 Sep 2024 22:11:34 -0400 (EDT) Received: from smtpin29.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay04.hostedemail.com (Postfix) with ESMTP id E95011A1811 for ; Mon, 2 Sep 2024 02:11:33 +0000 (UTC) X-FDA: 82518171666.29.B00C07C Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.7]) by imf15.hostedemail.com (Postfix) with ESMTP id C9A0BA0002 for ; Mon, 2 Sep 2024 02:11:30 +0000 (UTC) Authentication-Results: imf15.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=g5LPciJH; spf=pass (imf15.hostedemail.com: domain of ying.huang@intel.com designates 192.198.163.7 as permitted sender) smtp.mailfrom=ying.huang@intel.com; dmarc=pass (policy=none) header.from=intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1725242999; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=ImREBC4Eobd3hDlnLO16qTVjJYW9Bjp0YEI9Tx9i7HQ=; b=NcYRNXe4BqdX+pM0Vx0FeMAgE/t+L+stcpBtG3z8shKiatNXXwCPy7Anj5oYQR3DWEzp12 C7RhtF2FjV6o7eKTzIEyu7L/wRVONz00E82H+Q+WyLQE5LWLA+CwFjsNcQd8yGYyhTa6q+ 9dZzUnj0G3Icy/e9F/RUekAlV7+Eaus= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1725242999; a=rsa-sha256; cv=none; b=TfvvNJ3OV6On6unhzkBTEJZ2nuibaFNuUnVIYp2qOkZopSScwRVQQnbdjzroS2SlhNdcx0 dwi9xScsaDTr0neGOu3x8w5pJRuS64xSL66WrlKX9IifOXVHszI5w40Tp7LLnzKbM84Xg4 eNlXJJfWRtHaSQElkK84MVV8GOQGJuQ= ARC-Authentication-Results: i=1; imf15.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=g5LPciJH; spf=pass (imf15.hostedemail.com: domain of ying.huang@intel.com designates 192.198.163.7 as permitted sender) smtp.mailfrom=ying.huang@intel.com; dmarc=pass (policy=none) header.from=intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1725243091; x=1756779091; h=from:to:cc:subject:in-reply-to:references:date: message-id:mime-version; bh=lIa1/ves7CFhzV4mIUGD2uJCIk7VgGhY+d4DZ+ukbCE=; b=g5LPciJHJUhFARo/jgrD9xm4aoPNYawu9xaTnZSJR/SvWrX3C/+D2MC/ 1g26PFbObjlOPj0FpPzfw0VM8K16OehaoFfoBjZipTIAscJUrPgAYuMwy srco2Ja5ydgBzbDe5oT1VjBr5K9uklb4/FDLchUJRGkgDl/OiNtTbvfFM hrhTINtN+kNhr9bEYbJbb4PYN1vdkZhVN6Kenpb4Ma1yK7KfkLv/Q1lvl REEh6Gtnl8hmeZtopv+9TlxSfoyFX9S5oqrLRL6ufCWncqwmVBlxuoIZK ty34gN12eD1Xj28WhCie4ryvlhoRMdyZCpkvBhwZbWy+Cg5nXl6OdVuxa g==; X-CSE-ConnectionGUID: PetSGKupT+iHv3VznRpDog== X-CSE-MsgGUID: CILf21mIRyaVI38Pcf7T1g== X-IronPort-AV: E=McAfee;i="6700,10204,11182"; a="49206478" X-IronPort-AV: E=Sophos;i="6.10,194,1719903600"; d="scan'208";a="49206478" Received: from orviesa001.jf.intel.com ([10.64.159.141]) by fmvoesa101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Sep 2024 19:11:29 -0700 X-CSE-ConnectionGUID: u3HEMCwyQbWZqI0ZiAcqLw== X-CSE-MsgGUID: 8aJnlJ+tSlSFM3Y1Mybzlg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.10,194,1719903600"; d="scan'208";a="101931078" Received: from yhuang6-desk2.sh.intel.com (HELO yhuang6-desk2.ccr.corp.intel.com) ([10.238.208.55]) by smtpauth.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 01 Sep 2024 19:11:26 -0700 From: "Huang, Ying" To: Dan Williams Cc: Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-cxl@vger.kernel.org, Davidlohr Bueso , Jonathan Cameron , Dave Jiang , Alison Schofield , Vishal Verma , Ira Weiny , Alistair Popple , Andy Shevchenko , Bjorn Helgaas , Baoquan He Subject: Re: [PATCH] Resource: fix region_intersects() for CXL memory In-Reply-To: <66c69470ae357_7605294ab@dwillia2-mobl3.amr.corp.intel.com.notmuch> (Dan Williams's message of "Wed, 21 Aug 2024 18:29:20 -0700") References: <20240816020723.771196-1-ying.huang@intel.com> <66bedd0f746ab_1c18294b5@dwillia2-mobl3.amr.corp.intel.com.notmuch> <87y14wj4ju.fsf@yhuang6-desk2.ccr.corp.intel.com> <66c69470ae357_7605294ab@dwillia2-mobl3.amr.corp.intel.com.notmuch> Date: Mon, 02 Sep 2024 10:07:52 +0800 Message-ID: <87r0a2g64n.fsf@yhuang6-desk2.ccr.corp.intel.com> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=ascii X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: C9A0BA0002 X-Stat-Signature: kei5rirndgj5x43xxros845gbkh1mmn4 X-HE-Tag: 1725243090-151127 X-HE-Meta: U2FsdGVkX18y9pHhjnTuH1SF9C2CmLSYc72w4QSj18n1yGncMNC2oyP0DAG0uCtzn3AgnFhMNK2EBwUQAAmOMmkyJm7QS2XFgWVLm78/2f4HY/RDNShM6Z1eQMLvXjmdOd1zQDidP/qVopSIts2jjBpxYt1LB+J78E+3djmItPRl1Py4XYnTqz0GkAZyukNLkyOMa+HtaKUIflT/2HuigP7Lx1vFnTYjRsOHZTjPoVVl/8S+hxQks7D3KVDMZ0NbGM+2HyQzasdAmLF/y/oqyjPBnDrdUK58rP3yUKAfqzJaISuuOKeTL2On72xOBDW5RVIPfNz9vz/9ZIJl4uBn40JcQ9Pid6QjbzpbR1Px1iDG1TzETdqOsSimye+NYtARJaVu6e9cWPaRdh5b4T1prKB8obnPSWej7yfxc59Cyh0Ah8d+pzAoyrpafr+FEamY4nlGRTpr8M0Dq0g3IPzfCeiJwp1E1nsQPqnlKmwH92SmkXwXt6u8i2lNKoxa3VBZkI6q2OfBtgxdwe7t20s9CdtjGCdoPGX3Vvx1yH5JLxQOKjNqMP5PUO8pBO7l6j3SEbVzJXgToWjIz8PBT8ckKPRYPqKMic3Po5XKGcrCi/gAL6DlNMoozlxQsO7jf+qyeC5PnDFbKzh1fZHpCZwPYsXVxJvMgJEkiLnYroRMAh84Cn3tZX7s3htvi2hzIWQbrul8FtGsqyBu+KAtbdLpD6K+noPovJgNsAkeL5pq5cUj3Sx5v8OjJcw4/otWSC+jLvlygczfADZT0x+iMU8+C66YbKbNmHpnlDOk1QAH+BC3z2nXGg3LTNBDrdE7xuYceX08m5eZE5d9v34/iPK5Wjr1emeARKeGoU9MAUsm5XXI1Z+znnmHE5uXcMRWN8J4PGNbFUy9OUT9s3dR4jMphscWy8UCSrf/1AffFEcopm2mXRnApQH5yXyBh0auQZCXG8qZ9+F8npjydZyeygJ SgROSl7E 1E2lULcEJcJPGMKe6+SBXCq9PNrqQh0HvGqbK43k18UZW7KBniRdsWPB3WKdMu7NRasBtm60YwW3aAn17D/Zt+XENiTk3eFHP2bPCex4cotm1NkZOyMkFUtsgyYYebtTfdsIgPvh0hnCpBAyw3h5SHmmiAJso4Oy2fsGDSqInnWdkK7uejW6D8khqdw4M3UnKR0p0Vq2hFwq5k8/Cz1PXre+4YdguESFqz1hiVUvVhIOr/G1lld8afZ6tVA== 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: Dan Williams writes: > Huang, Ying wrote: >> Dan Williams writes: >> > Huang Ying wrote: > [..] >> >> kernel/resource.c | 44 +++++++++++++++++++++++++++++++++++++------- >> >> 1 file changed, 37 insertions(+), 7 deletions(-) >> >> >> >> diff --git a/kernel/resource.c b/kernel/resource.c >> >> index 14777afb0a99..c97a5add9394 100644 >> >> --- a/kernel/resource.c >> >> +++ b/kernel/resource.c > [..] [snip] > >> However, I admit that the original code is hard to be understood, >> whether is something like below better? > > I like that this proposal defers incrementing @other rather than > decrement after the fact. > >> >> for (p = parent->child; p ; p = p->sibling) { >> if (!resource_overlaps(p, &res)) >> continue; >> is_type = (((p->flags & flags) == flags) && >> ((desc == IORES_DESC_NONE) || (desc == p->desc))); >> if (is_type) { >> type++; >> continue; >> } >> /* >> * Continue to search in descendant resources. Unless >> * the matched descendant resources cover the whole >> * overlapped range, increase 'other', because it >> * overlaps with 'p' at least. >> */ >> covered = false; > > I would call @covered, @single_descendant. Since @covered is ambiguous. Sorry, I don't understand why this is called @single_descendant. It's possible that the checked region is overlapped with 2 descendants, and the result is REGION_INTERSECTS. For example, 490000000-52fffffff : CXL Window 0 490000000-50fffffff : region0 490000000-50fffffff : dax0.0 490000000-50fffffff : System RAM (kmem) 510000000-52fffffff : region1 510000000-52fffffff : dax0.1 510000000-52fffffff : System RAM (kmem) region_intersects(, 0x50ffff000, 2 * PAGE_SIZE, IORESOURCE_SYSTEM_RAM, IORES_DESC_NONE) => REGION_INTERSECTS >> ostart = max(res.start, p->start); >> oend = min(res.end, p->end); >> for_each_resource(p, dp, false) { >> if (!resource_overlaps(dp, &res)) >> continue; >> is_type = (((dp->flags & flags) == flags) && >> ((desc == IORES_DESC_NONE) || >> (desc == dp->desc))); >> if (is_type) { >> type++; >> if (dp->start > ostart) > > ...this should have a comment: > > /* partial descendant overlap indicates overlap with a descendant hole */ Yes. Some comments should help. >> break; >> if (dp->end >= oend) { >> covered = true; >> break; > > ...then per above this because easier to read as: > > single_descendant = true; > >> } >> ostart = dp->end + 1; >> } >> } >> if (!covered) >> other++; >> } >> [snip] -- Best Regards, Huang, Ying