From patchwork Tue Oct 13 23:04:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Eduardo Habkost X-Patchwork-Id: 271333 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=-3.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED, HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI, SPF_HELO_NONE, SPF_PASS, URIBL_BLOCKED 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 47508C433E7 for ; Tue, 13 Oct 2020 23:08:07 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (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 D0C4D21D7F for ; Tue, 13 Oct 2020 23:08:06 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="gh7MngYv" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org D0C4D21D7F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:37894 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kSTOn-0000EI-Nc for qemu-devel@archiver.kernel.org; Tue, 13 Oct 2020 19:08:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37626) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kSTM5-0006Dv-VU for qemu-devel@nongnu.org; Tue, 13 Oct 2020 19:05:21 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:51095) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kSTM3-0003T8-Ep for qemu-devel@nongnu.org; Tue, 13 Oct 2020 19:05:17 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1602630314; 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; bh=Ji38uyqyWisDFO4IfCcIcwK8uRW+sV+VPP3zMuIrrWM=; b=gh7MngYvbprDR9CaA0z34WSr64iOGLGe5hLxI5VNd57fNncv9FAKQmHnYCa8NDSSNugex9 ydEJRvq0WKHSGeVzbGwiLLokoJWOsq6B1xKwtkf7RaW5gYxDeAwed/m1i3yie3vdjbqdB2 Jeazegs/7n0qsyMtN1hFcS3BL7ubsA4= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-247-16oC7qqIM0G0he5kVHYLWg-1; Tue, 13 Oct 2020 19:05:11 -0400 X-MC-Unique: 16oC7qqIM0G0he5kVHYLWg-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 4853656BE8; Tue, 13 Oct 2020 23:05:08 +0000 (UTC) Received: from localhost (ovpn-66-44.rdu2.redhat.com [10.10.66.44]) by smtp.corp.redhat.com (Postfix) with ESMTP id BD3D26EF53; Tue, 13 Oct 2020 23:04:58 +0000 (UTC) From: Eduardo Habkost To: qemu-devel@nongnu.org Subject: [PATCH v2 0/7] i386: Add `machine` parameter to query-cpu-definitions Date: Tue, 13 Oct 2020 19:04:50 -0400 Message-Id: <20201013230457.150630-1-ehabkost@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=ehabkost@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Received-SPF: pass client-ip=216.205.24.124; envelope-from=ehabkost@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/13 02:06:42 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , David Hildenbrand , Thomas Huth , Markus Armbruster , Wainer dos Santos Moschetta , Halil Pasic , Christian Borntraeger , Aleksandar Markovic , Richard Henderson , =?utf-8?q?Philippe_Mathieu-Daud?= =?utf-8?b?w6k=?= , Aleksandar Rikalo , Eduardo Habkost , qemu-s390x@nongnu.org, qemu-arm@nongnu.org, Cleber Rosa , Jiri Denemark , David Gibson , "Daniel P. Berrange" , Cornelia Huck , qemu-ppc@nongnu.org, Paolo Bonzini , Aurelien Jarno Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" Changes v1 -> v2: * Rewrite documentation, with suggestions from Markus * Try to reduce churn and keep the existing default_cpu_version static variable * Replace x86_cpu_class_get_alias_of() with x86_cpu_model_resolve_alias() Link to v1: https://lore.kernel.org/qemu-devel/20191025022553.25298-1-ehabkost@redhat.com We had introduced versioned CPU models in QEMU 4.1, including a method for querying for CPU model versions using query-cpu-definitions. This solution had one problem: fetching CPU alias information for multiple machine types required restarting QEMU for each machine being queried. This series adds a new `machine` parameter to query-cpu-definitions, that can be used to query CPU model alias information for multiple machines without restarting QEMU. About CPU model versioning vs query-cpu-model-expansion ------------------------------------------------------- There had been some discussion[1] about using a mechanism for this similar to what's done in s390x, based on query-cpu-model-expansion. I had considered that approach in the beginning, but this would require query-cpu-model-expansion type=static to resolve to a useful base CPU model that is static. Unfortunately, we have no useful static CPU model in x86 yet, except for "base", because of the complex accelerator-dependent rules that affect expansion of CPU models. Maybe in the future we'll be able to define static versions of each CPU model, and unify the CPU model versioning approaches in all architectures. While we don't have this, we need to work with what we have. What we have today in x86 are CPU models that are not static and not accelerator-independent. [1] https://lore.kernel.org/qemu-devel/dbf9e4c1-0acf-9469-84f9-f80c41e2cae0@redhat.com/ Eduardo Habkost (7): machine: machine_find_class() function i386: Add X86CPUModel.alias_of field i386: Replace x86_cpu_class_get_alias_of() with x86_cpu_model_resolve_alias() i386: Add default_version parameter to CPU version functions i386: Wrap QMP code in !CONFIG_USER_ONLY i386: Don't use default_cpu_version inside x86_cpu_definition_entry() cpu: Add `machine` parameter to query-cpu-definitions qapi/machine-target.json | 14 ++- include/hw/boards.h | 2 + hw/core/machine.c | 16 ++++ softmmu/vl.c | 17 +--- target/arm/helper.c | 4 +- target/i386/cpu.c | 105 +++++++++++++++------ target/mips/helper.c | 4 +- target/s390x/cpu_models.c | 4 +- target/ppc/translate_init.c.inc | 4 +- tests/acceptance/x86_cpu_model_versions.py | 48 ++++++++++ 10 files changed, 167 insertions(+), 51 deletions(-) -- 2.28.0