From mboxrd@z Thu Jan 1 00:00:00 1970 From: Radim =?utf-8?B?S3LEjW3DocWZ?= Subject: Re: kvm memslot questions Date: Mon, 12 Dec 2016 16:17:20 +0100 Message-ID: <20161212151719.GA2293@potion> References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Cc: KVM maillist To: "jack.chen" Return-path: Received: from mx1.redhat.com ([209.132.183.28]:39774 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751256AbcLLPRX (ORCPT ); Mon, 12 Dec 2016 10:17:23 -0500 Content-Disposition: inline In-Reply-To: Sender: kvm-owner@vger.kernel.org List-ID: 2016-12-12 17:18+0800, jack.chen: > hello,now I want to know which GFN of VM is available,so I set > kvm_userspace_mem->flags |= 0x1; in kvm_vm_ioctl function ,so KVM can > create dirty_bitmap for slots The caller of KVM_SET_USER_MEMORY_REGION knows which GFNs are "available", because it configures that into kvm_userspace_mem->guest_phys_addr and kvm_userspace_mem->size. KVM knows which GFNs are "available", because it remembers all memory regions that were configured. > case KVM_SET_USER_MEMORY_REGION: { > struct kvm_userspace_memory_region kvm_userspace_mem; > > …… > kvm_userspace_mem->flags |= 0x1; Why do you want to use the dirty page bitmap in KVM? > r = kvm_vm_ioctl_set_memory_region(kvm, &kvm_userspace_mem); > break; > > and I have 2 questions: > 1. > if corresponding bit is setted,the GFN is used by VM,other than it is > available!right? The GFN is always available. If the corresponding bit in dirty log is set, then the GFN was modified since userspace did the last KVM_GET_DIRTY_LOG ioctl. > 2、 > how to check wheather the bit is 1 or not,the test_bit function > returns -1 to me,I do not know if I use wrong function! > thanks in advance!!! test_bit() from arch/x86/include/asm/bitops.h returns bool so there is something wrong with your test_bit(). In any case, see kvm_vm_ioctl_get_dirty_log() for what is needed to access the dirty log.