Skip to content

Conversation

@bardliao
Copy link
Collaborator

Cache the kcontrol value in host. Always get kcontrol value from cache,
set kcontrol value to DSP when DSP is active. Kcontrol values will be
restored when DSP is boot.

Signed-off-by: Bard liao bard.liao@intel.com

Cache the kcontrol value in host. Always get kcontrol value from cache,
set kcontrol value to DSP when DSP is active. Kcontrol values will be
restored when DSP is boot.

Signed-off-by: Bard liao <bard.liao@intel.com>
@bardliao
Copy link
Collaborator Author

I verified volume kcontrol works fine. But I didn't test the binary type kcontro yet since l ave no idea how to test it. Sorry about that. The PR is for issue #166

@bardliao bardliao closed this Sep 28, 2018
@lgirdwood
Copy link
Member

@singalsu can help you with testing it using new soft equctl cmd line program.

@singalsu
Copy link

singalsu commented Sep 28, 2018

OK, I'll try this PR #168.

@singalsu
Copy link

singalsu commented Sep 28, 2018

Here's some results. Generally the ext bytes put seems to work. The 1st sof-eqctl activated a bandpass response that was audible. Though the 1st command returned fail that should not happen when things are correct.

Ext bytes get doesn't work in idle nor active during playback. The 1st read effort was done in idle and the 2nd while music was playing. Though I've seen with these controls that a single fail will make next control efforts fail too and I don't know why. When success it should show the previously applied filter coefficients.

The last ext bytes put had also impact (I heard bassboost) even if TLV Write claimed fail.

singalsu@piikkisika:~/bin$ ./sof-eqctl -n 22 -s eq_iir_bandpass.txt 
Applying configuration "eq_iir_bandpass.txt" into device hw:0 control numid=22.
84,2,1,0,0,2,2,3316150158,2048164275,513807534,3267352229,513807534,0,16384,3867454526,1191025347,38870735,77741469,38870735,4294967294,16458
Error: failed TLV write.
singalsu@piikkisika:~/bin$ ./sof-eqctl -n 22
Retrieving configuration for device hw:0 control numid=22.
Error: failed TLV read.
singalsu@piikkisika:~/bin$ ./sof-eqctl -n 22
Retrieving configuration for device hw:0 control numid=22.
Error: failed TLV read.
singalsu@piikkisika:~/bin$ ./sof-eqctl -n 22 -s eq_iir_bassboost.txt 
Applying configuration "eq_iir_bassboost.txt" into device hw:0 control numid=22.
84,2,1,0,0,2,2,3227172081,2141520527,536653443,3221660410,536653443,0,16384,3260252783,2107733822,161646111,3961037800,172645501,4294967294,27910
Error: failed TLV write.
singalsu@piikkisika:~/bin$ ./sof-eqctl -n 22
Retrieving configuration for device hw:0 control numid=22.
Error: failed TLV read.

@singalsu
Copy link

You can get this tool into SOFT from PR #74. It works with already merged SOFT/topology/sof-apl-eq-pcm512x.tplg.

@ranj063
Copy link
Collaborator

ranj063 commented Sep 28, 2018

@bardliao one thing to also keep in mind is that when you make a change to the kcontrol through amixer put(), it is always followed by a get(). So it might be necessary to also check the the runtime status in get().

@bardliao
Copy link
Collaborator Author

bardliao commented Sep 29, 2018

@singalsu @lgirdwood @ranj063 Thanks Seppo, I can test it on my side now. The error is due to uninitialized return value ret. I.e ret is not assigned to 0 when it is declared. So the byte _put/_get function return an unexpected value. Initialize int ret = 0; can fix the issue. But I see ipc error when the control is set in playback.
error: ipc error for 0x50030000 size 0x180
error: failed to set control 0 values
It shows the same ipc error if I revert my patch. So, I think it is not cause by my patch. Probably some patches are not merged on my side yet.

bardliao pushed a commit that referenced this pull request Jun 11, 2019
BugLink: https://bugs.launchpad.net/bugs/1821607

commit 401e7e8 upstream.

When we excute the following commands, we got oops
rmmod ipmi_si
cat /proc/ioports

