Revert "coreboot_table: don't add CMOS checksum twice."

This reverts commit e660651824.

After some discussion on IRC we decided to revert it as libpayload can
only read the copy that was removed (and other users like nvramtool can
only read the other copy). So we need both copies at this time.

Signed-off-by: Nico Huber <nico.h@gmx.de>
Change-Id: I6cf6b2a1523d771bb52f3d5720b1b16ed4b348db
Reviewed-on: http://review.coreboot.org/11696
Tested-by: build bot (Jenkins)
Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org>
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
This commit is contained in:
Nico Huber 2015-09-21 20:11:47 +02:00
parent 821bcd6456
commit 0859991c4b
1 changed files with 25 additions and 0 deletions

View File

@ -34,6 +34,9 @@
#include <cbmem.h> #include <cbmem.h>
#include <bootmem.h> #include <bootmem.h>
#include <spi_flash.h> #include <spi_flash.h>
#if CONFIG_USE_OPTION_TABLE
#include <option_table.h>
#endif
#if CONFIG_CHROMEOS #if CONFIG_CHROMEOS
#if CONFIG_HAVE_ACPI_TABLES #if CONFIG_HAVE_ACPI_TABLES
#include <arch/acpi.h> #include <arch/acpi.h>
@ -333,6 +336,26 @@ static struct lb_mainboard *lb_mainboard(struct lb_header *header)
return mainboard; return mainboard;
} }
#if CONFIG_USE_OPTION_TABLE
static struct cmos_checksum *lb_cmos_checksum(struct lb_header *header)
{
struct lb_record *rec;
struct cmos_checksum *cmos_checksum;
rec = lb_new_record(header);
cmos_checksum = (struct cmos_checksum *)rec;
cmos_checksum->tag = LB_TAG_OPTION_CHECKSUM;
cmos_checksum->size = (sizeof(*cmos_checksum));
cmos_checksum->range_start = LB_CKS_RANGE_START * 8;
cmos_checksum->range_end = ( LB_CKS_RANGE_END * 8 ) + 7;
cmos_checksum->location = LB_CKS_LOC * 8;
cmos_checksum->type = CHECKSUM_PCBIOS;
return cmos_checksum;
}
#endif
static void lb_strings(struct lb_header *header) static void lb_strings(struct lb_header *header)
{ {
static const struct { static const struct {
@ -435,6 +458,8 @@ unsigned long write_coreboot_table(
struct lb_record *rec_dest = lb_new_record(head); struct lb_record *rec_dest = lb_new_record(head);
/* Copy the option config table, it's already a lb_record... */ /* Copy the option config table, it's already a lb_record... */
memcpy(rec_dest, option_table, option_table->size); memcpy(rec_dest, option_table, option_table->size);
/* Create cmos checksum entry in coreboot table */
lb_cmos_checksum(head);
} else { } else {
printk(BIOS_ERR, "cmos_layout.bin could not be found!\n"); printk(BIOS_ERR, "cmos_layout.bin could not be found!\n");
} }