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 39091C761AF for ; Thu, 30 Mar 2023 23:45:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 971256B0071; Thu, 30 Mar 2023 19:45:36 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 920A36B0072; Thu, 30 Mar 2023 19:45:36 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 7E8A36B0074; Thu, 30 Mar 2023 19:45:36 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 6F5186B0071 for ; Thu, 30 Mar 2023 19:45:36 -0400 (EDT) Received: from smtpin07.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 11275160348 for ; Thu, 30 Mar 2023 23:45:35 +0000 (UTC) X-FDA: 80627199072.07.95D459E Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf08.hostedemail.com (Postfix) with ESMTP id C114F160008 for ; Thu, 30 Mar 2023 23:45:33 +0000 (UTC) Authentication-Results: imf08.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=BGPB+YgC; spf=pass (imf08.hostedemail.com: domain of bhe@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=bhe@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=1680219934; 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=so5CzF3uSpQ4q5yJ+Vtdcu9v/Ulq+Us6gCTNf3OXbkU=; b=waHWlK76xJEHN2GIXu6e5YsP4CBXA4sdF+zuQGIx3W53piVRIWGcNJZtfg9TVYqUGYzuYo J7lXb062O3wrMwdWyBBVODA6UU2q7ehHClcbgV7IAQVkHAIPIoMe6Cf6Iffjc8ux+a4WNJ qVlE5asu6U7HgjOpuw25/M6JUBEa9fQ= ARC-Authentication-Results: i=1; imf08.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=BGPB+YgC; spf=pass (imf08.hostedemail.com: domain of bhe@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=bhe@redhat.com; dmarc=pass (policy=none) header.from=redhat.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1680219934; a=rsa-sha256; cv=none; b=ILIMVJimHs3Uh/VxZVUuErr15Jv5+HvOuyzJpKITNQFWPEUbfRMzZRFZ8s06pLgbg1MstY aVenaj+6GrbCQ0V6XVnzRuXw7PvFVYWXoOauzhQ1235hWwd5RUJEUw55gpczqv5Cva4Gzk vp6ix5bH+9PQCEn+ueeRLodpc+Pk8mQ= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1680219933; 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: in-reply-to:in-reply-to:references:references; bh=so5CzF3uSpQ4q5yJ+Vtdcu9v/Ulq+Us6gCTNf3OXbkU=; b=BGPB+YgCS/xuDk8gakAKor54QLXkO4c8TnaLDugOyQAQz2FopssL4O0TEjLnFY7OFtHBtp APO5kIxV9+tL34T72FlPs6cF+IcclEjQ1tzBp8eKQgCRsR2l4bXgz+sx64rE2p6vi5YoCl 2xhbsu6SLiUS+Vhfi0p6ZBKqPzaRMVs= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-274-TsJt51_XNiSirUIcbSauZA-1; Thu, 30 Mar 2023 19:45:29 -0400 X-MC-Unique: TsJt51_XNiSirUIcbSauZA-1 Received: from smtp.corp.redhat.com (int-mx01.intmail.prod.int.rdu2.redhat.com [10.11.54.1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 4631A884EC3; Thu, 30 Mar 2023 23:45:29 +0000 (UTC) Received: from localhost (ovpn-12-64.pek2.redhat.com [10.72.12.64]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 7A9A3404DC50; Thu, 30 Mar 2023 23:45:27 +0000 (UTC) Date: Fri, 31 Mar 2023 07:45:23 +0800 From: Baoquan He To: "Uladzislau Rezki (Sony)" Cc: Andrew Morton , linux-mm@kvack.org, LKML , Lorenzo Stoakes , Christoph Hellwig , Matthew Wilcox , Dave Chinner , Oleksiy Avramchenko Subject: Re: [PATCH v4 1/2] mm: vmalloc: Remove a global vmap_blocks xarray Message-ID: References: <20230330190639.431589-1-urezki@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230330190639.431589-1-urezki@gmail.com> X-Scanned-By: MIMEDefang 3.1 on 10.11.54.1 X-Rspamd-Server: rspam05 X-Rspamd-Queue-Id: C114F160008 X-Stat-Signature: 9qjmqnaga9ntfechm5akuuidtwt9f4zs X-Rspam-User: X-HE-Tag: 1680219933-281849 X-HE-Meta: U2FsdGVkX1/x6cI14hnkvEziKbzczekrC3QI3cf1bs9p+axS6rQELcXIkEPl3xZb633Q2WSlhrophI3AMwVmMrFauFw2hAbkU8E6ad879jwS/N6UT0poqPnIZQ7zb+LMWEEsfnKiUW1DtCPVXA1NtvZnDEqqYTSnR49otZI9S+TnaTewdthIyKt0jnjXcJcWIHEVoSkx3FCW6a8Qa/1DDJ8V/Xen5O3yqGxeJDMo1RwC4LeIvn1G2/9dH/Z0zlJqMzi7GKkFHWkdlNisTAI9HYFqbrjN6B+fCNfRLPdkVpIzEobZt6kqcxhoYQO5VCoY+CZ7nopm2G75td7JCQzalste1KSWuBHqJfrVe2yq/rwgeqcUgDi+z9pYyb08r2naT2WIkW9FAVbLyTKEq0t2PGUo/COb4sFGef+7Rz7CaD/vdUQsE4a5iq8WvP4C6juOy0B4tZz5vtabPnM1dLIwkrBJEahez9ddKOyv8cKCQATz4k95Ag8Fu1c1IeJinPgENfyVFvtGdhJ2/ulOKEGk8MwwJZJRV8UMq2vtZvFsAnGbvWc9uKt7S0fEAjccg77KlaN7mfBdd1ctoaa0rJaVK1O7lM14NeJm4lYED/DEhCeEmjoizPbBwWIEfHGhBSkxIr6mamdMZiEL8Z4gXeTSim1iuwRjMpEH9GqSKSefHWsIoXRf6PzXpISUUCYkKmvHJYz3ULENqjuXk5PN6tfOD95+28NLUwhHQwLFq3E/NKVLbcgiPQ5pQ20Kqjz6uFmZ0fOl7o+p/O10KlNe931svbVOW9jbuRHBIGgYA3SlCtQ+0zDoVoeB4rNuLC2090sIoQ1gBxustxv0na/LIpM+jPX7PmRHSrMh9wIrJAIU8MWEAquqTC4UU4HDBJMeYAaFSk3f6fKKDOstZeOSqZdDjoHrStcTbwOs852eYN9u2QUQY8TRNg2eD5VqBnB5zy5jWx/6rx8W5HRRucb2v4A 8Z7p+6wq WwFX/4kkGqZlhe7vDFT6LUN0hW4vCi1i3cc4l1iExDYJdcg9w+ToI05MgS7jZtRcTUj0Hyn2p0SbpQN3FWFJ4pWwqCEBJn98bs0MhN01hLACpU4rK3UnF+fZKekYFd7XPRYK7f7Hvv62HEo6INKc9UzyopNVZnw2zCBa2PYE2QZ6xX6ZbwLYesMMiYSkdsRouwFAOVt0IKQ+3IOwFZIBjSXG5KIxlM94PmaBwai/nDFLuns7Mn+UOd5ujEn++xBQZWe9ucnFK+9zfGHe5z2ZzNm/f3K96G8UBH+z1 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 03/30/23 at 09:06pm, Uladzislau Rezki (Sony) wrote: ...... > -static DEFINE_XARRAY(vmap_blocks); > +static struct xarray * > +addr_to_vb_xarray(unsigned long addr) I would call it addr_to_vb_xa() if other parts have taken abbreviation. Other than this nit, this looks great to me. Reviewed-by: Baoquan He > +{ > + int index = (addr / VMAP_BLOCK_SIZE) % num_possible_cpus(); > + > + return &per_cpu(vmap_block_queue, index).vmap_blocks; > +} > > /* > * We should probably have a fallback mechanism to allocate virtual memory > @@ -1970,6 +2014,7 @@ static void *new_vmap_block(unsigned int order, gfp_t gfp_mask) > struct vmap_block_queue *vbq; > struct vmap_block *vb; > struct vmap_area *va; > + struct xarray *xa; > unsigned long vb_idx; > int node, err; > void *vaddr; > @@ -2003,8 +2048,9 @@ static void *new_vmap_block(unsigned int order, gfp_t gfp_mask) > bitmap_set(vb->used_map, 0, (1UL << order)); > INIT_LIST_HEAD(&vb->free_list); > > + xa = addr_to_vb_xarray(va->va_start); > vb_idx = addr_to_vb_idx(va->va_start); > - err = xa_insert(&vmap_blocks, vb_idx, vb, gfp_mask); > + err = xa_insert(xa, vb_idx, vb, gfp_mask); > if (err) { > kfree(vb); > free_vmap_area(va); > @@ -2022,8 +2068,10 @@ static void *new_vmap_block(unsigned int order, gfp_t gfp_mask) > static void free_vmap_block(struct vmap_block *vb) > { > struct vmap_block *tmp; > + struct xarray *xa; > > - tmp = xa_erase(&vmap_blocks, addr_to_vb_idx(vb->va->va_start)); > + xa = addr_to_vb_xarray(vb->va->va_start); > + tmp = xa_erase(xa, addr_to_vb_idx(vb->va->va_start)); > BUG_ON(tmp != vb); > > spin_lock(&vmap_area_lock); > @@ -2135,6 +2183,7 @@ static void vb_free(unsigned long addr, unsigned long size) > unsigned long offset; > unsigned int order; > struct vmap_block *vb; > + struct xarray *xa; > > BUG_ON(offset_in_page(size)); > BUG_ON(size > PAGE_SIZE*VMAP_MAX_ALLOC); > @@ -2143,7 +2192,10 @@ static void vb_free(unsigned long addr, unsigned long size) > > order = get_order(size); > offset = (addr & (VMAP_BLOCK_SIZE - 1)) >> PAGE_SHIFT; > - vb = xa_load(&vmap_blocks, addr_to_vb_idx(addr)); > + > + xa = addr_to_vb_xarray(addr); > + vb = xa_load(xa, addr_to_vb_idx(addr)); > + > spin_lock(&vb->lock); > bitmap_clear(vb->used_map, offset, (1UL << order)); > spin_unlock(&vb->lock); > @@ -3486,6 +3538,7 @@ static void vmap_ram_vread(char *buf, char *addr, int count, unsigned long flags > { > char *start; > struct vmap_block *vb; > + struct xarray *xa; > unsigned long offset; > unsigned int rs, re, n; > > @@ -3503,7 +3556,8 @@ static void vmap_ram_vread(char *buf, char *addr, int count, unsigned long flags > * Area is split into regions and tracked with vmap_block, read out > * each region and zero fill the hole between regions. > */ > - vb = xa_load(&vmap_blocks, addr_to_vb_idx((unsigned long)addr)); > + xa = addr_to_vb_xarray((unsigned long) addr); > + vb = xa_load(xa, addr_to_vb_idx((unsigned long)addr)); > if (!vb) > goto finished; > > @@ -4272,6 +4326,7 @@ void __init vmalloc_init(void) > p = &per_cpu(vfree_deferred, i); > init_llist_head(&p->list); > INIT_WORK(&p->wq, delayed_vfree_work); > + xa_init(&vbq->vmap_blocks); > } > > /* Import existing vmlist entries. */ > -- > 2.30.2 >