From nobody Fri May 10 10:57:21 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1600868396; cv=none; d=zohomail.com; s=zohoarc; b=iQgS3yLbMfHE15a88Ae2t5kHy9qeH4mYWu6R5x6nlszo0PYxTOXnKdWvFzlYEpO8rIYot/knNrgjRuYbRlrUBKg8EvKkRTjDwUeweHNQO54C4b9Sjjy2NBVv+emPlcwgrJSV4K/cxlHyXADjVrcZZv5p2sm38uZZ/C1nljtwKJE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1600868396; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=EDE6eBsh3chMZ0FNGkujCwNo1vodnt9g5073aQhFnCU=; b=cuPockWA+uiqDD133U192fe4hxatzU6rM95mSPrTtpT6TnPksf5R9rI58BYWfJNZnJiJp2znS73J4bRLV+LgDHBbG6scvyfv8t0M3ii17IAwq/1OgbfgrNYjhRCLSV2FHOr7L9bNU1yfVKJHg6JQsE44apWp+r88QKhevTzJlaY= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1600868396026207.16191836234043; Wed, 23 Sep 2020 06:39:56 -0700 (PDT) Received: from localhost ([::1]:58668 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kL4zy-00025c-NF for importer@patchew.org; Wed, 23 Sep 2020 09:39:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37248) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kL4yg-0000QK-62 for qemu-devel@nongnu.org; Wed, 23 Sep 2020 09:38:34 -0400 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:53804) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kL4yc-00060Q-IF for qemu-devel@nongnu.org; Wed, 23 Sep 2020 09:38:32 -0400 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-418-fI3PwGO5NJClLokGgI-heA-1; Wed, 23 Sep 2020 09:38:25 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id E58731DDEE; Wed, 23 Sep 2020 13:38:23 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-114-73.ams2.redhat.com [10.36.114.73]) by smtp.corp.redhat.com (Postfix) with ESMTP id 6F2BE60BEC; Wed, 23 Sep 2020 13:38:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1600868308; 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: in-reply-to:in-reply-to:references:references; bh=EDE6eBsh3chMZ0FNGkujCwNo1vodnt9g5073aQhFnCU=; b=UdoV2/NpAtnbWkZr5vWDgoyYgsyTnj1GImYX5B0VEv0xP5hg4wCId2lZpmjB1sT128Szzf irMe9cms0NwqgTbnX67RsOW+O32R+dpAfL99pdg6KkyhqH5gjuqSHh+IKp0d4Fngns3AvI iP4S5qfuo/PCq5N7sb4++ZYs2nWgXug= X-MC-Unique: fI3PwGO5NJClLokGgI-heA-1 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH v3 1/3] hw/smbios: support loading OEM strings values from a file Date: Wed, 23 Sep 2020 14:38:02 +0100 Message-Id: <20200923133804.2089190-2-berrange@redhat.com> In-Reply-To: <20200923133804.2089190-1-berrange@redhat.com> References: <20200923133804.2089190-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=berrange@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=63.128.21.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/09/23 00:53:58 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -32 X-Spam_score: -3.3 X-Spam_bar: --- X-Spam_report: (-3.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.228, 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_H5=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 , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Eduardo Habkost , "Michael S. Tsirkin" , Laszlo Ersek , Markus Armbruster , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-arm@nongnu.org, Igor Mammedov , Paolo Bonzini , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Some applications want to pass quite large values for the OEM strings entries. Rather than having huge strings on the command line, it would be better to load them from a file, as supported with -fw_cfg. This introduces the "path" parameter allowing for: $ echo -n "thisthing" > mydata.txt $ qemu-system-x86_64 \ -smbios type=3D11,value=3Dsomething \ -smbios type=3D11,path=3Dmydata.txt \ -smbios type=3D11,value=3Dsomemore \ ...other args... Now in the guest $ dmidecode -t 11 Getting SMBIOS data from sysfs. SMBIOS 2.8 present. Handle 0x0E00, DMI type 11, 5 bytes OEM Strings String 1: something String 2: thisthing String 3: somemore Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Daniel P. Berrang=C3=A9 Tested-by: Laszlo Ersek --- hw/smbios/smbios.c | 71 +++++++++++++++++++++++++++++++++++++--------- 1 file changed, 58 insertions(+), 13 deletions(-) diff --git a/hw/smbios/smbios.c b/hw/smbios/smbios.c index 7cc950b41c..d993448087 100644 --- a/hw/smbios/smbios.c +++ b/hw/smbios/smbios.c @@ -110,7 +110,7 @@ static struct { =20 static struct { size_t nvalues; - const char **values; + char **values; } type11; =20 static struct { @@ -314,6 +314,11 @@ static const QemuOptDesc qemu_smbios_type11_opts[] =3D= { .type =3D QEMU_OPT_STRING, .help =3D "OEM string data", }, + { + .name =3D "path", + .type =3D QEMU_OPT_STRING, + .help =3D "OEM string data from file", + }, }; =20 static const QemuOptDesc qemu_smbios_type17_opts[] =3D { @@ -641,6 +646,8 @@ static void smbios_build_type_11_table(void) =20 for (i =3D 0; i < type11.nvalues; i++) { SMBIOS_TABLE_SET_STR_LIST(11, type11.values[i]); + g_free(type11.values[i]); + type11.values[i] =3D NULL; } =20 SMBIOS_BUILD_TABLE_POST; @@ -940,9 +947,8 @@ static void save_opt(const char **dest, QemuOpts *opts,= const char *name) =20 =20 struct opt_list { - const char *name; size_t *ndest; - const char ***dest; + char ***dest; }; =20 static int save_opt_one(void *opaque, @@ -951,23 +957,60 @@ static int save_opt_one(void *opaque, { struct opt_list *opt =3D opaque; =20 - if (!g_str_equal(name, opt->name)) { - return 0; + if (g_str_equal(name, "path")) { + g_autoptr(GByteArray) data =3D g_byte_array_new(); + g_autofree char *buf =3D g_new(char, 4096); + ssize_t ret; + int fd =3D qemu_open(value, O_RDONLY, errp); + if (fd < 0) { + return -1; + } + + while (1) { + ret =3D read(fd, buf, 4096); + if (ret =3D=3D 0) { + break; + } + if (ret < 0) { + error_setg(errp, "Unable to read from %s: %s", + value, strerror(errno)); + return -1; + } + if (memchr(buf, '\0', ret)) { + error_setg(errp, "NUL in OEM strings value in %s", value); + return -1; + } + g_byte_array_append(data, (guint8 *)buf, ret); + } + + close(fd); + + *opt->dest =3D g_renew(char *, *opt->dest, (*opt->ndest) + 1); + (*opt->dest)[*opt->ndest] =3D (char *)g_byte_array_free(data, FAL= SE); + (*opt->ndest)++; + data =3D NULL; + } else if (g_str_equal(name, "value")) { + *opt->dest =3D g_renew(char *, *opt->dest, (*opt->ndest) + 1); + (*opt->dest)[*opt->ndest] =3D g_strdup(value); + (*opt->ndest)++; + } else if (!g_str_equal(name, "type")) { + error_setg(errp, "Unexpected option %s", name); + return -1; } =20 - *opt->dest =3D g_renew(const char *, *opt->dest, (*opt->ndest) + 1); - (*opt->dest)[*opt->ndest] =3D value; - (*opt->ndest)++; return 0; } =20 -static void save_opt_list(size_t *ndest, const char ***dest, - QemuOpts *opts, const char *name) +static bool save_opt_list(size_t *ndest, char ***dest, QemuOpts *opts, + Error **errp) { struct opt_list opt =3D { - name, ndest, dest, + ndest, dest, }; - qemu_opt_foreach(opts, save_opt_one, &opt, NULL); + if (!qemu_opt_foreach(opts, save_opt_one, &opt, errp)) { + return false; + } + return true; } =20 void smbios_entry_add(QemuOpts *opts, Error **errp) @@ -1149,7 +1192,9 @@ void smbios_entry_add(QemuOpts *opts, Error **errp) if (!qemu_opts_validate(opts, qemu_smbios_type11_opts, errp)) { return; } - save_opt_list(&type11.nvalues, &type11.values, opts, "value"); + if (!save_opt_list(&type11.nvalues, &type11.values, opts, errp= )) { + return; + } return; case 17: if (!qemu_opts_validate(opts, qemu_smbios_type17_opts, errp)) { --=20 2.26.2 From nobody Fri May 10 10:57:21 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1600868487; cv=none; d=zohomail.com; s=zohoarc; b=BepXqnF/PsHu13pW1zB/O545vNGJLu9/DgG3/fN8by892xvLrkIzSlSM40a0Gq51p3+JRwA5XFJbxBhVi1TL2OJrrTT/ao3IemyqtvfRSR5XVjyFy8hlAAUoXXjz4Pf6w/MbjMpsiY+QCgnSl+icxnJCQYmyhvRMRdjr7O0/T44= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1600868487; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=oi4oV3Xsy5ZeUaCWVzh/DLdC08IxX7F0TM96NbBv1Mw=; b=O66YPLQzfTkwNuImI/FzhxyFE2hS4Pe6LMsZXC46/U2to+A1v4e8gul//wN5E0XhJMyw+5hwkrujzGFV0TDbsy8q2muyCzrWfnqQixXNbS2CF58JZ4rlFl63NbUeFXt/sdPPxHfcdy8tjpHLU3XgS7f1zTeZqyZ0y3/iSOZRuhU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1600868487828210.7544742257263; Wed, 23 Sep 2020 06:41:27 -0700 (PDT) Received: from localhost ([::1]:36420 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kL51T-0004cy-3X for importer@patchew.org; Wed, 23 Sep 2020 09:41:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37280) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kL4yp-0000aB-IP for qemu-devel@nongnu.org; Wed, 23 Sep 2020 09:38:43 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:40821) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kL4yn-00061C-7m for qemu-devel@nongnu.org; Wed, 23 Sep 2020 09:38:43 -0400 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-573-LxmbRGm2NR2ZhuU90UX06w-1; Wed, 23 Sep 2020 09:38:36 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 2D4B11891E82; Wed, 23 Sep 2020 13:38:35 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-114-73.ams2.redhat.com [10.36.114.73]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3A11660BEC; Wed, 23 Sep 2020 13:38:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1600868320; 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: in-reply-to:in-reply-to:references:references; bh=oi4oV3Xsy5ZeUaCWVzh/DLdC08IxX7F0TM96NbBv1Mw=; b=QC7QLtMZWObHqIkQUl0UdCGKI1qITvrgPHXa1DobhALsPFYFgEexq2Z9TbsD10JYUZNXIZ uBZUqUvLKhMC5ybg9P7EaI+FHwATUUg4QLWKni8JlrGWn4mBGcllQPpiyeKQ/rn/C2MGVv tZmiZfmZthxZI3o5Rm2RbWQKUc2AB1c= X-MC-Unique: LxmbRGm2NR2ZhuU90UX06w-1 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH v3 2/3] hw/smbios: report error if table size is too large Date: Wed, 23 Sep 2020 14:38:03 +0100 Message-Id: <20200923133804.2089190-3-berrange@redhat.com> In-Reply-To: <20200923133804.2089190-1-berrange@redhat.com> References: <20200923133804.2089190-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=berrange@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=216.205.24.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/09/22 23:02:20 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -32 X-Spam_score: -3.3 X-Spam_bar: --- X-Spam_report: (-3.3 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-1.228, 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_H5=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 , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Eduardo Habkost , "Michael S. Tsirkin" , Laszlo Ersek , Markus Armbruster , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-arm@nongnu.org, Igor Mammedov , Paolo Bonzini , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) The SMBIOS 2.1 entry point uses a uint16 data type for reporting the total length of the tables. If the user passes -smbios configuration to QEMU that causes the table size to exceed this limit then various bad behaviours result, including - firmware hangs in an infinite loop - firmware triggers a KVM crash on bad memory access - firmware silently discards user's SMBIOS data replacing it with a generic data set. Limiting the size to 0xffff in QEMU avoids triggering most of these problems. There is a remaining bug in SeaBIOS which tries to prepend its own data for table 0, and does not check whether there is sufficient space before attempting this. Reviewed-by: Igor Mammedov Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Daniel P. Berrang=C3=A9 Tested-by: Laszlo Ersek --- hw/smbios/smbios.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/hw/smbios/smbios.c b/hw/smbios/smbios.c index d993448087..8b30906e50 100644 --- a/hw/smbios/smbios.c +++ b/hw/smbios/smbios.c @@ -365,6 +365,13 @@ static void smbios_register_config(void) =20 opts_init(smbios_register_config); =20 +/* + * The SMBIOS 2.1 "structure table length" field in the + * entry point uses a 16-bit integer, so we're limited + * in total table size + */ +#define SMBIOS_21_MAX_TABLES_LEN 0xffff + static void smbios_validate_table(MachineState *ms) { uint32_t expect_t4_count =3D smbios_legacy ? @@ -375,6 +382,13 @@ static void smbios_validate_table(MachineState *ms) expect_t4_count, smbios_type4_count); exit(1); } + + if (smbios_ep_type =3D=3D SMBIOS_ENTRY_POINT_21 && + smbios_tables_len > SMBIOS_21_MAX_TABLES_LEN) { + error_report("SMBIOS 2.1 table length %zu exceeds %d", + smbios_tables_len, SMBIOS_21_MAX_TABLES_LEN); + exit(1); + } } =20 =20 --=20 2.26.2 From nobody Fri May 10 10:57:21 2024 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1600868402; cv=none; d=zohomail.com; s=zohoarc; b=NzuwE07WHatZrAu3S4xv9Tw1nRQCdlAfjXHlsy8/YdKOysXSymCs7q4JLER3b/wdCrbFN8UdXZJIS9wu/kW9p0bPFUORwDGLVKk0SAGt5Sm8zmkTa2ZkETN+S2Nii6MViefqMSW8l82C0RrrHYuMHBHcEeLzf1IIYSesIHSuwFM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1600868402; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:To; bh=eFPkbYxA6FaaMTGJYUsKcGN1xs97j6/u2JzPLhfib1Y=; b=K0zIyv0TeByFUJ7M6xXnYAKY8AQYMiN5WZ4Sz5L11BOgegkGrYyNnntwRTk3xFYptRraPNYUQ5Uw3yQiL1aKtDUeQg9As/YjJ5ISRvWYzY1WL9lbadzLajjAn9WzNF4ua1CwnGnRGYWu/9i6ls7yhGJ8rYv1ZdzXNbaSHoNdB04= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail header.from= (p=none dis=none) header.from= Return-Path: Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1600868402186654.7103300770887; Wed, 23 Sep 2020 06:40:02 -0700 (PDT) Received: from localhost ([::1]:59306 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kL505-0002LC-DD for importer@patchew.org; Wed, 23 Sep 2020 09:40:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:37296) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kL4yq-0000di-VP for qemu-devel@nongnu.org; Wed, 23 Sep 2020 09:38:44 -0400 Received: from us-smtp-delivery-124.mimecast.com ([63.128.21.124]:30021) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kL4yo-00061M-U4 for qemu-devel@nongnu.org; Wed, 23 Sep 2020 09:38:44 -0400 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-8-IwHhFhHRPsKkIfVh8Dmcsg-1; Wed, 23 Sep 2020 09:38:39 -0400 Received: from smtp.corp.redhat.com (int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id A7B2F8ECE40; Wed, 23 Sep 2020 13:38:38 +0000 (UTC) Received: from localhost.localdomain.com (ovpn-114-73.ams2.redhat.com [10.36.114.73]) by smtp.corp.redhat.com (Postfix) with ESMTP id 9769E60BEC; Wed, 23 Sep 2020 13:38:35 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1600868322; 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: in-reply-to:in-reply-to:references:references; bh=eFPkbYxA6FaaMTGJYUsKcGN1xs97j6/u2JzPLhfib1Y=; b=N3VTtTiaFVLyJQ3bc4ZgLj/k8hbEDidg1q3Fptg1QRLVoPbDq9BcCBt9YE80k55j6sqV3V GbvGIPxkvQ0DzGlpjlDuyJWxaZ0ganCqLw02U1YXOOBZeRcnS95Wy6GiK35xpqPk9ckyxm +HXFjmoOHLHz4ROaXoemodIrgd7a8Gk= X-MC-Unique: IwHhFhHRPsKkIfVh8Dmcsg-1 From: =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= To: qemu-devel@nongnu.org Subject: [PATCH v3 3/3] qemu-options: document SMBIOS type 11 settings Date: Wed, 23 Sep 2020 14:38:04 +0100 Message-Id: <20200923133804.2089190-4-berrange@redhat.com> In-Reply-To: <20200923133804.2089190-1-berrange@redhat.com> References: <20200923133804.2089190-1-berrange@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.12 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=berrange@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Received-SPF: pass client-ip=63.128.21.124; envelope-from=berrange@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/09/23 00:53:58 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=-1.228, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, NUMERIC_HTTP_ADDR=1.242, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H5=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, WEIRD_PORT=0.001 autolearn=ham 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 , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Eduardo Habkost , "Michael S. Tsirkin" , Laszlo Ersek , Markus Armbruster , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , qemu-arm@nongnu.org, Igor Mammedov , Paolo Bonzini , Richard Henderson Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Daniel P. Berrang=C3=A9 --- qemu-options.hx | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/qemu-options.hx b/qemu-options.hx index 47f64be0c0..2cb034bce3 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -2296,6 +2296,8 @@ DEF("smbios", HAS_ARG, QEMU_OPTION_smbios, "-smbios type=3D4[,sock_pfx=3Dstr][,manufacturer=3Dstr][,version=3Dstr= ][,serial=3Dstr]\n" " [,asset=3Dstr][,part=3Dstr][,max-speed=3D%d][,current-s= peed=3D%d]\n" " specify SMBIOS type 4 fields\n" + "-smbios type=3D11[,value=3Dstr][,path=3Dfilename]\n" + " specify SMBIOS type 11 fields\n" "-smbios type=3D17[,loc_pfx=3Dstr][,bank=3Dstr][,manufacturer=3Dstr][,= serial=3Dstr]\n" " [,asset=3Dstr][,part=3Dstr][,speed=3D%d]\n" " specify SMBIOS type 17 fields\n", @@ -2319,6 +2321,45 @@ SRST ``-smbios type=3D4[,sock_pfx=3Dstr][,manufacturer=3Dstr][,version=3Dstr][,= serial=3Dstr][,asset=3Dstr][,part=3Dstr]`` Specify SMBIOS type 4 fields =20 +``-smbios type=3D11[,value=3Dstr][,path=3Dfilename]`` + Specify SMBIOS type 11 fields inline + + This argument can be repeated multiple times, and values are added in = the order they are parsed. + Applications intending to use OEM strings data are encouraged to use t= heir application name as + a prefix for the value string. This facilitates passing information fo= r multiple applications + concurrently. + + The ``value=3Dstr`` syntax provides the string data inline, while the = ``path=3Dfilename`` syntax + loads data from a file on disk. Note that the file is not permitted to= contain any NUL bytes. + + Both the ``value`` and ``path`` options can be repeated multiple times= and will be added to + the SMBIOS table in the order in which they appear. + + Note that on the x86 architecture, the total size of all SMBIOS tables= is limited to 65535 + bytes. Thus the OEM strings data is not suitable for passing large amo= unts of data into the + guest. Instead it should be used as a indicator to inform the guest wh= ere to locate the real + data set, for example, by specifying the serial ID of a block device. + + An example passing three strings is + + .. parsed-literal:: + + -smbios type=3D11,value=3Dcloud-init:ds=3Dnocloud-net;s=3Dhttp://1= 0.10.0.1:8000/,\\ + value=3Danaconda:method=3Dhttp://dl.fedoraproject.= org/pub/fedora/linux/releases/25/x86_64/os,\\ + path=3D/some/file/with/oemstringsdata.txt + + In the guest OS this is visible with the ``dmidecode`` command + + .. parsed-literal:: + + $ dmidecode -t 11 + Handle 0x0E00, DMI type 11, 5 bytes + OEM Strings + String 1: cloud-init:ds=3Dnocloud-net;s=3Dhttp://10.10.0.1:8= 000/ + String 2: anaconda:method=3Dhttp://dl.fedoraproject.org/pub/= fedora/linux/releases/25/x86_64/os + String 3: myapp:some extra data + + ``-smbios type=3D17[,loc_pfx=3Dstr][,bank=3Dstr][,manufacturer=3Dstr][,ser= ial=3Dstr][,asset=3Dstr][,part=3Dstr][,speed=3D%d]`` Specify SMBIOS type 17 fields ERST --=20 2.26.2