diff options
author | Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> | 2014-03-05 00:16:16 +0000 |
---|---|---|
committer | Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net> | 2014-03-05 00:16:16 +0000 |
commit | 43eac0394591a4f662d2793e8405226c3c69fdc4 (patch) | |
tree | 4c51123a51fc9f3810ea6d646fbd453fd647b6b7 /cbtable.c | |
parent | 309dd2c7c24b8656ca50be5ab0ca3dc74d9c5eda (diff) | |
download | flashrom-43eac0394591a4f662d2793e8405226c3c69fdc4.tar.gz flashrom-43eac0394591a4f662d2793e8405226c3c69fdc4.tar.bz2 flashrom-43eac0394591a4f662d2793e8405226c3c69fdc4.zip |
Clean up physmap, fix unaligned mapping problems
Convert all physmaps in dmi.c to use aligned readonly maps.
Convert all physmaps in cbtable.c to use unaligned readonly maps.
Make physunmap() a generic architecture-independent wrapper.
Add physunmap_unaligned() to complement physmap*_unaligned().
Corresponding to flashrom svn r1765.
Signed-off-by: Carl-Daniel Hailfinger <c-d.hailfinger.devel.2006@gmx.net>
Acked-by: Stefan Tauner <stefan.tauner@alumni.tuwien.ac.at>
Diffstat (limited to 'cbtable.c')
-rw-r--r-- | cbtable.c | 7 |
1 files changed, 4 insertions, 3 deletions
@@ -261,7 +261,7 @@ int cb_parse_table(const char **vendor, const char **model) #else start = 0x0; #endif - table_area = physmap_ro("low megabyte", start, BYTES_TO_MAP - start); + table_area = physmap_ro_unaligned("low megabyte", start, BYTES_TO_MAP - start); if (ERROR_PTR == table_area) { msg_perr("Failed getting access to coreboot low tables.\n"); return -1; @@ -276,8 +276,9 @@ int cb_parse_table(const char **vendor, const char **model) if (forward->tag == LB_TAG_FORWARD) { start = forward->forward; start &= ~(getpagesize() - 1); - physunmap(table_area, BYTES_TO_MAP); - table_area = physmap_ro("high tables", start, BYTES_TO_MAP); + physunmap_unaligned(table_area, BYTES_TO_MAP); + // FIXME: table_area is never unmapped below, nor is it unmapped above in the no-forward case + table_area = physmap_ro_unaligned("high tables", start, BYTES_TO_MAP); if (ERROR_PTR == table_area) { msg_perr("Failed getting access to coreboot high tables.\n"); return -1; |