diff options
author | Vijayakumar <vsubbu@nvidia.com> | 2017-03-16 13:01:09 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-03-22 20:56:33 -0400 |
commit | 29d214774458051fa2836c83943b542856184821 (patch) | |
tree | f5d3e2229c48ab5c602321c8470d72d949696513 /drivers/gpu/nvgpu/pmgr | |
parent | 971a3c8050184f1defa894310cd572e41b3adc65 (diff) |
gpu: nvgpu: adapt pwrpolicy code to vbios changes
VBIOS might change size of the power policy table and add new fields.
So driver should validate a minimum size, not absolute size.
Also driver should use header size from data read from vbios
to parse the table further.
bug 200287822
Change-Id: Ica60de444c3f81cbf61af8684ce4e32ae288188d
Signed-off-by: Vijayakumar <vsubbu@nvidia.com>
Reviewed-on: http://git-master/r/1322242
Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com>
Reviewed-by: Thomas Fleury <tfleury@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/pmgr')
-rw-r--r-- | drivers/gpu/nvgpu/pmgr/pwrpolicy.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/gpu/nvgpu/pmgr/pwrpolicy.c b/drivers/gpu/nvgpu/pmgr/pwrpolicy.c index 4c007337..c2053469 100644 --- a/drivers/gpu/nvgpu/pmgr/pwrpolicy.c +++ b/drivers/gpu/nvgpu/pmgr/pwrpolicy.c | |||
@@ -543,7 +543,7 @@ static u32 devinit_get_pwr_policy_table(struct gk20a *g, | |||
543 | goto done; | 543 | goto done; |
544 | } | 544 | } |
545 | 545 | ||
546 | if (packed_hdr->table_entry_size != | 546 | if (packed_hdr->table_entry_size < |
547 | VBIOS_POWER_POLICY_3X_ENTRY_SIZE_2E) { | 547 | VBIOS_POWER_POLICY_3X_ENTRY_SIZE_2E) { |
548 | status = -EINVAL; | 548 | status = -EINVAL; |
549 | goto done; | 549 | goto done; |
@@ -552,7 +552,7 @@ static u32 devinit_get_pwr_policy_table(struct gk20a *g, | |||
552 | /* unpack power policy table header */ | 552 | /* unpack power policy table header */ |
553 | devinit_unpack_pwr_policy_header(&hdr, packed_hdr); | 553 | devinit_unpack_pwr_policy_header(&hdr, packed_hdr); |
554 | 554 | ||
555 | ptr += VBIOS_POWER_POLICY_3X_HEADER_SIZE_25; | 555 | ptr += (u32)hdr.header_size; |
556 | 556 | ||
557 | for (index = 0; index < hdr.num_table_entries; | 557 | for (index = 0; index < hdr.num_table_entries; |
558 | index++, ptr += (u32)hdr.table_entry_size) { | 558 | index++, ptr += (u32)hdr.table_entry_size) { |