From nobody Sat Feb 7 17:55:47 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 97478313E32 for ; Mon, 5 Jan 2026 08:23:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767601383; cv=none; b=ibRY9e8QuPL9Sz/ZPnlmSi9hhky7eG5T70quRbpt0G8pwnV5zvDOfT5NQJ3kUtd689VcG+dT6U3nDn4R0A8r9mLX9I4VWMI/m8fdgCi9PrDtmxITTQUxOWcAwRAY022CBtsYESL4borYaltZV1CCjD3S/5osemKwobjPOF0z9ek= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767601383; c=relaxed/simple; bh=OKICx5FGcs8IaWdKqJAnv5nr30MUEvkMmLH/rtLJg90=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=g9Ihj8rqop/xS9/weDBSsIvOYVsZNfSplm3++NaHPP8nKske+MX4Jc6sYtchk7ZX3WJCb3vDE7RNoKuLLzEag7jW4KV2eh/Ox14jmk9VPG7NLDRvZtwx7ATjCtPgSGjsyNPASxoQBVw9gZKsGOqVGZlqz2nKDhjcZo84sHk6bBY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=WqVz3irm; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=QPkFrgpu; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="WqVz3irm"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="QPkFrgpu" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767601380; 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=flvV58rpfI6B2CbimOq4yKlcklsexX+NampJykNGX78=; b=WqVz3irmgl/1ZpP+3Mg4itom3mhS8h0Rbrdtt95M6DwQFX+h30kcTMJGJZHFGGTXx46C9n k7QD5ZNc1cE4PvrTUNGjMkSJ8cUXCc4UItybwSIPOawmPH1Lus9RXtQaNSe6Q6nmbZntyM 9kSdOgbhWt0yWZ60HwGundSiE5kWm3A= Received: from mail-wm1-f71.google.com (mail-wm1-f71.google.com [209.85.128.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-111-VvN_wUG-N0qMHZ7TYJGPzw-1; Mon, 05 Jan 2026 03:22:59 -0500 X-MC-Unique: VvN_wUG-N0qMHZ7TYJGPzw-1 X-Mimecast-MFC-AGG-ID: VvN_wUG-N0qMHZ7TYJGPzw_1767601379 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-47d28e7960fso89204805e9.0 for ; Mon, 05 Jan 2026 00:22:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1767601378; x=1768206178; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=flvV58rpfI6B2CbimOq4yKlcklsexX+NampJykNGX78=; b=QPkFrgpuiBMMFofOQ4jAdxxN6c2Vp4oV1Gg7feN7Brwk3IoZE8tlZBtMewNHdCTmcX J89iiXHO8XulT7mvkAYigvNB21HwVkC4UaJh+6qLFH044MYI/AJhC1rir05k3E4D5zAC l2oMwTUjnPVcCbl4v5p9sk+ENJbiTovejKy4d238LehbX5oug0hjfbk+5CP0WUf7R0W5 oAt5vX0zoXLVkMJ/lerxu000WlCDJKWa5kUX14ARIXqnfSsN5oTfZjrjrbgv3FTzfJ+d ohL+mLUyGVtzNS0/P3hyS1HSdrurjG/swvLj6tE2/lIvMl2g9uBukt4A5C+bA3B/QfIq nkBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767601378; x=1768206178; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=flvV58rpfI6B2CbimOq4yKlcklsexX+NampJykNGX78=; b=lwsAi36aeYV0g2yL2fIpMxPMcPfxhCCAXZbK3iMfvl3GW6tsGj2WJJ9JmUJpkodQSd 04BBmbx8L37yX3H0kp+hjUZ6yyhoHPjDxlLBqV/eQkMfktIzKX7z1CSpyxSX5Up/2zkn yZbLDSkUpfXAGmtQtOKdZhArwDH9OKxz63a2OlvvmX6sm6FXFzbxgDBPuyh8ybaub8ij BwPEhTzWCr2SR7Sotk9r376Dks0YA9pVUrAbrxp8rM0XH2r1TiS7eMFZCQiypBhvXTYq L+V23bPKMKFLiG2SbPRLBd98gUGK7Zg2HmkpsSOGp3DUXjgFGKKlmxgFblSl8JKbUld8 lyyw== X-Gm-Message-State: AOJu0Yy4VsKlB6FliwTfOm1fUGdLf/qKnBQOOkLTBQ12flAIM/P3HdOV YdCydXmIFvmfcmM6AEOpHAdYDgPQ30cr5uOe81NLe5MDdj4SafulfGGdOMWHN5fFHaZduihY2IU HdASEFSYqFUfb/ZI8L5DINrMltMn/PCm75RSOmMbeGJ4GMScDlZ3PFuyf6yoBNluvVFc7Ob6Ks/ iFVH7F5nHI8CCXFnSx/UXGjlUi6Ul1FyXxfQfLQyP69r4= X-Gm-Gg: AY/fxX6NHHYOWvEMMuwd9UJsfZ//Y/v/+tSfQQBzlkNLX+GiQ8mTbBhJ4HM2gjSYiry YddfBm+MSuK0/jw/NNYsWNEQB9SQrrhBCfe1EEhWUxxRrXpqAAn0Glfw7ZecCF1Ut1Bgoqnl/e5 L0QngtyLIewquF8s3tJhkrDnGQi90nPAUi8wrMJg+nRpF3KQ26LjL1M2cBJMp2LXABtciGMkOGt uUQpTEjdOnFtTaw49m0afn//lQvCr+uarUZWGIwjqRbL0EGXbMWp7QzIqAq/zRrT1qCYLvUseJA DO3+cMXeJEF6YTCo/VydO6WkMQjddeUS4LWLiOD/5GM9g9szqFBKu6GUL/ab4veVgGLbOAVJQXb H+Tsyt5ch1guSZ/1pey1T0bIn9aO1+s2J2w== X-Received: by 2002:a05:600c:a31a:b0:477:b48d:ba7a with SMTP id 5b1f17b1804b1-47d1afcd9e2mr472221945e9.32.1767601378325; Mon, 05 Jan 2026 00:22:58 -0800 (PST) X-Google-Smtp-Source: AGHT+IEuXSIOihQGqTUh73UD1lwUxn/oQlvSzbaEszKjq8q7pmaQg9MTKbAK1XIofFksKZVCqoImYw== X-Received: by 2002:a05:600c:a31a:b0:477:b48d:ba7a with SMTP id 5b1f17b1804b1-47d1afcd9e2mr472221315e9.32.1767601377489; Mon, 05 Jan 2026 00:22:57 -0800 (PST) Received: from redhat.com (IGLD-80-230-31-118.inter.net.il. [80.230.31.118]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d6d13ed0asm147684535e9.3.2026.01.05.00.22.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 00:22:57 -0800 (PST) Date: Mon, 5 Jan 2026 03:22:54 -0500 From: "Michael S. Tsirkin" To: linux-kernel@vger.kernel.org Cc: Cong Wang , Jonathan Corbet , Olivia Mackall , Herbert Xu , Jason Wang , Paolo Bonzini , Stefan Hajnoczi , Eugenio =?utf-8?B?UMOpcmV6?= , "James E.J. Bottomley" , "Martin K. Petersen" , Gerd Hoffmann , Xuan Zhuo , Marek Szyprowski , Robin Murphy , Stefano Garzarella , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Petr Tesarik , Leon Romanovsky , Jason Gunthorpe , Bartosz Golaszewski , linux-doc@vger.kernel.org, linux-crypto@vger.kernel.org, virtualization@lists.linux.dev, linux-scsi@vger.kernel.org, iommu@lists.linux.dev, kvm@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH v2 01/15] dma-mapping: add __dma_from_device_group_begin()/end() Message-ID: <19163086d5e4704c316f18f6da06bc1c72968904.1767601130.git.mst@redhat.com> References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When a structure contains a buffer that DMA writes to alongside fields that the CPU writes to, cache line sharing between the DMA buffer and CPU-written fields can cause data corruption on non-cache-coherent platforms. Add __dma_from_device_group_begin()/end() annotations to ensure proper alignment to prevent this: struct my_device { spinlock_t lock1; __dma_from_device_group_begin(); char dma_buffer1[16]; char dma_buffer2[16]; __dma_from_device_group_end(); spinlock_t lock2; }; Signed-off-by: Michael S. Tsirkin Acked-by: Marek Szyprowski Reviewed-by: Petr Tesarik --- include/linux/dma-mapping.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h index aa36a0d1d9df..29ad2ce700f0 100644 --- a/include/linux/dma-mapping.h +++ b/include/linux/dma-mapping.h @@ -7,6 +7,7 @@ #include #include #include +#include =20 /** * List of possible attributes associated with a DMA mapping. The semantics @@ -703,6 +704,18 @@ static inline int dma_get_cache_alignment(void) } #endif =20 +#ifdef ARCH_HAS_DMA_MINALIGN +#define ____dma_from_device_aligned __aligned(ARCH_DMA_MINALIGN) +#else +#define ____dma_from_device_aligned +#endif +/* Mark start of DMA buffer */ +#define __dma_from_device_group_begin(GROUP) \ + __cacheline_group_begin(GROUP) ____dma_from_device_aligned +/* Mark end of DMA buffer */ +#define __dma_from_device_group_end(GROUP) \ + __cacheline_group_end(GROUP) ____dma_from_device_aligned + static inline void *dmam_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t gfp) { --=20 MST From nobody Sat Feb 7 17:55:47 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 88B0429E116 for ; Mon, 5 Jan 2026 08:23:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767601388; cv=none; b=ukT3xvl1q1wREXbUxjOrGe0Xz/4a7qbAJHRAE9dOc9mUYHzSS4l6VF4x26D0/Xl6w5WeMIAc+0Pwe0AnKS9KnxX6Tx296hrjx2Hi8/8tH09EFOgSCwm5SjUn9gMqhsaqw1VP3QEqEsMoecDen/yEAGhaujMjktoJHHLxi4mrs4s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767601388; c=relaxed/simple; bh=prNYGYHAMpr2WjcHI5N+V/0OjaLMaL48hqD0tOu0jIE=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=ZQO8waxvG8kNCloxbk9BJRs8e9ZsSBcdf3tCs1WNAEZKIBZRxUdrWuR8gfQtdupzBUQLcKkkV931qzOK0jdvT5axIjIO/veZdffGypiF26nB5dutgr+8o4ZNXAZLmbd5DcV+irLSmPqhrLOkrn/lT4kD50aNduI3vdyoLSQl5Lw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=LS3uTdc+; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=LlTKn6Vt; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="LS3uTdc+"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="LlTKn6Vt" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767601384; 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=vW7mLQEFNX/sa5+JF2UQBkqoBaqIc5/VpH7fDXfLlqs=; b=LS3uTdc+FsttqHOfOw/HO7GM9NxeIOzRBH2kw/DWe+ws+Rr11TKPF6fDzwZu9w9Hq9EHdJ vCfDbLVf2yHeZChraF7wHGi1fWqRTVGd5TwviBVIkc0jqMhe0VSYhy4thw9Amx8yDypRMH tP8s3tojCidvhpDNofTpDPxBCNxuAF0= Received: from mail-wr1-f71.google.com (mail-wr1-f71.google.com [209.85.221.71]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-363-XSGw0230PvGpGS9bzB-lXw-1; Mon, 05 Jan 2026 03:23:03 -0500 X-MC-Unique: XSGw0230PvGpGS9bzB-lXw-1 X-Mimecast-MFC-AGG-ID: XSGw0230PvGpGS9bzB-lXw_1767601382 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-43284edbbc8so4244378f8f.0 for ; Mon, 05 Jan 2026 00:23:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1767601382; x=1768206182; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=vW7mLQEFNX/sa5+JF2UQBkqoBaqIc5/VpH7fDXfLlqs=; b=LlTKn6Vt5VZSlWqvNo95rjH7QcjTqmevzhcFdafBlRMtrFsg393kNfHpLthMx0LnVV vNGY4I17PqR5/A1CYAvKuZUVDlnoAfWJ6svgNynzEFVm5+qdyMGprnko1uTM9RiNCUKN kF3u7GUAA5b8Gni6esWpiA/RBnDbdbZ5xN0w+G8IAu11M7uHdYjob5i81/H1T+JccJ0j qv5P03j7qTAyWBvd1jE7YK3jTOHSs3/jNRdOM7up8oT1SMJEl/1BY7vMBUDs4tZvsQwh AR3Tkh1LmBBr5VEQzaQkl7VBfvNUn0CJ3kQTSFprNCIEANiCKV0OhDtkGZcUrxuWh867 jLGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767601382; x=1768206182; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=vW7mLQEFNX/sa5+JF2UQBkqoBaqIc5/VpH7fDXfLlqs=; b=aUYAI7qOCrS0p8K1CeeyTX1IBH/1WhcR5krXfnuSpUAp5awT+6Tw/1Qa2inf35WFQY rJm+L+xWFJdfXKNvB8HtlpK/cfGTqYJ8z/L+9YktiTllN7O+cuGCepET3XySczsRNhrT h6Yhir8WA1Ahl5Km4IvOQ/bzlwCe4v2nutkT6P1gQcJoo28N6LFd+2K1uv0ntAm1xmz6 bPRIJCGwhtgZjEHXaz60qqtyEnNJuFL0TV8hvjaht2zqxeRj/sviA1jn7dAfYkA/ckuH R7tPSfB48HNuYOBrh9+53QxC4zM2U8XXUNBi1Ms7WjrMJIW0dk0yHciuC0oER7ojLd3v ZBoQ== X-Gm-Message-State: AOJu0YyAu7trgjDTWVhYsfSFLU7y+gHxc8OxW9cS91bfp4WUXyoHqW4T xYwIealB8BH2w7AA9wN2eMaAP00UOF/KMZz2A+NzDdpCXUeyruwXgEA3nprknP8P3zlrgLmULeh 0Wnklbqf6Zai3H7dWoKAYRjlr36mDmMQFjG2IYb/inHYfb1ntUK09SXsNuxyZbQQYuqCRZO1qih 1ftXh/IK4/whU2RO99RboguARC0fzqdxYV5yXl0QIfkcc= X-Gm-Gg: AY/fxX65dWm32yNlhDopggtaVj0uATXf0pGMF9oSUL7S9dbyZrJ7P3XeAV8u+vBUR8u xdSjVINBrA1akoeZ3AmChVVZabOBSskCYkNMd2Ny0zsJ0xX6XyKIuypDq+0do114MZJff/cfq3Q x3dWARaHKRFT8XCOBIvSDkmIEaU6UMOd+GRths1iqUDo8/uYmd2PYgSXzQuaFmnZDj1uUFzL2fe qE0sP/HqPuWG3BjIbRgtkqHJTljCmWqii6pNfChuUCOiG8OfEiSPjKQvkqdT03HiNUUOI9rFfwn F4DSGLAyBLOuQEfiWcZIdBV44QAr0GXJnVBtOet+B8X+P9TxN3KdQ32T2m2NJvRzW9eRvp5nxyg L1diNfK+fcZiMszJOzjuuEacS3OE88dFsHA== X-Received: by 2002:a05:6000:2403:b0:431:35a:4a7d with SMTP id ffacd0b85a97d-4324e708fe3mr58459637f8f.58.1767601382097; Mon, 05 Jan 2026 00:23:02 -0800 (PST) X-Google-Smtp-Source: AGHT+IF+toNYrDF1foh7qEGgsaPaQu5EoHgXBV6IY+Dg2iZDwh/L3E0Nw+HN1rJa40DHNfa5Ktydrg== X-Received: by 2002:a05:6000:2403:b0:431:35a:4a7d with SMTP id ffacd0b85a97d-4324e708fe3mr58459566f8f.58.1767601381336; Mon, 05 Jan 2026 00:23:01 -0800 (PST) Received: from redhat.com (IGLD-80-230-31-118.inter.net.il. [80.230.31.118]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eaa08efsm99942627f8f.29.2026.01.05.00.22.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 00:23:00 -0800 (PST) Date: Mon, 5 Jan 2026 03:22:57 -0500 From: "Michael S. Tsirkin" To: linux-kernel@vger.kernel.org Cc: Cong Wang , Jonathan Corbet , Olivia Mackall , Herbert Xu , Jason Wang , Paolo Bonzini , Stefan Hajnoczi , Eugenio =?utf-8?B?UMOpcmV6?= , "James E.J. Bottomley" , "Martin K. Petersen" , Gerd Hoffmann , Xuan Zhuo , Marek Szyprowski , Robin Murphy , Stefano Garzarella , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Petr Tesarik , Leon Romanovsky , Jason Gunthorpe , Bartosz Golaszewski , linux-doc@vger.kernel.org, linux-crypto@vger.kernel.org, virtualization@lists.linux.dev, linux-scsi@vger.kernel.org, iommu@lists.linux.dev, kvm@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH v2 02/15] docs: dma-api: document __dma_from_device_group_begin()/end() Message-ID: <01ea88055ded4d70cac70ba557680fd5fa7d9ff5.1767601130.git.mst@redhat.com> References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Document the __dma_from_device_group_begin()/end() annotations. Signed-off-by: Michael S. Tsirkin Acked-by: Marek Szyprowski Reviewed-by: Petr Tesarik --- Documentation/core-api/dma-api-howto.rst | 52 ++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/Documentation/core-api/dma-api-howto.rst b/Documentation/core-= api/dma-api-howto.rst index 96fce2a9aa90..e97743ab0f26 100644 --- a/Documentation/core-api/dma-api-howto.rst +++ b/Documentation/core-api/dma-api-howto.rst @@ -146,6 +146,58 @@ What about block I/O and networking buffers? The bloc= k I/O and networking subsystems make sure that the buffers they use are valid for you to DMA from/to. =20 +__dma_from_device_group_begin/end annotations +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +As explained previously, when a structure contains a DMA_FROM_DEVICE / +DMA_BIDIRECTIONAL buffer (device writes to memory) alongside fields that t= he +CPU writes to, cache line sharing between the DMA buffer and CPU-written f= ields +can cause data corruption on CPUs with DMA-incoherent caches. + +The ``__dma_from_device_group_begin(GROUP)/__dma_from_device_group_end(GRO= UP)`` +macros ensure proper alignment to prevent this:: + + struct my_device { + spinlock_t lock1; + __dma_from_device_group_begin(); + char dma_buffer1[16]; + char dma_buffer2[16]; + __dma_from_device_group_end(); + spinlock_t lock2; + }; + +To isolate a DMA buffer from adjacent fields, use +``__dma_from_device_group_begin(GROUP)`` before the first DMA buffer +field and ``__dma_from_device_group_end(GROUP)`` after the last DMA +buffer field (with the same GROUP name). This protects both the head +and tail of the buffer from cache line sharing. + +The GROUP parameter is an optional identifier that names the DMA buffer gr= oup +(in case you have several in the same structure):: + + struct my_device { + spinlock_t lock1; + __dma_from_device_group_begin(buffer1); + char dma_buffer1[16]; + __dma_from_device_group_end(buffer1); + spinlock_t lock2; + __dma_from_device_group_begin(buffer2); + char dma_buffer2[16]; + __dma_from_device_group_end(buffer2); + }; + +On cache-coherent platforms these macros expand to zero-length array marke= rs. +On non-coherent platforms, they also ensure the minimal DMA alignment, whi= ch +can be as large as 128 bytes. + +.. note:: + + It is allowed (though somewhat fragile) to include extra fields, n= ot + intended for DMA from the device, within the group (in order to pa= ck the + structure tightly) - but only as long as the CPU does not write th= ese + fields while any fields in the group are mapped for DMA_FROM_DEVIC= E or + DMA_BIDIRECTIONAL. + DMA addressing capabilities =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D =20 --=20 MST From nobody Sat Feb 7 17:55:47 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DA8CD285C91 for ; Mon, 5 Jan 2026 08:23:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767601392; cv=none; b=IFahVrp3eZEsVXTH471HHu9PLtljAELv9auVy6UTnh8B3HLPBeh7dsm1Vms16ybO1d+Noq7pr3xdZpSGSLc6AJCPCESUrVH2fwrmJNlcyAh1yfb6RoAkmCERQG/ZDJC4ivE1zgE0sU9GeoiZm3+bFVbHKkddOl808tPz7QYjzf4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767601392; c=relaxed/simple; bh=IXDkDZtAt0m+aQ314vUNmBOnLJtrDRmmzuRNBy60P98=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=KOdHtjv0thB/saVc+ai0/TRs8YtmEpjl0rZ5BxjEarcdmDBquLUhuwjL55tjwwJBr2UxB22+Cyzf+Q1ya1uXEhBVuMBjSuJD5VfgR+OiCbjNuwypd6Z+IsigVdxdLF2VrYuJ3uozD8Oi2Il+5Zr2SbrHD5kPRLN0FI1NSoUF+Ak= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=AEBaeALe; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=SVLy5NLa; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="AEBaeALe"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="SVLy5NLa" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767601388; 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=1GET0dQPIEY4INQeC72jj/1xpmrzV3mfvZ6nPpr/HKY=; b=AEBaeALep1zaNbb0x0/0n6NT1Y1yen9lZPR5QYlhYaryR+slD065Hydx5X+LHnUm4eUQ40 VsnNwXHsVoJeAFuMARDPi/7suOmiuEbeUE7BrqGpulBIrlIdhNRbHBmcn+ZpbA+uWUT/GU NDS4V23B7nFdBRCQcv7uCdN8wAaJZOM= Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-199-3GpukyDVP6ia7-_ToDfzSw-1; Mon, 05 Jan 2026 03:23:07 -0500 X-MC-Unique: 3GpukyDVP6ia7-_ToDfzSw-1 X-Mimecast-MFC-AGG-ID: 3GpukyDVP6ia7-_ToDfzSw_1767601386 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-47d5c7a2f5dso41768105e9.2 for ; Mon, 05 Jan 2026 00:23:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1767601386; x=1768206186; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=1GET0dQPIEY4INQeC72jj/1xpmrzV3mfvZ6nPpr/HKY=; b=SVLy5NLaTRyVFdHdGzEjHMfGiKbc6I3fmsbr9lm1E8b1CKA/LQPCgjNjlWxIeHOo5k TCyXSslVxjf4VZ9QOe/s6tO2/Kwb4Jh6FbN2yQg8JaYMQ5nfvPhs0YO+1lEDBjqdTmKK nogzUqEH4ucYBZ2zA5lSaWV6mg4RpJBvIS8ASAcegaSwnPt7qTWgY7Miod5DsRDAoOYV UepvtMzbzwR8LaO4yzzJNvOZ4N26154q2EDHSSzoxcZQ6NqYgihrX2umzlfrkKx0+K3x VdkBYb/Grc6tgqNZeOLw5aG2S93fmuUJsNF5Da+4flx0dpVDTijlOJSLPU0HOTBDzlrv QX7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767601386; x=1768206186; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1GET0dQPIEY4INQeC72jj/1xpmrzV3mfvZ6nPpr/HKY=; b=mESFO/lslFgxnCgK+dxcafUf4mcna8SWC28su84ItOwmjFOKggmFdBFC5TmyfvLJ6Z MKPjn0FeVQYIS2g02zdAiK83efIN7ZyNrGHfWL4qM8aJU4AgE9mZO5Thc7bh0gz10sZH AYNzscxJEFKjZL0tz2A+MBmtXcJO0lx23YE9BHutI5Sr5CthEx+MQ4UBXhzS2mOtlE+d BoVaE3m3U0Gs8EghRreLePVAKhcPypAy53GifkyILdei58mBSYEK6xHmTnhctDQX8J3E E0TheGCPYquGz+JcjZB678JpWn6gSZigWMFlHEKYmTNzTel9pMYbAX5C4VLTzz6FgIrJ jFOQ== X-Gm-Message-State: AOJu0Yx+BouydH4/40Aq6IpK3+CirzawwgTftQMpKADrZQpZaEbw+Ayq OM9tUhzMa/E+L6kzS/5OvDyMydZng4ikf6BAedKSpvG2qQ5kkhYBHGne8epsl+K5xyQiztK+uRf gufYqpyHRx9bqh/DioAaB0G+ibaJTkzJBd94mVpCKVJnRQACTlTZq6EBWH0kpG2jbvErdTRs52J FRGkWEpEWkNQCnztSJ4HZF6CyGfe9K8VOCNWbCKPaMjEY= X-Gm-Gg: AY/fxX7NH946OIOEeBEPpasgxN/KYJB4Mz8jfzJWONoYohhdHbeoo058RAOzL9wxJBN 9KjOEwihoLkkgp9gqUZ5df3uNSQZm+20P1by61Fmr8pVwKWJ2z+NGzA0yYbl10DFe2URLmXzLqD kUgi7vFukEzufJjkmFJJYbE0Ox1OtuoMpN2Jmvi3sLVIY34u6FhcfipqAqObzYFB8K6m/HB8aVT mDZ8QTldmRwYIL9VGVBsaoHN98cJsVjAXnRaDyMkq/7hapCrAt/GrGRWT/ntKt0lbN0RBMVv8a+ pj4t9Fd/7ZzSGzBsQRpdvCnEVCtkZ2+LynFgpmj8TwMaxPzAlbQnnFG0Fj39Pee4GLfIMnG/Qp0 vhsuLBqRovWywKgEl7enttwJd+/V462Bp6A== X-Received: by 2002:a05:600c:8107:b0:477:7f4a:44b0 with SMTP id 5b1f17b1804b1-47d1959441fmr614821645e9.33.1767601385873; Mon, 05 Jan 2026 00:23:05 -0800 (PST) X-Google-Smtp-Source: AGHT+IFFnRSrw61tFPN3ingmu+tnGwj19lkkHlcV8EUdBq7ZpNk54zAQl+NVy05hzMsFUOEhZ22F+w== X-Received: by 2002:a05:600c:8107:b0:477:7f4a:44b0 with SMTP id 5b1f17b1804b1-47d1959441fmr614820945e9.33.1767601385198; Mon, 05 Jan 2026 00:23:05 -0800 (PST) Received: from redhat.com (IGLD-80-230-31-118.inter.net.il. [80.230.31.118]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d6c0a1d89sm52159655e9.12.2026.01.05.00.23.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 00:23:04 -0800 (PST) Date: Mon, 5 Jan 2026 03:23:01 -0500 From: "Michael S. Tsirkin" To: linux-kernel@vger.kernel.org Cc: Cong Wang , Jonathan Corbet , Olivia Mackall , Herbert Xu , Jason Wang , Paolo Bonzini , Stefan Hajnoczi , Eugenio =?utf-8?B?UMOpcmV6?= , "James E.J. Bottomley" , "Martin K. Petersen" , Gerd Hoffmann , Xuan Zhuo , Marek Szyprowski , Robin Murphy , Stefano Garzarella , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Petr Tesarik , Leon Romanovsky , Jason Gunthorpe , Bartosz Golaszewski , linux-doc@vger.kernel.org, linux-crypto@vger.kernel.org, virtualization@lists.linux.dev, linux-scsi@vger.kernel.org, iommu@lists.linux.dev, kvm@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH v2 03/15] dma-mapping: add DMA_ATTR_CPU_CACHE_CLEAN Message-ID: <2d5d091f9d84b68ea96abd545b365dd1d00bbf48.1767601130.git.mst@redhat.com> References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When multiple small DMA_FROM_DEVICE or DMA_BIDIRECTIONAL buffers share a cacheline, and DMA_API_DEBUG is enabled, we get this warning: cacheline tracking EEXIST, overlapping mappings aren't supported. This is because when one of the mappings is removed, while another one is active, CPU might write into the buffer. Add an attribute for the driver to promise not to do this, making the overlapping safe, and suppressing the warning. Signed-off-by: Michael S. Tsirkin Acked-by: Marek Szyprowski Reviewed-by: Petr Tesarik --- include/linux/dma-mapping.h | 7 +++++++ kernel/dma/debug.c | 3 ++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h index 29ad2ce700f0..29973baa0581 100644 --- a/include/linux/dma-mapping.h +++ b/include/linux/dma-mapping.h @@ -79,6 +79,13 @@ */ #define DMA_ATTR_MMIO (1UL << 10) =20 +/* + * DMA_ATTR_CPU_CACHE_CLEAN: Indicates the CPU will not dirty any cacheline + * overlapping this buffer while it is mapped for DMA. All mappings sharing + * a cacheline must have this attribute for this to be considered safe. + */ +#define DMA_ATTR_CPU_CACHE_CLEAN (1UL << 11) + /* * A dma_addr_t can hold any valid DMA or bus address for the platform. I= t can * be given to a device to use as a DMA source or target. It is specific = to a diff --git a/kernel/dma/debug.c b/kernel/dma/debug.c index 138ede653de4..7e66d863d573 100644 --- a/kernel/dma/debug.c +++ b/kernel/dma/debug.c @@ -595,7 +595,8 @@ static void add_dma_entry(struct dma_debug_entry *entry= , unsigned long attrs) if (rc =3D=3D -ENOMEM) { pr_err_once("cacheline tracking ENOMEM, dma-debug disabled\n"); global_disable =3D true; - } else if (rc =3D=3D -EEXIST && !(attrs & DMA_ATTR_SKIP_CPU_SYNC) && + } else if (rc =3D=3D -EEXIST && + !(attrs & (DMA_ATTR_SKIP_CPU_SYNC | DMA_ATTR_CPU_CACHE_CLEAN)) && !(IS_ENABLED(CONFIG_DMA_BOUNCE_UNALIGNED_KMALLOC) && is_swiotlb_active(entry->dev))) { err_printk(entry->dev, entry, --=20 MST From nobody Sat Feb 7 17:55:47 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 4494D314A77 for ; Mon, 5 Jan 2026 08:23:15 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767601396; cv=none; b=EHUD6mQ6VaRbHNu2X6atKLQ3nnA+pHkdSeUcnFRnQ4cO1PC+36G22rdrf7l7ymjZcUR68UBJdNcsLT4Qoz74M23KkXj768mtxzZupfis5vNQhzjI54d7GFLVwBTRAVtUB5T+8DNHYsqTHpqT4cJtguBJToDj9iqg0QE/qBFQ5D0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767601396; c=relaxed/simple; bh=3EF4beueqssYSrJr7jAiyWtRxi/ynmIi31SbgxtAbxk=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=kYjayIm0Aj93XdRxsMubJ4WNWuqlDJ8zI5k/zF+uC8OenQxHHEoNkiDqJhaC31H85jXJMyzC6/Kn8t4imLV5AOCQSDcTJGw2ESxgh3fbHBwWwN+yTTeSWSR6/irhGgA16GNblNPPZXVADUYQwZXumA50Db3BOBnS74LIdO5Sag4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=fhwpRoog; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=FzAXECaK; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="fhwpRoog"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="FzAXECaK" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767601394; 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=jlkdUJvLxIuG9RkypEQ1odBgc8hsD/vyeqVzWJtThQg=; b=fhwpRoogQuWSFbaBh0s8ODmeCly1d8UTg61ZuQq7OyOTmcTSJD6ZFtnsXDmPvd+XhdHCO/ UKZLrHTnXU9ulOjVahixSqY4GOZvWpV/Ym1gZ7rQwiBfdzqIaKQTI6TfQfPFSXXhEo3/rM hDbUSuy6j10aykuRFAXhLkga0ugWaTI= Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-31-j5k7fjusNMCjluzYdDbMkA-1; Mon, 05 Jan 2026 03:23:12 -0500 X-MC-Unique: j5k7fjusNMCjluzYdDbMkA-1 X-Mimecast-MFC-AGG-ID: j5k7fjusNMCjluzYdDbMkA_1767601391 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-42fb1c2c403so8750722f8f.3 for ; Mon, 05 Jan 2026 00:23:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1767601391; x=1768206191; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=jlkdUJvLxIuG9RkypEQ1odBgc8hsD/vyeqVzWJtThQg=; b=FzAXECaK9cpyvzSFZy2EhuHAzlJYHYh1Ucgh0W27TOzjOUZxhoOG8f84Akx1O9zwx4 CC0i5zi+JAF8JUzNa7jRnGOZgifzp6xP185MLdaxTMhpb3BVub6wsldVxzkRMP7sKCTF Wh/9qnZIFH/gtILXIgimM1Q5mF9HE/JX85wGVPpWlctAAhY18PWOK37gvJbETMTa+Spt 42RiCPItEDLPj+tnu4dl2DVDx41dLyN2aEcuuR2R8kpPrI9Bdk9r7F9OUYvygjmLA4ap M0wbuEybZHozcmrIpXIOxIo5REsr3F6Y+qMZG2Jrxljck8M9b1jbMaSbfzVjBHILnQ7A q+yA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767601391; x=1768206191; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=jlkdUJvLxIuG9RkypEQ1odBgc8hsD/vyeqVzWJtThQg=; b=XE1H4b84NipYHnwsWRpvOeuDM8dm5n/jiQEbWTh7dB7uW3tBVfQknX6HZB4kTiZSze Ex1eX4Vx1LTuheIkyYuisIoQur5z5k5OMdepGWqHy0VkMAJLNldSiPj0Dg1yeHJnX+sE D2xHcPDDrTMptIHqXTbZwZfmta0503hBU5oQBz4NA5iN0ZV7hfyNQlkUoogcJ04l16sM rkGyZqrPbP+MDXS0fRRkRrqpwjOy52QmmyjElP5FgRfmPesp/qYPImrL4INWGbEK/Iza ojFmm4qabr2rcZhnd/vh30RUHnB8sPfbwIyLrZtHlek+ZHKeSQlVvm0PiZXyXpGGTH2b pEiA== X-Gm-Message-State: AOJu0Yw9PDQ0Yvj9cP6zux4D6+KbSFJLlGdrdFnsyOf4y3iOktqIHllX Ga6pqLZ+3S6C6c1mqigoQ2lxIlVskQ24tLHMWT9R3ZKf4ehBhb/W5rBv/1gnn5qc66UCXZ20ULv lm448bQKhAVl9iBEGD/BpWE+m3GrPYZYrEKYxKA4Hy50kVsIrtxoX7O7Q0pXJPFC4n2ZLXoOu/+ 2HE5DtVojjIdK7QFUfutCa+vsWOCi+Yzh9K16Lp55uc8s= X-Gm-Gg: AY/fxX6C6grjSnKVHX3L6zIN+s2ZAxdvLXD8sfsMf2wRk74gqSH5PsBIDtDOzUqdcXX CAV1GJuMjagQWZJn+NXTPjH+2XK6R5A7goApDcbKYvZBgu4v+Gq+YUxX8G5TzQ+ORRfeWgy1ZPo IsxG4T2o/R8HdhkjDe338TcBWQ8FVDffrYt6okJWHr1ayNckwmOzMRrlll67zt6mikMnAnLsmFv oJx5SypsRxHaAxspQHFJ9OOYS5xH7nD+NT+3fZu7SMp6PDQcL2J0YYWYAZSDgVYW/4djWTmoS6L e5Wxq8s8wTxvnkXnIvaAJFP0KdHocVUMAu5EIL+us9iVx21N3lb03VZMk0r+4Y+MugUw5h+dOer /B55suuUQ12gwzooFeMpuJ1RMs7HGE1tCAA== X-Received: by 2002:a05:6000:2c03:b0:42f:bbc6:edc1 with SMTP id ffacd0b85a97d-4324e4c1230mr54966731f8f.1.1767601390823; Mon, 05 Jan 2026 00:23:10 -0800 (PST) X-Google-Smtp-Source: AGHT+IEwk1Ttr1N2m9x2GBHG1pWtih6zeyM7Sr9HAGjGkjK9L3/ihsrFeD/P27Wy0cj6YonFT6KolQ== X-Received: by 2002:a05:6000:2c03:b0:42f:bbc6:edc1 with SMTP id ffacd0b85a97d-4324e4c1230mr54966659f8f.1.1767601390077; Mon, 05 Jan 2026 00:23:10 -0800 (PST) Received: from redhat.com (IGLD-80-230-31-118.inter.net.il. [80.230.31.118]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eaa64cesm99604028f8f.35.2026.01.05.00.23.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 00:23:09 -0800 (PST) Date: Mon, 5 Jan 2026 03:23:05 -0500 From: "Michael S. Tsirkin" To: linux-kernel@vger.kernel.org Cc: Cong Wang , Jonathan Corbet , Olivia Mackall , Herbert Xu , Jason Wang , Paolo Bonzini , Stefan Hajnoczi , Eugenio =?utf-8?B?UMOpcmV6?= , "James E.J. Bottomley" , "Martin K. Petersen" , Gerd Hoffmann , Xuan Zhuo , Marek Szyprowski , Robin Murphy , Stefano Garzarella , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Petr Tesarik , Leon Romanovsky , Jason Gunthorpe , Bartosz Golaszewski , linux-doc@vger.kernel.org, linux-crypto@vger.kernel.org, virtualization@lists.linux.dev, linux-scsi@vger.kernel.org, iommu@lists.linux.dev, kvm@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH v2 04/15] docs: dma-api: document DMA_ATTR_CPU_CACHE_CLEAN Message-ID: <0720b4be31c1b7a38edca67fd0c97983d2a56936.1767601130.git.mst@redhat.com> References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Document DMA_ATTR_CPU_CACHE_CLEAN as implemented in the previous patch. Signed-off-by: Michael S. Tsirkin Acked-by: Marek Szyprowski Reviewed-by: Petr Tesarik --- Documentation/core-api/dma-attributes.rst | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Documentation/core-api/dma-attributes.rst b/Documentation/core= -api/dma-attributes.rst index 0bdc2be65e57..1d7bfad73b1c 100644 --- a/Documentation/core-api/dma-attributes.rst +++ b/Documentation/core-api/dma-attributes.rst @@ -148,3 +148,12 @@ DMA_ATTR_MMIO is appropriate. For architectures that require cache flushing for DMA coherence DMA_ATTR_MMIO will not perform any cache flushing. The address provided must never be mapped cacheable into the CPU. + +DMA_ATTR_CPU_CACHE_CLEAN +------------------------ + +This attribute indicates the CPU will not dirty any cacheline overlapping = this +DMA_FROM_DEVICE/DMA_BIDIRECTIONAL buffer while it is mapped. This allows +multiple small buffers to safely share a cacheline without risk of data +corruption, suppressing DMA debug warnings about overlapping mappings. +All mappings sharing a cacheline should have this attribute. --=20 MST From nobody Sat Feb 7 17:55:47 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6AE0D31353A for ; Mon, 5 Jan 2026 08:23:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767601400; cv=none; b=LnPMBXJLhBXAmpiPiFV7YUfDuLK/dwLrIicPGN/99BJ60imxE+q7AuJMyuzKnUU2AB73mNZZ0IleueQMNVVUxFXWiCiJzGV3YIFsNIcibkp5JETIwVKAXUiVg+1Ag4vSyB+Sn0gdx4a4FtWkw9Mr5ldRjr9aNuT6OV8Evug5P6k= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767601400; c=relaxed/simple; bh=9iEzgPHvQMQc1JPQHZR4+0WH0pS0RVDvpJpTVteo84E=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=AUU38NbfGlRvBNZpt3Lpg80YqgnOjH7JbAAyCowpNfPA/x9iSQWfLvI0nr5iSIwA0Kr5EaI/10nMtN5hC5qv57WDWRxrPrSIN4gpBmpaFuc/6VItpfuyGVOuV61/gh9PFJgIMYQKmdG4h9sbquA9CLqx82hweKiCe69bkDAqMLk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=ddGXyFUp; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=VZcWQa1q; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="ddGXyFUp"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="VZcWQa1q" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767601396; 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=Ceg01Cw9H4aJK1m/G33nz2CzBje4q7tNz5vOwZlPzjQ=; b=ddGXyFUpV+ZOxT78IncITDRXo+RMY+dONX1wNmTDULiu22BGkN4H+au5jwprxAAHt2e5wK OtGWvHqaIOzCe5ouhe3BbNOAESyQ2/ON123PeM9YYtsETUL2lUPYBd3zcLDiN2ZWOqMtUG DLPh+3YRaeIptD6EX1IX7eXrHwk0aos= Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-571-TY7sys8RM7CHZ1sR0b0v9g-1; Mon, 05 Jan 2026 03:23:15 -0500 X-MC-Unique: TY7sys8RM7CHZ1sR0b0v9g-1 X-Mimecast-MFC-AGG-ID: TY7sys8RM7CHZ1sR0b0v9g_1767601394 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-47a97b785bdso95837245e9.3 for ; Mon, 05 Jan 2026 00:23:15 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1767601394; x=1768206194; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=Ceg01Cw9H4aJK1m/G33nz2CzBje4q7tNz5vOwZlPzjQ=; b=VZcWQa1qe1Jsgfjpqig0asowpCApYa2eecngGEWLmC8TnpZr9mMiVTb0FNYSqZFbsc 6YO7u39UlcI8nUODOltXH4XeMzmlo2hJcsGo+AxGNg+UUfoWJok0zK8atoP1LeAOTpn/ XNUzOLQhTvYog47OacKq3ax8btPEDwfWVhzmQSRnwSGRno/Cvi98pkidMV0kJykd6R2h DwmlkMytnLHf2iWS7fv83jUjeo3EsOiHPpMAywJT6HBreDCJoWsLFTr1ryrCzK76E9PI gWquKjl8xaR5ZCBCzRKdYmxnbP+LIyrWgnDGNDy+eJIC1cI5slv16lHgOtEZMJnaFItj mC3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767601394; x=1768206194; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Ceg01Cw9H4aJK1m/G33nz2CzBje4q7tNz5vOwZlPzjQ=; b=OhjkiBSR+V2ChIZKyJIliviaWcMh4gO7Xy+CV3aT22D3JMTInBaAkJ1jDde00Qbg2n t9HewD2//ge/NVGYuG4JXUQJnm6euVhox0vWU13BB7v073JNmoTaGOeOtkjLQ2ODugTZ 2VLIta56FBu1lsujRhI1eppbvXsOIq6oKruKA/Sot2+2hJvtU7awyZq/ay2VV3bV//1N QUOi6Ic9jL+PitBju006EZ+R1foEjXqach+uuxUAcw8mfheG2fK8HGE2FjepFspUWg0k pW1yvqKXJA/RQDA7btgGLBkKFl7rdgztJmhZ9KnbMy41JqCqULHXKLOb/2tKye3Yl9OM 7Yxw== X-Gm-Message-State: AOJu0Yyuenjh5VsD8xtfb/0mqf/g6in7uypJTEB3EQMpn1Oy/tFTDBPP pHDa7vdKSQ4rKbHhDeH2fXX5xdxLiTv9tBGNqXLzuqwAsR/bfPj010crF2G64mGjZ9jKxTWetYl AJieWKTMoEtcjyR5JLEIGUxF46f/lEuNZwP/JWatb8horIVw6ddyXJEhLMNVMwmlbfLO2WAOzL8 2aRxiQKKO01h/+DjzzH9o+l6hx4vEQ0TzpF3UUdhSRk9U= X-Gm-Gg: AY/fxX4yFBF6b3givJboSk6QIhoRrrijLXhKNzm05dKidz/IygQcL/eEj+bQI4sBTJD uIuv+vYAKCkewm0SF+mmhMmaoLaNsFjYRVJfwywKLBZ/vyOHduihEvPnBHSygCQzcP88U2WOg0D SOOng1ayD5fkHdCDOzCAYBh8WVvZT/HgVtaWnOATiNPabwmKaiIYgz62ey9QjcZGjWo/JfZ7Nbh KO5rM3EakrAi8GHxuWgaYMFQ8kOp39Qy+IVaQSduyusUEIR7J8J8iHpifZHiTYKrBcUo4TvCbB+ rogoWp/DG+oSm9jYVSvMObGxNwdobSLGs07jwgoiIVePNpvp52qUf8+4mSYkg2IOIgNn5VcsBfo FH8tUMvLsa0JSbiWSMKrMK3g1efQ7XldVGQ== X-Received: by 2002:a05:600c:8710:b0:475:da13:2568 with SMTP id 5b1f17b1804b1-47d19592102mr548338415e9.25.1767601394209; Mon, 05 Jan 2026 00:23:14 -0800 (PST) X-Google-Smtp-Source: AGHT+IHQnvRLWDf0aCqCDaI87q/fN7cE8aCZoYxHw4jznq03tUl25BjWNTLdD3S8QBVZUoY2t9i3vg== X-Received: by 2002:a05:600c:8710:b0:475:da13:2568 with SMTP id 5b1f17b1804b1-47d19592102mr548337795e9.25.1767601393663; Mon, 05 Jan 2026 00:23:13 -0800 (PST) Received: from redhat.com (IGLD-80-230-31-118.inter.net.il. [80.230.31.118]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d6d13ed34sm142315025e9.2.2026.01.05.00.23.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 00:23:13 -0800 (PST) Date: Mon, 5 Jan 2026 03:23:10 -0500 From: "Michael S. Tsirkin" To: linux-kernel@vger.kernel.org Cc: Cong Wang , Jonathan Corbet , Olivia Mackall , Herbert Xu , Jason Wang , Paolo Bonzini , Stefan Hajnoczi , Eugenio =?utf-8?B?UMOpcmV6?= , "James E.J. Bottomley" , "Martin K. Petersen" , Gerd Hoffmann , Xuan Zhuo , Marek Szyprowski , Robin Murphy , Stefano Garzarella , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Petr Tesarik , Leon Romanovsky , Jason Gunthorpe , Bartosz Golaszewski , linux-doc@vger.kernel.org, linux-crypto@vger.kernel.org, virtualization@lists.linux.dev, linux-scsi@vger.kernel.org, iommu@lists.linux.dev, kvm@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH v2 05/15] dma-debug: track cache clean flag in entries Message-ID: <0ffb3513d18614539c108b4548cdfbc64274a7d1.1767601130.git.mst@redhat.com> References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" If a driver is buggy and has 2 overlapping mappings but only sets cache clean flag on the 1st one of them, we warn. But if it only does it for the 2nd one, we don't. Fix by tracking cache clean flag in the entry. Signed-off-by: Michael S. Tsirkin Reviewed-by: Petr Tesarik --- kernel/dma/debug.c | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/kernel/dma/debug.c b/kernel/dma/debug.c index 7e66d863d573..43d6a996d7a7 100644 --- a/kernel/dma/debug.c +++ b/kernel/dma/debug.c @@ -63,6 +63,7 @@ enum map_err_types { * @sg_mapped_ents: 'mapped_ents' from dma_map_sg * @paddr: physical start address of the mapping * @map_err_type: track whether dma_mapping_error() was checked + * @is_cache_clean: driver promises not to write to buffer while mapped * @stack_len: number of backtrace entries in @stack_entries * @stack_entries: stack of backtrace history */ @@ -76,7 +77,8 @@ struct dma_debug_entry { int sg_call_ents; int sg_mapped_ents; phys_addr_t paddr; - enum map_err_types map_err_type; + enum map_err_types map_err_type; + bool is_cache_clean; #ifdef CONFIG_STACKTRACE unsigned int stack_len; unsigned long stack_entries[DMA_DEBUG_STACKTRACE_ENTRIES]; @@ -472,12 +474,15 @@ static int active_cacheline_dec_overlap(phys_addr_t c= ln) return active_cacheline_set_overlap(cln, --overlap); } =20 -static int active_cacheline_insert(struct dma_debug_entry *entry) +static int active_cacheline_insert(struct dma_debug_entry *entry, + bool *overlap_cache_clean) { phys_addr_t cln =3D to_cacheline_number(entry); unsigned long flags; int rc; =20 + *overlap_cache_clean =3D false; + /* If the device is not writing memory then we don't have any * concerns about the cpu consuming stale data. This mitigates * legitimate usages of overlapping mappings. @@ -487,8 +492,16 @@ static int active_cacheline_insert(struct dma_debug_en= try *entry) =20 spin_lock_irqsave(&radix_lock, flags); rc =3D radix_tree_insert(&dma_active_cacheline, cln, entry); - if (rc =3D=3D -EEXIST) + if (rc =3D=3D -EEXIST) { + struct dma_debug_entry *existing; + active_cacheline_inc_overlap(cln); + existing =3D radix_tree_lookup(&dma_active_cacheline, cln); + /* A lookup failure here after we got -EEXIST is unexpected. */ + WARN_ON(!existing); + if (existing) + *overlap_cache_clean =3D existing->is_cache_clean; + } spin_unlock_irqrestore(&radix_lock, flags); =20 return rc; @@ -583,20 +596,24 @@ DEFINE_SHOW_ATTRIBUTE(dump); */ static void add_dma_entry(struct dma_debug_entry *entry, unsigned long att= rs) { + bool overlap_cache_clean; struct hash_bucket *bucket; unsigned long flags; int rc; =20 + entry->is_cache_clean =3D !!(attrs & DMA_ATTR_CPU_CACHE_CLEAN); + bucket =3D get_hash_bucket(entry, &flags); hash_bucket_add(bucket, entry); put_hash_bucket(bucket, flags); =20 - rc =3D active_cacheline_insert(entry); + rc =3D active_cacheline_insert(entry, &overlap_cache_clean); if (rc =3D=3D -ENOMEM) { pr_err_once("cacheline tracking ENOMEM, dma-debug disabled\n"); global_disable =3D true; } else if (rc =3D=3D -EEXIST && - !(attrs & (DMA_ATTR_SKIP_CPU_SYNC | DMA_ATTR_CPU_CACHE_CLEAN)) && + !(attrs & DMA_ATTR_SKIP_CPU_SYNC) && + !(entry->is_cache_clean && overlap_cache_clean) && !(IS_ENABLED(CONFIG_DMA_BOUNCE_UNALIGNED_KMALLOC) && is_swiotlb_active(entry->dev))) { err_printk(entry->dev, entry, --=20 MST From nobody Sat Feb 7 17:55:47 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 641A0326940 for ; Mon, 5 Jan 2026 08:23:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767601404; cv=none; b=mJAA8A44kuB/S0mZ+2s+g9fRvhUUbB+ouSMkh6/JXxluR8YClvly1rXE7ovBYF2eW/OF2Hcz72Bwz3tupxKdDMBC5K69GS7fafu+0E67ixHNnQENdd7nKxO07uqcRvvMXQZVq0ALadWiOnTjxr+MancaDsuSrAuZet+2cVaTYUo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767601404; c=relaxed/simple; bh=+fh5yr7B9tzMU58eX5VqhVn+kLA6dyyd9L7KjvRe8jk=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=CXtSiUsCSRgbGZ/mJhLDkaFze5tMtJPDHvA9hBAn3Ox6hkIhBLnr/q1BnhkMiqVcIJa6JMh8keymdiGAlskPIXA+lZF6ejIqA9gdi3JU1M59FT3wOR5lzIdqUTO3xVW+Bo7cvGQSkO9j2BD7+Em7KQU/T+oRDxAx5BFiT/Wj0OA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=Dp+EOOZf; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=oPx6lLvC; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="Dp+EOOZf"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="oPx6lLvC" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767601401; 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=KKTzcDg3xAPTqY88u2oQetZhvyJiwFAVniuIJmxLHUY=; b=Dp+EOOZfL3peO3lrO/qo5Z1SwNPi846egn14ongsK+xm1gd83Sk+/z81Ezz37LDUNUmqLT GttGFiBHad+jhFQgIrtRjo0erzJ0ihhEhOHUcWAw5ZcitJgXhww0ONReFYlvA5uRnScR/i c/3TK7Tm5Li6d+lrj6M5L+cK2ZouMow= Received: from mail-wr1-f70.google.com (mail-wr1-f70.google.com [209.85.221.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-508-blopjv1SPtum7QTcm-WK0A-1; Mon, 05 Jan 2026 03:23:20 -0500 X-MC-Unique: blopjv1SPtum7QTcm-WK0A-1 X-Mimecast-MFC-AGG-ID: blopjv1SPtum7QTcm-WK0A_1767601399 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-4325b182e3cso5757089f8f.2 for ; Mon, 05 Jan 2026 00:23:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1767601398; x=1768206198; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=KKTzcDg3xAPTqY88u2oQetZhvyJiwFAVniuIJmxLHUY=; b=oPx6lLvCC7VWKf4SKNWlXpDA4OpVv265fhyRm0n66vnCWjhhumAuL/RJ486uVlYr0j 3CAIMbUH0WleblUlPs57TKJgqBdj7/Bs7HYGK/U0MNqOnlwd82VDSCcSLDz2bmWvLFSs I00ajQ9D5lmWAqO0C3IDQ0Fnlu4PSFcDAsp+nZFrGaz1PQh46kXRSEUjZyqCN7ihcGbb PHrYLjsyZxbI1PcDuUNCQvG6o1rLyAVpyh+P4lf4/P0C8nL5ySGTSAliXYXGevs17p0/ ic1rcWBik3AJ7B/M+M0m5PpagEt66D6NdILPMLgCkNY8PpvW7oNN/mb4R7QhWaJggltx J7eg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767601398; x=1768206198; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=KKTzcDg3xAPTqY88u2oQetZhvyJiwFAVniuIJmxLHUY=; b=MW7NuRj86OeGkgaf6WV2tbiSAtMA5IkuPt41o51qZk8oR/yNJMuRed7tkkTlCfnpD5 guuftqO0gwUT3AVlL5iwddNgJvyc+RUEjXhL0P6uju3/LY8DV2th+WBPolyWNZbI1jPa /IzRGt/bKOAWqfykbZkqdL9prnu5/JkgwNMQCwUyQiAVMM6fKEfDRvCkkAW+EuxwrTSw ZCyRZj/FuEpIASOuUogPO3YgztifgOcdyH9HndcZdCc+aTPtesD9/+B7PSTo+oAQrcrq 945/LVzvXfi1O5Xpl/7QkqxqfnukIvvwlpVCUz2CJE93OCj1mdSsZzJ3Aptg+YWC/VTD NvtA== X-Gm-Message-State: AOJu0YzAUZ8SFdGvpydE5GlDHdiWjX8qYZ65QhtTN9NEBCc2dZH5uito 60n5Rk0pXdH/Deq4gZaDBziufymcuncTx+8RqGPMeThgfc9Xoc9oSL57Lb0eLUFNX0f3sbqT4Ns eNDoh650n813oRDNBNjXNgtw9wnf26csCqwnwTO8zyh043j8w9RBimyoPPaGSR5DeukkbJBbwuD tleff6UVcGFflLnHZ2y+CBZobcU9kikxnBZ56j4qHDe6k= X-Gm-Gg: AY/fxX46amvRl/nXnWmAmZ7zX2HMAJP8MBYpyrTZDZ+9y+QHCpYN6qWNg8jFL2uUcuC fUy2Q/pTG6R2irCS0pyx3JO4Indbgq3ad6yeQ9UwghEsEztPKEUVtv+iWZdC469awK5aHKQiL82 Hn57LlTIaBID27ctMPMFuQ7LOPnNxCm/0SEXqzY5G251Bo+QNbGKURb2lFhCOFkLTkPf+WcQHRx UeFDGqsT8SGH6rsnzkJ93gkbck9Kbm/NqbFbJiVTtn1do6VjmmqNsuGTeOGlmsDbnzYDhkYb48n 2vHHUFT8LMo7XJ/8KXK2VyduNUlOdykNnQTjJBgTKDHggP6FFgr/pYcTwbXNDevC5uTBzNHQ6D1 yQPe4rV+VRKscEpqo+ScX3i9HLT5kAaWHyQ== X-Received: by 2002:a5d:5f49:0:b0:42c:b8fd:21b4 with SMTP id ffacd0b85a97d-4324e709d72mr66277166f8f.57.1767601398255; Mon, 05 Jan 2026 00:23:18 -0800 (PST) X-Google-Smtp-Source: AGHT+IEFd+BKePtnLnTT2Wp7pDPsb2ZtKPYbwHq2FGpVmLPCddNuF0tBL9FqE7HQpZrJRIHQ41vPQg== X-Received: by 2002:a5d:5f49:0:b0:42c:b8fd:21b4 with SMTP id ffacd0b85a97d-4324e709d72mr66277090f8f.57.1767601397490; Mon, 05 Jan 2026 00:23:17 -0800 (PST) Received: from redhat.com (IGLD-80-230-31-118.inter.net.il. [80.230.31.118]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-43277b0efefsm66584454f8f.25.2026.01.05.00.23.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 00:23:17 -0800 (PST) Date: Mon, 5 Jan 2026 03:23:13 -0500 From: "Michael S. Tsirkin" To: linux-kernel@vger.kernel.org Cc: Cong Wang , Jonathan Corbet , Olivia Mackall , Herbert Xu , Jason Wang , Paolo Bonzini , Stefan Hajnoczi , Eugenio =?utf-8?B?UMOpcmV6?= , "James E.J. Bottomley" , "Martin K. Petersen" , Gerd Hoffmann , Xuan Zhuo , Marek Szyprowski , Robin Murphy , Stefano Garzarella , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Petr Tesarik , Leon Romanovsky , Jason Gunthorpe , Bartosz Golaszewski , linux-doc@vger.kernel.org, linux-crypto@vger.kernel.org, virtualization@lists.linux.dev, linux-scsi@vger.kernel.org, iommu@lists.linux.dev, kvm@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH v2 06/15] virtio: add virtqueue_add_inbuf_cache_clean API Message-ID: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Add virtqueue_add_inbuf_cache_clean() for passing DMA_ATTR_CPU_CACHE_CLEAN to virtqueue operations. This suppresses DMA debug cacheline overlap warnings for buffers where proper cache management is ensured by the caller. Signed-off-by: Michael S. Tsirkin --- drivers/virtio/virtio_ring.c | 83 ++++++++++++++++++++++++++---------- include/linux/virtio.h | 5 +++ 2 files changed, 65 insertions(+), 23 deletions(-) diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c index 95e320b23624..4fe0f78df5ec 100644 --- a/drivers/virtio/virtio_ring.c +++ b/drivers/virtio/virtio_ring.c @@ -174,7 +174,8 @@ struct virtqueue_ops { int (*add)(struct vring_virtqueue *vq, struct scatterlist *sgs[], unsigned int total_sg, unsigned int out_sgs, unsigned int in_sgs, void *data, - void *ctx, bool premapped, gfp_t gfp); + void *ctx, bool premapped, gfp_t gfp, + unsigned long attr); void *(*get)(struct vring_virtqueue *vq, unsigned int *len, void **ctx); bool (*kick_prepare)(struct vring_virtqueue *vq); void (*disable_cb)(struct vring_virtqueue *vq); @@ -444,7 +445,7 @@ static int vring_mapping_error(const struct vring_virtq= ueue *vq, /* Map one sg entry. */ static int vring_map_one_sg(const struct vring_virtqueue *vq, struct scatt= erlist *sg, enum dma_data_direction direction, dma_addr_t *addr, - u32 *len, bool premapped) + u32 *len, bool premapped, unsigned long attr) { if (premapped) { *addr =3D sg_dma_address(sg); @@ -472,7 +473,7 @@ static int vring_map_one_sg(const struct vring_virtqueu= e *vq, struct scatterlist */ *addr =3D virtqueue_map_page_attrs(&vq->vq, sg_page(sg), sg->offset, sg->length, - direction, 0); + direction, attr); =20 if (vring_mapping_error(vq, *addr)) return -ENOMEM; @@ -603,7 +604,8 @@ static inline int virtqueue_add_split(struct vring_virt= queue *vq, void *data, void *ctx, bool premapped, - gfp_t gfp) + gfp_t gfp, + unsigned long attr) { struct vring_desc_extra *extra; struct scatterlist *sg; @@ -675,7 +677,8 @@ static inline int virtqueue_add_split(struct vring_virt= queue *vq, if (++sg_count !=3D total_sg) flags |=3D VRING_DESC_F_NEXT; =20 - if (vring_map_one_sg(vq, sg, DMA_TO_DEVICE, &addr, &len, premapped)) + if (vring_map_one_sg(vq, sg, DMA_TO_DEVICE, &addr, &len, + premapped, attr)) goto unmap_release; =20 /* Note that we trust indirect descriptor @@ -694,7 +697,8 @@ static inline int virtqueue_add_split(struct vring_virt= queue *vq, if (++sg_count !=3D total_sg) flags |=3D VRING_DESC_F_NEXT; =20 - if (vring_map_one_sg(vq, sg, DMA_FROM_DEVICE, &addr, &len, premapped)) + if (vring_map_one_sg(vq, sg, DMA_FROM_DEVICE, &addr, &len, + premapped, attr)) goto unmap_release; =20 /* Note that we trust indirect descriptor @@ -1487,7 +1491,8 @@ static int virtqueue_add_indirect_packed(struct vring= _virtqueue *vq, void *data, bool premapped, gfp_t gfp, - u16 id) + u16 id, + unsigned long attr) { struct vring_desc_extra *extra; struct vring_packed_desc *desc; @@ -1516,7 +1521,7 @@ static int virtqueue_add_indirect_packed(struct vring= _virtqueue *vq, for (sg =3D sgs[n]; sg; sg =3D sg_next(sg)) { if (vring_map_one_sg(vq, sg, n < out_sgs ? DMA_TO_DEVICE : DMA_FROM_DEVICE, - &addr, &len, premapped)) + &addr, &len, premapped, attr)) goto unmap_release; =20 desc[i].flags =3D cpu_to_le16(n < out_sgs ? @@ -1615,7 +1620,8 @@ static inline int virtqueue_add_packed(struct vring_v= irtqueue *vq, void *data, void *ctx, bool premapped, - gfp_t gfp) + gfp_t gfp, + unsigned long attr) { struct vring_packed_desc *desc; struct scatterlist *sg; @@ -1642,8 +1648,8 @@ static inline int virtqueue_add_packed(struct vring_v= irtqueue *vq, id =3D vq->free_head; BUG_ON(id =3D=3D vq->packed.vring.num); err =3D virtqueue_add_indirect_packed(vq, sgs, total_sg, out_sgs, - in_sgs, data, premapped, - gfp, id); + in_sgs, data, premapped, gfp, + id, attr); if (err !=3D -ENOMEM) { END_USE(vq); return err; @@ -1679,7 +1685,7 @@ static inline int virtqueue_add_packed(struct vring_v= irtqueue *vq, =20 if (vring_map_one_sg(vq, sg, n < out_sgs ? DMA_TO_DEVICE : DMA_FROM_DEVICE, - &addr, &len, premapped)) + &addr, &len, premapped, attr)) goto unmap_release; =20 flags =3D cpu_to_le16(vq->packed.avail_used_flags | @@ -1772,7 +1778,8 @@ static inline int virtqueue_add_packed_in_order(struc= t vring_virtqueue *vq, void *data, void *ctx, bool premapped, - gfp_t gfp) + gfp_t gfp, + unsigned long attr) { struct vring_packed_desc *desc; struct scatterlist *sg; @@ -1799,7 +1806,8 @@ static inline int virtqueue_add_packed_in_order(struc= t vring_virtqueue *vq, if (virtqueue_use_indirect(vq, total_sg)) { err =3D virtqueue_add_indirect_packed(vq, sgs, total_sg, out_sgs, in_sgs, data, premapped, gfp, - vq->packed.next_avail_idx); + vq->packed.next_avail_idx, + attr); if (err !=3D -ENOMEM) { END_USE(vq); return err; @@ -1838,7 +1846,7 @@ static inline int virtqueue_add_packed_in_order(struc= t vring_virtqueue *vq, =20 if (vring_map_one_sg(vq, sg, n < out_sgs ? DMA_TO_DEVICE : DMA_FROM_DEVICE, - &addr, &len, premapped)) + &addr, &len, premapped, attr)) goto unmap_release; =20 flags |=3D cpu_to_le16(vq->packed.avail_used_flags); @@ -2781,13 +2789,14 @@ static inline int virtqueue_add(struct virtqueue *_= vq, void *data, void *ctx, bool premapped, - gfp_t gfp) + gfp_t gfp, + unsigned long attr) { struct vring_virtqueue *vq =3D to_vvq(_vq); =20 return VIRTQUEUE_CALL(vq, add, sgs, total_sg, out_sgs, in_sgs, data, - ctx, premapped, gfp); + ctx, premapped, gfp, attr); } =20 /** @@ -2825,7 +2834,7 @@ int virtqueue_add_sgs(struct virtqueue *_vq, total_sg++; } return virtqueue_add(_vq, sgs, total_sg, out_sgs, in_sgs, - data, NULL, false, gfp); + data, NULL, false, gfp, 0); } EXPORT_SYMBOL_GPL(virtqueue_add_sgs); =20 @@ -2847,7 +2856,7 @@ int virtqueue_add_outbuf(struct virtqueue *vq, void *data, gfp_t gfp) { - return virtqueue_add(vq, &sg, num, 1, 0, data, NULL, false, gfp); + return virtqueue_add(vq, &sg, num, 1, 0, data, NULL, false, gfp, 0); } EXPORT_SYMBOL_GPL(virtqueue_add_outbuf); =20 @@ -2870,7 +2879,7 @@ int virtqueue_add_outbuf_premapped(struct virtqueue *= vq, void *data, gfp_t gfp) { - return virtqueue_add(vq, &sg, num, 1, 0, data, NULL, true, gfp); + return virtqueue_add(vq, &sg, num, 1, 0, data, NULL, true, gfp, 0); } EXPORT_SYMBOL_GPL(virtqueue_add_outbuf_premapped); =20 @@ -2892,10 +2901,38 @@ int virtqueue_add_inbuf(struct virtqueue *vq, void *data, gfp_t gfp) { - return virtqueue_add(vq, &sg, num, 0, 1, data, NULL, false, gfp); + return virtqueue_add(vq, &sg, num, 0, 1, data, NULL, false, gfp, 0); } EXPORT_SYMBOL_GPL(virtqueue_add_inbuf); =20 +/** + * virtqueue_add_inbuf_cache_clean - expose input buffers with cache clean + * @vq: the struct virtqueue we're talking about. + * @sg: scatterlist (must be well-formed and terminated!) + * @num: the number of entries in @sg writable by other side + * @data: the token identifying the buffer. + * @gfp: how to do memory allocations (if necessary). + * + * Same as virtqueue_add_inbuf but passes DMA_ATTR_CPU_CACHE_CLEAN to indi= cate + * that the CPU will not dirty any cacheline overlapping this buffer while= it + * is available, and to suppress overlapping cacheline warnings in DMA deb= ug + * builds. + * + * Caller must ensure we don't call this with other virtqueue operations + * at the same time (except where noted). + * + * Returns zero or a negative error (ie. ENOSPC, ENOMEM, EIO). + */ +int virtqueue_add_inbuf_cache_clean(struct virtqueue *vq, + struct scatterlist *sg, unsigned int num, + void *data, + gfp_t gfp) +{ + return virtqueue_add(vq, &sg, num, 0, 1, data, NULL, false, gfp, + DMA_ATTR_CPU_CACHE_CLEAN); +} +EXPORT_SYMBOL_GPL(virtqueue_add_inbuf_cache_clean); + /** * virtqueue_add_inbuf_ctx - expose input buffers to other end * @vq: the struct virtqueue we're talking about. @@ -2916,7 +2953,7 @@ int virtqueue_add_inbuf_ctx(struct virtqueue *vq, void *ctx, gfp_t gfp) { - return virtqueue_add(vq, &sg, num, 0, 1, data, ctx, false, gfp); + return virtqueue_add(vq, &sg, num, 0, 1, data, ctx, false, gfp, 0); } EXPORT_SYMBOL_GPL(virtqueue_add_inbuf_ctx); =20 @@ -2941,7 +2978,7 @@ int virtqueue_add_inbuf_premapped(struct virtqueue *v= q, void *ctx, gfp_t gfp) { - return virtqueue_add(vq, &sg, num, 0, 1, data, ctx, true, gfp); + return virtqueue_add(vq, &sg, num, 0, 1, data, ctx, true, gfp, 0); } EXPORT_SYMBOL_GPL(virtqueue_add_inbuf_premapped); =20 diff --git a/include/linux/virtio.h b/include/linux/virtio.h index 3626eb694728..63bb05ece8c5 100644 --- a/include/linux/virtio.h +++ b/include/linux/virtio.h @@ -62,6 +62,11 @@ int virtqueue_add_inbuf(struct virtqueue *vq, void *data, gfp_t gfp); =20 +int virtqueue_add_inbuf_cache_clean(struct virtqueue *vq, + struct scatterlist sg[], unsigned int num, + void *data, + gfp_t gfp); + int virtqueue_add_inbuf_ctx(struct virtqueue *vq, struct scatterlist sg[], unsigned int num, void *data, --=20 MST From nobody Sat Feb 7 17:55:47 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 432E2327C09 for ; Mon, 5 Jan 2026 08:23:25 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767601407; cv=none; b=EWBlGdytaSZTQfhu4wlGuRE6UpwMiMGoNlFYheppwFVI7k64jMuRZkkwa/QK+FyfKNMwvtwZX8oup9M9UIS5CyE2Ut9La9qYH0iyAumqVHeMgeQYdr+KdNydpEx+2/6D9Hd5+iqAPBfxSqzpb3GaYy9lpow6QwB8aTdAIzri0zM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767601407; c=relaxed/simple; bh=UZnbRwVvRPHcRgRCzpxYejrN2eYzh6K3qUvMvD+slXE=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=jyjzvR+24bkTL0Au30B5YlX9PeBfZXqJHIS64Er8Oy/yj/cVMRVf2IzC73Y/pBXDEZGZXhySPBVvLtG3utvPc1aAynxy3lkHj3HE3qaFqpTlDZb4633WdQ1uAafVg77ejqW3m7fl6micAMtbDVbqf0J9ih6uXfl4Z7e83sYyZSs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=Va5i9zMe; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=eVeVMVFL; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="Va5i9zMe"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="eVeVMVFL" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767601404; 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=ixiBJgqmLTQwR4hP1VcNBLxgwUtr+SaYhPMs/HYsyIA=; b=Va5i9zMeMtbcRHGkO3omiS2lnbjK7NHJmRV04pl1aei+cXj/VonDubjoano/21Gzm6DJza NuqsI5jUFDMBOOIBPpcc5KxS9XpfJzugdzZmrvHTih1SwK+tDbSBdheB81od2wtPh6Ji6w llfG0vjl4L4Fd7EkQ7ac2tMIxB6DT/k= Received: from mail-wr1-f69.google.com (mail-wr1-f69.google.com [209.85.221.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-261-T3E0W8iOPC-XW5j3b4a5Fg-1; Mon, 05 Jan 2026 03:23:23 -0500 X-MC-Unique: T3E0W8iOPC-XW5j3b4a5Fg-1 X-Mimecast-MFC-AGG-ID: T3E0W8iOPC-XW5j3b4a5Fg_1767601402 Received: by mail-wr1-f69.google.com with SMTP id ffacd0b85a97d-430fc83f58dso7622692f8f.2 for ; Mon, 05 Jan 2026 00:23:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1767601402; x=1768206202; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=ixiBJgqmLTQwR4hP1VcNBLxgwUtr+SaYhPMs/HYsyIA=; b=eVeVMVFLCc/3+rlgiQ+uX1PuOEip3OVCtfW/FVbq3GmJAX2XPqgSzQu3DI/Sx9Y491 1T7yEOJ+KvzNBcr/zxt4mKErGzWZZWXEi6p1dpNvdFl0loa445T/D3jyFCRSMehYMKyb Izb7utSZY8hYoW9yguzTL9X1LbFZQc/wOUjgQmwsCPNV94gLcNt8TAqV7i0cpZW5VIz5 pijgiyaL/lHySq/iE7pgV8Rp9v2LST+0Fw+KNsciR4l7nP0T4YUq7b2xK1P+6SZEL5aq N51P2VPsKgGYixHYeKCDmFq056ciBxj/kk1E3cSwu12el3grzvjWTjRJI1S+p3GQOPjH qb1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767601402; x=1768206202; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ixiBJgqmLTQwR4hP1VcNBLxgwUtr+SaYhPMs/HYsyIA=; b=oZ7sKck46EWtRjXTM3YELAVEWZ3ATdVJqrCGAI6eo3hcaDUep7au/ppsERe4MzdqS6 jE4ICZlp6XyV5cX1DpRQgLeZi/YyGCtTKXAWdsEVUjRfOCcKqmr4vazNniyFMXi2cYLy 0jwwmbRxcxCAane1djMoaRbEshym+ZcdmrjkMBNUUNv73Rk5m/iq+lFrKxykguNAcfwD EJdPVoe/KwUE5Uq44ZRQ2+8Vvb/JR3AxAzyQDdXf8Vkhx8sb/5chN2ZjUbuZSvwORz6O 27MsCkCBcTFzhPXOcx4H0xSUe2oZw7kuwBZkH+NOWAk+XKaomMejyLNp0xBd6uXQwKAh T6dA== X-Gm-Message-State: AOJu0Yzj09Wd1o7tY7dzju5o0nx/Fon+6gGY/JsIiYRCSQOwyUCD8FjM AgU+R5Hoaht2owFYyJ5IWYie8B4sl0iT8XLHU2yxNN4M7jL9KIV4CKf8WZX6I37akAR1I9jxF/G CIu6giMTpQ/k7hRymm/Fv+T+iNfiSpQXDxCKc/SFqczdWCAAXWXK5uy03uSXoSoM/Pk2OLzngxB T/VwLkXAj+EdMT0gZr66Dq27uusGbmLH68hAmuRFK9EcE= X-Gm-Gg: AY/fxX70C+qhPTcQKc51MS0yqv0jU+phgb5YxtMbE7IkLWnXikbQYFGwEDuDv+QH3D5 6J/dJjPUGkBv04eruey1Kq9qPRyRnHGON6AG0asytRi5UwFXZyPFxjPFvhZ1E+oICysYnz19gJr LWTzuL/lGW7WI8WXXUO/S1DkyrwdEDA8Ql9omMNYdpeksXqkJvWifBr7qc6aTSY3Qb2fXCoNnof eQ/UgAkXgcJvo++vuUYFYJ8vbgJl3G6yCUXvlrWh9KPmO32upE1+H9Zwc7IjatlNjJ7cCwFzHoS YyBiLnrSgLTRO41Wq5KUv3FFr06/aEyt/Lh5t3sDwvTnLzRE687Ju0GraB+qcv9BBtwuqD+DwTg JrImOuPQJZW0cBX4D/+rxzt7jGM89LwSDzg== X-Received: by 2002:a05:6000:220b:b0:430:fbce:f382 with SMTP id ffacd0b85a97d-4324e4d04d4mr58561469f8f.25.1767601401742; Mon, 05 Jan 2026 00:23:21 -0800 (PST) X-Google-Smtp-Source: AGHT+IGx1Nl8KRgrNe9z8PJkEy+oAdnaqu11UpBKN0xrzW8x/NIJB12I9Y53VIEzJyG5l7t+8XCSPQ== X-Received: by 2002:a05:6000:220b:b0:430:fbce:f382 with SMTP id ffacd0b85a97d-4324e4d04d4mr58561401f8f.25.1767601401124; Mon, 05 Jan 2026 00:23:21 -0800 (PST) Received: from redhat.com (IGLD-80-230-31-118.inter.net.il. [80.230.31.118]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eaa4749sm100730503f8f.37.2026.01.05.00.23.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 00:23:20 -0800 (PST) Date: Mon, 5 Jan 2026 03:23:17 -0500 From: "Michael S. Tsirkin" To: linux-kernel@vger.kernel.org Cc: Cong Wang , Jonathan Corbet , Olivia Mackall , Herbert Xu , Jason Wang , Paolo Bonzini , Stefan Hajnoczi , Eugenio =?utf-8?B?UMOpcmV6?= , "James E.J. Bottomley" , "Martin K. Petersen" , Gerd Hoffmann , Xuan Zhuo , Marek Szyprowski , Robin Murphy , Stefano Garzarella , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Petr Tesarik , Leon Romanovsky , Jason Gunthorpe , Bartosz Golaszewski , linux-doc@vger.kernel.org, linux-crypto@vger.kernel.org, virtualization@lists.linux.dev, linux-scsi@vger.kernel.org, iommu@lists.linux.dev, kvm@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH v2 07/15] vsock/virtio: fix DMA alignment for event_list Message-ID: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" On non-cache-coherent platforms, when a structure contains a buffer used for DMA alongside fields that the CPU writes to, cacheline sharing can cause data corruption. The event_list array is used for DMA_FROM_DEVICE operations via virtqueue_add_inbuf(). The adjacent event_run and guest_cid fields are written by the CPU while the buffer is available, so mapped for the device. If these share cachelines with event_list, CPU writes can corrupt DMA data. Add __dma_from_device_group_begin()/end() annotations to ensure event_list is isolated in its own cachelines. Signed-off-by: Michael S. Tsirkin Acked-by: Stefano Garzarella --- net/vmw_vsock/virtio_transport.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/net/vmw_vsock/virtio_transport.c b/net/vmw_vsock/virtio_transp= ort.c index 8c867023a2e5..bb94baadfd8b 100644 --- a/net/vmw_vsock/virtio_transport.c +++ b/net/vmw_vsock/virtio_transport.c @@ -17,6 +17,7 @@ #include #include #include +#include #include #include #include @@ -59,8 +60,9 @@ struct virtio_vsock { */ struct mutex event_lock; bool event_run; + __dma_from_device_group_begin(); struct virtio_vsock_event event_list[8]; - + __dma_from_device_group_end(); u32 guest_cid; bool seqpacket_allow; =20 --=20 MST From nobody Sat Feb 7 17:55:47 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6C967327C16 for ; Mon, 5 Jan 2026 08:23:29 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767601414; cv=none; b=AwWf8wNjwxAAlGC0gb2BxK5VPHygFfEcqF8PTMs//+rcZajWcDGVuntdAab7BWT8FsFCAnsR/QRC63QXXL6u+uEM1CS2rfYbUi/WRbir2yKUnHa4HboiDSfYsdBNW2q9b+95/mUWiMxnr25dBE00f/zGIsRRBnR0SZ8E3Q3zl+I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767601414; c=relaxed/simple; bh=m98JsLLlZnpLuynLg3Syt9uCZ7QvI0/Lv10M2IDOLnc=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=k8PoWHfjx9tPiHeQVKxyDES+LxzFNFh/y6mmzsSurKTxOYlNSxdux9HS4zCOqqcQqITpemSQ3z4x3Gg1YIpREKmxvlpginIyKK3v6c6pFV40HC4e8/gtmIMmkEuCBJ3d0NOwGN0CS1Q+Q9EIBwxvOlfucwHGvwZZcQY43tO8wrk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=cYx6RUs6; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=HNFt2K4n; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="cYx6RUs6"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="HNFt2K4n" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767601408; 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=I9g6na9OJuiciu3rQw6J7JsbFxwpCGTH1jubl50jggg=; b=cYx6RUs6goTCeNY6aVjYx4YQS+ptNWYGgTbCMRXb5PRiY2lkA1apxrYhN0AxiumV7LBBBx FmJcuAkjj68Rrek1YWBGWyn+h/uK9jApFFWVtLwi6OLNalnuM3UW6EYKXmtWaCokZXoNDf Di1SYtL7U0HIk1/BBsvLv38zbHZtl+I= Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-639-JNJgcR2KM969Ll1HSznHUA-1; Mon, 05 Jan 2026 03:23:27 -0500 X-MC-Unique: JNJgcR2KM969Ll1HSznHUA-1 X-Mimecast-MFC-AGG-ID: JNJgcR2KM969Ll1HSznHUA_1767601406 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-477b8a667bcso184534065e9.2 for ; Mon, 05 Jan 2026 00:23:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1767601406; x=1768206206; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=I9g6na9OJuiciu3rQw6J7JsbFxwpCGTH1jubl50jggg=; b=HNFt2K4nrKwtmV5zxL9p1IDWtYF6/CRC55HJdhLX6m3fggaCCbMmekZDKVQeGoSITW RZZgbEGUcgdzte4iaGro3BeuE0f77uJN9NyA8u5GtVYMabjpU+1BX3VFPthMgKY5WqaA lgIg880J3bPrGGeXDaTu7uxcjT55B6xlWG0BgjSQuQiHROeKazcumFp1r1J1O5O8K7sF 0jOXhX4tytfpcSJjWoSK1vKehMyplHa4NJ4RsoPN2fhXS8AiOehW+KOCcZkBVWeQ3iMb 86CMUlvBfaedLWcxKcEEUvjEb5CgXx9M95W6GgTz50qJ8vaUwJXnr6cM4sHTdH2HFzbl 3pow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767601406; x=1768206206; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=I9g6na9OJuiciu3rQw6J7JsbFxwpCGTH1jubl50jggg=; b=Gy9ljy4XwJzILBg43OHOVndq6jep7Zjxv9icOnkqshINQp/3Uy03z0KDkO9ot95eMN wbqI0LHurv2kDM3/HWLhLjBeFuIEddp4bGWPpEXqoyeFE+fiRbGr7rY4l4LrKsQsflnj fwGqa9Vtd9UkHWPud9Uz2NObjCFU2YWPaL7O6oTpMhW67K7dFF2V2p3/9eCffJe//ZdJ 2auBmHqKoE0hta9LoL/dKchh/tPodHpptU4wOJwVciub2nBcK8k9CP1LAP7piLzGKZ/f 2wlkiFNxfoAjE7GVssyxKoVdnnLI0EZ0GctUFQ8Up3BnCvlRlszHARejtnfVlxnkn0wX BJGQ== X-Gm-Message-State: AOJu0YwsnoN5G4ols32XO4wOTni9Tmb+vMc7MiAbEKG9FcZGweD+vpFS d/+7+JoSa7FeXrmY1T5Q69HzhkDXpsJyUqVUDQRQhQgG9S4heWPgSZgo2zYdD5t9e9mbljWS0lJ KXecoAJJS3CoB/8Sey248K1thYe2qGkEstApP9hJL0U3ZeH19LorB3HDNJmtt65bQB1fkPiseAL auqr7i0EqtdlThDio4bz2ZNIOUM1ydMXOFutsJGc/NcHM= X-Gm-Gg: AY/fxX41TzyeuLDe4bTFSPJNIlrIJuFUUheBFdNkuO9+MtRngSqvCWplkiazBoajdUB uDf5VpDiKzAL82ltra01oSQE3y4fQqW23+mrl8A/m3k+MsJ/VHysF0yJiLHzMaSfUmZ+u0OuMrf 2tgLMaE1FVutSaVIkzUB3gEd6oDPH/etosdE17y5WTAOoaR2A5hjWVAt7Pq8CZ+X6H6RMLmfMa7 3LqcL03FR4RlIRtnhNlWBkUKfxzoRmAXqT8yEALv4vxFAJpFLu2E5Z616E6XD11Dde5DVxMIJEx 3yKa6F/F8IUKUdSyXIE9PXvarZnpfPfil/D74UuohnFnlWOHQ4L3yQ01h6gLnQYi3WEEEzFHqPM jSyI2aheLq8OSzgDqyTOjyxlHldpP7+UlEA== X-Received: by 2002:a05:600c:4446:b0:475:e007:bae0 with SMTP id 5b1f17b1804b1-47d1956f896mr633168735e9.16.1767601405763; Mon, 05 Jan 2026 00:23:25 -0800 (PST) X-Google-Smtp-Source: AGHT+IGv7DIcbBq1VkvqQ23EJm44n2GxyGgRTRuTvRGBj8avn63Zc8/z+R9wImAFB24DC8Gpann5cw== X-Received: by 2002:a05:600c:4446:b0:475:e007:bae0 with SMTP id 5b1f17b1804b1-47d1956f896mr633168065e9.16.1767601405201; Mon, 05 Jan 2026 00:23:25 -0800 (PST) Received: from redhat.com (IGLD-80-230-31-118.inter.net.il. [80.230.31.118]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d6c08f56dsm51171265e9.9.2026.01.05.00.23.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 00:23:24 -0800 (PST) Date: Mon, 5 Jan 2026 03:23:21 -0500 From: "Michael S. Tsirkin" To: linux-kernel@vger.kernel.org Cc: Cong Wang , Jonathan Corbet , Olivia Mackall , Herbert Xu , Jason Wang , Paolo Bonzini , Stefan Hajnoczi , Eugenio =?utf-8?B?UMOpcmV6?= , "James E.J. Bottomley" , "Martin K. Petersen" , Gerd Hoffmann , Xuan Zhuo , Marek Szyprowski , Robin Murphy , Stefano Garzarella , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Petr Tesarik , Leon Romanovsky , Jason Gunthorpe , Bartosz Golaszewski , linux-doc@vger.kernel.org, linux-crypto@vger.kernel.org, virtualization@lists.linux.dev, linux-scsi@vger.kernel.org, iommu@lists.linux.dev, kvm@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH v2 08/15] vsock/virtio: use virtqueue_add_inbuf_cache_clean for events Message-ID: <4b5bf63a7ebb782d87f643466b3669df567c9fe1.1767601130.git.mst@redhat.com> References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The event_list array contains 8 small (4-byte) events that share cachelines with each other. When CONFIG_DMA_API_DEBUG is enabled, this can trigger warnings about overlapping DMA mappings within the same cacheline. The previous patch isolated event_list in its own cache lines so the warnings are spurious. Use virtqueue_add_inbuf_cache_clean() to indicate that the CPU does not write into these fields, suppressing the warnings. Reported-by: Cong Wang Signed-off-by: Michael S. Tsirkin Acked-by: Stefano Garzarella --- net/vmw_vsock/virtio_transport.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/net/vmw_vsock/virtio_transport.c b/net/vmw_vsock/virtio_transp= ort.c index bb94baadfd8b..ef983c36cb66 100644 --- a/net/vmw_vsock/virtio_transport.c +++ b/net/vmw_vsock/virtio_transport.c @@ -392,7 +392,7 @@ static int virtio_vsock_event_fill_one(struct virtio_vs= ock *vsock, =20 sg_init_one(&sg, event, sizeof(*event)); =20 - return virtqueue_add_inbuf(vq, &sg, 1, event, GFP_KERNEL); + return virtqueue_add_inbuf_cache_clean(vq, &sg, 1, event, GFP_KERNEL); } =20 /* event_lock must be held */ --=20 MST From nobody Sat Feb 7 17:55:47 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 818DC328B7B for ; Mon, 5 Jan 2026 08:23:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767601415; cv=none; b=YKC5T02ZmAm3j7FSWd5R3t6ComcWu8r+uyxTdtBy8E1E0ZPCsAK5aauvzyK0NlG0x/tWc8e6HJsmVlGrSmIb4aLa6R7YuMO5fzSVW6jzEjgNIkRBg8tgrmFQZnchdDzPqLMEQm1vwjCj3HqCTzeQRpkbV7wwn2mRaZf3H17zsAY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767601415; c=relaxed/simple; bh=yZFREYe+kB50ig8I4QfoDGYH7fn5mVvqsTw8oxG1/Z4=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=j0nmFxhPa+2zW7gjlkRudX7T+ezh0Rgk2bbLSOZKj6N4PxxTP51/TbSiQY/UTCGd7XNXJUQwwP+SvXou96NEL/mjVhXkYjCZBw4aK/6kKWPublkjqoHA8VbXMEFvOozw86yJ2ehhTiGwGkd+rL/a769IbYPExpe2+Uu7K06xXHY= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=ZGXcGOjm; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=VSedA9+j; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="ZGXcGOjm"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="VSedA9+j" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767601412; 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=WFAlf3bglsAJtkYzmv+ft5xqaztKYGlID1/+YOBMr0o=; b=ZGXcGOjmLeGWkx/FvHO8OG4Ix2VK+O/U+h6lTSg+bUIDJIqrYivt3bKmKOd78wkGT14jKq cJ+MU6jtIuvVOCQJ60me7U3zrveQ8w38odAw7T8//11WcJLnkd+M8QMUN1u2LMug7PmCAL 2SHcXDsZ+3ve3JPQJLxFe+CgDnoUww4= Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-590-m6xdOaUuODeHLwhRmyWtIA-1; Mon, 05 Jan 2026 03:23:31 -0500 X-MC-Unique: m6xdOaUuODeHLwhRmyWtIA-1 X-Mimecast-MFC-AGG-ID: m6xdOaUuODeHLwhRmyWtIA_1767601410 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-477563e531cso92454815e9.1 for ; Mon, 05 Jan 2026 00:23:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1767601410; x=1768206210; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=WFAlf3bglsAJtkYzmv+ft5xqaztKYGlID1/+YOBMr0o=; b=VSedA9+ja2FTp8IoxLUxq0aSqa1LwDV4tzwNCp5F6MSwMJyOnvsa/K2heCVasO9ZWV rrTQOu7YszuzeDE/YJpX6VJwZum44lPefE8NIAFZcKe76u9syyUpXysKWSyOtgIZ6dIc +2L5229cl0iX/Y2C2g+yCHTR8+/gmxJXJBNg3vRHLafmVtUtK59plCFDtHfjv8P/ZbQ2 ZiuxejY37hgQBuORqrdCKcd2dklqBXjdGtEg8Zskgtd9tu20fr/cpCLNjyLRRDdD1210 clztZNEy64Jf+eRdAvEauBlYprmw0w6tdGQmTsQojJUF4TrRDLXsXQrg6ThLhbWcXDrn oMAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767601410; x=1768206210; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=WFAlf3bglsAJtkYzmv+ft5xqaztKYGlID1/+YOBMr0o=; b=fXUSdjXpHujVW3Lzbd8tO3nipUb86etHxFXEzzUwRWiCkJQlCqKt8qWeQgp1dStzId qAsclber7dqASd7valiOnN8viIvonioyGSVvxw4ubVTbtvTUPxOH9pIxWmKH1VRc5EZ7 YZ/qQwaooWrPCkSEfrd71DxTcIKAwAbGjF4WR+RsspeKGdkHqfdI9IujOiPlv96tzPzJ Whh4/CoB+Ak72m6Xy8dK9j9gi9Z9prcjnRnvFtzoBjejiqzQA5tUv0zMq40k3LEx0rCP iWLFe2DQ80ZBBYs1VmfauHvbs/DZ58WKaXGRsXngvaTFOHwdV1BvqM2HQ4a2UYrVo5+Z uJwQ== X-Gm-Message-State: AOJu0YyXlhaYy6rzhf5hb62iNRLAWAVUqBw10fIwHCtohftFTAu87Y8I gQADEGSyTTpmQse5He/pnN/MsVCxnV7Z7aIwL/SyP0lcf5RsJBVEww5bdVbcewbqy4kzj4ChK6H qwk5cIWJo/AEFp2SgqvqwqPdtljCzBTM8kZBM9/r6enUSHMSholKL2xXuKqmYRkxbokOGSE5FzW N/Sr7moJoZ/idkCCPyxGOnt+XHl/OuFpdpm46tAnJSVf0= X-Gm-Gg: AY/fxX4bDdfDM0IVaWlLaAxIVyBkRn1TIC4eUu1M98tmhrxpnwuPo9sE/WSBeJAnakR y8NGb2pB7tgvoYNs1ZU2pn/jMbY2GPGMMjx+NVfa1YXXmLrLl6VwDZo436GgQDszdqBmwuc0o5Q 8bxeewbjsBR4vFuLUcYCm0uV6NQVkrOQ1Ny9l94bcjtq3QgSKH9XKx8xZHv5zV4+cqeM0MTjyQ7 dy8/oAvEWlXRWxpwCTJ9A02lBVbJWXi7P7bMIgeSuDVYGevmtL5CCRrrmqSPUcfY28FaHHSVaKd 6X4b6bBw+UMdSKXYg8hKN8pJcyG6KyTl5i8qF9x9x5wreu5Wl5osnUuoonpmQf4pgzFGpkwJFWt jpwbIUI9WRFuantCo+Vz7VPBH5wSHqK/IxQ== X-Received: by 2002:a05:600c:4fd4:b0:46e:4a13:e6c6 with SMTP id 5b1f17b1804b1-47d1958a43fmr573308645e9.19.1767601409632; Mon, 05 Jan 2026 00:23:29 -0800 (PST) X-Google-Smtp-Source: AGHT+IFwNUq77RyeyS0obHX/fGtVMqKrfm8Lk7lx8bL3zrRbRdvbJ0vPOnUhK5sFwtMU1HFVUtXhCA== X-Received: by 2002:a05:600c:4fd4:b0:46e:4a13:e6c6 with SMTP id 5b1f17b1804b1-47d1958a43fmr573308005e9.19.1767601409047; Mon, 05 Jan 2026 00:23:29 -0800 (PST) Received: from redhat.com (IGLD-80-230-31-118.inter.net.il. [80.230.31.118]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d6d145162sm142697615e9.4.2026.01.05.00.23.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 00:23:28 -0800 (PST) Date: Mon, 5 Jan 2026 03:23:25 -0500 From: "Michael S. Tsirkin" To: linux-kernel@vger.kernel.org Cc: Cong Wang , Jonathan Corbet , Olivia Mackall , Herbert Xu , Jason Wang , Paolo Bonzini , Stefan Hajnoczi , Eugenio =?utf-8?B?UMOpcmV6?= , "James E.J. Bottomley" , "Martin K. Petersen" , Gerd Hoffmann , Xuan Zhuo , Marek Szyprowski , Robin Murphy , Stefano Garzarella , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Petr Tesarik , Leon Romanovsky , Jason Gunthorpe , Bartosz Golaszewski , linux-doc@vger.kernel.org, linux-crypto@vger.kernel.org, virtualization@lists.linux.dev, linux-scsi@vger.kernel.org, iommu@lists.linux.dev, kvm@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH v2 09/15] virtio_input: fix DMA alignment for evts Message-ID: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" On non-cache-coherent platforms, when a structure contains a buffer used for DMA alongside fields that the CPU writes to, cacheline sharing can cause data corruption. The evts array is used for DMA_FROM_DEVICE operations via virtqueue_add_inbuf(). The adjacent lock and ready fields are written by the CPU during normal operation. If these share cachelines with evts, CPU writes can corrupt DMA data. Add __dma_from_device_group_begin()/end() annotations to ensure evts is isolated in its own cachelines. Signed-off-by: Michael S. Tsirkin --- drivers/virtio/virtio_input.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/virtio/virtio_input.c b/drivers/virtio/virtio_input.c index d0728285b6ce..9f13de1f1d77 100644 --- a/drivers/virtio/virtio_input.c +++ b/drivers/virtio/virtio_input.c @@ -4,6 +4,7 @@ #include #include #include +#include =20 #include #include @@ -16,7 +17,9 @@ struct virtio_input { char serial[64]; char phys[64]; struct virtqueue *evt, *sts; + __dma_from_device_group_begin(); struct virtio_input_event evts[64]; + __dma_from_device_group_end(); spinlock_t lock; bool ready; }; --=20 MST From nobody Sat Feb 7 17:55:47 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5DC39314B82 for ; Mon, 5 Jan 2026 08:23:37 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767601419; cv=none; b=to3jS0OVoE3PfdjPwTIpj5wBxxZy7eXxOBYKloBM1H4bdPb9WPSQ+Tum4Hi3AOwMTrf59PaghFrHd/aDUyCZfu58rQwyUAP1AMQo1mVFTE3++NDBITE3ZAc5IntOFw923TTBKUAP3QoaQdR2QMLarA/qKXaNpMiQcQw0pNlcTpI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767601419; c=relaxed/simple; bh=S9cU9rMSKLAHqC3C9VUi030/VnGNztyhDP4UPj+0Vaw=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=Wn6qvEzz+1TokJ2qqAX0a/aLxzaYwS84+/aSlVD4Zh14fEtmrh26XnhHlk/mxUnQDAHSYavkw6RMQ/4TQOau9rmZ3Aunc+BKt5H0VRfHOlE4u/t2IXniBBibKhlFlN/QaudTNQfCQ7K2bRUrgZEkM4av1zSytp/N+/y9a7IK6/g= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=fail smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=DObQ1Wju; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=nkGj46o3; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="DObQ1Wju"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="nkGj46o3" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767601416; 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=TvLvTQPEJKAtkqGovGo2GHeF0+EOLKvEuwFpv+PiquM=; b=DObQ1WjuRpWScNuAi70c6Z3ZI7/IJ6pT2ZpVxF3/1L61WkR06wT1jZm/Gqxd7H+oKYbLNX OA65CF2Vm33IyQKdUPGB7kbjn3c7f3yB7w4gU1Y0PGrJxnL72+8bMin9bLRtuiGjYPf09j SQP1SEuKoIw7EFLI1a/9i3QfoFU5eKA= Received: from mail-wr1-f72.google.com (mail-wr1-f72.google.com [209.85.221.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-350-kecV3dHjN6acZljo_2geTw-1; Mon, 05 Jan 2026 03:23:35 -0500 X-MC-Unique: kecV3dHjN6acZljo_2geTw-1 X-Mimecast-MFC-AGG-ID: kecV3dHjN6acZljo_2geTw_1767601414 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-431026b6252so12388483f8f.1 for ; Mon, 05 Jan 2026 00:23:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1767601414; x=1768206214; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=TvLvTQPEJKAtkqGovGo2GHeF0+EOLKvEuwFpv+PiquM=; b=nkGj46o3hq4C07bUT18o22UMSLLMiYkVF7R1oYX4y5U0eeN/5Vgd6QhNTISSSZxe+v P9WcXaPJZrw82sUU/TfbnyAdg4tQVaX+M2bDcMath0txP7gVBjTWQtSrfrIP/JTm68iY UIcl7EWPk0EpWnmRTubIpsDFCl1CwcI/PS1DifZz7NHho2GyviuSIzD39neA+q5SqSN5 puGBuASeW0KLGqLZLbJEe4RauywB9z9a7FdyiCWUuNpqvW6+Ih/J7J0m2Y/gpNsLs5ao 5aLWPmbxNDCqVXWndT4Tfi2zCqT7I/9b6kcBfbzM989YqFe2R/Ec0PgXJwm3xvzC/xZ7 CD8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767601414; x=1768206214; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=TvLvTQPEJKAtkqGovGo2GHeF0+EOLKvEuwFpv+PiquM=; b=kuhwUtkDVx3XhWHblr33EeXU6FqYgmeMQcFXrDF9dIC3bGkjdgBquRbg+vb7pwkhQt Z8SGCDeLe8AVM/7hI8jRZB6niYHt4GyhYzoKUzeY8y7l1npKXRONCgoMNKWFi4aC/qSp qffVaB2VdrDQCfqZf6vWefZKJbu9LVtrEhZ/HwbyI/ykDlH7F0C5ugLbJau/BmM+yekC BgB7xh8VfoQVv++3ty3HJ3Q32D8D9ljvoBOm8/T57M3TcNM5pXM2Zkx5oSshhM/x/ZBp KJOQOzd7d7weXUE7zjtyGt1X9RSxLP5mKkWOJy4SWasi1/63liXyI42Gio9UgYLizgLU zYVg== X-Gm-Message-State: AOJu0Yx3ussnluKFvaAWD64733+1psiBzUSE4MWUYJvHP9fhh4d6U1qS x2exTJAlYHmjGY+sKh6PjaY/Opg11hxqMQYQraUMYS6mVsdsdJnA5cMki1zWX4QJzeF5tnJG5WD MD4Hup8dgsDrZflvxtXg/8UL3ah3/StH5BkwBYTScdFAptJ+vNB5/aPPDNkte71Z3OVBd24nChb gZ6PKQu8LPpXP4PUfoMO73DOdvnRYteZjsNhju+jpLAl8= X-Gm-Gg: AY/fxX5tAm7iBzyAmvX8dtswOzzHaAzFK+sfIvz2N82DkrXKqAzv6PsUSmvkJmmkc+a J7/k7hnVsAKAoXi7K18jYnTqOPSR4BO7KAbbrUk6P+gw7GukUo5272mRA5zZQhc+qmPjPxxc/id NbRA/DBx8/B+d4wvhO4pURqcaPKJVT/MDwdootJQvOG8zibf7Ij42A0ElhrIZBSztQ+23tBUQXd I/x6qWKRNcm0l09MPn6T0WCJs4M+1VkiEsU/0sK1IoNBBQjfKXdmhC4XXC3mNgtsYzAWKbOXXlg jpdelw8c7d7Fq3BwofBTXOoaLyCEbQ6NGEN9SUFmXwHgFQu8YmpOMB1ykWVHlDjUnIqve70rxFD V/dbwHHNC5GHx4BrVEJLJkqiz3VHinbwDWg== X-Received: by 2002:adf:eb04:0:b0:432:84ef:841f with SMTP id ffacd0b85a97d-43284ef8d0cmr31362913f8f.38.1767601413570; Mon, 05 Jan 2026 00:23:33 -0800 (PST) X-Google-Smtp-Source: AGHT+IFx7eWbROO38mdjmsXsZ8eTRhzoo1KnfbPFeP9XiXzVU5+PKMGQRYrz1a7izR0YG2kvu7gW1Q== X-Received: by 2002:adf:eb04:0:b0:432:84ef:841f with SMTP id ffacd0b85a97d-43284ef8d0cmr31362856f8f.38.1767601412963; Mon, 05 Jan 2026 00:23:32 -0800 (PST) Received: from redhat.com (IGLD-80-230-31-118.inter.net.il. [80.230.31.118]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eaa2beasm98160481f8f.33.2026.01.05.00.23.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 00:23:32 -0800 (PST) Date: Mon, 5 Jan 2026 03:23:29 -0500 From: "Michael S. Tsirkin" To: linux-kernel@vger.kernel.org Cc: Cong Wang , Jonathan Corbet , Olivia Mackall , Herbert Xu , Jason Wang , Paolo Bonzini , Stefan Hajnoczi , Eugenio =?utf-8?B?UMOpcmV6?= , "James E.J. Bottomley" , "Martin K. Petersen" , Gerd Hoffmann , Xuan Zhuo , Marek Szyprowski , Robin Murphy , Stefano Garzarella , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Petr Tesarik , Leon Romanovsky , Jason Gunthorpe , Bartosz Golaszewski , linux-doc@vger.kernel.org, linux-crypto@vger.kernel.org, virtualization@lists.linux.dev, linux-scsi@vger.kernel.org, iommu@lists.linux.dev, kvm@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH v2 10/15] virtio_scsi: fix DMA cacheline issues for events Message-ID: <8801aeef7576a155299f19b6887682dd3a272aba.1767601130.git.mst@redhat.com> References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Current struct virtio_scsi_event_node layout has two problems: The event (DMA_FROM_DEVICE) and work (CPU-written via INIT_WORK/queue_work) fields share a cacheline. On non-cache-coherent platforms, CPU writes to work can corrupt device-written event data. If ARCH_DMA_MINALIGN is large enough, the 8 events in event_list share cachelines, triggering CONFIG_DMA_API_DEBUG warnings. Fix the corruption by moving event buffers to a separate array and aligning using __dma_from_device_group_begin()/end(). Suppress the (now spurious) DMA debug warnings using virtqueue_add_inbuf_cache_clean(). Signed-off-by: Michael S. Tsirkin Reviewed-by: Stefan Hajnoczi --- drivers/scsi/virtio_scsi.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/drivers/scsi/virtio_scsi.c b/drivers/scsi/virtio_scsi.c index 96a69edddbe5..6ff53fc8adb0 100644 --- a/drivers/scsi/virtio_scsi.c +++ b/drivers/scsi/virtio_scsi.c @@ -29,6 +29,7 @@ #include #include #include +#include =20 #include "sd.h" =20 @@ -61,7 +62,7 @@ struct virtio_scsi_cmd { =20 struct virtio_scsi_event_node { struct virtio_scsi *vscsi; - struct virtio_scsi_event event; + struct virtio_scsi_event *event; struct work_struct work; }; =20 @@ -89,6 +90,11 @@ struct virtio_scsi { =20 struct virtio_scsi_vq ctrl_vq; struct virtio_scsi_vq event_vq; + + __dma_from_device_group_begin(); + struct virtio_scsi_event events[VIRTIO_SCSI_EVENT_LEN]; + __dma_from_device_group_end(); + struct virtio_scsi_vq req_vqs[]; }; =20 @@ -237,12 +243,12 @@ static int virtscsi_kick_event(struct virtio_scsi *vs= csi, unsigned long flags; =20 INIT_WORK(&event_node->work, virtscsi_handle_event); - sg_init_one(&sg, &event_node->event, sizeof(struct virtio_scsi_event)); + sg_init_one(&sg, event_node->event, sizeof(struct virtio_scsi_event)); =20 spin_lock_irqsave(&vscsi->event_vq.vq_lock, flags); =20 - err =3D virtqueue_add_inbuf(vscsi->event_vq.vq, &sg, 1, event_node, - GFP_ATOMIC); + err =3D virtqueue_add_inbuf_cache_clean(vscsi->event_vq.vq, &sg, 1, event= _node, + GFP_ATOMIC); if (!err) virtqueue_kick(vscsi->event_vq.vq); =20 @@ -257,6 +263,7 @@ static int virtscsi_kick_event_all(struct virtio_scsi *= vscsi) =20 for (i =3D 0; i < VIRTIO_SCSI_EVENT_LEN; i++) { vscsi->event_list[i].vscsi =3D vscsi; + vscsi->event_list[i].event =3D &vscsi->events[i]; virtscsi_kick_event(vscsi, &vscsi->event_list[i]); } =20 @@ -380,7 +387,7 @@ static void virtscsi_handle_event(struct work_struct *w= ork) struct virtio_scsi_event_node *event_node =3D container_of(work, struct virtio_scsi_event_node, work); struct virtio_scsi *vscsi =3D event_node->vscsi; - struct virtio_scsi_event *event =3D &event_node->event; + struct virtio_scsi_event *event =3D event_node->event; =20 if (event->event & cpu_to_virtio32(vscsi->vdev, VIRTIO_SCSI_T_EVENTS_MISSED)) { --=20 MST From nobody Sat Feb 7 17:55:47 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id BA9DA32938E for ; Mon, 5 Jan 2026 08:23:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767601422; cv=none; b=gJNgxuKkneXo1s3MafRVhwQXtY80sKD7kj7xAOAwV343rmeIogKDuU6I3ISwdDndVDReymhn3Yp9FCj2pjWxh1us9KZEFw8L4DVOcPe8g0qdT8RTXI5BwJaKz6wv20nSMQkIKcPA5Z73xWTT3O9OuPBHEsYWs/wU3QbPX2FziO8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767601422; c=relaxed/simple; bh=HzYnyY7SZLB21Zw4R22hNRsG3Q5nx5zt5Jv7qf1jNBQ=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=gCQIONfFbGK7xr9yFAZQRZjDm6lC3k7ejtAAGbkw1qqe09nxt5Qy4tiaQNCUgA5Gl1tVBpCP2s+/AVTOs0+29MC8DO++3/W67frye/+qBZcYBDJpsnKMKM2ZgBEkqn+rEJPzsEwjGqKzZOrzuT85eI230cOJpKyuQK3/MQL5aDA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=MgC04sXg; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=I5yswi6H; arc=none smtp.client-ip=170.10.133.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="MgC04sXg"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="I5yswi6H" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767601419; 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=/8txVkwqMRJjWWbc/atl6vQI7/U+u3Ckdz87v1ZTBF4=; b=MgC04sXgf8rO8jgoBcTf5yOx5jIhDb8GlRitaZ/HquEy+iKOs64UIdMxdqvdhpOmTj9yBF 6eHfYOSIzrSABG40Ek7+ncR/kLkToMiUkzW0r0hQe+jGiBO1+n2Jc6oi3cLJT+CznXbyJR cy+XSYVYVMPvbVGf89ZsBHzj4b6E5q4= Received: from mail-wm1-f70.google.com (mail-wm1-f70.google.com [209.85.128.70]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-690-wjtIynUcPpSqPtuiRPOwVA-1; Mon, 05 Jan 2026 03:23:39 -0500 X-MC-Unique: wjtIynUcPpSqPtuiRPOwVA-1 X-Mimecast-MFC-AGG-ID: wjtIynUcPpSqPtuiRPOwVA_1767601418 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-4792bd2c290so135924895e9.1 for ; Mon, 05 Jan 2026 00:23:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1767601417; x=1768206217; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=/8txVkwqMRJjWWbc/atl6vQI7/U+u3Ckdz87v1ZTBF4=; b=I5yswi6HKFYmnvSvPTgX5I5GufkEjc88XVQp3JUswvb1KOQoqFcAzdQNWr4rLb2KtD w6kIV8i8HddwgY5dtR/atqlL0npCMlNrnonS9ZdFWUmUsJNnipDt3dUq/RehUuzNtFKZ x5OW/C5dHDyI9O+FOhKrbHes3aKeeS7QkT69Z91lgPSyaHBGhFQGkpBw1W8/eSTGQ1Mg EDojgVrRxwjobAMfRWdQbWUyMx2jYCWo61MzPIA7KgyJT6RQuzNJiNMJln+XK11k36rs Qq9gn0iPDciYwO3esIO4tkuPZUbpAQyEqyFijEJ8x3C885jkQqOn0Q6CcbSXPpAJ9nhT X19g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767601417; x=1768206217; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=/8txVkwqMRJjWWbc/atl6vQI7/U+u3Ckdz87v1ZTBF4=; b=E31MwV9v4PrgDEQI0GDiC3othXLFxjlOy3s5XgOmU+oO+3B5J9IBO0K63O/Km8U8/M SH3+p2Kk5AihxxEuYtW1RakTV3Jb1mZiZ5FsM6CtApWcXjBtv684Wdw8/Fo6I9ya9Jyf /8kfkhKPF9hAf8pwqUFDdxNy+yKoL4ktWqjlwxWiVYFS5yLZNTVCBY/NryeKnlycBGx7 E6vJN37MZo1gQ6Nzb12r5UlpaGbrQx+bOScn6V22GyIx69s88Sdevmtrx8CdHIRYUA1s UIjkySjigBXlGnnAo4ASBXdGmmIaiiBCKVR4N063IGzmGAxGD/1ZfaUli5NmsIf3dFjM zySA== X-Gm-Message-State: AOJu0YxeDyhpKkaWNPTKMdd4pW0P5BYmOiQemulJvYX7cp3SqWb/A5zW GaswY2H3356iEPhJOhgRwLIgkknskEh7hB5TOlOb5dNBKSYQho0e2mEGL/6jEJ/dx8VY5GPXlOH yKew1eADi00AbInfIvqG8IFAttsFe2FAmuBb5wd1NUJQVSrBBIwmKaRCn+EK/oaJZnkpIl/1S2J c30jDkTpsP5zsIxOwUvx5uOVb9EmXrvsG5ceTI5IUujFg= X-Gm-Gg: AY/fxX7dyrjb5Vqc3JGB/oAgeau4s7NAx8LYFbIasy8tjtMnrQVPbme7AwsQmTaMURI OTRHAKg81VYPMHfrbxxtlyxxlJBWkPLwIlncWXiAGtUpjgyrQnkUwL+RW2OLg8LwPKzblffuWKB lNVn3y8q89tBTEptleM5OUy83/Wox2xACEWAFlgHMVgenuwQC6aoUObqLOrKZxAb7iCKPObGGWQ szvM+maYnpq4r8+fJTJWFc6B7KRz0FziHrH6LhBjvcdKk0Gthi0U0uYg+0usXbOEsgxuRxBbJIf YZ4ddVYeTO3ukHcUcneZ4DnhXnMTcWWMh207DLJF9hWXW8yQbpyE9lvZ4xdk4apkh1/DkyqAsF5 TyGQNakm9S9nNF58lD0UhRJgTrJMLDVWp+A== X-Received: by 2002:a05:600c:858e:b0:46f:c55a:5a8d with SMTP id 5b1f17b1804b1-47d1c629902mr472043525e9.4.1767601417494; Mon, 05 Jan 2026 00:23:37 -0800 (PST) X-Google-Smtp-Source: AGHT+IHVSX2iBXTT4S7tXy0ZYHsUHRdZMVGE7PsYbGyf8OKqSDfiJqG7TGaTn+6DDGk03BIi3LI2pg== X-Received: by 2002:a05:600c:858e:b0:46f:c55a:5a8d with SMTP id 5b1f17b1804b1-47d1c629902mr472043065e9.4.1767601416846; Mon, 05 Jan 2026 00:23:36 -0800 (PST) Received: from redhat.com (IGLD-80-230-31-118.inter.net.il. [80.230.31.118]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d6be6b202sm54210025e9.6.2026.01.05.00.23.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 00:23:36 -0800 (PST) Date: Mon, 5 Jan 2026 03:23:33 -0500 From: "Michael S. Tsirkin" To: linux-kernel@vger.kernel.org Cc: Cong Wang , Jonathan Corbet , Olivia Mackall , Herbert Xu , Jason Wang , Paolo Bonzini , Stefan Hajnoczi , Eugenio =?utf-8?B?UMOpcmV6?= , "James E.J. Bottomley" , "Martin K. Petersen" , Gerd Hoffmann , Xuan Zhuo , Marek Szyprowski , Robin Murphy , Stefano Garzarella , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Petr Tesarik , Leon Romanovsky , Jason Gunthorpe , Bartosz Golaszewski , linux-doc@vger.kernel.org, linux-crypto@vger.kernel.org, virtualization@lists.linux.dev, linux-scsi@vger.kernel.org, iommu@lists.linux.dev, kvm@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH v2 11/15] virtio-rng: fix DMA alignment for data buffer Message-ID: <157a63b6324d1f1307ddd4faa3b62a8b90a79423.1767601130.git.mst@redhat.com> References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The data buffer in struct virtrng_info is used for DMA_FROM_DEVICE via virtqueue_add_inbuf() and shares cachelines with the adjacent CPU-written fields (data_avail, data_idx). The device writing to the DMA buffer and the CPU writing to adjacent fields could corrupt each other's data on non-cache-coherent platforms. Add __dma_from_device_group_begin()/end() annotations to place these in distinct cache lines. Signed-off-by: Michael S. Tsirkin --- drivers/char/hw_random/virtio-rng.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/char/hw_random/virtio-rng.c b/drivers/char/hw_random/v= irtio-rng.c index dd998f4fe4f2..eb80a031c7be 100644 --- a/drivers/char/hw_random/virtio-rng.c +++ b/drivers/char/hw_random/virtio-rng.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include =20 @@ -28,11 +29,13 @@ struct virtrng_info { unsigned int data_avail; unsigned int data_idx; /* minimal size returned by rng_buffer_size() */ + __dma_from_device_group_begin(); #if SMP_CACHE_BYTES < 32 u8 data[32]; #else u8 data[SMP_CACHE_BYTES]; #endif + __dma_from_device_group_end(); }; =20 static void random_recv_done(struct virtqueue *vq) --=20 MST From nobody Sat Feb 7 17:55:47 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 65ED032AAA3 for ; Mon, 5 Jan 2026 08:23:45 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767601427; cv=none; b=CvCtAoBmvqVMpftsLryw2MqsDOPWIAqlUrJyB7FCKMLM20sWC/XZJX7R8+qWCC0dbCOClxrC6QfuzoodeoLJPPhBMKA4oQSnYuhlc3VwGFF1ny1pKQir/SyBVeUJEiVdTQ5jzA9pnGui9VsFWKirazI41FTlvZwfoCPHnTqtD5E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767601427; c=relaxed/simple; bh=aG8SdrVHEUE18T+idL+tMCWXHe6vRndhmeQnti1MW2E=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=q/ndXp6F0WufWTZM/iLyq2EezFN1U9w0yNVbAcod2IAtHvidoh7x50cb4+VUfhfoKWdJi4y8mSAcuW9GkR9UBTncYahDKvHhT5ntech1ApS5horx/Eyb+3RlTMJIr2cBtL5r+IFS2vM+NNLJZ2Umm/ehqdy30vJk4SIelpKNYmk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=IJLOHygn; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=gzj8+3r1; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="IJLOHygn"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="gzj8+3r1" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767601424; 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=1WdygBrbpusefWmIaX+oAwz9bur1qkKHYd3aQzYNeN8=; b=IJLOHygn0jycrG+u+R2SxrrlpafXVcHrKb1JC2w8pPPPiq6z9M882Fus/umMrY5tKWf8A1 c2c/0v7xocDq4o1d18R8L1W5IfUg5RCtcAsMWVq+xvCOQt5sSKnsHDvb9CJHHDCd0fqQtQ BPrSf5x8Yxr5NCkUB6i1nKgtt63QsTw= Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-63-ejLr9FHcNHGfoEPRj2a2yA-1; Mon, 05 Jan 2026 03:23:43 -0500 X-MC-Unique: ejLr9FHcNHGfoEPRj2a2yA-1 X-Mimecast-MFC-AGG-ID: ejLr9FHcNHGfoEPRj2a2yA_1767601422 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-4775d8428e8so117044225e9.0 for ; Mon, 05 Jan 2026 00:23:43 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1767601422; x=1768206222; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=1WdygBrbpusefWmIaX+oAwz9bur1qkKHYd3aQzYNeN8=; b=gzj8+3r1o0cFHAQ7sZymVhJnTPnFxaw9A9PWo+1eUB+fITz0zBpkk7Gog1DH+Y5gTx C5oBNRPdIZE6l4XYxGBRtlc9ZkpeI1LFo0IuvtxLUbghkGjxP7rh+gg7pcgkbgvdp6h2 F1omXaiTwUHKELEBL9PrWIMeYMvvswWmgiDBinTJUcViDLn5p8G7pkcphVbcHSjicmpL 8U6UBQ2N24AVW3VZvP77apOaWZz5K4ARD/MprGTaZBEjiGGAAzXYZxj36rtIdBNj2qvV PutMvcbT5WoxEBVZJ8j2GRbCeunwhkr/Ywqk1TQpyBvwJZ9wIqfvJbKxsce0170fP9b7 XIvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767601422; x=1768206222; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1WdygBrbpusefWmIaX+oAwz9bur1qkKHYd3aQzYNeN8=; b=GZcY8JYRgI/E9TtigVKdxo3JhJbpiQhAK063kpRwuQVP2XCdtWMbBXBilAYbHoHCKU Lqo/TMDN0Cr4LWvCFTTjce9e4ieaiUPkhkI7g3A6vc0F+leY86QSSY7rzIjr647rZ+K1 I1nGt6WRMXM8jzrhP6l7MlGIZHAVTZsx6P8qP85e8tfuAkfRStJ0jNTo2HUrSICpRqiI jiOCxK1UuZ58ghSxsEdBOikijnz8vT7pXtDzPMzwxF5sw0x1ydRXwJ2GiLZWluvsKaZL SDSadJ6Sq3xcBE0WzhdopJv68AnQxP4vKhwci6qcgkY+AXPhPaeFi09qZfdnfaakqTES olCg== X-Gm-Message-State: AOJu0YzcNLsUnPtMjiebIR+Vlswc/DpeFI5RbxQEO5GVaZI32j9TftkH A01PuggTdGBdtq1wGm1KuezuU3/DfSg0OkR+gCkKMym65MWOoDbsFeZKLn2kzfAHcH+2iplYmNL aIPXp8UFibxVzSotydEho7bJFq6wgiC76M4gkUvXmhDhW9Sx9GJLMzemtWLutBzt3y4VQImHsR4 z2NNiReK11dF/2X/CXl+YIIMZHTGvRu0KCGlujEdIyM7Q= X-Gm-Gg: AY/fxX4vkt36yrKdTgLsolsNpZYbxPkj8q+UYEhzHjbJcZWS2fDJ0dKJQwvhcguiYGi cbe1WXC0XwjPxvyseZJoZvKuHY4FnTIcAYC5sdMKyn6V5T9xxj15bGUgVSklY4QWVAvLFsy0LHH MF4JxTdkNCJ7Oj+m8ZmNhRSVPnh+CRVO7NLIHHRSoMdRvTWMupIueSDckK7MEAmYaPd9feDMX9R AE7VQO6M8y+zp4LJTjp5oFMHKyzdkmObGP5wdh4EM9I8oWaC3O46yNbJFJpchC2adXtzbw5bS4S K/sTeUwYwDMJYsPFUKShtYjpw3iQeX5Ekk7u8fp79KFXMbGnQTNgedqLzhwUUJdVX+Ft0vlZtB+ nNVTgyZ0T43iOPAkYNbBLjIphiH8EcB7EmQ== X-Received: by 2002:a05:600c:1e1c:b0:47d:4047:f377 with SMTP id 5b1f17b1804b1-47d4047f3e5mr400615385e9.36.1767601421863; Mon, 05 Jan 2026 00:23:41 -0800 (PST) X-Google-Smtp-Source: AGHT+IG0AgOv9S8mcPvJ16vNEXPXT2v+oy4k5XMxl4opf9hSfJCRKVIgJxqAgfJFXStW11yISqh4Rw== X-Received: by 2002:a05:600c:1e1c:b0:47d:4047:f377 with SMTP id 5b1f17b1804b1-47d4047f3e5mr400614705e9.36.1767601421303; Mon, 05 Jan 2026 00:23:41 -0800 (PST) Received: from redhat.com (IGLD-80-230-31-118.inter.net.il. [80.230.31.118]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d6d33eefesm137323605e9.12.2026.01.05.00.23.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 00:23:40 -0800 (PST) Date: Mon, 5 Jan 2026 03:23:37 -0500 From: "Michael S. Tsirkin" To: linux-kernel@vger.kernel.org Cc: Cong Wang , Jonathan Corbet , Olivia Mackall , Herbert Xu , Jason Wang , Paolo Bonzini , Stefan Hajnoczi , Eugenio =?utf-8?B?UMOpcmV6?= , "James E.J. Bottomley" , "Martin K. Petersen" , Gerd Hoffmann , Xuan Zhuo , Marek Szyprowski , Robin Murphy , Stefano Garzarella , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Petr Tesarik , Leon Romanovsky , Jason Gunthorpe , Bartosz Golaszewski , linux-doc@vger.kernel.org, linux-crypto@vger.kernel.org, virtualization@lists.linux.dev, linux-scsi@vger.kernel.org, iommu@lists.linux.dev, kvm@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH v2 12/15] virtio_input: use virtqueue_add_inbuf_cache_clean for events Message-ID: <4c885b4046323f68cf5cadc7fbfb00216b11dd20.1767601130.git.mst@redhat.com> References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The evts array contains 64 small (8-byte) input events that share cachelines with each other. When CONFIG_DMA_API_DEBUG is enabled, this can trigger warnings about overlapping DMA mappings within the same cacheline. Previous patch isolated the array in its own cachelines, so the warnings are now spurious. Use virtqueue_add_inbuf_cache_clean() to indicate that the CPU does not write into these cache lines, suppressing these warnings. Signed-off-by: Michael S. Tsirkin --- drivers/virtio/virtio_input.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/virtio/virtio_input.c b/drivers/virtio/virtio_input.c index 9f13de1f1d77..74df16677da8 100644 --- a/drivers/virtio/virtio_input.c +++ b/drivers/virtio/virtio_input.c @@ -30,7 +30,7 @@ static void virtinput_queue_evtbuf(struct virtio_input *v= i, struct scatterlist sg[1]; =20 sg_init_one(sg, evtbuf, sizeof(*evtbuf)); - virtqueue_add_inbuf(vi->evt, sg, 1, evtbuf, GFP_ATOMIC); + virtqueue_add_inbuf_cache_clean(vi->evt, sg, 1, evtbuf, GFP_ATOMIC); } =20 static void virtinput_recv_events(struct virtqueue *vq) --=20 MST From nobody Sat Feb 7 17:55:47 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 8CB7A32ABF3 for ; Mon, 5 Jan 2026 08:23:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767601433; cv=none; b=i5Zna1UDA2ZA0MBrDKppjt3j61lTAQt/+4kh3unpQinOxZglHOvM7kXW2ovBAyRnvMIZty3sM3hEvnIFvR5diGqIzqqJpw4wmkGNk5HHAyYj94KQ5RpD+IujJsdtrJMj49a7YG5+xqgHjEOr+Ai6OoVvuNfSTElqj1UrJORwLb8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767601433; c=relaxed/simple; bh=SZ7yoG8PLS6oSz/uClprybkzflRSWBjZBPmgt2pUyWw=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=Y8gWJpuJyt90Lae/JT8zh1s6I+vqg9lueKi4TGJvYygYC8bQNoywTTwHXcHGsqxJQYACLesaiibi1lItj3JLrkx81Trcm7PL7kL6OX2RqjeZOCWAeDqxiF82y573vhQgSbiiCTG/ZP8aeUxOrfCjRirR9A3SWYbi5+x1oOGRcxM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=Io/btUN1; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=qtt1gD9p; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="Io/btUN1"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="qtt1gD9p" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767601428; 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=UCCLeq+lwQP+R3LKzuvNuhkNhAmceABICngBBmDYRE8=; b=Io/btUN14Pz93JGjiSMLn8JU4k3jep6SAudvCUMDNbgMvcAm2YiJl2peavOlnsbE3tNs9W RS3bNAH4RsEwQR5x43TvQxfxwUrHlRmlJ0bniPMQ/RN82e8xmwbFtqQH9OiNWkEoxz9iEz H9Bb+vvTkYL05LQ8Dy1BccJ7DxXDg78= Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-661-Rvv6aGg-O0yPS4uqwhFsaw-1; Mon, 05 Jan 2026 03:23:47 -0500 X-MC-Unique: Rvv6aGg-O0yPS4uqwhFsaw-1 X-Mimecast-MFC-AGG-ID: Rvv6aGg-O0yPS4uqwhFsaw_1767601426 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-47d28e7960fso89214165e9.0 for ; Mon, 05 Jan 2026 00:23:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1767601426; x=1768206226; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=UCCLeq+lwQP+R3LKzuvNuhkNhAmceABICngBBmDYRE8=; b=qtt1gD9poIHpzjauiXtVKb1u88sTn7Wwbfi00HKlGMPnuFWOhzi+vYbAQiA6E+/QOy KHA1rws1YgxHL3D+ZGXGlsplhJBj1Xcxi0JKkOJ4sFAjpsHNb9ZS08H9jbEmcnM7vZnl RK7P3fTatZ/EWpjeFzLDDJoZL+87zOa90w7aj72Had0j0ntALOHFkMwbzOKcchnCq0Av wmwv/ZZjPGhAvvLs19IXb29uwOB3Tm5qZvnBmugl+i6s4BeM6sHQCR5u7Czf5RCGzkYR jHYq07piUzqY53pdXGmmnXX4TXosiZaYUteYthXVUIuM2Fec/06gqy85cfBDx3zAqzHe jckA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767601426; x=1768206226; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=UCCLeq+lwQP+R3LKzuvNuhkNhAmceABICngBBmDYRE8=; b=eeIlT3atYgyfoCK40gR5QZ4k4bO0+5YReeyRME0tg4kwMpn+yq6nPELaJk1O4qEyjh FpLn5LSakS2nDZ9gruxGNIJ+06R+JD7FftErCASRqCd+LqhKp6cPJegJMFZ0o2qg7QKh NUP7M6E5dZ9w68hNQIYVKTHLQBVO6YqeYQ+aJxnTMElM0IHXn5zyi7YkjxbqjK4gct4B cW69fX8eiyqgT7N/sLvqwbTus6BnpEzmRxzRtLdx2L8WemtJfm3YdnotDEfnOlX7MdqS GPxjI00gTzKEzMxvN0GWjH+2j9CuLWfQUYhvLoPmtJ+YK6HOKiKcha7L471ek1g80lhX I5Mw== X-Gm-Message-State: AOJu0YysQvBFZ5E9BFSSi+vSYds4j3Qt25YWGcIK+4gV+KXxY+TSDaKo eMD3AdyUgOAJ9S31qPbixDtUfDyVgGo1xV0x3ROJB9zu6UZGqm81/pFBqEH9bASdeMQKBUbAGC2 seY+Cj5hDDo6FBPWE3E3FSSN48SKS7UJip7CKDCoNKmjEZLYnn7MzxHNhsZKFKo2h4B1ytACHPe DmgFzIhKNxQ/zhyN56n51aZA3PEOcswo2qD949He3zvMI= X-Gm-Gg: AY/fxX7nvXSm5ynm/YGQCvylv4zkwyHgWKGBgoLLiVasPVMrQcN0fb5FwIrR1kguUlX H0bUj9YJ63q4b28HKDiwZaopi9ZBS8FrFXLuCKJgowILSicYV4n/OsbmRzAsgq7LSAwwTDQdPrU tBlUYa3kug/wqfvSYdKD0LbefPafZTj/G3KhgMenceuImJjCIeS9+00jJVbxEtvfjr/2Z+WNeuQ U6AXzRe7OISUbKc65pay9Xf4x8yvC9l7kyH1zFVyfpJtCgtu8M0QbOHXmb9RRqKghOkOgykhPqT D2UDt6rjW0L0tNUzBJalaeOUsdIqCwB0w0utLGvqzogXwhZZjSt6iaTOZU002oH8bQa+W9OBZ3H VUvz37Rm9lXr43DcX8uDRJceVwu3F9rRNEw== X-Received: by 2002:a05:600c:6287:b0:47d:5dae:73b1 with SMTP id 5b1f17b1804b1-47d5dae7628mr228846055e9.23.1767601426009; Mon, 05 Jan 2026 00:23:46 -0800 (PST) X-Google-Smtp-Source: AGHT+IF11RG7JP48/6nhX1x0r6bivcNnxiVBPQ+hub/0+kajaGoE0Knx7g5Xjp0dkxgQjwSwKtknIQ== X-Received: by 2002:a05:600c:6287:b0:47d:5dae:73b1 with SMTP id 5b1f17b1804b1-47d5dae7628mr228845285e9.23.1767601425245; Mon, 05 Jan 2026 00:23:45 -0800 (PST) Received: from redhat.com (IGLD-80-230-31-118.inter.net.il. [80.230.31.118]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324ea830fesm100331450f8f.20.2026.01.05.00.23.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 00:23:44 -0800 (PST) Date: Mon, 5 Jan 2026 03:23:41 -0500 From: "Michael S. Tsirkin" To: linux-kernel@vger.kernel.org Cc: Cong Wang , Jonathan Corbet , Olivia Mackall , Herbert Xu , Jason Wang , Paolo Bonzini , Stefan Hajnoczi , Eugenio =?utf-8?B?UMOpcmV6?= , "James E.J. Bottomley" , "Martin K. Petersen" , Gerd Hoffmann , Xuan Zhuo , Marek Szyprowski , Robin Murphy , Stefano Garzarella , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Petr Tesarik , Leon Romanovsky , Jason Gunthorpe , Bartosz Golaszewski , linux-doc@vger.kernel.org, linux-crypto@vger.kernel.org, virtualization@lists.linux.dev, linux-scsi@vger.kernel.org, iommu@lists.linux.dev, kvm@vger.kernel.org, netdev@vger.kernel.org Subject: [PATCH v2 13/15] vsock/virtio: reorder fields to reduce padding Message-ID: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Reorder struct virtio_vsock fields to place the DMA buffer (event_list) last. This eliminates the padding from aligning the struct size on ARCH_DMA_MINALIGN. Signed-off-by: Michael S. Tsirkin --- net/vmw_vsock/virtio_transport.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/net/vmw_vsock/virtio_transport.c b/net/vmw_vsock/virtio_transp= ort.c index ef983c36cb66..964d25e11858 100644 --- a/net/vmw_vsock/virtio_transport.c +++ b/net/vmw_vsock/virtio_transport.c @@ -60,9 +60,7 @@ struct virtio_vsock { */ struct mutex event_lock; bool event_run; - __dma_from_device_group_begin(); - struct virtio_vsock_event event_list[8]; - __dma_from_device_group_end(); + u32 guest_cid; bool seqpacket_allow; =20 @@ -76,6 +74,10 @@ struct virtio_vsock { */ struct scatterlist *out_sgs[MAX_SKB_FRAGS + 1]; struct scatterlist out_bufs[MAX_SKB_FRAGS + 1]; + + __dma_from_device_group_begin(); + struct virtio_vsock_event event_list[8]; + __dma_from_device_group_end(); }; =20 static u32 virtio_transport_get_local_cid(void) --=20 MST From nobody Sat Feb 7 17:55:47 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7249732AACC for ; Mon, 5 Jan 2026 08:23:54 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767601439; cv=none; b=CCRqFveA0dQrc6t4vcI4zP7R+nMjyNSbULUg4+DPCT9tGGPgTPw3DQyX0PezzOB5qk8bt8MXS49JVxu1nLfup/zm+yTFWl++3DEz07V/KJdJasaqzmFvM4iHRmr4FOhEu45ziZgiybimWNVfDpVlV1KJCU4TbBpG0OLtBGq7n58= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767601439; c=relaxed/simple; bh=5+AqmnW4PA/6edyK6U8dTvigNJLqhC7cXNvV8IIXjTk=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=NkmtQTnV9leA0fmmA+Smti3TV/F+tZPtI5WzHZA8oBhzAWW6R412H452EoTyPACNP3K9uEId6dSg2n8nffaCp7NVSo7NtxdZYsgmlW0zJZcb4xo0zgrwxVDtAS9VEuHYtRo3Iry19ccIVC/G7DeyrM1kV1Z2Nk0dN14OH5rZBXc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=pass smtp.mailfrom=redhat.com; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b=JJQonVME; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=uMRMouiJ; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="JJQonVME"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="uMRMouiJ" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767601432; 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=F5gbCeCGdOPWPA7+HFhpRVcPZoxhZ6OosT4+6pGbwi0=; b=JJQonVMEcOItokzsUwiqnP3io1Vx/zxDy2HJhR7fArK7F+T3OQNYmTlxXz4tM7G93/kDfq n+05vl+jskjAaa+CurAeXka56F8nUW++06U8r1BCBQ0yiI2k1lsNwiEdpuwvYnqwA2HmdF VioRLxFYzzBETrM61V0Wrw1DRHt4XA4= Received: from mail-wm1-f72.google.com (mail-wm1-f72.google.com [209.85.128.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-609-zGoH0mEnOOGnQzQpDsD9Ng-1; Mon, 05 Jan 2026 03:23:51 -0500 X-MC-Unique: zGoH0mEnOOGnQzQpDsD9Ng-1 X-Mimecast-MFC-AGG-ID: zGoH0mEnOOGnQzQpDsD9Ng_1767601430 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-477a11d9e67so88358355e9.2 for ; Mon, 05 Jan 2026 00:23:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1767601430; x=1768206230; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=F5gbCeCGdOPWPA7+HFhpRVcPZoxhZ6OosT4+6pGbwi0=; b=uMRMouiJplEJw0f5B11uiIHSrH3LOhXawBmO9iJbtMCtXnX76GJLVIoCkShGK39nz3 yp/NJ7wiFbxpJw2CqA2z5GllV5j3v4RQodT9PE3uofpmD/LQL4+/+ePrrpw1yinD3uu8 XIxgLJ0DWDIUKFBxq5afHUXbvrWFgjVsEY80bWFw3F61Un3Tpu0pJG5jVHbyKeznPoC1 kivOJYvUuXJZkuX8nyKEn4HczMNlKVdhiVmQXmTptPA1XNeK/R3VbMXt8ZnWptwL4v2a tfGAc6lMpotFue6H+9pQit71eSYmLEbJa+KluiO5wx5Ofeip7XGSq9shXAFsF7BCYI6S 7Wsw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767601430; x=1768206230; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=F5gbCeCGdOPWPA7+HFhpRVcPZoxhZ6OosT4+6pGbwi0=; b=ZBktc268DKBWAcEP7R8yaopEvw9XUltVPvplyxZhMoDGaeTPxqQIrje/SMvHVX/z1a 2dQs3ui5OP8bA31NSsK+lg5zKuV39EGsoPN8cXtN+iE4TGX0gzdy868aOaDUWU4UwUEa eXY40HC6kF4nlWV2cphGnXIi3b88UemIbuTnNdYCIYhBZx3rQaWuasBnUhMbO2G3nPih IXaoHqLpJy7dRK2X0GcLi7MNPNkKQ470/RimtJBJ6tAlMhbXF5LXP4+fSJIUCOTPEa4p jQ+F727GUEelAvjac5T53YRrDAFs7d2pDpEHSMKHKh0Y1w65Ox9Bik3lNR9xK5cuq9Uo 9MEA== X-Gm-Message-State: AOJu0YxJetE2Y418pJEgX8pWf6lV19Z+jyPkziUJNReT5A+7qkehcvQc 9dJiLYcvCols6TFCoC4QhoY4o0OHfPYCoO/ibtlKv02/mf5DFkZwoWJT07b6W9MFR1rRnUHeG2O aEe40akQ8Tjej+cv1uLo8eMHmDoYwCbAODWsgEh63gj+G3h7LJJ9AfMbltIqbpqd1IbXoHG9Tla qbM2Qxa0ucN8vhJrbt5/qhk82FnxCe1DIzP7QsinCdRyw= X-Gm-Gg: AY/fxX5I1zjRKliC9onKkSwGc8ZGDpYayHBdDYqUjkQ9o3dJp+klWLP1aDbakM0sY4/ 5BjxSl31UaJjpVpXBCNCbs5lRtTqLYXZKWKYqsjJlB5xi3XaTKKXx3sNw6ScGBs1lzjYKXXv492 5S5ETAxT96aCkmDDihKD6+sQN00240rsjh3k00+nHBqVoPeKzBALT4upN+n36eBU07WSoBS77Ce zI3D/2ZrlcuYmIGbKMtV1pTO0y6Qpq/IkHoaI3srCryEaq8s0JH7LP94B0ukOFXaVGUvVQk1tLE AlOBYwrXIm9PoT5eF7lOAKZiymIkuNxXCKlBU+bWO48JQBgd81Vhr1SSz2N6n8+L2Vt8s3x85ha 0rWmH8AxkoVP4nBdCeDvdhg4YyvIPMYy3hQ== X-Received: by 2002:a05:600c:45d3:b0:47d:4044:4ada with SMTP id 5b1f17b1804b1-47d40444b44mr461188395e9.13.1767601429901; Mon, 05 Jan 2026 00:23:49 -0800 (PST) X-Google-Smtp-Source: AGHT+IEMwRI3MA2DTNX2WICs7qzlXbxMYmhW2AMGnc8lzpwkl8AC0h1+xs4bbHr0vh3wAjjaNt43Dw== X-Received: by 2002:a05:600c:45d3:b0:47d:4044:4ada with SMTP id 5b1f17b1804b1-47d40444b44mr461187535e9.13.1767601429208; Mon, 05 Jan 2026 00:23:49 -0800 (PST) Received: from redhat.com (IGLD-80-230-31-118.inter.net.il. [80.230.31.118]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-47d6ce21fcdsm154121375e9.0.2026.01.05.00.23.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 00:23:48 -0800 (PST) Date: Mon, 5 Jan 2026 03:23:45 -0500 From: "Michael S. Tsirkin" To: linux-kernel@vger.kernel.org Cc: Cong Wang , Jonathan Corbet , Olivia Mackall , Herbert Xu , Jason Wang , Paolo Bonzini , Stefan Hajnoczi , Eugenio =?utf-8?B?UMOpcmV6?= , "James E.J. Bottomley" , "Martin K. Petersen" , Gerd Hoffmann , Xuan Zhuo , Marek Szyprowski , Robin Murphy , Stefano Garzarella , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Petr Tesarik , Leon Romanovsky , Jason Gunthorpe , Bartosz Golaszewski , linux-doc@vger.kernel.org, linux-crypto@vger.kernel.org, virtualization@lists.linux.dev, linux-scsi@vger.kernel.org, iommu@lists.linux.dev, kvm@vger.kernel.org, netdev@vger.kernel.org, Viresh Kumar , "Enrico Weigelt, metux IT consult" , Viresh Kumar , Linus Walleij , linux-gpio@vger.kernel.org Subject: [PATCH v2 14/15] gpio: virtio: fix DMA alignment Message-ID: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The res and ires buffers in struct virtio_gpio_line and struct vgpio_irq_line respectively are used for DMA_FROM_DEVICE via virtqueue_add_sgs(). However, within these structs, even though these elements are tagged as ____cacheline_aligned, adjacent struct elements can share DMA cachelines on platforms where ARCH_DMA_MINALIGN > L1_CACHE_BYTES (e.g., arm64 with 128-byte DMA alignment but 64-byte cache lines). The existing ____cacheline_aligned annotation aligns to L1_CACHE_BYTES which is not always sufficient for DMA alignment. For example, with L1_CACHE_BYTES =3D 32 and ARCH_DMA_MINALIGN =3D 128 - irq_lines[0].ires at offset 128 - irq_lines[1].type at offset 192 both in same 128-byte DMA cacheline [128-256) When the device writes to irq_lines[0].ires and the CPU concurrently modifies one of irq_lines[1].type/disabled/masked/queued flags, corruption can occur on non-cache-coherent platforms. Fix by using __dma_from_device_group_begin()/end() annotations on the DMA buffers. Drop ____cacheline_aligned - it's not required to isolate request and response, and keeping them would increase the memory cost. Acked-by: Viresh Kumar Signed-off-by: Michael S. Tsirkin Acked-by: Bartosz Golaszewski --- drivers/gpio/gpio-virtio.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/drivers/gpio/gpio-virtio.c b/drivers/gpio/gpio-virtio.c index 17e040991e46..b70294626770 100644 --- a/drivers/gpio/gpio-virtio.c +++ b/drivers/gpio/gpio-virtio.c @@ -10,6 +10,7 @@ */ =20 #include +#include #include #include #include @@ -24,8 +25,11 @@ struct virtio_gpio_line { struct mutex lock; /* Protects line operation */ struct completion completion; - struct virtio_gpio_request req ____cacheline_aligned; - struct virtio_gpio_response res ____cacheline_aligned; + + __dma_from_device_group_begin(); + struct virtio_gpio_request req; + struct virtio_gpio_response res; + __dma_from_device_group_end(); unsigned int rxlen; }; =20 @@ -37,8 +41,10 @@ struct vgpio_irq_line { bool update_pending; bool queue_pending; =20 - struct virtio_gpio_irq_request ireq ____cacheline_aligned; - struct virtio_gpio_irq_response ires ____cacheline_aligned; + __dma_from_device_group_begin(); + struct virtio_gpio_irq_request ireq; + struct virtio_gpio_irq_response ires; + __dma_from_device_group_end(); }; =20 struct virtio_gpio { --=20 MST From nobody Sat Feb 7 17:55:47 2026 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1B2EC32C33E for ; Mon, 5 Jan 2026 08:23:58 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767601444; cv=none; b=Ya5OMnMGFnDZiQyxchMqDAoZZHL5FJrCwzoCuFQI/pC66LP/CW/YeTyFyqw0FMAlhYaJxJgUrBc7NMTc5A4bhpdt0C5UH559NTa11QqtrctVHp95uTn1EeCsZHvr9/3cxdlyR/SmpcfQuU6nD1b9ExpzoQvid5hiZUceymgXAcs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767601444; c=relaxed/simple; bh=jIFi+Zvcrqx5KM1Tn7Vx/X/Ro5vONbP7sNW0Mf3F+ms=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=rTRkDz9+SosMrjn0z+/UbhHSFhRJl9qNU5vv5V0eoNCimlGnF6GwxCP/BKPmBleH9LUNcehjsNwGY9C7n3CYQNsIBDs6NpxkjvSSDK/Zor0oLYsmDyF5/MNIEyefXJZZrn78szHgKQBc6ZW1IgA3dieaCy3MpBxGNXkFcLHkUrA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com; spf=fail smtp.mailfrom=redhat.com; dkim=fail (0-bit key) header.d=redhat.com header.i=@redhat.com header.b=U0EJGw52 reason="key not found in DNS"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=jhuW0fAF; arc=none smtp.client-ip=170.10.129.124 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=redhat.com Authentication-Results: smtp.subspace.kernel.org; dkim=fail reason="key not found in DNS" (0-bit key) header.d=redhat.com header.i=@redhat.com header.b="U0EJGw52"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="jhuW0fAF" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767601436; 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=7Ko5SEulg/0toBKRpZAMNGsguRweEFK2Nvy+yQ/ftdE=; b=U0EJGw525N36TsoWhwIOnHH1npKLZARnTZguj2NX/3prDCcmeRPQbwt+hNfC0WXAQ3xUXf 72jxF5QIZDsJqNjXDrw/4uv/LyZg03zEUPojJb9o56hhsYdQgPliO9LIbaDzxu0dd7svGC fhwmZSYop0+2nnDzQJGqmS6QbD+QSn0= Received: from mail-wm1-f69.google.com (mail-wm1-f69.google.com [209.85.128.69]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-679-aY-pqifLOTiT_SvXf3ZR7Q-1; Mon, 05 Jan 2026 03:23:55 -0500 X-MC-Unique: aY-pqifLOTiT_SvXf3ZR7Q-1 X-Mimecast-MFC-AGG-ID: aY-pqifLOTiT_SvXf3ZR7Q_1767601434 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-47d5bd981c8so36226615e9.0 for ; Mon, 05 Jan 2026 00:23:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1767601434; x=1768206234; darn=vger.kernel.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=7Ko5SEulg/0toBKRpZAMNGsguRweEFK2Nvy+yQ/ftdE=; b=jhuW0fAFKWout8NvzOE75lr0thW/Bvte4Ikr3Ds2O8GTD5vrsS8ZXy/VT74UzpbAlc SkwWcLIGG2nOn2hJ3IOcZWexU19Ly66MFoocUxD3oz4K3yQnN35L6SydRy6k/+YyXyBd yPebtVj0mQhCIVAxVWRptftBXMGxBrm45coShq6icSkrazqS6YFoU488FT0ix7EZbdU0 Tgt3MkO+ClKdAAuJSso08c1qe6N9IhusEsMZYkwbRWP4dwNmx37rNJr4j76KliGNlmwr zxVVw3FkCTqRZ/sC1v8j5gVlPYVLiP9gScBNQgEJyJqfnGaU0TgCBqXdJGQXno4Ef1MY fWAQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767601434; x=1768206234; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-gg:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7Ko5SEulg/0toBKRpZAMNGsguRweEFK2Nvy+yQ/ftdE=; b=stI2/l5a2F46WkFeKxjtgiGFyXuo8f/CR3WSZVSi6Zhm5AdsPSKbJ7EOnUGx7CZsg9 nlCtlFq2w9twP3P/ET7wwfoeT6hHKalYB0xnS7LkNCW9K8Bo1wkvpSvpH6YiR2qdNpcf kaL8vgenH8knwZp4jxPlQOLHRjetcqmMoLJb274pNkzKEnyyduq8fPcShIvvTNcYJ8ta HOrLaZ3ZpUhQZSPU23X6upikta5mZCnCkv813mndIZw6jv6d04tFtqRhGWN9eob/hLao bjcAWMbltWg+2Mo1kC/87h9ZVui9mRApJuR+mzaOY2XAI141Zi7NGudKg+XQsiaujWC+ jFaQ== X-Gm-Message-State: AOJu0YzYYMvUsUgts57sxxigSslIAtfJNT13yyd4E/r4JC2YlW38G/aS GZ9yu5PKO7ugX74VSn9wSg0oXpVbopnAvvPUTq9FQrXf2IjL4HCdYMjjNEs92Q4z9RBikZ4iKNz T9zgJZtNQ8znicEBS41v6uYdTwE/W2ba8tW2z7N830BNrjGn9sJGJxNmVKefDIxQt+diHrbrr2E EOuF70Hnbd42Bj9/nHVJaSTOTPtuu41l0rPPfZxDz/6NU= X-Gm-Gg: AY/fxX4e+5k85Ris04NbEK46D0KJVcmBkhdhW3nILo67a3rvVMu5BZos3oDHr8zLuGi 5iDhveCGs8sJs6Yg4Q9praMuXdLTmW6QQYEUz1KzHS/23oH9i+/dszI3qwPP1RgKqI8jA/GtJBZ APrE8fe/IumkKmV7+49BnZKp3K3h5roQhYKfwO4SKI/Nnsh735ko+6pzk16TFoBYee86Yk0xB/7 MuRxWk2khe/SB3WFNw1LSyOGX7V/W7MfkTuj3DWycqGePSavlNPRmDv8Oy6MdSpVR8Oa4AL8O1u fjnNk27IMpOOoNyyu2n6Bwd2K0cLfPF7Tunzo4E6zy1mo1jYyzKZ6q7awsBdeUsdz0yxWZJHiFP IIWubCUtJYHqdWmg0WzL4PEVqgsA+8INzFQ== X-Received: by 2002:a05:600c:4fd4:b0:477:9cdb:e336 with SMTP id 5b1f17b1804b1-47d1957afd8mr619222215e9.21.1767601433971; Mon, 05 Jan 2026 00:23:53 -0800 (PST) X-Google-Smtp-Source: AGHT+IGMqr5RF3PmeKLntFlggNTcPo2ZIBIezL7tE6/J3AdeaKkIeEvwYa+UmsMabaObW/38gLAvfg== X-Received: by 2002:a05:600c:4fd4:b0:477:9cdb:e336 with SMTP id 5b1f17b1804b1-47d1957afd8mr619221495e9.21.1767601433387; Mon, 05 Jan 2026 00:23:53 -0800 (PST) Received: from redhat.com (IGLD-80-230-31-118.inter.net.il. [80.230.31.118]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4324eab2721sm99141541f8f.39.2026.01.05.00.23.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 05 Jan 2026 00:23:52 -0800 (PST) Date: Mon, 5 Jan 2026 03:23:49 -0500 From: "Michael S. Tsirkin" To: linux-kernel@vger.kernel.org Cc: Cong Wang , Jonathan Corbet , Olivia Mackall , Herbert Xu , Jason Wang , Paolo Bonzini , Stefan Hajnoczi , Eugenio =?utf-8?B?UMOpcmV6?= , "James E.J. Bottomley" , "Martin K. Petersen" , Gerd Hoffmann , Xuan Zhuo , Marek Szyprowski , Robin Murphy , Stefano Garzarella , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , Simon Horman , Petr Tesarik , Leon Romanovsky , Jason Gunthorpe , Bartosz Golaszewski , linux-doc@vger.kernel.org, linux-crypto@vger.kernel.org, virtualization@lists.linux.dev, linux-scsi@vger.kernel.org, iommu@lists.linux.dev, kvm@vger.kernel.org, netdev@vger.kernel.org, Viresh Kumar , "Enrico Weigelt, metux IT consult" , Viresh Kumar , Linus Walleij , linux-gpio@vger.kernel.org Subject: [PATCH v2 15/15] gpio: virtio: reorder fields to reduce struct padding Message-ID: References: Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: X-Mailer: git-send-email 2.27.0.106.g8ac3dc51b1 X-Mutt-Fcc: =sent Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Reorder struct virtio_gpio_line fields to place the DMA buffers (req/res) last. This eliminates the padding from aligning struct size on ARCH_DMA_MINALIGN. Acked-by: Viresh Kumar Signed-off-by: Michael S. Tsirkin Acked-by: Bartosz Golaszewski --- drivers/gpio/gpio-virtio.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/gpio/gpio-virtio.c b/drivers/gpio/gpio-virtio.c index b70294626770..ed6e0e90fa8a 100644 --- a/drivers/gpio/gpio-virtio.c +++ b/drivers/gpio/gpio-virtio.c @@ -26,11 +26,12 @@ struct virtio_gpio_line { struct mutex lock; /* Protects line operation */ struct completion completion; =20 + unsigned int rxlen; + __dma_from_device_group_begin(); struct virtio_gpio_request req; struct virtio_gpio_response res; __dma_from_device_group_end(); - unsigned int rxlen; }; =20 struct vgpio_irq_line { --=20 MST