diff options
Diffstat (limited to 'meta-oe/recipes-devtools/pmtools')
-rw-r--r-- | meta-oe/recipes-devtools/pmtools/pmtools/pmtools-switch-to-dynamic-buffer-for-huge-ACPI-table.patch | 66 | ||||
-rw-r--r-- | meta-oe/recipes-devtools/pmtools/pmtools_git.bb | 4 |
2 files changed, 69 insertions, 1 deletions
diff --git a/meta-oe/recipes-devtools/pmtools/pmtools/pmtools-switch-to-dynamic-buffer-for-huge-ACPI-table.patch b/meta-oe/recipes-devtools/pmtools/pmtools/pmtools-switch-to-dynamic-buffer-for-huge-ACPI-table.patch new file mode 100644 index 0000000000..7ccdab0f22 --- /dev/null +++ b/meta-oe/recipes-devtools/pmtools/pmtools/pmtools-switch-to-dynamic-buffer-for-huge-ACPI-table.patch @@ -0,0 +1,66 @@ +From 03a886252f6555d6b0af76b654e76459642b89da Mon Sep 17 00:00:00 2001 +From: Yunguo Wei <yunguo.wei@windriver.com> +Date: Tue, 3 Dec 2013 18:12:50 +0800 +Subject: [PATCH] pmtools: switch to dynamic buffer for huge ACPI tables + +For servers like Canoe Pass or Thunder Ridge, there are much more +entries in ACPI table, so original 1K buffer is insufficient. + +We switch to dynamic buffer on this situation. + +Signed-off-by: Yunguo Wei <yunguo.wei@windriver.com> + + +Upstream-Status: Pending + +Signed-off-by: Kai Kang <kai.kang@windriver.com> +--- + madt/madt.c | 18 +++++++++++++++++- + 1 file changed, 17 insertions(+), 1 deletion(-) + +diff --git a/madt/madt.c b/madt/madt.c +index aed965c..8770cd5 100644 +--- a/madt/madt.c ++++ b/madt/madt.c +@@ -51,7 +51,9 @@ get_next_entry(acpi_table_entry_header * entry_header) + return retval; + } + +-u8 buffer[1024]; ++ ++u8 buf[1024]; ++u8 *buffer = buf; + + main() + { +@@ -75,6 +77,17 @@ main() + + if (verbose) printf("header.length %d\n", madt_header->header.length); + ++ /* if 1K buffer is insufficient for acpi table, switch to a larger memory buffer */ ++ if(expected_length > sizeof(buf)) { ++ buffer = malloc(expected_length); ++ if (!buffer) { ++ perror("malloc"); ++ exit(1); ++ } ++ memset(buffer, 0, expected_length); ++ memcpy(buffer, buf, sizeof(struct acpi_table_madt)); ++ } ++ + acpi_table_print((void*)&(buffer[bytes_read]), 0); + + bytes_read = sizeof(struct acpi_table_madt); +@@ -118,6 +131,9 @@ done: + printf("Checksum 0x%x != 0; 0x%x in header ERROR\n", csum, + madt_header->header.checksum); + ++ if(buffer != buf) ++ free(buffer); ++ + return 0; + } + +-- +1.8.1.2 + diff --git a/meta-oe/recipes-devtools/pmtools/pmtools_git.bb b/meta-oe/recipes-devtools/pmtools/pmtools_git.bb index 602da5e207..22ed8e2ff1 100644 --- a/meta-oe/recipes-devtools/pmtools/pmtools_git.bb +++ b/meta-oe/recipes-devtools/pmtools/pmtools_git.bb @@ -6,7 +6,9 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=0636e73ff0215e8d672dc4c32c317bb3" PV = "20130209+git${SRCPV}" -SRC_URI = "git://github.com/anyc/pmtools.git;protocol=https" +SRC_URI = "git://github.com/anyc/pmtools.git \ + file://pmtools-switch-to-dynamic-buffer-for-huge-ACPI-table.patch \ +" SRCREV = "3ebe0e54c54061b4c627236cbe35d820de2e1168" COMPATIBLE_HOST = "(i.86|x86_64).*-linux" |