qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Laszlo Ersek <lersek@redhat.com>
To: "Gabriel L. Somlo" <gsomlo@gmail.com>,
	Kevin O'Connor <kevin@koconnor.net>
Cc: agraf@suse.de, seabios@seabios.org, qemu-devel@nongnu.org,
	armbru@redhat.com, alex.williamson@redhat.com, kraxel@redhat.com,
	imammedo@redhat.com
Subject: Re: [Qemu-devel] E820 (Re: [v4 PATCH 00/12] SMBIOS: build full tables in QEMU)
Date: Tue, 01 Apr 2014 10:40:00 +0200	[thread overview]
Message-ID: <533A7B60.7080408@redhat.com> (raw)
In-Reply-To: <20140331201807.GG9466@ERROL.INI.CMU.EDU>

On 03/31/14 22:18, Gabriel L. Somlo wrote:
> On Wed, Mar 26, 2014 at 06:36:10PM -0400, Kevin O'Connor wrote:
>> On Wed, Mar 26, 2014 at 03:58:50PM -0400, Gabriel L. Somlo wrote:
>>> - SeaBIOS is still in charge of providing the smbios_entry_point
>>>   structure, and it's unlikely we can reasonably expect it to
>>>   bump the version to 2.5 (not that it seems to matter, if my
>>>   tests are to be believed)
>>
>> This is why ultimately we want to use the romfile_loader mechanism for
>> smbios - that interface will allow qemu to generate both the smbios
>> table and the smbios entry point.
> 
> Ah, so romfile_loader is the "whole-blob" fw_cfg transfer method (so
> far in smbios.c we've been dealing with individual fields, and
> individual table types).
> 
> The only sticking point remaining would be who gets to generate the
> Type 0 (BIOS Information) table and when, which is something QEMU
> should arguably NOT be doing on behalf of SeaBIOS (or OVMF, or ...).
> 
> I guess everyone's busy with QEMU 2.0, so I'll keep playing with this
> stuff on my own and bring it up again afterwards.
> 
> Obviously, more comments and feedback are welcome at any time, should
> there be any interest :)

Sorry I can follow this discussion only intermittently.

- I think OVMF would be fine with the Type 0 table as-is (it has a
default table and adheres to field-level patches). Full tables for other
types would be welcome.

- In edk2 (and on platforms that conform to the platform init (PI)
spec), platform drivers install their smbios tables through
EFI_SMBIOS_PROTOCOL. (Documented in Vol5 of the PI spec.)

In edk2, the "central" driver that produces this protocol (== provides
the service) is "MdeModulePkg/Universal/SmbiosDxe".

The OVMF platform driver that installs the smbios tables through the
protocol (== consumes the service) is "OvmfPkg/SmbiosPlatformDxe".

The set and the contents of the smbios tables are the jurisdiction of
the platform driver (the service consumer) -- the driver in OvmfPkg.

The smbios entry point (including the smbios std version) is the
jurisdiction of the service producer -- the driver in MdeModulePkg.

The platform driver can query the smbios std version from
EFI_SMBIOS_PROTOCOL. The platform driver should also filter the tables
it intends to install through the protocol so that the table types
conform to the smbios std version supported by the service provider.

This is to say, OVMF can fetch tables via fw_cfg, and install them via
the EFI_SMBIOS_PROTOCOL instance that "MdeModulePkg/Universal/SmbiosDxe"
provides. However, OVMF can't change the SMBIOS version or other aspects
of the smbios entry point. At best OVMF could filter out tables (grabbed
from fw_cfg) that are above the std version that EFI_SMBIOS_PROTOCOL
supports/advertises.

Currently OVMF does no such filtering (it would require hard-coding
which table type is defined in which smbios version). It does require
support for version 2.3, or it gives up.

In any case, the SMBIOS version currently supported by
"MdeModulePkg/Universal/SmbiosDxe" is 2.7.1 (SVN r11690), which is quite
permissive.

Summary:
- type 0 should be OK as-is, other types are most welcome as full blobs,
- OvmfPkg can't influence the smbios version advertised, it belongs to
qanother (central) driver in edk2 that is built into OVMF.fd,
- OvmfPkg currently doesn't filter fw_cfg table types against the smbios
version (determined by that other, central driver in edk2),
- however that version is reasonably high (2.7.1).

