From patchwork Tue Sep 29 08:44:22 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sherry Sun X-Patchwork-Id: 1373147 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-pci-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.a=rsa-sha256 header.s=selector2 header.b=J42rGRj0; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4C0tJT28V1z9s0b for ; Tue, 29 Sep 2020 18:45:45 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727766AbgI2Ipo (ORCPT ); Tue, 29 Sep 2020 04:45:44 -0400 Received: from mail-eopbgr60063.outbound.protection.outlook.com ([40.107.6.63]:63639 "EHLO EUR04-DB3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725372AbgI2Ipo (ORCPT ); Tue, 29 Sep 2020 04:45:44 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MO3RDyEbH1uukuYmv7HdCCWKrAfQbCXq8N6TmXIQhRzojrs4LmCjW8emm0Ja4RixypzQM2202dC/sjWA3u1X+rrElzwemKFtDGzG0l1xZR8jd+9e37Y0ebQSHhlJF9dMx3ahsTMIKvNDHG9BTHT/HYQiKQKASGDNws61NKsmA5lqU3ZgVKNo2sgajlLRqAKMRx85qZkPNvqw4U1OWAEZZPrbfOq8XJLKj5Cq/DcN9yvNIG6lsH+p1B8IU1/8LX5G0NnZ0W0uaXLP83SpNjIwinstjIDIG36cT0EKbQZtbcnWO/bZmRjzgF2uU1VmXUobNvewTfUk6UsG3ksNWpw0XA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=AcIGY0L5bof0mptzFBczwM5n3r1bMauz6UAgC2IlNmw=; b=FvOrU1wc8ZN+7B+yJuNHtUC0rxy27BIgvBersSoBbsLK73H6uTrafnNBck5Cy6+HLOwJ+dRnKagz3Ru/+7RAWMRwIlriKXtUnTngNtN+NAfgVKKYlXH6IIYghlLmVPpqnduCl6deU6UB4SiEo39bTUgASMehphS4SK7BnKSO1Gg7Ypui6ZqM9/VKfceUUptWvq0eJZ2OLgaUQ5slUQKCVi+7flhptSVVRHzVSQm8PYUJ2usFP7tMWaMvWzvuRMc8425mZz197vdvmzjaNShYas9ZVndjZyY+C0u+jZ5cB2Ti2LpuPHf69PartKhVO0iOPA38gGOc3NF9nll+Wxd3bQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=AcIGY0L5bof0mptzFBczwM5n3r1bMauz6UAgC2IlNmw=; b=J42rGRj0sIlBeJEp4U3DaXoCJJ5U6qbAxtjcZHKmQxjVMTKs/iT11Yqw1deGJhv3GHdo1zxhEG9wY12DXnUHvIlR0KtbbL2Tij7TWfmTcxMcARzDcOAJ67Rvp6gZGkeASmk9kMfGIusJOh6q7IzflHis7oq2t+XJMAZ2FPpDP/g= Authentication-Results: infradead.org; dkim=none (message not signed) header.d=none;infradead.org; dmarc=none action=none header.from=nxp.com; Received: from VI1PR04MB4960.eurprd04.prod.outlook.com (2603:10a6:803:57::21) by VI1PR04MB6910.eurprd04.prod.outlook.com (2603:10a6:803:135::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3412.20; Tue, 29 Sep 2020 08:45:41 +0000 Received: from VI1PR04MB4960.eurprd04.prod.outlook.com ([fe80::b178:a37b:1f9e:3a6]) by VI1PR04MB4960.eurprd04.prod.outlook.com ([fe80::b178:a37b:1f9e:3a6%3]) with mapi id 15.20.3412.029; Tue, 29 Sep 2020 08:45:41 +0000 From: Sherry Sun To: hch@infradead.org, sudeep.dutt@intel.com, ashutosh.dixit@intel.com, arnd@arndb.de, gregkh@linuxfoundation.org, kishon@ti.com, lorenzo.pieralisi@arm.com Cc: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-imx@nxp.com Subject: [PATCH V2 1/4] misc: vop: change the way of allocating vring Date: Tue, 29 Sep 2020 16:44:22 +0800 Message-Id: <20200929084425.24052-2-sherry.sun@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200929084425.24052-1-sherry.sun@nxp.com> References: <20200929084425.24052-1-sherry.sun@nxp.com> X-ClientProxiedBy: AM4PR0302CA0032.eurprd03.prod.outlook.com (2603:10a6:205:2::45) To VI1PR04MB4960.eurprd04.prod.outlook.com (2603:10a6:803:57::21) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from nxp.ap.freescale.net (119.31.174.71) by AM4PR0302CA0032.eurprd03.prod.outlook.com (2603:10a6:205:2::45) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3412.22 via Frontend Transport; Tue, 29 Sep 2020 08:45:36 +0000 X-Mailer: git-send-email 2.17.1 X-Originating-IP: [119.31.174.71] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 35520a73-58e7-48c7-f18f-08d864540b7e X-MS-TrafficTypeDiagnostic: VI1PR04MB6910: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:989; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: zxJ4YCJSdIxpIioYf6ZeJF2NpLxQRcav5AaB8r28aRPSdfzLfny+P/4qpyJiz4Mk7n7aHkbVCqWbyewPC7ZgNoX8B//ZbIkSEV8NVQxIGhv56aWSA+b87RMrIDO5VLH3D3yNwzkHvgJx1fhd7ptgJfMamv7FexhTsx93SaCmX6rEOgc4DmiUWxVP5XULQMFvCTtzRXWlyJ+FZPv6LCmR6G1qytS1H99WHozVe/ba3uheByURT9b2laMzKU2TPsSzw2ZPzuDCTct6cnZtc3mZxGLd2ubdXImB/9S4ZaNVvDXXIigQrChYxQ3/TO9oayqpup4e4BRrlpBKrNZ+EvqZZ/KTlUEH7ErKzVaTBs8xb5IiaU0BHLIa1d508p0CZavY X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR04MB4960.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(136003)(346002)(376002)(396003)(39860400002)(2616005)(186003)(956004)(316002)(6666004)(8936002)(6506007)(52116002)(478600001)(6486002)(5660300002)(66946007)(1076003)(26005)(4326008)(6512007)(16526019)(8676002)(2906002)(86362001)(83380400001)(66556008)(44832011)(66476007)(36756003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: tLK81tQ/LVqNWPlWgLQfKORkKO8ZX81f3qJNRyts5DKs0LQtgg02Wj3sECY7GjY8w6aZwC/1HY55ssexVpfxbf3t99KX4ilXZgfW9Dexspt634/qt6Xb/diNW7Q3ENw3ePaexEK656yk5Id6LOMCvHwUB1ZxMfnt/Papmj1J4Ha0rL2eHSSi+K2uOvIbILp1g0fAJ0jUiHqRrxhjSmA15MHXb4y2n5Fcu+M1iwYBRfCZpt+se1vWGbCo7hTJlWlMnrlmrbYGr2TXk07ehXiPEzwAJCrNy0m6Z2hL7g5P6q3PDeDG7TtIVw5EnHIU+XYjR3bFFSK0vC2lGEita48kRg4YdQWasALLcjzrHmbfPwBn0/2g1H1J5AikH8c2DwVGWxQ4siJJll1ELA2Ll7MiAzTFP58w5ROuHF+WMu0+64MSW/XYSfqyhL3w2Do5jCp74az3rzPx6Mhs3UxZIEf9BbCGa867Sj9OCYjZjN3d68kKncI+dW8ZNQdwDM1U3+0nb7zIxvpfAizJrpqUeVWRDyW8HUQd5k4xm1iYnP1Kw/AwYD8wzICzJO/cJJZ9X12IB15lhIxEdJ14PcvZx+yRwzMPcD1dBjZy3WXPveDF0nBd5v18oXvn3ceJREYc7cabavIsvbYx8ofKoRPx+Z5kQg== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 35520a73-58e7-48c7-f18f-08d864540b7e X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB4960.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2020 08:45:41.0252 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: aqMduY4kpmgKpiLNlhcspl5mdl5rIN0LO8FeL/48L74CVdI04aev047PIMSWGe6FXEpxgwQFIHScIsltUO9Eew== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB6910 Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org Allocate vrings use dma_alloc_coherent is a common way in kernel. As the memory interacted between two systems should use consistent memory to avoid caching effects. The orginal way use __get_free_pages and dma_map_single to allocate and map vring, but not use dma_sync_single_for_cpu/device api to sync the changes of vring between EP and RC, which will cause memory synchronization problem for those devices which don't support hardware dma coherent. Signed-off-by: Joakim Zhang Signed-off-by: Sherry Sun --- drivers/misc/mic/vop/vop_vringh.c | 39 +++++++------------------------ 1 file changed, 9 insertions(+), 30 deletions(-) diff --git a/drivers/misc/mic/vop/vop_vringh.c b/drivers/misc/mic/vop/vop_vringh.c index 7014ffe88632..08e63c81c5b2 100644 --- a/drivers/misc/mic/vop/vop_vringh.c +++ b/drivers/misc/mic/vop/vop_vringh.c @@ -298,9 +298,7 @@ static int vop_virtio_add_device(struct vop_vdev *vdev, mutex_init(&vvr->vr_mutex); vr_size = PAGE_ALIGN(round_up(vring_size(num, MIC_VIRTIO_RING_ALIGN), 4) + sizeof(struct _mic_vring_info)); - vr->va = (void *) - __get_free_pages(GFP_KERNEL | __GFP_ZERO, - get_order(vr_size)); + vr->va = dma_alloc_coherent(vop_dev(vdev), vr_size, &vr_addr, GFP_KERNEL); if (!vr->va) { ret = -ENOMEM; dev_err(vop_dev(vdev), "%s %d err %d\n", @@ -310,15 +308,6 @@ static int vop_virtio_add_device(struct vop_vdev *vdev, vr->len = vr_size; vr->info = vr->va + round_up(vring_size(num, MIC_VIRTIO_RING_ALIGN), 4); vr->info->magic = cpu_to_le32(MIC_MAGIC + vdev->virtio_id + i); - vr_addr = dma_map_single(&vpdev->dev, vr->va, vr_size, - DMA_BIDIRECTIONAL); - if (dma_mapping_error(&vpdev->dev, vr_addr)) { - free_pages((unsigned long)vr->va, get_order(vr_size)); - ret = -ENOMEM; - dev_err(vop_dev(vdev), "%s %d err %d\n", - __func__, __LINE__, ret); - goto err; - } vqconfig[i].address = cpu_to_le64(vr_addr); vring_init(&vr->vr, num, vr->va, MIC_VIRTIO_RING_ALIGN); @@ -339,11 +328,8 @@ static int vop_virtio_add_device(struct vop_vdev *vdev, dev_dbg(&vpdev->dev, "%s %d index %d va %p info %p vr_size 0x%x\n", __func__, __LINE__, i, vr->va, vr->info, vr_size); - vvr->buf = (void *)__get_free_pages(GFP_KERNEL, - get_order(VOP_INT_DMA_BUF_SIZE)); - vvr->buf_da = dma_map_single(&vpdev->dev, - vvr->buf, VOP_INT_DMA_BUF_SIZE, - DMA_BIDIRECTIONAL); + vvr->buf = dma_alloc_coherent(vop_dev(vdev), VOP_INT_DMA_BUF_SIZE, + &vvr->buf_da, GFP_KERNEL); } snprintf(irqname, sizeof(irqname), "vop%dvirtio%d", vpdev->index, @@ -382,10 +368,8 @@ static int vop_virtio_add_device(struct vop_vdev *vdev, for (j = 0; j < i; j++) { struct vop_vringh *vvr = &vdev->vvr[j]; - dma_unmap_single(&vpdev->dev, le64_to_cpu(vqconfig[j].address), - vvr->vring.len, DMA_BIDIRECTIONAL); - free_pages((unsigned long)vvr->vring.va, - get_order(vvr->vring.len)); + dma_free_coherent(vop_dev(vdev), vvr->vring.len, vvr->vring.va, + le64_to_cpu(vqconfig[j].address)); } return ret; } @@ -433,17 +417,12 @@ static void vop_virtio_del_device(struct vop_vdev *vdev) for (i = 0; i < vdev->dd->num_vq; i++) { struct vop_vringh *vvr = &vdev->vvr[i]; - dma_unmap_single(&vpdev->dev, - vvr->buf_da, VOP_INT_DMA_BUF_SIZE, - DMA_BIDIRECTIONAL); - free_pages((unsigned long)vvr->buf, - get_order(VOP_INT_DMA_BUF_SIZE)); + dma_free_coherent(vop_dev(vdev), VOP_INT_DMA_BUF_SIZE, + vvr->buf, vvr->buf_da); vringh_kiov_cleanup(&vvr->riov); vringh_kiov_cleanup(&vvr->wiov); - dma_unmap_single(&vpdev->dev, le64_to_cpu(vqconfig[i].address), - vvr->vring.len, DMA_BIDIRECTIONAL); - free_pages((unsigned long)vvr->vring.va, - get_order(vvr->vring.len)); + dma_free_coherent(vop_dev(vdev), vvr->vring.len, vvr->vring.va, + le64_to_cpu(vqconfig[i].address)); } /* * Order the type update with previous stores. This write barrier From patchwork Tue Sep 29 08:44:23 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sherry Sun X-Patchwork-Id: 1373148 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-pci-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.a=rsa-sha256 header.s=selector2 header.b=aZn5dZpi; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4C0tJq4cTQz9s1t for ; Tue, 29 Sep 2020 18:46:03 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727438AbgI2IqC (ORCPT ); Tue, 29 Sep 2020 04:46:02 -0400 Received: from mail-eopbgr60084.outbound.protection.outlook.com ([40.107.6.84]:47425 "EHLO EUR04-DB3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725372AbgI2IqC (ORCPT ); Tue, 29 Sep 2020 04:46:02 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=a/E/+8AV0UBzndvhX9P9CGk6B8kJFmfogGJ70PwZd4Sq/4qehLrkywPVO/VQ/S1PohwYHj5C2fL2eEiwOZsmRympbKozqgxC9lzWUkqqIcPYUroYPnr0fkzEmC738fKuy5tYMkC9qZ7tKvr4u1GcaEJEy2V6oH3lhRnG1LilDAJe+fgOOiWpZ5e/5/yYuX75Z4jFUdWZfZbUDMa4vdGljMcf0zfHLcuveq0O+J1wCeMUdDscVgirrv6NPyw1v4LOjOFpxQyUVUjV5ZP+aWlSvIlKS+YEu+ndrQ4qXrnxdGkLFNXQ9HOunhW+2uVCJe/6+W8l6CFT6olKCXWvYEh4iA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PdzmgbLksmLhPlBw/nyzhxRIhg44RZUc82l/5ZIFSXk=; b=VDT4A8O8cEQDacKf8JKluHt5jvQp9PppI1H9Jda2h3QcdyvkYmgykAeLQdtb2KvzXfIuC86b7Cfm8fXqybpeVKFRip2NY5rlLIeOGT9IY0Nrstsk6Yr31gaJeZV4oC+2ufcjqPr1CUwojo5BaaymCKUFE5k/mbXulL5TXrsBVwD1K7eRpu0Y+5iMDfaFomSwAU2Y9An+ExngBcKpwI+/E57HvOiEn/CZ0uTmgNwmPVLsQempSnmDZiOiKI5RKtv4Efl/AtFvWmZlAorrpJCWFCGJD8m2aq7a224S+U4rQyY1H25F3QNfYqqaMWyTPeLUQx1JMnmI7wL3IgsSi63wOA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PdzmgbLksmLhPlBw/nyzhxRIhg44RZUc82l/5ZIFSXk=; b=aZn5dZpiM6h1PUy8GgiSG7dFPxYpelKP69ZVI01Mca1tzubVmloooI7/NViMAvhy4Vm4pOIwJlfURCDyaMtw1Sbgz4DMPugLIHzndoK1nDrw3I3PwRFw4fSEqLfIRfnTpZUBRfB4WC2C4nCenDtlRN86hkIoX1fvuiX73xIZmII= Authentication-Results: infradead.org; dkim=none (message not signed) header.d=none;infradead.org; dmarc=none action=none header.from=nxp.com; Received: from VI1PR04MB4960.eurprd04.prod.outlook.com (2603:10a6:803:57::21) by VI1PR04MB6910.eurprd04.prod.outlook.com (2603:10a6:803:135::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3412.20; Tue, 29 Sep 2020 08:45:57 +0000 Received: from VI1PR04MB4960.eurprd04.prod.outlook.com ([fe80::b178:a37b:1f9e:3a6]) by VI1PR04MB4960.eurprd04.prod.outlook.com ([fe80::b178:a37b:1f9e:3a6%3]) with mapi id 15.20.3412.029; Tue, 29 Sep 2020 08:45:57 +0000 From: Sherry Sun To: hch@infradead.org, sudeep.dutt@intel.com, ashutosh.dixit@intel.com, arnd@arndb.de, gregkh@linuxfoundation.org, kishon@ti.com, lorenzo.pieralisi@arm.com Cc: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-imx@nxp.com Subject: [PATCH V2 2/4] misc: vop: do not allocate and reassign the used ring Date: Tue, 29 Sep 2020 16:44:23 +0800 Message-Id: <20200929084425.24052-3-sherry.sun@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200929084425.24052-1-sherry.sun@nxp.com> References: <20200929084425.24052-1-sherry.sun@nxp.com> X-ClientProxiedBy: AM4PR0302CA0032.eurprd03.prod.outlook.com (2603:10a6:205:2::45) To VI1PR04MB4960.eurprd04.prod.outlook.com (2603:10a6:803:57::21) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from nxp.ap.freescale.net (119.31.174.71) by AM4PR0302CA0032.eurprd03.prod.outlook.com (2603:10a6:205:2::45) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3412.22 via Frontend Transport; Tue, 29 Sep 2020 08:45:52 +0000 X-Mailer: git-send-email 2.17.1 X-Originating-IP: [119.31.174.71] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 17af787b-77be-4806-8ed0-08d864541522 X-MS-TrafficTypeDiagnostic: VI1PR04MB6910: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1201; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 0j3S/wz2ZuCOa2noGu7VvNTBYDSpWESGDbuIwIJhwfrzQjftwMH9bsGr3kh5C+pnN4Z0Sj412SvhQ4QIvbsEEd8ZaoZR2GTrF52IV/Cl8RarmFI0SxmZXCEuYW7UtYDs9tkV4xaTPxjPQ/4pQxtbrvlePb9O1MrELICAaO6ewqulFL7GeP1LhXCTxTzCyQ9oawAc+btBn6SL2v/69z2SeDgobCqu2/a2zHP0Xb7FTzFluTHYfjJs3cSOiM3P+tPa3BxAC20mHe9IOXSTHl/I7uo/cGwYqgyI3I0CtzNaC0EwynNCtmWyAFFe3cLlElG9PQBtWlWKYENNzFaU3dLfje3jfSm8UFvZT0wDbJpaGlj+mgdqmstR5/uSVI44uVIy X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR04MB4960.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(136003)(346002)(376002)(396003)(39860400002)(2616005)(186003)(956004)(316002)(6666004)(8936002)(6506007)(52116002)(478600001)(6486002)(5660300002)(66946007)(1076003)(26005)(4326008)(6512007)(16526019)(8676002)(2906002)(86362001)(83380400001)(66556008)(44832011)(66476007)(36756003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: bwl3I8DRzexp4tQ9opNTuC+EKdtiNIsN9oXBydxULYxLPG1FC2ZoIGfAQwbNLBV7dGJOFUwAh69MkegJBr50KdzRNP/rivlXMT3eBVZ3mPYE+ZzB/DICCP9h8eMGJ5gnlfXDUaI7P5MKOwM8+ZdYTXV1Cz2Hfn76VHofGsSWRA+vnkbgJ/45LFoCrzHnZX756Z8g0fhvqMlUFZLGFjfEfmga4mRu46/Jl3SffV6xDzsRgcs9moebIdxHSqXL55NRWZpK2p3FsU6PhucIENg8fi+vQ3il6W/Uoh+0kaZ/FioW7kwfTqhRPWEr49tUmmHzsfwlb5VRm1+5aZkuRIBo7P4QYw391mgjlnG57NmK5VS95I/KX3xBDuftfgLuiGIC8/3Zec0peK8+dNvTA6YpulGgB1SmnNOxryJX5tKnHnnjM6FDMa/4hPPjMvXXWxsyR37ugSBAJJ86tvE57aHUE2LLt0pvc8wmeBlWWh9eTiOIfxAi3fUi5WVSy7K9g8QWOlHnlO8mXjQJV25ksAGf4bZYIclm3t3tLNfis0Nq9LUWrxQBp0JwgL1H6zH6WiQJattzKnWQWjcCdqmmbZjmXj/XCbcePtctKGIwwYG1tC6pFmEs6TafFjQs7xHJbZh/1HNzLu1bMwjCdCGiQR8Dmg== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 17af787b-77be-4806-8ed0-08d864541522 X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB4960.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2020 08:45:57.2169 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: RsxvyUwfThrGEwJ+OHBhUWF1KdS68ET/ln9BfBFmylBb3hOhKrN5bUC6nIaMHW8+ShUGBvBmqGyejK93vh8qPQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB6910 Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org We don't need to allocate and reassign the used ring here and remove the used_address_updated flag.Since RC has allocated the entire vring, including the used ring. Simply add the corresponding offset can get the used ring address. If following the orginal way to reassign the used ring, will encounter a problem. When host finished with descriptor, it will update the used ring with putused_kern api, if reassign used ring at EP side, used ring will be io device memory for RC, use memcpy in putused_kern will cause kernel panic. Signed-off-by: Sherry Sun Signed-off-by: Joakim Zhang --- drivers/misc/mic/vop/vop_debugfs.c | 2 -- drivers/misc/mic/vop/vop_main.c | 48 ++++-------------------------- drivers/misc/mic/vop/vop_vringh.c | 31 ------------------- include/uapi/linux/mic_common.h | 3 -- 4 files changed, 6 insertions(+), 78 deletions(-) diff --git a/drivers/misc/mic/vop/vop_debugfs.c b/drivers/misc/mic/vop/vop_debugfs.c index 9d4f175f4dd1..05eca4a98585 100644 --- a/drivers/misc/mic/vop/vop_debugfs.c +++ b/drivers/misc/mic/vop/vop_debugfs.c @@ -79,8 +79,6 @@ static int vop_dp_show(struct seq_file *s, void *pos) seq_printf(s, "Vdev reset %d\n", dc->vdev_reset); seq_printf(s, "Guest Ack %d ", dc->guest_ack); seq_printf(s, "Host ack %d\n", dc->host_ack); - seq_printf(s, "Used address updated %d ", - dc->used_address_updated); seq_printf(s, "Vdev 0x%llx\n", dc->vdev); seq_printf(s, "c2h doorbell %d ", dc->c2h_vdev_db); seq_printf(s, "h2c doorbell %d\n", dc->h2c_vdev_db); diff --git a/drivers/misc/mic/vop/vop_main.c b/drivers/misc/mic/vop/vop_main.c index 714b94f42d38..1ccc94dfd6ac 100644 --- a/drivers/misc/mic/vop/vop_main.c +++ b/drivers/misc/mic/vop/vop_main.c @@ -250,10 +250,6 @@ static void vop_del_vq(struct virtqueue *vq, int n) struct _vop_vdev *vdev = to_vopvdev(vq->vdev); struct vop_device *vpdev = vdev->vpdev; - dma_unmap_single(&vpdev->dev, vdev->used[n], - vdev->used_size[n], DMA_BIDIRECTIONAL); - free_pages((unsigned long)vdev->used_virt[n], - get_order(vdev->used_size[n])); vring_del_virtqueue(vq); vpdev->hw_ops->unmap(vpdev, vdev->vr[n]); vdev->vr[n] = NULL; @@ -340,8 +336,8 @@ static struct virtqueue *vop_find_vq(struct virtio_device *dev, vdev->used_size[index] = PAGE_ALIGN(sizeof(__u16) * 3 + sizeof(struct vring_used_elem) * le16_to_cpu(config.num)); - used = (void *)__get_free_pages(GFP_KERNEL | __GFP_ZERO, - get_order(vdev->used_size[index])); + used = va + PAGE_ALIGN(sizeof(struct vring_desc) * le16_to_cpu(config.num) + + sizeof(__u16) * (3 + le16_to_cpu(config.num))); vdev->used_virt[index] = used; if (!used) { err = -ENOMEM; @@ -355,27 +351,15 @@ static struct virtqueue *vop_find_vq(struct virtio_device *dev, name, used); if (!vq) { err = -ENOMEM; - goto free_used; + goto unmap; } - vdev->used[index] = dma_map_single(&vpdev->dev, used, - vdev->used_size[index], - DMA_BIDIRECTIONAL); - if (dma_mapping_error(&vpdev->dev, vdev->used[index])) { - err = -ENOMEM; - dev_err(_vop_dev(vdev), "%s %d err %d\n", - __func__, __LINE__, err); - goto del_vq; - } + vdev->used[index] = config.address + PAGE_ALIGN(sizeof(struct vring_desc) * le16_to_cpu(config.num) + + sizeof(__u16) * (3 + le16_to_cpu(config.num))); writeq(vdev->used[index], &vqconfig->used_address); vq->priv = vdev; return vq; -del_vq: - vring_del_virtqueue(vq); -free_used: - free_pages((unsigned long)used, - get_order(vdev->used_size[index])); unmap: vpdev->hw_ops->unmap(vpdev, vdev->vr[index]); return ERR_PTR(err); @@ -388,9 +372,7 @@ static int vop_find_vqs(struct virtio_device *dev, unsigned nvqs, struct irq_affinity *desc) { struct _vop_vdev *vdev = to_vopvdev(dev); - struct vop_device *vpdev = vdev->vpdev; - struct mic_device_ctrl __iomem *dc = vdev->dc; - int i, err, retry, queue_idx = 0; + int i, err, queue_idx = 0; /* We must have this many virtqueues. */ if (nvqs > ioread8(&vdev->desc->num_vq)) @@ -412,24 +394,6 @@ static int vop_find_vqs(struct virtio_device *dev, unsigned nvqs, } } - iowrite8(1, &dc->used_address_updated); - /* - * Send an interrupt to the host to inform it that used - * rings have been re-assigned. - */ - vpdev->hw_ops->send_intr(vpdev, vdev->c2h_vdev_db); - for (retry = 100; --retry;) { - if (!ioread8(&dc->used_address_updated)) - break; - msleep(100); - } - - dev_dbg(_vop_dev(vdev), "%s: retry: %d\n", __func__, retry); - if (!retry) { - err = -ENODEV; - goto error; - } - return 0; error: vop_del_vqs(dev); diff --git a/drivers/misc/mic/vop/vop_vringh.c b/drivers/misc/mic/vop/vop_vringh.c index 08e63c81c5b2..422a28c1bb7a 100644 --- a/drivers/misc/mic/vop/vop_vringh.c +++ b/drivers/misc/mic/vop/vop_vringh.c @@ -53,33 +53,6 @@ static void _vop_notify(struct vringh *vrh) vpdev->hw_ops->send_intr(vpdev, db); } -static void vop_virtio_init_post(struct vop_vdev *vdev) -{ - struct mic_vqconfig *vqconfig = mic_vq_config(vdev->dd); - struct vop_device *vpdev = vdev->vpdev; - int i, used_size; - - for (i = 0; i < vdev->dd->num_vq; i++) { - used_size = PAGE_ALIGN(sizeof(u16) * 3 + - sizeof(struct vring_used_elem) * - le16_to_cpu(vqconfig->num)); - if (!le64_to_cpu(vqconfig[i].used_address)) { - dev_warn(vop_dev(vdev), "used_address zero??\n"); - continue; - } - vdev->vvr[i].vrh.vring.used = - (void __force *)vpdev->hw_ops->remap( - vpdev, - le64_to_cpu(vqconfig[i].used_address), - used_size); - } - - vdev->dc->used_address_updated = 0; - - dev_info(vop_dev(vdev), "%s: device type %d LINKUP\n", - __func__, vdev->virtio_id); -} - static inline void vop_virtio_device_reset(struct vop_vdev *vdev) { int i; @@ -130,9 +103,6 @@ static void vop_bh_handler(struct work_struct *work) struct vop_vdev *vdev = container_of(work, struct vop_vdev, virtio_bh_work); - if (vdev->dc->used_address_updated) - vop_virtio_init_post(vdev); - if (vdev->dc->vdev_reset) vop_virtio_device_reset(vdev); @@ -250,7 +220,6 @@ static void vop_init_device_ctrl(struct vop_vdev *vdev, dc->guest_ack = 0; dc->vdev_reset = 0; dc->host_ack = 0; - dc->used_address_updated = 0; dc->c2h_vdev_db = -1; dc->h2c_vdev_db = -1; vdev->dc = dc; diff --git a/include/uapi/linux/mic_common.h b/include/uapi/linux/mic_common.h index 504e523f702c..e680fe27af69 100644 --- a/include/uapi/linux/mic_common.h +++ b/include/uapi/linux/mic_common.h @@ -56,8 +56,6 @@ struct mic_device_desc { * @vdev_reset: Set to 1 by guest to indicate virtio device has been reset. * @guest_ack: Set to 1 by guest to ack a command. * @host_ack: Set to 1 by host to ack a command. - * @used_address_updated: Set to 1 by guest when the used address should be - * updated. * @c2h_vdev_db: The doorbell number to be used by guest. Set by host. * @h2c_vdev_db: The doorbell number to be used by host. Set by guest. */ @@ -67,7 +65,6 @@ struct mic_device_ctrl { __u8 vdev_reset; __u8 guest_ack; __u8 host_ack; - __u8 used_address_updated; __s8 c2h_vdev_db; __s8 h2c_vdev_db; } __attribute__ ((aligned(8))); From patchwork Tue Sep 29 08:44:24 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sherry Sun X-Patchwork-Id: 1373149 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-pci-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.a=rsa-sha256 header.s=selector2 header.b=ms/WkSnP; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4C0tJw5c5Jz9sRR for ; Tue, 29 Sep 2020 18:46:08 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727804AbgI2IqI (ORCPT ); Tue, 29 Sep 2020 04:46:08 -0400 Received: from mail-eopbgr60055.outbound.protection.outlook.com ([40.107.6.55]:60441 "EHLO EUR04-DB3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1725372AbgI2IqH (ORCPT ); Tue, 29 Sep 2020 04:46:07 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ux9vjazJRnCZJcGBdDB2eRVcUzPJT6gZjg7Em/abOFYparwEO9B52i8tAxfTOQnb2h8FIjDcbnrW28ECddQDYzRrgMfuP/FepvAgdoj3nQ3K1+C3BSwH4nWeJh7z6U/R4BmHPcnGDi2FWpYldZFBF1aQP/qVsibZ7s65GkI5RR4NpPBvMqze2kvdNTOh1kKIq/s1atUcwenmrWCBunJWLwrD01RIaN21pbYUHjnEp+vQ7yWpsx5rrIsk2uSaa4DyX7oFhSLhhmtS6m35u9IaLFN8MwfJ7BJMH/AMy6A6EPSv7UlvG30sKeuHTJ4M2vP2woOIlv+h9+70EfxaVjfdTQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=eSQYE269/M3Dju+lj/Sb1EexruO+iji0spXGTI4C6cg=; b=KEAqiWsSwQgWotwXyjb+ZbcbunmWo7b9qpVb29VYLDviwK3CTpN/fM5nxqlEIKAzs8kWxrlcGpXwzMIYP27H/ezdPLxLpXh9d6Nej2xlFBQJQFZatUANA3Y7gnjVxpHkTEbAos8ktLeVdI709TRbeRBwpCKF/IH/SnXiPj9wpKCqWOKAMzNnA9IFrSAG2jYlfS5Cla1N2qVaOobSPDwawV+4/HjzTE5Jp5j51JNJvRqA6XlqYUYOQWOv2LZd8FmP7Sf1yMrvsO3J8+Zi8LRblpaz6cnt9viih7wgrv2ZC8dxogb45KmjqUQGrXiL/+t52oDI2SJd57t71Ri0+Avoyg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=eSQYE269/M3Dju+lj/Sb1EexruO+iji0spXGTI4C6cg=; b=ms/WkSnPWwghldenzxoOULEaIf05ba1a35sGrZ1ao3ftMlGEMTZgjC1+Qs39W48Ll8CPKOAGjWfD50mqvMOTa2vgJcQcHVri+DlrG/RbZxgBDDQiFYbdE2P9ARWDUjM1mUF73BIAGNyUYVo3W/CIe5jTi0KVzORR0/q5/UcQVUA= Authentication-Results: infradead.org; dkim=none (message not signed) header.d=none;infradead.org; dmarc=none action=none header.from=nxp.com; Received: from VI1PR04MB4960.eurprd04.prod.outlook.com (2603:10a6:803:57::21) by VI1PR04MB6910.eurprd04.prod.outlook.com (2603:10a6:803:135::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3412.20; Tue, 29 Sep 2020 08:46:04 +0000 Received: from VI1PR04MB4960.eurprd04.prod.outlook.com ([fe80::b178:a37b:1f9e:3a6]) by VI1PR04MB4960.eurprd04.prod.outlook.com ([fe80::b178:a37b:1f9e:3a6%3]) with mapi id 15.20.3412.029; Tue, 29 Sep 2020 08:46:04 +0000 From: Sherry Sun To: hch@infradead.org, sudeep.dutt@intel.com, ashutosh.dixit@intel.com, arnd@arndb.de, gregkh@linuxfoundation.org, kishon@ti.com, lorenzo.pieralisi@arm.com Cc: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-imx@nxp.com Subject: [PATCH V2 3/4] misc: vop: simply return the saved dma address instead of virt_to_phys Date: Tue, 29 Sep 2020 16:44:24 +0800 Message-Id: <20200929084425.24052-4-sherry.sun@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200929084425.24052-1-sherry.sun@nxp.com> References: <20200929084425.24052-1-sherry.sun@nxp.com> X-ClientProxiedBy: AM4PR0302CA0032.eurprd03.prod.outlook.com (2603:10a6:205:2::45) To VI1PR04MB4960.eurprd04.prod.outlook.com (2603:10a6:803:57::21) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from nxp.ap.freescale.net (119.31.174.71) by AM4PR0302CA0032.eurprd03.prod.outlook.com (2603:10a6:205:2::45) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3412.22 via Frontend Transport; Tue, 29 Sep 2020 08:45:59 +0000 X-Mailer: git-send-email 2.17.1 X-Originating-IP: [119.31.174.71] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 805aba85-990f-4176-3783-08d864541969 X-MS-TrafficTypeDiagnostic: VI1PR04MB6910: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1775; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: lOOBtWbWmYXLHSUUXZyANJ/fYiOCRR26CX2w7w1HZ0lGAKKt8u/hR30kyVEKC/tQWaT5O4A0WZQGd++TkmMOPGKpMP6Nm4WvFUrbB09PWNW1ls4nJB5oYku411LHLgNJwdB+CQULWuT6o5lyiESNmS7xe3Fkx7NxnkipHs8aAYp45KYw7ZDHp25kJGrBsUurBSUAHnGWNk4vUOpAK86hZfxgwlfhJxhG7ihVO78hyaGRzg54KBVWDYvFPbrb0AdrOmGBs9BTdlptUQ4Rs35WUHH3wBjHHhtsNalDKnJ9iit5+0y8PEAQerL2Wd4HD/G89AByKnjJqQBgd3hJ+5gTYb4h7CPjZXSl/1aoVptJsX/i460TUQKr1ED/fuB8OBab X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR04MB4960.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(136003)(346002)(376002)(396003)(39860400002)(2616005)(186003)(956004)(316002)(6666004)(8936002)(6506007)(52116002)(478600001)(6486002)(5660300002)(66946007)(1076003)(26005)(4326008)(6512007)(16526019)(8676002)(2906002)(86362001)(83380400001)(66556008)(44832011)(66476007)(36756003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: 0uboAwKBuRVgNCc1VfY62rfgZqRzAPl1/myaNnypRIyyqTCPSZh+4pNLin/JkgdyR2DrOQi3ItF5hilqM0UXJ7x9pVuImtJsffyE77DN31cXTjh9viWSfFkHje2pxF9+qZwIiuAcN6vSNrxObWaIdU3SJprz03eh69YR44MfJRj8SaehaCVWK2XI1MmLdMYIhOQsX+POh4iLlAg+u/R3EkKNsoliSMGPHOQGVKOtHw6Z7D0Ejl5cvpmkJfl8BS9VKbVqa4Ru681Y6vVUFE62otwCJDpgyLcZB8S8ZVMgJGOH4we5u0/ORrVR/7I9dt1xfbh0w7hER1A2F5SEFANT4i7XhBaaxeqzA9xl2MWDjCXhTJCMvPY3aBSPqmiNb1QO9taFkppxrfoPj9T4Ya+/yeE/DiNaWGsLrz0MnCVC2Gkbo95WOxTCpfIMH1ze+sGpA6X7NIj6NpX94Rvm9Nv744NU/d0rJfJ5o5WgL1JItThH+sjcPwGkg6Mi41zRq+HQgUkhAnZ2+3ZtD9w9FThsEnNz8RNd8emp9TkcwxByQvPl96tav6NKZBQJeB8Fl4kOKcbml6U7RXFnJKKYFkjZNLpsxC2O5souBnV4PjUOzD/X1/zESHZVDeaa4MSYdKOkA7bpYEHc8RGi9oAI3rBYIA== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 805aba85-990f-4176-3783-08d864541969 X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB4960.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2020 08:46:04.3579 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: CabfxXhHOacQAZDnFsSnZ3jWO8GDOPHUAhBssXgMuAd8ijbJlYqmSCAkFBH5KczoOuIFhh0OKpGfLtmxae32EA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB6910 Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org The device page and vring should use consistent memory which are allocated by dma_alloc_coherent api, when user space wants to get its physical address, virt_to_phys cannot be used, should simply return the saved device page dma address by get_dp_dma callback and the vring dma address saved in mic_vqconfig. Signed-off-by: Sherry Sun Signed-off-by: Joakim Zhang --- drivers/misc/mic/bus/vop_bus.h | 2 ++ drivers/misc/mic/host/mic_boot.c | 8 ++++++++ drivers/misc/mic/vop/vop_vringh.c | 11 +++++++++-- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/drivers/misc/mic/bus/vop_bus.h b/drivers/misc/mic/bus/vop_bus.h index 4fa02808c1e2..d891eacae358 100644 --- a/drivers/misc/mic/bus/vop_bus.h +++ b/drivers/misc/mic/bus/vop_bus.h @@ -75,6 +75,7 @@ struct vop_driver { * node to add/remove/configure virtio devices. * @get_dp: Get access to the virtio device page used by the self * node to add/remove/configure virtio devices. + * @get_dp_dma: Get dma address of the virtio device page. * @send_intr: Send an interrupt to the peer node on a specified doorbell. * @remap: Map a buffer with the specified DMA address and length. * @unmap: Unmap a buffer previously mapped. @@ -92,6 +93,7 @@ struct vop_hw_ops { void (*ack_interrupt)(struct vop_device *vpdev, int num); void __iomem * (*get_remote_dp)(struct vop_device *vpdev); void * (*get_dp)(struct vop_device *vpdev); + dma_addr_t (*get_dp_dma)(struct vop_device *vpdev); void (*send_intr)(struct vop_device *vpdev, int db); void __iomem * (*remap)(struct vop_device *vpdev, dma_addr_t pa, size_t len); diff --git a/drivers/misc/mic/host/mic_boot.c b/drivers/misc/mic/host/mic_boot.c index fb5b3989753d..ced03662cd8f 100644 --- a/drivers/misc/mic/host/mic_boot.c +++ b/drivers/misc/mic/host/mic_boot.c @@ -88,6 +88,13 @@ static void *__mic_get_dp(struct vop_device *vpdev) return mdev->dp; } +static dma_addr_t __mic_get_dp_dma(struct vop_device *vpdev) +{ + struct mic_device *mdev = vpdev_to_mdev(&vpdev->dev); + + return mdev->dp_dma_addr; +} + static void __iomem *__mic_get_remote_dp(struct vop_device *vpdev) { return NULL; @@ -119,6 +126,7 @@ static struct vop_hw_ops vop_hw_ops = { .ack_interrupt = __mic_ack_interrupt, .next_db = __mic_next_db, .get_dp = __mic_get_dp, + .get_dp_dma = __mic_get_dp_dma, .get_remote_dp = __mic_get_remote_dp, .send_intr = __mic_send_intr, .remap = __mic_ioremap, diff --git a/drivers/misc/mic/vop/vop_vringh.c b/drivers/misc/mic/vop/vop_vringh.c index 422a28c1bb7a..4d5feb39aeb7 100644 --- a/drivers/misc/mic/vop/vop_vringh.c +++ b/drivers/misc/mic/vop/vop_vringh.c @@ -995,6 +995,7 @@ vop_query_offset(struct vop_vdev *vdev, unsigned long offset, unsigned long *size, unsigned long *pa) { struct vop_device *vpdev = vdev->vpdev; + struct mic_vqconfig *vqconfig = mic_vq_config(vdev->dd); unsigned long start = MIC_DP_SIZE; int i; @@ -1007,7 +1008,13 @@ vop_query_offset(struct vop_vdev *vdev, unsigned long offset, * .... */ if (!offset) { - *pa = virt_to_phys(vpdev->hw_ops->get_dp(vpdev)); + if (vpdev->hw_ops->get_dp_dma) + *pa = vpdev->hw_ops->get_dp_dma(vpdev); + else { + dev_err(vop_dev(vdev), "can't get device page physical address\n"); + return -EINVAL; + } + *size = MIC_DP_SIZE; return 0; } @@ -1016,7 +1023,7 @@ vop_query_offset(struct vop_vdev *vdev, unsigned long offset, struct vop_vringh *vvr = &vdev->vvr[i]; if (offset == start) { - *pa = virt_to_phys(vvr->vring.va); + *pa = vqconfig[i].address; *size = vvr->vring.len; return 0; } From patchwork Tue Sep 29 08:44:25 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sherry Sun X-Patchwork-Id: 1373150 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=linux-pci-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.a=rsa-sha256 header.s=selector2 header.b=GVRGcvOr; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 4C0tK76PB6z9sRR for ; Tue, 29 Sep 2020 18:46:19 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725372AbgI2IqO (ORCPT ); Tue, 29 Sep 2020 04:46:14 -0400 Received: from mail-eopbgr60071.outbound.protection.outlook.com ([40.107.6.71]:27109 "EHLO EUR04-DB3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1727831AbgI2IqO (ORCPT ); Tue, 29 Sep 2020 04:46:14 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=RObNL7h4NkyjImPokafad2GOlY4j0+ZVCKO6sqZeEBr4TpC8O1Xw5AJsa2FG8T3Bq0ol2NK1uU0bUUjPeAgtTrPjsRtGJJ8tD9QdNuS2R868ByckwHJGxaX8Ti1y168F6xyVa8em8uioW2BeFsUJLFMpF+ZwUe/9ROGQpW2wzsFBWjj81M3TZUunJ10ERcA5nNyb3SZN1rkG4LZIMpOC6Xab/hiVY4b1oLZjFr/5S3RVbjVq+2SgYOnxFcIMUR2o8RJ28Bk+p7hDnSyCQytoBa5zqOC+FvFNPy/NY1B3WqeIZu3K1noOVpUOtcAb1FMt5U6QOOl1jkJ1HgIwFF5sCQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=k7XSUcm8dJe4tRSMEVoN6BWe5vWa0jZMWFN3EZXFOG0=; b=iDd45LQCNVJ0qyK4VERBhQ3U1DiKgswSJGtAPq8f6ew2kgRhqR+ge8VKQBdRiMuJSILFemK0xZ5g9SGe3QcIRxcP6Gs9eUb+Ge+Dm9hm82iNe5NynkTGBZg9V9K/ow2VdVKPGm0g00fDdUKDbz/QujwS+u7K5HvNMG1RhFAFmanFf6m4R2sQ87r55RedTj9CBLyw8ltG/0a5iUoNa6nPVFMAt7KyM/CesEFoH+RfwhvszcF9K63Gr//joTFrV7TBCUG/0u/jm6chU/1Ey2pfmd1IBq0we4DESsRc12HzFRjiMLzev1F20jZpMDoPHk7Oyq5YTCnke8i+47Avjxhm6w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=k7XSUcm8dJe4tRSMEVoN6BWe5vWa0jZMWFN3EZXFOG0=; b=GVRGcvOrpWbet3Wp9yibBpH/SJ0WNWkmSnaHlWPBGQXoO78EMgrCqA84ozAHCMqq1VDpbH9SNzGd/a2uRDjuz8ngTKm5cG1SYiraEpvFJaiPNjxBib9oeyhNko87WBaTqZ/voBTFJysoF56m2cBbmUhfEpDw9dgibpiDj7FhYqc= Authentication-Results: infradead.org; dkim=none (message not signed) header.d=none;infradead.org; dmarc=none action=none header.from=nxp.com; Received: from VI1PR04MB4960.eurprd04.prod.outlook.com (2603:10a6:803:57::21) by VI1PR04MB6910.eurprd04.prod.outlook.com (2603:10a6:803:135::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3412.20; Tue, 29 Sep 2020 08:46:11 +0000 Received: from VI1PR04MB4960.eurprd04.prod.outlook.com ([fe80::b178:a37b:1f9e:3a6]) by VI1PR04MB4960.eurprd04.prod.outlook.com ([fe80::b178:a37b:1f9e:3a6%3]) with mapi id 15.20.3412.029; Tue, 29 Sep 2020 08:46:11 +0000 From: Sherry Sun To: hch@infradead.org, sudeep.dutt@intel.com, ashutosh.dixit@intel.com, arnd@arndb.de, gregkh@linuxfoundation.org, kishon@ti.com, lorenzo.pieralisi@arm.com Cc: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-imx@nxp.com Subject: [PATCH V2 4/4] misc: vop: mapping kernel memory to user space as noncached Date: Tue, 29 Sep 2020 16:44:25 +0800 Message-Id: <20200929084425.24052-5-sherry.sun@nxp.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200929084425.24052-1-sherry.sun@nxp.com> References: <20200929084425.24052-1-sherry.sun@nxp.com> X-ClientProxiedBy: AM4PR0302CA0032.eurprd03.prod.outlook.com (2603:10a6:205:2::45) To VI1PR04MB4960.eurprd04.prod.outlook.com (2603:10a6:803:57::21) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from nxp.ap.freescale.net (119.31.174.71) by AM4PR0302CA0032.eurprd03.prod.outlook.com (2603:10a6:205:2::45) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3412.22 via Frontend Transport; Tue, 29 Sep 2020 08:46:07 +0000 X-Mailer: git-send-email 2.17.1 X-Originating-IP: [119.31.174.71] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 8be80092-fda0-4902-92a4-08d864541da6 X-MS-TrafficTypeDiagnostic: VI1PR04MB6910: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1417; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: lNq16VwuWZ/leJ/yb4vYSLx7Lhyuh2PRJIp6F11T9rub+hSrwuq2YbV7vdd+mZNXe9Ke1UX3ROz3uQSfTpNr0cPmqAiSX2eUyRSX2H2jWxsjYpK0GGjMMGate0zYc86CaX1a27L2Bf4Le/k4r3cHlyBwb9z27vmTchw2gs/i4GiT3l1yQTZjsE8YWrH16F3BJTAvKgp7MlbUaVnvKeO9q7bOuo1PAilBlvbUfKEpOfK+kmi8fKr1gPxqLZfq9UQPTa3nRuchI+CyMCj+hB/d1o9/U65Rbu4l629h+qWlumOVf4sxgT+moLlsdaQEEDesOmo1y+AMyhGyR/3T1PIpq7LLATt9rn7qwO/23ts168J53gP/dGZcst9MgnrIbaiH X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR04MB4960.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(136003)(346002)(376002)(396003)(39860400002)(2616005)(186003)(956004)(316002)(6666004)(8936002)(6506007)(52116002)(478600001)(4744005)(6486002)(5660300002)(66946007)(1076003)(26005)(4326008)(6512007)(16526019)(8676002)(2906002)(86362001)(83380400001)(66556008)(44832011)(66476007)(36756003);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: rdltEmWlnMnFiN954l8oPPRo05wR/I5mYN+wr50UR5r4dM4wy+eltiv2FuqLerGGO2AFubl8O3shFTLE+05/vdEcavTl36SQVXCIKvyKs0UqVrScW20NXB5UvDz1rF+wcYyrCuXlnepv5vBCbmTyHZNh/FdJCAsuy6PiFD6400q56afeBTNNFzTap+Tl+i0xGy6ju/Jme75KNMvSDxUgfPapMeuMXNqQvt4Glj7yb3RXcZSN133tm9fwivHwpKcL+PVwfHmaM31lFGL+nbhb/f/i97DNnr8r9rK2pFCrBurBPVv9/6OnmSE5c9QjtlwyCzQ8p3HF8yeOntEAHrbBUCmi52vc71cBQAjBjjHR4Gvy4qSzglR2QeDS8qvsI4vr7TOQHy+2kMY9EO1TndTzUtYsGgb6flpoofCZ745t3QbWqXiKPH1haOKsOu/NQlB0WCDPPJYwmCKmlJB2oln116LPCOCuEbzAex8QbgCpKVZ6bUjy0DTPBEE6reAf/0sLoRsJ0ziul2LPas6vvag8pFPkS/tgu2DybjPv6Cd5vhGnUWLJqzGve664ulo8q1OPi9HT7z55YXjscytndCt6Dh7QN/HQeEYMw4xYTgja+TmY3KvFXkpusrLP43Ayh7IJ+oIEG/R7OPKt05jG0TOhog== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8be80092-fda0-4902-92a4-08d864541da6 X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB4960.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Sep 2020 08:46:11.4818 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: CY8de6KtT/0myODomWvXQm8RuXP0tRcdeV33oubGB60NcLoWhkha5dFVfXuIsNvHXE4XzUZLoDgYYrhrvcr2FA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB6910 Precedence: bulk List-ID: X-Mailing-List: linux-pci@vger.kernel.org Mapping kernel space memory to user space as noncached, since user space need check the updates of avail_idx and device page flags timely. Signed-off-by: Joakim Zhang Signed-off-by: Sherry Sun --- drivers/misc/mic/vop/vop_vringh.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/misc/mic/vop/vop_vringh.c b/drivers/misc/mic/vop/vop_vringh.c index 4d5feb39aeb7..6e193bd64ef1 100644 --- a/drivers/misc/mic/vop/vop_vringh.c +++ b/drivers/misc/mic/vop/vop_vringh.c @@ -1057,7 +1057,7 @@ static int vop_mmap(struct file *f, struct vm_area_struct *vma) } err = remap_pfn_range(vma, vma->vm_start + offset, pa >> PAGE_SHIFT, size, - vma->vm_page_prot); + pgprot_noncached(vma->vm_page_prot)); if (err) goto ret; size_rem -= size;