[lkml]   [2010]   [Jul]   [1]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Patch in this message
    Subject[010/200] libata: disable ATAPI AN by default
    2.6.34-stable review patch.  If anyone has any objections, please let me know.


    From: Tejun Heo <>

    commit e7ecd435692ca9bde9d124be30b3a26e672ea6c2 upstream.

    There are ATAPI devices which raise AN when hit by commands issued by
    open(). This leads to infinite loop of AN -> MEDIA_CHANGE uevent ->
    udev open() to check media -> AN.

    Both ACS and SerialATA standards don't define in which case ATAPI
    devices are supposed to raise or not raise AN. They both list media
    insertion event as a possible use case for ATAPI ANs but there is no
    clear description of what constitutes such events. As such, it seems
    a bit too naive to export ANs directly to userland as MEDIA_CHANGE
    events without further verification (which should behave similarly to
    windows as it apparently is the only thing that some hardware vendors
    are testing against).

    This patch adds libata.atapi_an module parameter and disables ATAPI AN
    by default for now.

    Signed-off-by: Tejun Heo <>
    Cc: Kay Sievers <>
    Cc: Nick Bowler <>
    Cc: David Zeuthen <>
    Signed-off-by: Jeff Garzik <>
    Signed-off-by: Greg Kroah-Hartman <>

    drivers/ata/libata-core.c | 7 ++++++-
    1 file changed, 6 insertions(+), 1 deletion(-)

    --- a/drivers/ata/libata-core.c
    +++ b/drivers/ata/libata-core.c
    @@ -160,6 +160,10 @@ int libata_allow_tpm = 0;
    module_param_named(allow_tpm, libata_allow_tpm, int, 0444);
    MODULE_PARM_DESC(allow_tpm, "Permit the use of TPM commands (0=off [default], 1=on)");

    +static int atapi_an;
    +module_param(atapi_an, int, 0444);
    +MODULE_PARM_DESC(atapi_an, "Enable ATAPI AN media presence notification (0=0ff [default], 1=on)");
    MODULE_AUTHOR("Jeff Garzik");
    MODULE_DESCRIPTION("Library module for ATA devices");
    @@ -2572,7 +2576,8 @@ int ata_dev_configure(struct ata_device
    * to enable ATAPI AN to discern between PHY status
    * changed notifications and ATAPI ANs.
    - if ((ap->flags & ATA_FLAG_AN) && ata_id_has_atapi_AN(id) &&
    + if (atapi_an &&
    + (ap->flags & ATA_FLAG_AN) && ata_id_has_atapi_AN(id) &&
    (!sata_pmp_attached(ap) ||
    sata_scr_read(&ap->link, SCR_NOTIFICATION, &sntf) == 0)) {
    unsigned int err_mask;

     \ /
      Last update: 2010-07-01 23:57    [W:6.643 / U:0.236 seconds]
    ©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site