Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2225779/?format=api
{ "id": 2225779, "url": "http://patchwork.ozlabs.org/api/patches/2225779/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-pci/patch/20260421-io_projection-v2-7-4c251c692ef4@garyguo.net/", "project": { "id": 28, "url": "http://patchwork.ozlabs.org/api/projects/28/?format=api", "name": "Linux PCI development", "link_name": "linux-pci", "list_id": "linux-pci.vger.kernel.org", "list_email": "linux-pci@vger.kernel.org", "web_url": null, "scm_url": null, "webscm_url": null, "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260421-io_projection-v2-7-4c251c692ef4@garyguo.net>", "list_archive_url": null, "date": "2026-04-21T14:56:18", "name": "[v2,07/11] rust: dma: add methods to unsafely create reference from subview", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "ed4be0df108e6784d13078360dc3d22e41f50d65", "submitter": { "id": 76823, "url": "http://patchwork.ozlabs.org/api/people/76823/?format=api", "name": "Gary Guo", "email": "gary@garyguo.net" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/linux-pci/patch/20260421-io_projection-v2-7-4c251c692ef4@garyguo.net/mbox/", "series": [ { "id": 500833, "url": "http://patchwork.ozlabs.org/api/series/500833/?format=api", "web_url": "http://patchwork.ozlabs.org/project/linux-pci/list/?series=500833", "date": "2026-04-21T14:56:19", "name": "rust: I/O type generalization and projection", "version": 2, "mbox": "http://patchwork.ozlabs.org/series/500833/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2225779/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2225779/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "\n <linux-pci+bounces-52845-incoming=patchwork.ozlabs.org@vger.kernel.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "linux-pci@vger.kernel.org" ], "Delivered-To": "patchwork-incoming@legolas.ozlabs.org", "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=garyguo.net header.i=@garyguo.net header.a=rsa-sha256\n header.s=selector1 header.b=W261OWEU;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=172.234.253.10; helo=sea.lore.kernel.org;\n envelope-from=linux-pci+bounces-52845-incoming=patchwork.ozlabs.org@vger.kernel.org;\n receiver=patchwork.ozlabs.org)", "smtp.subspace.kernel.org;\n\tdkim=pass (1024-bit key) header.d=garyguo.net header.i=@garyguo.net\n header.b=\"W261OWEU\"", "smtp.subspace.kernel.org;\n arc=fail smtp.client-ip=52.101.100.95", "smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=garyguo.net", "smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=garyguo.net", "dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=garyguo.net;" ], "Received": [ "from sea.lore.kernel.org (sea.lore.kernel.org [172.234.253.10])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g0Qfc4Qksz1yGs\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 22 Apr 2026 01:06:16 +1000 (AEST)", "from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sea.lore.kernel.org (Postfix) with ESMTP id 7F38D30BEA85\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 21 Apr 2026 14:57:37 +0000 (UTC)", "from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id BE7983D6470;\n\tTue, 21 Apr 2026 14:56:41 +0000 (UTC)", "from CWXP265CU009.outbound.protection.outlook.com\n (mail-ukwestazon11021095.outbound.protection.outlook.com [52.101.100.95])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 0C41A3D9DAC;\n\tTue, 21 Apr 2026 14:56:37 +0000 (UTC)", "from LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:488::16)\n by CWLP265MB5674.GBRP265.PROD.OUTLOOK.COM (2603:10a6:400:1b0::13) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.16; Tue, 21 Apr\n 2026 14:56:30 +0000", "from LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM\n ([fe80::1c3:ceba:21b4:9986]) by LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM\n ([fe80::1c3:ceba:21b4:9986%4]) with mapi id 15.20.9846.016; Tue, 21 Apr 2026\n 14:56:30 +0000" ], "ARC-Seal": [ "i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1776783401; cv=fail;\n b=K277uUiGqIwjq2piGUrabQuSVpVsnsJBK0MuQmdIJcSvzQADdt+Yp3rPyqT5aWolBPs19q0ArS5IFQzNTz/UXPcaeBgSPSidfujeCf4ICNVzlnoMrulxwgpr55eGbTMiGy4DS4J8/HogXFQdeBCPY/BU8choQfXETPqBVWzXP30=", "i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=G5Z9y3acjMC+zGKZnH1pF9j3SwpJCGv0tc8M702z9xfxEx8kweG1NVxsRAoWJUmMkWjiv9H+KBDxDY3rqHAR+8p117jyaPt6p/GBZfL+YQcMgkffx+7rhb5QiNdefOLh2B50csWjJr/d+HpnvKeOXF+Y7EEUZhzf9V8WcSzJvi5P6/44v7bsXB6WT8JjQD9I9O1B8tnEvqNmY+D9MC3HWLBAgH+TaCaQT3UToexpw5lnD8y83MfW1XVgbUovCRXdZL6gznaCZ6+jxVVMyg8WfBo8pPtcIUFhJ3GZFG1r/wnRW39g06NFFO2tniTKpG1SYuRPrCADxt8TlNAn9MmVXQ==" ], "ARC-Message-Signature": [ "i=2; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1776783401; c=relaxed/simple;\n\tbh=aOfLPip234jwbtfUDxAEqballSOb6fOW5cF0Oh7xboU=;\n\th=From:Date:Subject:Content-Type:Message-Id:References:In-Reply-To:\n\t To:Cc:MIME-Version;\n b=m+XRNsHmLUQcLFSbVKYyeFxo5q507nWLxUWSxtGZpeDX/tWk88l2flLdKrtgG6eMfSoSDw0Ricr8hnOBDYJdKRQjKGUCaDs6ClpseQcpnwklDqq+QatbJewlEN8BkM+HXxNJwnV0Df3AeWfYyFuu2E14TNk9hk+bSshqa+3sIjQ=", "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n 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;\n bh=vXLe8WC7UCzcv5FezZO2TXpBmQPZnCQW8VAR9ImGU28=;\n b=hEOu2tEvK29BwVWqsEUwM4bXxoxCyzKCbzn7x/xXx52iTa7hvesMziyD3Au/YEneX/+hX4yK8uEWTnAfwvVRZqVljJVJXlRbP/12c2lf+7foL1bbSyYdX/ji8H+IAKkG/IqMdVTaNDfmJ8x8QH6ALcbhl8Eab2o0qpYizXECujSb7qf6QeEcr3FykxImSh1pmwAtwWk7KdKZvFbg0iI95sdKQRingJRU4kwFd6xZ2+YetfraFB9Q+6Jff/i5Byo/qS+9we9clD7gTodHIYo5TpJfnkDXCOHU9xlpruAnbOg3XNiWlmdEqOD7lRYkpw2TICQfBZG6lmzCEmo41r/hWA==" ], "ARC-Authentication-Results": [ "i=2; smtp.subspace.kernel.org;\n dmarc=pass (p=none dis=none) header.from=garyguo.net;\n spf=pass smtp.mailfrom=garyguo.net;\n dkim=pass (1024-bit key) header.d=garyguo.net header.i=@garyguo.net\n header.b=W261OWEU; arc=fail smtp.client-ip=52.101.100.95", "i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=garyguo.net; dmarc=pass action=none header.from=garyguo.net;\n dkim=pass header.d=garyguo.net; arc=none" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=garyguo.net;\n s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=vXLe8WC7UCzcv5FezZO2TXpBmQPZnCQW8VAR9ImGU28=;\n b=W261OWEU8baWiolRoGviCQDonJGZ57t28SUEd35/0TjcHPvRblye6nLkeGpQSEy4Q72GzClM8NDQLupe2qrm/jkVmhmkJMV7v5N6mE20fw6IJ58+Lm4BZDTOEeQcGdmRwvHf4z9tKtVoie8uoXrVljRKIgTUtbmUGhLq5tOOU3U=", "From": "Gary Guo <gary@garyguo.net>", "Date": "Tue, 21 Apr 2026 15:56:18 +0100", "Subject": "[PATCH v2 07/11] rust: dma: add methods to unsafely create\n reference from subview", "Content-Type": "text/plain; charset=\"utf-8\"", "Content-Transfer-Encoding": "7bit", "Message-Id": "<20260421-io_projection-v2-7-4c251c692ef4@garyguo.net>", "References": "<20260421-io_projection-v2-0-4c251c692ef4@garyguo.net>", "In-Reply-To": "<20260421-io_projection-v2-0-4c251c692ef4@garyguo.net>", "To": "Greg Kroah-Hartman <gregkh@linuxfoundation.org>,\n \"Rafael J. Wysocki\" <rafael@kernel.org>, Danilo Krummrich <dakr@kernel.org>,\n Miguel Ojeda <ojeda@kernel.org>, Boqun Feng <boqun@kernel.org>,\n Gary Guo <gary@garyguo.net>,\n =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= <bjorn3_gh@protonmail.com>,\n Benno Lossin <lossin@kernel.org>, Andreas Hindborg <a.hindborg@kernel.org>,\n Alice Ryhl <aliceryhl@google.com>, Trevor Gross <tmgross@umich.edu>,\n Daniel Almeida <daniel.almeida@collabora.com>,\n Bjorn Helgaas <bhelgaas@google.com>,\n =?utf-8?q?Krzysztof_Wilczy=C5=84ski?= <kwilczynski@kernel.org>,\n Abdiel Janulgue <abdiel.janulgue@gmail.com>,\n Robin Murphy <robin.murphy@arm.com>,\n Alexandre Courbot <acourbot@nvidia.com>, David Airlie <airlied@gmail.com>,\n Simona Vetter <simona@ffwll.ch>", "Cc": "driver-core@lists.linux.dev, rust-for-linux@vger.kernel.org,\n linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org,\n nouveau@lists.freedesktop.org, dri-devel@lists.freedesktop.org", "X-Mailer": "b4 0.15.1", "X-Developer-Signature": "v=1; a=ed25519-sha256; t=1776783386; l=3238;\n i=gary@garyguo.net; s=20221204; h=from:subject:message-id;\n bh=aOfLPip234jwbtfUDxAEqballSOb6fOW5cF0Oh7xboU=;\n b=9cwJCopkLJXLfv+fchvQXU2DAVsu9tkTmCIoRC61SlzZ7JqVJKLjnY7m9FcMHshN3o/tpWmGu\n eece+sVYDhlCTmfdJvjXTSH38fFJxTltLkHqs8un0ekriNLG//JKnNR", "X-Developer-Key": "i=gary@garyguo.net; a=ed25519;\n pk=vB3uIX95SM4eVrIqo1DWNWKDKD2xzB+yLLLr0yOPYMo=", "X-ClientProxiedBy": "LO4P123CA0142.GBRP123.PROD.OUTLOOK.COM\n (2603:10a6:600:193::21) To LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM\n (2603:10a6:600:488::16)", "Precedence": "bulk", "X-Mailing-List": "linux-pci@vger.kernel.org", "List-Id": "<linux-pci.vger.kernel.org>", "List-Subscribe": "<mailto:linux-pci+subscribe@vger.kernel.org>", "List-Unsubscribe": "<mailto:linux-pci+unsubscribe@vger.kernel.org>", "MIME-Version": "1.0", "X-MS-PublicTrafficType": "Email", "X-MS-TrafficTypeDiagnostic": "LOVP265MB8871:EE_|CWLP265MB5674:EE_", "X-MS-Office365-Filtering-Correlation-Id": "0e47ee9d-3303-49aa-75ad-08de9fb62b99", "X-MS-Exchange-SenderADCheck": "1", "X-MS-Exchange-AntiSpam-Relay": "0", "X-Microsoft-Antispam": "\n\tBCL:0;ARA:13230040|1800799024|376014|7416014|10070799003|366016|921020|22082099003|18002099003|56012099003;", "X-Microsoft-Antispam-Message-Info": "\n\tPKeaGTdBH7YXZxXtJ+UU8G4qrqRLQvvlFf4rvHURRzJ6pwaVlmtlM2LUlocHjvBIHkcS6+12VOEcWWXrGZQDOc+w2CwPx3k6v1QiecJpVmwqsExdb/dIxpmITMiw5ZCxQUBO6R/sGSZol5qmGXRBxNrfuQwQDE6sLvesOZ0iEzVr5jLHVRPtuCYMJgisDlcHxt+oCM7xIcNnf5PEfXK2F+mTti3iTHfR/r5fDfOeE3qhU2RR5R47MPUDcEG3nvWLTuyoWuSiu8iwdgMreCmw0Sy8MrG6MIVQ8wA83H7VqiCQElFTFX8Q2DVkXToSINl7XHFOVylS49GWlJT2PSMg3AZ0JdZZo6MMknCoiaC/U1bqdlyeG2LL2n/0MxHkOWC3aJaIfF6IPOLOlPRjijnd7x3S13as0a0dPvQ6HFMNmCuKcmG/kuV20tngjhpmVkbSwAdIPx/ROvxlcpLUAqLlw26DMZXklQNbR0Yn63bzp9UPx1+lkCDHlWEVQ7QvPPMjt8T3PI+9/FxDybX/GIGBJxcEM/1xNe0HzQaSv5HtADU5FKjNLAJaW5Wv9sxILd9B/FT34wPCh1v+VwtwLNCbI0Ye6SxCMiRq+BRpxNqD6Njvpq8R7LZ9C6GONozjsHirPThODHDV/SNTABuLOmnFGHrukc3ixHfU4ru6gf4aBbwjNXmIaqCv8DsX78lyynECtI+An965Q+2rjJjpE2tcTppQLEm5wnW0OqmZr6oBgL0AOvb9RC4QxmVrwNXdhs962XER8Rm89OYxbD3UFRawZQ==", "X-Forefront-Antispam-Report": "\n\tCIP: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)(1800799024)(376014)(7416014)(10070799003)(366016)(921020)(22082099003)(18002099003)(56012099003);DIR:OUT;SFP:1102;", "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1", "X-MS-Exchange-AntiSpam-MessageData-0": "=?utf-8?q?977/gABrdzcrmsNB6xaQo/e3JIU0?=\n\t=?utf-8?q?rmSVUWIo9meVKVRaVzC2g0UO9tvNIi6H+NFB0g+aYZ1TdkNtc6ba0o/VsdGFC0sEv?=\n\t=?utf-8?q?qgz1hBuQWzOj363Vh24WjCFq2gzU8al56OKYKNOkmGiInfoZBPBuix8j+eSCGa/PA?=\n\t=?utf-8?q?6w45Hj8/6BIedw/Hl4fee2INmhDIiSL6/yJQb+6MX6T9fW9gsfMCzUW5gau6GAhHK?=\n\t=?utf-8?q?AAunh6hyyfKClx0JJHuYD0MTeNhTBIiDKkqHxQl8aHJ1BeoFDKCLOvxiFYuvmY9VP?=\n\t=?utf-8?q?Pc2Q/LJYjTlb+d7Qf5jMQ4qatwjljP/zKDibSeK8e5KSvCs7FIEclP77D433owVOy?=\n\t=?utf-8?q?LvfK1sRe2ZEcJL8k03HVV37vnVfmnuC0cenAuYrTFoc9WPCvTg3M6m9CNl+PAzxdM?=\n\t=?utf-8?q?tU0qji2soz8AZh7PujAc/EDRHmDQGKclAThZ3cHuxolLZj06bb3S9J6TFwX1IAz62?=\n\t=?utf-8?q?ro0WyKZATioUVCUTXQrG68KSO7JlyE5vlAEHb01OiUu94G5JA+6CYU+74iwuviMvw?=\n\t=?utf-8?q?Uflw9r1jG3GUR1ovo7O9HBRea8A90pDx5TtLHMnuDZFmIqofx5FBjXXTXPuziNzbj?=\n\t=?utf-8?q?8zkL1FPD912TD7Xr9WwW6EQi3xxH9000q2ezx8SiSy17ta73pt4xlpl1PtOqSj9vJ?=\n\t=?utf-8?q?93hyVU5B3GY14vPg1JoK/2e+YVlllUXclP9wCFFB4JNdSn6V/4VTsl5AGA18G5kWK?=\n\t=?utf-8?q?qDatWuO+jImj5FUozjOcRUmhBhr72XqN27GDrjrslEGSyL2y1uUTXMWcw4BDtsZau?=\n\t=?utf-8?q?q6FDND7CdR/J790Uxuf1pT1EWk/QAfPTKhxKYwYPywqjsQz6ng0DFc9ebcGidt32P?=\n\t=?utf-8?q?zgV/SciWdYnB1OPEOCSSFmUp6pvEL4MDI6VFZmmpWq7Im+Ysy3suOCfkmEmD5r/sK?=\n\t=?utf-8?q?XYLMY7GMi5k3hnQaRV9SAcDz0MFhk0vkHTIQ6Gv/xUedX4mcH7JlpdlAplBednjn+?=\n\t=?utf-8?q?E0hgD2ush/HXG88FZIJMSLsPPXqKTp50bIiS0KD+RRNlPIVOdLN/IH9tgFUaKlUU1?=\n\t=?utf-8?q?Kl8zkXD9SMT2jnd6s11/h/bkLwCxc6A0zd6XlDNx7Z8E//S53QOaJ19ODPd2N4SwM?=\n\t=?utf-8?q?vrSHTmYzohMQhPJq3/YYB6LP9LffSJSvKmepsM3XUy7g+2YRHmaWNJm5A7nGYPl8/?=\n\t=?utf-8?q?g3u87hf6zmdXSuvX/JCK5n3T8GquX3GWTr8+DyWOLJQrswD9HQpcdImbob7cd0eq/?=\n\t=?utf-8?q?0Bcy7bl6I9/Amg/uBRfNbiplTRJTkphHuvB82QEfPJCOcE+X6COrVrPFC8Kxo4Kqf?=\n\t=?utf-8?q?KQnS5MMVGADUJLlW/pQgUsmq0iSgCERFNqr7oQbBi9lxrY2CezLeHXfqL3w3+bW6J?=\n\t=?utf-8?q?Jkdp1eB75bntbDnz+V3YBATfyuFNEZWBK9DMSznyptfdaxZGAx/uLWtfcyEAMWpNN?=\n\t=?utf-8?q?jNiWhtrbs6XweTz7OxJgDZ7lqocn2o7IGNIJTwv89WqutdaE5jvKLKxJ0g7LPB5Y+?=\n\t=?utf-8?q?FIc5zOz7Ts8UUM4xeu8BtC0xeLJp2YbGhH7HgccIekt5havgxGkWa0qtytqMqq24t?=\n\t=?utf-8?q?teoe9/8jpPGI9ceHcFmhoMR03VePNQ3HaCrk+kNFs1Z7oKES/zYecHXKzEhcHfG+o?=\n\t=?utf-8?q?yoj+4YQGeXWVn6CvkcXpvW68KPjKv4bwAfjPfGOWjwuDAYV3ZWTHjzat4M2bk6yNe?=\n\t=?utf-8?q?4mJDM2ola0iwVOb+c26Lb3frme0mne7w=3D=3D?=", "X-OriginatorOrg": "garyguo.net", "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 0e47ee9d-3303-49aa-75ad-08de9fb62b99", "X-MS-Exchange-CrossTenant-AuthSource": "LOVP265MB8871.GBRP265.PROD.OUTLOOK.COM", "X-MS-Exchange-CrossTenant-AuthAs": "Internal", "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "21 Apr 2026 14:56:29.8300\n (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": "\n vQ1NfKZA/lhJvrbTUcgVxAwapgPD+yibre5kogvYC4UTqBmW1rlObAfVSfaU8KPS3AE0rr46h4vEPCZ53HQHMw==", "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "CWLP265MB5674" }, "content": "Implement `Io` for `Coherent`, so now `dma::Coherent` can be used with I/O\nprojections.\n\nThis allows the `as_ref()` and `as_mut()` API to be used in smaller region\nthan the whole DMA allocation itself. For example, if a ring buffer is\nshared between GPU and CPU, users may now use the `io_project!` API to\nobtain a view of the buffer that is uniquely owned by the CPU and get a\nreference.\n\nSigned-off-by: Gary Guo <gary@garyguo.net>\n---\n rust/kernel/dma.rs | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++\n 1 file changed, 54 insertions(+)", "diff": "diff --git a/rust/kernel/dma.rs b/rust/kernel/dma.rs\nindex 642ccff465c8..92db0e58f364 100644\n--- a/rust/kernel/dma.rs\n+++ b/rust/kernel/dma.rs\n@@ -14,6 +14,7 @@\n },\n error::to_result,\n fs::file,\n+ io::Io,\n prelude::*,\n ptr::KnownSize,\n sync::aref::ARef,\n@@ -989,6 +990,59 @@ unsafe impl<T: KnownSize + Send + ?Sized> Send for Coherent<T> {}\n // The safe methods only return metadata or raw pointers whose use requires `unsafe`.\n unsafe impl<T: KnownSize + ?Sized + AsBytes + FromBytes + Sync> Sync for Coherent<T> {}\n \n+impl<T: ?Sized + KnownSize> Io for Coherent<T> {\n+ type Type = T;\n+\n+ #[inline]\n+ fn as_ptr(&self) -> *mut Self::Type {\n+ self.as_mut_ptr()\n+ }\n+}\n+\n+impl<'a, B: ?Sized + KnownSize, T: ?Sized> crate::io::View<'a, Coherent<B>, T> {\n+ /// Returns a DMA handle which may be given to the device as the DMA address base of\n+ /// the region.\n+ #[inline]\n+ pub fn dma_handle(&self) -> DmaAddress {\n+ let base = self.io();\n+ let offset = self.as_ptr().addr() - base.as_ptr().addr();\n+ // CAST: The offseted DMA address can never overflow.\n+ base.dma_handle() + offset as DmaAddress\n+ }\n+\n+ /// Returns a reference to the data in the region.\n+ ///\n+ /// # Safety\n+ ///\n+ /// * Callers must ensure that the device does not read/write to/from memory while the returned\n+ /// slice is live.\n+ /// * Callers must ensure that this call does not race with a write to the same region while\n+ /// the returned slice is live.\n+ #[inline]\n+ pub unsafe fn as_ref(self) -> &'a T {\n+ let ptr = self.as_ptr();\n+ // SAFETY: pointer is aligned and valid per type invariant of `View`. Aliasing rule is\n+ // satisfied per safety requirement.\n+ unsafe { &*ptr }\n+ }\n+\n+ /// Returns a mutable reference to the data in the region.\n+ ///\n+ /// # Safety\n+ ///\n+ /// * Callers must ensure that the device does not read/write to/from memory while the returned\n+ /// slice is live.\n+ /// * Callers must ensure that this call does not race with a read or write to the same region\n+ /// while the returned slice is live.\n+ #[inline]\n+ pub unsafe fn as_mut(self) -> &'a mut T {\n+ let ptr = self.as_ptr();\n+ // SAFETY: pointer is aligned and valid per type invariant of `View`. Aliasing rule is\n+ // satisfied per safety requirement.\n+ unsafe { &mut *ptr }\n+ }\n+}\n+\n impl<T: KnownSize + AsBytes + ?Sized> debugfs::BinaryWriter for Coherent<T> {\n fn write_to_slice(\n &self,\n", "prefixes": [ "v2", "07/11" ] }