Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 18 Apr 2013 14:53:14 +0300
From:      Alexander Motin <mav@FreeBSD.org>
To:        Andre Albsmeier <Andre.Albsmeier@siemens.com>
Cc:        Jeremy Chadwick <jdc@koitsu.org>, Kenneth Merry <ken@freebsd.org>, "freebsd-stable@freebsd.org" <freebsd-stable@freebsd.org>
Subject:   Re: Lost CDROM on 9.1 with ATA_CAM on Promise controller
Message-ID:  <516FDEAA.4040207@FreeBSD.org>
In-Reply-To: <20130417094712.GA16791@bali>
References:  <20130416175520.GA9548@bali> <20130416193822.GA83620@icarus.home.lan> <20130417062600.GA15613@bali> <20130417085354.GA98850@icarus.home.lan> <20130417094712.GA16791@bali>

next in thread | previous in thread | raw e-mail | index | archive | help
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 ?

-- 
Alexander Motin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?516FDEAA.4040207>