Received: by 2002:a25:c205:0:0:0:0:0 with SMTP id s5csp2802051ybf; Mon, 2 Mar 2020 16:05:01 -0800 (PST) X-Google-Smtp-Source: ADFU+vulURVdyVeNWsdz2lHDRYRsDXp8ra7ff4B9Eo/ZsCYcuoTSQ85bTSOD2EqKgzedFoLeEdj/ X-Received: by 2002:a9d:5d07:: with SMTP id b7mr1379586oti.209.1583193901591; Mon, 02 Mar 2020 16:05:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1583193901; cv=none; d=google.com; s=arc-20160816; b=USk7Wy0uz7KsmClOjbF9AIC599GaHuPhg6aZfz/F/TNs2MRUI66H229QOCp6thrxdX H1l6br8dV0BUHTzix2ZUNmFaq6QNXs4Y5XcH8kJIg0qCY4IabjkkTDyF0/mwaOXjIdyR BZ7rxGVuI+KjgxD5jnPNk9yvHN+3y1JYOI4pfWUt8Ln102ik2U9MEil4ZT3i2nt7pjWa i7ltai8HQPNcvXRaHJw0ytgzpDLdcG8KhZNRL8YxgUUB590rou+y0g5j0m4NDX1rHn8f PaoqCbnFwU9674Gh9gl0m/yVcEGUWlNYShTtWKTFs2CENC/JEGcLbbUvsZy+PWYSl30A iU2g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=9Ys4snmVKk635XZbB2igQGdBSsOa+xyWQaagaSjTCHE=; b=xYw9wAboIDRZY2g02iFvQw+YESveKXL1zTJADJ+N3XIbyUs0rQtNP8kx/01sTBZwVi fvl/6ZQQLX49EhOjag7JrATxvXkrmqOSdD8s1cpMnLsXOUv2dUjC7qodJtmKbtWyddAe O++AXUhFDmgCihcrXeMFi3N5XL5QZcniwe14NnCvjVaqkrKf+v4ZHVDwhNQ3KJf+DkP4 0CA+HJILtb+l+D6QpEqg/pk/9MaVE1ZUZTsxo1xUFHcUy/r1n/f9JlrWendTJ2IVu4g+ ZxqB4zYjEyvHEJAgROYZkOMgvcbS2Ti2sfIDC6nkZObswk/aukDsEGWeiJ2A3k0EiFvI CRdA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id j74si8574285otj.246.2020.03.02.16.04.49; Mon, 02 Mar 2020 16:05:01 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727498AbgCCACz (ORCPT + 99 others); Mon, 2 Mar 2020 19:02:55 -0500 Received: from mga17.intel.com ([192.55.52.151]:37735 "EHLO mga17.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726946AbgCBX5X (ORCPT ); Mon, 2 Mar 2020 18:57:23 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga107.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 02 Mar 2020 15:57:21 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,509,1574150400"; d="scan'208";a="243384628" Received: from sjchrist-coffee.jf.intel.com ([10.54.74.202]) by orsmga006.jf.intel.com with ESMTP; 02 Mar 2020 15:57:21 -0800 From: Sean Christopherson To: Paolo Bonzini Cc: Sean Christopherson , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , kvm@vger.kernel.org, linux-kernel@vger.kernel.org, Xiaoyao Li Subject: [PATCH v2 02/66] KVM: x86: Refactor loop around do_cpuid_func() to separate helper Date: Mon, 2 Mar 2020 15:56:05 -0800 Message-Id: <20200302235709.27467-3-sean.j.christopherson@intel.com> X-Mailer: git-send-email 2.24.1 In-Reply-To: <20200302235709.27467-1-sean.j.christopherson@intel.com> References: <20200302235709.27467-1-sean.j.christopherson@intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Move the guts of kvm_dev_ioctl_get_cpuid()'s CPUID func loop to a separate helper to improve code readability and pave the way for future cleanup. No functional change intended. Reviewed-by: Vitaly Kuznetsov Signed-off-by: Sean Christopherson --- arch/x86/kvm/cpuid.c | 45 ++++++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/arch/x86/kvm/cpuid.c b/arch/x86/kvm/cpuid.c index 47ce04762c20..f49fdd06f511 100644 --- a/arch/x86/kvm/cpuid.c +++ b/arch/x86/kvm/cpuid.c @@ -839,6 +839,29 @@ static bool is_centaur_cpu(const struct kvm_cpuid_param *param) return boot_cpu_data.x86_vendor == X86_VENDOR_CENTAUR; } +static int get_cpuid_func(struct kvm_cpuid_entry2 *entries, u32 func, + int *nent, int maxnent, unsigned int type) +{ + u32 limit; + int r; + + r = do_cpuid_func(&entries[*nent], func, nent, maxnent, type); + if (r) + return r; + + limit = entries[*nent - 1].eax; + for (func = func + 1; func <= limit; ++func) { + if (*nent >= maxnent) + return -E2BIG; + + r = do_cpuid_func(&entries[*nent], func, nent, maxnent, type); + if (r) + break; + } + + return r; +} + static bool sanity_check_entries(struct kvm_cpuid_entry2 __user *entries, __u32 num_entries, unsigned int ioctl_type) { @@ -871,8 +894,8 @@ int kvm_dev_ioctl_get_cpuid(struct kvm_cpuid2 *cpuid, unsigned int type) { struct kvm_cpuid_entry2 *cpuid_entries; - int limit, nent = 0, r = -E2BIG, i; - u32 func; + int nent = 0, r = -E2BIG, i; + static const struct kvm_cpuid_param param[] = { { .func = 0 }, { .func = 0x80000000 }, @@ -901,22 +924,8 @@ int kvm_dev_ioctl_get_cpuid(struct kvm_cpuid2 *cpuid, if (ent->qualifier && !ent->qualifier(ent)) continue; - r = do_cpuid_func(&cpuid_entries[nent], ent->func, - &nent, cpuid->nent, type); - - if (r) - goto out_free; - - limit = cpuid_entries[nent - 1].eax; - for (func = ent->func + 1; func <= limit && r == 0; ++func) { - if (nent >= cpuid->nent) { - r = -E2BIG; - goto out_free; - } - r = do_cpuid_func(&cpuid_entries[nent], func, - &nent, cpuid->nent, type); - } - + r = get_cpuid_func(cpuid_entries, ent->func, &nent, + cpuid->nent, type); if (r) goto out_free; } -- 2.24.1