diff mbox

smbios: add max speed comdline option for type-17 (meory device) structure

Message ID 1426096681-13442-1-git-send-email-somlo@cmu.edu
State New
Headers show

Commit Message

Gabriel L. Somlo March 11, 2015, 5:58 p.m. UTC
Signed-off-by: Gabriel Somlo <somlo@cmu.edu>
---
 hw/i386/smbios.c | 10 ++++++++--
 qemu-options.hx  |  4 ++--
 2 files changed, 10 insertions(+), 4 deletions(-)

Comments

Paolo Bonzini March 12, 2015, 2:19 p.m. UTC | #1
On 11/03/2015 18:58, Gabriel L. Somlo wrote:
> Signed-off-by: Gabriel Somlo <somlo@cmu.edu>
> ---
>  hw/i386/smbios.c | 10 ++++++++--
>  qemu-options.hx  |  4 ++--
>  2 files changed, 10 insertions(+), 4 deletions(-)
> 
> diff --git a/hw/i386/smbios.c b/hw/i386/smbios.c
> index f2e9ab6..1341e02 100644
> --- a/hw/i386/smbios.c
> +++ b/hw/i386/smbios.c
> @@ -91,6 +91,7 @@ static struct {
>  
>  static struct {
>      const char *loc_pfx, *bank, *manufacturer, *serial, *asset, *part;
> +    uint16_t speed;
>  } type17;
>  
>  static QemuOptsList qemu_smbios_opts = {
> @@ -304,6 +305,10 @@ static const QemuOptDesc qemu_smbios_type17_opts[] = {
>          .name = "part",
>          .type = QEMU_OPT_STRING,
>          .help = "part number",
> +    },{
> +        .name = "speed",
> +        .type = QEMU_OPT_NUMBER,
> +        .help = "maximum capable speed",
>      },
>      { /* end of list */ }
>  };
> @@ -697,13 +702,13 @@ static void smbios_build_type_17_table(unsigned instance, uint64_t size)
>      SMBIOS_TABLE_SET_STR(17, bank_locator_str, type17.bank);
>      t->memory_type = 0x07; /* RAM */
>      t->type_detail = cpu_to_le16(0x02); /* Other */
> -    t->speed = cpu_to_le16(0); /* Unknown */
> +    t->speed = cpu_to_le16(type17.speed);
>      SMBIOS_TABLE_SET_STR(17, manufacturer_str, type17.manufacturer);
>      SMBIOS_TABLE_SET_STR(17, serial_number_str, type17.serial);
>      SMBIOS_TABLE_SET_STR(17, asset_tag_number_str, type17.asset);
>      SMBIOS_TABLE_SET_STR(17, part_number_str, type17.part);
>      t->attributes = 0; /* Unknown */
> -    t->configured_clock_speed = cpu_to_le16(0); /* Unknown */
> +    t->configured_clock_speed = t->speed; /* reuse value for max speed */
>      t->minimum_voltage = cpu_to_le16(0); /* Unknown */
>      t->maximum_voltage = cpu_to_le16(0); /* Unknown */
>      t->configured_voltage = cpu_to_le16(0); /* Unknown */
> @@ -1083,6 +1088,7 @@ void smbios_entry_add(QemuOpts *opts)
>              save_opt(&type17.serial, opts, "serial");
>              save_opt(&type17.asset, opts, "asset");
>              save_opt(&type17.part, opts, "part");
> +            type17.speed = qemu_opt_get_number(opts, "speed", 0);
>              return;
>          default:
>              error_report("Don't know how to build fields for SMBIOS type %ld",
> diff --git a/qemu-options.hx b/qemu-options.hx
> index 837624d..c4f7946 100644
> --- a/qemu-options.hx
> +++ b/qemu-options.hx
> @@ -1392,7 +1392,7 @@ DEF("smbios", HAS_ARG, QEMU_OPTION_smbios,
>      "              [,asset=str][,part=str]\n"
>      "                specify SMBIOS type 4 fields\n"
>      "-smbios type=17[,loc_pfx=str][,bank=str][,manufacturer=str][,serial=str]\n"
> -    "               [,asset=str][,part=str]\n"
> +    "               [,asset=str][,part=str][,speed=%d]\n"
>      "                specify SMBIOS type 17 fields\n",
>      QEMU_ARCH_I386)
>  STEXI
> @@ -1415,7 +1415,7 @@ Specify SMBIOS type 3 fields
>  @item -smbios type=4[,sock_pfx=@var{str}][,manufacturer=@var{str}][,version=@var{str}][,serial=@var{str}][,asset=@var{str}][,part=@var{str}]
>  Specify SMBIOS type 4 fields
>  
> -@item -smbios type=17[,loc_pfx=@var{str}][,bank=@var{str}][,manufacturer=@var{str}][,serial=@var{str}][,asset=@var{str}][,part=@var{str}]
> +@item -smbios type=17[,loc_pfx=@var{str}][,bank=@var{str}][,manufacturer=@var{str}][,serial=@var{str}][,asset=@var{str}][,part=@var{str}][,speed=@var{%d}]
>  Specify SMBIOS type 17 fields
>  ETEXI
>  
> 

Acked-by: Paolo Bonzini <pbonzini@redhat.com>
diff mbox

Patch

diff --git a/hw/i386/smbios.c b/hw/i386/smbios.c
index f2e9ab6..1341e02 100644
--- a/hw/i386/smbios.c
+++ b/hw/i386/smbios.c
@@ -91,6 +91,7 @@  static struct {
 
 static struct {
     const char *loc_pfx, *bank, *manufacturer, *serial, *asset, *part;
+    uint16_t speed;
 } type17;
 
 static QemuOptsList qemu_smbios_opts = {
@@ -304,6 +305,10 @@  static const QemuOptDesc qemu_smbios_type17_opts[] = {
         .name = "part",
         .type = QEMU_OPT_STRING,
         .help = "part number",
+    },{
+        .name = "speed",
+        .type = QEMU_OPT_NUMBER,
+        .help = "maximum capable speed",
     },
     { /* end of list */ }
 };
@@ -697,13 +702,13 @@  static void smbios_build_type_17_table(unsigned instance, uint64_t size)
     SMBIOS_TABLE_SET_STR(17, bank_locator_str, type17.bank);
     t->memory_type = 0x07; /* RAM */
     t->type_detail = cpu_to_le16(0x02); /* Other */
-    t->speed = cpu_to_le16(0); /* Unknown */
+    t->speed = cpu_to_le16(type17.speed);
     SMBIOS_TABLE_SET_STR(17, manufacturer_str, type17.manufacturer);
     SMBIOS_TABLE_SET_STR(17, serial_number_str, type17.serial);
     SMBIOS_TABLE_SET_STR(17, asset_tag_number_str, type17.asset);
     SMBIOS_TABLE_SET_STR(17, part_number_str, type17.part);
     t->attributes = 0; /* Unknown */
-    t->configured_clock_speed = cpu_to_le16(0); /* Unknown */
+    t->configured_clock_speed = t->speed; /* reuse value for max speed */
     t->minimum_voltage = cpu_to_le16(0); /* Unknown */
     t->maximum_voltage = cpu_to_le16(0); /* Unknown */
     t->configured_voltage = cpu_to_le16(0); /* Unknown */
@@ -1083,6 +1088,7 @@  void smbios_entry_add(QemuOpts *opts)
             save_opt(&type17.serial, opts, "serial");
             save_opt(&type17.asset, opts, "asset");
             save_opt(&type17.part, opts, "part");
+            type17.speed = qemu_opt_get_number(opts, "speed", 0);
             return;
         default:
             error_report("Don't know how to build fields for SMBIOS type %ld",
diff --git a/qemu-options.hx b/qemu-options.hx
index 837624d..c4f7946 100644
--- a/qemu-options.hx
+++ b/qemu-options.hx
@@ -1392,7 +1392,7 @@  DEF("smbios", HAS_ARG, QEMU_OPTION_smbios,
     "              [,asset=str][,part=str]\n"
     "                specify SMBIOS type 4 fields\n"
     "-smbios type=17[,loc_pfx=str][,bank=str][,manufacturer=str][,serial=str]\n"
-    "               [,asset=str][,part=str]\n"
+    "               [,asset=str][,part=str][,speed=%d]\n"
     "                specify SMBIOS type 17 fields\n",
     QEMU_ARCH_I386)
 STEXI
@@ -1415,7 +1415,7 @@  Specify SMBIOS type 3 fields
 @item -smbios type=4[,sock_pfx=@var{str}][,manufacturer=@var{str}][,version=@var{str}][,serial=@var{str}][,asset=@var{str}][,part=@var{str}]
 Specify SMBIOS type 4 fields
 
-@item -smbios type=17[,loc_pfx=@var{str}][,bank=@var{str}][,manufacturer=@var{str}][,serial=@var{str}][,asset=@var{str}][,part=@var{str}]
+@item -smbios type=17[,loc_pfx=@var{str}][,bank=@var{str}][,manufacturer=@var{str}][,serial=@var{str}][,asset=@var{str}][,part=@var{str}][,speed=@var{%d}]
 Specify SMBIOS type 17 fields
 ETEXI