Re: [RFC 3/3] libata: don't perform HW activity in devres

From: Brian Norris
Date: Thu Oct 25 2012 - 13:41:50 EST


On Thu, Oct 25, 2012 at 10:25 AM, Tejun Heo <tj@xxxxxxxxxx> wrote:
> On Thu, Oct 25, 2012 at 09:56:01AM -0700, Brian Norris wrote:
>> devres functions are intended for simplified cleanup of memory and other
>> software resources on device exit, not for hardware shutdown sequences.
>> In addition, inducing hardware activity at device removal hamstrings
>> some drivers (particularly ahci_platform) so that they cannot totally
>> power off their hardware before removal, as devres cleanup occurs after
>> the driver's exit() sequence.
>>
>> More concretely, I experience the following bus error when using rmmod
>> to remove (and power off) the SATA block on my SoC:
>
> Shouldn't poweroff happen from ->port/host_stop()?

Hmm, I guess that makes more sense. I was using the ahci_platform
ahci_platform_data->exit() function. Would it be safe to call the
platform init()/exit() functions as part of a
ata_port_operations.host_{start,stop}() hook? These functions aren't
currently implemented at all in ahci_platform, but I don't see why
they couldn't be.

Brian
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/