[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [v2 PATCH 12/13] SMBIOS: Build full type 20 tables
From: |
Gabriel L. Somlo |
Subject: |
[Qemu-devel] [v2 PATCH 12/13] SMBIOS: Build full type 20 tables |
Date: |
Tue, 11 Mar 2014 11:16:28 -0400 |
From: "Gabriel L. Somlo" <address@hidden>
Build full smbios type 20 (memory device mapped address) tables,
and make them available via fw_cfg.
Signed-off-by: Gabriel Somlo <address@hidden>
---
hw/i386/smbios.c | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)
diff --git a/hw/i386/smbios.c b/hw/i386/smbios.c
index c9cd295..9cf29d3 100644
--- a/hw/i386/smbios.c
+++ b/hw/i386/smbios.c
@@ -566,6 +566,23 @@ static void smbios_build_type_19_table(unsigned instance,
SMBIOS_BUILD_TABLE_POST;
}
+static void smbios_build_type_20_table(unsigned instance,
+ unsigned dev_hndl, unsigned array_hndl,
+ unsigned start_kb, unsigned size_kb)
+{
+ SMBIOS_BUILD_TABLE_PRE(20, 0x1400 + instance, true); /* required */
+
+ t->starting_address = start_kb;
+ t->ending_address = start_kb + size_kb - 1;
+ t->memory_device_handle = 0x1100 + dev_hndl; /* Type 17 (Memory Device) */
+ t->memory_array_mapped_address_handle = 0x1300 + array_hndl; /* Type 19 */
+ t->partition_row_position = 1; /* hardcoded in SeaBIOS */
+ t->interleave_position = 0; /* Not interleaved */
+ t->interleaved_data_depth = 0; /* Not interleaved */
+
+ SMBIOS_BUILD_TABLE_POST;
+}
+
#define SMBIOS_SET_DEFAULT(field, value) \
if (!field) { \
field = value; \
@@ -629,8 +646,20 @@ uint8_t *smbios_get_table(size_t *length)
smbios_build_type_17_table(i, size_mb);
}
smbios_build_type_19_table(0, 0, smbios_below_4g_ram >> 10);
+ smbios_build_type_20_table(0, 0, 0, 0, smbios_below_4g_ram >> 10);
if (smbios_above_4g_ram) {
+ uint32_t start_mb = 4096, size_mb, j;
smbios_build_type_19_table(1, 4 << 20, smbios_above_4g_ram >> 10);
+ for (j = 1, i = 0; i < memdev_count; i++, j++) {
+ size_mb = (i == memdev_count - 1) ?
+ ((ram_size_mb - 1) & 0x3FFF) + 1 : 0x4000;
+ if (i == 0) {
+ size_mb -= smbios_below_4g_ram >> 20;
+ }
+ smbios_build_type_20_table(j, i, 1,
+ start_mb << 10, size_mb << 10);
+ start_mb += size_mb;
+ }
}
smbios_validate_table();
smbios_immutable = true;
--
1.8.1.4
- [Qemu-devel] [v2 PATCH 02/13] SMBIOS: Rename smbios_set_type1_defaults() for more general use, (continued)
- [Qemu-devel] [v2 PATCH 02/13] SMBIOS: Rename smbios_set_type1_defaults() for more general use, Gabriel L. Somlo, 2014/03/11
- [Qemu-devel] [v2 PATCH 03/13] SMBIOS: Use macro to set smbios defaults, Gabriel L. Somlo, 2014/03/11
- [Qemu-devel] [v2 PATCH 04/13] SMBIOS: Use bitmaps to check for smbios table collisions, Gabriel L. Somlo, 2014/03/11
- [Qemu-devel] [v2 PATCH 05/13] SMBIOS: Add code to build full smbios tables; build type 2 table, Gabriel L. Somlo, 2014/03/11
- [Qemu-devel] [v3 PATCH 05/13] SMBIOS: Add code to build full smbios tables; build type 2 table, Gabriel L. Somlo, 2014/03/11
- [Qemu-devel] [v2 PATCH 06/13] SMBIOS: Build full tables for types 0 and 1, Gabriel L. Somlo, 2014/03/11
- [Qemu-devel] [v2 PATCH 09/13] SMBIOS: Build full type 4 tables, Gabriel L. Somlo, 2014/03/11
- [Qemu-devel] [v2 PATCH 08/13] SMBIOS: Build full type 3 table, Gabriel L. Somlo, 2014/03/11
- [Qemu-devel] [v2 PATCH 10/13] SMBIOS: Build full smbios v2.3 compliant type 16 and 17 tables, Gabriel L. Somlo, 2014/03/11
- [Qemu-devel] [v2 PATCH 07/13] SMBIOS: Remove unused code for passing individual fields to bios, Gabriel L. Somlo, 2014/03/11
- [Qemu-devel] [v2 PATCH 12/13] SMBIOS: Build full type 20 tables,
Gabriel L. Somlo <=
- [Qemu-devel] [v2 PATCH 13/13] SMBIOS: Build full tables for type 32 and 127, Gabriel L. Somlo, 2014/03/11
- [Qemu-devel] [v2 PATCH 11/13] SMBIOS: Build full type 19 tables, Gabriel L. Somlo, 2014/03/11
- Re: [Qemu-devel] [v2 PATCH 11/13] SMBIOS: Build full type 19 tables, Gerd Hoffmann, 2014/03/12
- Re: [Qemu-devel] [v2 PATCH 11/13] SMBIOS: Build full type 19 tables, Gabriel L. Somlo, 2014/03/12
- Re: [Qemu-devel] [v2 PATCH 11/13] SMBIOS: Build full type 19 tables, Gerd Hoffmann, 2014/03/12
- Re: [Qemu-devel] [v2 PATCH 11/13] SMBIOS: Build full type 19 tables, Gabriel L. Somlo, 2014/03/12
- Re: [Qemu-devel] [v2 PATCH 11/13] SMBIOS: Build full type 19 tables, Gerd Hoffmann, 2014/03/12
- Re: [Qemu-devel] [v2 PATCH 11/13] SMBIOS: Build full type 19 tables, Gabriel L. Somlo, 2014/03/12
- Re: [Qemu-devel] [v2 PATCH 11/13] SMBIOS: Build full type 19 tables, Gabriel L. Somlo, 2014/03/12
- Re: [Qemu-devel] [v2 PATCH 11/13] SMBIOS: Build full type 19 tables, Gabriel L. Somlo, 2014/03/12