Re: [PATCH] drm/amdgpu: fix sysfs ip base addr for 64bit in standalone mode
Alex Deucher <[email protected]>
| Newsgroups | org.freedesktop.lists.amd-gfx |
|---|---|
| Message-ID | <CADnq5_PAAhPq=g5PDEqPKcVfVbRmxngzodu3m3JBZSMm0TTdgg@mail.gmail.com> |
On Thu, Aug 13, 2026 at 11:20 AM Mukul Joshi <[email protected]> wrote: > > In standalone mode the ip_discovery sysfs tree is built from a verbatim > copy of the discovery binary taken before reg_base_init() collapses the > 64bit base addresses in place. Decoding as 32bit there yields interleaved > zeros. Decode base_address_64[] in that case; keep reading the already > collapsed adev->discovery.bin as-is otherwise. > > Fixes: 3ee1065e9830 ("drm/amdgpu: Export ip_discovery sysfs on probe failure") > Signed-off-by: Mukul Joshi <[email protected]> Acked-by: Alex Deucher <[email protected]> > --- > drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c | 15 +++++++++++++-- > 1 file changed, 13 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c > index b5bc0d71653d..8745b0a66f1d 100644 > --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c > +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_discovery.c > @@ -1308,8 +1308,19 @@ static int amdgpu_discovery_sysfs_ips(struct amdgpu_device *adev, > ip_hw_instance->num_instance); > ip_hw_instance->num_base_addresses = ip->num_base_address; > > - for (kk = 0; kk < ip_hw_instance->num_base_addresses; kk++) > - ip_hw_instance->base_addr[kk] = ip->base_address[kk]; > + for (kk = 0; kk < ip_hw_instance->num_base_addresses; kk++) { > + /* > + * Standalone mode uses a raw copy of the discovery > + * binary; decode 64-bit addresses here. The shared > + * bin is already collapsed to 32-bit in place. > + */ > + if (reg_base_64 && ip_top->standalone_mode) > + ip_hw_instance->base_addr[kk] = > + lower_32_bits(le64_to_cpu(ip->base_address_64[kk])) & 0x3FFFFFFF; > + else > + ip_hw_instance->base_addr[kk] = > + le32_to_cpu(ip->base_address[kk]); > + } > > kobject_init(&ip_hw_instance->kobj, &ip_hw_instance_ktype); > ip_hw_instance->kobj.kset = &ip_hw_id->hw_id_kset; > -- > 2.54.0 >