[coreboot] Coreboot bug?
Myles Watson
mylesgw at gmail.com
Thu Nov 12 01:33:14 CET 2009
> memcpy(00000518, 0010d91c, c)
>
> I have no idea why 12. I reverted it.
It turns out that option_table is actually a struct cmos_option_table
in the header file.
Here's a better fix:
Index: src/arch/i386/boot/coreboot_table.c
===================================================================
--- src/arch/i386/boot/coreboot_table.c (revision 4933)
+++ src/arch/i386/boot/coreboot_table.c (working copy)
@@ -485,11 +485,12 @@
#if (CONFIG_HAVE_OPTION_TABLE == 1)
{
- struct lb_record *rec_dest, *rec_src;
- /* Write the option config table... */
+ struct lb_record *rec_dest;
+ struct cmos_option_table *ct = &option_table;
+ /* Copy the option config table, it's already a lb_record... */
rec_dest = lb_new_record(head);
- rec_src = (struct lb_record *)(void *)&option_table;
- memcpy(rec_dest, rec_src, rec_src->size);
+ printk_debug("memcpy(%p, %p, %x)\n",rec_dest, &option_table, ct->size);
+ memcpy(rec_dest, &option_table, ct->size);
/* Create cmos checksum entry in coreboot table */
lb_cmos_checksum(head);
}
Here's the output, which is correct:
memcpy(00000518, 0010dc18, 488)
If it gets an ack, I'll take out the printk before committing.
Signed-off-by: Myles Watson <mylesgw at gmail.com>
Thanks,
Myles
More information about the coreboot
mailing list