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: 9983429 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 761186038E for ; Tue, 3 Oct 2017 20:10:22 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7DCC8289FF for ; Tue, 3 Oct 2017 20:10:22 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 7225D28A0E; Tue, 3 Oct 2017 20:10:22 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAD_ENC_HEADER,BAYES_00, DKIM_SIGNED, RCVD_IN_DNSWL_HI, T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 4A73A28A05 for ; Tue, 3 Oct 2017 20:10:21 +0000 (UTC) Received: from localhost ([::1]:60131 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dzTWG-0000J5-Dk for patchwork-qemu-devel@patchwork.kernel.org; Tue, 03 Oct 2017 16:10:20 -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?= =?us-ascii?Q?ucMWv120tWDQkW3pI0jmlJmxlxzk7HvSNqI9VSiRHC9B0RRozzhxzF39fLFc?= =?us-ascii?Q?g/8gFdKjk6EmI3QPAuN8JNRMJS0+JQu5M55ApLNc2bzOId50v0NfSvFBiQcJ?= =?us-ascii?Q?lNm3rPYUMnzZ6JIfEjsTk3aX9rtOuOyhucmFdAesYdENV7ia56yGHgvrlJGh?= =?us-ascii?Q?MiMx81t6Lbl2BBqi+PS5GwjQFLNdzhhq/+IU+VkFf28ffxZfoQTobkVmYW7h?= =?us-ascii?Q?sjcYvzs7Z6ZqvP36maLdMPwmM+tCyj8ytHQOggm7dWh2t1D0Aj/Dx8Urpp7v?= =?us-ascii?Q?ldZN13hA3RUMUTNkZDqsEsnXJ5OK052wtm63+9kfms+VpS3+Y4cXNqdN1kbR?= =?us-ascii?Q?rKilGIdDohpZb4ItcaeFezC+oRYjJyxFMztD2XiaDtnrrHcDP1rprp/Se5eM?= =?us-ascii?Q?GNjQ/mG6CaRZBXzQ0DZZ1rhd80QI5LgUUW3D4eSIBSe/CGLWoefSvHAOYgYH?= =?us-ascii?Q?aEFngMSh8gLEvhcWc+pZo14wUoN+Jamh6aOIEw4409BzEFkNAnoe8EWhGTJi?= =?us-ascii?Q?H89xLWREsRATbMvU2KDfuKnz8YIAUtr/zEBMT8z70+VjuZTxLNgbn3Bt2W+g?= =?us-ascii?Q?kjMDc7e5DhF/lsgYRC+h+rclMZdqbVSIeF03MjKIzBKZNZ9srJ0tjYzZHxxC?= =?us-ascii?Q?m1tvyShalZl2UW2FiIQDBAXgiQekLyIn+lt0bBPBcLT7ZkiWXXJjOtSkyogw?= =?us-ascii?Q?sJ84T+umHIXfYALoP6I5pqNG0zpfyEPC74Z43Y+vT7O5wOGiTLrhMai5T3NB?= =?us-ascii?Q?0yh7eb5nB0J1gJNquBKM4sH56dRzS+JTTcHwgfmKgwGWjoqGmTE3rpvVHaOd?= =?us-ascii?Q?5EmekgUcRD2N6g7Zg1aPFihOntPklpQ8u+ZYbDvgpqMQ1HqdB0bsfU4f8uDr?= =?us-ascii?Q?8r5OsHcCUSDsAWuXkUE5FdEWohwMTF83idHM6AzHO+lgZwnhn0BddZyh8ZEI?= =?us-ascii?Q?MC+cWydAj33DhSCfnmvEks3a1mZUZ0bBKq/MOyjoaB071d/58u479yshfIQt?= =?us-ascii?Q?Km5yPYJgjqN5LWrsdeM5b2yd5pDn1gy2f4Aux2ZZFtR+kDO7RXKkxnQHgvC6?= =?us-ascii?Q?G4fk1WMA+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+patchwork-qemu-devel=patchwork.kernel.org@nongnu.org Sender: "Qemu-devel" X-Virus-Scanned: ClamAV using ClamSMTP 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 --- 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);