[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <Pine.LNX.4.44L0.0801061734150.20032-100000@netrider.rowland.org>
Date: Sun, 6 Jan 2008 17:39:28 -0500 (EST)
From: Alan Stern <stern@...land.harvard.edu>
To: "Rafael J. Wysocki" <rjw@...k.pl>
cc: Greg KH <gregkh@...e.de>,
Andrew Morton <akpm@...ux-foundation.org>,
Len Brown <lenb@...nel.org>, Ingo Molnar <mingo@...e.hu>,
ACPI Devel Maling List <linux-acpi@...r.kernel.org>,
LKML <linux-kernel@...r.kernel.org>,
pm list <linux-pm@...ts.linux-foundation.org>
Subject: Re: [PATCH] PM: Acquire device locks on suspend
On Sun, 6 Jan 2008, Rafael J. Wysocki wrote:
> > No -- the whole idea here is to print an error message in the system
> > log if a driver's resume method tries to call device_del(). Deadlock
> > is unavoidable in this case, but at least we'll know which driver is
> > guilty.
>
> Still, if we do that, we won't need to acquire dev->sem in device_pm_remove()
> any more.
There's a window in lock_all_devices() when dpm_list_mtx isn't held.
We don't want device_pm_remove() taking an already-locked device off
the dpm_locked list at that time. So we do need to acquire dev->sem in
device_pm_remove().
> Apart from this, by acqiring pm_sleep_rwsem for reading in
> device_del() we can prevent a suspend from starting while the device is being
> removed.
>
> Consider, for example, the scenario possible with the $subject patch:
> - device_del() starts and notices pm_sleep_rwsem unlocked, so the warning is
> not printed
> - it proceeds and everything before device_pm_remove() succeeds
> - now, device_suspend() is called and locks dev->sem
> - device_del() calls device_pm_remove() and blocks on that with the device
> partialy removed
> I think we should prevent this from happening.
I don't see anything wrong with it. All that will happen is that the
removal will start before the suspend and finish after the resume.
Alan Stern
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists