From: Brian Norris <computersforpeace@gmail.com>
To: Jeff Garzik <jgarzik@pobox.com>
Cc: linux-ide@vger.kernel.org,
Brian Norris <computersforpeace@gmail.com>,
Tejun Heo <tj@kernel.org>, Kevin Cernekee <cernekee@broadcom.com>
Subject: [PATCH 00/14] ahci/libata: clean up platform device removal
Date: Fri, 2 Nov 2012 00:46:14 -0700 [thread overview]
Message-ID: <1351842388-27210-1-git-send-email-computersforpeace@gmail.com> (raw)
Hi,
This is a revision and extension of an RFC series I sent out a few times. Here
are links to the previous patches, discussion, and questions.
http://article.gmane.org/gmane.linux.ide/53159
http://article.gmane.org/gmane.linux.ide/53143
http://article.gmane.org/gmane.linux.ide/52951
The major change from RFC v2 is that I rebased to the current libata/NEXT, then
added new patches (PATCH 04/14 through PATCH 14/14).
This series does the following:
(1) Allows ahci_platform to unbind a device from the driver. This is useful for
allowing total power-off of the device, for instance.
(2) Adds ahci_platform ata_port_operations.host_stop() hook, so that
platform-device exit() can power down the device at the appropriate point
in the removal sequence.
(3) Adds a common ata_platform_remove_one() function so that we don't
re-implement a simple host detach across many platform drivers
(4) Switches many platform drivers to the new .remove function from (3)
Thanks to Tejun for the comments, which suggested that ahci_platform (not
libata-core) was broken.
Note that patch 13 provides untested new functionality to the pata_octeon_cf
driver. It was missing a .remove function, so I took the liberty to add the
common one. Feel free to exclude this patch.
Thanks,
Brian
P.S. A related but distinct issue: someting is still broken in the
ata_host_detach() function, for shutting down the host, spinning down disks,
etc. When I rmmod the driver or unbind the device, I get the following
failures, and the HDD doesn't spin down:
# echo strict-ahci.0 > /sys/bus/platform/drivers/ahci/unbind
ata2.00: disabled
sd 1:0:0:0: [sda] Synchronizing SCSI cache
sd 1:0:0:0: [sda] Result: hostbyte=0x04 driverbyte=0x00
sd 1:0:0:0: [sda] Stopping disk
sd 1:0:0:0: [sda] START_STOP FAILED
sd 1:0:0:0: [sda] Result: hostbyte=0x04 driverbyte=0x00
This is reproducible on my laptop (v3.2 kernel, AHCI PCI driver) and on my SoC
AHCI core (v3.3 kernel, AHCI platform driver). I haven't been able to try a
more recent kernel, but nothing I see in the changelogs suggests that there
would be any difference.
I have narrowed down the error messages to the following info, although I am
not yet familiar enough with these codepaths to make a recommendation:
ata_host_detach
|_ ata_port_detach
|_ ata_port_schedule_eh => SCSI error handler calls ata_dev_disable()
| ...
|_scsi_remove_host()
| ...
|__..._ sd_start_stop_device() => failure!
Brian Norris (14):
ahci_platform: enable hotplug unbinding
ahci_platform: convert to module_platform_driver
ahci_platform: perform platform exit in host_stop() hook
libata: implement ata_platform_remove_one()
ahci_platform: utilize common ata_platform_remove_one()
pata_ixp4xx_cf: utilize common ata_platform_remove_one()
pata_mpc52xx: utilize common ata_platform_remove_one()
pata_of_platform: utilize common ata_platform_remove_one()
pata_platform: utilize common ata_platform_remove_one()
ata_platform: remove unused remove function
pata_palmld: utilize common ata_platform_remove_one()
sata_highbank: utilize common ata_platform_remove_one()
pata_octeon_cf: perform host detach, removal on exit
libata: use pci_get_drvdata() helper
drivers/ata/ahci_platform.c | 44 +++++++++++++++++++-----------------------
drivers/ata/libata-core.c | 30 ++++++++++++++++++++++++----
drivers/ata/pata_ixp4xx_cf.c | 11 +----------
drivers/ata/pata_mpc52xx.c | 17 +++-------------
drivers/ata/pata_octeon_cf.c | 1 +
drivers/ata/pata_of_platform.c | 7 +------
drivers/ata/pata_palmld.c | 4 +---
drivers/ata/pata_platform.c | 24 +----------------------
drivers/ata/sata_highbank.c | 12 +-----------
include/linux/ata_platform.h | 2 --
include/linux/libata.h | 4 ++++
11 files changed, 59 insertions(+), 97 deletions(-)
--
1.7.11.3
next reply other threads:[~2012-11-02 7:46 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-02 7:46 Brian Norris [this message]
2012-11-02 7:46 ` [PATCH 01/14] ahci_platform: enable hotplug unbinding Brian Norris
2012-11-02 7:46 ` [PATCH 02/14] ahci_platform: convert to module_platform_driver Brian Norris
2012-11-02 7:46 ` [PATCH 03/14] ahci_platform: perform platform exit in host_stop() hook Brian Norris
2012-11-02 7:46 ` [PATCH 04/14] libata: implement ata_platform_remove_one() Brian Norris
2012-11-02 11:07 ` Sergei Shtylyov
2012-11-02 19:05 ` Brian Norris
2012-11-02 19:09 ` [PATCH v2 " Brian Norris
2012-11-02 19:29 ` [PATCH v3 " Brian Norris
2012-11-02 20:12 ` [PATCH v2 " Sergei Shtylyov
2012-11-02 19:29 ` Brian Norris
2012-11-02 7:46 ` [PATCH 05/14] ahci_platform: utilize common ata_platform_remove_one() Brian Norris
2012-11-02 7:46 ` [PATCH 06/14] pata_ixp4xx_cf: " Brian Norris
2012-11-02 7:46 ` [PATCH 07/14] pata_mpc52xx: " Brian Norris
2012-11-02 7:46 ` [PATCH 08/14] pata_of_platform: " Brian Norris
2012-11-02 7:46 ` [PATCH 09/14] pata_platform: " Brian Norris
2012-11-02 7:46 ` [PATCH 10/14] ata_platform: remove unused remove function Brian Norris
2012-11-02 7:46 ` [PATCH 11/14] pata_palmld: utilize common ata_platform_remove_one() Brian Norris
2012-11-02 7:46 ` [PATCH 12/14] sata_highbank: " Brian Norris
2012-11-02 19:12 ` [PATCH v2 " Brian Norris
2012-12-03 10:17 ` Jeff Garzik
2012-12-03 18:12 ` Brian Norris
2012-11-02 7:46 ` [PATCH 13/14] pata_octeon_cf: perform host detach, removal on exit Brian Norris
2012-11-02 7:46 ` [PATCH 14/14] libata: use pci_get_drvdata() helper Brian Norris
2012-11-02 17:01 ` [PATCH 00/14] ahci/libata: clean up platform device removal Tejun Heo
2012-11-02 19:03 ` Brian Norris
2012-11-02 19:04 ` Tejun Heo
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1351842388-27210-1-git-send-email-computersforpeace@gmail.com \
--to=computersforpeace@gmail.com \
--cc=cernekee@broadcom.com \
--cc=jgarzik@pobox.com \
--cc=linux-ide@vger.kernel.org \
--cc=tj@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.