Received: by 2002:a05:6a10:a841:0:0:0:0 with SMTP id d1csp895847pxy; Thu, 22 Apr 2021 16:36:04 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzmqW2O3IH6vxsujfP6kXIEIZ8Hc/N3/QMsKCdg9nbc54/iuyEqwq/8hiEHsEKXLQ7ZeBn9 X-Received: by 2002:a63:488:: with SMTP id 130mr1021638pge.359.1619134564238; Thu, 22 Apr 2021 16:36:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1619134564; cv=none; d=google.com; s=arc-20160816; b=W+Y9IW3i4HPvHjIaU6O3SZaK3AJuaa4LnHIurNhYgraWybCv5V4a/+Lg2YiHfUhR0g /7sOAhbIvyhY5010nig4v6vEVuV5R6BLWTfMZXIDiR5RTegb1wWVjFGzH4e/Zu6Ohf3A n/RzM0eOnJvkHsAedukTLmvp7zElD6P60WOBk8seAxE/6LyQK3CbcnmkfR0Diewziuim iZ25mLpSh7HgL++270B0/WW9MVU2MGVeOhZyCyweJc+eGpYH7WAw/Q63VTHWJ9kM1hnm VccXvviec7czpsvXKvkQDfx5Hht6pk74PY3GyPFogW5H5kD0rgwi4hrf8j41OyjM5EzR /kQg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:content-language :in-reply-to:mime-version:user-agent:date:message-id:from:references :cc:to:subject:reply-to:dkim-signature; bh=WXUjBiBtw/xQjxnogOOcI5Cr8lsqNo0d3Mm0tliIk0s=; b=RLF4whHCTLmGJ1f035TmfqlMxRRSKJniIgJi0YgQEN8lbLDMgCyUBj34Oy5AuRuniu GkEkIfcOKRHj8eGJjvZNNOMWBfO7257UJ9ZuXsjQDhNSBFL+9gMVyJyn91qzVIsJ9+g+ N3vgiSa7M085LpxIbMprY7YNCb8QSd0hBMSZ1FUK5Dr45ZT8jCbTj7yGgp12QHoU1Tey /YU7AXloUCTOEY/W//rTQNl3oZdqjsOaDUJRbxo5yAcU8sOiqr0nGfEMbT/5rhrXtUeB 6MzyP3WU/tdd+ywIs/6CnolG5wiZloof22Dm6Hnjoh1u+eM5q9zDxgyjg+m+NPouOs6/ Y9bQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=LVOKxKsr; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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 vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id r10si4548130pff.291.2021.04.22.16.35.51; Thu, 22 Apr 2021 16:36:04 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=LVOKxKsr; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 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 S236949AbhDVXf6 (ORCPT + 99 others); Thu, 22 Apr 2021 19:35:58 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:26827 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230460AbhDVXf5 (ORCPT ); Thu, 22 Apr 2021 19:35:57 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1619134521; h=from:from:reply-to: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=WXUjBiBtw/xQjxnogOOcI5Cr8lsqNo0d3Mm0tliIk0s=; b=LVOKxKsrkgBCg1K9P4k8+RPYvvVcppcNVH7MQlQmC5xzry1wjWW5XtDB4fri+dRBOKVVwl tCqcRx/RBzoAQov0iYKYs9kpMqS8GZxIeTIR0dgDc8ZW9DTG992Z6h45FsK4sgtaR41zSm ZrOTBUFIo+Tgh/QtBsN3tI/VLfcjtOw= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-503-qQjUnm5-PBiLLxQUT-gf4w-1; Thu, 22 Apr 2021 19:35:19 -0400 X-MC-Unique: qQjUnm5-PBiLLxQUT-gf4w-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id D7FFD343A3; Thu, 22 Apr 2021 23:35:17 +0000 (UTC) Received: from [10.64.54.94] (vpn2-54-94.bne.redhat.com [10.64.54.94]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 1AA4C19C71; Thu, 22 Apr 2021 23:35:14 +0000 (UTC) Reply-To: Gavin Shan Subject: Re: [PATCH v4 1/2] kvm/arm64: Remove the creation time's mapping of MMIO regions To: Keqian Zhu Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, kvm@vger.kernel.org, kvmarm@lists.cs.columbia.edu, Marc Zyngier , Santosh Shukla References: <20210415140328.24200-1-zhukeqian1@huawei.com> <20210415140328.24200-2-zhukeqian1@huawei.com> <9eb47a6c-3c5c-cb4a-d1de-1a3ce1b60a87@huawei.com> From: Gavin Shan Message-ID: Date: Fri, 23 Apr 2021 11:35:22 +1000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.0 MIME-Version: 1.0 In-Reply-To: <9eb47a6c-3c5c-cb4a-d1de-1a3ce1b60a87@huawei.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Keqian, On 4/22/21 5:41 PM, Keqian Zhu wrote: > On 2021/4/22 10:12, Gavin Shan wrote: >> On 4/21/21 4:28 PM, Keqian Zhu wrote: >>> On 2021/4/21 14:38, Gavin Shan wrote: >>>> On 4/16/21 12:03 AM, Keqian Zhu wrote: [...] >> >> Yeah, Sorry that I missed that part. Something associated with Santosh's >> patch. The flag can be not existing until the page fault happened on >> the vma. In this case, the check could be not working properly. >> >> [PATCH] KVM: arm64: Correctly handle the mmio faulting > Yeah, you are right. > > If that happens, we won't try to use block mapping for memslot with VM_PFNMAP. > But it keeps a same logic with old code. > > 1. When without dirty-logging, we won't try block mapping for it, and we'll > finally know that it's device, so won't try to do adjust THP (Transparent Huge Page) > for it. > 2. If userspace wrongly enables dirty logging for this memslot, we'll force_pte for it. > It's not about the patch itself and just want more discussion to get more details. The patch itself looks good to me. I got two questions as below: (1) The memslot fails to be added if it's backed by MMIO region and dirty logging is enabled in kvm_arch_prepare_memory_region(). As Santosh reported, the corresponding vma could be associated with MMIO region and VM_PFNMAP is missed. In this case, kvm_arch_prepare_memory_region() isn't returning error, meaning the memslot can be added successfully and block mapping isn't used, as you mentioned. The question is the memslot is added, but the expected result would be failure. (2) If dirty logging is enabled on the MMIO memslot, everything should be fine. If the dirty logging isn't enabled and VM_PFNMAP isn't set yet in user_mem_abort(), block mapping won't be used and PAGE_SIZE is picked, but the failing IPA might be good candidate for block mapping. It means we miss something for blocking mapping? By the way, do you have idea why dirty logging can't be enabled on MMIO memslot? I guess Marc might know the history. For example, QEMU is taking "/dev/mem" or "/dev/kmem" to back guest's memory, the vma is marked as MMIO, but dirty logging and migration isn't supported? Thanks, Gavin