From nobody Sat Feb 7 20:57:04 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 33880281531 for ; Tue, 30 Dec 2025 10:15:53 +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=1767089756; cv=none; b=JI4J8J9zK8XYDX7/l5bNUn1ETc9q02IMSrV/HseJ409NkK9gJQ6yQmEAx1HRiw8hbtXysQfZWKXG4IhKfle7zYZQBvx+6lGS54aBSaDrLEtei4RIBtajEYyPdGmr0NzgQLdXRCaRnDJ4AY4n6V7RABH34HY45IqHyq1rxlYvxOE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767089756; c=relaxed/simple; bh=D8i5fx1UC1/6nmNgw58hQGeu+7fSwjalMhDNBy/e6FI=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=UnxeLuvZMhoWLm8+ezbZGJe/XHJdMc4Xa+NuA2jbWJ9hJdOUKTxMt6PIvjKffpP5edMdN/QSddfsZFCr4SJ9sz2O1OVBNg6t6S08K5QF1ElATEseD6e22rtsSVlHneL2gL/lsJ5ATy/RTYiYGjHF5YLfZpjifWz4GoRPQRvoF3M= 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=Qx9dAkvu; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=e4sZk6/R; 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="Qx9dAkvu"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="e4sZk6/R" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767089753; 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=HL5OM1OGVzMUVxTMh8EvcAcQ4aesQjltxTtrn5MVxlA=; b=Qx9dAkvuDwrSpKE415UMHo5eSJ/9JvXU02SOI2TJdmEvg4EHVgttF3MOSq398i+DpcZO9r WgeAGnv9o97l8cfDn4luQ61Lt0dmE7I1B+PxUlMXDdcESCplvqu18hU3iRVmjlVJqdPaVh wdX2OhzgbYH4VWe7RIh31gYDnVxMYPE= 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-122-ZoDP6SftMfmN_8C8nU9D7Q-1; Tue, 30 Dec 2025 05:15:51 -0500 X-MC-Unique: ZoDP6SftMfmN_8C8nU9D7Q-1 X-Mimecast-MFC-AGG-ID: ZoDP6SftMfmN_8C8nU9D7Q_1767089750 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-4775d8428e8so82527425e9.0 for ; Tue, 30 Dec 2025 02:15:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1767089750; x=1767694550; 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=HL5OM1OGVzMUVxTMh8EvcAcQ4aesQjltxTtrn5MVxlA=; b=e4sZk6/RCGmihD7DRl0FPvrBMhX7FlCiK5jw2Ehcy4uyEkJDxBNSSuXCw+3H+s2kBE ErVQKx7Yv4v17Egvx4AZxXajguw1+W+IUVZK/qX6xQottVcMy5WGGE/kj4YnfceXDhP4 z5LZEOGjnU5xDthLT0rcWUcUXSXstq9TRB4/0eGzwx8O2V652sedBSp0IoGeKWv95ThD tQwGj+oW3bom2TW7jOkejhzJqnTUDAIO++WNc6hSeUbncxMgBnghFQMnIZarDVPCd8Ep gRXzfLru+mP9vMTt2cqG+VxFBAe4/jhg3sX20/vDU2xDIgqoaAMlKQB+XbBZXnyKiceZ HGvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767089750; x=1767694550; 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=HL5OM1OGVzMUVxTMh8EvcAcQ4aesQjltxTtrn5MVxlA=; b=mNWRNqFaSWsR4/e9jSi4IhBzrVK3IDkEiULTsuVbXM2FL92JX+aMVlWJ/MOorjPCvr 9W5Xv7CAAv+9W4XKdogkq0DOmwAOqwpmWoGeky44OyWSgwCodtfQOVO1IuLheX5xQ+V8 RpNQKixwnsLRKMxVgx/ssE6v7MZXa1raiSQFWq0CT9qUujVFtVhufEHqITRg9cUHcyzN fFiVlaSO1VQYV6ZiL9qBAnPregLBMYD6AfqCzl78W/8sBXZ97kRhkiEZO9frmU3TWgr/ 1pyrwpDS94pzsjktAdLUwky+27WhAbSgK5er1e4/pESABB9rwaBMRoWk4ofEIqgy55UP HFhA== X-Gm-Message-State: AOJu0YwsBWyPbAmyOJs+YHFV2hSCRrrtMXPARVOXjdxYLJWcZgU5FVmK NUJyLPX6wzTvSuG4Rqxcop7pQLv9z0cdrQ8XUdNtyRIqrx9v/kgG3m7YuwBpPZ72VJZalVDnjzv IOH/DMSF1iwd/sKC2zZgTdqRQSa7wI78b8GDsHlZ4C9/52QZH5VYvUJ9WBNJ9554khKDEpegWxU obwq9Mzd6l6PjlgCBbHxOv/ynwNvNTluYZlGs/wR5/Ja4= X-Gm-Gg: AY/fxX4YcfqUOZQFxYlMU1bSh5SdgfjjVsJApa7PPf23CE5XvhLHrdYHu0L0BVaAGpQ 0pet1PFvqCd300Gzz6FpW597ztGNdqCrEGaf3jZgJLtiv3zzM+DT/fIECmNTnaVL/QXLHhtDWpy k7z4PVtGPORy/AhTlwS1db4Z2OLcLwRpJq+qWsXJyOFpiC7kYDSBjtoFe/Oc6zMtzxI1rtLR4cE 6mrByx3s+S0hPRUkKYO+tTsUfJcM0ORX7grc+W9hRManE//0jdSOSKwpOawgjwKzf+jU6pdP8uU Z927OKAYi+SddjmsIoFZgSNY3KhEUU7FYdSUUMk8CxfislIyFWN7f7mf5MG0jBk7F8u4fXmalr5 ucFcNExwelirJQRgp1qC6iVG2eNyXdysCHg== X-Received: by 2002:a05:600c:8b8c:b0:477:af07:dd1c with SMTP id 5b1f17b1804b1-47d195aaf01mr352297135e9.35.1767089750051; Tue, 30 Dec 2025 02:15:50 -0800 (PST) X-Google-Smtp-Source: AGHT+IGA32W4P8fpeNgmYgRIg4EUZ5pS0m5VtW0uNekoNCHVjCXEfha8FeJZQUcsP4e9hP9jnxKeEQ== X-Received: by 2002:a05:600c:8b8c:b0:477:af07:dd1c with SMTP id 5b1f17b1804b1-47d195aaf01mr352296575e9.35.1767089749551; Tue, 30 Dec 2025 02:15: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-47d193e329asm588350835e9.15.2025.12.30.02.15.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Dec 2025 02:15:49 -0800 (PST) Date: Tue, 30 Dec 2025 05:15:46 -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 , 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 RFC 01/13] dma-mapping: add __dma_from_device_align_begin/end 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" 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_aligned_begin/__dma_from_device_aligned_end annotations to ensure proper alignment to prevent this: struct my_device { spinlock_t lock1; __dma_from_device_aligned_begin char dma_buffer1[16]; char dma_buffer2[16]; __dma_from_device_aligned_end spinlock_t lock2; }; When the DMA buffer is the last field in the structure, just __dma_from_device_aligned_begin is enough - the compiler's struct padding protects the tail: struct my_device { spinlock_t lock; struct mutex mlock; __dma_from_device_aligned_begin char dma_buffer1[16]; char dma_buffer2[16]; }; Signed-off-by: Michael S. Tsirkin --- include/linux/dma-mapping.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h index aa36a0d1d9df..47b7de3786a1 100644 --- a/include/linux/dma-mapping.h +++ b/include/linux/dma-mapping.h @@ -703,6 +703,16 @@ 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 +/* Apply to the 1st field of the DMA buffer */ +#define __dma_from_device_aligned_begin ____dma_from_device_aligned +/* Apply to the 1st field beyond the DMA buffer */ +#define __dma_from_device_aligned_end ____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 20:57:04 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 10495279DAE for ; Tue, 30 Dec 2025 10:15:57 +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=1767089760; cv=none; b=OvoLkICJEU7YL8Pdg1JEnlDsME4o5b3LWQ2HtOSRKO3K3I0l8DPp9pcWpYh0uwmQJ3xFOIEKu+s8p7k/spDZZz4ydddAT/jx4O7Of+LFOVuy0JqkOH9v8z5CZbxG32ycOfKwEn51vtkvZeRC4uHg7Z9eS+HTFfTGkU2wY9Ao2sQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767089760; c=relaxed/simple; bh=1JUA4c0efATkxneQm73kN9tTpnR2rWTicL6pMgMgIPw=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=DGK050gCwEhggd64xrDkW8jEyrGV271nRpfkcQ3ZCgrAfOy3onEYfFAZ6gC696A8bbL4vQBbkpvYawDME5SaW4O1K0JZVufhp0VvhtM+nRGRfH1o8OcVfU4OXL7DWLLY75VZFGNMeUKateGKvlWHEETaUzAqfAyJI2wXb26lWzk= 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=hvoCvzfd; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=km1vHaGw; 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="hvoCvzfd"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="km1vHaGw" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767089756; 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=lIFloJTLYi5ioijSED2t687CZ+kUT7GxSlzISMtKW5A=; b=hvoCvzfdYVI5QnmibP+2Yajm1ZhOWvPiSLWw22wJxk4akt6ZEkoNRCt/E6rQe8E02O2dG1 u0+tK8UWATMvs3Q7iUbi4PnqB2fic9QoSW+7L/5kdiCPHLjOpweM/DXA0SwBxigpcCz3qn 5s1u/+cCMULSkZyYkuzBAFP+x5qYBPM= 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-166-RE6CxXokOJOTKMj8MdVuNg-1; Tue, 30 Dec 2025 05:15:55 -0500 X-MC-Unique: RE6CxXokOJOTKMj8MdVuNg-1 X-Mimecast-MFC-AGG-ID: RE6CxXokOJOTKMj8MdVuNg_1767089754 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-430f527f5easo5873790f8f.1 for ; Tue, 30 Dec 2025 02:15:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1767089754; x=1767694554; 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=lIFloJTLYi5ioijSED2t687CZ+kUT7GxSlzISMtKW5A=; b=km1vHaGwMEO7mfXobXgRu2GF7yYLs+HkCTr39aGgXIkNfyh4MCjSseN2GIB2WtRFSB QYd42Kf3alEVord81XaouvsCcmA3h+Xnno+9YgpNQtjvo4sqLgAY0LhKgNU2UyZJKPu8 xK8BtD3XMZHDaRUcQwN/nsTpeBiSDoHpB3HTtur7rtj+2Bp8j2u1zc0wiAwPtmrJnI6J sT4d82FeSZkdH53JxTvjOAJeLgjdD12T+wgmpkjIpwQC2epj0el+N4GG3yUbrL8VgamH nm9NFPzcebrHNzdpgOOBgUyPU9c3UadTicdwhiCKwVZ+iFNiYzE/6lbWPCQPoec4VOn9 Z75A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767089754; x=1767694554; 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=lIFloJTLYi5ioijSED2t687CZ+kUT7GxSlzISMtKW5A=; b=QYTFPqNqzsrg5lBLKpBpo6fcGtPx6OxN1DtjtC5noBcbBaQvE9bJKMH2346heKMgu8 Iyc9AVd1zDGWOSEnbK0PQAc4ICTudMiLSNg5ShYJ5zU6/oqNjFJTAmlDVheucObXnExN 0BLDwKm7jpJb2BGXGb6j4VjX3oAOc/IoMJkBG+SLr9NByEtEuIemWASRgoNM/rWAnY1Q KCSntNALVToSIS6BRfApsHh3FTzMO/M+P25q9VKIlp33S1S1L8i+3HscN71onpXEQUFW oqoxFz19VJYS/+MBh0xWvD3nr+Y4w9lavEwitVdiL1Qvd1HDPMz0DdI47bUlBWrJO/w9 8IyA== X-Gm-Message-State: AOJu0YxZZVTb5sIYHTufqkwn7MZ22QdEqBXoRPKMvtCPV30Yw1iO31+4 fELGIEDcMZHL9glt/NSl+Mbpoou8f/XfnuzxcgaXwPKDTVhF/RL9NW3K/hDSzR1V6t2tHV7evOd A9b/HYg/RJcU973Up2PjZ72p1W7QvBUMEXZ1Rq2BCzmuU3OI5o79wL1eLz/9ZK5r1i3L+X7YVO+ opeIUBkM8xEawWXhgx4GYsd7zu5IowF/oZF6AtRmSCFWg= X-Gm-Gg: AY/fxX5++qw4pNjEjWrdXs4/VWP+cbfw05W9Q1ClPC77J4XTcBUyfZQjt9L0LO8W+S9 TVxJyZhWarmxf7p5e8ES4r2FaPaJDuON2kAvy1y/iW64gslzka1H04OGI2ZbgUC45ks0lO0DHng +q/MwuL7TdlQ69wpS+AyM/t0eOr8PQ4wq5532gGfDsuMZ5bA1V4Eg6WQ1grDn9L4PKpd5JObpMb BXdrh/bQBrbcJzQYWAKFrVqOMKi7c6zvD6ew4xeOMBK3iWJKVpSk8xz+aqPdmKrmKm0YsAb1qIY 3Hu2ZCl1kzjW/y0i4r8B5po7vsM8kC5T+U7Sg/y5zH6MhKgvdHR0cNH1Q69oWOpSxtCQfc7OlwF wWYZH32YpPMfJ7zmGKJIkgbDKt5kUtZX3EA== X-Received: by 2002:a05:600c:46cf:b0:477:9e0c:f59 with SMTP id 5b1f17b1804b1-47d18b833a6mr393753035e9.2.1767089753654; Tue, 30 Dec 2025 02:15:53 -0800 (PST) X-Google-Smtp-Source: AGHT+IF0nrcJnS7RjupXcIyxgJ/7OwvI0dkgJ3plFmvdD3JvcGLBLhWJUwOhq1auRl2SqH+pkIX7dw== X-Received: by 2002:a05:600c:46cf:b0:477:9e0c:f59 with SMTP id 5b1f17b1804b1-47d18b833a6mr393752425e9.2.1767089752979; Tue, 30 Dec 2025 02:15:52 -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-47be272eaf8sm630001695e9.5.2025.12.30.02.15.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Dec 2025 02:15:52 -0800 (PST) Date: Tue, 30 Dec 2025 05:15: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 , 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 RFC 02/13] docs: dma-api: document __dma_align_begin/end Message-ID: <192a335d783a2e54f539dc5ff81bf3207dafa88f.1767089672.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_align_begin/__dma_align_end annotations introduced by the previous patch. Signed-off-by: Michael S. Tsirkin --- Documentation/core-api/dma-api-howto.rst | 42 ++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/Documentation/core-api/dma-api-howto.rst b/Documentation/core-= api/dma-api-howto.rst index 96fce2a9aa90..99eda4c5c8e7 100644 --- a/Documentation/core-api/dma-api-howto.rst +++ b/Documentation/core-api/dma-api-howto.rst @@ -146,6 +146,48 @@ 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_aligned_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=3D=3D + +As explained previously, when a structure contains a DMA_FROM_DEVICE buffer +(device writes to memory) alongside fields that the CPU writes to, cache l= ine +sharing between the DMA buffer and CPU-written fields can cause data corru= ption +on CPUs with DMA-incoherent caches. + +The ``__dma_from_device_aligned_begin/__dma_from_device_aligned_end`` +annotations ensure proper alignment to prevent this:: + + struct my_device { + spinlock_t lock1; + __dma_from_device_aligned_begin char dma_buffer1[16]; + char dma_buffer2[16]; + __dma_from_device_aligned_end spinlock_t lock2; + }; + +On cache-coherent platforms these macros expand to nothing. On non-coherent +platforms, they ensure the minimal DMA alignment, which can be as large as= 128 +bytes. + +.. note:: + + To isolate a DMA buffer from adjacent fields, you must apply + ``__dma_from_device_aligned_begin`` to the first DMA buffer field + **and additionally** apply ``__dma_from_device_aligned_end`` to the + **next** field in the structure, **beyond** the DMA buffer (as opposed + to the last field of the DMA buffer!). This protects both the head and + tail of the buffer from cache line sharing. + + When the DMA buffer is the **last field** in the structure, just + ``__dma_from_device_aligned_begin`` is enough - the compiler's struct + padding protects the tail:: + + struct my_device { + spinlock_t lock; + struct mutex mlock; + __dma_from_device_aligned_begin char dma_buffer1[16]; + char dma_buffer2[16]; + }; + 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 20:57:04 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 44B182D73B1 for ; Tue, 30 Dec 2025 10:16: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=1767089763; cv=none; b=ScHM+SVfdNNzpmWL2DRrbMqCGBIv8lvXjvLkKLbgcXHJGrCIKQNjL9Mb+i5CZgRApi3C7JYDswDjqHIR3TSfdidCFz4RUQUBTf7uDJJIm+kaRXs1aNvfpF4NwWmL/P+rN6x3ASb5YjmYjnJVOpTMyNx41+5DmbzqVooZjTyjU38= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767089763; c=relaxed/simple; bh=PKPLA1kpbL7fJYEUVDcqch/rjberNxsCb/G2InoSmIU=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=TU4I08hCu4JE5C7K2khDXVKTZ+CATmAOfvcwWiIkuwom0bqrVCrhi2LTmAUQLjC2BKCtcwWJ/Ggp3AfhyUyhtd/P0gkF36Ua62N2XtTMfFznPtD49gjFuOoWqcmVZ5EgmFMMgN1Ph2uhWPfNOJrofBHa0IJXgjzdILOoOitsHYk= 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=LsNui2vn; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=ZviZVR0u; 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="LsNui2vn"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="ZviZVR0u" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767089760; 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=vlUDEgWO93Cmk0Xa8O4C3C5KUT8jOBeRcuReRJ9yK0k=; b=LsNui2vnirJhf3WmLcapt6TGAOFbWM7CdK70IKhlZ4B/2nMQUI8/mT3FrX2We2jCM6RWw7 lybPGVaFUHg7o9s9SJAbktMjawxsQwjuHDF3MvHmfngzYKO7h+1TjxuEvlnK8h/uy80XBN vHLb15FtoWekuzkYaRV7fEhwe0czaWM= 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-675-hl_lMnhOPEGfm8SEHte0Aw-1; Tue, 30 Dec 2025 05:15:58 -0500 X-MC-Unique: hl_lMnhOPEGfm8SEHte0Aw-1 X-Mimecast-MFC-AGG-ID: hl_lMnhOPEGfm8SEHte0Aw_1767089757 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-4775d8428e8so82528175e9.0 for ; Tue, 30 Dec 2025 02:15:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1767089757; x=1767694557; 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=vlUDEgWO93Cmk0Xa8O4C3C5KUT8jOBeRcuReRJ9yK0k=; b=ZviZVR0uqwFPJZivYXOhQ8AGvYAcXNGBSibAk7l/oSytGm4r+M2JydcqprJdVhVB+i ZIT2OgPtUxe4Ig/8PWscY5IluLSBlXeJMmo+M56+KQ6c49gz2d2R7M70UIA+wjl3sUEv 9DMWprpyUREi6QHA3BAWnf8/4i8ze2sC62tcCLFtwzaJTOjTblCtfgXkdREJ9nHMD/06 Ztkp862/yqlkCUXHjZQ3n0HMHaYrj9VVf1a8iVtpAbXtdj4Iiyfu5/PERkeOruvDUwWd FjsncdDmsrzS2crWBCEZC6A1v6x2xG2aNO2eHqDBYyRno+5IpaPdaciAPF6ItsqB1e6t PySA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767089757; x=1767694557; 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=vlUDEgWO93Cmk0Xa8O4C3C5KUT8jOBeRcuReRJ9yK0k=; b=NleNNNHlqBS2lW2BhIU1ZnCsOI1LI/4sYjqqwMvKl3Htt+QOyWp4m5ZGUwk6oPG+FB x1qlYWEzA/lbpouWvtcBBCbAHFKX2iswA4tPR1o+CQzkoDqjhROIhwsu08UQBgfPI03M PJKLTig9cTmD6u30UvT+DgjrNzq3LRGCOkzT7sClHD6mVfDkNqIoSAbCyaISKKWvaEcO hOnvdQYj4STBhf21JTP9Io6AX4JFv5SMhwfgNi/1ZHWzQnCTMfq/VmsObBrKIc8xg3N3 lJYkJOfum+kAqnd4mn8cqxTDsmncnUC2mOlmkc6GOyXxEyXCkIPkpqzr4KAQRZhjJTgE Xbfg== X-Gm-Message-State: AOJu0Yy9PbJPNy/AE9Auf5Z/RUxCjIlmvavHZxpRCfcTzedcGybpWyqx h/30gLbkCGfefB0yeSfynxb5Ooj8621OzzUldgo+Yby2KnPgYXkhejmGNiPbzhAZKEV7aUQ6THs B14k7jQxlIo3bz+0iUKnltZucdqYvItoV/A22LJ5oYz7KaaRgDsvkVYtwCX1w4MzYFTpZYrl+s5 Aivok7KDaEFEhpjiiCDtMHifrZ4VxqfLyIhgcJU3YSdoo= X-Gm-Gg: AY/fxX6VM4crPkOyhZ9SjqBDsvz9dgpQcYHH/MxjgpNh2oHg7DkYVaGLLoyDPphvFB2 s16zh/A+M0X09T0KXztLG+Y3lG3C3gElvPyVI5tUwt5YwceoU1lhfomRpMZfKIYdQOufii86KfE EsUzNDl7Oa4qErCz4MbgpJGPiV4aMQBqLyPp6nbu1QF1vrGLQk2C2G8fauT526/Fbau9oRq4rrc vx6ZLu2APQf9/PEk97PRVUCBBUtNUjL05BEw4+UHyEiRhBISQOnNdG3cUjJMlhISclmvwCZ1arO yvJW1Z+eDX/I9RLhyG91KMRlAUAsDYdLqjuDZ9hBraiWlVujU3N3RnD7FNXpBxIqXDIciLhM3dH TRQDwdzVBT6iDERypwc+ZjiZO38B+qNntfQ== X-Received: by 2002:a05:600c:3b0e:b0:477:b0b9:3129 with SMTP id 5b1f17b1804b1-47d1955b7d1mr374948335e9.3.1767089757114; Tue, 30 Dec 2025 02:15:57 -0800 (PST) X-Google-Smtp-Source: AGHT+IFcsewURuffZ55cO3Q+sj2TN55Hu1ppUSdeqHbu2iFeBFoCSmT0tG7gytPk3ITCZSUZTYC9tQ== X-Received: by 2002:a05:600c:3b0e:b0:477:b0b9:3129 with SMTP id 5b1f17b1804b1-47d1955b7d1mr374947795e9.3.1767089756491; Tue, 30 Dec 2025 02:15:56 -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-47be3a6c6ebsm263705445e9.4.2025.12.30.02.15.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Dec 2025 02:15:56 -0800 (PST) Date: Tue, 30 Dec 2025 05:15:53 -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 , 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 RFC 03/13] dma-mapping: add DMA_ATTR_CPU_CACHE_CLEAN Message-ID: <1f271a22a3aae6afb97c5f9ae35b1802eaa036a7.1767089672.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 --- 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 47b7de3786a1..8216a86cd0c2 100644 --- a/include/linux/dma-mapping.h +++ b/include/linux/dma-mapping.h @@ -78,6 +78,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 20:57:04 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 991FC2E6CA5 for ; Tue, 30 Dec 2025 10:16:04 +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=1767089766; cv=none; b=BK7n2pxzTWnWFaodCW5eul2FPRHn00Ku+M0nF2czjb1ffQ9WEQQs+ojhmVQSC40P4NrMJuiiVvZDG7GVWvcGmkzOcS4MC1951dhYwtwc/7RaG3VdNk4eja2AzUxg0tXW7/wlB0ARhnganUMXey/j3NBE0pxNCaSHUeVd4w+VO44= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767089766; 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=J3+TxGQ4LBTyHDx+1Pmdpctw2Jsnz2KLAej85dHTlodzdOPJfmxwzJPCamMy302pbr/VLixAxjFfdkV2/UkFY7zmREwc8fmpvYfNHnmfKAl/lYMikQEg2+3dG2FJH37O+cFoA+qFK7VRGSojzNSvehHVnd53L30R3ynDDeDnJSQ= 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=Ig5ep5oQ; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=Z7FQ8isQ; 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="Ig5ep5oQ"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="Z7FQ8isQ" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767089763; 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=Ig5ep5oQfWTSijshrhmphh1kZkOF0/D3T4IO0PkmzcUJ9LMbjzNp+u6jZ10CCW4QVl+zOX Tya5yn+N8eUQwS6+O8S7fVAFMqh66YiNsMIbM3BzPQPZVUlRDLR/1xsJMoY6lRsszddlWC jG9Ke2bvMqJsbN/EmJMgf0wOxMckYuI= 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-392-gvxps1pJPMuqj9XMCJYQTQ-1; Tue, 30 Dec 2025 05:16:02 -0500 X-MC-Unique: gvxps1pJPMuqj9XMCJYQTQ-1 X-Mimecast-MFC-AGG-ID: gvxps1pJPMuqj9XMCJYQTQ_1767089761 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-430fdaba167so5224335f8f.3 for ; Tue, 30 Dec 2025 02:16:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1767089760; x=1767694560; 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=Z7FQ8isQq14I1KaSH1zw/UXjxfl4vbX2ZEFt82yb0xF9HrF5cGDa24nsifnCDpFx+d ZJVEGcAaQcquK7ruSxLov+mmtNZm6Z1cY1l5h155mMjVQFrApi3LDOd28jAvqGiPFSet LdpFwLkIn/ZjyF4pQkW4zmY53q3amnxzSS9IUxJai+v6NViiTMCFUhYnCxRcxm5uZESt Aw1V9bQXYW7Fl52Vl/JGM8eclURT8majQKzcf5P/SfKE9+ou1xx5sGSTMLsUXNKdhfjL R5z2Dr7EADU/6enDMzGahCI5t7S/9eDh/HfytF8+YyTZ1fvM3mPQmNW/lQt+yUskX7rr 0rRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767089760; x=1767694560; 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=KmvsL+Iz0MRzPZAJS4OyZkanlZqy5Lv0Ssixj5aAbejFG3PLI/rrk+Gv3prT04WFmE WC3+BK4dZKd0WuXP26HKBfSemHYAtSq9Whc21fh21X2afa7ooKzGw+KHnpSYNEadaXV/ fLS/u+nhg5E1HGFsWCT/4Z1Lw7Wt7hiE8aeCoS1gDt058Jicw9eU7TmJqaqQusEusKar +qOiLfcVsxrF2226IU7m0aPiOtNib54wCWvJdTCDWTQVxzBQDWnKB5pUsnuLWeQ+ONz0 WGknRy0cR7HsR1LTebCQ5ktv3BlXPC3TGfRaH5FGAfU66XMejkH+7UN27aVZTphIv1RP ElIQ== X-Gm-Message-State: AOJu0YwTCT1GIaRq0RKB76CKmH/gE3PjwIYJMkBD/ndaYNedrkl2CJVA 1jLBeNrz3gcWWEbODgU+YasDQwMe08DBsc3aMQqZCcFsdkz578BFbczqzlKJNmaaRTs6IGD6Xh/ KLjcOr/B9M8g0MwsHlZBeo1uLk/AidgKtCVFJUL1GM4K7fFevDTzuqxWPrqmMh5ZX8xkFdiQGMq 6F8TMFvqWtjX/dMXQjfFMOhBIiIfWqth6KkIwIMIDvTiE= X-Gm-Gg: AY/fxX5lN5jcoSYXq0VXonKEkXUkdu2wylyszXeGmsTGl29BqwTuryZfUJpeSUtlTAc j9uKwdr6pCs7ZvrBLD4py5U94ohYcNhTGI5v5WIAJCBHd3rMoUnRFLFwu17dVkaRNkAn2Mh47tU 0k2mZy7PxL8G9/3QMt3igwqBmwj7/TwnL8q1z9gxbzTkCQRjZmPYwxHL0EgeLObdKeH5SLsSGOi xHwhHI2scEP04W4e+32UB+rIl9W0elqHv4kfFJisVTS4klU6ebqAbNEOwDycxGtrfu8LkoDwwaH JUbaIDpI8vaz5kf3lgPIWWo9L1hy6xCuEWEx6govCqOWyUJHHmK15N4KLuspGAb3S/9XYjZz9j7 JZ613CtN/7iqQLZoMBIv5vO6GFnp4vXKPoA== X-Received: by 2002:a05:6000:2906:b0:430:fd84:3171 with SMTP id ffacd0b85a97d-4324e4c9e98mr39750144f8f.22.1767089760516; Tue, 30 Dec 2025 02:16:00 -0800 (PST) X-Google-Smtp-Source: AGHT+IHondA4WovcXdLOT45Lj3uVr7rduhIOKgQxT45AJwE7sF5CS5LqWM7ii/WKiPGqmcKK8QLbHQ== X-Received: by 2002:a05:6000:2906:b0:430:fd84:3171 with SMTP id ffacd0b85a97d-4324e4c9e98mr39750079f8f.22.1767089759925; Tue, 30 Dec 2025 02:15:59 -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-4324ea830fesm68448837f8f.20.2025.12.30.02.15.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Dec 2025 02:15:59 -0800 (PST) Date: Tue, 30 Dec 2025 05:15:56 -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 , 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 RFC 04/13] docs: dma-api: document DMA_ATTR_CPU_CACHE_CLEAN Message-ID: <818c7ea78e43b93d1bb3995738a217e5e414e208.1767089672.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 --- 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 20:57:04 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 B467326B098 for ; Tue, 30 Dec 2025 10:16:08 +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=1767089770; cv=none; b=fG4jO3hlI+DEVnlPPL/4foxEFo4SJw8b44CNWeJ4b4ZFr4CKRLzxZppR2g3k1tIsB6f4ETm1bCwTYTjuu9Zg+sxzvV2F2xHxlMlOcRUfqSM7tYEMScfw6H27woboOnqoGel10cBYYtssuEj5KrjoFvUmD/pbJXpGGyZrgOLkxRI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767089770; c=relaxed/simple; bh=LXvIBwQKlwN2aW+nel9nihwfIG/BNCGtqaNljMXS3c4=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=XC2DnrZKhhsnuZD8Ym4ncuHg9ZerbAGWeyopxhAQ0fc5yiJw7IAyZDkqULQCprekaVF7lFx1+F7r23IQbNiTxx1DoB4A6ArtVYg36y2FYDkIBne0UJDgqoMp3xO0CANJfpg1hx58xE8gaDPE4FWouvRJSOhLPXuftaGVvvTiHt0= 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=LOKjPzdg; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=Bt254Tfa; 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="LOKjPzdg"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="Bt254Tfa" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767089767; 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=CbbLRn5SB4hmqpKO67RyzNkOjJr20Ge6MiEXlRieQIA=; b=LOKjPzdgycYAIvYyyXPsIrvVOknjLMICMttxdth0C8Zn3C9j204DjOIqMea7cwFazXYhGX cfKoaS5gpGyd0/5RH4xKa7y/7uSnt4xPJKr/yQb9dpDFLeVUVYoEnvgOLDAb3ivxGxyzJr oekd1u7Xa9y7RbdghjKbcrWXR6pc6rw= 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-376-SsLykMjdMum4OcT001Wwtw-1; Tue, 30 Dec 2025 05:16:05 -0500 X-MC-Unique: SsLykMjdMum4OcT001Wwtw-1 X-Mimecast-MFC-AGG-ID: SsLykMjdMum4OcT001Wwtw_1767089764 Received: by mail-wr1-f72.google.com with SMTP id ffacd0b85a97d-430fd96b2f5so8253113f8f.3 for ; Tue, 30 Dec 2025 02:16:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1767089764; x=1767694564; 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=CbbLRn5SB4hmqpKO67RyzNkOjJr20Ge6MiEXlRieQIA=; b=Bt254TfaH40bxBLxxz/5PJL5tMkim9plomSHRIKOLweJ0ULeIwYjMOOodWhM3WK//P UymTDcx5T/76e6zQA5wl6k6H93lMN9mTTgBmA5esGeKjeD1Mhg8ocnWjdfxPB9BBFgQF j3fdS68fB7LUzhD9scOZuWhrXFMLFMJDw/Yu3dQNCsu5cZRj7sVy1+rzWBHeB7BpvBFc wLynWNnvzZtHrWQVI8zQxRsCRzHZIIcWpvNGF2l+95QVNBecdrjYemcNz1AR1GJqfHNj ZXTLKRq/pX6OrNPTEiM8u/fjDpJWmP9UZgXfRWZqPtLtcBKSBJf8RrGd6bNB289+Fq2l m7sw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767089764; x=1767694564; 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=CbbLRn5SB4hmqpKO67RyzNkOjJr20Ge6MiEXlRieQIA=; b=LTXlpGttQ5i8z6XoO40vJ0uOH92omXS9IcZ11s/C4FckgGXZuoA1OLdvkBB9KLcMHy qB7/ry8rp2KrVeAr3YyWhGjEA9OKXISeKJzhumj9C/8qLRYt4XHrBw7Ufnf95mffR04e QLMH2KBLrI/WBRAJRWSNI286xoUesbfjl77TagD5rQQHcuUWJYsRyYJuPodFXIF0ru3y XrfUP6DW7XaUT2fDvAzR3v0D34eyZ37Fdy3g0Ybaf4PIt13euQVlXpH3AdjBJ+svUY1u tyVJ291D2ocJ5appksjdyXHwcaTkhNy7LhdvLe5Oni2BhKfwl3zr5A6XbLdvVjcw88rE XVow== X-Gm-Message-State: AOJu0YwYtUaocg1scF3JcTcvNdmHu9h3aAHaV3t2Ec8MwYSuOhLI9Lb3 hSzF8o69y1nUP8vbw5GSPVwW3y7susmAt9Lj5MKkqJ4DONgw6DNNusG+rh8fFXLtftK1f1atkXU 4JMHkBIPqRVU/5B091N4OMAe9xAsibLlswgxao1LgpoZfEb8fWNqSBJtT/0Pa/tS30OoP40EGe/ 9DNfqombVOjruNhDN+pFYxVZOQSbIoFLZ9lO227ioVjMo= X-Gm-Gg: AY/fxX5FTlVh3n/ki6Uin7mO9ZhVhoTjHQ6WcPaRoNSu+HxIoEGAz5NerAp14MfGNWZ mFwZQs8hG8FryWf4OX7KID2OWUvSWgiUHuyBsg9Wuvg8pFKCcvpv0GT2vUk6srN8C1kxLBy15Hd iuIP8HAr/UuzQQ3SH5xCvstd7U8eVHuGSzIvgYJ2JyY36KFNIPPDnqBx7KGsINtlucSWv5HPQow 5loSsd9IKW336/fkfM9O71oMNPdN5dgWMB+d9fleX1+xsMs/PmehfRdQd/zTsVU/lCN6zygtb1j CwdH7cn4QoDWPLVff72eauYX8qxL1yH50frKvitkj3/5IKnE7BFSAHu43RRYsgPdC1ddMULhHKW UCvn9jSpiuurjEBPcDULuHeSDoGyLcL/OEA== X-Received: by 2002:a05:6000:200e:b0:430:fcf5:4937 with SMTP id ffacd0b85a97d-4324e4c3e1emr38658334f8f.7.1767089764094; Tue, 30 Dec 2025 02:16:04 -0800 (PST) X-Google-Smtp-Source: AGHT+IHK1atjAKrkdoWQy4jxFj2rw+qTn5U0Lh0sTEHql45jv1yC6jgv8gOxch8xQ2S/3gi1ay54uA== X-Received: by 2002:a05:6000:200e:b0:430:fcf5:4937 with SMTP id ffacd0b85a97d-4324e4c3e1emr38658276f8f.7.1767089763428; Tue, 30 Dec 2025 02:16:03 -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-4324ea1b1bdsm66936468f8f.8.2025.12.30.02.16.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Dec 2025 02:16:03 -0800 (PST) Date: Tue, 30 Dec 2025 05:16:00 -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 , 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 RFC 05/13] dma-debug: track cache clean flag in entries 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" If a driver is bugy 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. Shrink map_err_type to u8 to avoid bloating up the struct. Signed-off-by: Michael S. Tsirkin --- kernel/dma/debug.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/kernel/dma/debug.c b/kernel/dma/debug.c index 7e66d863d573..9bd14fd4c51b 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; + u8 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,14 @@ 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); + if (existing) + *overlap_cache_clean =3D existing->is_cache_clean; + } spin_unlock_irqrestore(&radix_lock, flags); =20 return rc; @@ -583,20 +594,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 20:57:04 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 384AB2E228C for ; Tue, 30 Dec 2025 10:16:11 +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=1767089774; cv=none; b=GG8FsIuLvvVlJr7CSDk5ifFuMQdf/12rZWaa8+F6MP9e0tuyK0xITCdp2nOzw8DZV26w2/MlvhP6FRkxwssFJ/c1pMCD+JXkPJkc0Gnp20yXnmUGOFoAWT52fgdpPfub0QbY32YNw3jwta9jeyLl8sZybF0ovRD8nGd3wOVF/N8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767089774; c=relaxed/simple; bh=N4HR0a5dn05GuDoktJG7BnG9Lq/5EUgyVWUyfL7k7BY=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=I5t9i1HUuJgOpL71f8kZKHUJjlB63L61EIE4rOXe2URIVgZVVUTFiaI4ToUqCUvDn0ml7NnVzH+VW4rBW+JuWcML9yffW5mz7QqTOEY+BVc0JtnZ+kKDfXIRPwZ0FSq15Bsm7dXJtfpO29ZuouVKYGEFLd4WA0ZP9zQK29ypPco= 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=gsyT/re7; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=iVyrmX03; 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="gsyT/re7"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="iVyrmX03" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767089770; 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=5P8nBFllNyVQLFQFLwvEGLPOI82khKcPXA1snN92gfM=; b=gsyT/re7zBghS/yQntGAGJu/ISHw3WlYNSYuOoI3O5bVjjfEChnWJYC8bfiysfM7cdsytI mC1VU/x0p9sSZcPopYpSC8DxVm38YZ7jhJABhGAUEAI/psZFsU4ReqN0GjJ5mGfM899Qof 2dYKGMpN2Pc62ofKcAndOkY+dEAyPcI= 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-271-mLKOrzrfPG-1NVqpwcDEGg-1; Tue, 30 Dec 2025 05:16:09 -0500 X-MC-Unique: mLKOrzrfPG-1NVqpwcDEGg-1 X-Mimecast-MFC-AGG-ID: mLKOrzrfPG-1NVqpwcDEGg_1767089768 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-43284f60a8aso1509961f8f.3 for ; Tue, 30 Dec 2025 02:16:08 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1767089768; x=1767694568; 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=5P8nBFllNyVQLFQFLwvEGLPOI82khKcPXA1snN92gfM=; b=iVyrmX03FuQnqi6H3tuoQWOJv9slaJsd0tbiMGcxay/IxUohk2ggdCZMLrZKNTFUaO CW3rUssFVY0mE2ThXqPQCOkvn5xUhttREU3G8xP+GNEOWv44sBZluoN33Tqm+MuLwv2R xAjuj/MWIWHnNeU0Q3Fz6vDy8J3chwdvDOadNAkgcKEuYa4K3odd0d9fcGiaxA7+80rq kRGWXkTcd23zxznIC/uDn/y7yCQ5PocW1NyiQvgrVhmB04bqbW8j6ytBCJANtuNgQt6h 2K0whmHe41LkSJ5kXfLhAbVrSWTvLHopiLiclJLVdy7MsZjr2DUggP+CCOvL8SUDHtLG W3OQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767089768; x=1767694568; 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=5P8nBFllNyVQLFQFLwvEGLPOI82khKcPXA1snN92gfM=; b=jtI1IMDF0iRPkDEE2ate7uQ2G5MO3gqu1JXrxcq3kkYijbzPoLg+81+I6P5v4Cgkte 2q3ytG4H61xURwG295Ff827VHbAf4t0tqbPmnyR0TvbBavB5WKVImE6skyWC5x4xH8Ls B3D67oiwv3D7sEAVB1P7Q7rLTsDMjxVrM82coalsv1yCRm9fB9fkClEspgls3wezVVZy IHSLNHAagVnBUgwbImy+7ECrysrj5r7vcOn8W0X50DsN3hqp9T+2p7qqQzIzVz9x6Mb6 0Wn1T0JwR2mtDdAcnXS3Q5ILGlPoKjcqEzenXDTj/ryIiDYKHRTMjS80ndPj9rBF0kA9 c37g== X-Gm-Message-State: AOJu0Yzdrw5v0OnfYtlsNTbjBcDwS783lSCJwF6AO3dYzrmwHPJ0UAHq AK+7hz73bMFhZGRMtX72vQl88d5XjPqQomjL0BNSnbH96vN1A7UIDwlikk3cX8MQGUV4cjUAwv5 0EX9OTh1H424AYCz3NK1FZDWm497VPgguZNJ73tQPA5DS2HNnuu1jZtCdHPbwqXrJqOWRlQH2HR mh8eki5HG52vpbfbIidv/d48/QbRyLNxIYS5qaoYY5bK4= X-Gm-Gg: AY/fxX6/bznQB75dUxayHFaCozlAJq1IBjm87P1QevPnGpaDzl1MXbGCAoSBhXBfA8/ uB+1JJbnyTRTBw+kVDG2d+4xq/A+a7G5zcgPDyRnTLVdHPuONYGsl9LYjiXEU9D2Vgy34l2Pk5p aVmGHr6HI05bSDpGjQLYavARoug7ChLh1zuh4S1bmpza28u2dFlLKv2fMF3gjpKhPMiI3co1h6Y XySSjTUJ0QMNbTn3jrd9m1sVZNxTL2f7Xe+gYz7tAixMt/x+qV+XpbX5hOi/aeqZaqtHTlQmazL X4CHpMReCpiVs118gM+88s9M3j32dmQNVcZ4JktK7GvmQOZwodhARB8wD9AUb0EGRZ1TLJ/N92k eHEtBWx5VIwsVqEmq3q5b7Npsq0DGfW7dHg== X-Received: by 2002:a5d:5f54:0:b0:431:2b2:9628 with SMTP id ffacd0b85a97d-4324e506ba3mr39259970f8f.52.1767089767511; Tue, 30 Dec 2025 02:16:07 -0800 (PST) X-Google-Smtp-Source: AGHT+IGtsdMUlb1wS6GR5OayFkymlWIYaYAnUxOGKY8jeZK45Dwg0ymMw4lZ1+63FGBt0jVsyojNrA== X-Received: by 2002:a5d:5f54:0:b0:431:2b2:9628 with SMTP id ffacd0b85a97d-4324e506ba3mr39259899f8f.52.1767089766895; Tue, 30 Dec 2025 02:16:06 -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-4324eaa477bsm67834948f8f.36.2025.12.30.02.16.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Dec 2025 02:16:06 -0800 (PST) Date: Tue, 30 Dec 2025 05:16:03 -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 , 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 RFC 06/13] 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 | 72 ++++++++++++++++++++++++++---------- include/linux/virtio.h | 5 +++ 2 files changed, 58 insertions(+), 19 deletions(-) diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c index 1832ea7982a6..19a4a8cd22f9 100644 --- a/drivers/virtio/virtio_ring.c +++ b/drivers/virtio/virtio_ring.c @@ -382,7 +382,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); @@ -410,7 +410,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; @@ -539,7 +539,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; @@ -605,7 +606,8 @@ static inline int virtqueue_add_split(struct vring_virt= queue *vq, dma_addr_t addr; u32 len; =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 prev =3D i; @@ -622,7 +624,8 @@ static inline int virtqueue_add_split(struct vring_virt= queue *vq, dma_addr_t addr; u32 len; =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 prev =3D i; @@ -1315,7 +1318,8 @@ static int virtqueue_add_indirect_packed(struct vring= _virtqueue *vq, unsigned int in_sgs, void *data, bool premapped, - gfp_t gfp) + gfp_t gfp, + unsigned long attr) { struct vring_desc_extra *extra; struct vring_packed_desc *desc; @@ -1346,7 +1350,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 ? @@ -1441,7 +1445,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; @@ -1466,7 +1471,7 @@ static inline int virtqueue_add_packed(struct vring_v= irtqueue *vq, =20 if (virtqueue_use_indirect(vq, total_sg)) { err =3D virtqueue_add_indirect_packed(vq, sgs, total_sg, out_sgs, - in_sgs, data, premapped, gfp); + in_sgs, data, premapped, gfp, attr); if (err !=3D -ENOMEM) { END_USE(vq); return err; @@ -1502,7 +1507,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 | @@ -2244,14 +2249,17 @@ 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 vq->packed_ring ? virtqueue_add_packed(vq, sgs, total_sg, - out_sgs, in_sgs, data, ctx, premapped, gfp) : + out_sgs, in_sgs, data, ctx, premapped, gfp, + attr) : virtqueue_add_split(vq, sgs, total_sg, - out_sgs, in_sgs, data, ctx, premapped, gfp); + out_sgs, in_sgs, data, ctx, premapped, gfp, + attr); } =20 /** @@ -2289,7 +2297,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 @@ -2311,7 +2319,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 @@ -2334,7 +2342,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 @@ -2356,10 +2364,36 @@ 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= hint + * @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). + * + * Adds DMA_ATTR_CPU_CACHE_CLEAN attribute to suppress overlapping cacheli= ne + * warnings in DMA debug builds. Has no effect in production 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. @@ -2380,7 +2414,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 @@ -2405,7 +2439,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 20:57:04 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 49E062DD60E for ; Tue, 30 Dec 2025 10:16: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=1767089779; cv=none; b=LX0ylNNK7KyevDkZ4HwpQGW9kJNc6u/FHlrD2JdDvU6B+TWBG523NLrEc/0UIfH7huNnqzX4f+MEozRBEnnYeVLsD7e0PJsyulxy+TOG4UaAxl+Vk/YEUzr762PrDONuk08BLgWJ8oAUDmSTS3cxuBCo2lQSyzH5Fsk8eDmcrOM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767089779; c=relaxed/simple; bh=1nvGVVfYMss4t3CEcUrrF8Nk2cSppyMGKm3YyiTIiKQ=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=sc5OZauJF1P0jetvyV7HGtL4ul7Odd5u9zAax0pH9RaqEjixudjqK3dqxApXB/+SRJkcGDyBCAYvS+QxV0M9OXxb3KfUhgD4nRBzgQwwagqtDGsEli6cxvlFJ9yVVzZIUARseb58kU4oZeM//NdKjMayMVdLJuNPCTvS68eR2YE= 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=JUV93+Gv; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=D8kiRJdc; 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="JUV93+Gv"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="D8kiRJdc" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767089774; 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=N7TdGrHAal4YSCbHD/e5fBMwf7XbmUGP5Z2mh/ui0sA=; b=JUV93+GvNWX3nxpTw8cau2vP30RBijuoxCYWrIDxyYcvX4p3XvCk95xccbON6+L/U3eb9t si8hWuSvT4Mt3QErEjU5PTb0AlztpEMPM3HXaJlVfXud/33UjYfqDajJuESmoRTs+TkhT4 8bBFTetu85d5QnbDKsQ6WrE2G/IJ4h8= 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-391-I5glRUblMzClT-2PSY3mUA-1; Tue, 30 Dec 2025 05:16:13 -0500 X-MC-Unique: I5glRUblMzClT-2PSY3mUA-1 X-Mimecast-MFC-AGG-ID: I5glRUblMzClT-2PSY3mUA_1767089772 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-47d17fff653so34875695e9.0 for ; Tue, 30 Dec 2025 02:16:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1767089771; x=1767694571; 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=N7TdGrHAal4YSCbHD/e5fBMwf7XbmUGP5Z2mh/ui0sA=; b=D8kiRJdccnjA7UBfQdPD1dIdRkpZkqA8vResLYU9t9f20l4nQJx5GuLg0IRRo4HmkA Ez9QUd8ztax/ZM6qlWpStt6ig9rAwGG18m9odbjAYC7V/8aib3iWrs8f6Glxnfo92e6M kbzp51OUt/jpLMIaQ9dSi354rrPCe5h6M+dOEHdwzUrk1FtyKjQU3A+QpWIY5VrGfgPZ GasDPxSRI4RFXD/RE1XwOWs4ZpqcTdTHkb9bC/VEyiOzSm70/GLjGNOKak5FNDBdiJa7 ZMR2k8LgePJspuqK6/IhpTuKlpvOtJWOoqS7UikPR07hhtZjj/ERppykuPbLuGVi1fLU yJXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767089771; x=1767694571; 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=N7TdGrHAal4YSCbHD/e5fBMwf7XbmUGP5Z2mh/ui0sA=; b=d8rEv3eire7QSAYBQH2LxtOgHgTdPa+eHfKyo5ggTdlFwEDB2oNqXR5F4fx4A3Xwcx 72SPPAIo91mXZG/kVrFmrkYzvgTv9V8xsmdDXkYVTdPcOln8GvwT3hjWANrPGfStwhNt m3LPpHlqzU6JsXDlCQ2V4unw9Wt5x7z9uRd8RnOPuCc3cW7+pk1Ge9VYTVntpKjAYv/S 7X2SB/5nLaVzPz67V89W5xr4Iclj5P6I6Uw2Hx+gf2ir6D4VXLGv+BV39JXZlM/hZdWL MdWBfIsoe1JjpW5gSkIKDby8sGFJhOwKQkiBkgpRAOLpK8JOaoXz5JQCOWJIpt/gj6oL ViFg== X-Gm-Message-State: AOJu0YxqIpgU8KT+PjXJwmbRzzu/8socX9wZCVyrfmXQG7Y1rGvX4R8o TIS+XV2aGh2H9XZQ3cXspB/CV4qM20vprtj7bQtODPMvKQDNzhBRtxfj2Rew3+B6eqVmDjXNM49 xpLTnAfCGNsnFHevpQVHFP5Pn+h6+mSNGcKHz0X6vDJMG/GomsMcWZJJ4Acgv1Nb5gSO8ENfvLQ nIKZFBl+28nUwc0ptwmLsZvYAwhMybXyCLvJIaomSoUSk= X-Gm-Gg: AY/fxX7JeHumYuB2KMLLbf99tSiZ+mGki4W3MlUW7B98VeyR32O9cKCFjGxGZgNM1on nwvZCPs//CEYH0Tigsrp441m7fIIbQztnSX+0x8S7TLOmzoyZcXRluvcZBQeTl7pj1zn0E8OyDe shJ6xIg81ENbgnfzTKgRaX1eKFv/b8QnVGjJYrpnaYnc74aFzLCVHPhBBIKLU6OF21xDE4OfGSX uwy5C/oZhn7qyzl6ZlQiUFHRU48roQ+1OjaqQ7n/qPnJva+0STglJYY0Uw68+YRpFOlceTulKxS yqoCE0PiW4zw/y1V8DNrQ2GWG3LGnxFTutSwp0ZLH5nfRHDTTPbXQzoqiP/0KDLws8RGwOQHZLf nrzG1qdL093vswuPC8US+i3KDF9xqk1hrFw== X-Received: by 2002:a05:600c:45c8:b0:477:8a2a:1244 with SMTP id 5b1f17b1804b1-47d195558bemr375729875e9.11.1767089771500; Tue, 30 Dec 2025 02:16:11 -0800 (PST) X-Google-Smtp-Source: AGHT+IHjzVX0GYuttaIVhsj3PIAp1ZJ2Zp++QasW4yFBwV4WaDkrZ/icz8/Y8CMg+xDJDk6ilEld2g== X-Received: by 2002:a05:600c:45c8:b0:477:8a2a:1244 with SMTP id 5b1f17b1804b1-47d195558bemr375729355e9.11.1767089770967; Tue, 30 Dec 2025 02:16: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 5b1f17b1804b1-47d193d4e91sm569777955e9.13.2025.12.30.02.16.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Dec 2025 02:16:09 -0800 (PST) Date: Tue, 30 Dec 2025 05:16:07 -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 , 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 RFC 07/13] 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_aligned_begin/end annotations to ensure event_list is isolated in its own cachelines. Signed-off-by: Michael S. Tsirkin --- net/vmw_vsock/virtio_transport.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/net/vmw_vsock/virtio_transport.c b/net/vmw_vsock/virtio_transp= ort.c index 8c867023a2e5..76099f7dc040 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,10 @@ struct virtio_vsock { */ struct mutex event_lock; bool event_run; + __dma_from_device_aligned_begin struct virtio_vsock_event event_list[8]; =20 + __dma_from_device_aligned_end u32 guest_cid; bool seqpacket_allow; =20 --=20 MST From nobody Sat Feb 7 20:57:04 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 D511B2DCF69 for ; Tue, 30 Dec 2025 10:16:18 +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=1767089781; cv=none; b=QRdT1/ys84/xtuDsQj6dm9IOUK2WrfZvi6clrq7HpTuRiyAKXuUefFoSU2QKT29SN7ErBhXJ5x8ivUM5hAl4km7lGd1tRz6hOiL0kLLvh5uZyxnpdd/XrSlgUBZMAb2P5rndd7nMvhsdQyRHgMZYuEsihdkcea0JZwEEsKQodqY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767089781; c=relaxed/simple; bh=d79M2iBKtK7/e3UWQBP6Z7XMZcGHJdPNMKAqQ6Eyk7s=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=DZ1IpEAmU6UwYUmnLcnxzeSXM7WU6NvhX/76Cs69TVg0KezQKmnGxOPZcbLPKNew+QSAoaGq2+Nds3OX6zo3vS40BUOHPpoLVKp9K2K7HVEugIxVr7WXgywRUvNY9+Ios0eM6cVsB0SEgXzwdNeaSMijYHHLPblaZ65Tc5Pxz3A= 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=Hx27djo6; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=LlNCUSCT; 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="Hx27djo6"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="LlNCUSCT" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767089777; 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=awHY3MD6YI7UgDTD6QKfkNuaN+VrZkEZlRiSgXqWnPs=; b=Hx27djo6x77GeQQ1lgTSKc/rpiU1WdokGmJc/sZ5Z9orN3COn1wNf3Tzt0v86p+rfoMn0N CJDZRinML9rxytkRt0M/BsAcdQFYr5z95bCdTEFMaieVJ5oTRPJOGYcvDzUKKM+vqA40M8 uAHiqfhGbM+tEVcYbRorSWHsEV56cf4= 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-503-ZEyG-QJQMB6wIyVLMD9yOQ-1; Tue, 30 Dec 2025 05:16:16 -0500 X-MC-Unique: ZEyG-QJQMB6wIyVLMD9yOQ-1 X-Mimecast-MFC-AGG-ID: ZEyG-QJQMB6wIyVLMD9yOQ_1767089775 Received: by mail-wm1-f71.google.com with SMTP id 5b1f17b1804b1-477771366cbso73693345e9.0 for ; Tue, 30 Dec 2025 02:16:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1767089775; x=1767694575; 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=awHY3MD6YI7UgDTD6QKfkNuaN+VrZkEZlRiSgXqWnPs=; b=LlNCUSCTByjGB0z6MsJ1GKRqOrCxKlKxKzGbqSTZscLcZoTmQ33rpW4PooijX2SKVN GdkPVv4kz1LwJMCcxDEH2rdpeJZYlU2q2NV15nRJomG3W4VdIg1TwNBnMdL6duDLsEj6 SITH5U1beqZ3WfDoinZ5ccYNG8KVhPM25lpkP+r6vRtu77abiGOAOUNe1a4fZcHjaOow QyauQS7ID7RPNlGTYYk4/rDckAGeF6YvUt6WatWjvM/7XW0IxNcVX2ZRhqBuR/wR0Vo/ DXHHdKifRDH6ve+UEv2h217bxnJzEdsyVFp7qYUm82SPivQVvNpJTZT/GD/aKchdj5cO BPvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767089775; x=1767694575; 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=awHY3MD6YI7UgDTD6QKfkNuaN+VrZkEZlRiSgXqWnPs=; b=NU5JIaL6eMzT6V5siBGqyIOSrJk89yyx51izds8uiWftzq65MmstTHx0DofW3U8a5L aBf68Bfnlwg4tXm8vcWAa5Pi14gbraxh0w/kMpTfIBiLzNIWnxlIywsK+5iOM2dmfkTE /nlKremU5OruNsLjxu83INEJZSlNDaKbjXsgnsNe9k1j06hxixwgKjbLlSIgHqFqFuHM fdalEgL4BgmYNyKejoHjayk4YHimmJY3LlIvMa8HSkXvcCl7PnQ8WNx3CK99pk1qQ0Op mtePlA8b6hnK5+CmAfZPK74YeF0E1kBw6iWMJfn4EB+h3Qo7U3xLLIm4JEb0C09i38P9 cYrQ== X-Gm-Message-State: AOJu0YxAiYFFKRee6+l4VnldyFHPky1aE/w5OqD7dkXVZuSiuPFOXe8O AWhvdiiMxvOSeqlkwMmbZx4MO3baf2J7HoHq2kjCrwjjndRGT0BNN5mj2BrDl+Z/ya2at7RaYCV lNTNZ40MbVqsDtPjEgwCN7ISUi6e4v0znbDRPZvySGonS0eLjtIDsbLnguELTBb9MC7NnPyQ0Kc JNLxARYiCR7g4qVTKXwfgk1cc9rqwtOBAgGf1aCf+tvOY= X-Gm-Gg: AY/fxX5FPvtoYMW3pi4ug6jb5xKUUA9dKPSLu90Yz5eSoylYTrsx2aJV2UY07qBXR/a ImH5PImGS6HyUOHZzMwo619Nr4qZGAvnOtFCEhZ2VLStfY6geaQcj3rrIC8kui4YvgNIn6MFCdT X72v+xexxN02L8dTTOMXC0wSecj5r5JV7dCIdS5y0jnWpyx3/9qDtdeJh4giV43kmAeY2jH1F10 Q1ezTAgZQnrGmhgquc7GJEXoXHxXtDdaGYQ3Y8TImqmAfLT8YT763zZ5BakFIpoog5Q5tD+snXY gg34Znv69Cn2ODVNqeUkcS2dv9e6ovVPKlb6KT7v8LrMPxWF/F7qbLPhWM+BiS0OJhk/F2WZ16S MZ0s8enqK49KZi00UCPoDGpexBxXJ4JGY+w== X-Received: by 2002:a05:600c:500d:b0:47d:576d:8140 with SMTP id 5b1f17b1804b1-47d5b261006mr54434205e9.24.1767089774976; Tue, 30 Dec 2025 02:16:14 -0800 (PST) X-Google-Smtp-Source: AGHT+IFhdLHPqUgLnPyVKN6hwhRQFuXWAPZjO+w56XwRJ3KNAI+UkHXfY0sXelHGWgys0dAYrWVbAg== X-Received: by 2002:a05:600c:500d:b0:47d:576d:8140 with SMTP id 5b1f17b1804b1-47d5b261006mr54433635e9.24.1767089774436; Tue, 30 Dec 2025 02:16:14 -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-47be272eaf8sm630015255e9.5.2025.12.30.02.16.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Dec 2025 02:16:14 -0800 (PST) Date: Tue, 30 Dec 2025 05:16:11 -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 , 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 RFC 08/13] vsock/virtio: use virtqueue_add_inbuf_cache_clean for events Message-ID: <34e5e1af186fc92ab4ea6cf6c9f5550a40c9567d.1767089672.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 --- 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 76099f7dc040..f1589db5d190 100644 --- a/net/vmw_vsock/virtio_transport.c +++ b/net/vmw_vsock/virtio_transport.c @@ -393,7 +393,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 20:57:04 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 8B74A2820DB for ; Tue, 30 Dec 2025 10:16:22 +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=1767089784; cv=none; b=oJ4OCb95QUlkIHLU9cxVVKx2FWzzMRMVfKEmVuHvsWvNSzS3i2L/OM3VsD+NyqupHFTlGyfMn4YA+kAqsA2fJr3XxPlKU81bCerIKb/zwpR9lCyI5MC2d41VOiSCwPHljfedS/RDC9BkTBSvl41IpA5t4l8N56hxNB7sp8jnlic= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767089784; c=relaxed/simple; bh=RzxSFhz+bpkLtGdr/5qvrDQOf7DHug0oDxHEj4NfN04=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=pQAW/G0DHo7l0dopvoP4P+BJ9CexxB7amhkB/Ny/H3PPYlYJGOxrYYVf+aiNeOypIwlieLhI1sUUNcJEyLtsR+ZoT6qtOimE+LYDfuQR0uvC6PjUOyn84NXZN7w4No3yiW9aYZbfl6pSefVitgm12DOAJw6DO064wODnaoHl0Gg= 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=GG1e92xf; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=VPE/dp7E; 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="GG1e92xf"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="VPE/dp7E" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767089781; 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=qjCbMizY1BaJF5yBWOLXV7DyUl9vbunxYIEFqfWmhYA=; b=GG1e92xfXwhdCfXUvWy8J123z+Vg7kCtHuNr/m3hKaNvn9RGC4OKv0ohda0Zxj4wQREy1p xe3xJ6sid7rHsX0+C6Pm/J5LoNli5rVoinLSSXriVcYFI7GrbodDENgbELVi+Zy+NJcMRI 0sNj8PIu0WwXd5jsawV79NcWpsa05Kg= 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-335-bj7CTeljMYCQi2zDnHturQ-1; Tue, 30 Dec 2025 05:16:20 -0500 X-MC-Unique: bj7CTeljMYCQi2zDnHturQ-1 X-Mimecast-MFC-AGG-ID: bj7CTeljMYCQi2zDnHturQ_1767089779 Received: by mail-wm1-f70.google.com with SMTP id 5b1f17b1804b1-4779d8fd4ecso49772035e9.1 for ; Tue, 30 Dec 2025 02:16:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1767089779; x=1767694579; 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=qjCbMizY1BaJF5yBWOLXV7DyUl9vbunxYIEFqfWmhYA=; b=VPE/dp7EiLdV7Zd4+7q0LB6HkY0Dm7ay5Zf2PQw9wOoG4M70mB4zef1xVoJ8OcF5di 9DycO/ppjRTvKJ2s4Rxl7DlzcmVynApx9nEE9Vb0yDrHpQzGTmSZlVMXTOxwgAXYqhEA LpIUzXeekbRKdVrnA3gLm9iAWUwcDHZyJ592nL3IWXrrlToH0Uswqa2WQ+KB5zhyGXnd dVQsn7dSSdnPovLKxAjIkxFXsbhSvzQHhF1/arVybtPswx/xuHSLxxiYjd9kYrEBHHVK M2gSZSdf5wENx4VPi3wyMOh8S4LovIHB5Lw8kvlo6EEjCh2/YwZo1jYnhS/Dkesg+noP 80xA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767089779; x=1767694579; 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=qjCbMizY1BaJF5yBWOLXV7DyUl9vbunxYIEFqfWmhYA=; b=jH6oSFzmnT/H3koqsb7U9kJvhsZ2dgQvxvXQDa3OnNKaRS6GYHv7rk4pDrwlWi9lP8 qPOB194eoJ70Qqj8JoiUuMeFUI4yYR/d3e/qZ09gRQ1gIvzmIJvOZG38ahzwdIl0WBm6 tgxB9mdd+6fYxMOo17SUUQ4dea4Y1rN4MlRKbQlhfW+hkROMpZzCZfRci61d1BDIJH+n KwWIJoZKy4ffzAMJnINJP+xdtVOnDXTJCeMJDvGTHwU4HYFemhT/XhtiwJNUs+gCD2Zh aWURG9NZwPBjEYBGSJxnga6zrk+VEDGmXBr69e73TW+C12VpvMi6oR2FsGrL5GUpfJGz Mg8Q== X-Gm-Message-State: AOJu0Yyxgwn66VYuHBQOGAYyTCEkxjwVhFgsAMmIr2SZzaBRetCZ0j59 f88JgkjT/F/vDRB4qIxowSZBNcc/SvNELvnCZrZ6rsZ2SeZUsOCNCFgath1oM8koqQRuRUhR6V8 p/eFDAkIcfZ735IaJkqCls+cc60hn2MIkAf1lCnddw0gfEXFOo2gVTzu6Vus3nGCQwV5Ue5ZAS7 VuzqvorduYbqVaXEoqbIozIfEviXoYxL09uQJvognXAec= X-Gm-Gg: AY/fxX6Dk3AxLhmgNKPHgdk9tg+ln+zFfzA5ZYXLUpGX4/SI/LJfiFOT67/M6adqs5b wUwh7e5h1u6HVxBHCenEJF0HnIThLwSQA6pl74fDy4veYcAsxP0sT3wRxyaLVCMyUmYeOQ9dKb0 wVeBpZn3G/mjdIgYShxr7+AYkQ1zNsXq+bFQoLgtPqkAl6dFzDO6UNvSfHAv3mKFsXpphfg8qe2 v2PyZhW/NgFevmRXg7ach3Ox2rl/8ShNU2GvgkW/uoBQh+uTVbPU5ejUEKxf8kJE4pHU6qDGZcT ydzFfajuTw+8B0v0zENBzyBlUKKVcWiWPoLKIb2F18Ahs0FV5dPPgAznhTvp+OfoO/uwoFjLI2n Iwk78PHMUe0enLzYRn0BGcQAvi1AmgJjFMw== X-Received: by 2002:a05:600c:c04b:10b0:47d:333d:99c with SMTP id 5b1f17b1804b1-47d333d09b9mr218755465e9.18.1767089778676; Tue, 30 Dec 2025 02:16:18 -0800 (PST) X-Google-Smtp-Source: AGHT+IFT+g6nqLgyQkQdYiav+FpD+RF51wbupLPftlD1j+tQDbY3ul4LGHX6uIhkOPdx1xlKUXo8aA== X-Received: by 2002:a05:600c:c04b:10b0:47d:333d:99c with SMTP id 5b1f17b1804b1-47d333d09b9mr218754935e9.18.1767089778175; Tue, 30 Dec 2025 02:16:18 -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-47be3aea77bsm247750305e9.17.2025.12.30.02.16.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Dec 2025 02:16:17 -0800 (PST) Date: Tue, 30 Dec 2025 05:16:14 -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 , 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 RFC 09/13] virtio_input: fix DMA alignment for evts Message-ID: <5f57d7dc13920517b3ed3e56d815ad1ba4cf36ce.1767089672.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" 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_aligned_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..774494754a99 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_aligned_begin struct virtio_input_event evts[64]; + __dma_from_device_aligned_end spinlock_t lock; bool ready; }; --=20 MST From nobody Sat Feb 7 20:57:04 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 0C5D727467F for ; Tue, 30 Dec 2025 10:16: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=1767089788; cv=none; b=Laksv6n/o3Y4YQR/T8n1jy3g1iMCeo80VW43nXP+4IQJYOQg7KEQ31Fpyt4/Q/dSEKOZCXoUqmaFrQMr0zx7EoY6C7kzibirwmsAKZvsgRa5eR9fxAPACpLwaJwJcFRXQwBG4/eQXZX69VHQlJX+1dnmbqo33grGzP0ySfpI6CU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767089788; c=relaxed/simple; bh=GajfymOgkcPkdkaB0RAuWogZvPX10QSebBxhGC7QBSs=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=e2B8VPivRYe2ZnyxCN66jGQJfyuZ60I3CMwhdQ1fmPbAnVw4ORopb+0gvLZU+2Qfr6Wnfm8bjR1k4yKEOdC40Lo2alvVb8XahYwmj7cc4JIhIXk9COVnZbGWjzNKdCsnyTzOAoDAcOb0Qa05FCGnSAmvCRk+ufHCxLA8XOn4/zk= 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=GtakrPnD; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=A2y2cdSA; 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="GtakrPnD"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="A2y2cdSA" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767089784; 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=QGgwtCzFbkcOM+PDCBbTUD1kyCibNYOBRdnG12nNQ/w=; b=GtakrPnD9VVF77RKXUv5av0bgB58CRcxJ4hjMSeD50drQAJiksqcggGsoK6cFAbsgIViOP Q/CTu/yIkyAhh02nGNBBjpWNWfO2rdUo3/SWvp/u2vCK+q33Xr3iQHBmm8EnmSnaSLnTgr KC8qXZDYrG7Lf++5d3BDEXv5bl9w9SU= 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-477-LOLbDT1MOPiNf5Rrxf1c0w-1; Tue, 30 Dec 2025 05:16:23 -0500 X-MC-Unique: LOLbDT1MOPiNf5Rrxf1c0w-1 X-Mimecast-MFC-AGG-ID: LOLbDT1MOPiNf5Rrxf1c0w_1767089782 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-43102ac1da8so7086299f8f.2 for ; Tue, 30 Dec 2025 02:16:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1767089782; x=1767694582; 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=QGgwtCzFbkcOM+PDCBbTUD1kyCibNYOBRdnG12nNQ/w=; b=A2y2cdSAR39FCx/iw/+1ov9QmY5nnpDSF12sGmOmeivdLCVvkEyI2LwIA7RYqBWgZg Q+BZrZbnaXTCn5FIZab5H9g6e823x3F6J0X1jKqqArC8DJhgX3GcGqTCbUnqOIrL53Qn 0TSzyaXuDi73OdzfqBC7/1s2W+eHbpK4MsDhuhjfa6diu3CmIvWXPvLuG49jnspIiyGY Q4YKcaUuMzk2znQfINVQn047hSMCRmNHKEPq7LO13y8OAgzwtFdJTjOQxTb9keMueGHH 1oHgG6okXHS84f75pjEVaVlboTahWjim3Rmya9YOEEIDwNyJclZB0FKXgMlP5viKPk8P Cm1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767089782; x=1767694582; 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=QGgwtCzFbkcOM+PDCBbTUD1kyCibNYOBRdnG12nNQ/w=; b=WIAtUogUsLOo/fhu56eN5+7hfpF0V9aNdkSUF0XlfvdOfsSjwBJoUCawsGxz8ts3do CLD1fJteJfeW4ejXJNeJPr9Ctx27ZUCyTcqTDYxqMruwU+v3wVFXZBqltsGnG7iADq5Z qFE9WK1MppQzeP/JrC7LjtS2xxxtWhRB9Ph9C4JJVbd12hTSGOUawGW/VGu7CNz2vbtr NMMIcMwX6bu8joUlNZPUOmq37wZ7OAmuKGFyAbYblhcfOpPpRIRxKx6O2XCrEOMgoNUC z9bHkijrR5RpLOFwlpsb7C2wBCQhO7txBLKzG+72y4tXQRTqg5iJeeL3ncRC5zeHy3d5 roYw== X-Gm-Message-State: AOJu0Ywt7CQ/pqgVMDnQUp9g9GtIfrju+fuIXw7npxIB559bBgs5VdaE Bxxznkn9i+AmA9o3noWjRdQR4FKg/FpC7P4gILGSbimJnOnoby6iAYtZs9xoiut6RdkBCY9VwWr LEfTGuOSBpPcZuThNsgxsxOzpswkDky4oT9e7KUDavNbHVzoOH4BTpv8RD2AwLHWpKXo3CrfAL4 4Jf7jLgMoC9yU8TEqKAAej5ldywHjI/dzKx/zHopD0tFc= X-Gm-Gg: AY/fxX59BQy604hqMCepc8QNPH9kKQcR7lya/butf9FFFdiNB63wP8a6OJCg4UjgU10 /HAUuur6OiAmcjB+p431rimTrlAk91Pa4Bu4AEoo6QxF/3Q+iFSX6ZJ1vrBMlpwYF5u3yBhFvXP Gb91yaGOdFOsgvD2cGcGJmbGjTyEytPS1jzPqARBEGKXluPNhN9FuTDzCi301gFr3oytL0SHsER bQsuWmOZlSAapxHJ9lxVF/1YUTz+V5ESs7gpUFN6OgtBt/nauoEvRCdaxeEONvRfF6LT1xBCdiy WfH7oJ8+B4HJXIwmQQBz0JcIZq3n8PcoXqC2vpF95v9AImLXn5cJRwTs0/JHX9KP3BuaHK5rgPC OcXDDWWxCd+yLSdJYBxx+53ZtXx5Xx6QKYQ== X-Received: by 2002:a05:6000:40db:b0:42c:b8fd:21b3 with SMTP id ffacd0b85a97d-4324e70b2c0mr42681828f8f.57.1767089782166; Tue, 30 Dec 2025 02:16:22 -0800 (PST) X-Google-Smtp-Source: AGHT+IF4XayC4ymFC/bWs00E9fRypXNJ9u10o1pYrVldfljsEtp9WZrRKo/7Fbn9vwkm8J3pD7bCzw== X-Received: by 2002:a05:6000:40db:b0:42c:b8fd:21b3 with SMTP id ffacd0b85a97d-4324e70b2c0mr42681761f8f.57.1767089781587; Tue, 30 Dec 2025 02:16: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-432613f7e6esm57256214f8f.21.2025.12.30.02.16.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Dec 2025 02:16:21 -0800 (PST) Date: Tue, 30 Dec 2025 05:16:18 -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 , 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 RFC 10/13] virtio_scsi: fix DMA cacheline issues for events 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" 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 DMA_MIN_ALIGN 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_aligned_begin/end. Suppress the (now spurious) DMA debug warnings using virtqueue_add_inbuf_cache_clean(). Signed-off-by: Michael S. Tsirkin --- drivers/scsi/virtio_scsi.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/drivers/scsi/virtio_scsi.c b/drivers/scsi/virtio_scsi.c index 96a69edddbe5..b0ce3884e22a 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,12 @@ struct virtio_scsi { =20 struct virtio_scsi_vq ctrl_vq; struct virtio_scsi_vq event_vq; + + /* DMA buffers for events - aligned, kept separate from CPU-written field= s */ + __dma_from_device_aligned_begin + struct virtio_scsi_event events[VIRTIO_SCSI_EVENT_LEN]; + __dma_from_device_aligned_end + struct virtio_scsi_vq req_vqs[]; }; =20 @@ -237,12 +244,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 +264,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 +388,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 20:57:04 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 E0D212E7F03 for ; Tue, 30 Dec 2025 10:16: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=1767089792; cv=none; b=PMx3aD0Z5WOxhtcTwD7o4I4FIdAYtL4B0MM63Zi0Hi0mrAgybxXoDT3qNDmblGjAN/fFwzBN8Lj2sluj7VcBCR2RxIoDguaEicDNKwGsWRj26katMfncsXuJo3X2F3b1o9qHjjaOLqRsek3xziSn9pEPNWQXvsGY2U0eS34367E= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767089792; c=relaxed/simple; bh=7vYhvTa0EsKkdKbYw4kgKH5spensmAuucNSR/pooHKI=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=A4K5HMCmzBO9ozWQBE7DW03icmvOBVrKrKm9r1Pwy46V7JB2ReIqmGwLoeS8w4A9+orysxA/2HqKSQBfNiNokgu1Nnytt9+ykavdnT/roDPYcNh5UqC1/sQ/BZ99Y67WWnlkwna89k0vjqsPxp7nc+Rohx57y/mYZxbYmiE8IDI= 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=Pu28dPwL; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=dFhz12Ug; 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="Pu28dPwL"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="dFhz12Ug" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767089788; 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=OZZOSut1u/TDBTxePQLgpeDsLzuX17NVLcEs6Y0hRck=; b=Pu28dPwLkQyY/fepeq/6f6wV1tJXIt27CyXrQL6+T/OQd/dYPessCswlz0urtroh7qqR/L NTa4KlhUaL7eLRa5AtliUTs9uPU7YYV+xKbfDqTOqz/yrNOg4NICR2A7r6Re7y/tp2lUxU fjxkLbBlGWetPmFtwlegjkf0jDDShqY= 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-209-V6jF02ROPQaqMoKgNuadaw-1; Tue, 30 Dec 2025 05:16:26 -0500 X-MC-Unique: V6jF02ROPQaqMoKgNuadaw-1 X-Mimecast-MFC-AGG-ID: V6jF02ROPQaqMoKgNuadaw_1767089786 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-477a1e2b372so77924695e9.2 for ; Tue, 30 Dec 2025 02:16:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1767089785; x=1767694585; 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=OZZOSut1u/TDBTxePQLgpeDsLzuX17NVLcEs6Y0hRck=; b=dFhz12Ug/OWVkYDk0VgCwy+wOITX5FT740qMSI7RgR9EDDCDueU2BMbotXr76H1Jij jaUbxvXGn1awYNvA8QnVEQAANvjZ2V5o8zkkCBOUVD5MM6z5F92//KMTs8S7HhWefoGU HABYKtlPOZsKWJy2pUH3NPNpUbSIY7YCdV2loIcw3+YOtSlFA5OSYOJp6O9Uz86BDn6v 9A3suQnWG6Ag7SgKD22SXeKFErEYhrxikN+BBb8gtsAD2Mht4DtESRNd+w5H+DgdboKJ 4BiNpcBTs3cJ79bHylP7GxhNP0UE6igCwVAjF5ViY5kdQg84abWlqtl0pO2a5GTdFkbg QbQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767089785; x=1767694585; 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=OZZOSut1u/TDBTxePQLgpeDsLzuX17NVLcEs6Y0hRck=; b=LFmOu3vsdlE+3e63MOPhMTSOQHk8y9+JuMZB1PEBe68aE53beyKIoJUXTZAM936gI8 UNUNqy4Pul2Xk40//XS+bbGI76OrsGfvxZvSpHCWLvN4iZYbQu/CZkcZkCRkwqtdTahB z64Fe9rsa+0XEWc2JrC9zxrTspIaCOTOVjo1tz8Mi1LbR1aV9reuaZElYOZimff6S79i /1euX41B++g9OOO4GVJn8yiIOpUPnD1bjl1UJB0EIDlLbgcjixUUGQFglrSwRJEhVjKb hTdHeUnOfrZokMILAiWQAgiUHZD2MBkUOsBiMdrziwPOSxC6EpqsOl3zSw89KD9rdAbF 3u3w== X-Gm-Message-State: AOJu0YxEpVJQkjbk5J3z2T1UDLTkHdFTQUd/3p4IWN5l/u9qCQAeGPqC hPZjcBPNzR9vDVdEKwIOFg/ToX5hnvrCITOEgmp5o026ykXX49HVyscSC9QY/c22vxTOo4p9X4C cbfXNcWsg5wGw2rjcp91P5VdKUOOhoqWhjeAKi166ECscGqMVTQ2lNbLxhRCsGFfKNIC+bYEimg 67xHsacS3Yknz92m7Vo3HnAkqTwA6t0VRAzv6lrokO0cI= X-Gm-Gg: AY/fxX7dih1kqsEi3dgk7jXZJRWPSm3/USuxmTUY3pcKkfUOVzHcT46n2w3/ceiBMfC 3o84zkZsAjnqGxOF8G7qsbodpN1/TY7sd5sv2roF771Pzv/6bRSkzHuP5plcCeGuLymrebssdvv SzrXpecSMz0zvNHGD+FX5RuBzXCbsCP0+hdFaPo5gz8epFX90BuR3/Hy1dErtwHXKCV742wxYaM PSscLJ94T8T2ijHe7ZmMTi3zOHkM5UdQvPjHLg0IEPlPQf5ADsAz60/DMtaFBo/QCdqIs7mnhAl WhbLA924AjuFFGE9h8II31CZ4gA5Vox1A5yfA3Btt8XDwbkL+4sxovF7GadmY3x0WfVlH0O8FhV xqQwmW8eo4tP6hkdRCMaPw0fUdBOs7kVxYQ== X-Received: by 2002:a05:600c:608d:b0:477:93f7:bbc5 with SMTP id 5b1f17b1804b1-47d195667d6mr373409515e9.10.1767089785479; Tue, 30 Dec 2025 02:16:25 -0800 (PST) X-Google-Smtp-Source: AGHT+IG01+uSPzH44CAd+66VyYkAwuPn/pb8j51wL1G42pmMr4duS4CHLId/Zv5CUmzKtGwuKnJahg== X-Received: by 2002:a05:600c:608d:b0:477:93f7:bbc5 with SMTP id 5b1f17b1804b1-47d195667d6mr373408995e9.10.1767089785008; Tue, 30 Dec 2025 02:16: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-47be27b0d5asm646323275e9.13.2025.12.30.02.16.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Dec 2025 02:16:24 -0800 (PST) Date: Tue, 30 Dec 2025 05:16: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 , 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 RFC 11/13] virtio-rng: fix DMA alignment for data buffer Message-ID: <318c48915a52f1739c23d46b2b99e3a51c7139de.1767089672.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_aligned_begin annotation to place these in distinct cache lines. Signed-off-by: Michael S. Tsirkin --- drivers/char/hw_random/virtio-rng.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/char/hw_random/virtio-rng.c b/drivers/char/hw_random/v= irtio-rng.c index dd998f4fe4f2..fb3c57bee3b1 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,6 +29,7 @@ struct virtrng_info { unsigned int data_avail; unsigned int data_idx; /* minimal size returned by rng_buffer_size() */ + __dma_from_device_aligned_begin #if SMP_CACHE_BYTES < 32 u8 data[32]; #else --=20 MST From nobody Sat Feb 7 20:57:04 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 97E1F2E8B78 for ; Tue, 30 Dec 2025 10:16:33 +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=1767089795; cv=none; b=R3vAluXz3DOpyjfXR7JkURMf8PeQ8XXfsI4UwvpXx3kOJ9Ni64moKjKgnW/Am0bBCHJi4QMi54FP7y71WphIKKRDRUo69YXuU4KGBUqDIjpVbti6tu6fAqvpNWDVqW9U2OGyJHiA9WMMu/etgo0QrAwF8cins4cpsaCbRvcxkiE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767089795; c=relaxed/simple; bh=8AS5gGTh0N3CZpFV6rLA6D3VYpNHgRiCO3euR1uUYwk=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=fWW6+yo/9fnnTnh0xQM0yLFgnm7d8mKnAJ46ikaBnaKNckYU+ausw0t4djdepKD+KkxwDI2PclhrieQb0fNfpdxkqqjb33tD8+C7dNddzYGgMYScp1F4ovLc+xwVl0Lr0gjnbeHi3UXYp9PrqSpFzFLRjMDARqDfpU0vsZrqgKs= 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=VHCTfOQv; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=uKQkDwKd; 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="VHCTfOQv"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="uKQkDwKd" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767089792; 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=U6HBtTZLBj4ioaYYzWmnMsK87TR+uoHLBYHR1C0qpbA=; b=VHCTfOQvrJ1iXazIEf5ji9mLXER0HppwvqCYgpvqLGdM4FW6H009wO/ADV5uoQzdJoeaqa A5L8DzaOC754QH8uqkxfDeqfMxi5fwATk0k68nCRN2KRvb3iDAeuI0va3nmODsHg6gVub1 YONZXmNsdlQYbO2IvWIgoIBnfpm8/xE= 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-349-RSAD1GkUO-2MPHCRZK2sjQ-1; Tue, 30 Dec 2025 05:16:31 -0500 X-MC-Unique: RSAD1GkUO-2MPHCRZK2sjQ-1 X-Mimecast-MFC-AGG-ID: RSAD1GkUO-2MPHCRZK2sjQ_1767089790 Received: by mail-wm1-f69.google.com with SMTP id 5b1f17b1804b1-4776079ada3so87233025e9.1 for ; Tue, 30 Dec 2025 02:16:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1767089790; x=1767694590; 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=U6HBtTZLBj4ioaYYzWmnMsK87TR+uoHLBYHR1C0qpbA=; b=uKQkDwKdC42+BDlqYj8kw2d6SrC0zpcYUm2zzD8NxLpG/eKFb+2AlVDq1r6MXc/rOO jMy6zI2B3fp4nWS9KoSOt3qcj8Gqz0AJzCZWmoD/pwahI8q0nDBMb9byDQEJQPHVf9EM VUCtgBeORzWuDGKS2w4Cp4M872WrAtLfKPlkNlE1y/keAQM+RnwjNB9+8s71BSh0wfTM W6V+Hu10N+kQpS3U/PHlH13qyxrveUxjdy9TA+cRie4CN0KAQwIOR9qZWwN5t+T/lan/ 8h3GqRdzf4/E1cEnD/S4NWjfpC6byQRtJGeA6XrZqiElMu6/GLc7Wen90XUCnTcSnf/b gONw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767089790; x=1767694590; 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=U6HBtTZLBj4ioaYYzWmnMsK87TR+uoHLBYHR1C0qpbA=; b=eyGDhVt8WzcGnma3M6MwfZa7ot1ycM0ZqJlZv3LCfmsaqPDgZgN+3LDjor9IvDlbd4 zBJPgIUqDDHxPHkULmYXk/ymQR4WCnizhmZYJQLn13kimXGQoabMNSfiQG1009QQgn1N mh6VSyjbo8o9WEvQB9BDzyMWoqt7MBu4ia+Mo6vZnBeYwcqSTGZWRW0vwg4pfz+pG6cs KPdNLgGwm4zbYsAGK9yFZDRwxY0sMz6Fms4SXp7uMpTbWolL45cmvmBp5BWaD5TXer0s IFlqSquuiYPnqHh6k6MHUE/nfTBmWjTLlRAEIPrugE78OXef0mzhUfoF8+D4O8lc+GUP VE1w== X-Gm-Message-State: AOJu0Yw7EEdTVTizrbyCfeKVJ145MLEUOww8oKvrnBKKFtAeHRCHY0Kd jGcr6/a1hygCocMZs3eIy6G4AvSoHuoHua8TrT+m+46vwAmi4aU5v2sJ8s26tEdr0UuE+DdzvPi qBxCbAvD111sFFzCjM+aLtFTRhUGzsWeDpuW0OjsCJc6DNqblIkUE9OCO/0dN15x3lk0VrWwY7r WCgXK5L0WY7W3OdS4Bzgq//hPneth61FYwBq5IdYsErxc= X-Gm-Gg: AY/fxX74LPFcDDBNeiWnSikykX7bKHSJtnx+S4GDgl++3GWTcvsBXuTy8aLT3Bjq37G IkNYzEQiBW75gDQrdgTYjOccAcLRRvdfp9Dysl1B5K22fc+8ZTsp39hKfrXjn7+d0C0EgrGOLw6 3mLUPGcGk1OzgUP0xPaPh3u8V7Hu4Mnhvhj0QtzuOQsDnVtDLHXxlTASllfE20mYJx8B2Zn2/RN 4GVUtTBDic++ytunkFxU2E0CFdbncKf+71BH7hHxsELINBu9R4pC2IxvxI74BoYFeWygGVo0f30 zuZ94pAXnQd1ULZVcrw7Z8FAvmClYpMy5IQr6ejt8whLltlsYHIH2J9KKyDldFkbQTD7vLbcB0w FJ3yypmlmJBHvyXE2EHnJD76IXJcTUJ9KKg== X-Received: by 2002:a05:600c:1988:b0:477:76c2:49c9 with SMTP id 5b1f17b1804b1-47d216f9b5cmr259854415e9.2.1767089789847; Tue, 30 Dec 2025 02:16:29 -0800 (PST) X-Google-Smtp-Source: AGHT+IFX2lgJn+l6zys486wjxZAQuCHTw6CP6YgP3vRl5nTR1Kl1YBeU1stpLcP1P+bgygg19A++Mw== X-Received: by 2002:a05:600c:1988:b0:477:76c2:49c9 with SMTP id 5b1f17b1804b1-47d216f9b5cmr259853855e9.2.1767089789344; Tue, 30 Dec 2025 02:16: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-47d193cba81sm575858095e9.10.2025.12.30.02.16.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Dec 2025 02:16:28 -0800 (PST) Date: Tue, 30 Dec 2025 05:16: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 , 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 RFC 12/13] virtio_input: use virtqueue_add_inbuf_cache_clean for events Message-ID: <797e9046d85137053c86012de026cd1aefcd02ad.1767089672.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 774494754a99..b26db7d6a49f 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 20:57:04 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 E76572F5A3D for ; Tue, 30 Dec 2025 10:16:37 +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=1767089799; cv=none; b=tDr4vzSJAjdHGjPkyaBXk7Rn/pt6BhEzKBN8LmMWaLSkJUJB6seXrzFbqjlez20JbtZcnsEN5EWzRUcJUZ2//gC0+Pn2D25NcF6fcFS1rqIpVvvtNjKm5If1BK8BHaKByCoK9/H1IaDFNj3o5yVIrn9P7Bom4VodghAtLtDhlC4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767089799; c=relaxed/simple; bh=ikTC7dMS0j+aOW64LriWXLGZXkKoO1gYmsQNBLOSYxo=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=K5WVn/byuyGMFzdagdpC+n4dljNX88VNh9+1wloeYSVR4jPFE8lCQG0saHuipLxssqBDqE3SJiUatTcDsVjDfn1o4YAuO5/DWZi924uZQW/K6cRuaUX22INpAJmhnG9OeOKEfQyD8tbpJ+NQp6/Fy3wq06+yvXAGvovNLI3Cdi4= 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=DcHvO8pL; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=i4RoF07j; 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="DcHvO8pL"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="i4RoF07j" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767089797; 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=x4agnfRlmC5GgzX5Rd2z2Ldj0cW20QjlA2/E3WP30vs=; b=DcHvO8pL73Hb/UKka3D27ZGSX107+HmtPuukfkQqhblKMpjb1xld6BtagDxJZAZsFn6Kev uDVEqgMWcHKcsamuJUjp5rH0jnMQuK3Wm8cGRg8XnJkT6o2DCPDhk4hEOEO2bKBHaVB3xB o2Frk/HY4WVnHqkJPRpx3iQtGYqgww8= 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-461-m2YROyVuM969Cx_mIgC5Wg-1; Tue, 30 Dec 2025 05:16:35 -0500 X-MC-Unique: m2YROyVuM969Cx_mIgC5Wg-1 X-Mimecast-MFC-AGG-ID: m2YROyVuM969Cx_mIgC5Wg_1767089794 Received: by mail-wm1-f72.google.com with SMTP id 5b1f17b1804b1-477c49f273fso125584945e9.3 for ; Tue, 30 Dec 2025 02:16:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1767089794; x=1767694594; 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=x4agnfRlmC5GgzX5Rd2z2Ldj0cW20QjlA2/E3WP30vs=; b=i4RoF07jbiZ9WBc7wJDhu//73X6pQxHb1DqtRSJZsT2eTKQTQoKTjUekZV7lUlwC86 SAi7JTMipA6B6VaLfUpwhfekUYYlnJzc3vCPjKlkBZRQ7BohHUQczZm+8Cbekj9X8i0r Pc5cZkU4g3uzIKARnxfAC0k6ID9y9ce5RoVd+aQ+dDYIqHAuK6U5tqTMjPnd7T1gQMyB rR1ZNAZ7DuuGa4AfQXOggLTDQ5LOTQvHnbCxELTxG7/CiVxsZc3O6qpp4gKsvYgaFE7f Q+bweP8e9W3rtBvqg0TTbNy+vjrUyx++7R94BPDv6S4+7dPMgkdUvMlmEuRFvTD2nTaT Xfyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767089794; x=1767694594; 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=x4agnfRlmC5GgzX5Rd2z2Ldj0cW20QjlA2/E3WP30vs=; b=FhVILyLN/HwrWK6kggHjdGAbismywixEdW5teBkdSXFuRbeTE0PENKscCK8P/NQVcg 2t3WicxMfwauPhM0fy1kd4kUT0HIGYL0qEIRq6yrqdBXDCI2gdv9rUTRaqVcpPWgMXE9 yksmwAFGwSpzvQO1YU0w6sf+3omf+/Npr0MpjCMi00V8wXho22YWGENdA0SeIafho4ji ghOzpKXq2ibpeyKSJj2jWXgpHwI2lfC0Nkfdtk6/SRV3KEBoZjgJjvdytUVKNirfn8HC QBG+Qfz7dG/N05Rv7ZD22LqtO2glPPmVHVpafCZh2JQzv6tzzX6njCiax2NDDMYue6LX PB4A== X-Gm-Message-State: AOJu0Ywzq4ZjD6u9CoewCVod+cEIDE5/f7nj12gnduq8uhzcjLc1ZxRq rubZjU6o7A/0whjr0q8Sod3RMrSdFG82PQ0jeszJMyV8RqvgD34qOAPtf+2kkkIGyobqmP3nOHF Lfsis7dXmd9qw1LvCK8E19puY7evgQctP4SQwr0CXRQ9sqtSWckJoTQna0O7ryB46d212ByNAj0 Hijwv2izEhSgk7bgU0gC8ZiMq+r1xrhr0uA6adUNf59Ak= X-Gm-Gg: AY/fxX62CKe3uSj4ax6ilc5RFwxucU3zUMgjOt0b43/d7BgE4pl1vWpHc2LY9u4KXms WSdI/HNPG6H+m6+vD9yQt4PAJ0oRSrZeAVhw/6erhxjP2fawOmSYzcjDGDur5eOROmv9x0lMJk4 E6JRu/sEoiPfeReklZjLDfloRldzwQDGWxesYQk7f4H/sNihjNQ90251l0jgZkozVUxGwmArvXt 7MH3sGzcjzlxBxL1yuuFWpbISWfzptgZXqqLjtJwhEetcBipZam0fyx6ihXGcXj8bACjFT+1d5t noOLDutZ8HNv/DGZ6IaVX/8Xe8Ag2Bsendk7AtqFm1T2v0StIqzqx1qHidoZpKx9DGzksJdK/jK q9VHEgNeTdlDHe2EVmQBpziZUxddalvlF2Q== X-Received: by 2002:a05:600c:8b8c:b0:477:af07:dd1c with SMTP id 5b1f17b1804b1-47d195aaf01mr352317655e9.35.1767089793845; Tue, 30 Dec 2025 02:16:33 -0800 (PST) X-Google-Smtp-Source: AGHT+IE/8/udlvjg5mJuYpI0a3oxpEJUtwKIPq+rFtOrgdem6Ktq8tTHyeQzy9WGlYRf+5N+zum/GQ== X-Received: by 2002:a05:600c:8b8c:b0:477:af07:dd1c with SMTP id 5b1f17b1804b1-47d195aaf01mr352317095e9.35.1767089793385; Tue, 30 Dec 2025 02:16:33 -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-47be27b28a7sm638896415e9.12.2025.12.30.02.16.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Dec 2025 02:16:33 -0800 (PST) Date: Tue, 30 Dec 2025 05:16: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 , 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 RFC 13/13] vsock/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_vsock fields to place the DMA buffer (event_list) last. This eliminates the need for __dma_from_device_aligned_end padding after the DMA buffer, since struct tail padding naturally protects it, making the struct a bit smaller. Size reduction estimation when ARCH_DMA_MINALIGN=3D128: - event_list is 32 bytes - removing _end saves up to 128-32=3D96 bytes padding to align next field Signed-off-by: Michael S. Tsirkin --- net/vmw_vsock/virtio_transport.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/net/vmw_vsock/virtio_transport.c b/net/vmw_vsock/virtio_transp= ort.c index f1589db5d190..2e34581f1143 100644 --- a/net/vmw_vsock/virtio_transport.c +++ b/net/vmw_vsock/virtio_transport.c @@ -60,10 +60,7 @@ struct virtio_vsock { */ struct mutex event_lock; bool event_run; - __dma_from_device_aligned_begin - struct virtio_vsock_event event_list[8]; =20 - __dma_from_device_aligned_end u32 guest_cid; bool seqpacket_allow; =20 @@ -77,6 +74,10 @@ struct virtio_vsock { */ struct scatterlist *out_sgs[MAX_SKB_FRAGS + 1]; struct scatterlist out_bufs[MAX_SKB_FRAGS + 1]; + + /* DMA buffer - must be last, aligned for non-cache-coherent DMA */ + __dma_from_device_aligned_begin + struct virtio_vsock_event event_list[8]; }; =20 static u32 virtio_transport_get_local_cid(void) --=20 MST From nobody Sat Feb 7 20:57:04 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 443EF26C3BD for ; Tue, 30 Dec 2025 16:40:37 +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=1767112839; cv=none; b=YD+8SUcTjedR7Ydj0yOft9cHjAaULb9SocMO2Tr66XkaljZ71cbkNhjegaRJOIVUUASDVkrBS/FvpmRMkg8D8sC6d4HsBxm7iNvHcdpOe6jd5/Xx0tpAQPX06knVQNDjqrBJJtaHZ7yfSjttbOLYdCfAONeEZLMaH9Vpm3tSxlA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767112839; c=relaxed/simple; bh=R3ssxNR/IfKvvzigNkiBKuIwzZmdFCE30Vek2VE5a/c=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=IMBE9Wexaz9DEiH9YdrB+vmLT1Ex+H0lVkfR8/V65Hp0Wk6HlBeGK2BNyRGlZdhYzuoCuw+igQFwa/e1ASQvxs6mzj5bfFMYf7+6SgU9nEP2cuACmTmvagUhXWT9xmZJzvnzc5+7uZeqqOjX1onF59UgazB4vCglVkJPrIZtb+E= 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=CDo8618x; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=tGsVd1OR; 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="CDo8618x"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="tGsVd1OR" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767112836; 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=7J8z1fD7DSMGZ6iKBx0OqXIx7XfW+ZYePKweShXuH2A=; b=CDo8618xqajMYlrIganDweT8AiGYtCkoWL2waz6M6UJJ78xULg6Xf2r37MrUCzU18evdkK YPMeCIqdnKCMkyIKoc9m3X1R86c2sn8+7/6qBkCYPvCl68I17EVe+Rpai7To6YzRaVdRAF 9xDz/cUdBFkP/auH7HPtWHP0TFdclfw= 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-695-z0WdWdkTMlW48qvYh7DvMQ-1; Tue, 30 Dec 2025 11:40:35 -0500 X-MC-Unique: z0WdWdkTMlW48qvYh7DvMQ-1 X-Mimecast-MFC-AGG-ID: z0WdWdkTMlW48qvYh7DvMQ_1767112834 Received: by mail-wr1-f71.google.com with SMTP id ffacd0b85a97d-430fcf10287so7069975f8f.0 for ; Tue, 30 Dec 2025 08:40:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1767112833; x=1767717633; 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=7J8z1fD7DSMGZ6iKBx0OqXIx7XfW+ZYePKweShXuH2A=; b=tGsVd1ORU0Eh9v8efXZT1lh+FgCYbl5O7LiFefA28EVmRKhFwjKIK+BkIFPA+HquNW I/iCySQ/Hi/bFw5TujZNT95fbDuwnDGI5r2pHqghiLDrfJvQvWAK2OtX6kVUYKSdDHP5 MzILer/dNKCGfsj9rQs5AUI4Y6CUNV8J6pMAB2WE94zrFEkLHx9rWvO9YDwfm5VrO+VR Kl3R35DSLBsN9u6Q9JLMx2Ew0qnQqn4QpfMGN6a9DbosJnFKLKUNTjaoDhXVO+Oh0812 dSSgXSlQks9mbZxqnSW/569qUnJLt2nbu1hdPQdOW8Hob/Bsg2dhVoSViq+DAHYiHGpJ 1LGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767112833; x=1767717633; 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=7J8z1fD7DSMGZ6iKBx0OqXIx7XfW+ZYePKweShXuH2A=; b=uo/I3VyE972djlOpSAjR6Vo6I1dkwbFilqSFcIck8KhHFKmGhcfdOxkmFQku4eYjP3 Wr1V5riMzS2H/srQAjHizaP8p68FWwOvICgqph7OQgCmN+68sILllt8LRiHw0+tM2/1F RXnu2teiWmOB0o6eH36zf6f/iaC+GbXCLxPjDVJi12fPTPW+c8b4/CGQ1fo62G/p+bxq JlxFjp0eq42VOJhEbSSR3m8zxx6C3rBZEpS79K/D0lpn29ppggMzIjfFEy5V2DY19+cC DdnfiFj8BH5d1hpeeMvFt/WsI73FdBDyUAxKDf+4g/zRHr4lB+WJpqLwKFhc2Dfuurbx D31g== X-Gm-Message-State: AOJu0YxQ73fS2Kt9OYnTX8SGGeaiUZYkRzzzSh/owU7ODqHIZVyuXa1r AWfg3O2Hj96UmAKPAjwTJo8XfWjFa6qDIHv23PHeuO5Tc1AVqynZMEIKXGt7TnOogSZ5Hiw/O1y FupesHspMELnX3OPRfUENwJZVNnhkh9h0VcKapG4no4voSkYbAN4R81Wf+M0/iKozO8pkbZioxp IZNP2rlatJDaBPZwuBxh89My/xGwhOfAALSSGD1gDzShE= X-Gm-Gg: AY/fxX5G8FrLQh9Rh2YgdctjwjuhITlPLNzabcOE64uJBA9ma+Bi+Q/+DcxAkIkoL/0 XW6LE7ZxMsbiryT+6tHZpXz4CrjnYL1Ih1wjdKaABYMhLZ2BtYpZ2hM0lmGbNLc8+2A6E0f3uMT iEC2ZRGVMHpDlHLnF4GKHSOBWcvJ7Bee1OlUrQ1d9u7DYBBMzLFnEYaYzTNwcjxyue/bpqgVZy9 mwRBJnofOCkuRniA8NI/LzKwZk4tcmcU1nwDoK2O+Q+ZTZ22J13kVAhH4n9Ge3k8XD1YTE6JSzt /c1GoCv8elPwJ3DFUnOmMr3+GtO0mf4oDa5gBlhiDFndkO4+Hi+165AO9ZG1nMo379NpAM62ik6 gSPfgw8+UMyVeY7bbd3eLc/gE4o0cfWZ9Ww== X-Received: by 2002:adf:f144:0:b0:431:855:c791 with SMTP id ffacd0b85a97d-4324e4c1501mr32588464f8f.3.1767112833463; Tue, 30 Dec 2025 08:40:33 -0800 (PST) X-Google-Smtp-Source: AGHT+IECVSdNBMTG9k8N96cOa931b+MOajxv263SWbXaTmkKbkTS3ub+IC9yjT+L/YMFbjvC3biqWw== X-Received: by 2002:adf:f144:0:b0:431:855:c791 with SMTP id ffacd0b85a97d-4324e4c1501mr32588393f8f.3.1767112832791; Tue, 30 Dec 2025 08:40: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-4324ea1aef7sm69573295f8f.7.2025.12.30.08.40.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Dec 2025 08:40:32 -0800 (PST) Date: Tue, 30 Dec 2025 11:40:28 -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 , 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, "Enrico Weigelt, metux IT consult" , Viresh Kumar , Linus Walleij , Bartosz Golaszewski , linux-gpio@vger.kernel.org Subject: [PATCH RFC 14/13] gpio: virtio: fix DMA alignment Message-ID: <6f2f2a7a74141fa3ad92e001ee276c01ffe9ae49.1767112757.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 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 now 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 platform. Fix by using __dma_from_device_aligned_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. Signed-off-by: Michael S. Tsirkin Acked-by: Bartosz Golaszewski Acked-by: Viresh Kumar --- 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..32b578b46df8 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,12 @@ 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_aligned_begin + struct virtio_gpio_request req; + struct virtio_gpio_response res; + + __dma_from_device_aligned_end unsigned int rxlen; }; =20 @@ -37,8 +42,9 @@ 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_aligned_begin + struct virtio_gpio_irq_request ireq; + struct virtio_gpio_irq_response ires; }; =20 struct virtio_gpio { --=20 MST From nobody Sat Feb 7 20:57:04 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 3A7F5322B72 for ; Tue, 30 Dec 2025 16:40: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=1767112843; cv=none; b=b/d63kLT282wDtyd3HnaU6COIZIUb9I+JhP/ic9izqCk6sRZBjuSKwuwljKHukPgZXxY2ERud9jv5I5nR8a4lHx3SS82Yz3XZtipSv6N7NzFuLrQ6TEfgPrf4TlP+i5pZT7odXBAxHCLg2x9A8XeI4JMaSL+1DW28lBt2Yz2pnc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1767112843; c=relaxed/simple; bh=rJvyv/DkZDnTdlk5mMz+iorYKgEElNGmDI1t8E4mVas=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=ZbiN8g891INRfeFs679gwyd9zqrswLGxmsr6S9RfhTQDNxUhTXdp+PW7olslD3H1eC1vSwKXhfVPn/uKgheUz7LjsGVrbrPy2EXul7VdVgbmEy/I+lfk3XeQb891oEzxOK47YGSdThi5CVWPidQ1cIGsnIQ8g8WaVrUyTKqovOo= 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=PH7LuFAs; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b=QcCA+7eU; 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="PH7LuFAs"; dkim=pass (2048-bit key) header.d=redhat.com header.i=@redhat.com header.b="QcCA+7eU" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1767112840; 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=RGewFge/6sMWyfD/6+VNEsuf36DWmJ0Q3xqEbJz+f7M=; b=PH7LuFAsj6XUk/4EbdGhLB7ISzz7kfm1g7oyx9y3XcUiyKMEa0BuFourlWUkkJpI7KaH6z zPLa7j7LiCDgNlBZNOKqezN6WUIounga/WNnWFpFmLc9Y+/VdByBk7jzhmhTHsxBRFbpX3 TztSEUUMKL7FTjEWi8GQKqU1mw6Yh4w= 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-690-bp2TSxmBN5WpuP0FM-KHRA-1; Tue, 30 Dec 2025 11:40:38 -0500 X-MC-Unique: bp2TSxmBN5WpuP0FM-KHRA-1 X-Mimecast-MFC-AGG-ID: bp2TSxmBN5WpuP0FM-KHRA_1767112838 Received: by mail-wr1-f70.google.com with SMTP id ffacd0b85a97d-4325cc15176so4728905f8f.1 for ; Tue, 30 Dec 2025 08:40:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=google; t=1767112837; x=1767717637; 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=RGewFge/6sMWyfD/6+VNEsuf36DWmJ0Q3xqEbJz+f7M=; b=QcCA+7eUvHQSy2dgFoIzSSIP++kP8Av+SYabpYIOYZ7166/HrUbm8Wno+lYddS7XTp pu4owh2Z3XIEfihGTtHc0VouJz2I4u6P2oJK77qlOPqpIXGrJuKYJq45XfPN6ZT2q6KF 7CpCcVP1lwHuwAdPm+yWlId1+YfXzkTXN+2e96HhbGEh8HNerWSrWqwLJAQ8lDLbCZ8I i7/KnnYBnZO/cxr1ICKKJvD1hjBvU1YnimyFfTST5YTCCJwLe7fBZrfij1ORvxy5Q3Tx srQFSAFtQaumOEHLJiA3iZKM9yr3kTeeG2hdS3jXfIqmNnmCszDLRXgTTDAidcDg4R6o yHRA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767112837; x=1767717637; 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=RGewFge/6sMWyfD/6+VNEsuf36DWmJ0Q3xqEbJz+f7M=; b=DiEeTxcTXAtYx5PJ/JKl7MPs4+RCpq4QD1RbkBCOxqQX4w7h5DAheOG7nT3r5VlCPA O9pSzGNidzZmVZtolicNRiRitX75EPGxuLcNIJ0qQlF5VSNvIGkz8IsrGm+81dDH7q8Q hOhCe02w0mLtCWN/uXinqY19+mlHV815bn/KTjVbHeNqYf5aIRts4/jmy9yLCkjpUPmN SmQXC4Q6FHNuaQLRrp/SwqARwoLxOPwGEDRU+8EgECZR8b7Ms0zZlfPBGAhwg0tJIDnG ukzqUpizB42VxCJExvMBZbogppZj3f4NpngSmR9sLEpqglgGq7RrR+TGQCOhk7kmT2gp wSQA== X-Gm-Message-State: AOJu0Ywk0/bSLqPaOssr1bLJuaUVWfRaFAkXH8MlZRymiC2i/WRaK3wt 4rsWE6MBVfLnuxNOqpJKMhfLXmaBk9uSbhWWgAkyGySsDpQLuG1woKOeYh0EH7GXdevBEqv0Wil XEGRuRT5PDIrMFjz3ppOC/MEGnL3VP5QQaYt1K1HFmi/I+iFB9y9MPfFrFVUaCJNWEmC7iz+k8L i6ZjvMUZ8uBmyKKYy7NN+UkYm2dDOipTg/XgikQadj3qw= X-Gm-Gg: AY/fxX6Y+5EDB7unuGaSINB+kghchh2hPWVG819HkWRLGcNpGEq+vtAEBQN9H6FRK+r DN4Bbp0hU6+VrPxqCqR7XvmaZHRXqnSEXYhmeYbTuzFxXieaAU5fP3SE8NzxRJmcxzcf7Jclz8m s5L3bQ36HsC+Fz3P8JvKOQHS9zaAMObM8fPtI5dRgijrOAVca9u4U7xsNNEm2bmbL2FUHe8cIdd hquFUMJPWtO/6l6r+iFZD4cRiYcLOqFFNeIPn2G1JJiYURHeazsj1pF4Xyp/FZgdSY9mHmqMl2T /m5WDCB/+BZsJHjZkJddY5A4xfOa77Oo8PzP0KGj3Gpfd1qgWGyj2afHAnPlMldFUGwd5oBoB+G 8xKkgC3Wlq1bU9CyT5TBM11jC3pdakcUc7w== X-Received: by 2002:a05:6000:1865:b0:42f:b9f6:f118 with SMTP id ffacd0b85a97d-4324e4cc03bmr47309013f8f.15.1767112837358; Tue, 30 Dec 2025 08:40:37 -0800 (PST) X-Google-Smtp-Source: AGHT+IHJgojb32FwsKVmHhWZwfLhjoCLU41JBrW58xQS8ik2FTwcPC3e2aYiOOV4nGFH+isXC/64yA== X-Received: by 2002:a05:6000:1865:b0:42f:b9f6:f118 with SMTP id ffacd0b85a97d-4324e4cc03bmr47308928f8f.15.1767112836647; Tue, 30 Dec 2025 08:40: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 ffacd0b85a97d-4324ea1af2bsm69151255f8f.1.2025.12.30.08.40.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 30 Dec 2025 08:40:36 -0800 (PST) Date: Tue, 30 Dec 2025 11:40: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 , 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, "Enrico Weigelt, metux IT consult" , Viresh Kumar , Linus Walleij , Bartosz Golaszewski , linux-gpio@vger.kernel.org Subject: [PATCH RFC 15/13] gpio: virtio: reorder fields to reduce struct padding Message-ID: <55e9351282f530e2302e11497c6339c4a2e74471.1767112757.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" Reorder struct virtio_gpio_line fields to place the DMA buffers (req/res) last. This eliminates the need for __dma_from_device_aligned_end padding after the DMA buffer, since struct tail padding naturally protects it, making the struct a bit smaller. Size reduction estimation when ARCH_DMA_MINALIGN=3D128: - request is 8 bytes - response is 2 bytes - removing _end saves up to 128-6=3D122 bytes padding to align rxlen field Signed-off-by: Michael S. Tsirkin Acked-by: Bartosz Golaszewski Acked-by: Viresh Kumar --- drivers/gpio/gpio-virtio.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/gpio/gpio-virtio.c b/drivers/gpio/gpio-virtio.c index 32b578b46df8..8b30a94e4625 100644 --- a/drivers/gpio/gpio-virtio.c +++ b/drivers/gpio/gpio-virtio.c @@ -26,12 +26,11 @@ struct virtio_gpio_line { struct mutex lock; /* Protects line operation */ struct completion completion; =20 + unsigned int rxlen; + __dma_from_device_aligned_begin struct virtio_gpio_request req; struct virtio_gpio_response res; - - __dma_from_device_aligned_end - unsigned int rxlen; }; =20 struct vgpio_irq_line { --=20 MST