From patchwork Wed Jun 5 07:25:09 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ani Sinha X-Patchwork-Id: 1943676 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=RfmD4C9p; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VvJsh5NvMz20Wr for ; Wed, 5 Jun 2024 17:26:00 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sEl1j-0007GW-Fn; Wed, 05 Jun 2024 03:25:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sEl1h-0007FN-P2 for qemu-devel@nongnu.org; Wed, 05 Jun 2024 03:25:41 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.133.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sEl1g-0004a1-BR for qemu-devel@nongnu.org; Wed, 05 Jun 2024 03:25:41 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1717572339; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=suuFTwrFjHJhcoeTNEoS5N1Dv16DjnF0P5AMW2D9V90=; b=RfmD4C9p0FXSUstT8kwTpY+Cyunpr0d7QKsXX5PtzA5JLYjLr/9ggZ6Y+BQ8AfrPt74G2z iVRl552Az1yxrZ6YBXwlkDAusj0tacZ0MmoAGuWIwtvID2AFirTjnvCHyOw0d62rC8gQKH 8/Jritr2QE7d6v7MieGzXeSzp9Xs+hY= Received: from mail-pl1-f199.google.com (mail-pl1-f199.google.com [209.85.214.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-650-7_mzDBzVP5Gz9N8EoUHq5Q-1; Wed, 05 Jun 2024 03:25:38 -0400 X-MC-Unique: 7_mzDBzVP5Gz9N8EoUHq5Q-1 Received: by mail-pl1-f199.google.com with SMTP id d9443c01a7336-1f63b8ab0b8so16867675ad.0 for ; Wed, 05 Jun 2024 00:25:38 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717572336; x=1718177136; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=suuFTwrFjHJhcoeTNEoS5N1Dv16DjnF0P5AMW2D9V90=; b=WeoEZapKFa0H1TCwCoeCUqOljYuGPIg1/VouXVlK4yaC0XpjRR7k5eG9iZ7hKguV2k ZJ2Kyi1JbMcxOPDI78nOTeW/e7G0fMPMO9auCH4P9RBot6O/8NEUKQPVK2nCcP/Jz09x djnz5V3cd+UeQhG5oWvLyCCvU+v6tWMixcTtyTR6SZ0H46BHs0aAOZv1hTYIymETuojB NS8rQ2IPDBBKITdwqbNpbuZefBi8lLs60d9wTxvPSOzJTRrfQeI+kmHHZKD+9qpRZI8Q p8fPBduEF7y2jNSayoorLjnuKAFrmIM8bPkKxGOVfgn3UZXyw2E6m0PMFAYUY/glfglm FaeA== X-Forwarded-Encrypted: i=1; AJvYcCXo4KFJeqdBlGm6EzhXYMTahnAP6PHz/+cbgl2odXr2iVuk5k0jQ54f/zwr7MnzE9gjVCys2t6h7AksNJwrGJv1ndUjRKg= X-Gm-Message-State: AOJu0YxQZz1zznQFhd6ufktYZ7fnWx7u3SmkL/NH1K0SEegqf89FqFrN kN2MweK1Moqa0XYMPErh8q/iuBsaspvTEVaY/iMs2ZErcG/bhbNNniDS6y/4MxgpAgy6fs1RUI6 iEeHQgEOaZLSF/5gblwgn7KVAnK7PL7wPaniHkZWFqZw4qkeBGjXyaVZqxHg3 X-Received: by 2002:a17:902:e847:b0:1f6:77e3:774a with SMTP id d9443c01a7336-1f6a5a6aee4mr21912565ad.52.1717572336102; Wed, 05 Jun 2024 00:25:36 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFZuAWoehzvOGN0612mi6DwBU0RCtaBt8ymPEA/pAtA63V0DYhEy1xVztWV1PQe27B/RaaRgA== X-Received: by 2002:a17:902:e847:b0:1f6:77e3:774a with SMTP id d9443c01a7336-1f6a5a6aee4mr21912425ad.52.1717572335662; Wed, 05 Jun 2024 00:25:35 -0700 (PDT) Received: from localhost.localdomain ([203.163.232.78]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-1f6703f7673sm56329335ad.210.2024.06.05.00.25.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Jun 2024 00:25:35 -0700 (PDT) From: Ani Sinha To: Thomas Huth , Laurent Vivier , Paolo Bonzini Cc: Ani Sinha , qemu-devel@nongnu.org Subject: [PATCH v2 1/3] qtest/x86/numa-test: do not use the obsolete 'pentium' cpu Date: Wed, 5 Jun 2024 12:55:09 +0530 Message-ID: <20240605072512.67692-2-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20240605072512.67692-1-anisinha@redhat.com> References: <20240605072512.67692-1-anisinha@redhat.com> MIME-Version: 1.0 Received-SPF: pass client-ip=170.10.133.124; envelope-from=anisinha@redhat.com; helo=us-smtp-delivery-124.mimecast.com 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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org 'pentium' cpu is old and obsolete and should be avoided for running tests if its not strictly needed. Use 'max' cpu instead for generic non-cpu specific numa test. CC: thuth@redhat.com Reviewed-by: Thomas Huth Signed-off-by: Ani Sinha --- tests/qtest/numa-test.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) changelog: review tag added. No other changes. diff --git a/tests/qtest/numa-test.c b/tests/qtest/numa-test.c index 7aa262dbb9..f01f19592d 100644 --- a/tests/qtest/numa-test.c +++ b/tests/qtest/numa-test.c @@ -125,7 +125,8 @@ static void pc_numa_cpu(const void *data) QTestState *qts; g_autofree char *cli = NULL; - cli = make_cli(data, "-cpu pentium -machine smp.cpus=8,smp.sockets=2,smp.cores=2,smp.threads=2 " + cli = make_cli(data, + "-cpu max -machine smp.cpus=8,smp.sockets=2,smp.cores=2,smp.threads=2 " "-numa node,nodeid=0,memdev=ram -numa node,nodeid=1 " "-numa cpu,node-id=1,socket-id=0 " "-numa cpu,node-id=0,socket-id=1,core-id=0 " From patchwork Wed Jun 5 07:25:10 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ani Sinha X-Patchwork-Id: 1943675 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=MJNeNQvn; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VvJsh03rZz20WK for ; Wed, 5 Jun 2024 17:25:59 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sEl1l-0007LT-Uu; Wed, 05 Jun 2024 03:25:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sEl1l-0007Im-4K for qemu-devel@nongnu.org; Wed, 05 Jun 2024 03:25:45 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sEl1j-0004aT-Gv for qemu-devel@nongnu.org; Wed, 05 Jun 2024 03:25:44 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1717572342; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=1uH3JVfpOHt4cmUIhQ0XYf7hQEI1P3L3/uwvE5MbOQ0=; b=MJNeNQvn6Gb5WsfZddY7lpZyftljc5jXUu1wmg6+Am0aGGEI6ZDpD2PsJw+jAstXBpN203 RYD4VOKS1GpYP8yP/EUhzy0gy0TkNkiyiYDSHChObckmekvYOktTl92C2/xTrujGbHzgRf 7r8NJ7I0YYS+S8hu38MxpGJ+8pCgqPI= Received: from mail-pl1-f198.google.com (mail-pl1-f198.google.com [209.85.214.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-647-NrJ3xxp_P-2be3jX1GhN2w-1; Wed, 05 Jun 2024 03:25:41 -0400 X-MC-Unique: NrJ3xxp_P-2be3jX1GhN2w-1 Received: by mail-pl1-f198.google.com with SMTP id d9443c01a7336-1f682e7079bso24541005ad.0 for ; Wed, 05 Jun 2024 00:25:41 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717572340; x=1718177140; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=1uH3JVfpOHt4cmUIhQ0XYf7hQEI1P3L3/uwvE5MbOQ0=; b=PP/0J9AnchimCgw6OYiQiPYIzaMGC34EA8Sdu+pn/GN88zIfMo28qCYzccmDbUb+VW ukdyUPkPTEfgPs83RpH3R7bfJgyWg0lJXUXW/p7HVV5byHT9xSiwnhS963Q9hF/3kZGv OkC+s48gwYNrTPyKdW8RF1UZepDIp/97BrdBgO8QjRJq1l3f81kOyZCRbwxMJ9I+8qHa 2NH15R5YuzN0cPVx/1WyzUul/JCsSDiPh0NUFiUrd8UfJm9RirT7SjGUhrb9PCFomW09 FgeMHCfNct7yJ6wLDPYwBhXahnAlcKUknU46EkoIRjPt0/jwuMGEz9Bz49HVsXE084Dg J4yA== X-Forwarded-Encrypted: i=1; AJvYcCUtu5lBh9uy5WeS7uskC6uYpS/ABWw+pkA6jsIeyD8QXR3wQ4dVvAHTBs80MudeYo+FDdyY+w03vv3KSybigGegDMT744A= X-Gm-Message-State: AOJu0Ywq/Lqh0goVWy0fLpSaxGudtGlks9o8JUotnWyKvjKi8ZtpmApu tCWxSAktze0GnIFDQuEpU4Fh4KQqBE/lr3TWPap2Fri01c0KaTy2Qq+ovHZJ+CuVHR05veMLD0e f0WiQtm7cZziLC4P8BlfVyIOHc1Roj6dvaEcn1zlISLG9FBI23GeS X-Received: by 2002:a17:902:fa86:b0:1f6:1a91:e744 with SMTP id d9443c01a7336-1f6a5a11c60mr15807425ad.21.1717572340365; Wed, 05 Jun 2024 00:25:40 -0700 (PDT) X-Google-Smtp-Source: AGHT+IH2pXxei2mOz5vemilMrrAdP0lTynzCw1RMTI4JTiecXktHkDYoptMQ0rL187vDTNo66IRbxw== X-Received: by 2002:a17:902:fa86:b0:1f6:1a91:e744 with SMTP id d9443c01a7336-1f6a5a11c60mr15807265ad.21.1717572339869; Wed, 05 Jun 2024 00:25:39 -0700 (PDT) Received: from localhost.localdomain ([203.163.232.78]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-1f6703f7673sm56329335ad.210.2024.06.05.00.25.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Jun 2024 00:25:39 -0700 (PDT) From: Ani Sinha To: Thomas Huth , Laurent Vivier , Paolo Bonzini Cc: Ani Sinha , qemu-devel@nongnu.org Subject: [PATCH 2/3] tests/qtest/libqtest: add qtest_has_cpu() api Date: Wed, 5 Jun 2024 12:55:10 +0530 Message-ID: <20240605072512.67692-3-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20240605072512.67692-1-anisinha@redhat.com> References: <20240605072512.67692-1-anisinha@redhat.com> MIME-Version: 1.0 Received-SPF: pass client-ip=170.10.129.124; envelope-from=anisinha@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -5 X-Spam_score: -0.6 X-Spam_bar: / X-Spam_report: (-0.6 / 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, RCVD_IN_SORBS_WEB=1.5, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Added a new test api qtest_has_cpu() in order to check availability of some cpu models in the current QEMU binary. The specific architecture of the QEMU binary is selected using the QTEST_QEMU_BINARY environment variable. This api would be useful to run tests against some older cpu models after checking if QEMU actually supported these models. CC: thuth@redhat.com Signed-off-by: Ani Sinha --- tests/qtest/libqtest.c | 84 ++++++++++++++++++++++++++++++++++++++++++ tests/qtest/libqtest.h | 8 ++++ 2 files changed, 92 insertions(+) diff --git a/tests/qtest/libqtest.c b/tests/qtest/libqtest.c index d8f80d335e..135a607728 100644 --- a/tests/qtest/libqtest.c +++ b/tests/qtest/libqtest.c @@ -37,6 +37,7 @@ #include "qapi/qmp/qjson.h" #include "qapi/qmp/qlist.h" #include "qapi/qmp/qstring.h" +#include "qapi/qmp/qbool.h" #define MAX_IRQ 256 @@ -1471,6 +1472,12 @@ struct MachInfo { char *alias; }; +struct CpuInfo { + char *name; + char *alias_of; + bool deprecated; +}; + static void qtest_free_machine_list(struct MachInfo *machines) { if (machines) { @@ -1550,6 +1557,83 @@ static struct MachInfo *qtest_get_machines(const char *var) return machines; } +static struct CpuInfo *qtest_get_cpus(void) +{ + static struct CpuInfo *cpus; + QDict *response, *minfo; + QList *list; + const QListEntry *p; + QObject *qobj; + QString *qstr; + QBool *qbool; + QTestState *qts; + int idx; + + if (cpus) { + return cpus; + } + + silence_spawn_log = !g_test_verbose(); + + qts = qtest_init_with_env(NULL, "-machine none"); + response = qtest_qmp(qts, "{ 'execute': 'query-cpu-definitions' }"); + g_assert(response); + list = qdict_get_qlist(response, "return"); + g_assert(list); + + cpus = g_new(struct CpuInfo, qlist_size(list) + 1); + + for (p = qlist_first(list), idx = 0; p; p = qlist_next(p), idx++) { + minfo = qobject_to(QDict, qlist_entry_obj(p)); + g_assert(minfo); + + qobj = qdict_get(minfo, "name"); + g_assert(qobj); + qstr = qobject_to(QString, qobj); + g_assert(qstr); + cpus[idx].name = g_strdup(qstring_get_str(qstr)); + + qobj = qdict_get(minfo, "alias_of"); + if (qobj) { /* old machines do not report aliases */ + qstr = qobject_to(QString, qobj); + g_assert(qstr); + cpus[idx].alias_of = g_strdup(qstring_get_str(qstr)); + } else { + cpus[idx].alias_of = NULL; + } + + qobj = qdict_get(minfo, "deprecated"); + qbool = qobject_to(QBool, qobj); + g_assert(qbool); + cpus[idx].deprecated = qbool_get_bool(qbool); + } + + qtest_quit(qts); + qobject_unref(response); + + silence_spawn_log = false; + + memset(&cpus[idx], 0, sizeof(struct CpuInfo)); /* Terminating entry */ + return cpus; +} + +bool qtest_has_cpu(const char *cpu) +{ + struct CpuInfo *cpus; + int i; + + cpus = qtest_get_cpus(); + + for (i = 0; cpus[i].name != NULL; i++) { + if (g_str_equal(cpu, cpus[i].name) || + (cpus[i].alias_of && g_str_equal(cpu, cpus[i].alias_of))) { + return true; + } + } + + return false; +} + void qtest_cb_for_every_machine(void (*cb)(const char *machine), bool skip_old_versioned) { diff --git a/tests/qtest/libqtest.h b/tests/qtest/libqtest.h index 6e3d3525bf..c94b64f960 100644 --- a/tests/qtest/libqtest.h +++ b/tests/qtest/libqtest.h @@ -949,6 +949,14 @@ bool qtest_has_machine(const char *machine); */ bool qtest_has_machine_with_env(const char *var, const char *machine); +/** + * qtest_has_cpu: + * @cpu: The cpu to look for + * + * Returns: true if the cpu is available in the target binary. + */ +bool qtest_has_cpu(const char *cpu); + /** * qtest_has_device: * @device: The device to look for From patchwork Wed Jun 5 07:25:11 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ani Sinha X-Patchwork-Id: 1943677 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=LgYQihj9; dkim-atps=neutral Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=nongnu.org (client-ip=209.51.188.17; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=patchwork.ozlabs.org) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4VvJtM5dfQz20KL for ; Wed, 5 Jun 2024 17:26:35 +1000 (AEST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1sEl1t-0007Rp-LM; Wed, 05 Jun 2024 03:25:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sEl1s-0007RI-2T for qemu-devel@nongnu.org; Wed, 05 Jun 2024 03:25:52 -0400 Received: from us-smtp-delivery-124.mimecast.com ([170.10.129.124]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1sEl1q-0004ai-00 for qemu-devel@nongnu.org; Wed, 05 Jun 2024 03:25:51 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1717572348; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=fiVJUtIQgCNlR10lRRAGnZcdMQyFwt7Yf0bpSkUpQr8=; b=LgYQihj9gJ9Wfx4iPfa20JYLAYuyPoAS9ckY1eH49WkXZZR0Oy8V8tMJmDKHryl1vakbGU P9Ea2GydmhZrW8Vsb1BdhmUqvihWsPWgCPnBeq124AW8KkPc4IhqmTncWpJF6oEhmgkqD0 iPmR1R4v0aH5ok4rxenXxjgp7ITJFYM= Received: from mail-pl1-f197.google.com (mail-pl1-f197.google.com [209.85.214.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-335-nAyHQEnmP7KoxuEhqxBG_w-1; Wed, 05 Jun 2024 03:25:46 -0400 X-MC-Unique: nAyHQEnmP7KoxuEhqxBG_w-1 Received: by mail-pl1-f197.google.com with SMTP id d9443c01a7336-1f61b9823cbso65402585ad.1 for ; Wed, 05 Jun 2024 00:25:46 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717572345; x=1718177145; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=fiVJUtIQgCNlR10lRRAGnZcdMQyFwt7Yf0bpSkUpQr8=; b=CszTP6zR7jCf9BbicR7WUVibxFYu3OZ1JDtRZ1J+m5hwyd78rSAiPM7oJUpLkdgLbd 1Npqde9WREcRPf5kXt7wFwLrPpJf5wZQCjFcHhfi+8SJw2eUBeGLI7NI/jAbVNZDHOoM 0wSUVsDRlJWtHPxvTs+erO8sj8+G00w8IngtOQBw1wFDkb8lGlRPnLafPwgYq+ShX5IQ VmGDrh70dDD7Xajsx9ZcHB+BAlj57ePkCioqWWX7GUS+JXPSlVL5ul3Psh6CvlGWVD03 UKPyrEdO5/kAdvKSlhvXaq6BzHIoqeauCG6coSuxeE9sPBzl0Pd8o1D+I616uHVxhYzq 7pow== X-Forwarded-Encrypted: i=1; AJvYcCUw8//Q2NsqCmqzvHWXxxMH65PA0NQvc+bYr+sj6K73iZQy1qUrYXRAuAvAeKn7v5YtgG94jD5M26LajhheZzqwhRrf53g= X-Gm-Message-State: AOJu0Yx6RieLG3vzD0VNXXG/HJwhC+ZS/56eqQOaC4SOfSiCr+e/te23 JR79k3QF4JRpnf/TBnCWBc8fwkB3dcvWpUglOvm6LakQQmpKq4jFQUf6Spv6vhT4Nj74gDiOkYE LPfyauCJr5fCIgYWC0HV1bWslzLBqDlarJuHadNe3NZcAhg7U20r6 X-Received: by 2002:a17:902:ceca:b0:1f6:850c:3c5f with SMTP id d9443c01a7336-1f6a5a879c2mr23912375ad.69.1717572345043; Wed, 05 Jun 2024 00:25:45 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEhPvemlzt2pvD8gLlIaI4OsKiYczgRWOj2BAoUCErNcn96Drl9ZFAr4LTIVoRDJOIXriRszg== X-Received: by 2002:a17:902:ceca:b0:1f6:850c:3c5f with SMTP id d9443c01a7336-1f6a5a879c2mr23912195ad.69.1717572344616; Wed, 05 Jun 2024 00:25:44 -0700 (PDT) Received: from localhost.localdomain ([203.163.232.78]) by smtp.googlemail.com with ESMTPSA id d9443c01a7336-1f6703f7673sm56329335ad.210.2024.06.05.00.25.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Jun 2024 00:25:44 -0700 (PDT) From: Ani Sinha To: "Michael S. Tsirkin" , Marcel Apfelbaum , Thomas Huth , Laurent Vivier , Paolo Bonzini Cc: Ani Sinha , imammedo@redhat.com, qemu-devel@nongnu.org Subject: [PATCH 3/3] tests/qtest/x86: check for availability of older cpu models before running tests Date: Wed, 5 Jun 2024 12:55:11 +0530 Message-ID: <20240605072512.67692-4-anisinha@redhat.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20240605072512.67692-1-anisinha@redhat.com> References: <20240605072512.67692-1-anisinha@redhat.com> MIME-Version: 1.0 Received-SPF: pass client-ip=170.10.129.124; envelope-from=anisinha@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-Spam_score_int: -5 X-Spam_score: -0.6 X-Spam_bar: / X-Spam_report: (-0.6 / 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, RCVD_IN_SORBS_WEB=1.5, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Some older cpu models like 486, athlon, pentium, penryn, phenom, core2duo etc may not be available in all builds. Check for their availability in qemu before running the corresponding tests. The order of the tests has been altered so that all tests for similar checks under a specific cpu is placed together. One minor correction. Replaced 'phenom' with '486' in the test 'x86/cpuid/auto-level/phenom/arat' matching the cpu used. CC: thuth@redhat.com CC: imammedo@redhat.com Signed-off-by: Ani Sinha --- tests/qtest/test-x86-cpuid-compat.c | 214 +++++++++++++++++----------- 1 file changed, 127 insertions(+), 87 deletions(-) diff --git a/tests/qtest/test-x86-cpuid-compat.c b/tests/qtest/test-x86-cpuid-compat.c index 6a39454fce..054f9eae47 100644 --- a/tests/qtest/test-x86-cpuid-compat.c +++ b/tests/qtest/test-x86-cpuid-compat.c @@ -209,99 +209,135 @@ static void test_plus_minus(void) int main(int argc, char **argv) { + bool has_486, has_athlon, has_conroe; + bool has_core2duo, has_penryn, has_pentium, has_phenom; + g_test_init(&argc, &argv, NULL); - g_test_add_func("/x86/cpuid/parsing-plus-minus/subprocess", - test_plus_minus_subprocess); - g_test_add_func("/x86/cpuid/parsing-plus-minus", test_plus_minus); + has_486 = qtest_has_cpu("486"); + has_athlon = qtest_has_cpu("athlon"); + has_conroe = qtest_has_cpu("Conroe"); + has_core2duo = qtest_has_cpu("core2duo"); + has_penryn = qtest_has_cpu("Penryn"); + has_pentium = qtest_has_cpu("pentium"); + has_phenom = qtest_has_cpu("phenom"); + + if (has_pentium) { + g_test_add_func("/x86/cpuid/parsing-plus-minus/subprocess", + test_plus_minus_subprocess); + g_test_add_func("/x86/cpuid/parsing-plus-minus", test_plus_minus); + } /* Original level values for CPU models: */ - add_cpuid_test("x86/cpuid/phenom/level", - "-cpu phenom", "level", 5); - add_cpuid_test("x86/cpuid/Conroe/level", - "-cpu Conroe", "level", 10); + if (has_486) { + add_cpuid_test("x86/cpuid/486/xlevel", + "-cpu 486", "xlevel", 0); + } + if (has_phenom) { + add_cpuid_test("x86/cpuid/phenom/level", + "-cpu phenom", "level", 5); + add_cpuid_test("x86/cpuid/phenom/xlevel", + "-cpu phenom", "xlevel", 0x8000001A); + } + if (has_athlon) { + add_cpuid_test("x86/cpuid/athlon/xlevel", + "-cpu athlon", "xlevel", 0x80000008); + } + if (has_core2duo) { + add_cpuid_test("x86/cpuid/core2duo/xlevel", + "-cpu core2duo", "xlevel", 0x80000008); + } + if (has_conroe) { + add_cpuid_test("x86/cpuid/Conroe/level", + "-cpu Conroe", "level", 10); + } add_cpuid_test("x86/cpuid/SandyBridge/level", "-cpu SandyBridge", "level", 0xd); - add_cpuid_test("x86/cpuid/486/xlevel", - "-cpu 486", "xlevel", 0); - add_cpuid_test("x86/cpuid/core2duo/xlevel", - "-cpu core2duo", "xlevel", 0x80000008); - add_cpuid_test("x86/cpuid/phenom/xlevel", - "-cpu phenom", "xlevel", 0x8000001A); - add_cpuid_test("x86/cpuid/athlon/xlevel", - "-cpu athlon", "xlevel", 0x80000008); /* If level is not large enough, it should increase automatically: */ - /* CPUID[6].EAX: */ - add_cpuid_test("x86/cpuid/auto-level/phenom/arat", - "-cpu 486,arat=on", "level", 6); - /* CPUID[EAX=7,ECX=0].EBX: */ - add_cpuid_test("x86/cpuid/auto-level/phenom/fsgsbase", - "-cpu phenom,fsgsbase=on", "level", 7); - /* CPUID[EAX=7,ECX=0].ECX: */ - add_cpuid_test("x86/cpuid/auto-level/phenom/avx512vbmi", - "-cpu phenom,avx512vbmi=on", "level", 7); - /* CPUID[EAX=0xd,ECX=1].EAX: */ - add_cpuid_test("x86/cpuid/auto-level/phenom/xsaveopt", - "-cpu phenom,xsaveopt=on", "level", 0xd); - /* CPUID[8000_0001].EDX: */ - add_cpuid_test("x86/cpuid/auto-xlevel/486/3dnow", - "-cpu 486,3dnow=on", "xlevel", 0x80000001); - /* CPUID[8000_0001].ECX: */ - add_cpuid_test("x86/cpuid/auto-xlevel/486/sse4a", - "-cpu 486,sse4a=on", "xlevel", 0x80000001); - /* CPUID[8000_0007].EDX: */ - add_cpuid_test("x86/cpuid/auto-xlevel/486/invtsc", - "-cpu 486,invtsc=on", "xlevel", 0x80000007); - /* CPUID[8000_000A].EDX: */ - add_cpuid_test("x86/cpuid/auto-xlevel/486/npt", - "-cpu 486,svm=on,npt=on", "xlevel", 0x8000000A); - /* CPUID[C000_0001].EDX: */ - add_cpuid_test("x86/cpuid/auto-xlevel2/phenom/xstore", - "-cpu phenom,xstore=on", "xlevel2", 0xC0000001); - /* SVM needs CPUID[0x8000000A] */ - add_cpuid_test("x86/cpuid/auto-xlevel/athlon/svm", - "-cpu athlon,svm=on", "xlevel", 0x8000000A); - + if (has_486) { + /* CPUID[6].EAX: */ + add_cpuid_test("x86/cpuid/auto-level/486/arat", + "-cpu 486,arat=on", "level", 6); + /* CPUID[8000_0001].EDX: */ + add_cpuid_test("x86/cpuid/auto-xlevel/486/3dnow", + "-cpu 486,3dnow=on", "xlevel", 0x80000001); + /* CPUID[8000_0001].ECX: */ + add_cpuid_test("x86/cpuid/auto-xlevel/486/sse4a", + "-cpu 486,sse4a=on", "xlevel", 0x80000001); + /* CPUID[8000_0007].EDX: */ + add_cpuid_test("x86/cpuid/auto-xlevel/486/invtsc", + "-cpu 486,invtsc=on", "xlevel", 0x80000007); + /* CPUID[8000_000A].EDX: */ + add_cpuid_test("x86/cpuid/auto-xlevel/486/npt", + "-cpu 486,svm=on,npt=on", "xlevel", 0x8000000A); + } + if (has_phenom) { + /* CPUID[EAX=7,ECX=0].EBX: */ + add_cpuid_test("x86/cpuid/auto-level/phenom/fsgsbase", + "-cpu phenom,fsgsbase=on", "level", 7); + /* CPUID[EAX=7,ECX=0].ECX: */ + add_cpuid_test("x86/cpuid/auto-level/phenom/avx512vbmi", + "-cpu phenom,avx512vbmi=on", "level", 7); + /* CPUID[EAX=0xd,ECX=1].EAX: */ + add_cpuid_test("x86/cpuid/auto-level/phenom/xsaveopt", + "-cpu phenom,xsaveopt=on", "level", 0xd); + /* CPUID[C000_0001].EDX: */ + add_cpuid_test("x86/cpuid/auto-xlevel2/phenom/xstore", + "-cpu phenom,xstore=on", "xlevel2", 0xC0000001); + } + if (has_athlon) { + /* SVM needs CPUID[0x8000000A] */ + add_cpuid_test("x86/cpuid/auto-xlevel/athlon/svm", + "-cpu athlon,svm=on", "xlevel", 0x8000000A); + } /* If level is already large enough, it shouldn't change: */ add_cpuid_test("x86/cpuid/auto-level/SandyBridge/multiple", "-cpu SandyBridge,arat=on,fsgsbase=on,avx512vbmi=on", "level", 0xd); /* If level is explicitly set, it shouldn't change: */ - add_cpuid_test("x86/cpuid/auto-level/486/fixed/0xF", - "-cpu 486,level=0xF,arat=on,fsgsbase=on,avx512vbmi=on,xsaveopt=on", - "level", 0xF); - add_cpuid_test("x86/cpuid/auto-level/486/fixed/2", - "-cpu 486,level=2,arat=on,fsgsbase=on,avx512vbmi=on,xsaveopt=on", - "level", 2); - add_cpuid_test("x86/cpuid/auto-level/486/fixed/0", - "-cpu 486,level=0,arat=on,fsgsbase=on,avx512vbmi=on,xsaveopt=on", - "level", 0); + if (has_486) { + add_cpuid_test("x86/cpuid/auto-level/486/fixed/0xF", + "-cpu 486,level=0xF,arat=on,fsgsbase=on,avx512vbmi=on,xsaveopt=on", + "level", 0xF); + add_cpuid_test("x86/cpuid/auto-level/486/fixed/2", + "-cpu 486,level=2,arat=on,fsgsbase=on,avx512vbmi=on,xsaveopt=on", + "level", 2); + add_cpuid_test("x86/cpuid/auto-level/486/fixed/0", + "-cpu 486,level=0,arat=on,fsgsbase=on,avx512vbmi=on,xsaveopt=on", + "level", 0); + } /* if xlevel is already large enough, it shouldn't change: */ - add_cpuid_test("x86/cpuid/auto-xlevel/phenom/3dnow", - "-cpu phenom,3dnow=on,sse4a=on,invtsc=on,npt=on,svm=on", - "xlevel", 0x8000001A); + if (has_phenom) { + add_cpuid_test("x86/cpuid/auto-xlevel/phenom/3dnow", + "-cpu phenom,3dnow=on,sse4a=on,invtsc=on,npt=on,svm=on", + "xlevel", 0x8000001A); + } + /* If xlevel is explicitly set, it shouldn't change: */ - add_cpuid_test("x86/cpuid/auto-xlevel/486/fixed/80000002", - "-cpu 486,xlevel=0x80000002,3dnow=on,sse4a=on,invtsc=on,npt=on,svm=on", - "xlevel", 0x80000002); - add_cpuid_test("x86/cpuid/auto-xlevel/486/fixed/8000001A", - "-cpu 486,xlevel=0x8000001A,3dnow=on,sse4a=on,invtsc=on,npt=on,svm=on", - "xlevel", 0x8000001A); - add_cpuid_test("x86/cpuid/auto-xlevel/phenom/fixed/0", - "-cpu 486,xlevel=0,3dnow=on,sse4a=on,invtsc=on,npt=on,svm=on", - "xlevel", 0); - - /* if xlevel2 is already large enough, it shouldn't change: */ - add_cpuid_test("x86/cpuid/auto-xlevel2/486/fixed", - "-cpu 486,xlevel2=0xC0000002,xstore=on", - "xlevel2", 0xC0000002); + if (has_486) { + add_cpuid_test("x86/cpuid/auto-xlevel/486/fixed/80000002", + "-cpu 486,xlevel=0x80000002,3dnow=on,sse4a=on,invtsc=on,npt=on,svm=on", + "xlevel", 0x80000002); + add_cpuid_test("x86/cpuid/auto-xlevel/486/fixed/8000001A", + "-cpu 486,xlevel=0x8000001A,3dnow=on,sse4a=on,invtsc=on,npt=on,svm=on", + "xlevel", 0x8000001A); + add_cpuid_test("x86/cpuid/auto-xlevel/phenom/fixed/0", + "-cpu 486,xlevel=0,3dnow=on,sse4a=on,invtsc=on,npt=on,svm=on", + "xlevel", 0); + + /* if xlevel2 is already large enough, it shouldn't change: */ + add_cpuid_test("x86/cpuid/auto-xlevel2/486/fixed", + "-cpu 486,xlevel2=0xC0000002,xstore=on", + "xlevel2", 0xC0000002); + } + /* Check compatibility of old machine-types that didn't * auto-increase level/xlevel/xlevel2: */ - if (qtest_has_machine("pc-i440fx-2.7")) { + if (qtest_has_machine("pc-i440fx-2.7") && has_486) { add_cpuid_test("x86/cpuid/auto-level/pc-2.7", "-machine pc-i440fx-2.7 -cpu 486,arat=on,avx512vbmi=on,xsaveopt=on", "level", 1); @@ -317,7 +353,7 @@ int main(int argc, char **argv) * and the compat code that sets default level shouldn't * disable the auto-level=7 code: */ - if (qtest_has_machine("pc-i440fx-2.3")) { + if (qtest_has_machine("pc-i440fx-2.3") && has_penryn) { add_cpuid_test("x86/cpuid/auto-level7/pc-i440fx-2.3/off", "-machine pc-i440fx-2.3 -cpu Penryn", "level", 4); @@ -325,7 +361,7 @@ int main(int argc, char **argv) "-machine pc-i440fx-2.3 -cpu Penryn,erms=on", "level", 7); } - if (qtest_has_machine("pc-i440fx-2.9")) { + if (qtest_has_machine("pc-i440fx-2.9") && has_conroe) { add_cpuid_test("x86/cpuid/auto-level7/pc-i440fx-2.9/off", "-machine pc-i440fx-2.9 -cpu Conroe", "level", 10); @@ -354,18 +390,22 @@ int main(int argc, char **argv) } /* Test feature parsing */ - add_feature_test("x86/cpuid/features/plus", - "-cpu 486,+arat", - 6, 0, "EAX", 2, true); - add_feature_test("x86/cpuid/features/minus", - "-cpu pentium,-mmx", - 1, 0, "EDX", 23, false); - add_feature_test("x86/cpuid/features/on", - "-cpu 486,arat=on", - 6, 0, "EAX", 2, true); - add_feature_test("x86/cpuid/features/off", - "-cpu pentium,mmx=off", - 1, 0, "EDX", 23, false); + if (has_486) { + add_feature_test("x86/cpuid/features/plus", + "-cpu 486,+arat", + 6, 0, "EAX", 2, true); + add_feature_test("x86/cpuid/features/on", + "-cpu 486,arat=on", + 6, 0, "EAX", 2, true); + } + if (has_pentium) { + add_feature_test("x86/cpuid/features/minus", + "-cpu pentium,-mmx", + 1, 0, "EDX", 23, false); + add_feature_test("x86/cpuid/features/off", + "-cpu pentium,mmx=off", + 1, 0, "EDX", 23, false); + } add_feature_test("x86/cpuid/features/max-plus-invtsc", "-cpu max,+invtsc", 0x80000007, 0, "EDX", 8, true);