From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from CWXP265CU008.outbound.protection.outlook.com (mail-ukwestazon11020138.outbound.protection.outlook.com [52.101.195.138]) (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 067DC29C325; Mon, 27 Apr 2026 15:27:28 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.195.138 ARC-Seal:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777303650; cv=fail; b=h8lziy1ngj5EbDNYSVdah/kdXUvIqb1YswNswSMrjKav0PBx9/eoReZwxnDi7E0KaNO02khQp469BOoaRsbd7rtKO64mRy0Bq4sBOjzZy4/Zx11qw1MfV++6IJLEJ/DKR7ipGboiehbrZVgrwefSai1J7Eia/uC8vPOpvt3NktA= ARC-Message-Signature:i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1777303650; c=relaxed/simple; bh=vE/qIBkzt+SoCYhhVQ97vSpQlkkOxCN+vLeQ7rGzHE0=; h=Content-Type:Date:Message-Id:Cc:Subject:From:To:References: In-Reply-To:MIME-Version; b=bXa05ANdfAcfOr5+QoOeEuRkQzyPWiDTKcQ6tOpGhu/4oGXkWoRNtvzapTpBzm0Vmx5RSTL53RATOc/gnle3+nN+iFPJ2LTW7ru+9WaFQoqBFKQXiedZ4hOjKf1OpQ76z9pWjpoccken2Zi0GQBQ5IbUlyLz7wgs/PWuOI/PV8w= ARC-Authentication-Results:i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=garyguo.net; spf=pass smtp.mailfrom=garyguo.net; dkim=pass (1024-bit key) header.d=garyguo.net header.i=@garyguo.net header.b=UAXin7wT; arc=fail smtp.client-ip=52.101.195.138 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=garyguo.net Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=garyguo.net Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=garyguo.net header.i=@garyguo.net header.b="UAXin7wT" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XXRLok/2HoWqb5OP6VqjkayyKHG4yQdCzZt8Lu75ux4KOJuqaMh7tUspVR8SPljpsCNyHK3XG0O3K5F+DF/+yV0gJZsw3DXOW9q6ceS4r1sQWlFpk/x+LMe/s/suOA2mfa+IStn4f/C4LOTLC/jSjn7xStuw1IwlgFET1nbOub5BjAUepv+sCN0FqqT3KuQIMq9pYxNXYYOEp7rI3SyJlRadpnfhjYHUUp6QXbG/PyKCtuQpt4uKpXXASMRoFfr3Gq6Uy+C49ueAkycndF/yF5dV6pVyPn/wZsgIb3qxle3EP6cATkcmxWL13ECgVrtf8RYy+xTDXnI6Vpr7PvDH/w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=iNZmHTGe471kIVIL4xdxKcZDsUrytI9jitdwsfdKkRE=; b=tCBiaEtqEvDAActNQfrkurB//Me19xYheZZhL2czT24BVORxDO6JPbcyovijAHg3tEQ6/q42SYDUr74/qo8F+hnRy+DtdMWI2JLqtnj1dirRWl2RW6EKpaiGv11J66sahIc4ZA8l85C8NCT+1dR+XaIA25HjwjwaRq3KGUBahIQn8sn9bTIv/Z7YeKefUyGFofKt/vkdfPyNtTIs1sjGakgziZcums/p3xnCGGepC6QiRdn3OQF9kt3TgWYPEXGd+QOL20oQ5z7VZqh1puAoQrGCibk66sg6FLHiRxBzw4qao4fG1iw4PGL+0pctODTcVzfsV4zvyZFRMnA5acFR5A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=garyguo.net; dmarc=pass action=none header.from=garyguo.net; dkim=pass header.d=garyguo.net; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=garyguo.net; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=iNZmHTGe471kIVIL4xdxKcZDsUrytI9jitdwsfdKkRE=; b=UAXin7wTZmshiPQHnZ4S6x3zBENPO2l6iQkjGugc0jvFu9HdYtulx2lthBAk5/MduT8kuzWt9YrOeonz3+uL92ZwpkZKUJucvJ6zIPYZRyttvyWWsBr5gA3IAPM+88S1JNjmprBF97BCnQ6QoZ20ggtHt9ikguJ2ohAALgu1zdM= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=garyguo.net; Received: from LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:488::16) by LO8P265MB7935.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:3a8::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.26; Mon, 27 Apr 2026 15:27:23 +0000 Received: from LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM ([fe80::1c3:ceba:21b4:9986]) by LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM ([fe80::1c3:ceba:21b4:9986%4]) with mapi id 15.20.9846.025; Mon, 27 Apr 2026 15:27:22 +0000 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=UTF-8 Date: Mon, 27 Apr 2026 16:27:22 +0100 Message-Id: Cc: , , , , , Subject: Re: [PATCH v2 03/11] rust: io: use pointer types instead of address From: "Gary Guo" To: "Andreas Hindborg" , "Gary Guo" , "Greg Kroah-Hartman" , "Rafael J. Wysocki" , "Danilo Krummrich" , "Miguel Ojeda" , "Boqun Feng" , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , "Benno Lossin" , "Alice Ryhl" , "Trevor Gross" , "Daniel Almeida" , "Bjorn Helgaas" , =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= , "Abdiel Janulgue" , "Robin Murphy" , "Alexandre Courbot" , "David Airlie" , "Simona Vetter" X-Mailer: aerc 0.21.0 References: <20260421-io_projection-v2-0-4c251c692ef4@garyguo.net> <20260421-io_projection-v2-3-4c251c692ef4@garyguo.net> <87cxzkqybd.fsf@t14s.mail-host-address-is-not-set> In-Reply-To: <87cxzkqybd.fsf@t14s.mail-host-address-is-not-set> X-ClientProxiedBy: LO2P123CA0030.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600::18) To LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:488::16) Precedence: bulk X-Mailing-List: rust-for-linux@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: LOVP265MB8871:EE_|LO8P265MB7935:EE_ X-MS-Office365-Filtering-Correlation-Id: e3b3877c-05cd-41ca-ff88-08dea4717a97 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|7416014|376014|1800799024|10070799003|56012099003|18002099003|22082099003|921020; X-Microsoft-Antispam-Message-Info: t/KhFymq8ftn1YMzvdrNMm7d213u337G21EHc93nQdPmPE74Hp7oVhUARH7/0IWbs0X+q2FYXMZoq5OUx4IGOaEId1ZH4pcQ2IT3hhc9bWuJsmBSauijpFRjPRxwPcyJch2jiFgweC8FZXzMEpx9Ol3JVW7UMluHUxlyzSiDoy0RSx6GaXnPthrLyQaIVnQZK4ODnRkVG+UhOFlg3rbwklGvHr0qsPfqHLXTu1REbxK4CmnrcrwsBqtGBcpK9UwTrNZl+L4syhZjjoloiRnc/VVIAX+K66htzIITY9V52kAVpVVd6dCBGtiZDMS1PdmIFVaAFt2TLX/cSsCSeoOJyyCsEgDhHBu+PxZUw4SHJ/LnNaSwW6PEzVGRVhhux+IETQq7tuQl+/rD2IVkXqfRLRwLN0P1UmILFLVq2iBlZZcj4plADzBinmJrpBS4qSRtI3m+Pm16fqh/oCroY7RmHlEMPrTflk1skRLPtbe9pvD/8d6neDzIFelznXkGyHbxwvKg/l8HjbHdYtfYuyISRvCdSd3kUeXhT12pXz+kbPl2K7vFCcoIDafwB16Pk8iSyzdS0FwD0mtUV9/wW3cBs5RCsC4RM+ubuf53QZFmdNRngeacXDz0bPDcXfI7OAXl3vBbHqGQjeUhwYDZmOLp6umwxx474SawkVYMNRCm3AcHBiI+JGCEgm7DSqqazzkjoxZ1PoIu+PErlt1u8+QyTWiLZLEqVgadnFNkC6tAw8Fj5qe99vyNVVBol0L86jwWMNYVXMiy1umM8lesKmMCOA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(366016)(7416014)(376014)(1800799024)(10070799003)(56012099003)(18002099003)(22082099003)(921020);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?cDcxeHJXVkZyZERLZ1d1MTVwNkJGaVk0MnNTejA0ZXVIVS9zZldJR3d4WFRo?= =?utf-8?B?a01xWEdFSzlDT3JvTkQrTlM4TFVTK1l1QnZYL1dhZ0ViZTIzM2RqUWVsVG9W?= =?utf-8?B?R3BZUjk4b3cwLzJBR1pwTks1RmRMY3B6QTRLbkdGVGJqZ0cwaStkVkJBZUQr?= =?utf-8?B?T0FFT3FGQkFOWEhaVnh0VkNtU05XYUF6R3JMRjVTNjZkckx2ck1ubFRHV0tH?= =?utf-8?B?THVwcGNLeDhESlJhMit6WWhZdDF4SUZqR3ZMalRDMmZIRDgvNmR1eTVld3oy?= =?utf-8?B?NDBaSlgxQ0N4eWtkc1VMNXIyNGZmakIzMmtNd2h2cmRHZmZvM0FYb21qd2s0?= =?utf-8?B?SDI4OWprNm04aHFIUnFDWWNMOFRlalpGZGpidllsRUw4eEtTQXEvYnZlY3Yx?= =?utf-8?B?ZHpIdFpSeTlWSUNUTklKbnU3NHVBb3NNVVhaSFJSZEEySnhEQkZUdGtXVlZX?= =?utf-8?B?TlZ3NTMydWR4aFlQamJnb0RCUm1rek1ySXcvdFk0NDJtRC9oSTJUZzIrUmVa?= =?utf-8?B?dDYrSEtTOTZpalpmOG5pMjBEbE9qakx6dS83RUR2ZXpRWE9tM1NwWkRrNm93?= =?utf-8?B?cnZMOXUyRkFqU01LRGhZQ2IvUW1KeUNEb3pMNk5aNUhHR0ZFd0lXMk01dGlo?= =?utf-8?B?UlhJRStuY2dITFRoeXhwS0dPNjNpdzkwQWFWTlhPeHJsdlZJUFNISFJ2b3Aw?= =?utf-8?B?MExtaDRYY01xTExjNGlmQWpRR2pWOHNMYXJreWFwUFRMSFpWZ2JGZ1JqKzVl?= =?utf-8?B?WmRMRTZvK210cTZadWZEMUdnRzlQdERRY1I1NzZtSVRsVElDbEdoVXdlSjE2?= =?utf-8?B?OVN4TUhLQ1huMUxnVFc2RG9nakJuMkRkblkxa3Q5QU16R0E1WlRkZjRwVlU5?= =?utf-8?B?M2dONE05blhVMFc5d3NZQ2V4TjZEWWZLYzExTllnSk11dWNkdk9yNGx6bnVj?= =?utf-8?B?VU9LR1ZsRkowcHZrNHUrMnp5V01uOWYycTVZeHJJR2FuU2didHV3Szc2ZEwz?= =?utf-8?B?d3dtQTV2TDl3dlJseXIxY3d6MXRLSnBUajMrRzdiMU1CRWtDbDhOWmxaRUI4?= =?utf-8?B?aDhwL0orSHlOc2VMQzliRVN0b3ZaN2dSczdiUS9OZ2ZIZERWUW1GNS9oRnds?= =?utf-8?B?dkozRmJlVVJydnJDMTlvZVZUa3hibUQ1a2J3L3QxdTFSb092cXQ2TWswZ1BO?= =?utf-8?B?NHg3aVZ5T2k3dUpkMElVLzRqbExhTnZ3YWwrNWFCdkxuaEp3ZGVGc0tXSHMw?= =?utf-8?B?UUdscUtMSWFheW9tTk9WWkl3TFZaZ2srUTV6WWZSdFFIZmN3TWRrVXNzQ241?= =?utf-8?B?QnFhc0ZxenBybUtpN2txSUVQMTB5Rm15c3pMamZkQ0IyOGc5U00zeTVHZXRP?= =?utf-8?B?WmhqSjBKK2JDYndGUGxSbzRmcEJWeWo5YTJ0UjVaWUh1d01xamFMSGlUMEZP?= =?utf-8?B?ZXF2Mlg0WkFMbFBRNWs1dU0vR0FFcWd1VDRPYkZPaWk4S2JuNGhVNGhleXlQ?= =?utf-8?B?SFlaR0N1SXJDY2lkR3UrSVM0N29wQXprYTl1RTFEengwenR2RE9VdWZ2cGQ3?= =?utf-8?B?MVlWUGNyemg3MHlkT1NDSWhnRVM2dzNNQ2lqUDhQbVAyd0pvc3JOREo4enI0?= =?utf-8?B?N2hhMG15SUNxazF1U3U4MERJa1BGNzZEVURRa2ZuZkZGamI2NEhIZGRnL3ha?= =?utf-8?B?dXhvZFI4cFcxK1JjU21ISlcybE9FNkU5NzVZcFYzcGcrY3V2WllHVTVwei90?= =?utf-8?B?Rnc5Y2RrcTl0a2pZb1paTmZaMnZibmZUb1FXc082b1d1eFZSL3BxMm9FWEZQ?= =?utf-8?B?QWpTNVRUZjVONnBjNklGK01pYVZZYUdablgyNXJuUEUxbm50ekg0eTF5Sm9S?= =?utf-8?B?TG9mMHo4WnVLeWJsRnY5aHJ1T0ExNW5PM2lqK3RWS1lyamkxaVRVb2laT01G?= =?utf-8?B?R29HQUhlWVRFRGZrakZHWEVQSkZyYXdXUlB5R0pTQUIwT1p4K0F6cktmdzZz?= =?utf-8?B?YjhXeXpSUDVqb2ZtdTZyZ3N6N3NnMFIvUjJIWnNVVkhKWXhNUGV3Z0I0aFVk?= =?utf-8?B?bUMyazl3OEJqQmZKeUgzTG05cnhzSE1qM1lETFpjMlI0VHBMUXZZc1oybVFQ?= =?utf-8?B?WHo2aVpWKzNLSDIxVVllNnJ6aVY4ZDFsOG02ZVhGK01iS2UyY0RNcUhWczdX?= =?utf-8?B?M1kxMnBFdXdwUjFsM3RLU0h6OXJONXk0VG01cUlSVUlsMkZJOHlFT2lvSGNa?= =?utf-8?B?WFU3cHNFa1hDR24xR2Jlam9wSEY3bi9CVzJqbVp0NUxyQ2wvWTZNVGwvZVpx?= =?utf-8?B?WkNNSWtFdkhRQXRBdEpOSjc1eStiYSt0QXgvSDZ0bEpLSHd3amdtZz09?= X-OriginatorOrg: garyguo.net X-MS-Exchange-CrossTenant-Network-Message-Id: e3b3877c-05cd-41ca-ff88-08dea4717a97 X-MS-Exchange-CrossTenant-AuthSource: LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 Apr 2026 15:27:22.9155 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: bbc898ad-b10f-4e10-8552-d9377b823d45 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: zpyA+8xOjESN2t4CSL63BiSBpkZCRmdfGn1FLWfroH/hxc4vz7xEB7Gi/H8AxMX5ke9RFBuj79itQdqjHtMgBw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: LO8P265MB7935 On Mon Apr 27, 2026 at 3:20 PM BST, Andreas Hindborg wrote: > Gary Guo writes: > >> This carries the size information with the pointer type and metadata, ma= kes >> it possible to use I/O projections and paves the way for IO view types. >> >> With this change, minimum size information becomes available through typ= es; >> so `KnownSize::MIN_SIZE` can be used and `IoKnownSize` trait is no longe= r >> necessary. The trait is kept for compatibility and can be removed when >> users stop using it for bounds. >> >> PCI config space uses only offsets and not pointers like MMIO; for this >> null pointers (with proper size metadata) is used. This is okay as I/O >> trait impl and I/O projections can operate on invalid pointers, and for = PCI >> config space we will only use address info and ignore the provenance. >> >> Signed-off-by: Gary Guo >> --- >> rust/kernel/devres.rs | 2 +- >> rust/kernel/io.rs | 123 +++++++++++++++++++++----------------------= ------- >> rust/kernel/io/mem.rs | 2 +- >> rust/kernel/pci/io.rs | 74 ++++++++++++++++++------------ >> 4 files changed, 99 insertions(+), 102 deletions(-) >> >> diff --git a/rust/kernel/devres.rs b/rust/kernel/devres.rs >> index 3e22c63efb98..ea86e9c62cdf 100644 >> --- a/rust/kernel/devres.rs >> +++ b/rust/kernel/devres.rs >> @@ -101,7 +101,7 @@ struct Inner { >> /// impl Drop for IoMem { >> /// fn drop(&mut self) { >> /// // SAFETY: `self.0.addr()` is guaranteed to be properly map= ped by `Self::new`. >> -/// unsafe { bindings::iounmap(self.0.addr() as *mut c_void); }= ; >> +/// unsafe { bindings::iounmap(self.0.as_ptr().cast()); }; >> /// } >> /// } >> /// >> diff --git a/rust/kernel/io.rs b/rust/kernel/io.rs >> index 0b9c97c0a1d7..1682f2a0d20d 100644 >> --- a/rust/kernel/io.rs >> +++ b/rust/kernel/io.rs >> @@ -105,8 +105,8 @@ pub fn new_region(addr: usize, size: usize) -> Resul= t { >> impl MmioRaw { >> /// Returns the base address of the MMIO region. >> #[inline] >> - pub fn addr(&self) -> usize { >> - self.addr.addr() >> + pub fn as_ptr(&self) -> *mut T { >> + self.addr >> } >> =20 >> /// Returns the size of the MMIO region. >> @@ -166,7 +166,7 @@ pub fn size(&self) -> usize { >> /// impl Drop for IoMem { >> /// fn drop(&mut self) { >> /// // SAFETY: `self.0.addr()` is guaranteed to be properly map= ped by `Self::new`. >> -/// unsafe { bindings::iounmap(self.0.addr() as *mut c_void); }= ; >> +/// unsafe { bindings::iounmap(self.0.as_ptr().cast()); }; >> /// } >> /// } >> /// >> @@ -217,14 +217,14 @@ pub trait IoCapable { >> /// # Safety >> /// >> /// The range `[address..address + size_of::()]` must be within = the bounds of `Self`. >> - unsafe fn io_read(&self, address: usize) -> T; >> + unsafe fn io_read(&self, address: *mut T) -> T; >> =20 >> /// Performs an I/O write of `value` at `address`. >> /// >> /// # Safety >> /// >> /// The range `[address..address + size_of::()]` must be within = the bounds of `Self`. >> - unsafe fn io_write(&self, value: T, address: usize); >> + unsafe fn io_write(&self, value: T, address: *mut T); >> } >> =20 > > In v1 you had a requirement for `address` to be aligned. Why did you > drop that? In v1 Alex wants me to split this part to a separate commit as this is a pre-existing requirement that is just not documented. The patch 4 is that change. Best, Gary > > > Best regards, > Andreas Hindborg