[ 1623.482380] Unable to handle kernel paging request at virtual address ffff00000901d478
[ 1623.482382] Mem abort info:
[ 1623.482383]   ESR = 0x96000007
[ 1623.482385]   Exception class = DABT (current EL), IL = 32 bits
[ 1623.482386]   SET = 0, FnV = 0
[ 1623.482387]   EA = 0, S1PTW = 0
[ 1623.482388] Data abort info:
[ 1623.482389]   ISV = 0, ISS = 0x00000007
[ 1623.482390]   CM = 0, WnR = 0
[ 1623.482393] swapper pgtable: 4k pages, 48-bit VAs, pgdp = 00000000d7d94a66
[ 1623.482395] [ffff00000901d478] pgd=000000dffbfff003, pud=000000dffbffe003, pmd=0000003f5d06e003, pte=0000000000000000
[ 1623.482399] Internal error: Oops: 96000007 [#1] SMP
[ 1623.487407] Modules linked in: ipmi_si(E) nls_utf8 isofs rpcrdma ib_iser ib_srpt target_core_mod ib_srp scsi_transport_srp ib_ipoib rdma_ucm ib_umad rdma_cm ib_cm dm_mirror dm_region_hash dm_log iw_cm dm_mod aes_ce_blk crypto_simd cryptd aes_ce_cipher ses ghash_ce sha2_ce enclosure sha256_arm64 sg sha1_ce hisi_sas_v2_hw hibmc_drm sbsa_gwdt hisi_sas_main ip_tables mlx5_ib ib_uverbs marvell ib_core mlx5_core ixgbe mdio hns_dsaf ipmi_devintf hns_enet_drv ipmi_msghandler hns_mdio [last unloaded: ipmi_si]
[ 1623.532410] CPU: 30 PID: 11438 Comm: cat Kdump: loaded Tainted: G            E     5.0.0-rc3+ #168
[ 1623.541498] Hardware name: Huawei TaiShan 2280 /BC11SPCD, BIOS 1.37 11/21/2017
[ 1623.548822] pstate: a0000005 (NzCv daif -PAN -UAO)
[ 1623.553684] pc : string+0x28/0x98
[ 1623.557040] lr : vsnprintf+0x368/0x5e8
[ 1623.560837] sp : ffff000013213a80
[ 1623.564191] x29: ffff000013213a80 x28: ffff00001138abb5
[ 1623.569577] x27: ffff000013213c18 x26: ffff805f67d06049
[ 1623.574963] x25: 0000000000000000 x24: ffff00001138abb5
[ 1623.580349] x23: 0000000000000fb7 x22: ffff0000117ed000
[ 1623.585734] x21: ffff000011188fd8 x20: ffff805f67d07000
[ 1623.591119] x19: ffff805f67d06061 x18: ffffffffffffffff
[ 1623.596505] x17: 0000000000000200 x16: 0000000000000000
[ 1623.601890] x15: ffff0000117ed748 x14: ffff805f67d07000
[ 1623.607276] x13: ffff805f67d0605e x12: 0000000000000000
[ 1623.612661] x11: 0000000000000000 x10: 0000000000000000
[ 1623.618046] x9 : 0000000000000000 x8 : 000000000000000f
[ 1623.623432] x7 : ffff805f67d06061 x6 : fffffffffffffffe
[ 1623.628817] x5 : 0000000000000012 x4 : ffff00000901d478
[ 1623.634203] x3 : ffff0a00ffffff04 x2 : ffff805f67d07000
[ 1623.639588] x1 : ffff805f67d07000 x0 : ffffffffffffffff
[ 1623.644974] Process cat (pid: 11438, stack limit = 0x000000008d4cbc10)
[ 1623.651592] Call trace:
[ 1623.654068]  string+0x28/0x98
[ 1623.657071]  vsnprintf+0x368/0x5e8
[ 1623.660517]  seq_vprintf+0x70/0x98
[ 1623.668009]  seq_printf+0x7c/0xa0
[ 1623.675530]  r_show+0xc8/0xf8
[ 1623.682558]  seq_read+0x330/0x440
[ 1623.689877]  proc_reg_read+0x78/0xd0
[ 1623.697346]  __vfs_read+0x60/0x1a0
[ 1623.704564]  vfs_read+0x94/0x150
[ 1623.711339]  ksys_read+0x6c/0xd8
[ 1623.717939]  __arm64_sys_read+0x24/0x30
[ 1623.725077]  el0_svc_common+0x120/0x148
[ 1623.732035]  el0_svc_handler+0x30/0x40
[ 1623.738757]  el0_svc+0x8/0xc
[ 1623.744520] Code: d1000406 aa0103e2 54000149 b4000080 (39400085)
[ 1623.753441] ---[ end trace f91b6a4937de9835 ]---
[ 1623.760871] Kernel panic - not syncing: Fatal exception
[ 1623.768935] SMP: stopping secondary CPUs
[ 1623.775718] Kernel Offset: disabled
[ 1623.781998] CPU features: 0x002,21006008
[ 1623.788777] Memory Limit: none
[ 1623.798329] Starting crashdump kernel...
[ 1623.805202] Bye!

If io_setup is called successful in try_smi_init() but try_smi_init()
goes out_err before calling ipmi_register_smi(), so ipmi_unregister_smi()
will not be called while removing module. It leads to the resource that
allocated in io_setup() can not be freed, but the name(DEVICE_NAME) of
resource is freed while removing the module. It causes use-after-free
when cat /proc/ioports.

Fix this by calling io_cleanup() while try_smi_init() goes to out_err.
and don't call io_cleanup() until io_setup() returns successful to avoid
warning prints.

Fixes: 93c303d ("ipmi_si: Clean up shutdown a bit")
Cc: stable@vger.kernel.org
Reported-by: NuoHan Qiao <qiaonuohan@huawei.com>
Suggested-by: Corey Minyard <cminyard@mvista.com>
Signed-off-by: Yang Yingliang <yangyingliang@huawei.com>
Signed-off-by: Corey Minyard <cminyard@mvista.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

Signed-off-by: Seth Forshee <seth.forshee@canonical.com>
aiChaoSONG pushed a commit to aiChaoSONG/linux that referenced this pull request May 6, 2021
README.md: Link to mailing list archive
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants