summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/pmgr/pwrpolicy.c
diff options
context:
space:
mode:
authorVijayakumar <vsubbu@nvidia.com>2017-03-16 13:01:09 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-03-22 20:56:33 -0400
commit29d214774458051fa2836c83943b542856184821 (patch)
treef5d3e2229c48ab5c602321c8470d72d949696513 /drivers/gpu/nvgpu/pmgr/pwrpolicy.c
parent971a3c8050184f1defa894310cd572e41b3adc65 (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/pwrpolicy.c')
-rw-r--r--drivers/gpu/nvgpu/pmgr/pwrpolicy.c4
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) {