(Note: most of "OvmfPkg/SmbiosPlatformDxe" that's relevant for the above
is not in upstream edk2. You can find the patches in
<http://www.kraxel.org/repos/manual/edk2/> and
<http://copr-be.cloud.fedoraproject.org/results/bonzini/ovmf/>.)

Thanks
Laszlo

  reply	other threads:[~2014-04-01  8:40 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-18 23:23 [Qemu-devel] [v4 PATCH 00/12] SMBIOS: build full tables in QEMU Gabriel L. Somlo
2014-03-18 23:23 ` [Qemu-devel] [v4 PATCH 01/12] SMBIOS: Rename smbios_set_type1_defaults() for more general use Gabriel L. Somlo
2014-03-18 23:23 ` [Qemu-devel] [v4 PATCH 02/12] SMBIOS: Use macro to set smbios defaults Gabriel L. Somlo
2014-03-18 23:23 ` [Qemu-devel] [v4 PATCH 03/12] SMBIOS: Use bitmaps to check for smbios table collisions Gabriel L. Somlo
2014-03-18 23:23 ` [Qemu-devel] [v4 PATCH 04/12] SMBIOS: Add code to build full smbios tables; build type 2 table Gabriel L. Somlo
2014-03-18 23:23 ` [Qemu-devel] [v4 PATCH 05/12] SMBIOS: Build full tables for types 0 and 1 Gabriel L. Somlo
2014-03-18 23:23 ` [Qemu-devel] [v4 PATCH 06/12] SMBIOS: Remove unused code for passing individual fields to bios Gabriel L. Somlo
2014-03-18 23:23 ` [Qemu-devel] [v4 PATCH 07/12] SMBIOS: Build full type 3 table Gabriel L. Somlo
2014-03-18 23:23 ` [Qemu-devel] [v4 PATCH 08/12] SMBIOS: Build full type 4 tables Gabriel L. Somlo
2014-03-18 23:23 ` [Qemu-devel] [v4 PATCH 09/12] SMBIOS: Build full smbios memory tables (type 16, 17, 19, and 20) Gabriel L. Somlo
2014-03-18 23:23 ` [Qemu-devel] [v4 PATCH 10/12] SMBIOS: Build full tables for type 32 and 127 Gabriel L. Somlo
2014-03-18 23:23 ` [Qemu-devel] [v4 PATCH 11/12] SMBIOS: Update all table definitions to smbios spec v2.3 Gabriel L. Somlo
2014-03-18 23:23 ` [Qemu-devel] [v4 PATCH 12/12] SMBIOS: Remove SeaBIOS compatibility quirks Gabriel L. Somlo
2014-03-26 19:58 ` [Qemu-devel] E820 (Re: [v4 PATCH 00/12] SMBIOS: build full tables in QEMU) Gabriel L. Somlo
2014-03-26 22:36   ` Kevin O'Connor
2014-03-31 20:18     ` Gabriel L. Somlo
2014-04-01  8:40       ` Laszlo Ersek [this message]
2014-04-01 14:39         ` Kevin O'Connor
2014-04-01 15:47           ` Laszlo Ersek
2014-04-01 18:47             ` Gabriel L. Somlo
2014-04-01 20:28               ` Kevin O'Connor
2014-04-01 21:28                 ` Gabriel L. Somlo
2014-04-01 21:44                   ` Laszlo Ersek
2014-04-01 22:00                     ` Kevin O'Connor
2014-04-01 22:35                       ` Laszlo Ersek
2014-04-02 12:38                         ` Gabriel L. Somlo
2014-04-02 13:39                           ` Laszlo Ersek
2014-04-05  2:48                         ` Kevin O'Connor
2014-04-02 15:07                     ` Gerd Hoffmann
2014-04-02 17:01                       ` Gabriel L. Somlo
2014-04-03  1:57                         ` Gabriel L. Somlo
2014-04-03  9:42                           ` Laszlo Ersek
2014-04-03 13:32                             ` Gabriel L. Somlo
2014-04-03 13:56                               ` Laszlo Ersek
2014-04-07  6:50                               ` Gerd Hoffmann
2014-04-07  6:47                             ` Gerd Hoffmann
2014-04-01 21:48                   ` Kevin O'Connor
2014-04-02 15:04                 ` Gerd Hoffmann
2014-04-05  0:34                   ` Kevin O'Connor
2014-04-05  1:15                     ` Gabriel L. Somlo
2014-04-05  2:26                       ` Kevin O'Connor
2014-04-07  7:09                         ` Gerd Hoffmann
2014-04-07 14:14                           ` Kevin O'Connor
2014-04-07 14:33                             ` Laszlo Ersek
2014-04-07 14:49                             ` Gabriel L. Somlo
2014-04-07 15:23                               ` Kevin O'Connor
2014-04-07 18:05                                 ` Gabriel L. Somlo
2014-04-07 18:57                                   ` Kevin O'Connor
2014-04-08 13:51                                     ` Gabriel L. Somlo
2014-03-27  2:45   ` Gabriel L. Somlo

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=533A7B60.7080408@redhat.com \
    --to=lersek@redhat.com \
    --cc=agraf@suse.de \
    --cc=alex.williamson@redhat.com \
    --cc=armbru@redhat.com \
    --cc=gsomlo@gmail.com \
    --cc=imammedo@redhat.com \
    --cc=kevin@koconnor.net \
    --cc=kraxel@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=seabios@seabios.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).