Lost CDROM on 9.1 with ATA_CAM on Promise controller

Andre Albsmeier Andre.Albsmeier at siemens.com
Fri Apr 19 15:52:55 UTC 2013


On Thu, 18-Apr-2013 at 13:53:14 +0200, Alexander Motin wrote:
> On 17.04.2013 12:47, Andre Albsmeier wrote:
> > On Wed, 17-Apr-2013 at 10:53:54 +0200, Jeremy Chadwick wrote:
> >> On Wed, Apr 17, 2013 at 08:26:00AM +0200, Andre Albsmeier wrote:
> >>> On Tue, 16-Apr-2013 at 21:38:22 +0200, Jeremy Chadwick wrote:
> >>>> On Tue, Apr 16, 2013 at 07:55:20PM +0200, Andre Albsmeier wrote:
> >>>>> I have lost one of my CDROM drives (HL-DT-STDVD-RAM GH22LP20/2.00)
> >>>>> after going from 7.4 to 9.1 when using ATA_CAM. It is attached to
> >>>>> a Promise PDC20268 UDMA100 controller. A standard harddisk drive
> >>>>> attached to this controller works well. Cables, controller and drive
> >>>>> where replaced already.
> >>>>>
> >>>>> Kernel gives me:
> >>>>>
> >>>>> atapci1: <Promise PDC20268 UDMA100 controller> port 0xb000-0xb007,0xa800-0xa803,0xa400-0xa407,0xa000-0xa003,0x9800-0x980f mem 0xdf800000-0xdf803fff irq 11 at device 12.0 on pci0
> >>>>> ata2: <ATA channel> at channel 0 on atapci1
> >>>>> ata3: <ATA channel> at channel 1 on atapci1
> >>>>> ...
> >>>>> ada0 at ata2 bus 0 scbus2 target 0 lun 0
> >>>>> ada0: <Maxtor 7B300R0 BAH41G10> ATA-7 device
> >>>>> ada0: 100.000MB/s transfers (UDMA5, PIO 8192bytes)
> >>>>> ada0: 286188MB (586114704 512 byte sectors: 16H 63S/T 16383C)
> >>>>> ...
> >>>>> (cd2:ata3:0:0:0): got CAM status 0x50
> >>>>> (cd2:ata3:0:0:0): fatal error, failed to attach to device
> >>>>> (cd2:ata3:0:0:0): lost device, 4 refs
> >>>>> (cd2:ata3:0:0:0): removing device entry
> >>>>> ...
> >>>>>
> >>>>> Attaching the CDROM drive to the controller that is integrated on
> >>>>> the mainboard (Intel PIIX4 UDMA33 controller) does not show this
> >>>>> problem (but here I don't have UDMA66).
> >>>>>
> >>>>> It also works when not using ATA_CAM:
> >>>>>
> >>>>> ...
> >>>>> acd0: DVDR <HL-DT-STDVD-RAM GH22LP20/2.00> at ata3-master UDMA66
> >>>>> ...
> >>>>>
> >>>>> So this semes to be a problem with the Promise controller and ATA_CAM.
> >>>>>
> >>>>> Any ideas? Or should I file PR?
> >>>>
> >>>> The controller in question is a Promise Ultra100 TX2.
> >>>
> >>> Right. Tried with an Ultra133, same effect.
> >>>
> >>>>
> >>>> The error message comes from sys/cam/scsi/scsi_cd.c, in function
> >>>> cddone().  The logic is a little hard for me to follow (I understand
> >>>> about 70% of it).  Look at lines 1724 to 1877 for stable/9.
> >>>>
> >>>> 1. Can you provide full output from a verbose boot when the CD/DVD drive
> >>>> is attached to the Promise controller?
> >>>
> >>> Attached below. I have just filtered out some ahc cruft...
> >>>
> >>> Later I will try to boot a -current kernel -- just to see
> >>> how this behaves...
> >>>
> >>>>
> >>>> 2. What firmware version the card is using?  The PDC20268 had many, many
> >>>> firmware problems relating to ATAPI devices.
> >>>
> >>> It is the latest BIOS: 2.20.0.15.
> >>>
> >>>>
> >>>> 3. I wouldn't worry about ATA66 vs. ATA33; this drive can only support
> >>>> up to about 22MBytes/second so ATA66 isn't going to get you anything,
> >>>> so as a workaround, using the PIIX4 for it would not hurt you.
> >>>
> >>> Probably. But I already had cdrecord complain when it
> >>> came to the funky DMA speed test it is doing. It went
> >>> away when using the UDMA66 port. And on the other hand
> >>> I sometimes use the PIIX4 port for other stuff and I
> >>> do not want to attach the cdrom to the slave port.
> >>>
> >>>>
> >>>> 4. ONLY if this turns out to be a "controller thing": I'm not sure how
> >>>> much effort should be spent trying to make this work, as the PDC20268 is
> >>>> legacy/deprecated hardware (made/released 13 years ago).
> >>>
> >>> The whole box is more than 13 years old (good old Asus BX board) ;-)
> >>>
> >>> But since it worked in 7.4-STABLE I feel that this is some kind
> >>> of regression. I do not want to waste anyone's resources in fixing
> >>> it -- just if someone is curious and/or has an idea how to fix
> >>> it...
> >>>
> >>> And here is the dmesg:
> >>>
> >>> {snipping for mail brevity}
> >>
> >> Thanks.  CC'd ken@ and mav@ for advice on this.  Here's the dmesg:
> >>
> >> http://lists.freebsd.org/pipermail/freebsd-stable/2013-April/073131.html
> >>
> >> Short details:
> >>
> >> The device under scrutiny here is cd2 on ata3, which is an ATAPI
> >> IDE-based optical drive.  The drive works when either:
> >>
> >> a) Connected to a different IDE controller (atapci0), or,
> >> b) When ATA_CAM is removed (i.e. use ata(4) exclusively).
> >
> > And just as a note: The -current kernel from
> >
> > https://snapshots.glenbarber.us/Latest/FreeBSD-10.0-CURRENT-i386-20130316-r248381-bootonly.iso
> >
> > shows the same problem...
> 
> Some of Promise controllers are known to have problems with ATAPI DMA. 
> Have you tried to disable DMA on that channel or device with loader 
> tunable like like hint.ata.3.mode=PIO4 ?

Interestingly, now it attaches properly:

cd2 at ata3 bus 0 scbus3 target 0 lun 0
cd2: <HL-DT-ST DVD-RAM GH22LP20 2.00> Removable CD-ROM SCSI-0 device 
cd2: 16.700MB/s transfers (PIO4, ATAPI 12bytes, PIO 65534bytes)
cd2: Attempt to query device size failed: NOT READY, Medium not present - tray closed

Anyway, this thing worked until 7.4-STABLE in DMA66 mode and burned
quite a few DVDs. And it attaches under 9.1 without ATA_CAM and even
with atapicam (although here it probes with 3.300MB/s transfers and I
didn't try to burn a DVD actually).

So while I cannot prove that this controller doesn't have problems
with ATAPI DMA, especially 7.4 found a way to make it work anyway...

Thanks,

	-Andre


> 
> -- 
> Alexander Motin

-- 
Amateurs like Linux, but professionals prefer FreeBSD.


More information about the freebsd-stable mailing list