New: cdrom drive cannot open the tray, but reported this badly in /proc/sys/dev/cdrom/info
http://bugzilla.kernel.org/show_bug.cgi?id=11602
Summary: cdrom drive cannot open the tray, but reported this
badly in /proc/sys/dev/cdrom/info
Product: IO/Storage
Version: 2.5
KernelVersion: 2.6.27-rc6
Platform: All
OS/Version: Linux
Tree: Mainline
Status: NEW
Severity: normal
Priority: P1
Component: IDE
AssignedTo: [email protected]
ReportedBy: [email protected]
Latest working kernel version:
Earliest failing kernel version:
Distribution: Debian
Hardware Environment: Clevo D410J + Optiarc DVD RW AD-7543A Software Environment:
Problem Description:
The "Optiarc DVD RW AD-7543A" DVD-ROM drive is a slim drive and cannot close the tray automatically once it was opened. I applied a debug patch to drivers/ide/ide-cd.c to 2.6.27-rc6 which prints out that the drive reports correctly that it cannot colose the tray:
[ 12.133887] drivers/ide/ide-cd.c:1664: mechtype=1 [ 12.133892] drivers/ide/ide-cd.c:1669: cdrom CANNOT close the tray [ 12.133895] hdc: ATAPI 24X DVD-ROM DVD-R-RAM CD-R/RW drive, 2048kB Cache [ 12.134224] drivers/ide/ide-cd.c:1922: cdi->mask=0x40010, (cdi->mask & CDC_CLOSE_TRAY)=FALSE [ 12.134229] drivers/cdrom/cdrom.c:396: cdi->mask=0x40010, (cdi->mask & CDC_CLOSE_TRAY)=FALSE [ 12.134232] Uniform CD-ROM driver Revision: 3.20 [ 12.134288] drivers/cdrom/cdrom.c:410: cdi->mask=0x40010, (cdi->mask & CDC_CLOSE_TRAY)=FALSE [ 12.134291] drivers/cdrom/cdrom.c:413: cdi->mask=0x40010, (cdi->mask & CDC_CLOSE_TRAY)=FALSE [ 12.134296] drivers/cdrom/cdrom.c:447: cdi->mask=0x40010, (cdi->mask &
CDC_CLOSE_TRAY)=FALSE
However, when the "/proc/sys/dev/cdrom/info" is examined from the userspace, the "Can close tray" field becomes "1" (expected: "0").
$ cat /proc/sys/dev/cdrom/info CD-ROM information, Id: cdrom.c 3.20 2003/12/17
drive name: hdc drive speed: 24 drive # of slots: 1 Can close tray: 1 Can open tray: 1 Can lock tray: 1 Can change speed: 1 Can select disk: 0 Can read multisession: 1 Can read MCN: 1 Reports media changed: 1 Can play audio: 1 Can write CD-R: 1 Can write CD-RW: 1 Can read DVD: 1 Can write DVD-R: 1 Can write DVD-RAM: 1 Can read MRW: 1 Can write MRW: 1 Can write RAM: 1
$ cat /proc/ide/hdc/model Optiarc DVD RW AD-7543A
Steps to reproduce:
1. Boot the system
2. cat /proc/sys/dev/cdrom/info
Signature · 3 lines
Configure bugmail: http://bugzilla.kernel.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee.
[Bug 11602] cdrom drive cannot open the tray, but reported this badly in /proc/sys/dev/cdrom/info
http://bugzilla.kernel.org/show_bug.cgi?id=11602
------- Comment #1 from [email protected] 2008-09-20 10:59 ------- Created an attachment (id=17912)
--> (http://bugzilla.kernel.org/attachment.cgi?id=17912&action=view)
cdrom tray close debug patch
Signature · 3 lines
Configure bugmail: http://bugzilla.kernel.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee.
[Bug 11602] cdrom drive cannot open the tray, but reported this badly in /proc/sys/dev/cdrom/info
In reply to [email protected]http://bugzilla.kernel.org/show_bug.cgi?id=11602
------- Comment #2 from [email protected] 2008-09-20 11:01 ------- Created an attachment (id=17913)
--> (http://bugzilla.kernel.org/attachment.cgi?id=17913&action=view)
dmesg 2.6.27-rc6 + debug patch from comment #1
Signature · 3 lines
Configure bugmail: http://bugzilla.kernel.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee.
[Bug 11602] cdrom drive cannot open the tray, but reported this badly in /proc/sys/dev/cdrom/info
In reply to [email protected]http://bugzilla.kernel.org/show_bug.cgi?id=11602
[email protected] changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |[email protected]
------- Comment #3 from [email protected] 2008-09-20 22:34 ------- On a first look, your check is wrong:
cdinfo(CD_REG_UNREG, "drive \"/dev/%s\" registered\n", cdi->name);
+ printk(KERN_DEBUG "%s:%u: cdi->mask=0x%X, (cdi->mask &
CDC_CLOSE_TRAY)=%s\n",
+ __FILE__, __LINE__, cdi->mask, (cdi->mask & CDC_CLOSE_TRAY) ?
"TRUE" : "FALSE");
you're checking against cdi->mask but if you see how CDROM_CAN is defined:
#define CDROM_CAN(type) (cdi->ops->capability & ~cdi->mask & (type))
you see that the mask is negated and also cdi->ops->capability comes into play.
However, the problem is that the CDC_CLOSE_TRAY is turned on (i.e. is going to be off in the final check and yes, it _IS_ confusing :)) in the cdi->mask only for devices with caddy and popup loading mechanisms. I don't think we can reliably detect whether the drive can close its tray now on a drive-by-drive basis - from what i see in your dmesg output, your drive is mechtype_tray and such drives normally can close the tray. Alternatively, we could make another list :( of drive model names which cannot close its mechanism but this is kinda overkill imho. Jens, Bart?
Signature · 3 lines
Configure bugmail: http://bugzilla.kernel.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee.
[Bug 11602] cdrom drive cannot open the tray, but reported this badly in /proc/sys/dev/cdrom/info
In reply to [email protected]http://bugzilla.kernel.org/show_bug.cgi?id=11602
------- Comment #4 from [email protected] 2008-09-21 13:13 ------- I agree that my analysis in comment #0 was wrong. I understand that the cdrom drive itself reports the mechtype wrongly, so this seems to be a firmware problem of the "Optiarc DVD RW AD-7543A".
Currently I cannot find any firmware updates for this device.
http://sonynec-optiarc.eu/en/support-service/downloads/fw_dvd-writer-ad-series.html
Should I ask the Optirac to provide one? If yes, what is the name of the standard which they should to fulfill?
Signature · 3 lines
Configure bugmail: http://bugzilla.kernel.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee.
[Bug 11602] cdrom drive cannot open the tray, but reported this badly in /proc/sys/dev/cdrom/info
In reply to [email protected]http://bugzilla.kernel.org/show_bug.cgi?id=11602
------- Comment #5 from [email protected] 2008-09-21 21:42 ------- I don't think that the drive is reporting a wrong mechtype - it still _is_ equipped with a tray loading mechanism, it simply cannot close its tray by itself and needs user help :). Also, there's AFAIK no bit in the cdrom capabilities page returned by the drive which will tell you whether the drive can close itself - there's only a bit saying that the drive can eject the media via an ATAPI command.
The only solution, AFAICT, would be an artificial one: either a list of drive model names which cannot close their tray (ugly :( and generally frowned upon) or trying to lock the door and read sense data (hm, unreliable, overkill?). The wrongly reported "Can close tray" is based on the assumption that if the drive isn't caddy or popup loader then it can close its tray automatically as is the case with the gazillion drives out there with a tray loading mechanism.
Signature · 3 lines
Configure bugmail: http://bugzilla.kernel.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee.
[Bug 11602] cdrom drive cannot open the tray, but reported this badly in /proc/sys/dev/cdrom/info
In reply to [email protected]http://bugzilla.kernel.org/show_bug.cgi?id=11602
------- Comment #6 from [email protected] 2008-09-21 23:54 ------- In case of a list of devices which reports "tray" and cannot close the door I could imagine a list which is marked with __initdata and only in the memory when the module is loading. (This is not the case for the current ide_cd_quirks_list[] in drivers/ide/ide-cd.c .)
I don't know if similar structure to Desktop Management Interface (DMI,
http://www.dmtf.org/standards/dmi/ ) already exists for IDE. The interface ( linux/dmi.h ) is used several points of the kernel when the task is to identify a motherboard or BIOS version.
In case you close the door and try to lock and read sense data there could be a problem when there is no media in the drive. In this case I'm not sure that you can lock the door at all.
Signature · 3 lines
Configure bugmail: http://bugzilla.kernel.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee.
[Bug 11602] cdrom drive cannot open the tray, but reported this badly in /proc/sys/dev/cdrom/info
In reply to [email protected]http://bugzilla.kernel.org/show_bug.cgi?id=11602
[email protected] changed:
What |Removed |Added
----------------------------------------------------------------------------
AssignedTo|[email protected] |[email protected] Status|NEW |ASSIGNED
------- Comment #7 from [email protected] 2008-09-23 06:56 ------- Hi,
can you please try the following quick'n'dirty fix to see whether it fixes the problem for you?
Thanks.
Signature · 4 lines
Configure bugmail: http://bugzilla.kernel.org/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the assignee for the bug, or are watching the assignee. You are the assignee for the bug, or are watching the assignee.