Received: by 2002:a05:6358:a55:b0:ec:fcf4:3ecf with SMTP id 21csp2620644rwb; Sun, 15 Jan 2023 19:13:07 -0800 (PST) X-Google-Smtp-Source: AMrXdXve01FlDQm5jCE9QTtcFilaVqk2EPrL+ay93HoUpUSbriXvlIYb/Jp51h+dsQiW50o66Qf9 X-Received: by 2002:a05:6a20:98a7:b0:b6:330a:dfd with SMTP id jk39-20020a056a2098a700b000b6330a0dfdmr21778930pzb.48.1673838787132; Sun, 15 Jan 2023 19:13:07 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1673838787; cv=none; d=google.com; s=arc-20160816; b=UB0K2CYQi2SeqZAI9eKco4HK6ga86q2a9O1DKywjDu0cKAXfrerHrrDdphw3X9jSm9 LZ+m/s0Wl2U9/usRAkgOwh0v9FdNVQeUhbCyNPZZN6AzPakoGfuQv1dBnlkMuazsWZNz bcBPSGu+8N1V9UE8bwIrZ/idlt4sEpOOFv2NJhcaeYmCGnUp/UCDlXIvUvLzHNs47ksl x/Stn4sB1Zh/KrLCj45vW1mfCkHQrFHqlSCckciVyNdRtkKj1giSU66Lh7MbW8a3DH8u Ijm/7ZFKyZKdzRKVw04Gta3hnls4WWMID4PlY93lb4i63wLP9m+XlKMCUr4axJU58bOu EGpQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=rY+5DbLLon7IpXdDXykQnTd3J3XFXUn+jM1P9sxlSJQ=; b=hQg6A6pYI8aYUnBlY9n9F9bvv1vQtkxn/KOesU0r8bUWt54z48803mmy7lLeyj1Bdu xQO50MotOVmV/YUQ0KATfAXHJQPTnQ8Hq3yehXHpZ02cs6kUxOLUv1M0lxeoPxt+nobs coBHA8G+Or5cYNrTxPGvQTMT78w2fpfxo4L+1lwNEGdoLt/a2328cYFXcegSwo+spAM5 Ckt1YJybcrOaI+a7VSBOtEmcBey7vYRVdk6iYPOv/Y8Gm5wxOiAnnlQEUzNuUukByRlw x6sqxLg8YPMPM6OlPHbc7u6GknKuELnpp2bQB8tQ0mcgZUfWbjTXsAMFmNEiNIV6XUOp L5aw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=f7dox+GT; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id k29-20020a634b5d000000b004aa6f50445dsi28185480pgl.469.2023.01.15.19.13.01; Sun, 15 Jan 2023 19:13:07 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=f7dox+GT; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231686AbjAPCuT (ORCPT + 52 others); Sun, 15 Jan 2023 21:50:19 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52058 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231822AbjAPCuL (ORCPT ); Sun, 15 Jan 2023 21:50:11 -0500 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id DC2A66E9E for ; Sun, 15 Jan 2023 18:49:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1673837363; 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=rY+5DbLLon7IpXdDXykQnTd3J3XFXUn+jM1P9sxlSJQ=; b=f7dox+GTNpLsEkRzM7p71azAr7KpGCsbYviFTWCFZPMthwTidzKwiAEHh95jg7dr/vI6sh MhoKkVnEWjJdms1kt7+V3j+O9b5/wgYbgJqlZJhCJ78DafFsFdq8yFKG3KbMbqO1DHhQzA RlyxnMy0yqNBuOOHgscVwi32WE066cI= Received: from mail-oi1-f197.google.com (mail-oi1-f197.google.com [209.85.167.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-518-VO4o6_w0NPaUbUxPgPoyKQ-1; Sun, 15 Jan 2023 21:49:22 -0500 X-MC-Unique: VO4o6_w0NPaUbUxPgPoyKQ-1 Received: by mail-oi1-f197.google.com with SMTP id u26-20020a056808001a00b00364ef1c0872so258432oic.20 for ; Sun, 15 Jan 2023 18:49:21 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=rY+5DbLLon7IpXdDXykQnTd3J3XFXUn+jM1P9sxlSJQ=; b=iebPef4Xxm7mEslblzVy8eSC5SNc+4dZixAhlAJx2umJX/TJ7KEOySOHIJlBaG0LBi qmxJceg0FJ5cI10jVl3zuz9T128k4Q478HUpOM1ahvTFY9z2WZ7LCky9jL7ElzTz76iA XeFYf82rnN3ca3NmS1olQ9ZTY1kmQ4naC7EExP++41V6ti5IpRSlHrPtxgt42AAw0Fqo 779dUWJJP9dUdJXi244idMjueg9/5/eUoYc1c0l4N0QRvz9tjI7Roo1bOOTVBv/FRI2M sFOgGi0OVz36rKaoXkzhv7+TWG5EhmPrOqbEq01j8qWB0YnybZDAFffFcbvC2Dcmmh52 ePEg== X-Gm-Message-State: AFqh2kpJg+k7EmnWWxH6dVW+UTgVl4LPwGfY9Trj6jfaPcgxFa0CSJ/k OO6Gl/b+MAz66oEfzkaEM3nIjNZ3jjVwORKjFzNa7Vgt4dqVsULX9fOeYOEoLCL8SQzU17T41bI +cgiq+VFb+CTy/gR1jh78fVdSXJ/Nj2bvOwfVLgA4 X-Received: by 2002:a05:6830:6481:b0:684:9f72:3fe3 with SMTP id ck1-20020a056830648100b006849f723fe3mr1350377otb.201.1673837361345; Sun, 15 Jan 2023 18:49:21 -0800 (PST) X-Received: by 2002:a05:6830:6481:b0:684:9f72:3fe3 with SMTP id ck1-20020a056830648100b006849f723fe3mr1350372otb.201.1673837361160; Sun, 15 Jan 2023 18:49:21 -0800 (PST) MIME-Version: 1.0 References: <20230111062809.25020-1-jasowang@redhat.com> <20230111062809.25020-6-jasowang@redhat.com> In-Reply-To: From: Jason Wang Date: Mon, 16 Jan 2023 10:49:10 +0800 Message-ID: Subject: Re: [PATCH 5/5] vdpa: mlx5: support per virtqueue dma device To: Eli Cohen Cc: "mst@redhat.com" , "gdawar@amd.com" , "virtualization@lists.linux-foundation.org" , "linux-kernel@vger.kernel.org" , "tanuj.kamde@amd.com" Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sun, Jan 15, 2023 at 7:08 PM Eli Cohen wrote: > > > From: Jason Wang > > Sent: Wednesday, 11 January 2023 8:28 > > To: mst@redhat.com; jasowang@redhat.com > > Cc: Eli Cohen ; gdawar@amd.com; > > virtualization@lists.linux-foundation.org; linux-kernel@vger.kernel.org; > > tanuj.kamde@amd.com > > Subject: [PATCH 5/5] vdpa: mlx5: support per virtqueue dma device > > > > This patch implements per virtqueue dma device for mlx5_vdpa. This is > > needed for virtio_vdpa to work for CVQ which is backed by vringh but > > not DMA. We simply advertise the vDPA device itself as the DMA device > > for CVQ then DMA API can simply use PA so the identical mapping for > > CVQ can still be used. Otherwise the identical (1:1) mapping won't > > work when platform IOMMU is enabled since the IOVA is allocated on > > demand which is not necessarily the PA. > > > > This fixes the following crash when mlx5 vDPA device is bound to > > virtio-vdpa with platform IOMMU enabled but not in passthrough mode: > > > > BUG: unable to handle page fault for address: ff2fb3063deb1002 > > #PF: supervisor read access in kernel mode > > #PF: error_code(0x0000) - not-present page > > PGD 1393001067 P4D 1393002067 PUD 0 > > Oops: 0000 [#1] PREEMPT SMP NOPTI > > CPU: 55 PID: 8923 Comm: kworker/u112:3 Kdump: loaded Not tainted 6.1.0+ > > #7 > > Hardware name: Dell Inc. PowerEdge R750/0PJ80M, BIOS 1.5.4 12/17/2021 > > Workqueue: mlx5_vdpa_wq mlx5_cvq_kick_handler [mlx5_vdpa] > > RIP: 0010:vringh_getdesc_iotlb+0x93/0x1d0 [vringh] > > Code: 14 25 40 ef 01 00 83 82 c0 0a 00 00 01 48 2b 05 93 5a 1b ea 8b 4c 24 > > 14 48 c1 f8 06 48 c1 e0 0c 48 03 05 90 5a 1b ea 48 01 c8 <0f> b7 00 83 aa c0 > > 0a 00 00 01 65 ff 0d bc e4 41 3f 0f 84 05 01 00 > > RSP: 0018:ff46821ba664fdf8 EFLAGS: 00010282 > > RAX: ff2fb3063deb1002 RBX: 0000000000000a20 RCX: 0000000000000002 > > RDX: ff2fb318d2f94380 RSI: 0000000000000002 RDI: 0000000000000001 > > RBP: ff2fb3065e832410 R08: ff46821ba664fe00 R09: 0000000000000001 > > R10: 0000000000000000 R11: 000000000000000d R12: ff2fb3065e832488 > > R13: ff2fb3065e8324a8 R14: ff2fb3065e8324c8 R15: ff2fb3065e8324a8 > > FS: 0000000000000000(0000) GS:ff2fb3257fac0000(0000) > > knlGS:0000000000000000 > > CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 > > CR2: ff2fb3063deb1002 CR3: 0000001392010006 CR4: 0000000000771ee0 > > DR0: 0000000000000000 DR1: 0000000000000000 DR2: > > 0000000000000000 > > DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 > > PKRU: 55555554 > > Call Trace: > > > > mlx5_cvq_kick_handler+0x89/0x2b0 [mlx5_vdpa] > > process_one_work+0x1e2/0x3b0 > > ? rescuer_thread+0x390/0x390 > > worker_thread+0x50/0x3a0 > > ? rescuer_thread+0x390/0x390 > > kthread+0xd6/0x100 > > ? kthread_complete_and_exit+0x20/0x20 > > ret_from_fork+0x1f/0x30 > > > > > > Signed-off-by: Jason Wang > > mlx5_get_vq_dma_dev needs to made static. Right, I will fix it in v2. > Other than that: > Reviewed-by: Eli Cohen > Tested-by: Thanks > > Reviewed-by: Eli Cohen > Tested-by: > > --- > > drivers/vdpa/mlx5/net/mlx5_vnet.c | 11 +++++++++++ > > 1 file changed, 11 insertions(+) > > > > diff --git a/drivers/vdpa/mlx5/net/mlx5_vnet.c > > b/drivers/vdpa/mlx5/net/mlx5_vnet.c > > index 6632651b1e54..b0e74c25bf48 100644 > > --- a/drivers/vdpa/mlx5/net/mlx5_vnet.c > > +++ b/drivers/vdpa/mlx5/net/mlx5_vnet.c > > @@ -2682,6 +2682,16 @@ static int mlx5_vdpa_set_map(struct vdpa_device > > *vdev, unsigned int asid, > > return err; > > } > > > > +struct device *mlx5_get_vq_dma_dev(struct vdpa_device *vdev, u16 idx) > > +{ > > + struct mlx5_vdpa_dev *mvdev = to_mvdev(vdev); > > + > > + if (is_ctrl_vq_idx(mvdev, idx)) > > + return &vdev->dev; > > + > > + return mvdev->vdev.dma_dev; > > +} > > + > > static void mlx5_vdpa_free(struct vdpa_device *vdev) > > { > > struct mlx5_vdpa_dev *mvdev = to_mvdev(vdev); > > @@ -2897,6 +2907,7 @@ static const struct vdpa_config_ops mlx5_vdpa_ops > > = { > > .get_generation = mlx5_vdpa_get_generation, > > .set_map = mlx5_vdpa_set_map, > > .set_group_asid = mlx5_set_group_asid, > > + .get_vq_dma_dev = mlx5_get_vq_dma_dev, > > .free = mlx5_vdpa_free, > > .suspend = mlx5_vdpa_suspend, > > }; > > -- > > 2.25.1 >