summaryrefslogtreecommitdiffstats
path: root/resources/libreboot/patch/kgpe-d16/0001-util-cbmem-Fix-failure-with-certain-cbmem-base-align.patch
diff options
context:
space:
mode:
Diffstat (limited to 'resources/libreboot/patch/kgpe-d16/0001-util-cbmem-Fix-failure-with-certain-cbmem-base-align.patch')
-rw-r--r--resources/libreboot/patch/kgpe-d16/0001-util-cbmem-Fix-failure-with-certain-cbmem-base-align.patch205
1 files changed, 0 insertions, 205 deletions
diff --git a/resources/libreboot/patch/kgpe-d16/0001-util-cbmem-Fix-failure-with-certain-cbmem-base-align.patch b/resources/libreboot/patch/kgpe-d16/0001-util-cbmem-Fix-failure-with-certain-cbmem-base-align.patch
deleted file mode 100644
index 84c51ba..0000000
--- a/resources/libreboot/patch/kgpe-d16/0001-util-cbmem-Fix-failure-with-certain-cbmem-base-align.patch
+++ /dev/null
@@ -1,205 +0,0 @@
-From 4e0a69562a189e9abe06979a993f50e3f0b2069b Mon Sep 17 00:00:00 2001
-From: Timothy Pearson <kb9vqf@pearsoncomputing.net>
-Date: Sat, 5 Sep 2015 18:07:17 -0500
-Subject: [PATCH 001/146] util/cbmem: Fix failure with certain cbmem base
- alignments
-
----
- util/cbmem/cbmem.c | 61 ++++++++++++++++++++++++++++++++--------------------
- 1 file changed, 38 insertions(+), 23 deletions(-)
-
-diff --git a/util/cbmem/cbmem.c b/util/cbmem/cbmem.c
-index 74cb52d..69ffbaf 100644
---- a/util/cbmem/cbmem.c
-+++ b/util/cbmem/cbmem.c
-@@ -2,6 +2,7 @@
- * This file is part of the coreboot project.
- *
- * Copyright 2012 Google Inc.
-+ * Copyright (C) 2015 Timothy Pearson <tpearson@raptorengineeringinc.com>, Raptor Engineering
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
-@@ -103,8 +104,7 @@ static void unmap_memory(void)
- if (size_to_mib(mapped_size) == 0) {
- debug("Unmapping %zuMB of virtual memory at %p.\n",
- size_to_mib(mapped_size), mapped_virtual);
-- }
-- else {
-+ } else {
- debug("Unmapping %zuMB of virtual memory at %p.\n",
- size_to_mib(mapped_size), mapped_virtual);
- }
-@@ -113,7 +113,7 @@ static void unmap_memory(void)
- mapped_size = 0;
- }
-
--static void *map_memory_size(u64 physical, size_t size)
-+static void *map_memory_size(u64 physical, size_t size, uint8_t abort_on_failure)
- {
- void *v;
- off_t p;
-@@ -131,8 +131,7 @@ static void *map_memory_size(u64 physical, size_t size)
- if (size_to_mib(size) == 0) {
- debug("Mapping %zuB of physical memory at 0x%jx (requested 0x%jx).\n",
- size, (intmax_t)p, (intmax_t)physical);
-- }
-- else {
-+ } else {
- debug("Mapping %zuMB of physical memory at 0x%jx (requested 0x%jx).\n",
- size_to_mib(size), (intmax_t)p, (intmax_t)physical);
- }
-@@ -153,9 +152,13 @@ static void *map_memory_size(u64 physical, size_t size)
- }
-
- if (v == MAP_FAILED) {
-- fprintf(stderr, "Failed to mmap /dev/mem: %s\n",
-- strerror(errno));
-- exit(1);
-+ if (abort_on_failure) {
-+ fprintf(stderr, "Failed to mmap /dev/mem: %s\n",
-+ strerror(errno));
-+ exit(1);
-+ } else {
-+ return 0;
-+ }
- }
-
- /* Remember what we actually mapped ... */
-@@ -173,7 +176,7 @@ static void *map_memory_size(u64 physical, size_t size)
-
- static void *map_memory(u64 physical)
- {
-- return map_memory_size(physical, MAP_BYTES);
-+ return map_memory_size(physical, MAP_BYTES, 1);
- }
-
- /*
-@@ -210,14 +213,16 @@ static struct lb_cbmem_ref parse_cbmem_ref(struct lb_cbmem_ref *cbmem_ref)
- return ret;
- }
-
--static int parse_cbtable(u64 address, size_t table_size)
-+static int parse_cbtable(u64 address, size_t table_size, uint8_t abort_on_failure)
- {
-- int i, found = 0;
-+ int i, found, ret = 0;
- void *buf;
-
- debug("Looking for coreboot table at %" PRIx64 " %zd bytes.\n",
- address, table_size);
-- buf = map_memory_size(address, table_size);
-+ buf = map_memory_size(address, table_size, abort_on_failure);
-+ if (!buf)
-+ return -2;
-
- /* look at every 16 bytes within 4K of the base */
-
-@@ -283,7 +288,17 @@ static int parse_cbtable(u64 address, size_t table_size)
- *(struct lb_forward *) lbr_p;
- debug(" Found forwarding entry.\n");
- unmap_memory();
-- return parse_cbtable(lbf_p.forward, table_size);
-+ ret = parse_cbtable(lbf_p.forward, table_size, 0);
-+ if (ret == -2) {
-+ /* try again with a smaller memory mapping request */
-+ ret = parse_cbtable(lbf_p.forward, table_size / 2, 1);
-+ if (ret == -2)
-+ exit(1);
-+ else
-+ return ret;
-+ } else {
-+ return ret;
-+ }
- }
- default:
- break;
-@@ -544,7 +559,7 @@ static void dump_timestamps(int mach_readable)
- }
-
- size = sizeof(*tst_p);
-- tst_p = map_memory_size((unsigned long)timestamps.cbmem_addr, size);
-+ tst_p = map_memory_size((unsigned long)timestamps.cbmem_addr, size, 1);
-
- timestamp_set_tick_freq(tst_p->tick_freq_mhz);
-
-@@ -553,7 +568,7 @@ static void dump_timestamps(int mach_readable)
- size += tst_p->num_entries * sizeof(tst_p->entries[0]);
-
- unmap_memory();
-- tst_p = map_memory_size((unsigned long)timestamps.cbmem_addr, size);
-+ tst_p = map_memory_size((unsigned long)timestamps.cbmem_addr, size, 1);
-
- /* Report the base time within the table. */
- prev_stamp = 0;
-@@ -604,7 +619,7 @@ static void dump_console(void)
- }
-
- console_p = map_memory_size((unsigned long)console.cbmem_addr,
-- 2 * sizeof(uint32_t));
-+ 2 * sizeof(uint32_t), 1);
- /* The in-memory format of the console area is:
- * u32 size
- * u32 cursor
-@@ -626,7 +641,7 @@ static void dump_console(void)
- }
-
- console_p = map_memory_size((unsigned long)console.cbmem_addr,
-- size + sizeof(size) + sizeof(cursor));
-+ size + sizeof(size) + sizeof(cursor), 1);
- memcpy(console_c, console_p + 8, size);
- console_c[size] = 0;
- console_c[cursor] = 0;
-@@ -647,7 +662,7 @@ static void hexdump(unsigned long memory, int length)
- uint8_t *m;
- int all_zero = 0;
-
-- m = map_memory_size((intptr_t)memory, length);
-+ m = map_memory_size((intptr_t)memory, length, 1);
-
- if (length > MAP_BYTES) {
- printf("Truncating hex dump from %d to %d bytes\n\n",
-@@ -803,7 +818,7 @@ static void dump_cbmem_toc(void)
-
- start = unpack_lb64(cbmem.start);
-
-- cbmem_area = map_memory_size(start, unpack_lb64(cbmem.size));
-+ cbmem_area = map_memory_size(start, unpack_lb64(cbmem.size), 1);
- entries = (struct cbmem_entry *)cbmem_area;
-
- if (entries[0].magic == CBMEM_MAGIC) {
-@@ -814,12 +829,12 @@ static void dump_cbmem_toc(void)
- rootptr -= sizeof(struct cbmem_root_pointer);
- unmap_memory();
- struct cbmem_root_pointer *r =
-- map_memory_size(rootptr, sizeof(*r));
-+ map_memory_size(rootptr, sizeof(*r), 1);
- if (r->magic == CBMEM_POINTER_MAGIC) {
- struct cbmem_root *root;
- uint64_t rootaddr = rootptr + r->root_offset;
- unmap_memory();
-- root = map_memory_size(rootaddr, ROOT_MIN_SIZE);
-+ root = map_memory_size(rootaddr, ROOT_MIN_SIZE, 1);
- dump_dynamic_cbmem_toc(root);
- } else
- fprintf(stderr, "No valid coreboot CBMEM root pointer found.\n");
-@@ -1205,14 +1220,14 @@ int main(int argc, char** argv)
- dtbuffer++;
- }
-
-- parse_cbtable(baseaddr, cb_table_size);
-+ parse_cbtable(baseaddr, cb_table_size, 1);
- #else
- int j;
- static const int possible_base_addresses[] = { 0, 0xf0000 };
-
- /* Find and parse coreboot table */
- for (j = 0; j < ARRAY_SIZE(possible_base_addresses); j++) {
-- if (parse_cbtable(possible_base_addresses[j], MAP_BYTES))
-+ if (parse_cbtable(possible_base_addresses[j], MAP_BYTES, 1))
- break;
- }
- #endif
---
-1.7.9.5
-