[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 01/18] smbios: Add a function to directly add an
From: |
Anthony Liguori |
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 |
User-agent: |
Notmuch/0.13.2+93~ged93d79 (http://notmuchmail.org) Emacs/23.3.1 (x86_64-pc-linux-gnu) |
address@hidden writes:
> From: Corey Minyard <address@hidden>
>
> 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 <address@hidden>
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
- [Qemu-devel] [PATCH 06/18] qemu-char: Fix a race reporting opens and closes, (continued)
- [Qemu-devel] [PATCH 06/18] qemu-char: Fix a race reporting opens and closes, minyard, 2012/07/19
- [Qemu-devel] [PATCH 10/18] qom: release previous object when setting, minyard, 2012/07/19
- [Qemu-devel] [PATCH 04/18] qemu-char: Allocate CharDriverState in qemu_chr_new_from_opts, minyard, 2012/07/19
- [Qemu-devel] [PATCH 09/18] qdev: Add a pre-firmware init capability, minyard, 2012/07/19
- [Qemu-devel] [PATCH 07/18] qemu-char: remove free of chr from win_stdio_close, minyard, 2012/07/19
- [Qemu-devel] [PATCH 01/18] smbios: Add a function to directly add an entry, minyard, 2012/07/19
- Re: [Qemu-devel] [PATCH 01/18] smbios: Add a function to directly add an entry,
Anthony Liguori <=
[Qemu-devel] [PATCH 05/18] qemu-char: Allow a chardev to reconnect if disconnected, minyard, 2012/07/19
[Qemu-devel] [PATCH 11/18] Add a base IPMI interface, minyard, 2012/07/19
[Qemu-devel] [PATCH 03/18] vl: Move init_timer_alarm() earlier, minyard, 2012/07/19
[Qemu-devel] [PATCH 02/18] pc: move SMBIOS setup to after device init, minyard, 2012/07/19
[Qemu-devel] [PATCH 14/18] IPMI: Add a BT low-level interface, minyard, 2012/07/19
[Qemu-devel] [PATCH 18/18] IPMI: Add documentation., minyard, 2012/07/19
[Qemu-devel] [PATCH 12/18] IPMI: Add a PC ISA type structure, minyard, 2012/07/19