diff options
| author | Eliot Courtney <ecourtney@nvidia.com> | 2026-05-25 16:57:27 +0300 |
|---|---|---|
| committer | Danilo Krummrich <dakr@kernel.org> | 2026-05-25 17:30:34 +0300 |
| commit | 8cf15cf2641be8a786e4c7b5bd1f7f5cf640889f (patch) | |
| tree | b2d636a8102836d9d4f33f9fa6fba2b1c242168a | |
| parent | 56f7c0b3800e730df0f290e0f36d7f0d664cb66b (diff) | |
| download | linux-8cf15cf2641be8a786e4c7b5bd1f7f5cf640889f.tar.xz | |
gpu: nova-core: vbios: keep PmuLookupTable local in setup_falcon_data
This does not need to be stored in `FwSecBiosBuilder` so we can remove
it from there, and just create and use it locally in
`setup_falcon_data`.
Reviewed-by: Joel Fernandes <joelagnelf@nvidia.com>
Reviewed-by: John Hubbard <jhubbard@nvidia.com>
Signed-off-by: Eliot Courtney <ecourtney@nvidia.com>
Link: https://patch.msgid.link/20260525-fix-vbios-v5-9-e5e455251537@nvidia.com
Signed-off-by: Danilo Krummrich <dakr@kernel.org>
| -rw-r--r-- | drivers/gpu/nova-core/vbios.rs | 25 |
1 files changed, 6 insertions, 19 deletions
diff --git a/drivers/gpu/nova-core/vbios.rs b/drivers/gpu/nova-core/vbios.rs index 8a0e16e6c9e8..cadc6dcffefb 100644 --- a/drivers/gpu/nova-core/vbios.rs +++ b/drivers/gpu/nova-core/vbios.rs @@ -338,7 +338,6 @@ impl Vbios { Ok(BiosImageType::FwSec) => { let fwsec = FwSecBiosBuilder { base: image, - pmu_lookup_table: None, falcon_ucode_offset: None, }; if first_fwsec_image.is_none() { @@ -711,8 +710,6 @@ struct FwSecBiosBuilder { /// Once FwSecBiosBuilder is constructed, the `falcon_ucode_offset` will be copied into a new /// [`FwSecBiosImage`]. /// - /// The [`PmuLookupTable`] starts at the offset of the falcon data pointer. - pmu_lookup_table: Option<PmuLookupTable>, /// The offset of the Falcon ucode. falcon_ucode_offset: Option<usize>, } @@ -1012,24 +1009,14 @@ impl FwSecBiosBuilder { offset -= first_fwsec.base.data.len(); } - if pmu_in_first_fwsec { - self.pmu_lookup_table = Some(PmuLookupTable::new( - &self.base.dev, - &first_fwsec.base.data[offset..], - )?); + let pmu_lookup_data = if pmu_in_first_fwsec { + &first_fwsec.base.data[offset..] } else { - self.pmu_lookup_table = Some(PmuLookupTable::new( - &self.base.dev, - &self.base.data[offset..], - )?); - } + self.base.data.get(offset..).ok_or(EINVAL)? + }; + let pmu_lookup_table = PmuLookupTable::new(&self.base.dev, pmu_lookup_data)?; - match self - .pmu_lookup_table - .as_ref() - .ok_or(EINVAL)? - .find_entry_by_type(FALCON_UCODE_ENTRY_APPID_FWSEC_PROD) - { + match pmu_lookup_table.find_entry_by_type(FALCON_UCODE_ENTRY_APPID_FWSEC_PROD) { Ok(entry) => { self.falcon_ucode_offset = Some( usize::from_safe_cast(entry.data) |
