From patchwork Tue Oct 3 20:05:09 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alistair Francis X-Patchwork-Id: 821007 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=nongnu.org (client-ip=2001:4830:134:3::11; helo=lists.gnu.org; envelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=xilinx.onmicrosoft.com header.i=@xilinx.onmicrosoft.com header.b="wPIl4PPO"; dkim-atps=neutral Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3y699r4y1bz9t63 for ; Wed, 4 Oct 2017 07:09:52 +1100 (AEDT) Received: from localhost ([::1]:60131 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dzTVm-0000J5-O1 for incoming@patchwork.ozlabs.org; Tue, 03 Oct 2017 16:09:50 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49206) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dzTV8-0000Hn-VW for qemu-devel@nongnu.org; Tue, 03 Oct 2017 16:09:12 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dzTV5-0006OS-P6 for qemu-devel@nongnu.org; Tue, 03 Oct 2017 16:09:10 -0400 Received: from mail-bl2nam02on0052.outbound.protection.outlook.com ([104.47.38.52]:56111 helo=NAM02-BL2-obe.outbound.protection.outlook.com) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dzTV5-0006OF-IT for qemu-devel@nongnu.org; Tue, 03 Oct 2017 16:09:07 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=xilinx.onmicrosoft.com; s=selector1-xilinx-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=ydTc0IadxfVSzLRrfKW/+8y9EU88M0Rw67rqnH6l7+o=; b=wPIl4PPOhPBlcEY14dARa6kfoSSnqgQBtzcS0uBKFf1+vrrqDDw+9jNmbbu/q88H/aC9gVIGTTPVDtKkuNxr1U4k4Ez5yd+G6DoUUzpH+tGkFa4zJBm/HCrH+Rl5d/gMqgaCx4YDPDxdDp8rztU1VgVKVZDjJsfJxaHsLX/PvTc= Received: from MWHPR0201CA0061.namprd02.prod.outlook.com (10.167.160.38) by DM5PR02MB3388.namprd02.prod.outlook.com (10.164.153.11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7; Tue, 3 Oct 2017 20:09:05 +0000 Received: from BL2NAM02FT025.eop-nam02.prod.protection.outlook.com (2a01:111:f400:7e46::201) by MWHPR0201CA0061.outlook.office365.com (2603:10b6:301:73::38) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.56.7 via Frontend Transport; Tue, 3 Oct 2017 20:09:04 +0000 Authentication-Results: spf=pass (sender IP is 149.199.60.100) smtp.mailfrom=xilinx.com; amsat.org; dkim=none (message not signed) header.d=none;amsat.org; dmarc=bestguesspass action=none header.from=xilinx.com; Received-SPF: Pass (protection.outlook.com: domain of xilinx.com designates 149.199.60.100 as permitted sender) receiver=protection.outlook.com; client-ip=149.199.60.100; helo=xsj-pvapsmtpgw02; Received: from xsj-pvapsmtpgw02 (149.199.60.100) by BL2NAM02FT025.mail.protection.outlook.com (10.152.77.151) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.77.10 via Frontend Transport; Tue, 3 Oct 2017 20:09:04 +0000 Received: from unknown-38-66.xilinx.com ([149.199.38.66]:49436 helo=xsj-pvapsmtp01) by xsj-pvapsmtpgw02 with esmtp (Exim 4.63) (envelope-from ) id 1dzTV0-0005xy-F0; Tue, 03 Oct 2017 13:09:02 -0700 Received: from [127.0.0.1] (helo=localhost) by xsj-pvapsmtp01 with smtp (Exim 4.63) (envelope-from ) id 1dzTUz-0000W6-WA; Tue, 03 Oct 2017 13:09:02 -0700 Received: from xsj-pvapsmtp01 (mailman.xilinx.com [149.199.38.66]) by xsj-smtp-dlp2.xlnx.xilinx.com (8.13.8/8.13.1) with ESMTP id v93K8puQ010307; Tue, 3 Oct 2017 13:08:51 -0700 Received: from [172.19.2.220] (helo=localhost.localdomain) by xsj-pvapsmtp01 with esmtp (Exim 4.63) (envelope-from ) id 1dzTUp-0000Sx-F3; Tue, 03 Oct 2017 13:08:51 -0700 From: Alistair Francis To: Date: Tue, 3 Oct 2017 13:05:09 -0700 Message-ID: X-Mailer: git-send-email 2.11.0 In-Reply-To: References: X-RCIS-Action: ALLOW X-TM-AS-Product-Ver: IMSS-7.1.0.1224-8.1.0.1062-23368.005 X-TM-AS-User-Approved-Sender: Yes;Yes X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:149.199.60.100; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(346002)(376002)(39860400002)(2980300002)(438002)(189002)(199003)(8676002)(54906003)(575784001)(39060400002)(6916009)(8936002)(81166006)(36386004)(2950100002)(106002)(551934003)(9786002)(81156014)(2351001)(2906002)(50986999)(33646002)(76176999)(118296001)(50226002)(5660300001)(6666003)(189998001)(478600001)(5003940100001)(16586007)(106466001)(4326008)(356003)(48376002)(50466002)(47776003)(77096006)(305945005)(36756003)(63266004)(316002)(107986001)(5001870100001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR02MB3388; H:xsj-pvapsmtpgw02; FPR:; SPF:Pass; PTR:unknown-60-100.xilinx.com,xapps1.xilinx.com; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2NAM02FT025; 1:xfhLJDzDYBmzZnJE6qNX8VsnGMtlICZ0egAiZO5V8bR5JgWWjk0JHYBKQpNNUvpGCukz+jMrYjD+wQE7Ak7QiuJq8NJD1aoM2Be7QsxHEvofqGWUql5rjlsdr9I4+anQ MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 60bef239-cc5b-449b-65fd-08d50a9a98c1 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254152)(8251501002)(2017052603199)(201703131423075)(201703031133081)(201702281549075); SRVR:DM5PR02MB3388; X-Microsoft-Exchange-Diagnostics: 1; DM5PR02MB3388; 3:qEiF8Tjga6QMU3WfcJEn/+WYskYuXk7TiAdxxC/ovVJhGKT1ZbmBZmClp7f69IKSjKXCcfLOKKVm4Dl+Y9iaEpsUzHZBP0loYvFsLtv4fv5YocNWrNygnOzW2Shj6Wwh2lzMWQ/xIMP1YOwOkO5w/qpOZYubCgKpO3LJhX4cNjvBnlgIPRioWZftrLVrlxFXytK/V1cAZkRzzEA1tdbFyHHxCWj2p1YDUB7v383RsydvdGz1cfbRCjZiDMOMHfef6WVdCBUyj2CJxEoyCis7raF6PQUwjvPXI8m2lKd7naAT9E2tpwbIqm6FLpQ/qLHkhxtrq49tHUb6vGlsbCeZlYMn3b4LFfLp7UGDQA9YA/M=; 25:KsY4vTTJ1OQawWqpHQn6rnFM0dCmDM1rIB1/zlM07KQvgkN3xR1ToIsZCdQVBXPEvJPPYQlf/9WDc4ZJlazwWVDIS3Y+YLvh45XJKGYqum2UvEy3dLTpo6nekyCTxctFfOnWZSI1VOQBhm/zeqOb+yHEOmtNc8qzUaO13rYJhH0lI1UWO7nqI83Ao38Fl1G9iTa0p5rmP/xI+HgvN8TqPPcfeCwJitYPW/wCMG4sHPjw4lbmPV5ByN4AAZc8UdYv3ClfUO4DknUqdZJlrXMF2PunhPNk6tJ/Hp+lnydeGvVns8qNDzBZKKNz2o0QmsgKsTMSOE3B2ko2YQ0ClSDyhQ== X-MS-TrafficTypeDiagnostic: DM5PR02MB3388: X-Microsoft-Exchange-Diagnostics: 1; DM5PR02MB3388; 31:nRzfY+q+zEUEqCl4wTisexyuu6P803ajQcWe62p2MSXS5ugYoWJGQciLyRlO5NYzjKrNKUijAtaTyCXc1DdK/wTbSvr5+ZfvMxycMJuCFIujAv60IiqxCfPjrW36QtDZxkYX5iOKSI+ngGdvnI8EkCvia/RJyXQX7+F0D0vO1p9YAoeT2oEsJmBf7hmUKcDSzPK7e65B1VoA+hlcnUA/qU+6B0ISOsYq3vivUXzHsUA=; 20:YTNUNdzQwKFFKKRGchBrRh44wpA0IrwaPMjr2ubU2dXvAUeQVPgE5X0c9zZKDhIP2pPsy+nY0intt9GkwtME8A/Ch7dBlutvPeHvUZXBLaH9L0XWjbR+b2CfbPZJyfxy4gWAi7S08F4ve8lCRottbD5Ha2rbmrHTB/0elJU/r3j6M58Yu/vJ5zHAs86x/LNGpXbk8A16rbVbbMwzoQx+cBC1Ja1B1VKrofpC9rqF2Xkp0ToUknxOcNwg0jfvg6HrTGfZ+OPpLX2OQTci0ABegC+6TqKIybVLUqC5TTNhOFG/HHuD5KuvvuhMybl6LQsAleSrDklgsqtilV6WKabh0Ar+PI/GqrTRhqW8b2wQHat9DSWhV3JhFkJhvsnWY8fGTdSOxe7gRlIaQgCgEHKNykwa1+ziCY46m95JhPErDVyhLNelnG0bAsO884Db0tIiIZEmjcO2g3Z5VlAeTzFDSv2pIXpMuAhBac6bgUqV2vT/QCPCixcibBh9HOVVV6O4 X-Exchange-Antispam-Report-Test: UriScan:(192813158149592); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(93006095)(93004095)(10201501046)(3002001)(100000703101)(100105400095)(6055026)(6041248)(20161123558100)(20161123560025)(20161123562025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DM5PR02MB3388; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DM5PR02MB3388; X-Microsoft-Exchange-Diagnostics: 1; DM5PR02MB3388; 4:SFeGZqy+zhmoUDFxJIrN05kHYSGpwS6WOsaTW0yrWj9doy1CwKvveEomZU2mJGGKVv2tjE8zXuKeXz8um6VE8wta+08OwPzLM4jPFWCuYX05p6oNjy4AK4tjmTtsdNhKBCJZUrU7Dd9Nf0TPX/xLqtPqP/+e6R3DKwMrRBI9wqXJIDbDbbZlPLiAsgnBPHB7QF9AftzAWGj/7XVaWc5zZSYSMk2NiC+cyy30WVlHX1g/5tUIr2tQSxwfBEOaQpm+P6hZ2PZ51Un7Kr2dvDpXze7qujybVzGLmasuEhITmjQ= X-Forefront-PRVS: 044968D9E1 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR02MB3388; 23:PoS04C7adeqXgXUDWOBz95sKyupNCBR9iQS8yoVVz?= ucMWv120tWDQkW3pI0jmlJmxlxzk7HvSNqI9VSiRHC9B0RRozzhxzF39fLFcg/8gFdKjk6EmI3QPAuN8JNRMJS0+JQu5M55ApLNc2bzOId50v0NfSvFBiQcJlNm3rPYUMnzZ6JIfEjsTk3aX9rtOuOyhucmFdAesYdENV7ia56yGHgvrlJGhMiMx81t6Lbl2BBqi+PS5GwjQFLNdzhhq/+IU+VkFf28ffxZfoQTobkVmYW7hsjcYvzs7Z6ZqvP36maLdMPwmM+tCyj8ytHQOggm7dWh2t1D0Aj/Dx8Urpp7vldZN13hA3RUMUTNkZDqsEsnXJ5OK052wtm63+9kfms+VpS3+Y4cXNqdN1kbRrKilGIdDohpZb4ItcaeFezC+oRYjJyxFMztD2XiaDtnrrHcDP1rprp/Se5eMGNjQ/mG6CaRZBXzQ0DZZ1rhd80QI5LgUUW3D4eSIBSe/CGLWoefSvHAOYgYHaEFngMSh8gLEvhcWc+pZo14wUoN+Jamh6aOIEw4409BzEFkNAnoe8EWhGTJiH89xLWREsRATbMvU2KDfuKnz8YIAUtr/zEBMT8z70+VjuZTxLNgbn3Bt2W+gkjMDc7e5DhF/lsgYRC+h+rclMZdqbVSIeF03MjKIzBKZNZ9srJ0tjYzZHxxCm1tvyShalZl2UW2FiIQDBAXgiQekLyIn+lt0bBPBcLT7ZkiWXXJjOtSkyogwsJ84T+umHIXfYALoP6I5pqNG0zpfyEPC74Z43Y+vT7O5wOGiTLrhMai5T3NB0yh7eb5nB0J1gJNquBKM4sH56dRzS+JTTcHwgfmKgwGWjoqGmTE3rpvVHaOd5EmekgUcRD2N6g7Zg1aPFihOntPklpQ8u+ZYbDvgpqMQ1HqdB0bsfU4f8uDr8r5OsHcCUSDsAWuXkUE5FdEWohwMTF83idHM6AzHO+lgZwnhn0BddZyh8ZEIMC+cWydAj33DhSCfnmvEks3a1mZUZ0bBKq/MOyjoaB071d/58u479yshfIQtKm5yPYJgjqN5LWrsdeM5b2yd5pDn1gy2f4Aux2ZZFtR+kDO7RXKkxnQHgvC6G4fk1WMA+Y0GPOVKamtP1kyHZmHTN0E X-Microsoft-Exchange-Diagnostics: 1; DM5PR02MB3388; 6:zKfyufCvgncHZTx89BywtDJG4iiQ7/s84B8abtE3HY/UI/lUxReRrKvZLJRkoVwV+9ZhrlmVfMJWk/NrEQTimBa7zXMdhLNf0BPab33ld1owfXmx8d6U6qomguCVK/xGvREJfJa6Xwabd1GfTKvspo9D2FZxuCvqM4hej53LNa6JSx8VOcyhEuJEIhQFw0VOkwpbLbwX0ygx7uuPlq5CN+zq5Pa9ArKqSSCkBB30tDmk6TMKrBFNcIyWUEACVUHvO0efIdbBtHw2v/9/IXgTv0vPWoHCJ7pohyTyXDZQjQJdxmvTPeaI6UUa7+3ekk70leMYtq80w1ycKertSuYcLg==; 5:8thuTLvw6x5UXt2SXixIKPQRtE1PAIPOaK8dpDd4IdpL78D/iWmNkWFrM6N5l/QmUWvqoECSwZ+yg3AquA4gAQm9iSu3gPJq5SS2FOQnpxZd21XiRZ3MGsyPcl+rmPOla1AY6+aZFSiXE0pyul+4OA==; 24:iI5UcEh/VN1L+wQIZ5LAwvUPH3aSRxgV94EOx6op/MIdZkoUqICcuhFXPwBt/0hpUbhINjL7FoQTThifeUywEuQGJfrDYna1B9vABkN4HOo=; 7:l2nA72pDJH4ELUtxsPzdheaTeef0gkcjcazEupV+mbEdbinqD8GwKiR3g2iUZXaCbHFBrGo8rgDNe1gEe4ul7cCzTMT/9AZ9cMUimTXqBqKhEHN1R5lI6DnK8IsvoMT63oyOdyPN07u9tuv5OsI2LqWPbAUEmBvjPm4eafF7HccPgRe5PtsIkr94qmMxpA5fR7hDUnr+7Q1xb0udDub+zIoalDCkhEVJB4aFMFgPk48= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: xilinx.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Oct 2017 20:09:04.3720 (UTC) X-MS-Exchange-CrossTenant-Id: 657af505-d5df-48d0-8300-c31994686c5c X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=657af505-d5df-48d0-8300-c31994686c5c; Ip=[149.199.60.100]; Helo=[xsj-pvapsmtpgw02] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR02MB3388 X-detected-operating-system: by eggs.gnu.org: Windows 7 or 8 [fuzzy] X-Received-From: 104.47.38.52 Subject: [Qemu-devel] [PATCH v1 1/5] machine: Add a valid_cpu_types property X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: ehabkost@redhat.com, f4bug@amsat.org, alistair.francis@xilinx.com, imammedo@redhat.com, marcel@redhat.com, alistair23@gmail.com Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: "Qemu-devel" This patch add a MachineClass element that can be set in the machine C code to specify a list of supported CPU types. If the supported CPU types are specified the user enter CPU (by -cpu at runtime) is checked against the supported types and QEMU exits if they aren't supported. Signed-off-by: Alistair Francis Reviewed-by: Eduardo Habkost --- V1: - Use 'type' in the error message - Move a uneeded operation out of the for loop - Remove the goto RFC v2: - Rebase on Igor's cpu_type work - Use object_class_dynamic_cast() - Use a NULL terminated cahr** list - Do the check before the machine_class init() is called hw/core/machine.c | 35 +++++++++++++++++++++++++++++++++++ include/hw/boards.h | 1 + 2 files changed, 36 insertions(+) diff --git a/hw/core/machine.c b/hw/core/machine.c index 80647edc2a..3afc6a7b5b 100644 --- a/hw/core/machine.c +++ b/hw/core/machine.c @@ -758,6 +758,41 @@ void machine_run_board_init(MachineState *machine) if (nb_numa_nodes) { machine_numa_finish_init(machine); } + + /* If the machine supports the valid_cpu_types check and the user + * specified a CPU with -cpu check here that the user CPU is supported. + */ + if (machine_class->valid_cpu_types && machine->cpu_type) { + ObjectClass *class = object_class_by_name(machine->cpu_type); + int i; + + /* machine->cpu_type is supposed to be always a valid QOM type */ + assert(class); + + for (i = 0; machine_class->valid_cpu_types[i]; i++) { + if (object_class_dynamic_cast(class, + machine_class->valid_cpu_types[i])) { + /* The user specificed CPU is in the valid field, we are + * good to go. + */ + break; + } + } + + if (!machine_class->valid_cpu_types[i]) { + /* The user specified CPU must not be a valid CPU */ + error_report("Invalid CPU type: %s", machine->cpu_type); + error_printf("The valid types are: %s", + machine_class->valid_cpu_types[0]); + for (i = 1; machine_class->valid_cpu_types[i]; i++) { + error_printf(", %s", machine_class->valid_cpu_types[i]); + } + error_printf("\n"); + + exit(1); + } + } + machine_class->init(machine); } diff --git a/include/hw/boards.h b/include/hw/boards.h index 156e0a5701..191a5b3cd8 100644 --- a/include/hw/boards.h +++ b/include/hw/boards.h @@ -191,6 +191,7 @@ struct MachineClass { bool has_hotpluggable_cpus; bool ignore_memory_transaction_failures; int numa_mem_align_shift; + const char **valid_cpu_types; void (*numa_auto_assign_ram)(MachineClass *mc, NodeInfo *nodes, int nb_nodes, ram_addr_t size);