All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>
To: Charles Keepax <ckeepax@opensource.cirrus.com>
Cc: vkoul@kernel.org, yung-chuan.liao@linux.intel.com,
	peter.ujfalusi@linux.intel.com, linux-sound@vger.kernel.org,
	patches@opensource.cirrus.com, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 3/3] soundwire: intel_auxdevice: Don't disable IRQs before removing children
Date: Tue, 29 Sep 2026 10:34:16 +0200	[thread overview]
Message-ID: <db7d1d3a-1be3-466d-9f95-2dabe918e57e@linux.dev> (raw)
In-Reply-To: <aronxfoVEKfBm9Zb@opensource.cirrus.com>

On 9/28/26 10:39, Charles Keepax wrote:
> On Sat, Sep 26, 2026 at 05:55:06PM +0200, Pierre-Louis Bossart wrote:
>>
>>> diff --git a/drivers/soundwire/intel_auxdevice.c b/drivers/soundwire/intel_auxdevice.c
>>> index 901a71262094f..1439cef43462d 100644
>>> --- a/drivers/soundwire/intel_auxdevice.c
>>> +++ b/drivers/soundwire/intel_auxdevice.c
>>> @@ -508,8 +508,13 @@ static void intel_link_remove(struct auxiliary_device *auxdev)
>>>  	if (!bus->prop.hw_disabled) {
>>>  		sdw_intel_debugfs_exit(sdw);
>>>  		cancel_delayed_work_sync(&cdns->attach_dwork);
>>> -		sdw_cdns_enable_interrupt(cdns, false);
>>>  	}
>>> +
>>> +	sdw_bus_slaves_delete(bus);
>>> +
>>> +	if (!bus->prop.hw_disabled)
>>> +		sdw_cdns_enable_interrupt(cdns, false);
>>> +
>>>  	sdw_bus_master_delete(bus);
>>>  }
>>
>> sorry, not following - this sequence seems to rely on *two* calls to
>> sdw_bus_slaves_delete(), is this intentional or I am missing something?
>>
>>
>>  void sdw_bus_master_delete(struct sdw_bus *bus)
>>  {
>> -	device_for_each_child(bus->dev, NULL, sdw_delete_slave);
>> +	sdw_bus_slaves_delete(bus); <<< this would be the second call?
>> +	sdw_bus_slaves_put(bus);
> 
> Yeah seemed the simplest way to not have to change any existing
> drivers, the second call is a complete no-op if the first was
> done.
humm, that seems to work but I get this layering violation after-taste,
and I wonder if this works for AMD?

AMD use a platform device instead of an auxiliary one, but overall this
looks like the same problem of disabling interrupts before the
peripheral driver is removed, no?

static void amd_sdw_manager_remove(struct platform_device *pdev)
{
	struct amd_sdw_manager *amd_manager = dev_get_drvdata(&pdev->dev);
	int ret;

	pm_runtime_disable(&pdev->dev);
	cancel_work_sync(&amd_manager->amd_sdw_work);
	amd_disable_sdw_interrupts(amd_manager); <<< SAME PROBLEM ??
	sdw_bus_master_delete(&amd_manager->bus);

If this is indeed the same problem then the AMD driver should use the
same solution...

  reply	other threads:[~2026-09-29  8:34 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-09-25 15:42 [PATCH v2 0/3] Allow SoundWire devices to communicate during remove Charles Keepax
2026-09-25 15:42 ` [PATCH v2 1/3] soundwire: bus: Don't unassign dev_num before unregistering device Charles Keepax
2026-10-03  8:18   ` Vinod Koul
2026-10-05  9:08     ` Charles Keepax
2026-09-25 15:42 ` [PATCH v2 2/3] soundwire: bus: Expose a helper to remove devices from the bus Charles Keepax
2026-09-25 15:42 ` [PATCH v2 3/3] soundwire: intel_auxdevice: Don't disable IRQs before removing children Charles Keepax
2026-09-26 15:55   ` Pierre-Louis Bossart
2026-09-28  8:39     ` Charles Keepax
2026-09-29  8:34       ` Pierre-Louis Bossart [this message]
2026-09-29 12:40         ` Charles Keepax
2026-09-29 18:31           ` Pierre-Louis Bossart
2026-10-04 12:29   ` Richard Patel
2026-10-05 10:32     ` Charles Keepax
2026-10-05 13:11       ` Charles Keepax
2026-10-08 12:41         ` Charles Keepax
2026-10-08 23:11           ` Richard Patel
2026-10-09  9:03             ` Charles Keepax
2026-10-09  9:23               ` Richard Patel
2026-10-09  9:42                 ` Charles Keepax
2026-09-29 18:34 ` [PATCH v2 0/3] Allow SoundWire devices to communicate during remove Pierre-Louis Bossart

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=db7d1d3a-1be3-466d-9f95-2dabe918e57e@linux.dev \
    --to=pierre-louis.bossart@linux.dev \
    --cc=ckeepax@opensource.cirrus.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sound@vger.kernel.org \
    --cc=patches@opensource.cirrus.com \
    --cc=peter.ujfalusi@linux.intel.com \
    --cc=vkoul@kernel.org \
    --cc=yung-chuan.liao@linux.intel.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.