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 3BC1BC369C9 for ; Fri, 18 Apr 2025 22:37:23 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1DAE9280005; Fri, 18 Apr 2025 18:37:21 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 1861D280004; Fri, 18 Apr 2025 18:37:21 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id F3EB3280005; Fri, 18 Apr 2025 18:37:20 -0400 (EDT) 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 D4EA2280004 for ; Fri, 18 Apr 2025 18:37:20 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id E56F7C0FAC for ; Fri, 18 Apr 2025 22:37:21 +0000 (UTC) X-FDA: 83348627082.26.FC57066 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by imf27.hostedemail.com (Postfix) with ESMTP id 2FDB340006 for ; Fri, 18 Apr 2025 22:37:20 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=fhuck6uj; dmarc=pass (policy=quarantine) header.from=redhat.com; spf=pass (imf27.hostedemail.com: domain of bhe@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=bhe@redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1745015840; a=rsa-sha256; cv=none; b=uEft+SmyMbrHkCs0rW0/LmjmjQHtQl5UbCv4sC0oaI5W1pZTmt2ALXclb9c259jOLUAB6p eH0DwHp1Oa5FTMCY2B2Zu2e3Kf76XO77TCbiYwaYaYZW8icq6SrF6V8RSybmGoGrlCypcQ mCL5uOC3+aekGeEfxxKxL39RiXDiiJs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1745015840; 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=N03GjPg+BmwvkdI230y4vGT1CcitzFu3NJniCzF+Rsw=; b=4/WLe+b51wrC+cbXnhbht0IFDOY9nqgOmwezpahNUBXMajW2ly0xrwaplhYjaAwQaVynvu P+taT1bBt9MHE93ZQTjfBcEowuMVOdtmhbsOWeWNGRma1Rk1MvEqNIziUE8+zco5MyY7ZX 9w+zfyudZB+1PvC2h5DuK7gCIJQ5Xu4= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=fhuck6uj; dmarc=pass (policy=quarantine) header.from=redhat.com; spf=pass (imf27.hostedemail.com: domain of bhe@redhat.com designates 170.10.129.124 as permitted sender) smtp.mailfrom=bhe@redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1745015839; 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=N03GjPg+BmwvkdI230y4vGT1CcitzFu3NJniCzF+Rsw=; b=fhuck6ujA4hZYXtSUq8w8WoTVSi/IAwChvRu+VD89lmxyhqH5J3al+Y2vaioDgpwrPQGlt MJ2N8GETwSodRLw6SMf4cLKxOk1s/EnivbzMJHYg9e8qzl4JP9Do7rPQLyGEd6irExbiR7 RPzFpQkrLlj+kfaPjdKMVVB4kqmcW7Q= Received: from mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-593-SjUqEOZHO7ShtuCuGzKiXA-1; Fri, 18 Apr 2025 18:37:18 -0400 X-MC-Unique: SjUqEOZHO7ShtuCuGzKiXA-1 X-Mimecast-MFC-AGG-ID: SjUqEOZHO7ShtuCuGzKiXA_1745015831 Received: from mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.111]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 4148F180034A; Fri, 18 Apr 2025 22:37:11 +0000 (UTC) Received: from MiWiFi-R3L-srv.redhat.com (unknown [10.72.112.18]) by mx-prod-int-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTP id DF064180177F; Fri, 18 Apr 2025 22:37:05 +0000 (UTC) From: Baoquan He To: linux-mm@kvack.org Cc: akpm@linux-foundation.org, urezki@gmail.com, shivankg@amd.com, vishal.moola@gmail.com, linux-kernel@vger.kernel.org, Baoquan He Subject: [PATCH v2 2/5] mm/vmalloc.c: find the vmap of vmap_nodes in reverse order Date: Sat, 19 Apr 2025 06:36:50 +0800 Message-ID: <20250418223653.243436-3-bhe@redhat.com> In-Reply-To: <20250418223653.243436-1-bhe@redhat.com> References: <20250418223653.243436-1-bhe@redhat.com> MIME-Version: 1.0 Content-type: text/plain Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.111 X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: 2FDB340006 X-Stat-Signature: uw3potfk1zwb7488r6jjx4xd8byx4wpr X-Rspam-User: X-HE-Tag: 1745015840-589051 X-HE-Meta: U2FsdGVkX18D+MSZ60MmIUjgu65ZfyzDfeIDmyCPjs3VA99V5thwVnYrBGjbJj7ddYuk8xdk2JywtlfuzMqEA4910171zlYSgVk/gxx3qibkYAWAm30zzuSDk/GE/00J+SWF4/nlX/xJbLErDS6FMp2kAZmHdxAI4VFcAqdicHk7HmVkQGDboHM3Fy/wqZuH78S+gNll+VVPIic0fpDGgH0rUIUrvX77PucauYSo3LGxNCk3wFTIkNuIXhbRWDEP5cwNwu/GlTUdXZg4px8lihVbqokbC5TBDlP0qSNAThL0RWyik1kBsnMqxEbGilUj+mEyecmMu/uU008KTnwjo/eTI7TPapQmdxyQNWJEXJCggUBnyNMNURZVjGA/aL1nRhctCw5UYr6by0rH4xbSpVB6AKhTr3YR13SEKxBlHuwRQ1FwgLH8cHZDTmJ6B5W9KjAUfyRRkK2V04G56TXzOoZzHVCbNqPBKLIKdUzRfp6Qef0lxbMJGLj9TISAIsfrFT0duovsDqGlzLw1gi9dU3CUlek057VRiXc81CbeO8l3dm6HfYTg/2b3sojOfMekj1J4lEGLIyOaqZcANDsZTNNXxeF4WohBBCLJy7GgjdCRJSVLLmMqIpOb/XQVKgSfyWzTH6sN9+5YjSckTaQuaip04+Xxc+4DF82uuIVDajWSbaEC8/kmVMwfjPoWOQ2tM45iebPvdfyjX83rge2N8jvTQPeE5TXJ+LsNieWSIUbi+lFz9UsuX3wPvEdyQF5DM5u8SvZquFN6gdb+bD004oLX8a702hOYCqQMgXwfTIEZtJ255yt4nTYqYobhDfE3As+5L9sVnGAEhSlUw0oqrtu2c6TpllL0iUwi6Z0ZmOBRCWm6n5WCxzEEM1XENvWJJluLFsGPa4OhM+PnpQLnoT/Hxb9ZEAdbHGEb7PostPkHfT25IaNEzlrP9j/cL3cFVnWFg74vvItKza2NbRc q9Q6nTwG HB2RI9vTlL/OCOiECK9UawvZoHPOKOOO6fV+MfzqB023aqMbMA/VtN6mthYyKrz5vseAiUC/uRwgwUMGMpmMx7d/xNr0OLZNDup0jTdR9ak7NE0SgOVKOzWHYNaaYUAb2afBSs7M2hFfvFqIT5LZVDlEsGP4aOI/9jxF56ODy7LRwPJbOaCeMZtoS50on+EHRcOfzzznTLvbSu/2AeRzi8oSAvUsOU5Se9DZqI8PWEfTQUfH32+RdPr9Kw8SBJum3eGLJZvKq9+fljENwEAx3/X4tvLVp3j1zJ6GFEP5TYXpkq47F0hiO4BRS9A0j/Jw3M0+h5q2XkV/f83/4i7X7WCIL4jtTigBwBpycWJJSp5IlCRooEtF6M3YYEk7uj2B6Ci+mSkd9iXNe7Ln7Mn50DPmKTD3ryJcQFpUh6JqDS2Z5aDWFm5gS/erzPSKpayylAwZqfGQmhFGRzyFerOROV5zObPISO61/diyCO35iD0I8NMgYRqpE+Jr2bw== 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: When finding VA in vn->busy, if VA spans several zones and the passed addr is not the same as va->va_start, we should scan the vn in reverse odrdr because the starting address of VA must be smaller than the passed addr if it really resides in the VA. E.g on a system nr_vmap_nodes=100, <----va----> -|-----|-----|-----|-----|-----|-----|-----|-----|-----|- ... n-1 n n+1 n+2 ... 100 0 1 VA resides in node 'n' whereas it spans 'n', 'n+1' and 'n+2'. If passed addr is within 'n+2', we should try nodes backwards on 'n+1' and 'n', then succeed very soon. Meanwhile we still need loop around because VA could spans node from 'n' to node 100, node 0, node 1. Anyway, changing to find in reverse order can improve efficiency on many CPUs system. Signed-off-by: Baoquan He Reviewed-by: Uladzislau Rezki (Sony) Reviewed-by: Shivank Garg --- mm/vmalloc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mm/vmalloc.c b/mm/vmalloc.c index 38d8d8d60985..76ab4d3ce616 100644 --- a/mm/vmalloc.c +++ b/mm/vmalloc.c @@ -2421,7 +2421,7 @@ struct vmap_area *find_vmap_area(unsigned long addr) if (va) return va; - } while ((i = (i + 1) % nr_vmap_nodes) != j); + } while ((i = (i + nr_vmap_nodes - 1) % nr_vmap_nodes) != j); return NULL; } @@ -2447,7 +2447,7 @@ static struct vmap_area *find_unlink_vmap_area(unsigned long addr) if (va) return va; - } while ((i = (i + 1) % nr_vmap_nodes) != j); + } while ((i = (i + nr_vmap_nodes - 1) % nr_vmap_nodes) != j); return NULL; } -- 2.41.0