[PATCH v2] drm/amdgpu: expose amdgpu_sensors on pre-powerplay chips

Tom St Denis tom.stdenis at amd.com
Tue Feb 14 16:41:18 UTC 2017


On 14/02/17 10:08 AM, Samuel Pitoiset wrote:
> Totally untested but as long as read_sensor() has been recently
> implemented for dpm based boards, amdgpu_sensors can now be
> exposed.
>
> v2: - make sure read_sensor is not NULL on dpm chips
>     - keep sanity check for powerplay chips
>
> Cc: Tom St Denis <tom.stdenis at amd.com>
> Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
> ---
>  drivers/gpu/drm/amd/amdgpu/amdgpu_device.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> index 6f021e70f15f..80821b436aeb 100644
> --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_device.c
> @@ -3204,6 +3204,9 @@ static ssize_t amdgpu_debugfs_sensor_read(struct file *f, char __user *buf,
>  	valuesize = sizeof(values);
>  	if (adev->powerplay.pp_funcs && adev->powerplay.pp_funcs->read_sensor)
>  		r = adev->powerplay.pp_funcs->read_sensor(adev->powerplay.pp_handle, idx, &values[0], &valuesize);
> +	else if (adev->pm.funcs && adev->pm.funcs->read_sensor)
> +		r = adev->pm.funcs->read_sensor(adev, idx, &values[0],
> +						&valuesize);
>  	else
>  		return -EINVAL;
>
>

Sorry NAK again, even with dpm=0 those function pointers are set and you 
end up inside the dpm code trying to parse data structures that aren't 
initialized.

For instance, this oops on my Kaveri when trying to read SCLK.

[  729.616382] BUG: unable to handle kernel NULL pointer dereference at 
00000000000000c4
[  729.616467] IP: [<ffffffffc0e62d40>] kv_dpm_read_sensor+0xa0/0xd0 
[amdgpu]
[  729.616619] PGD 232c58067
[  729.616644] PUD 232c4f067
[  729.616670] PMD 0

[  729.616697] Oops: 0000 [#1] SMP
[  729.616726] Modules linked in: fuse amdkfd amd_iommu_v2 amdgpu 
i2c_algo_bit ttm drm_kms_helper drm xt_CHECKSUM iptable_mangle 
ipt_MASQUERADE nf_nat_masquerade_ipv4 iptable_nat nf_nat_ipv4 nf_nat 
nf_conntrack_ipv4 nf_defrag_ipv4 xt_conntrack nf_conntrack tun bridge 
ebtable_filter ebtables ip6table_filter ip6_tables rpcsec_gss_krb5 nfsv4 
dns_resolver nfs fscache bnep vfat fat edac_mce_amd arc4 edac_core 
kvm_amd iwlmvm snd_hda_codec_realtek mac80211 kvm snd_hda_codec_generic 
snd_hda_codec_hdmi snd_hda_intel snd_hda_codec snd_hda_core btusb btrtl 
btbcm btintel iwlwifi bluetooth snd_hwdep cfg80211 snd_seq 
snd_seq_device snd_pcm irqbypass joydev snd_timer snd crct10dif_pclmul 
crc32_pclmul pcspkr ghash_clmulni_intel rfkill fam15h_power sp5100_tco 
k10temp soundcore acpi_cpufreq tpm_tis i2c_piix4 tpm_tis_core
[  729.617499]  shpchp video tpm nfsd auth_rpcgss nfs_acl lockd grace 
sunrpc ata_generic pata_acpi 8021q crc32c_intel garp stp llc serio_raw 
mrp pata_atiixp r8169 mii fjes
[  729.617672] CPU: 0 PID: 1417 Comm: umr Not tainted 4.9.0+ #4
[  729.617720] Hardware name: Gigabyte Technology Co., Ltd. To be filled 
by O.E.M./F2A88XN-WIFI, BIOS F5 04/22/2015
[  729.617802] task: ffff8e43ef37d880 task.stack: ffff9d7501594000
[  729.617852] RIP: 0010:[<ffffffffc0e62d40>]  [<ffffffffc0e62d40>] 
kv_dpm_read_sensor+0xa0/0xd0 [amdgpu]
[  729.618000] RSP: 0018:ffff9d7501597d60  EFLAGS: 00010246
[  729.618046] RAX: 0000000000000000 RBX: ffff9d7501597d98 RCX: 
0000000000000000
[  729.618104] RDX: 0000000000000000 RSI: 0000000000000286 RDI: 
0000000000000286
[  729.618162] RBP: ffff9d7501597d80 R08: 0000000000000000 R09: 
0000000000000000
[  729.618221] R10: 0000000000000000 R11: ffff8e43ef37d880 R12: 
ffff9d7501597d98
[  729.618285] R13: 0000000000000000 R14: ffff9d7501597d94 R15: 
0000000000000000
[  729.618344] FS:  00007f6525bfd700(0000) GS:ffff8e43fec00000(0000) 
knlGS:0000000000000000
[  729.618411] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
[  729.618458] CR2: 00000000000000c4 CR3: 00000002261f6000 CR4: 
00000000000406f0
[  729.618515] Stack:
[  729.618535]  0000000000000004 00007ffe1e85ca00 ffff8e43f3162100 
0000000000000004
[  729.618607]  ffff9d7501597df8 ffffffffc0e2c637 000000401e85ca00 
ffff9d7501597f18
[  729.618676]  ffff9d7501597df8 ffffffffc0e2dc7d 0000000000005403 
0000000000000000
[  729.618747] Call Trace:
[  729.618826]  [<ffffffffc0e2c637>] 
amdgpu_debugfs_sensor_read+0xf7/0x120 [amdgpu]
[  729.618938]  [<ffffffffc0e2dc7d>] ? 
amdgpu_debugfs_regs_read+0x17d/0x220 [amdgpu]
[  729.619002]  [<ffffffff8f3433e4>] full_proxy_read+0x54/0x90
[  729.619049]  [<ffffffff8f24be67>] __vfs_read+0x37/0x150
[  729.619095]  [<ffffffff8f35e67b>] ? security_file_permission+0x9b/0xc0
[  729.621382]  [<ffffffff8f24cfe6>] vfs_read+0x96/0x130
[  729.622997]  [<ffffffff8f24e4d5>] SyS_read+0x55/0xc0
[  729.624540]  [<ffffffff8f8010b7>] entry_SYSCALL_64_fastpath+0x1a/0xa9
[  729.626139] Code: 24 31 c0 41 c7 06 04 00 00 00 41 5c 41 5d 41 5e 41 
5f 5d c3 c1 e8 10 83 e0 1f 83 f8 07 77 ad 48 8d 14 c5 00 00 00 00 5b 48 
29 c2 <41> 8b 84 95 c4 00 00 00 0f c8 41 89 04 24 41 c7 06 04 00 00 00



More information about the amd-gfx mailing list