On Tue, Nov 20, 2012 at 05:55:51PM +0100, Gerd Hoffmann wrote: [...]
+static void * +build_mcfg(void) +{
- struct acpi_table_mcfg *mcfg;
- if (!mmconfig.address)
return NULL;
- int len = sizeof(*mcfg) + 1 * sizeof(mcfg->allocation[0]);
- mcfg = malloc_high(len);
- if (!mcfg) {
warn_noalloc();
return NULL;
- }
- memset(mcfg, 0, len);
- mcfg->allocation[0] = mmconfig;
Given all the funky things SeaBIOS does with 16/32bit mode string copies, I'd prefer to use explicit memcpy() calls instead of using implicit struct copies (though I agree it's not likely to be an issue in this particular call site).
That said, though, I don't see a gain in having the acpi code communicate with the pciinit code. Both sets of code are effectively qemu specific, build_mcfg() is only going to get called on q35, and thus the mmconfig struct will always have hard coded values. Might as well have build_mcfg detect q35 and just put the hard-coded values in directly. Let me know if I've missed something.
-Kevin