Message ID | 20230331154259.1447831-7-maxime.coquelin@redhat.com (mailing list archive) |
---|---|
State | Superseded, archived |
Delegated to: | Maxime Coquelin |
Headers |
Return-Path: <dev-bounces@dpdk.org> X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id B05C842887; Fri, 31 Mar 2023 17:43:45 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 8869B42D6D; Fri, 31 Mar 2023 17:43:25 +0200 (CEST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mails.dpdk.org (Postfix) with ESMTP id E21FE42D61 for <dev@dpdk.org>; Fri, 31 Mar 2023 17:43:23 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1680277403; 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: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=DXV36NX/aIzMqke4hM7zTyQWFh29iERb0TpNS+taEGE=; b=IGYNHibLIl3t4CpMGK58G1MvPMftOhTG0+CiclNk4CAG2Udf3mrVfMDIl1FN2m2Ms16tXR 9vfUQ+xnTcCcTVYnv1UblVhpUmp6mCjgrX7rpQ0HBCfmvunpThrd6JhBw2DHo4lvH73XOO EhTbDtqoLX9n8Okx42t5Va15lylifYA= Received: from mimecast-mx02.redhat.com (mimecast-mx02.redhat.com [66.187.233.88]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-557-0WXIu4HfO2yuZC7he8VNiQ-1; Fri, 31 Mar 2023 11:43:22 -0400 X-MC-Unique: 0WXIu4HfO2yuZC7he8VNiQ-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.rdu2.redhat.com [10.11.54.4]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 951F28030A0; Fri, 31 Mar 2023 15:43:21 +0000 (UTC) Received: from max-t490s.redhat.com (unknown [10.39.208.6]) by smtp.corp.redhat.com (Postfix) with ESMTP id 12CF52027040; Fri, 31 Mar 2023 15:43:18 +0000 (UTC) From: Maxime Coquelin <maxime.coquelin@redhat.com> To: dev@dpdk.org, david.marchand@redhat.com, chenbo.xia@intel.com, mkp@redhat.com, fbl@redhat.com, jasowang@redhat.com, cunming.liang@intel.com, xieyongji@bytedance.com, echaudro@redhat.com, eperezma@redhat.com, amorenoz@redhat.com Cc: Maxime Coquelin <maxime.coquelin@redhat.com>, stable@dpdk.org Subject: [RFC 06/27] vhost: don't dump unneeded pages with IOTLB Date: Fri, 31 Mar 2023 17:42:38 +0200 Message-Id: <20230331154259.1447831-7-maxime.coquelin@redhat.com> In-Reply-To: <20230331154259.1447831-1-maxime.coquelin@redhat.com> References: <20230331154259.1447831-1-maxime.coquelin@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.1 on 10.11.54.4 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII"; x-default=true X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions <dev.dpdk.org> List-Unsubscribe: <https://mails.dpdk.org/options/dev>, <mailto:dev-request@dpdk.org?subject=unsubscribe> List-Archive: <http://mails.dpdk.org/archives/dev/> List-Post: <mailto:dev@dpdk.org> List-Help: <mailto:dev-request@dpdk.org?subject=help> List-Subscribe: <https://mails.dpdk.org/listinfo/dev>, <mailto:dev-request@dpdk.org?subject=subscribe> Errors-To: dev-bounces@dpdk.org |
Series |
Add VDUSE support to Vhost library
|
|
Commit Message
Maxime Coquelin
March 31, 2023, 3:42 p.m. UTC
On IOTLB entry removal, previous fixes took care of not
marking pages shared with other IOTLB entries as DONTDUMP.
However, if an IOTLB entry is spanned on multiple pages,
the other pages were kept as DODUMP while they might not
have been shared with other entries, increasing needlessly
the coredump size.
This patch addresses this issue by excluding only the
shared pages from madvise's DONTDUMP.
Fixes: dea092d0addb ("vhost: fix madvise arguments alignment")
Cc: stable@dpdk.org
Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com>
---
lib/vhost/iotlb.c | 21 ++++++++++++++-------
1 file changed, 14 insertions(+), 7 deletions(-)
Comments
On Fri, Mar 31, 2023 at 11:43 AM Maxime Coquelin <maxime.coquelin@redhat.com> wrote: > > On IOTLB entry removal, previous fixes took care of not > marking pages shared with other IOTLB entries as DONTDUMP. > > However, if an IOTLB entry is spanned on multiple pages, > the other pages were kept as DODUMP while they might not > have been shared with other entries, increasing needlessly > the coredump size. > > This patch addresses this issue by excluding only the > shared pages from madvise's DONTDUMP. > > Fixes: dea092d0addb ("vhost: fix madvise arguments alignment") > Cc: stable@dpdk.org > > Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com> Looks good to me. Acked-by: Mike Pattrick <mkp@redhat.com>
> -----Original Message----- > From: Maxime Coquelin <maxime.coquelin@redhat.com> > Sent: Friday, March 31, 2023 11:43 PM > To: dev@dpdk.org; david.marchand@redhat.com; Xia, Chenbo > <chenbo.xia@intel.com>; mkp@redhat.com; fbl@redhat.com; > jasowang@redhat.com; Liang, Cunming <cunming.liang@intel.com>; Xie, Yongji > <xieyongji@bytedance.com>; echaudro@redhat.com; eperezma@redhat.com; > amorenoz@redhat.com > Cc: Maxime Coquelin <maxime.coquelin@redhat.com>; stable@dpdk.org > Subject: [RFC 06/27] vhost: don't dump unneeded pages with IOTLB > > On IOTLB entry removal, previous fixes took care of not > marking pages shared with other IOTLB entries as DONTDUMP. > > However, if an IOTLB entry is spanned on multiple pages, > the other pages were kept as DODUMP while they might not > have been shared with other entries, increasing needlessly > the coredump size. > > This patch addresses this issue by excluding only the > shared pages from madvise's DONTDUMP. > > Fixes: dea092d0addb ("vhost: fix madvise arguments alignment") > Cc: stable@dpdk.org > > Signed-off-by: Maxime Coquelin <maxime.coquelin@redhat.com> > --- > lib/vhost/iotlb.c | 21 ++++++++++++++------- > 1 file changed, 14 insertions(+), 7 deletions(-) > > diff --git a/lib/vhost/iotlb.c b/lib/vhost/iotlb.c > index d919f74704..f598c0a8c4 100644 > --- a/lib/vhost/iotlb.c > +++ b/lib/vhost/iotlb.c > @@ -54,16 +54,23 @@ static void > vhost_user_iotlb_clear_dump(struct virtio_net *dev, struct > vhost_iotlb_entry *node, > struct vhost_iotlb_entry *prev, struct vhost_iotlb_entry *next) > { > - uint64_t align; > + uint64_t align, start, end; > + > + start = node->uaddr; > + end = node->uaddr + node->size; > > align = hua_to_alignment(dev->mem, (void *)(uintptr_t)node->uaddr); > > - /* Don't disable coredump if the previous node is in the same page > */ > - if (!vhost_user_iotlb_share_page(prev, node, align)) { > - /* Don't disable coredump if the next node is in the same page > */ > - if (!vhost_user_iotlb_share_page(node, next, align)) > - mem_set_dump((void *)(uintptr_t)node->uaddr, node->size, > false, align); > - } > + /* Skip first page if shared with previous entry. */ > + if (vhost_user_iotlb_share_page(prev, node, align)) > + start = RTE_ALIGN_CEIL(start, align); > + > + /* Skip last page if shared with next entry. */ > + if (vhost_user_iotlb_share_page(node, next, align)) > + end = RTE_ALIGN_FLOOR(end, align); > + > + if (end > start) > + mem_set_dump((void *)(uintptr_t)start, end - start, false, > align); > } > > static struct vhost_iotlb_entry * > -- > 2.39.2 Reviewed-by: Chenbo Xia <chenbo.xia@intel.com>
diff --git a/lib/vhost/iotlb.c b/lib/vhost/iotlb.c index d919f74704..f598c0a8c4 100644 --- a/lib/vhost/iotlb.c +++ b/lib/vhost/iotlb.c @@ -54,16 +54,23 @@ static void vhost_user_iotlb_clear_dump(struct virtio_net *dev, struct vhost_iotlb_entry *node, struct vhost_iotlb_entry *prev, struct vhost_iotlb_entry *next) { - uint64_t align; + uint64_t align, start, end; + + start = node->uaddr; + end = node->uaddr + node->size; align = hua_to_alignment(dev->mem, (void *)(uintptr_t)node->uaddr); - /* Don't disable coredump if the previous node is in the same page */ - if (!vhost_user_iotlb_share_page(prev, node, align)) { - /* Don't disable coredump if the next node is in the same page */ - if (!vhost_user_iotlb_share_page(node, next, align)) - mem_set_dump((void *)(uintptr_t)node->uaddr, node->size, false, align); - } + /* Skip first page if shared with previous entry. */ + if (vhost_user_iotlb_share_page(prev, node, align)) + start = RTE_ALIGN_CEIL(start, align); + + /* Skip last page if shared with next entry. */ + if (vhost_user_iotlb_share_page(node, next, align)) + end = RTE_ALIGN_FLOOR(end, align); + + if (end > start) + mem_set_dump((void *)(uintptr_t)start, end - start, false, align); } static struct vhost_iotlb_entry *