From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 2D7D141EB1; Thu, 16 Mar 2023 15:45:41 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0BF9B40DF6; Thu, 16 Mar 2023 15:45:41 +0100 (CET) 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 1289040DDC for ; Thu, 16 Mar 2023 15:45:38 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1678977938; 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=7uzrdxa/qFTZ1YEwz3cUtKHtWVh7W8V5ND/Qds1jEfE=; b=ZFGKOWjMrzCWP2rrE9tqjyx9WjNhbjTmWzQLcUs1Xq22oQrRy78AGzncB/ytB7UMfocvDt 6t3YgPPGrpKscs4C9jRMNPBAe60TyaRFVFJMJnszHq41wH54mbELbt1tOn2GwINNRTidef QdHoGAmHDbwysa3U7EPdqIoI3KAboqs= 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-317-NOddZE-mPeq9iN4IOhO3eQ-1; Thu, 16 Mar 2023 10:45:35 -0400 X-MC-Unique: NOddZE-mPeq9iN4IOhO3eQ-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.rdu2.redhat.com [10.11.54.8]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id EC399811E7E; Thu, 16 Mar 2023 14:45:34 +0000 (UTC) Received: from [10.39.208.23] (unknown [10.39.208.23]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 07E24C15BAD; Thu, 16 Mar 2023 14:45:33 +0000 (UTC) Message-ID: <536434b5-fc3a-3803-d2fb-7eb01520c8a7@redhat.com> Date: Thu, 16 Mar 2023 15:45:32 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 Subject: Re: [PATCH v2] vhost: fix madvise IOTLB entries pages overlap check To: David Marchand Cc: dev@dpdk.org, mkp@redhat.com, chenbo.xia@intel.com References: <20230315114010.444005-1-maxime.coquelin@redhat.com> From: Maxime Coquelin In-Reply-To: X-Scanned-By: MIMEDefang 3.1 on 10.11.54.8 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org On 3/16/23 09:52, David Marchand wrote: > On Thu, Mar 16, 2023 at 9:38 AM Maxime Coquelin > wrote: >> On 3/16/23 09:13, David Marchand wrote: >>> On Wed, Mar 15, 2023 at 12:40 PM Maxime Coquelin >>> wrote: >>>> >>>> At removal time, when testing whether the IOTLB entry has >>>> shared pages with the previous and next entries in the >>>> cache, it checks whether the start address of the entry to >>>> be removed is on the same page as the start address of the >>>> next entry in the cache. >>>> >>>> This is not correct, as an entry could cover several page >>>> so the end address of the entry to be remove should be >>>> used. This patch address this issue. >>> >>> I'm trying to understand the logic, so I needed to write this down :-). >>> >>> Let's imagine the cache contained 3 nodes, "prev", "node" and "next". >>> All those nodes (in this example) do not start or end on a page boundary. >>> Prior to touching those entries, all pages of the nodes are marked as DODUMP. >>> >>> "prev" spans over two pages, "a" and "b". >>> "node" spans over three pages, "b", "c" and "d". >>> "next" spans over two pages, "d" and "e". >>> >>> IOW, "prev" and "node" are sharing the "b" page. >>> IOW, "node" and "next" are sharing the "d" page. >>> >>> Something like (better displayed with fixed-width chars): >>> prev node next >>> <----> <----------> <----> >>> | a | b | c | d | e | >>> >>> >>> >>> Previous to this fix, since we were testing the first page of each >>> node, it resulted in page "b" being marked as DONTDUMP, while it was >>> still in use for "prev". >>> And for the same reason, page "d" would be marked as DONTDUMP too. >>> >>> After this fix, all pages are left with DODUMP. >>> >>> Is my understanding correct? >> >> It is correct, that's the other bug I mentioned you yesterday. > > Probably, but I did not catch it at the time :-). > > >> I should have mentioned it in the commit log. >> >>> If so, there is still one (minor?) issue to look into: we leave the >>> "c" page as DODUMP while it won't contain useful information. >> >> In my opinion, this is a minor issue as it indeed keeps some pages as >> DODUMP while they should be set as DONTDUMP. And the changes required to >> fix it seems too big at the stage of the release, and I would prefer to >> fix it in v23.07 to be on the safe side. >> >> It is the opposite for this fix, which is trivial and prevent missing >> pages in the coredump. >> >> Does that sounds good to you? I can add a note in the commit message if >> you want. > > Ok for me with a note yes. Added this: " Note there is another issue not fixed by this patch, but delayed to next release given its minor impact and the complexity of the fix it requires. If a removed IOTLB entry is spanned on several pages and one of the pages is shared with another entry, all the pages will remain as DODUMP while only the shared page should be. It would result in non-shared pages to be part of the coredump while it would not be needed. " > This code is not trivial :-). Yes, I have some ideas to simplify it, but it will wait v23.07 Thanks, Maxime > > Thanks. > >