From: Takashi Iwai <tiwai@suse.de>
To: Dominik Brodowski <linux@dominikbrodowski.net>
Cc: peter.ujfalusi@linux.intel.com, lgirdwood@gmail.com,
broonie@kernel.org, perex@perex.cz, tiwai@suse.com,
alsa-devel@alsa-project.org, linux-sound@vger.kernel.org,
pierre-louis.bossart@linux.intel.com,
kai.vehmanen@linux.intel.com, ranjani.sridharan@linux.intel.com,
linux-kernel@vger.kernel.org, regressions@lists.linux.dev
Subject: Re: Oops in hdac_hda_dev_probe (6.7-rc7)
Date: Fri, 29 Dec 2023 14:11:38 +0100 [thread overview]
Message-ID: <87sf3lxiet.wl-tiwai@suse.de> (raw)
In-Reply-To: <ZYvUIxtrqBQZbNlC@shine.dominikbrodowski.net>
On Wed, 27 Dec 2023 08:37:07 +0100,
Dominik Brodowski wrote:
>
> Hi,
>
> unfortunately, the latest 6.7.0-rc7 and the two previous rc kernels cause an
> oops in hdac_hda_dev_probe(); sound and resume-from-suspend subsequently do
> not work:
>
>
> BUG: kernel NULL pointer dereference, address: 0000000000000078
> #PF: supervisor read access in kernel mode
> #PF: error_code(0x0000) - not-present page
> PGD 0
> P4D 0
> Oops: 0000 [#1] PREEMPT SMP NOPTI
> Hardware name: Dell Inc. XPS 9315/00KRKP, BIOS 1.1.3 05/11/2022
> Workqueue: events sof_probe_work
>
> RIP: 0010:hdac_hda_dev_probe+0x42/0xf0
> Code: 48 8b 37 48 8b bb c8 04 00 00 e8 09 9b 0a 00 48 85 c0 48 89 c5 0f 84 a6 00 00 00 48 8b bb c8 04 00 00 48 89 c6 e8 1e 9a 0a 00 <41> 80 7c 24 78 00 75 46 b9 03 00 00 00 48 c7 c2 c0 b2 a1 ac 48 c7
> RSP: 0000:ffffc90000207b50 EFLAGS: 00010246
>
> RAX: 0000000000000000 RBX: ffff88811495d000 RCX: 0000000000000000
> RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
> RBP: ffff888108691600 R08: 0000000000000000 R09: 0000000000000000
> R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
> R13: 0000000000000000 R14: 0000000000000000 R15: ffff88811400b028
> FS: 0000000000000000(0000) GS:ffff88886f500000(0000) knlGS:0000000000000000
> CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> CR2: 0000000000000078 CR3: 00000002b7a5a000 CR4: 0000000000f50ef0
> PKRU: 55555554
> Call Trace:
> <TASK>
> ? __die+0x1e/0x70
> ? page_fault_oops+0x17c/0x4b0
> ? snd_hdac_ext_bus_link_get+0x24/0xc0
> ? exc_page_fault+0x462/0x8e0
> ? asm_exc_page_fault+0x26/0x30
> ? hdac_hda_dev_probe+0x42/0xf0
> really_probe+0x166/0x300
> ? __pfx___device_attach_driver+0x10/0x10
> __driver_probe_device+0x6e/0x120
> driver_probe_device+0x1a/0x90
> __device_attach_driver+0x8e/0xd0
> bus_for_each_drv+0x90/0xf0
> __device_attach+0xac/0x1a0
> bus_probe_device+0x93/0xb0
> device_add+0x669/0x860
> snd_hdac_device_register+0x10/0x60
> hda_codec_probe_bus+0x189/0x290
> hda_dsp_probe+0x211/0x550
> sof_probe_work+0x2c/0x430
> ? process_one_work+0x19c/0x500
> process_one_work+0x205/0x500
> worker_thread+0x1dc/0x3e0
>
> ? __pfx_worker_thread+0x10/0x10
> kthread+0xea/0x120
> ? __pfx_kthread+0x10/0x10
> ret_from_fork+0x2c/0x50
> ? __pfx_kthread+0x10/0x10
> ret_from_fork_asm+0x1b/0x30
> </TASK>
> Modules linked in:
> CR2: 0000000000000078
> ---[ end trace 0000000000000000 ]---
> RIP: 0010:hdac_hda_dev_probe+0x42/0xf0
> Code: 48 8b 37 48 8b bb c8 04 00 00 e8 09 9b 0a 00 48 85 c0 48 89 c5 0f 84 a6 00 00 00 48 8b bb c8 04 00 00 48 89 c6 e8 1e 9a 0a 00 <41> 80 7c 24 78 00 75 46 b9 03 00 00 00 48 c7 c2 c0 b2 a1 ac 48 c7
> RSP: 0000:ffffc90000207b50 EFLAGS: 00010246
> RAX: 0000000000000000 RBX: ffff88811495d000 RCX: 0000000000000000
> RDX: 0000000000000000 RSI: 0000000000000000 RDI: 0000000000000000
> RBP: ffff888108691600 R08: 0000000000000000 R09: 0000000000000000
> R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
> R13: 0000000000000000 R14: 0000000000000000 R15: ffff88811400b028
> FS: 0000000000000000(0000) GS:ffff88886f500000(0000) knlGS:0000000000000000
> CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> CR2: 0000000000000078 CR3: 00000002b7a5a000 CR4: 0000000000f50ef0
> PKRU: 55555554
> note: kworker/2:0[24] exited with irqs disabled
>
>
> I was able to bisect the issue to commit a0575b4add21 ("ASoC: hdac_hda:
> Conditionally register dais for HDMI and Analog"). Reverting that patch on
> top of mainline fixes it.
As I've been (and still am) off, I had too little time for taking a
deeper look now, unfortunately. But my wild guess is that it's a NULL
dereference of the hdac_hda_priv referred via hdac dev. If it's
correct, a oneliner like below should work around the crash.
Could you give it a try?
thanks,
Takashi
-- 8< --
--- a/sound/soc/codecs/hdac_hda.c
+++ b/sound/soc/codecs/hdac_hda.c
@@ -630,7 +630,7 @@ static int hdac_hda_dev_probe(struct hdac_device *hdev)
snd_hdac_ext_bus_link_get(hdev->bus, hlink);
/* ASoC specific initialization */
- if (hda_pvt->need_display_power)
+ if (hda_pvt && hda_pvt->need_display_power)
ret = devm_snd_soc_register_component(&hdev->dev,
&hdac_hda_hdmi_codec, hdac_hda_hdmi_dais,
ARRAY_SIZE(hdac_hda_hdmi_dais));
next prev parent reply other threads:[~2024-01-02 20:00 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-27 7:37 Oops in hdac_hda_dev_probe (6.7-rc7) Dominik Brodowski
2023-12-29 13:11 ` Takashi Iwai [this message]
2023-12-29 15:24 ` Dominik Brodowski
2023-12-29 17:11 ` Takashi Iwai
2023-12-30 7:27 ` Dominik Brodowski
2023-12-30 10:03 ` Takashi Iwai
2023-12-31 10:28 ` Takashi Iwai
2024-01-02 9:08 ` Péter Ujfalusi
2024-01-02 9:25 ` Takashi Iwai
2024-01-03 14:36 ` Takashi Iwai
2024-01-03 16:24 ` Péter Ujfalusi
2024-01-03 18:31 ` Mark Brown
2024-01-02 17:37 ` Dominik Brodowski
-- strict thread matches above, loose matches on Subject: below --
2024-01-02 22:37 Willian Wang
2024-01-02 22:56 Willian Wang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87sf3lxiet.wl-tiwai@suse.de \
--to=tiwai@suse.de \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@kernel.org \
--cc=kai.vehmanen@linux.intel.com \
--cc=lgirdwood@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-sound@vger.kernel.org \
--cc=linux@dominikbrodowski.net \
--cc=perex@perex.cz \
--cc=peter.ujfalusi@linux.intel.com \
--cc=pierre-louis.bossart@linux.intel.com \
--cc=ranjani.sridharan@linux.intel.com \
--cc=regressions@lists.linux.dev \
--cc=tiwai@suse.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.