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 67A6BC54798 for ; Tue, 5 Mar 2024 10:23:22 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B2A1C6B00D1; Tue, 5 Mar 2024 05:23:21 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id AB2376B00D2; Tue, 5 Mar 2024 05:23:21 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 903686B00D3; Tue, 5 Mar 2024 05:23:21 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 7786B6B00D1 for ; Tue, 5 Mar 2024 05:23:21 -0500 (EST) Received: from smtpin17.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 3A4C61C0E77 for ; Tue, 5 Mar 2024 10:23:21 +0000 (UTC) X-FDA: 81862598202.17.06C666B Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by imf04.hostedemail.com (Postfix) with ESMTP id AA0DD40009 for ; Tue, 5 Mar 2024 10:23:19 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=aYKYGXWn; spf=pass (imf04.hostedemail.com: domain of leon@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=leon@kernel.org; dmarc=pass (policy=none) header.from=kernel.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1709634199; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=CTugSmgLwJgDA9ipI5mnVckl7fOXK4aUNX016/UL5M0=; b=vKH/jtkwuKLultAmB+1aVUfqIjTenakZs4K+Uivyj2nCti1QCzPlCnTcsUq4LS2+M3uoB6 Yr+HvGEpagE8DjAa78lbSi6xuHd4p2gGv5anchOKAUacXWdq/CcLGxNUGAU97mcvvYYqeZ 5Kgk61zskfrcrxPDneXAT/InPJSYm3M= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1709634199; a=rsa-sha256; cv=none; b=iGb6y1qs6Djo8pkb5/4+zVlpLnjP3iMPjzoanHBDuaZd0ALGw0dxOoj/IjgFTaKDGhHN6q xiVZQogcEbnibibRQrJLm0WN8F19KBaNfiHYnLqigcWPKjYnKpy0H8hOPnyGuDfoduu+rY +Iw2BgLnaQXsG1GvoarD3QmHLph6t6k= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=kernel.org header.s=k20201202 header.b=aYKYGXWn; spf=pass (imf04.hostedemail.com: domain of leon@kernel.org designates 139.178.84.217 as permitted sender) smtp.mailfrom=leon@kernel.org; dmarc=pass (policy=none) header.from=kernel.org Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by dfw.source.kernel.org (Postfix) with ESMTP id E75D2614D1; Tue, 5 Mar 2024 10:23:18 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DEE7CC433C7; Tue, 5 Mar 2024 10:23:17 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1709634198; bh=WBfM8ZvY1JfgPv87VMT5XwFqFK1pOKYXqtZNVa4/Kmg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=aYKYGXWnIXA5YF13RHhycYrXp349VOhkh6hHz38egCBlNQBYUMc9jC9/LkoCVC8hp PWkSAkCjha8oqzedg/56Xb71wcwnwj98750I0IBvwSe0anKQ3pqY5nST45OfMEas3f y9H2ibe3MuxaZ9f7gAxnwd6Zpt81O9csC32FSAvd+pjGiJ7w607nymwIAs8SL8AAla IDohF8dNr6SFfnT7r8V517eGKLFQ3Tv1GcwD0u6j7rkI1F7DiUUJCK6G0vEyKi48Pz ibWqAPhwDN33hzZkamTUbwtP31m0LjLVl9AITxnxmMqPgGg5DW3MPm+8dev9xkA9G9 CDszlhHpjpm2Q== From: Leon Romanovsky To: Christoph Hellwig , Robin Murphy , Marek Szyprowski , Joerg Roedel , Will Deacon , Jason Gunthorpe , Chaitanya Kulkarni Cc: Leon Romanovsky , Jonathan Corbet , Jens Axboe , Keith Busch , Sagi Grimberg , Yishai Hadas , Shameer Kolothum , Kevin Tian , Alex Williamson , =?UTF-8?q?J=C3=A9r=C3=B4me=20Glisse?= , Andrew Morton , linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-block@vger.kernel.org, linux-rdma@vger.kernel.org, iommu@lists.linux.dev, linux-nvme@lists.infradead.org, kvm@vger.kernel.org, linux-mm@kvack.org, Bart Van Assche , Damien Le Moal , Amir Goldstein , "josef@toxicpanda.com" , "Martin K. Petersen" , "daniel@iogearbox.net" , Dan Williams , "jack@suse.com" , Zhu Yanjun Subject: [RFC 13/16] vfio/mlx5: Explicitly store page list Date: Tue, 5 Mar 2024 12:22:14 +0200 Message-ID: <1d0ca7408af6e5f0bb09baffd021bc72287e5ed8.1709631413.git.leon@kernel.org> X-Mailer: git-send-email 2.44.0 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Stat-Signature: hamtkg88mcnak6tctk95tfkdtaf74wrt X-Rspamd-Server: rspam10 X-Rspamd-Queue-Id: AA0DD40009 X-Rspam-User: X-HE-Tag: 1709634199-133888 X-HE-Meta: U2FsdGVkX1/EE0vB/ZfnC5Kv4BxVAU68KtyzTUkGfRMQM9d9TkLlMY6KP3MCHYpU0w6C0SoIMt99xRXNxQiX4obh5y+s+BiGpRjuydOv97IHy3cEFHQLqr271DN6g2Om9UP+MfKBrpxskXW+iDwJx0wnkCtQUG+SNHmZx6VhNAq3dmYGT1Jv3w1ifFtEMHhN6KU9+cfHzwYtK8yqXEEw8wH6cyQeRmLKNS3v48/WXXFFR+sow/IJ/EHBViYcRLbL4y0h6raFLVwEdMaKnn7QdCmwHwqR9BSkthspSt5sFKf9L9cTAldn3S428Dbm47gD2oyoXUzHfWNKCPnY47ERRWQlrKvoox3X9Q9XX6qBgJ1u2tBlZmpuncV3NI30ct4iEbEgBkQ2a+mD4zgzWROuQ67BXELiv6N1v16Yx1tTT5D2wCtRayYX3wHFIT4BqtZK6l1bt5w1xdDWyKudVsG5pH8LXuPAJGiSPBshnobN22g14yx7sU8kav7UVrNYEzRNALUQxzXFisDPKyK20yTYdXdb7iwYGjX/lrkFJjZy9jYoLUY1iELsIR7P+0DWqFDEUZUu83S04oamZoLVL11pag6ic+H8PBQta5W88EI6hytf5ZcEO53JjeP9Zq/s3SW/Wp6Q7tuYrcd+o01nc3FgGCRTcEzjyw9Cmg7JG4+gRO6tShwYDjkXIzZQuwnByn0kIVf83RziW8/JO3f6bo3UXAwm7OR8dH5hUl5qCUx62PuIZgvEPGJnugkdlFokAqLPXy3usDNBiykk/j8NU0e1Qk+kt/5FVltKYKLiT0b6zPqhK6eEM/Z8CS/rbreWIT7lJ6fDJHE2wueTK6OU5e1p7JMoHRaMX++vFdqpxUS+WjyX4G6pjyd2K7qpWKWmKeTpodDHQb284dUkdu8g+nM7lpZKXSwI8BHyB2fN3izas+88HBQj0CRVs4dkB/+EYDyg7RPI52h5xJK0a/aiHPN yZdqu9JR bFW6q 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: Message-ID: <20240305102214.Y1PHApRRxcBahHHinOxNlWfOe5XTeYxmVG-zCnSJJnM@z> From: Leon Romanovsky As a preparation to removal scatter-gather table and unifying receive and send list, explicitly store page list. Signed-off-by: Leon Romanovsky --- drivers/vfio/pci/mlx5/cmd.c | 1 + drivers/vfio/pci/mlx5/cmd.h | 1 + drivers/vfio/pci/mlx5/main.c | 35 +++++++++++++++++------------------ 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/drivers/vfio/pci/mlx5/cmd.c b/drivers/vfio/pci/mlx5/cmd.c index 44762980fcb9..5e2103042d9b 100644 --- a/drivers/vfio/pci/mlx5/cmd.c +++ b/drivers/vfio/pci/mlx5/cmd.c @@ -411,6 +411,7 @@ void mlx5vf_free_data_buffer(struct mlx5_vhca_data_buffer *buf) for_each_sgtable_page(&buf->table.sgt, &sg_iter, 0) __free_page(sg_page_iter_page(&sg_iter)); sg_free_append_table(&buf->table); + kvfree(buf->page_list); kfree(buf); } diff --git a/drivers/vfio/pci/mlx5/cmd.h b/drivers/vfio/pci/mlx5/cmd.h index 83728c0669e7..815fcb54494d 100644 --- a/drivers/vfio/pci/mlx5/cmd.h +++ b/drivers/vfio/pci/mlx5/cmd.h @@ -57,6 +57,7 @@ struct mlx5_vf_migration_header { }; struct mlx5_vhca_data_buffer { + struct page **page_list; struct sg_append_table table; loff_t start_pos; u64 length; diff --git a/drivers/vfio/pci/mlx5/main.c b/drivers/vfio/pci/mlx5/main.c index b11b1c27d284..7ffe24693a55 100644 --- a/drivers/vfio/pci/mlx5/main.c +++ b/drivers/vfio/pci/mlx5/main.c @@ -69,44 +69,43 @@ int mlx5vf_add_migration_pages(struct mlx5_vhca_data_buffer *buf, unsigned int npages) { unsigned int to_alloc = npages; + size_t old_size, new_size; struct page **page_list; unsigned long filled; unsigned int to_fill; int ret; - to_fill = min_t(unsigned int, npages, PAGE_SIZE / sizeof(*page_list)); - page_list = kvzalloc(to_fill * sizeof(*page_list), GFP_KERNEL_ACCOUNT); + to_fill = min_t(unsigned int, npages, + PAGE_SIZE / sizeof(*buf->page_list)); + old_size = buf->npages * sizeof(*buf->page_list); + new_size = old_size + to_fill * sizeof(*buf->page_list); + page_list = kvrealloc(buf->page_list, old_size, new_size, + GFP_KERNEL_ACCOUNT | __GFP_ZERO); if (!page_list) return -ENOMEM; + buf->page_list = page_list; + do { filled = alloc_pages_bulk_array(GFP_KERNEL_ACCOUNT, to_fill, - page_list); - if (!filled) { - ret = -ENOMEM; - goto err; - } + buf->page_list + buf->npages); + if (!filled) + return -ENOMEM; + to_alloc -= filled; ret = sg_alloc_append_table_from_pages( - &buf->table, page_list, filled, 0, + &buf->table, buf->page_list + buf->npages, filled, 0, filled << PAGE_SHIFT, UINT_MAX, SG_MAX_SINGLE_ALLOC, GFP_KERNEL_ACCOUNT); - if (ret) - goto err; + return ret; + buf->npages += filled; - /* clean input for another bulk allocation */ - memset(page_list, 0, filled * sizeof(*page_list)); to_fill = min_t(unsigned int, to_alloc, - PAGE_SIZE / sizeof(*page_list)); + PAGE_SIZE / sizeof(*buf->page_list)); } while (to_alloc > 0); - kvfree(page_list); return 0; - -err: - kvfree(page_list); - return ret; } static void mlx5vf_disable_fd(struct mlx5_vf_migration_file *migf) -- 2.44.0