If you tested my previous acpi_ec.c patch (or even if you didn't), please test the following one: http://root.org/~nate/freebsd/ec-new.diff I will be committing this is in a few days if any problems that arise are successfully addressed. It fixes numerous races and the broken tsleep approach in the current version. Note that it does NOT have the experimental burst mode support I had included in the last patch. It appears that burst mode is more difficult to handle than I have time for and the actual time spent in DELAY is low (~1-5 us per transaction). There is no special dmesg output to report with this, just make sure it doesn't break things (or fixes things for you). -Nate --- Rewrite much of the embedded controller driver. * Always use polled mode. The msleep approach did not work for many controllers and required a workaround on others. * Only use an edge (not level) triggered GPE handler * Add sc->ec_mtx for locking operations to a single EC. There were many race conditions earlier between an SCI event and EcRead/Write. * Use 1 ms as the global lock timeout * Only acquire global lock if _GLK != 0 * Update EcWaitEvent to use an incremental backoff delay in its poll loop. Only wait 1 ms max instead of 10. Most ECs respond in < 5 us (50 us when heavily loaded). 10 ms had us holding the lock too long on a bad implementation. * Add EcCommand to send a command and wait for the appropriate event. * The hw.acpi.ec.event_driven tunable is no longer applicable and has been removed. Ideas from: LinuxReceived on Tue Jul 08 2003 - 20:08:55 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:14 UTC