Received: by 2002:a05:6a10:2726:0:0:0:0 with SMTP id ib38csp771732pxb; Tue, 5 Apr 2022 22:39:15 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwGF/slOrqiG/z9RVT8Bo5Sit6Y5nnwVh+I3di/gNiQ93Do1hW1Tc7/S9ECggbliseYX0/K X-Received: by 2002:a17:90a:e7c8:b0:1c6:c3ac:893b with SMTP id kb8-20020a17090ae7c800b001c6c3ac893bmr7938127pjb.122.1649223554892; Tue, 05 Apr 2022 22:39:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1649223554; cv=none; d=google.com; s=arc-20160816; b=IGymal9msBP0Wf4Q4HTm060Ybgu6fCwLyJN5Ek6jaVoSdMfUkSEpC4PJc1jS3de5mb CdceiFY1T6WKDNVq8j7IyPIq6+uTev/w4eICicIT4JUEAs16QMNrrY7m1bcxaIrB6s1e 1F1hmODIFZ9wBSvvxeALFzjokoOfHPRYMat7HHs6w0yG/dIqpsd4kDFXAKXa5jAc2w8S C1pjguDxBHWnMn+d03gtonMHeAdjkUlNqY6HVGAjsdAtbM2xGaWOyNHoquynghTibqy8 k6EUQaqwmO9qJjPSrUS7wDGW1Hm/4eJqm3ODvSI++MHaPKCqoFbcFGFmP7s7exvph0vR G+UA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=YKs67WXbz7B4sIf+3aj/J0+e3f2EtiIOj/W10qnY70g=; b=lpwJQ6jRlcLzfsYu4EWfaVU9ZJSeQD09mhja8EOw9/qaQNL9eD067WTnYMmLN/olxg 9ahyPV+VuR2azBNGkTVZcz4hm+GqMduYnurExCMofshOpSV0SR1Fka//vtTR0TqTkJs0 tFbr5EP0ZzjA8ATPkIYI0s32SjabwBuB8UExQpg5baPTp8b7khAIFrd7PtVmgxuh23NA aVGOPAb0dwY6t/DiLqwd8Ds3PhGHmiLv8gEqgTztl4w1XVs7yjz4snw5WUsYDEtrvU84 0FGhzYkiFrwgYQgHFiTaBkWJzVw79EdvDjLjIKFQ7bh+f0iX84fjgEU3waGkPpBXrfgi 6riQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=B8QIdCk+; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id r2-20020a1709028bc200b00153b2d1647bsi13982588plo.131.2022.04.05.22.39.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 05 Apr 2022 22:39:14 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=B8QIdCk+; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 34CB6ED91B; Tue, 5 Apr 2022 21:36:51 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1843817AbiDFBmJ (ORCPT + 99 others); Tue, 5 Apr 2022 21:42:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40838 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1352881AbiDEKFQ (ORCPT ); Tue, 5 Apr 2022 06:05:16 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E7B782181F; Tue, 5 Apr 2022 02:54:00 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 1E9D461741; Tue, 5 Apr 2022 09:54:00 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 2F8BBC385A1; Tue, 5 Apr 2022 09:53:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1649152439; bh=8dWur2snVcJS4cdQqUfYAVt/38NBteIludl2uuzhNGE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=B8QIdCk+GsiST7KW6OsyhnDbP38Mo0dgUpeHFv543t4K2eT49fiMEJ6/tid41VnNl AcgE7LUeXPqD2wjTcxNIHHn9FwesUl9ziyECINhyB7npqA705UkfzH6/G2lTBPhfAA qei78IwGNZwJbY5PqnJJXZyuFt8g30XCa0U8iCuE= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Vitaly Kuznetsov , Paolo Bonzini Subject: [PATCH 5.15 776/913] KVM: x86: hyper-v: Fix the maximum number of sparse banks for XMM fast TLB flush hypercalls Date: Tue, 5 Apr 2022 09:30:38 +0200 Message-Id: <20220405070403.093357702@linuxfoundation.org> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220405070339.801210740@linuxfoundation.org> References: <20220405070339.801210740@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Vitaly Kuznetsov commit 7321f47eada53a395fb3086d49297eebb19e8e58 upstream. When TLB flush hypercalls (HVCALL_FLUSH_VIRTUAL_ADDRESS_{LIST,SPACE}_EX are issued in 'XMM fast' mode, the maximum number of allowed sparse_banks is not 'HV_HYPERCALL_MAX_XMM_REGISTERS - 1' (5) but twice as many (10) as each XMM register is 128 bit long and can hold two 64 bit long banks. Cc: stable@vger.kernel.org # 5.14.x Fixes: 5974565bc26d ("KVM: x86: kvm_hv_flush_tlb use inputs from XMM registers") Signed-off-by: Vitaly Kuznetsov Message-Id: <20220222154642.684285-4-vkuznets@redhat.com> Signed-off-by: Paolo Bonzini Signed-off-by: Greg Kroah-Hartman --- arch/x86/kvm/hyperv.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) --- a/arch/x86/kvm/hyperv.c +++ b/arch/x86/kvm/hyperv.c @@ -1820,7 +1820,8 @@ static u64 kvm_hv_flush_tlb(struct kvm_v if (!all_cpus) { if (hc->fast) { - if (sparse_banks_len > HV_HYPERCALL_MAX_XMM_REGISTERS - 1) + /* XMM0 is already consumed, each XMM holds two sparse banks. */ + if (sparse_banks_len > 2 * (HV_HYPERCALL_MAX_XMM_REGISTERS - 1)) return HV_STATUS_INVALID_HYPERCALL_INPUT; for (i = 0; i < sparse_banks_len; i += 2) { sparse_banks[i] = sse128_lo(hc->xmm[i / 2 + 1]);