From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-5.3 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_SANE_1 autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7668FC433ED for ; Fri, 23 Apr 2021 01:38:11 +0000 (UTC) Received: from desiato.infradead.org (desiato.infradead.org [90.155.92.199]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id CDBA960C3D for ; Fri, 23 Apr 2021 01:38:10 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CDBA960C3D Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=huawei.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=desiato.20200630; h=Sender:Content-Transfer-Encoding :Content-Type:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:Date:Message-ID:From:CC: References:To:Subject:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=SLehkoF71Q0Y1ykWCF3UIroF/aH23j7LIN7rGZ7QSt0=; b=kDqL+2Q570RqOuYGXn+eHS3JG 5eFlpTZl4s8+PPlmOOtQlNjfKllZ3wf2dxiXDnm3wiYi6ZL6ShqtuXxOEdrZ8TYoCcBgQKLfyEoG4 9WhqalPcH8vmmmLHJ4p+OJDe4HMVg8M2o5JpAOk/4dsPz92WMRF7RFrZJnkvGBBDefZJAlPhzDPAV 4+Cn1HxI0hHIFWMDHaKMQUfYj2xR5RbE1DVGfBNRcMWw9EqIrKGlcF4nkx1adZvt3gafmGM1n+xak d2EXUO6rBMFOvz9iQ1ZUpmMHJKOjcA4og2U68WEtnonErQfQAdFLzLb5YvmrF7vpXzQ82IMzo9828 cYFLiyrPQ==; Received: from localhost ([::1] helo=desiato.infradead.org) by desiato.infradead.org with esmtp (Exim 4.94 #2 (Red Hat Linux)) id 1lZkk0-000HuD-Ry; Fri, 23 Apr 2021 01:36:21 +0000 Received: from bombadil.infradead.org ([2607:7c80:54:e::133]) by desiato.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lZkjx-000HtI-4T for linux-arm-kernel@desiato.infradead.org; Fri, 23 Apr 2021 01:36:17 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=bombadil.20210309; h=Content-Transfer-Encoding: Content-Type:In-Reply-To:MIME-Version:Date:Message-ID:From:CC:References:To: Subject:Sender:Reply-To:Content-ID:Content-Description; bh=uX2vA1m2hcbCVWmHN8qkCuuaQekEBwzykmf5++v3lS4=; b=pWGbNqAFJEKY7qpqstgFODPKlP k0XJzPZQHhIsRYGrJd//KWawCWnJAI9XEPcxpRuUBNKxzOtqN5bgzbqDOgYP/gerx1lTHEPlldZAg CT0BI4nllaYTMmfMmqkS83ODwC5Sk1nuP+lHyxGYdf5xbxNo/lbtRKmZIRAMh4GrjxvBvbnt4+1yy vBHyZdZoanIophiGdu6Ta8i7I53C8nGqTEPoyFvlnBkYr2b7KWunDUlislpj+XrjYOalRg33Il7WF ufYMeMZmSjR0WKUCadUOG8nnub11RvV70DOWui8Renb+l7SFRk/yw5BqS9shqHvOphGPJxqeKM6y7 JZnBu25g==; Received: from szxga06-in.huawei.com ([45.249.212.32]) by bombadil.infradead.org with esmtps (Exim 4.94 #2 (Red Hat Linux)) id 1lZkjt-00E5M2-Vh for linux-arm-kernel@lists.infradead.org; Fri, 23 Apr 2021 01:36:15 +0000 Received: from DGGEMS402-HUB.china.huawei.com (unknown [172.30.72.59]) by szxga06-in.huawei.com (SkyGuard) with ESMTP id 4FRGzR4CGGzlZ8N; Fri, 23 Apr 2021 09:34:11 +0800 (CST) Received: from [10.174.187.224] (10.174.187.224) by DGGEMS402-HUB.china.huawei.com (10.3.19.202) with Microsoft SMTP Server id 14.3.498.0; Fri, 23 Apr 2021 09:36:05 +0800 Subject: Re: [PATCH v4 1/2] kvm/arm64: Remove the creation time's mapping of MMIO regions To: Gavin Shan References: <20210415140328.24200-1-zhukeqian1@huawei.com> <20210415140328.24200-2-zhukeqian1@huawei.com> <9eb47a6c-3c5c-cb4a-d1de-1a3ce1b60a87@huawei.com> CC: , , , , Marc Zyngier , Santosh Shukla From: Keqian Zhu Message-ID: Date: Fri, 23 Apr 2021 09:36:05 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.7.1 MIME-Version: 1.0 In-Reply-To: X-Originating-IP: [10.174.187.224] X-CFilter-Loop: Reflected X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20210422_183614_369528_942B3B61 X-CRM114-Status: GOOD ( 28.10 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hi Gavin, On 2021/4/23 9:35, Gavin Shan wrote: > 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. Sure. I think we could try to populate the final flag of vma in kvm_arch_prepare_memory_region(). Maybe through GUP or any better method? It's nice if you can try to solve this. :) > > (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? Right. This issue also can be solved by populating the final flag of vma in kvm_arch_prepare_memory_region(). > > By the way, do you have idea why dirty logging can't be enabled on MMIO memslot? IIUC, MMIO region is of device memory type, it's associated with device state and action. For normal memory type, we can write it out-of-order and repeatedly, but for device memory type, we can't do that. The write to MMIO will trigger device action based on current device state, also what we can read from MMIO based on current device state. Thus the policy of dirty logging for normal memory can't be applied to MMIO. > 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? The MMIO region is a part of device state. We need extra kernel driver to support migration of pass-through device, as how to save and restore the device state is closely related to a specific type of device. You can refer VFIO migration for more detail. Thanks, Keqian _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel