diff options
author | Aaron Durbin <adurbin@chromium.org> | 2018-05-11 11:43:52 -0600 |
---|---|---|
committer | Subrata Banik <subrata.banik@intel.com> | 2018-05-11 18:16:13 +0000 |
commit | 44f80657fd513f91f87973407b3474ed9f634867 (patch) | |
tree | 44ed1b0ab69643a94ee1aece6d68c96c051cd307 /src/drivers/intel/gma | |
parent | f064c75ae20286e7d0cca341bb1b1918af4cf2a4 (diff) | |
download | coreboot-44f80657fd513f91f87973407b3474ed9f634867.tar.xz |
drivers/intel/gma: honor vbt_size parameter to locate_vbt()
In 4a3956d7 (drivers/intel/gma, soc/intel/common: improve
cooperation) the vbt_size parameter was not honored leading to
the use of unitialized variables from the caller. Instead, keep
track of if the vbt is already loaded by using the size returned
from the load. If it's non-zero the vbt has been loaded.
BUG=b:79562868
Change-Id: Ia1c47f0d982fae74e0223922f83943c68a846aa9
Signed-off-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-on: https://review.coreboot.org/26236
Reviewed-by: Furquan Shaikh <furquan@google.com>
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
Reviewed-by: Subrata Banik <subrata.banik@intel.com>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/drivers/intel/gma')
-rw-r--r-- | src/drivers/intel/gma/opregion.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/drivers/intel/gma/opregion.c b/src/drivers/intel/gma/opregion.c index c52c06f12b..70cbccc876 100644 --- a/src/drivers/intel/gma/opregion.c +++ b/src/drivers/intel/gma/opregion.c @@ -34,14 +34,17 @@ const char *mainboard_vbt_filename(void) } static char vbt_data[8 * KiB]; -static int vbt_data_used; +static size_t vbt_data_sz; void *locate_vbt(size_t *vbt_size) { uint32_t vbtsig = 0; - if (vbt_data_used == 1) + if (vbt_data_sz != 0) { + if (vbt_size) + *vbt_size = vbt_data_sz; return (void *)vbt_data; + } const char *filename = mainboard_vbt_filename(); @@ -62,7 +65,7 @@ void *locate_vbt(size_t *vbt_size) printk(BIOS_INFO, "Found a VBT of %zu bytes after decompression\n", file_size); - vbt_data_used = 1; + vbt_data_sz = file_size; return (void *)vbt_data; } |