* drive appears confused (ireason = 0x01)
@ 2005-10-01 23:56 Uplink
2005-10-03 7:33 ` Jens Axboe
0 siblings, 1 reply; 3+ messages in thread
From: Uplink @ 2005-10-01 23:56 UTC (permalink / raw)
To: linux-ide
Hi,
This may concern you in part. Parts that you feel that don't concern
IDE, please forward to the ones responsible.
Since kernel 2.6.13 I get a "cdrom_pc_intr: The drive appears confused
(ireason = 0x01)" message when trying to access the DVD drive and I
can't read any disks.
I just booted 2.6.14-rc3 and I still get it. I also get some weird
things in syslog:
Oct 1 23:45:24 dcerouter kernel: hda: cde appears confused (ireason = 0x01)
Oct 1 23:45:24 dcerouter kernel: hda: cdroe appears confused (ireason =
0x01)
Oct 1 23:45:24 dcerouter kernel: hda: cdroe appears confused (ireason =
0x01)
Oct 1 23:45:24 dcerouter kernel: hda: cdre appears confused (ireason =
0x01)
Oct 1 23:45:24 dcerouter kernel: hda: cdrom_pc_e appears confused
(ireason = 0x01)
Oct 1 23:45:24 dcerouter kernel: hda: cdrom_pc_intr: The e appears
confused (ireason = 0x01)
Oct 1 23:45:24 dcerouter kernel: hda: cdrom_pc_intr: Te appears
confused (ireason = 0x01)
Oct 1 23:45:24 dcerouter kernel: hda: cdrom_pc_intr:e appears confused
(ireason = 0x01)
Oct 1 23:45:24 dcerouter kernel: hda: cdrom_pc_intr:e appears confused
(ireason = 0x01)
Oct 1 23:45:24 dcerouter kernel: hda: cdrom_pc_intre appears confused
(ireason = 0x01)
Oct 1 23:45:24 dcerouter kernel: hda: cdrom_pc_intr:e appears confused
(ireason = 0x01)
Oct 1 23:45:24 dcerouter kernel: hda: cdrom_pc_intr: e appears confused
(ireason = 0x01)
Oct 1 23:45:24 dcerouter kernel: hda:e appears confused (ireason = 0x01)
Oct 1 23:45:24 dcerouter kernel: hda: cdrom_pc_e appears confused
(ireason = 0x01)
Oct 1 23:45:24 dcerouter kernel: hda: cdrom_pc_intr: The appears
confused (ireason = 0x01)
Oct 1 23:45:24 dcerouter kernel: hda: cdre appears confused (ireason =
0x01)
Oct 1 23:45:24 dcerouter kernel: hda: cde appears confused (ireason = 0x01)
Oct 1 23:45:24 dcerouter kernel: hda: cdre appears confused (ireason =
0x01)
Oct 1 23:45:24 dcerouter kernel: hda: cdroe appears confused (ireason =
0x01)
Oct 1 23:45:24 dcerouter kernel: hda: cdrom_e appears confused (ireason
= 0x01)
Oct 1 23:45:24 dcerouter kernel: hda: cdrom_pc_inte appears confused
(ireason = 0x01)
Oct 1 23:45:24 dcerouter kernel: hda: cdrom_pc_intr: The appears
confused (ireason = 0x01)
Oct 1 23:45:24 dcerouter kernel: hda: cdrom_pc_intr: e appears confused
(ireason = 0x01)
Oct 1 23:45:24 dcerouter kernel: hda: cdrom_pc_intr: e appears confused
(ireason = 0x01)
Oct 1 23:45:24 dcerouter kernel: hda: cdrom_pc_intr: The appears
confused (ireason = 0x01)
Oct 1 23:45:24 dcerouter kernel: hda: cdrom_pc_intr: e appears confused
(ireason = 0x01)
Oct 1 23:45:24 dcerouter kernel: hda: cdrom_pc_intr: Te appears
confused (ireason = 0x01)
Oct 1 23:45:24 dcerouter kernel: hda: cdrom_pc_intr: Thee appears
confused (ireason = 0x01)
Oct 1 23:45:24 dcerouter kernel: hda: cdrom_pc_intr: Te appears
confused (ireason = 0x01)
Oct 1 23:45:24 dcerouter kernel: hda: cdrom_pc_intr:e appears confused
(ireason = 0x01)
Oct 1 23:45:24 dcerouter kernel: hda: cdrom_pc_inte appears confused
(ireason = 0x01)
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: drive appears confused (ireason = 0x01)
2005-10-01 23:56 drive appears confused (ireason = 0x01) Uplink
@ 2005-10-03 7:33 ` Jens Axboe
2005-10-04 22:06 ` Uplink
0 siblings, 1 reply; 3+ messages in thread
From: Jens Axboe @ 2005-10-03 7:33 UTC (permalink / raw)
To: Uplink; +Cc: linux-ide
On Sun, Oct 02 2005, Uplink wrote:
> Hi,
>
> This may concern you in part. Parts that you feel that don't concern
> IDE, please forward to the ones responsible.
>
> Since kernel 2.6.13 I get a "cdrom_pc_intr: The drive appears confused
> (ireason = 0x01)" message when trying to access the DVD drive and I
> can't read any disks.
>
> I just booted 2.6.14-rc3 and I still get it. I also get some weird
> things in syslog:
>
> Oct 1 23:45:24 dcerouter kernel: hda: cde appears confused (ireason = 0x01)
> Oct 1 23:45:24 dcerouter kernel: hda: cdroe appears confused (ireason =
> 0x01)
Can you try reversing this patch from 2.6.13/2.6.14-rc3 and see if it
makes a difference?
diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c
--- a/drivers/ide/ide-cd.c
+++ b/drivers/ide/ide-cd.c
@@ -431,7 +431,7 @@ void cdrom_analyze_sense_data(ide_drive_
#if VERBOSE_IDE_CD_ERRORS
{
int i;
- const char *s;
+ const char *s = "bad sense key!";
char buf[80];
printk ("ATAPI device %s:\n", drive->name);
@@ -446,8 +446,6 @@ void cdrom_analyze_sense_data(ide_drive_
if (sense->sense_key < ARY_LEN(sense_key_texts))
s = sense_key_texts[sense->sense_key];
- else
- s = "bad sense key!";
printk("%s -- (Sense key=0x%02x)\n", s, sense->sense_key);
@@ -2657,16 +2655,63 @@ int ide_cdrom_lock_door (struct cdrom_de
}
static
+int ide_cdrom_get_capabilities(ide_drive_t *drive, struct atapi_capabilities_page *cap)
+{
+ struct cdrom_info *info = drive->driver_data;
+ struct cdrom_device_info *cdi = &info->devinfo;
+ struct packet_command cgc;
+ int stat, attempts = 3, size = sizeof(*cap);
+
+ /*
+ * ACER50 (and others?) require the full spec length mode sense
+ * page capabilities size, but older drives break.
+ */
+ if (!(!strcmp(drive->id->model, "ATAPI CD ROM DRIVE 50X MAX") ||
+ !strcmp(drive->id->model, "WPI CDS-32X")))
+ size -= sizeof(cap->pad);
+
+ init_cdrom_command(&cgc, cap, size, CGC_DATA_UNKNOWN);
+ do { /* we seem to get stat=0x01,err=0x00 the first time (??) */
+ stat = cdrom_mode_sense(cdi, &cgc, GPMODE_CAPABILITIES_PAGE, 0);
+ if (!stat)
+ break;
+ } while (--attempts);
+ return stat;
+}
+
+static
+void ide_cdrom_update_speed (ide_drive_t *drive, struct atapi_capabilities_page *cap)
+{
+ /* The ACER/AOpen 24X cdrom has the speed fields byte-swapped */
+ if (!drive->id->model[0] &&
+ !strncmp(drive->id->fw_rev, "241N", 4)) {
+ CDROM_STATE_FLAGS(drive)->current_speed =
+ (((unsigned int)cap->curspeed) + (176/2)) / 176;
+ CDROM_CONFIG_FLAGS(drive)->max_speed =
+ (((unsigned int)cap->maxspeed) + (176/2)) / 176;
+ } else {
+ CDROM_STATE_FLAGS(drive)->current_speed =
+ (ntohs(cap->curspeed) + (176/2)) / 176;
+ CDROM_CONFIG_FLAGS(drive)->max_speed =
+ (ntohs(cap->maxspeed) + (176/2)) / 176;
+ }
+}
+
+static
int ide_cdrom_select_speed (struct cdrom_device_info *cdi, int speed)
{
ide_drive_t *drive = (ide_drive_t*) cdi->handle;
struct request_sense sense;
+ struct atapi_capabilities_page cap;
int stat;
if ((stat = cdrom_select_speed(drive, speed, &sense)) < 0)
return stat;
- cdi->speed = CDROM_STATE_FLAGS(drive)->current_speed;
+ if (!ide_cdrom_get_capabilities(drive, &cap)) {
+ ide_cdrom_update_speed(drive, &cap);
+ cdi->speed = CDROM_STATE_FLAGS(drive)->current_speed;
+ }
return 0;
}
@@ -2869,31 +2914,6 @@ static int ide_cdrom_register (ide_drive
}
static
-int ide_cdrom_get_capabilities(ide_drive_t *drive, struct atapi_capabilities_page *cap)
-{
- struct cdrom_info *info = drive->driver_data;
- struct cdrom_device_info *cdi = &info->devinfo;
- struct packet_command cgc;
- int stat, attempts = 3, size = sizeof(*cap);
-
- /*
- * ACER50 (and others?) require the full spec length mode sense
- * page capabilities size, but older drives break.
- */
- if (!(!strcmp(drive->id->model, "ATAPI CD ROM DRIVE 50X MAX") ||
- !strcmp(drive->id->model, "WPI CDS-32X")))
- size -= sizeof(cap->pad);
-
- init_cdrom_command(&cgc, cap, size, CGC_DATA_UNKNOWN);
- do { /* we seem to get stat=0x01,err=0x00 the first time (??) */
- stat = cdrom_mode_sense(cdi, &cgc, GPMODE_CAPABILITIES_PAGE, 0);
- if (!stat)
- break;
- } while (--attempts);
- return stat;
-}
-
-static
int ide_cdrom_probe_capabilities (ide_drive_t *drive)
{
struct cdrom_info *info = drive->driver_data;
@@ -2978,20 +2998,7 @@ int ide_cdrom_probe_capabilities (ide_dr
}
}
- /* The ACER/AOpen 24X cdrom has the speed fields byte-swapped */
- if (!drive->id->model[0] &&
- !strncmp(drive->id->fw_rev, "241N", 4)) {
- CDROM_STATE_FLAGS(drive)->current_speed =
- (((unsigned int)cap.curspeed) + (176/2)) / 176;
- CDROM_CONFIG_FLAGS(drive)->max_speed =
- (((unsigned int)cap.maxspeed) + (176/2)) / 176;
- } else {
- CDROM_STATE_FLAGS(drive)->current_speed =
- (ntohs(cap.curspeed) + (176/2)) / 176;
- CDROM_CONFIG_FLAGS(drive)->max_speed =
- (ntohs(cap.maxspeed) + (176/2)) / 176;
- }
-
+ ide_cdrom_update_speed(drive, &cap);
/* don't print speed if the drive reported 0.
*/
printk(KERN_INFO "%s: ATAPI", drive->name);
--
Jens Axboe
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: drive appears confused (ireason = 0x01)
2005-10-03 7:33 ` Jens Axboe
@ 2005-10-04 22:06 ` Uplink
0 siblings, 0 replies; 3+ messages in thread
From: Uplink @ 2005-10-04 22:06 UTC (permalink / raw)
To: linux-ide
I found out what it was and it's not this. It's S-ATA vs. IRQ. I'm
starting to hate these encounters. It's all about Legacy/Compatibily vs.
Enhanced mode of operation. Something changes with the APIC when using
Enhanced mode and isn't handled by the kernel.
This link shows, somewhat, what I mean:
http://plutohome.com/support/phpbb2/viewtopic.php?p=1600#1600
Jens Axboe wrote:
>On Sun, Oct 02 2005, Uplink wrote:
>
>
>>Hi,
>>
>>This may concern you in part. Parts that you feel that don't concern
>>IDE, please forward to the ones responsible.
>>
>>Since kernel 2.6.13 I get a "cdrom_pc_intr: The drive appears confused
>>(ireason = 0x01)" message when trying to access the DVD drive and I
>>can't read any disks.
>>
>>I just booted 2.6.14-rc3 and I still get it. I also get some weird
>>things in syslog:
>>
>>Oct 1 23:45:24 dcerouter kernel: hda: cde appears confused (ireason = 0x01)
>>Oct 1 23:45:24 dcerouter kernel: hda: cdroe appears confused (ireason =
>>0x01)
>>
>>
>
>Can you try reversing this patch from 2.6.13/2.6.14-rc3 and see if it
>makes a difference?
>
>diff --git a/drivers/ide/ide-cd.c b/drivers/ide/ide-cd.c
>--- a/drivers/ide/ide-cd.c
>+++ b/drivers/ide/ide-cd.c
>@@ -431,7 +431,7 @@ void cdrom_analyze_sense_data(ide_drive_
> #if VERBOSE_IDE_CD_ERRORS
> {
> int i;
>- const char *s;
>+ const char *s = "bad sense key!";
> char buf[80];
>
> printk ("ATAPI device %s:\n", drive->name);
>@@ -446,8 +446,6 @@ void cdrom_analyze_sense_data(ide_drive_
>
> if (sense->sense_key < ARY_LEN(sense_key_texts))
> s = sense_key_texts[sense->sense_key];
>- else
>- s = "bad sense key!";
>
> printk("%s -- (Sense key=0x%02x)\n", s, sense->sense_key);
>
>@@ -2657,16 +2655,63 @@ int ide_cdrom_lock_door (struct cdrom_de
> }
>
> static
>+int ide_cdrom_get_capabilities(ide_drive_t *drive, struct atapi_capabilities_page *cap)
>+{
>+ struct cdrom_info *info = drive->driver_data;
>+ struct cdrom_device_info *cdi = &info->devinfo;
>+ struct packet_command cgc;
>+ int stat, attempts = 3, size = sizeof(*cap);
>+
>+ /*
>+ * ACER50 (and others?) require the full spec length mode sense
>+ * page capabilities size, but older drives break.
>+ */
>+ if (!(!strcmp(drive->id->model, "ATAPI CD ROM DRIVE 50X MAX") ||
>+ !strcmp(drive->id->model, "WPI CDS-32X")))
>+ size -= sizeof(cap->pad);
>+
>+ init_cdrom_command(&cgc, cap, size, CGC_DATA_UNKNOWN);
>+ do { /* we seem to get stat=0x01,err=0x00 the first time (??) */
>+ stat = cdrom_mode_sense(cdi, &cgc, GPMODE_CAPABILITIES_PAGE, 0);
>+ if (!stat)
>+ break;
>+ } while (--attempts);
>+ return stat;
>+}
>+
>+static
>+void ide_cdrom_update_speed (ide_drive_t *drive, struct atapi_capabilities_page *cap)
>+{
>+ /* The ACER/AOpen 24X cdrom has the speed fields byte-swapped */
>+ if (!drive->id->model[0] &&
>+ !strncmp(drive->id->fw_rev, "241N", 4)) {
>+ CDROM_STATE_FLAGS(drive)->current_speed =
>+ (((unsigned int)cap->curspeed) + (176/2)) / 176;
>+ CDROM_CONFIG_FLAGS(drive)->max_speed =
>+ (((unsigned int)cap->maxspeed) + (176/2)) / 176;
>+ } else {
>+ CDROM_STATE_FLAGS(drive)->current_speed =
>+ (ntohs(cap->curspeed) + (176/2)) / 176;
>+ CDROM_CONFIG_FLAGS(drive)->max_speed =
>+ (ntohs(cap->maxspeed) + (176/2)) / 176;
>+ }
>+}
>+
>+static
> int ide_cdrom_select_speed (struct cdrom_device_info *cdi, int speed)
> {
> ide_drive_t *drive = (ide_drive_t*) cdi->handle;
> struct request_sense sense;
>+ struct atapi_capabilities_page cap;
> int stat;
>
> if ((stat = cdrom_select_speed(drive, speed, &sense)) < 0)
> return stat;
>
>- cdi->speed = CDROM_STATE_FLAGS(drive)->current_speed;
>+ if (!ide_cdrom_get_capabilities(drive, &cap)) {
>+ ide_cdrom_update_speed(drive, &cap);
>+ cdi->speed = CDROM_STATE_FLAGS(drive)->current_speed;
>+ }
> return 0;
> }
>
>@@ -2869,31 +2914,6 @@ static int ide_cdrom_register (ide_drive
> }
>
> static
>-int ide_cdrom_get_capabilities(ide_drive_t *drive, struct atapi_capabilities_page *cap)
>-{
>- struct cdrom_info *info = drive->driver_data;
>- struct cdrom_device_info *cdi = &info->devinfo;
>- struct packet_command cgc;
>- int stat, attempts = 3, size = sizeof(*cap);
>-
>- /*
>- * ACER50 (and others?) require the full spec length mode sense
>- * page capabilities size, but older drives break.
>- */
>- if (!(!strcmp(drive->id->model, "ATAPI CD ROM DRIVE 50X MAX") ||
>- !strcmp(drive->id->model, "WPI CDS-32X")))
>- size -= sizeof(cap->pad);
>-
>- init_cdrom_command(&cgc, cap, size, CGC_DATA_UNKNOWN);
>- do { /* we seem to get stat=0x01,err=0x00 the first time (??) */
>- stat = cdrom_mode_sense(cdi, &cgc, GPMODE_CAPABILITIES_PAGE, 0);
>- if (!stat)
>- break;
>- } while (--attempts);
>- return stat;
>-}
>-
>-static
> int ide_cdrom_probe_capabilities (ide_drive_t *drive)
> {
> struct cdrom_info *info = drive->driver_data;
>@@ -2978,20 +2998,7 @@ int ide_cdrom_probe_capabilities (ide_dr
> }
> }
>
>- /* The ACER/AOpen 24X cdrom has the speed fields byte-swapped */
>- if (!drive->id->model[0] &&
>- !strncmp(drive->id->fw_rev, "241N", 4)) {
>- CDROM_STATE_FLAGS(drive)->current_speed =
>- (((unsigned int)cap.curspeed) + (176/2)) / 176;
>- CDROM_CONFIG_FLAGS(drive)->max_speed =
>- (((unsigned int)cap.maxspeed) + (176/2)) / 176;
>- } else {
>- CDROM_STATE_FLAGS(drive)->current_speed =
>- (ntohs(cap.curspeed) + (176/2)) / 176;
>- CDROM_CONFIG_FLAGS(drive)->max_speed =
>- (ntohs(cap.maxspeed) + (176/2)) / 176;
>- }
>-
>+ ide_cdrom_update_speed(drive, &cap);
> /* don't print speed if the drive reported 0.
> */
> printk(KERN_INFO "%s: ATAPI", drive->name);
>
>
>
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2005-10-04 22:06 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-10-01 23:56 drive appears confused (ireason = 0x01) Uplink
2005-10-03 7:33 ` Jens Axboe
2005-10-04 22:06 ` Uplink
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).