Do not let the iwx init task run in parallel to wakeup code during resume.
The driver will resume in the ACPI thread and run code to wake the device.
If a firmware error occurs then the init task will be scheduled and could
then run in parallel to the wakeup code. This would lead to panics as the
init task ran while we were not yet done with device initialization.
To prevent this problem we now grab the rwlock during wakeup, the same
lock which is used to prevent races between the init task and ioctls.
Problem found by mvs@, who also suggested the fix implemented here and
tested the changes.
ok mvs@