Re: [GIT PULL] sound updates for 4.21

From: Pierre-Louis Bossart
Date: Mon Dec 31 2018 - 10:27:50 EST

On 12/31/18 7:43 AM, Azat Khuzhin wrote:
+/* CFL and later models, preferring ASoC when DSP is available */
+#define IS_CFL_PLUS(pci) \
+ ((pci)->vendor == 0x8086 && \
+ ((pci)->device == 0xa348 || \
+ (pci)->device == 0x9dc8 || \
+ (pci)->device == 0x34c8))
static char *driver_short_names[] = {
@@ -2056,7 +2063,7 @@ static int azx_probe(struct pci_dev *pci,
if (pci_id->driver_data & AZX_DCAPS_INTEL_SHARED) {
switch (skl_pci_binding) {
- if (pci->class != 0x040300) {
+ if (pci->class != 0x040300 && IS_CFL_PLUS(pci)) {
dev_info(&pci->dev, "The DSP is enabled on this platform, aborting probe\n");
return -ENODEV;
lenovo thinkpad carbon 6th gen - no sound after this patch, and this
patch should fix sound issue for it (not tested, just checking the
condition and pci attrs)
But what interesting is that I cannot remove snd_soc_skl module
without reboot (to adjust "pci_binding=1" so make sound works),
because kernel hang after short period doing it:

# rmmod snd_soc_skl_ssp_clk
# rmmod snd_soc_skl

WARN_ON triggered on rmmod:

This is unfortunately a known issue with this driver, Takashi and I had a couple of email threads on this. Even without errors removing the module doesn't seem to release all resources. I don't like this at all, and for the Sound Open Firmware (SOF) driver I mandated module load-unload as a functional requirement along with zero warnings w/ Sparse, Coccinelle and friends, but on this legacy code I am afraid there is no simple fix - at least not in a merge window or a single kernel cycle.