Received: by 2002:a05:6a10:f347:0:0:0:0 with SMTP id d7csp670916pxu; Thu, 3 Dec 2020 09:43:56 -0800 (PST) X-Google-Smtp-Source: ABdhPJye1FhoF0TiXt1H8Nn/K9YfD+gO8tB9jta6ecox0bJFs0Wk4Kwi8gAaL0XX1jBxh88bHVuU X-Received: by 2002:a05:6402:559:: with SMTP id i25mr3925436edx.128.1607017436279; Thu, 03 Dec 2020 09:43:56 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1607017436; cv=none; d=google.com; s=arc-20160816; b=XVIF2iEn4wItSFRlWtUg17Tm2u3PJ351ar0rEAyRHDkzvZ4NoJSnqe6QI02qiGBLVG KKU3lZhrZvxgYUx2u7lXYETiDZ12g5l+PoWPn7KwRFFK5uZHa2UMbTgN3EDwmMilexqZ lRLT4BJSgam5WqT52Vv7m1ggIqsE06XcpWsdIn1J/GZr0tdRkm0ruLQkDznGoKeq5jpD e30mPv2/krECJVpjQM6y4Cy4CCRKNdE5k3CbwoNU5lWE3ugEyF8CtjmCVZlCD+PXDy87 bfUVpR8QpiP07FNmUw/MDwUuJF8ks6HfVwaEo0fZWRhO2+sU51FswuOzZOEUDwdxIeki 0V2g== 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:dkim-signature; bh=zbIwQHwInAT5GLKTqpYwDY6NAxTvt+ZgkanC6avIhjE=; b=AV2t2p8hqkru6BVEGC7TbTqiGhiVGcagPbJzHToOBdoym2XnKdMvJEPCge02K5G5EL /0FFcBqV4nJWtSTOD0TaKbqqfIm9cL3hI9kA3nuBSuQUH3arhG9p0pJ06E3wt4qHj5lI pQiVGyUPIuYH3XEaXy1TCbNX/rZkf5DJRh7BhjHPob6Lymq4mSFrOG9+63UlHztcusfL T86TPS0Pb7ks8yI1uez9SVX5V2QsvawbP2dhk4oMvRLgWvfwRD3wes5nX5IZ+qRAIeZq LoX0pGUfuwdBPHYXFE+HQy+uPQraKDUG6ODZEz2mf9ySeNMQg3722oACrg5YgllZdK1X uWWg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=UtgUAIBl; 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 b10si1301149edu.535.2020.12.03.09.43.32; Thu, 03 Dec 2020 09:43:56 -0800 (PST) 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=UtgUAIBl; 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 S1728398AbgLCRko (ORCPT + 99 others); Thu, 3 Dec 2020 12:40:44 -0500 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:54399 "EHLO us-smtp-delivery-124.mimecast.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726712AbgLCRkn (ORCPT ); Thu, 3 Dec 2020 12:40:43 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1607017156; 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=zbIwQHwInAT5GLKTqpYwDY6NAxTvt+ZgkanC6avIhjE=; b=UtgUAIBlbGi0NfgPv2kUoXXoWkfe6DHkkU0N1AHkait5DUwj4EJI2ikXlfweakY80gre84 n2HfKF958h+oxYDKboUTeilWRlet7EXodKN2K0rBZCCtcJoWTSFD0oPsDMqSr6yeYI0GWt zV4kjjGjY12mGDI2PXShBacjatJkvLY= Received: from mail-ej1-f71.google.com (mail-ej1-f71.google.com [209.85.218.71]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-238-wIKul7eMN_yn6khP8TVv1A-1; Thu, 03 Dec 2020 12:39:15 -0500 X-MC-Unique: wIKul7eMN_yn6khP8TVv1A-1 Received: by mail-ej1-f71.google.com with SMTP id z10so1057386eje.5 for ; Thu, 03 Dec 2020 09:39:14 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:message-id:date :user-agent:mime-version:in-reply-to:content-language :content-transfer-encoding; bh=zbIwQHwInAT5GLKTqpYwDY6NAxTvt+ZgkanC6avIhjE=; b=l3C9EDHE/ZUu9Edp22jofAB2tMH+W/mVoG7KUYp8Q5rSHHIjh/UNPQsRy014Dh94T6 Fj/sDiGpaVQJRrqKIsZvWDHbysW6Wx3ctc3mNBqpgkJ5qIEAQZZA2PgI0nOwMXHSAgaF ygcWjydmsUT23LU9UyNaDrCba9wPV37iJCnsCEzmcOrjsgUq587xV00s3xPYw8nD054K U99Mv/mATCM6JEaLxP28TsR7uYhSU1fXyx2jS62f+WegrLqRHqGIkGSehCbf1JIESfQq Izlj1PXXnyQxqaEV3xZ9pKQtbPFUXKUWaXgYO5XrTMUGTPBZ7ImsaxaXPLg/5Cpq+ZoU pVsA== X-Gm-Message-State: AOAM533nc6Hna2oqIEw8lhl2Ix1XIarvrk5mdtetYzA2JLDmbbEF/Cth maCfXX9RmPpeyLkwa7GnxZAexLfpkUy6xWss9nf53u9F6LIcQedmz1qXW3OLBvIzNzwk0isRc2D axTQWDGKGtUf+SV2ziVgFrFDLY0zuigp7xHnhapshTbk86hTQAkIXd6eqR0uw2YL1hN7ftJGDOU fN X-Received: by 2002:aa7:cb4a:: with SMTP id w10mr3888358edt.343.1607017153515; Thu, 03 Dec 2020 09:39:13 -0800 (PST) X-Received: by 2002:aa7:cb4a:: with SMTP id w10mr3888335edt.343.1607017153262; Thu, 03 Dec 2020 09:39:13 -0800 (PST) Received: from ?IPv6:2001:b07:6468:f312:c8dd:75d4:99ab:290a? ([2001:b07:6468:f312:c8dd:75d4:99ab:290a]) by smtp.gmail.com with ESMTPSA id n17sm1278629ejh.49.2020.12.03.09.39.11 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 03 Dec 2020 09:39:12 -0800 (PST) Subject: Re: [PATCH] selftests: kvm/set_memory_region_test: Fix race in move region test To: "Maciej S. Szmigiero" , Shuah Khan Cc: Sean Christopherson , kvm@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org References: <0fdddb94bb0e31b7da129a809a308d91c10c0b5e.1606941224.git.maciej.szmigiero@oracle.com> From: Paolo Bonzini Message-ID: <6e0f1fcf-c8ac-c05a-778b-eeb7a4cd50e7@redhat.com> Date: Thu, 3 Dec 2020 18:39:11 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.4.0 MIME-Version: 1.0 In-Reply-To: <0fdddb94bb0e31b7da129a809a308d91c10c0b5e.1606941224.git.maciej.szmigiero@oracle.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 02/12/20 21:35, Maciej S. Szmigiero wrote: > From: "Maciej S. Szmigiero" > > The current memory region move test correctly handles the situation that > the second (realigning) memslot move operation would temporarily trigger > MMIO until it completes, however it does not handle the case in which the > first (misaligning) move operation does this, too. > This results in false test assertions in case it does so. > > Fix this by handling temporary MMIO from the first memslot move operation > in the test guest code, too. > > Fixes: 8a0639fe9201 ("KVM: sefltests: Add explicit synchronization to move mem region test") > Signed-off-by: Maciej S. Szmigiero > --- > The race is pretty hard to trigger on the current KVM memslot code, > to trigger it reliably an extra delay in memslot move op is needed: > --- a/virt/kvm/kvm_main.c > +++ b/virt/kvm/kvm_main.c > @@ -1173,7 +1173,7 @@ static struct kvm_memslots *kvm_dup_memslots(struct kvm_memslots *old, > > return slots; > } > - > +#include > static int kvm_set_memslot(struct kvm *kvm, > const struct kvm_userspace_memory_region *mem, > struct kvm_memory_slot *old, > @@ -1212,6 +1212,8 @@ static int kvm_set_memslot(struct kvm *kvm, > * - kvm_is_visible_gfn (mmu_check_root) > */ > kvm_arch_flush_shadow_memslot(kvm, slot); > + > + if (change == KVM_MR_MOVE) mdelay(100); > } > > r = kvm_arch_prepare_memory_region(kvm, new, mem, change); > > .../selftests/kvm/set_memory_region_test.c | 17 +++++++++++++---- > 1 file changed, 13 insertions(+), 4 deletions(-) > > diff --git a/tools/testing/selftests/kvm/set_memory_region_test.c b/tools/testing/selftests/kvm/set_memory_region_test.c > index b3ece55a2da6..6f441dd9f33c 100644 > --- a/tools/testing/selftests/kvm/set_memory_region_test.c > +++ b/tools/testing/selftests/kvm/set_memory_region_test.c > @@ -156,14 +156,23 @@ static void guest_code_move_memory_region(void) > GUEST_SYNC(0); > > /* > - * Spin until the memory region is moved to a misaligned address. This > - * may or may not trigger MMIO, as the window where the memslot is > - * invalid is quite small. > + * Spin until the memory region starts getting moved to a > + * misaligned address. > + * Every region move may or may not trigger MMIO, as the > + * window where the memslot is invalid is usually quite small. > */ > val = guest_spin_on_val(0); > GUEST_ASSERT_1(val == 1 || val == MMIO_VAL, val); > > - /* Spin until the memory region is realigned. */ > + /* Spin until the misaligning memory region move completes. */ > + val = guest_spin_on_val(MMIO_VAL); > + GUEST_ASSERT_1(val == 1 || val == 0, val); > + > + /* Spin until the memory region starts to get re-aligned. */ > + val = guest_spin_on_val(0); > + GUEST_ASSERT_1(val == 1 || val == MMIO_VAL, val); > + > + /* Spin until the re-aligning memory region move completes. */ > val = guest_spin_on_val(MMIO_VAL); > GUEST_ASSERT_1(val == 1, val); > > Queued, thanks. paolo