On Fri, Aug 14, 2015 at 12:16 PM, Rafael J. Wysocki <rjw@xxxxxxxxxxxxx> wrote: > On Friday, August 14, 2015 11:36:41 AM Sedat Dilek wrote: >> On Fri, Aug 14, 2015 at 11:39 AM, Rafael J. Wysocki <rjw@xxxxxxxxxxxxx> wrote: >> > On Thursday, August 13, 2015 10:39:08 PM Sedat Dilek wrote: >> >> >> >> --f46d04447e7fc2306e051d3753a5 >> >> Content-Type: text/plain; charset=UTF-8 >> >> >> >> On Thu, Aug 13, 2015 at 6:53 PM, Hans de Goede <hdegoede@xxxxxxxxxx> wrote: >> >> > Before this commit, the following would happen: >> >> > >> >> > a) acpi_video_get_backlight_type() gets called >> >> > b) acpi_video_get_backlight_type() calls acpi_video_init_backlight_type() >> >> > c) acpi_video_init_backlight_type() locks its function static init_mutex >> >> > d) acpi_video_init_backlight_type() calls backlight_register_notifier() >> >> > e) backlight_register_notifier() takes its notifier-chain lock >> >> > >> >> > And when the backlight notifier chain gets called we've: >> >> > >> >> > 1) blocking_notifier_call_chain() gets called >> >> > 2) blocking_notifier_call_chain() takes the notifier-chain lock >> >> > 3) blocking_notifier_call_chain() calls acpi_video_backlight_notify() >> >> > 4) acpi_video_backlight_notify() calls acpi_video_get_backlight_type() >> >> > 5) acpi_video_get_backlight_type() calls acpi_video_init_backlight_type() >> >> > 6) acpi_video_init_backlight_type() locks its function static init_mutex >> >> > >> >> > So in the first call sequence we have: >> >> > >> >> > a) init_mutex gets locked >> >> > b) notifier-chain gets locked >> >> > >> >> > and in the second call sequence we have: >> >> > >> >> > 1) notifier-chain gets locked >> >> > 2) init_mutex gets locked >> >> > >> >> > And we've a circular locking dependency. This specific locking dependency >> >> > is fixable without using the big hammer otherwise known as a workqueue, >> >> > but further analysis shows a similar problem with the backlight notifier >> >> > chain lock vs register_count_mutex from drivers/acpi/acpi_video.c, >> >> > and fixing that becomes problematic. >> >> > >> >> > So this commit simply fixes this with the big hammer, performance >> >> > wise this is a non issue as we expect the work to get scheduled >> >> > exactly zero or one times during normal system use. >> >> > >> >> >> >> This patch on top of Linux v4.2-rc6 fixes the issue for me. >> >> >> >> Feel free to add my... >> >> >> >> Reported-by: Sedat Dilek <sedat.dilek@xxxxxxxxx> >> >> Tested-by: Sedat Dilek <sedat.dilek@xxxxxxxxx> >> > >> > Applied, thanks! >> > >> >> Thanks for carrying this one. >> Isn't this a for-4.2/acpi-video-fixes? > > I have no branch like that. > I wanted to say it's "for 4.2-rc7". >> Why did you apply this in your linux-next Git branch? > > Because that's what I do normally with patches I'm going to push to Linus. > OK, thanks. - sed@ - > Thanks, > Rafael > -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html