-
Notifications
You must be signed in to change notification settings - Fork 132
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
No soundcard detected with nomodeset kernel option Dell XPS 17 9720 SKU 0AFE #4594
Comments
looks like a graphics issue to me
|
The
nomodeset:
Interestingly, because on a HDA platform:
nomodeset
and the card probes, we have HDMI PCMs present, but obviously they don't work. Note also that the audio probing takes a long time to kick in both SDW and HDA platforms. |
The reason why the HDA platform manages to create the sound card is due to a 'bug' in sound/soc/codecs/hdac_hda.c: The hdac_hda.c creates the display DAIs unconditionally and it does that when the analog codec is probed (the HDMI never probes, it is not available on the HDA bus):
With ujfalusi@1fa9470 the HDA platform also fails to create the sound card:
|
I'm not sure how to fix this, if it needs to be fixed at all. The tplg contains the HDMI link, it has to be present, I would guess if we would have a no-hdmi flavor of the topologies then we could select those somehow in case the i915 is not available? |
@ujfalusi @bardliao I think we should handle this like in HDA mach driver. Have the nodes in topology, but mach driver ignores them if display codec is not detected at runtime. This is a corner case, but still something that can be hit (e.g. nomodeset, or systems with runtime options to switch between internal and external GPU). |
@kv2019i, right, but that bug in the hdac_hda must be fixed, creating the HDMI dai when the analog codec is probing is not correct, creating it again and again for each probed HDA codec is a bug. |
We could use a postfix in topology name for the devices that no HDMI is available. For example, sof-adl-rt711-l0-rt1316-l12-rt714-l3-no-hdmi.tplg. What do you think? @plbossart @kv2019i |
but we don't have the means to deal with the postfixing and it is not clear what to do if the i915 is not available at the time we probe that audio, but it is probing later (deferred probing). |
@bardliao we can use the same topology (like HDA generic) does. if i915 is not available at probe, the HDMI links will be connected to dummy codec instead. If i915 is enabled later, the audio driver needs to be reloaded (or we move later to the separate HDMI client solution). |
@kv2019i, that would 'solve' the deferred probing hassle and we can just get rid of the probe workqueue? Is this really a solution? If the i915/xe driver loads later then SOF then SOF should defer and be probed after the i915/xe, right? User preventing the display driver to probe (nomodeset, module deny list, etc) is entirely different case, right? If the user does this then probably we should have a module parameter to SOF to ignore the display PCMs? |
There is also a specific use case with hardware isolation in VM:
|
Absolutely no. It's painful enough to have to maintain the 70-odd SoundWire topologies, I don't want to add one more degree of freedom. We really need to have a mechanism where parts of the topology are disabled by the machine driver, this is the 'hardware' layer I've been talking about for more than 2 years. The topology should not assume that a resource is always present or assigned exactly to the same pin/FIFO. |
@plbossart, how do we know if the resource (HDMI/DP) is genuinely missing or it is just going to be loaded later? |
Things will fail either way @ujfalusi I think it's a corner case honestly. We've supported Dell devices on 5 generations of SoundWire devices and it's the first time this issue came up. What is the reason to use 'nomodeset' in the first place? |
I see, so the OS in the VM will use the audio directly? |
@ujfalusi The deferred probe patch is a new complication. But let's assume current sof-dev (and mainline kernel) code. We can have the following case:
With current code and HDA machine driver, the failed display codec enumeration is logged, but audio probe continues. The availability of display codec is passed to machine driver, and the machine driver (the HDA generic) will connected the HDMI/DP DAIs to the dummy codec driver (if functional i915 driver is not available). With the deferred probe patch (now in review on alsa-devel), to get audio in such cases user would have to set a specific module parameter to let audio probe without waiting for i915/xe driver. But also in this case, we should have capability to pass information about whether display codec is there or not, from the controller driver to machine driver. We do not want to clone all topologies we have to cover for this case (which still can happen!). |
Well, if we should be defer probing because i915/xe is probed later than we absolutely should do that and not 'assume' that there is no display driver at all, so drop the HDMI PCMs, this is like 99.99% of the users, the 0.01% might run with disabled i915/xe. |
@ujfalusi wrote.
That's exactly why we have the code to load i915 in audio driver and we have the 60sec timeout. With the new deferred probe, the 0.01% of users need to use a kernel module option as we no longer can know whether to load i915 or the new xe driver. But we do need the ability in mach drivers to support patching out HDMI support with dummy codecs if for some reason i915/xe driver was not available. This has worked well with HDA, and I can't see why we can't follow same approach for SDW. |
I had a problem with graphics driver but I didn't look into why exactly it happened. So the nomodeset option may be required for those who have new hardware but don't want to use proprietary non-free graphics firmware. |
@halobarrlets, can you try this diff: diff --git a/sound/soc/intel/boards/sof_sdw.c b/sound/soc/intel/boards/sof_sdw.c
index c96fdde78076..55163bedde3e 100644
--- a/sound/soc/intel/boards/sof_sdw.c
+++ b/sound/soc/intel/boards/sof_sdw.c
@@ -1596,14 +1596,13 @@ static int sof_card_dai_links_create(struct snd_soc_card *card)
ssp_num = hweight_long(ssp_mask);
}
- if (mach_params->codec_mask & IDISP_CODEC_MASK) {
+ if (mach_params->codec_mask & IDISP_CODEC_MASK)
ctx->idisp_codec = true;
- if (sof_sdw_quirk & SOF_SDW_TGL_HDMI)
- hdmi_num = SOF_TGL_HDMI_COUNT;
- else
- hdmi_num = SOF_PRE_TGL_HDMI_COUNT;
- }
+ if (sof_sdw_quirk & SOF_SDW_TGL_HDMI)
+ hdmi_num = SOF_TGL_HDMI_COUNT;
+ else
+ hdmi_num = SOF_PRE_TGL_HDMI_COUNT;
/* enable dmic01 & dmic16k */
if (sof_sdw_quirk & SOF_SDW_PCH_DMIC || mach_params->dmic_num) it makes the card to appear on my device when booting with |
@ujfalusi |
this is a good starting point but we should be looking at a module parameter.
It would be also great if we could yank the display PCMs altogether if a module parameter is present and telling t hat ignore the display side. |
@ujfalusi I've tested first with just aplay as pulseaudio was disabled so I had to start it manually and then test the pulseaudio later. I'll enable pulseaudio and attach the boot log with it enabled. UPD: |
@ujfalusi We have this to disable display codec:
... this won't skip the 60sec delay. For that, Maarten's series (still in review on alsa-devel) will get rid of the timeout and add an new option to ignore. In sof-dev we have this #4537 , but that will be obsolete with Maarten's series. So plenty of options available. |
There is no separate HDMI codec to be masked, I have only one codec available on this laptop:
|
@halobarrlets, |
@halobarrlets, #4639 should fix the issue, it would be great if you could test it. It is essentially the same patch I have pasted in #4594 (comment) |
@ujfalusi, I've tested your PR and can confirm that it fixes this issue with dmesg logs for reference: |
The topology files for SDW devices require HDMI dai links to be present and this is granted under normal conditions but in case of special use cases the display (i915) driver might not be enabled due to deny-listing, booting with nomodeset or just not compiled at all. This should not block the non HDMI audio to be usable so register the dai links unconditionally. The code has been prepared for this and in case of no HDMI audio the link is created with dummy codec. Closes: thesofproject#4594 Signed-off-by: Peter Ujfalusi <[email protected]>
The topology files for SDW devices require HDMI dai links to be present and this is granted under normal conditions but in case of special use cases the display (i915) driver might not be enabled due to deny-listing, booting with nomodeset or just not compiled at all. This should not block the non HDMI audio to be usable so register the dai links unconditionally. The code has been prepared for this and in case of no HDMI audio the link is created with dummy codec. Closes: thesofproject#4594 Signed-off-by: Peter Ujfalusi <[email protected]>
The topology files for SDW devices require HDMI dai links to be present and this is granted under normal conditions but in case of special use cases the display (i915) driver might not be enabled due to deny-listing, booting with nomodeset or just not compiled at all. This should not block the non HDMI audio to be usable so register the dai links unconditionally. The code has been prepared for this and in case of no HDMI audio the link is created with dummy codec. Closes: thesofproject#4594 Signed-off-by: Peter Ujfalusi <[email protected]>
The topology files for SDW devices require HDMI dai links to be present and this is granted under normal conditions but in case of special use cases the display (i915) driver might not be enabled due to deny-listing, booting with nomodeset or just not compiled at all. This should not block the non HDMI audio to be usable so register the dai links unconditionally. The code has been prepared for this and in case of no HDMI audio the link is created with dummy codec. Closes: thesofproject#4594 Signed-off-by: Peter Ujfalusi <[email protected]>
The topology files for SDW devices require HDMI dai links to be present and this is granted under normal conditions but in case of special use cases the display (i915) driver might not be enabled due to deny-listing, booting with nomodeset or just not compiled at all. This should not block the non HDMI audio to be usable so register the dai links unconditionally. The code has been prepared for this and in case of no HDMI audio the link is created with dummy codec. Closes: thesofproject#4594 Signed-off-by: Peter Ujfalusi <[email protected]>
The topology files for SDW devices require HDMI dai links to be present and this is granted under normal conditions but in case of special use cases the display (i915) driver might not be enabled due to deny-listing, booting with nomodeset or just not compiled at all. This should not block the non HDMI audio to be usable so register the dai links unconditionally. The code has been prepared for this and in case of no HDMI audio the link is created with dummy codec. Closes: thesofproject#4594 Closes: thesofproject#4648 Signed-off-by: Peter Ujfalusi <[email protected]>
The topology files for SDW devices require HDMI dai links to be present and this is granted under normal conditions but in case of special use cases the display (i915) driver might not be enabled due to deny-listing, booting with nomodeset or just not compiled at all. This should not block the non HDMI audio to be usable so register the dai links unconditionally. The code has been prepared for this and in case of no HDMI audio the link is created with dummy codec. Closes: thesofproject#4594 Signed-off-by: Peter Ujfalusi <[email protected]>
The topology files for SDW devices require HDMI dai links to be present and this is granted under normal conditions but in case of special use cases the display (i915) driver might not be enabled due to deny-listing, booting with nomodeset or just not compiled at all. This should not block the non HDMI audio to be usable so register the dai links unconditionally. The code has been prepared for this and in case of no HDMI audio the link is created with dummy codec. Closes: thesofproject#4594 Signed-off-by: Peter Ujfalusi <[email protected]>
The topology files for SDW devices require HDMI dai links to be present and this is granted under normal conditions but in case of special use cases the display (i915) driver might not be enabled due to deny-listing, booting with nomodeset or just not compiled at all. This should not block the non HDMI audio to be usable so register the dai links unconditionally. The code has been prepared for this and in case of no HDMI audio the link is created with dummy codec. Closes: #4594 Closes: #4648 Signed-off-by: Peter Ujfalusi <[email protected]>
The topology files for SDW devices require HDMI dai links to be present and this is granted under normal conditions but in case of special use cases the display (i915) driver might not be enabled due to deny-listing, booting with nomodeset or just not compiled at all. This should not block the non HDMI audio to be usable so register the dai links unconditionally. The code has been prepared for this and in case of no HDMI audio the link is created with dummy codec. Closes: thesofproject#4594 Signed-off-by: Peter Ujfalusi <[email protected]>
The topology files for SDW devices require HDMI dai links to be present and this is granted under normal conditions but in case of special use cases the display (i915) driver might not be enabled due to deny-listing, booting with nomodeset or just not compiled at all. This should not block the non HDMI audio to be usable so register the dai links unconditionally. The code has been prepared for this and in case of no HDMI audio the link is created with dummy codec. Closes: #4594 Closes: #4648 Signed-off-by: Peter Ujfalusi <[email protected]> Reviewed-by: Kai Vehmanen <[email protected]> Reviewed-by: Pierre-Louis Bossart <[email protected]>
The topology files for SDW devices require HDMI dai links to be present and this is granted under normal conditions but in case of special use cases the display (i915) driver might not be enabled due to deny-listing, booting with nomodeset or just not compiled at all. This should not block the non HDMI audio to be usable so register the dai links unconditionally. The code has been prepared for this and in case of no HDMI audio the link is created with dummy codec. Closes: thesofproject#4594 Closes: thesofproject#4648 Signed-off-by: Peter Ujfalusi <[email protected]> Reviewed-by: Kai Vehmanen <[email protected]> Reviewed-by: Pierre-Louis Bossart <[email protected]>
The topology files for SDW devices require HDMI dai links to be present and this is granted under normal conditions but in case of special use cases the display (i915) driver might not be enabled due to deny-listing, booting with nomodeset or just not compiled at all. This should not block the non HDMI audio to be usable so register the dai links unconditionally. The code has been prepared for this and in case of no HDMI audio the link is created with dummy codec. Closes: thesofproject#4594 Closes: thesofproject#4648 Signed-off-by: Peter Ujfalusi <[email protected]> Reviewed-by: Kai Vehmanen <[email protected]> Reviewed-by: Pierre-Louis Bossart <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]>
The topology files for SDW devices require HDMI dai links to be present and this is granted under normal conditions but in case of special use cases the display (i915) driver might not be enabled due to deny-listing, booting with nomodeset or just not compiled at all. This should not block the non HDMI audio to be usable so register the dai links unconditionally. The code has been prepared for this and in case of no HDMI audio the link is created with dummy codec. Closes: thesofproject/linux#4594 Closes: thesofproject/linux#4648 Signed-off-by: Peter Ujfalusi <[email protected]> Reviewed-by: Kai Vehmanen <[email protected]> Reviewed-by: Pierre-Louis Bossart <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]>
The topology files for SDW devices require HDMI dai links to be present and this is granted under normal conditions but in case of special use cases the display (i915) driver might not be enabled due to deny-listing, booting with nomodeset or just not compiled at all. This should not block the non HDMI audio to be usable so register the dai links unconditionally. The code has been prepared for this and in case of no HDMI audio the link is created with dummy codec. Closes: thesofproject/linux#4594 Closes: thesofproject/linux#4648 Signed-off-by: Peter Ujfalusi <[email protected]> Reviewed-by: Kai Vehmanen <[email protected]> Reviewed-by: Pierre-Louis Bossart <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]>
The topology files for SDW devices require HDMI dai links to be present and this is granted under normal conditions but in case of special use cases the display (i915) driver might not be enabled due to deny-listing, booting with nomodeset or just not compiled at all. This should not block the non HDMI audio to be usable so register the dai links unconditionally. The code has been prepared for this and in case of no HDMI audio the link is created with dummy codec. Closes: thesofproject/linux#4594 Closes: thesofproject/linux#4648 Signed-off-by: Peter Ujfalusi <[email protected]> Reviewed-by: Kai Vehmanen <[email protected]> Reviewed-by: Pierre-Louis Bossart <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]> (cherry picked from commit fba293488ccb1902e715da328e71aa868dd561f6 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master) BUG=b:326869955 TEST=Test Audio use cases. Change-Id: I6973c2c4c487b36df65c835c9bc1926b246d86b1 Signed-off-by: Debi sahoo <[email protected]>
The topology files for SDW devices require HDMI dai links to be present and this is granted under normal conditions but in case of special use cases the display (i915) driver might not be enabled due to deny-listing, booting with nomodeset or just not compiled at all. This should not block the non HDMI audio to be usable so register the dai links unconditionally. The code has been prepared for this and in case of no HDMI audio the link is created with dummy codec. Closes: thesofproject/linux#4594 Closes: thesofproject/linux#4648 Signed-off-by: Peter Ujfalusi <[email protected]> Reviewed-by: Kai Vehmanen <[email protected]> Reviewed-by: Pierre-Louis Bossart <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mark Brown <[email protected]> (cherry picked from commit fba2934 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master) BUG=b:326869955 TEST=Test Audio use cases. Change-Id: I6973c2c4c487b36df65c835c9bc1926b246d86b1 Signed-off-by: Debi sahoo <[email protected]> Signed-off-by: Hubert Mazur <[email protected]>
If I boot without nomodeset kernel option then audio works properly but if I boot with nomodeset kernel option then no soundcard is detected.
Maybe firmware is waiting for HDMI from dGPU and fail if no HDMI is detected.
I'm using Debian unstable with latest kernel 6.5.0-rc6+ from https://github.com/thesofproject/linux and firmware-sof-signed 2.2.6-1.
dmesg-with-nomodeset.txt
dmesg-without-nomodeset.txt
The text was updated successfully, but these errors were encountered: