From: Tejun Heo <tj@kernel.org>
To: Jeff Garzik <jeff@garzik.org>,
"linux-ide@vger.kernel.org" <linux-ide@vger.kernel.org>
Cc: Kay Sievers <kay.sievers@vrfy.org>,
Nick Bowler <nbowler@elliptictech.com>,
David Zeuthen <david@fubar.dk>,
linux-hotplug@vger.kernel.org, stable@kernel.org
Subject: [PATCH #upstream-fixes] libata: disable ATAPI AN by default
Date: Wed, 19 May 2010 13:38:58 +0000 [thread overview]
Message-ID: <4BF3E9F2.9050608@kernel.org> (raw)
In-Reply-To: <4BF3E64D.2040003@kernel.org>
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 <tj@kernel.org>
Cc: Kay Sievers <kay.sievers@vrfy.org>
Cc: Nick Bowler <nbowler@elliptictech.com>
Cc: David Zeuthen <david@fubar.dk>
Cc: stable@kernel.org
---
drivers/ata/libata-core.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 49cffb6..5abab5d 100644
--- 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\x0ff [default], 1=on)");
+
MODULE_AUTHOR("Jeff Garzik");
MODULE_DESCRIPTION("Library module for ATA devices");
MODULE_LICENSE("GPL");
@@ -2572,7 +2576,8 @@ int ata_dev_configure(struct ata_device *dev)
* 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;
WARNING: multiple messages have this Message-ID (diff)
From: Tejun Heo <tj@kernel.org>
To: Jeff Garzik <jeff@garzik.org>,
"linux-ide@vger.kernel.org" <linux-ide@vger.kernel.org>
Cc: Kay Sievers <kay.sievers@vrfy.org>,
Nick Bowler <nbowler@elliptictech.com>,
David Zeuthen <david@fubar.dk>,
linux-hotplug@vger.kernel.org, stable@kernel.org
Subject: [PATCH #upstream-fixes] libata: disable ATAPI AN by default
Date: Wed, 19 May 2010 15:38:58 +0200 [thread overview]
Message-ID: <4BF3E9F2.9050608@kernel.org> (raw)
In-Reply-To: <4BF3E64D.2040003@kernel.org>
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 <tj@kernel.org>
Cc: Kay Sievers <kay.sievers@vrfy.org>
Cc: Nick Bowler <nbowler@elliptictech.com>
Cc: David Zeuthen <david@fubar.dk>
Cc: stable@kernel.org
---
drivers/ata/libata-core.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/drivers/ata/libata-core.c b/drivers/ata/libata-core.c
index 49cffb6..5abab5d 100644
--- 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");
MODULE_LICENSE("GPL");
@@ -2572,7 +2576,8 @@ int ata_dev_configure(struct ata_device *dev)
* 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;
next prev parent reply other threads:[~2010-05-19 13:38 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-13 15:30 udev cdrom_id rules prevent unmounted CD from spinning down Nick Bowler
2010-05-13 16:27 ` Marco d'Itri
2010-05-13 20:13 ` Nick Bowler
2010-05-13 21:27 ` Kay Sievers
2010-05-13 21:37 ` Nick Bowler
2010-05-14 7:36 ` Martin Pitt
2010-05-14 13:51 ` Nick Bowler
2010-05-14 14:41 ` Kay Sievers
2010-05-14 18:48 ` Nick Bowler
2010-05-17 10:06 ` Kay Sievers
2010-05-17 12:43 ` Nick Bowler
2010-05-17 16:27 ` Kay Sievers
2010-05-17 22:54 ` Nicolas Thomas Bowler
2010-05-18 5:08 ` Kay Sievers
2010-05-18 13:25 ` Nick Bowler
2010-05-18 14:21 ` Kay Sievers
2010-05-18 16:23 ` Nick Bowler
2010-05-18 17:53 ` Kay Sievers
2010-05-18 18:14 ` Tejun Heo
2010-05-18 18:20 ` Kay Sievers
2010-05-18 18:28 ` Tejun Heo
2010-05-18 18:53 ` Kay Sievers
2010-05-18 19:23 ` Nick Bowler
2010-05-18 20:18 ` Kay Sievers
2010-05-19 13:23 ` Tejun Heo
2010-05-19 13:38 ` Tejun Heo [this message]
2010-05-19 13:38 ` [PATCH #upstream-fixes] libata: disable ATAPI AN by default Tejun Heo
2010-05-19 16:14 ` Jeff Garzik
2010-05-19 16:14 ` Jeff Garzik
2010-05-19 16:53 ` Tejun Heo
2010-05-19 16:53 ` Tejun Heo
2010-05-21 4:49 ` Robert Hancock
2010-05-21 4:49 ` Robert Hancock
2010-05-19 16:58 ` Nick Bowler
2010-05-19 16:58 ` Nick Bowler
2010-05-25 23:41 ` Jeff Garzik
2010-05-25 23:41 ` Jeff Garzik
2010-05-19 13:55 ` udev cdrom_id rules prevent unmounted CD from spinning down Kay Sievers
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=4BF3E9F2.9050608@kernel.org \
--to=tj@kernel.org \
--cc=david@fubar.dk \
--cc=jeff@garzik.org \
--cc=kay.sievers@vrfy.org \
--cc=linux-hotplug@vger.kernel.org \
--cc=linux-ide@vger.kernel.org \
--cc=nbowler@elliptictech.com \
--cc=stable@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.