All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anthony Liguori <anthony@codemonkey.ws>
To: minyard@acm.org, qemu-devel@nongnu.org
Cc: Corey Minyard <cminyard@mvista.com>
Subject: Re: [Qemu-devel] [PATCH 01/18] smbios: Add a function to directly add an entry
Date: Mon, 30 Jul 2012 10:37:20 -0500	[thread overview]
Message-ID: <87obmxxntb.fsf@codemonkey.ws> (raw)
In-Reply-To: <1342724013-1633-2-git-send-email-minyard@acm.org>

minyard@acm.org writes:

> From: Corey Minyard <cminyard@mvista.com>
>
> There was no way to directly add a table entry to the SMBIOS table,
> even though the BIOS supports this.  So add a function to do this.
> This is in preparation for the IPMI handler adding it's SMBIOS table
> entry.
>
> Signed-off-by: Corey Minyard <cminyard@mvista.com>

I don't expect that hardware ever adds SMBIOS entries.  Rather, the BIOS
adds the entries by probing the hardware.

So I think you should solve this in SeaBIOS, instead of trying to do it
in QEMU.  I think that also solves the problem you have with
pre-firmware init.

Regards,

Anthony Liguori

> ---
>  hw/smbios.c |   27 +++++++++++++++++++++++++++
>  hw/smbios.h |   15 ++++++++-------
>  2 files changed, 35 insertions(+), 7 deletions(-)
>
> diff --git a/hw/smbios.c b/hw/smbios.c
> index c57237d..c0c1be1 100644
> --- a/hw/smbios.c
> +++ b/hw/smbios.c
> @@ -178,6 +178,33 @@ static void smbios_build_type_1_fields(const char *t)
>                           strlen(buf) + 1, buf);
>  }
>  
> +int smbios_table_entry_add(struct smbios_structure_header *entry)
> +{
> +    struct smbios_table *table;
> +    struct smbios_structure_header *header;
> +    unsigned int size = entry->length;
> +
> +    if (!smbios_entries) {
> +        smbios_entries_len = sizeof(uint16_t);
> +        smbios_entries = g_malloc0(smbios_entries_len);
> +    }
> +    smbios_entries = g_realloc(smbios_entries, smbios_entries_len +
> +                               sizeof(*table) + size);
> +    table = (struct smbios_table *)(smbios_entries + smbios_entries_len);
> +    table->header.type = SMBIOS_TABLE_ENTRY;
> +    table->header.length = cpu_to_le16(sizeof(*table) + size);
> +
> +    header = (struct smbios_structure_header *)(table->data);
> +    memcpy(header, entry, size);
> +
> +    smbios_check_collision(header->type, SMBIOS_TABLE_ENTRY);
> +
> +    smbios_entries_len += sizeof(*table) + size;
> +    (*(uint16_t *)smbios_entries) =
> +        cpu_to_le16(le16_to_cpu(*(uint16_t *)smbios_entries) + 1);
> +    return 0;
> +}
> +
>  int smbios_entry_add(const char *t)
>  {
>      char buf[1024];
> diff --git a/hw/smbios.h b/hw/smbios.h
> index 94e3641..6431a15 100644
> --- a/hw/smbios.h
> +++ b/hw/smbios.h
> @@ -13,21 +13,22 @@
>   *
>   */
>  
> +/* This goes at the beginning of every SMBIOS structure. */
> +struct smbios_structure_header {
> +    uint8_t type;
> +    uint8_t length;
> +    uint16_t handle;
> +} QEMU_PACKED;
> +
>  int smbios_entry_add(const char *t);
>  void smbios_add_field(int type, int offset, int len, void *data);
>  uint8_t *smbios_get_table(size_t *length);
> +int smbios_table_entry_add(struct smbios_structure_header *entry);
>  
>  /*
>   * SMBIOS spec defined tables
>   */
>  
> -/* This goes at the beginning of every SMBIOS structure. */
> -struct smbios_structure_header {
> -    uint8_t type;
> -    uint8_t length;
> -    uint16_t handle;
> -} QEMU_PACKED;
> -
>  /* SMBIOS type 0 - BIOS Information */
>  struct smbios_type_0 {
>      struct smbios_structure_header header;
> -- 
> 1.7.4.1

  reply	other threads:[~2012-07-30 15:37 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-07-19 18:53 [Qemu-devel] Third shot at adding IPMI to qemu minyard
2012-07-19 18:53 ` [Qemu-devel] [PATCH 01/18] smbios: Add a function to directly add an entry minyard
2012-07-30 15:37   ` Anthony Liguori [this message]
2012-07-30 16:44     ` Corey Minyard
2012-07-30 17:25       ` Anthony Liguori
2012-07-30 17:40         ` Corey Minyard
2012-08-02  1:15         ` Kevin O'Connor
2012-08-02  2:11           ` Corey Minyard
2012-08-02  2:40             ` Anthony Liguori
2012-08-02 12:17               ` Corey Minyard
2012-08-02 18:32                 ` Anthony Liguori
2012-08-02 19:20                   ` Corey Minyard
2012-08-02 21:05                     ` Anthony Liguori
2012-08-06 15:38                       ` Corey Minyard
2012-07-19 18:53 ` [Qemu-devel] [PATCH 02/18] pc: move SMBIOS setup to after device init minyard
2012-07-19 18:53 ` [Qemu-devel] [PATCH 03/18] vl: Move init_timer_alarm() earlier minyard
2012-07-19 18:53 ` [Qemu-devel] [PATCH 04/18] qemu-char: Allocate CharDriverState in qemu_chr_new_from_opts minyard
2012-07-19 18:53 ` [Qemu-devel] [PATCH 05/18] qemu-char: Allow a chardev to reconnect if disconnected minyard
2012-07-19 18:53 ` [Qemu-devel] [PATCH 06/18] qemu-char: Fix a race reporting opens and closes minyard
2012-07-19 18:53 ` [Qemu-devel] [PATCH 07/18] qemu-char: remove free of chr from win_stdio_close minyard
2012-07-19 18:53 ` [Qemu-devel] [PATCH 08/18] qemu-char: Close fd at end of file minyard
2012-07-19 18:53 ` [Qemu-devel] [PATCH 09/18] qdev: Add a pre-firmware init capability minyard
2012-07-30 14:36   ` Andreas Färber
2012-07-30 15:27     ` Corey Minyard
2012-07-30 15:40   ` Anthony Liguori
2012-07-19 18:53 ` [Qemu-devel] [PATCH 10/18] qom: release previous object when setting minyard
2012-07-30 13:51   ` Andreas Färber
2012-09-10 14:34     ` Andreas Färber
2012-07-19 18:53 ` [Qemu-devel] [PATCH 11/18] Add a base IPMI interface minyard
2012-07-19 18:53 ` [Qemu-devel] [PATCH 12/18] IPMI: Add a PC ISA type structure minyard
2012-07-30 13:45   ` Andreas Färber
2012-07-30 17:09     ` Corey Minyard
2012-07-19 18:53 ` [Qemu-devel] [PATCH 13/18] IPMI: Add a KCS low-level interface minyard
2012-07-19 18:53 ` [Qemu-devel] [PATCH 14/18] IPMI: Add a BT " minyard
2012-07-19 18:53 ` [Qemu-devel] [PATCH 15/18] IPMI: Add a local BMC simulation minyard
2012-07-19 18:53 ` [Qemu-devel] [PATCH 16/18] IPMI: Add an external connection simulation interface minyard
2012-07-19 18:53 ` [Qemu-devel] [PATCH 17/18] IPMI: Add tests minyard
2012-07-19 18:53 ` [Qemu-devel] [PATCH 18/18] IPMI: Add documentation minyard
2012-07-20  6:48 ` [Qemu-devel] Third shot at adding IPMI to qemu Paolo Bonzini
2012-07-30 13:34 ` Corey Minyard
2012-07-30 14:05   ` Andreas Färber
2012-07-30 15:17     ` Corey Minyard
2012-09-10 14:48 ` Andreas Färber
2012-09-10 16:52   ` Corey Minyard

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87obmxxntb.fsf@codemonkey.ws \
    --to=anthony@codemonkey.ws \
    --cc=cminyard@mvista.com \
    --cc=minyard@acm.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.