On Saturday, 11 of October 2008, Alexey Starikovskiy wrote: > Rafael J. Wysocki wrote: > > On Saturday, 11 of October 2008, Alexey Starikovskiy wrote: > > > >> Alan Jenkins wrote: > >> > >>> I think I found the problem. The "input buffer empty" wait depends on > >>> "interrupt mode" to work properly, and we don't immediately enable the > >>> interrupt on resume. The wait should have a polling fallback anyway, to > >>> be consistent with the other transaction waits. > >>> > >>> Alan > >>> > >> Yep, I think something like attached patch may help: > >> > > > > [Can you please append patches instead of or apart from attaching them? > > That would make it easier to comment them.] > > > > > Ok. > > if (!wait_event_timeout(ec->wait, ec_check_ibf0(ec), > > - msecs_to_jiffies(ACPI_EC_DELAY))) { > > + msecs_to_jiffies(ACPI_EC_DELAY)) && > > + !ec_check_ibf0(ec)) { > > > > Shouldn't this go under the spinlock? Surely it can race with the GPE handler. > > > > > No, we discussed this before -- we are outside of the transaction, thus > no GPE > activity could interfere with ec_check_ibf0. Ok, this is in the process context and we don't really expect to get an interrupt at this point, but what happens if the EC generates an event that's not related to any transiaction. Is that guaranteed to never happen? 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