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 20C1AE64007 for ; Thu, 21 Nov 2024 19:07:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 8E7746B0098; Thu, 21 Nov 2024 14:07:53 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 896CF6B0099; Thu, 21 Nov 2024 14:07:53 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 75ECB6B009A; Thu, 21 Nov 2024 14:07:53 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 58BA46B0098 for ; Thu, 21 Nov 2024 14:07:53 -0500 (EST) Received: from smtpin18.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id F0ED31214F9 for ; Thu, 21 Nov 2024 19:07:52 +0000 (UTC) X-FDA: 82811035692.18.C1DC5BE Received: from mail-ed1-f50.google.com (mail-ed1-f50.google.com [209.85.208.50]) by imf26.hostedemail.com (Postfix) with ESMTP id BECFF140005 for ; Thu, 21 Nov 2024 19:07:10 +0000 (UTC) Authentication-Results: imf26.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=jr5wKs2u; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf26.hostedemail.com: domain of bjohannesmeyer@gmail.com designates 209.85.208.50 as permitted sender) smtp.mailfrom=bjohannesmeyer@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1732216003; a=rsa-sha256; cv=none; b=QrlN652g5x+joucNtza1jnNIkgm6CoUJmoLUaaVrhXCSyb3LNuHmrqvCvkydTaokKaY8gd kUyOQOToJQd5/iFAq3ZbZ7gAYUyBk6Hgq0g7lTINHCxnxG5sXOHRKwF6RaZlMlbmnIqHOS hEUWvzcU9T/t+vfWIOO1Up/x3YP/A1I= ARC-Authentication-Results: i=1; imf26.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=jr5wKs2u; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf26.hostedemail.com: domain of bjohannesmeyer@gmail.com designates 209.85.208.50 as permitted sender) smtp.mailfrom=bjohannesmeyer@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1732216003; 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=4OFLbG/GNSVDQ8hLVIP7nasORNGr4F2pT8NcKMANcTg=; b=uSMLhKTJo5CdtGc943B5rkRS6/pzNSysS2EBn5DdLmOK4Z7kONMxPcKuaQWo91DMBo5iGU PUVcKeRiK8QKrWH8gLT9e8lb1fd3UK8RWIs3LOgd9ny4Bpas81s5CqilwyalxOPKWLnYCN Dp2acxKgXc51OjnIVuc4MU/ioxaXK+s= Received: by mail-ed1-f50.google.com with SMTP id 4fb4d7f45d1cf-5cffb4ff85eso1783636a12.2 for ; Thu, 21 Nov 2024 11:07:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1732216069; x=1732820869; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=4OFLbG/GNSVDQ8hLVIP7nasORNGr4F2pT8NcKMANcTg=; b=jr5wKs2uoPGsc5vLfumtbUvfTQq/F496zWXfU4hgRQq8R2gZApdCdKA9Gq/JuAV3C3 Sz8fI7He241p+fKKzhofMpDTMdDBSHqohLLnYHsS2mb6P4tAODTw8mxLxZQ+AcA67gI5 6sLQZAhWS3IHns3DHgMdpMCkoST8K3KoUeO+AkAqrLAvHcd3SOLGcq5yeRCS88uQrUsl ygC3bIv7eIMpp7LyAM1kcmC3p/Q4a//jyBJRQajLBweu6MfHZsZtkVWwrFlmoRX30TEI Zz2AMQYESOK/316yX2MypjpmgtRsHoGsIPayEC7H3XP9sPrwShw/8+gFPP7sr17Re3uT u7Pg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732216069; x=1732820869; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4OFLbG/GNSVDQ8hLVIP7nasORNGr4F2pT8NcKMANcTg=; b=cSRpBw6wwH1qMXWF39fwp2ewanyOU0CDuFDgy7qrjO7jWoMGau3eXjNZMttdwHYoHo V6Lek6tPB0fRS4CKf3KDWY+Ocs9uaPWsdfJcpcBGe9Kl1x82FkriFE/V15cXbDvVQfCN ICqTMlqo1+wUiC0UJB59JIP5UE/1W8wHE+BO0ugmqmClzfPZAiVFVP3Dmgx5x0a5q78s XIOqCUcCtixWaov1G/CuIlqnW2J0AEGAw0HXc6k6XnW3r8vfiH/pVSFe2phmJERrQNle 6kvaZumzjTXzZDgj5Q0VLvRJmc3wxnYNEAyY9Z1QAr3vgHhSSbRN1lhip6qiUixliW5S 2WJQ== X-Forwarded-Encrypted: i=1; AJvYcCXpnIcDLZVAMW+N9stH9d2v8JuVFbO0FJ33mrb0+WtWY3B5YV8waQiDng3cV5vQ38oNOBbXhgZjLw==@kvack.org X-Gm-Message-State: AOJu0Yy02dmpwhu18AQs7iNZu45kYiZwU7fSoIBoq1+xaQmCaPa+6F4N zNrfZB/SlNLJi+7N8OiqHDsWGH+oFIgAfn1vG95dJ12lq/RLVHEHj2fJUrE/QCFMtEOKUZKk9Ly zBydYu+N/g/X9myePe6g/0MJA4QQ= X-Gm-Gg: ASbGncuaEFTntBYBUNuZzO3b+b+TvfiSORJDTUCL87eN7+LysEmai4RpxmTj8X/xCx6 rm8Sv/NCYQQOKItGlelm0TlhPCb6gxcox X-Google-Smtp-Source: AGHT+IHwL2oKd5Z4PJMHiT2EHcC1N94XnI9wGB1yGPBHyd5+/F2SPV0zcqrDbXyJqDQd8mxE0gciUKgsM4683iaTXq4= X-Received: by 2002:a17:906:9ca:b0:aa1:dd58:aebc with SMTP id a640c23a62f3a-aa509bbfc31mr17333666b.39.1732216069286; Thu, 21 Nov 2024 11:07:49 -0800 (PST) MIME-Version: 1.0 References: <20241119205529.3871048-1-bjohannesmeyer@gmail.com> In-Reply-To: From: Brian Johannesmeyer Date: Thu, 21 Nov 2024 12:07:36 -0700 Message-ID: Subject: Re: [RFC v2 0/2] dmapool: Mitigate device-controllable mem. corruption To: Keith Busch Cc: Christoph Hellwig , Andrew Morton , linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-hardening@vger.kernel.org, Raphael Isemann , Cristiano Giuffrida , Herbert Bos , Greg KH Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Queue-Id: BECFF140005 X-Rspamd-Server: rspam01 X-Stat-Signature: prgjp7kxjgay6p3fikk8991b5bc9jh74 X-HE-Tag: 1732216030-943196 X-HE-Meta: U2FsdGVkX1+mDK32/c/DBHHt44cSnNP+Upaa7/P4Z0nAuGaLa5Gmm01oBglx9rzYk4uvndzTGtMYR8X7USjimOF/2jSn4+Ye172Majx35E6n0NC5n9NU4fFozTwG6bzlcti9hsAEvGTCGheujCRXon9Kt8G6YMTyd44HkSaiD3glfu3JQmpI/XndOY4ifEeIPbfGTY2D09NS8+YKivEiutF+dVLE8NXxm2EbYl5KxkJS2OvZN670Ce9+cmz6gXAZnaAHfURq3YDvZ3jVMLqEFX9jyTpnp/t2yN3CO13a9kdXbq4xPf0wiMx/6yPLrYCp+e+dJwzXRBWHNW/iOVJgEeg4F4U5kolNgkgI9fanxivgUS9fsPQkMJybmQ09TrNfCFxilxjhyDtKL7i/84eglUSKD7wtnRQ2iCs8RCzTJ4BgP3YGTKB/2d0yjV3GAiM/1mlSARS6w93HQOFrzzvLDDx3iRZ0MeS5N7Wux3xCM8ak/KUbCiQzqVwr7jSAMwjsp4zPq3alCSPBmMK2J0owGKOTX82rfO7Jk9dLhr8SmLXvwncJrmxLxPfr0KytMoowDANx4pliu7IfsBpa0Qbg6le+VfVmzkv0zajGtZubW1znsBDswtqeTfJ+GePuK29fhwgM2a2rGc/Kij8UJT6soLPqg9zu/k66XwBXBoBk2zlkx0rztvfGSyfKJDkD+D+VjysWLCRpooB4E56nqOU2abfqBayuFYwUdt5hLC+MJQyk+L4qlEYDKSxp8NYZdSm9s2JMUj2olGU1oY+UKfoJPETWSwChgOxJ4Hrhxd5Nt7Iq/bhqk9CaNh64u66uxLbshnqAGSyrETtIERPZ/vpCQ5cYJmRQ4/tmsJ9bi/G9wMsILWRdHdo9SFXOPYy2uTK2XP8XIWtVa/ENT44G+3sKE0XUKqY4q+50Ht99XA45eeIImDxCPm213sFM66fvtvnFAtpTbMsGLTKkoJ7w9yD 3Z6jQwpD Hh2HMgFM8kSgcJU97pDUXo8FlMGafGW6K+jCHvrl4Pzu/xUXPUIt/X9w0JibsTUI9mG1SPKXmlnrXU5ly9z1jmmVAkVItAfLAh6016fdnT/1ojUojGXZn3+mRMxO0WkBhet+03Lg2yO2qDWLlmZ8R5UcepZ9lieEMAeisfVlzVGXkhReOsiFIOCMTpVZRWswhBBsHmbBTJD41Az3uasssg2J20uQZC4pLib+fZd5qNFy+9AHroB4WZJH3dEhaSISBJcrK+6iFRTFAqKsaMjVJb0nzsB/zuluyJZJcELf5wFz/JbKXHGzgIjV1ZcBE4XK+yKbOan7Uui0R2kau2pyjGTEelg== X-Bogosity: Ham, tests=bogofilter, spamicity=0.025471, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Thu, Nov 21, 2024 at 11:06=E2=80=AFAM Keith Busch wr= ote: > If you have the time, could you compare with using xarray instead? Sure. Good idea. **With the submitted patches applied AND using an xarray for vaddr-to-block translations:** ``` dmapool test: size:16 align:16 blocks:8192 time:37954 dmapool test: size:64 align:64 blocks:8192 time:40036 dmapool test: size:256 align:256 blocks:8192 time:41942 dmapool test: size:1024 align:1024 blocks:2048 time:10964 dmapool test: size:4096 align:4096 blocks:1024 time:6101 dmapool test: size:68 align:32 blocks:8192 time:41307 ``` The xarray approach shows a slight improvement in performance compared to the maple tree approach. FWIW, I implemented the two with slightly different semantics: - In the maple tree implementation, I saved the `block`'s entire `vaddr` range, allowing any `vaddr` within the `block` to be passed to `dma_pool_free()`. - In the xarray implementation, I saved only the `block's` base `vaddr`, requiring `dma_pool_free()` to be called with the exact `vaddr` returned by `dma_pool_alloc()`. This aligns with the DMA pool API documentation, which specifies that the `vaddr` returned by `dma_pool_alloc()` should be passed to `dma_pool_free()`. Let me know if you'd like further adjustments. Thanks, Brian Johannesmeyer