Updated shutdown in Debian Lenny/Sid
Hello! The issue mentioned on [0] happened on my system a few weeks ago. But now it seems that Debian Testing (Lenny) and Unstable (Sid) corrected this problem with sysvinit (2.86.ds1-47)[1]. Perhaps you can add the distro to your list of fixed distros with updated shutdown. Regards Stephan Windmüller [0] http://linux-ata.org/shutdown.html [1] http://packages.debian.org/lenny/sysvinit signature.asc Description: Digital signature
Re: 40-wire cable detected when directly connected
On Saturday 12 January 2008, Bartlomiej Zolnierkiewicz wrote: [...] I've re-read the whole thread and it seems that the possible solution for Addonics card would be to detect it by PCI Subsystem Vendor/Device IDs. It seems I wasn't paying enough attention, Tejun already thought of this but unfortunately Addonics didn't set custom Subsystem IDs. Could you send the output of 'lspci -vvv -xxx' command? Still may be useful. Bart - To unsubscribe from this list: send the line unsubscribe linux-ide in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: 40-wire cable detected when directly connected
Hi Bartlomiej Zolnierkiewicz schrieb: As a workaround you can try using IDE subsystem siimage driver and pass idex=ata66 option or modify Tejun's patch to also override device side cable detection by replacing ATA_CBL_PATA80 with ATA_CBL_PATA40_SHORT. I'll try this. Could you send the output of 'lspci -vvv -xxx' command? 03:04.0 RAID bus controller: Silicon Image, Inc. PCI0680 Ultra ATA-133 Host Controller (rev 02) Subsystem: Silicon Image, Inc. Winic W-680 (Silicon Image 680 based) Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium TAbort- TAbort- MAbort- SERR- PERR- INTx- Latency: 64, Cache Line Size: 4 bytes Interrupt: pin A routed to IRQ 16 Region 0: I/O ports at df00 [size=8] Region 1: I/O ports at de00 [size=4] Region 2: I/O ports at dd00 [size=8] Region 3: I/O ports at dc00 [size=4] Region 4: I/O ports at db00 [size=16] Region 5: Memory at fdcff000 (32-bit, non-prefetchable) [size=256] [virtual] Expansion ROM at fdb0 [disabled] [size=512K] Capabilities: [60] Power Management version 2 Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-) Status: D0 PME-Enable- DSel=0 DScale=2 PME- Kernel driver in use: pata_sil680 00: 95 10 80 06 07 00 90 02 02 00 04 01 01 40 00 00 10: 01 df 00 00 01 de 00 00 01 dd 00 00 01 dc 00 00 20: 01 db 00 00 00 f0 cf fd 00 00 00 00 95 10 80 36 30: 00 00 00 00 60 00 00 00 00 00 00 00 0f 01 00 00 40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 60: 01 00 22 06 00 40 00 64 00 00 00 00 00 00 00 00 70: 08 00 00 00 00 60 1f 7c 08 00 00 00 00 30 1f 7c 80: 03 00 00 00 02 00 00 00 00 00 11 00 09 19 22 51 90: 00 fe 00 0d ff ff ff 3b 00 00 00 19 00 00 00 00 a0: 01 62 c1 10 c1 10 8a 32 c1 10 92 43 07 40 09 40 b0: 01 62 c1 10 c1 10 8a 32 c1 10 92 43 00 40 09 40 c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 Regards Tobias smime.p7s Description: S/MIME Cryptographic Signature
Re: PROBLEM REMAINS: [sata_nv ADMA breaks ATAPI] Crash on accessing DVD-RAM
Alexander wrote: Robert Hancock wrote: There's this patch which was intended to fix it: http://lkml.org/lkml/2007/11/22/148 I applied this patch to 2.6.24-rc7. Now at boot time my DVD-RW is normaly detected as: sr0: scsi3-mmc drive: 48x/48x writer dvd-ram cd/rw xa/form2 cdda tray But I cannot mount it. All my attempts failed with ISOFS: Unable to identify CD-ROM format. With mem=4098M or sata_nv.adma=0 it still mounts and works ok. As I wrote, it would appear that somehow the blk_queue_bounce_limit setting that the driver has made is not being respected and the block layer is still trying to feed it addresses over 4GB. Any ideas anyone? - To unsubscribe from this list: send the line unsubscribe linux-ide in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
SATA port multiplier(Sil 3132) and JMicron 361-363
My SII 3132 port multiplier works with the JMB363 controller on my motherboard using kernel-2.6.24-rc3 but not with the JMB361 esata controller which i have on a second motherboard. I get messages: ata5.15: failed to read PMP GSCR[1] (Emask=0x4) ahci :00:12.0: controller can't do PMP, turning off CAP_PMP The motherboard maker (ECS) and JMicron data claim that JMB361 has a port multiplier. Is there any chance this controller can be made to work in linux? I am willing to test patches. - To unsubscribe from this list: send the line unsubscribe linux-ide in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 21/21] ide-floppy: remove atomic test_*bit macros
On Friday 11 January 2008, Borislav Petkov wrote: This change is temporary and after unification of the IDE subsystem proper bit setting and testing macros will be introduced. Signed-off-by: Borislav Petkov [EMAIL PROTECTED] --- drivers/ide/ide-floppy.c | 82 +- 1 files changed, 45 insertions(+), 37 deletions(-) diff --git a/drivers/ide/ide-floppy.c b/drivers/ide/ide-floppy.c index 4106eb4..29c1983 100644 --- a/drivers/ide/ide-floppy.c +++ b/drivers/ide/ide-floppy.c @@ -479,12 +479,12 @@ static ide_startstop_t idefloppy_pc_intr(ide_drive_t *drive) debug_log(Reached %s interrupt handler\n, __FUNCTION__); - if (test_bit(PC_DMA_IN_PROGRESS, pc-flags)) { + if ((1UL PC_DMA_IN_PROGRESS) pc-flags) { How's about introducing new defines i.e. enum { IDE_FLOPPY_FLAG_PC_ABORT= (1 0), IDE_FLOPPY_FLAG_PC_DMA_RECOMMENDED = (1 1), IDE_FLOPPY_FLAG_PC_DMA_IN_PROGRESS = (1 2), ... } instead of open-coding the bit-shifts? dma_error = HWIF(drive)-ide_dma_end(drive); if (dma_error) { printk(KERN_ERR %s: DMA %s error\n, drive-name, write ? write : read); - set_bit(PC_DMA_ERROR, pc-flags); + pc-flags |= (1UL PC_DMA_ERROR); } else { pc-actually_transferred = pc-request_transfer; idefloppy_update_buffers(drive, pc); @@ -499,11 +499,11 @@ static ide_startstop_t idefloppy_pc_intr(ide_drive_t *drive) /* No more interrupts */ debug_log(Packet command completed, %d bytes transferred\n, pc-actually_transferred); - clear_bit(PC_DMA_IN_PROGRESS, pc-flags); + pc-flags = ((1UL PC_DMA_IN_PROGRESS) ^ ~0UL); Same can be achieved with: pc-flags = ~(1 PC_DMA_IN_PROGRESS); - To unsubscribe from this list: send the line unsubscribe linux-ide in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 14/21] ide-floppy: mv idefloppy_{should_,}report_error
On Friday 11 January 2008, Borislav Petkov wrote: In addition to shortening the function name, move the printk-call into the function thereby saving some code lines. Also, make the function out_of_line since it is not on a performance critical path. Signed-off-by: Borislav Petkov [EMAIL PROTECTED] --- drivers/ide/ide-floppy.c | 37 ++--- 1 files changed, 14 insertions(+), 23 deletions(-) diff --git a/drivers/ide/ide-floppy.c b/drivers/ide/ide-floppy.c index 49d83a1..b718615 100644 --- a/drivers/ide/ide-floppy.c +++ b/drivers/ide/ide-floppy.c @@ -707,16 +707,18 @@ static ide_startstop_t idefloppy_transfer_pc1(ide_drive_t *drive) return ide_started; } -/* - * Suppresses error messages resulting from Medium not present. - */ -static inline int idefloppy_should_report_error(idefloppy_floppy_t *floppy) +static void idefloppy_report_error(idefloppy_floppy_t *floppy, + idefloppy_pc_t *pc) { - Would make a sense to move the comment here instead of removing it (it is useful unless you remeber all -{sense_key,asc,ascq} value). if (floppy-sense_key == 0x02 floppy-asc == 0x3a floppy-ascq == 0x00) - return 0; - return 1; + return; Otherwise the patch is fine. - To unsubscribe from this list: send the line unsubscribe linux-ide in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 19/21] ide-floppy: fix most of the remaining checkpatch.pl issues
On Friday 11 January 2008, Borislav Petkov wrote: i.e., ERROR: switch and case should be at the same indent ERROR: need spaces around that '=' (ctx:VxV) ERROR: trailing statements should be on next line WARNING: no space between function name and open parenthesis '(' WARNING: printk() should include KERN_ facility level ERROR: That open brace { should be on the previous line ERROR: use tabs not spaces ERROR: do not use assignment in if condition WARNING: braces {} are not necessary for single statement blocks ERROR: need space after that ',' (ctx:VxV) WARNING: line over 80 characters ERROR: do not use assignment in if condition ... This should be the very last patch in the series (and combined with patch #11). Signed-off-by: Borislav Petkov [EMAIL PROTECTED] --- drivers/ide/ide-floppy.c | 147 +++-- 1 files changed, 75 insertions(+), 72 deletions(-) diff --git a/drivers/ide/ide-floppy.c b/drivers/ide/ide-floppy.c index 0729df5..3d9b1e5 100644 --- a/drivers/ide/ide-floppy.c +++ b/drivers/ide/ide-floppy.c @@ -47,13 +47,13 @@ #define IDEFLOPPY_DEBUG_INFO 0 #define IDEFLOPPY_DEBUG_BUGS 1 -#define IDEFLOPPY_DEBUG( fmt, args... ) +#define IDEFLOPPY_DEBUG(fmt, args...) #if IDEFLOPPY_DEBUG_LOG #define debug_log(fmt, args...) \ printk(KERN_INFO ide-floppy: fmt, ## args) #else -#define debug_log(fmt, args... ) do {} while(0) +#define debug_log(fmt, args...) do {} while (0) #endif Hmmm, these could have been dealt with in patch #4... [...] @@ -1314,34 +1314,34 @@ static int idefloppy_identify_device (ide_drive_t *drive,struct hd_driveid *id) #if IDEFLOPPY_DEBUG_INFO printk(KERN_INFO Dumping ATAPI Identify Device floppy parameters\n); switch (gcw.protocol) { - case 0: case 1: sprintf(buffer, ATA);break; - case 2: sprintf(buffer, ATAPI);break; - case 3: sprintf(buffer, Reserved (Unknown to ide-floppy));break; + case 0: case 1: sprintf(buffer, ATA); break; + case 2: sprintf(buffer, ATAPI); break; + case 3: sprintf(buffer, Reserved (Unknown to ide-floppy)); break; } printk(KERN_INFO Protocol Type: %s\n, buffer); switch (gcw.device_type) { - case 0: sprintf(buffer, Direct-access Device);break; - case 1: sprintf(buffer, Streaming Tape Device);break; - case 2: case 3: case 4: sprintf (buffer, Reserved);break; - case 5: sprintf(buffer, CD-ROM Device);break; - case 6: sprintf(buffer, Reserved); - case 7: sprintf(buffer, Optical memory Device);break; - case 0x1f: sprintf(buffer, Unknown or no Device type);break; - default: sprintf(buffer, Reserved); + case 0: sprintf(buffer, Direct-access Device); break; + case 1: sprintf(buffer, Streaming Tape Device); break; + case 2: case 3: case 4: sprintf(buffer, Reserved); break; + case 5: sprintf(buffer, CD-ROM Device); break; + case 6: sprintf(buffer, Reserved); + case 7: sprintf(buffer, Optical memory Device); break; + case 0x1f: sprintf(buffer, Unknown or no Device type); break; + default: sprintf(buffer, Reserved); } printk(KERN_INFO Device Type: %x - %s\n, gcw.device_type, buffer); printk(KERN_INFO Removable: %s\n, gcw.removable ? Yes:No); switch (gcw.drq_type) { - case 0: sprintf(buffer, Microprocessor DRQ);break; - case 1: sprintf(buffer, Interrupt DRQ);break; - case 2: sprintf(buffer, Accelerated DRQ);break; - case 3: sprintf(buffer, Reserved);break; + case 0: sprintf(buffer, Microprocessor DRQ); break; + case 1: sprintf(buffer, Interrupt DRQ); break; + case 2: sprintf(buffer, Accelerated DRQ); break; + case 3: sprintf(buffer, Reserved); break; } printk(KERN_INFO Command Packet DRQ Type: %s\n, buffer); switch (gcw.packet_size) { - case 0: sprintf(buffer, 12 bytes);break; - case 1: sprintf(buffer, 16 bytes);break; - default: sprintf(buffer, Reserved);break; + case 0: sprintf(buffer, 12 bytes); break; + case 1: sprintf(buffer, 16 bytes); break; + default: sprintf(buffer, Reserved); break; } printk(KERN_INFO Command Packet Size: %s\n, buffer); #endif /* IDEFLOPPY_DEBUG_INFO */ @@ -1349,13 +1349,16 @@ static int idefloppy_identify_device (ide_drive_t *drive,struct hd_driveid *id) if (gcw.protocol != 2) printk(KERN_ERR ide-floppy: Protocol is not ATAPI\n); else if (gcw.device_type != 0) - printk(KERN_ERR ide-floppy: Device type is not set to floppy\n); + printk(KERN_ERR ide-floppy: Device type is not set to + floppy\n); else if (!gcw.removable) printk(KERN_ERR ide-floppy: The removable flag is not set\n); else if (gcw.drq_type
Re: [PATCH 18/21] ide-floppy: fix error handling in idefloppy_probe()
On Friday 11 January 2008, Borislav Petkov wrote: Signed-off-by: Borislav Petkov [EMAIL PROTECTED] --- drivers/ide/ide-floppy.c |3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) diff --git a/drivers/ide/ide-floppy.c b/drivers/ide/ide-floppy.c index 89b26ea..0729df5 100644 --- a/drivers/ide/ide-floppy.c +++ b/drivers/ide/ide-floppy.c @@ -1737,7 +1737,8 @@ static int ide_floppy_probe(ide_drive_t *drive) emulation.\n, drive-name); goto failed; } - if ((floppy = kzalloc(sizeof (idefloppy_floppy_t), GFP_KERNEL)) == NULL) { + floppy = kzalloc(sizeof(idefloppy_floppy_t), GFP_KERNEL); + if (!floppy) { printk(KERN_ERR ide-floppy: %s: Can't allocate a floppy structure\n, drive-name); goto failed; I'm unable to see any problem with error handling here? This change should be combined with the rest of checkpatch.pl fixes. - To unsubscribe from this list: send the line unsubscribe linux-ide in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: PROBLEM REMAINS: [sata_nv ADMA breaks ATAPI] Crash on accessing DVD-RAM
On Sat, 2008-01-12 at 13:25 -0600, Robert Hancock wrote: Alexander wrote: Robert Hancock wrote: There's this patch which was intended to fix it: http://lkml.org/lkml/2007/11/22/148 I applied this patch to 2.6.24-rc7. Now at boot time my DVD-RW is normaly detected as: sr0: scsi3-mmc drive: 48x/48x writer dvd-ram cd/rw xa/form2 cdda tray But I cannot mount it. All my attempts failed with ISOFS: Unable to identify CD-ROM format. With mem=4098M or sata_nv.adma=0 it still mounts and works ok. As I wrote, it would appear that somehow the blk_queue_bounce_limit setting that the driver has made is not being respected and the block layer is still trying to feed it addresses over 4GB. Any ideas anyone? Actually, I'd be very sceptical that the blk_queue_bounce_limit isn't working as advertised; there'd be a large number of failures if it were not. However, the as advertised part doesn't seem to be generally well understood. The point being that block commands are only bounced if they come from the filesystem or the user, not if they're generated directly inside the kernel. Since the fault occurs before mount, it's suggestive of the latter. A long time ago, GFP_KERNEL allocations meant that the memory allocated was physically under 4GB. Then x86_64 (and before it ia64) wanted to break this. So they introduced a new flag: GFP_DMA32 that behaved like the old GFP_KERNEL and then changed GFP_KERNEL on their architectures to return memory from anywhere. I'd strongly suggest some piece of kernel memory was allocated for a transfer buffer without GFP_DMA32 and then passed in to the driver. Unfortunately, that could be anywhere inside cdrom or sr. Knowing what the actual command is might help ... some of the distinctive MMC media ones only have a single source. James - To unsubscribe from this list: send the line unsubscribe linux-ide in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 06/21] ide-floppy: remove struct idefloppy_flexible_disk_page
[...] This is not an equivalent transformation: header-wp is 0 or 1 pc.buffer[3] 0x80 is 0 or 0x80 It seems to work fine for -wp (because it is needlessly defined as 'int') but may seriously confuse set_disk_ro() and thus bdev_read_only() users. Should be fixed to '(pc.buffer[3] 0x80) ? 1 : 0' (or something similar). upps, sorry, that was silly. I changed it to: floppy-wp = !!(pc.buffer[3] 0x80); set_disk_ro(floppy-disk, floppy-wp); - page = (idefloppy_flexible_disk_page_t *) (header + 1); - - page-transfer_rate = be16_to_cpu(page-transfer_rate); - page-sector_size = be16_to_cpu(page-sector_size); - page-cyls = be16_to_cpu(page-cyls); - page-rpm = be16_to_cpu(page-rpm); - capacity = page-cyls * page-heads * page-sectors * page-sector_size; - if (memcmp (page, floppy-flexible_disk_page, sizeof (idefloppy_flexible_disk_page_t))) + + transfer_rate = be16_to_cpu(*(u16 *)pc.buffer[8 + 2]); + sector_size = be16_to_cpu(*(u16 *)pc.buffer[8 + 6]); + cyls = be16_to_cpu(*(u16 *)pc.buffer[8 + 8]); + rpm = be16_to_cpu(*(u16 *)pc.buffer[8 + 28]); + heads = pc.buffer[8 + 4]; + sectors = pc.buffer[8 + 5]; + + capacity = cyls * heads * sectors * sector_size; + + if ((1UL IDEFLOPPY_MEDIA_CHANGED) floppy-flags) IDEFLOPPY_MEDIA_CHANGED is set when block device is opened for the first time (please check idefloppy_open() for details) so I don't think it is the right change. 'Flexible Disk Page' is only 32 bytes so we are better off with leaving 'u8 flexible_disk_page[32]' in idefloppy_floppy_t and doing things the old way. Besides please do not intermix real changes like the above one with purely cleanup ones like idefloppy_flexible_disk_page_t removal. This is bad from maintainability point of view. If some patch causes problems it is easier to narrow it down by heaving purely cleanup changes separated out + if we would need to revert the real change we would have to make a separate patch doing it instead of just reverting the guilty commit (given that we don't want cleanup changes to be reverted as well). How about we get rid of that chunk altogether? floppy-flexible_disk_page is used only here for the purpose of printk-ing to the syslog and has no real purpose otherwise. Do we need that info spewed into the syslog at all? -- Regards/Gruß, Boris. - To unsubscribe from this list: send the line unsubscribe linux-ide in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: [PATCH 00/21] ide-floppy redux v2
On Sat, Jan 12, 2008 at 09:14:39PM +0100, Bartlomiej Zolnierkiewicz wrote: [...] PS1 Please rebase the patches still needing polishing on top of updated IDE quilt tree, recast them and respin the patch series (no need to post already merged patches). sure, will do. PS2 what happend to fix DMA error reporting patch? (#13 is missing, hmm?) Yeah, this is strange. It seems git-send-email missed some of the patches. I had to send #16,#17 manually but didn't notice #13 was also missing. Will send with the next batch. -- Regards/Gruß, Boris. - To unsubscribe from this list: send the line unsubscribe linux-ide in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: PROBLEM REMAINS: [sata_nv ADMA breaks ATAPI] Crash on accessing DVD-RAM
On Sat, 2008-01-12 at 19:38 -0600, Robert Hancock wrote: James Bottomley wrote: On Sat, 2008-01-12 at 17:04 -0600, Robert Hancock wrote: I don't think the problem is that there's some buffer which is getting allocated above 4GB and never bounced, since the problem goes away if ADMA is disabled entirely and the DMA mask remains 32-bit always. My guess is something is basing its decision on whether to bounce or not on the device DMA mask. That can't possibly work properly for sata_nv since the same PCI device has 2 ports, one of which can be in ADMA mode and 64-bit capable and the other can be in legacy mode and only 32-bit capable. Erm, well, you can't decouple them. Having a differing blk queue bounce mask and device mask is going to cause huge trouble. The reason is this insidious nasty called swiotlb. Basically, with it enabled (and again, it can be on ia64 or x86_64), the kernel can bypass the bounce limit safe in the knowledge that swiotlb will fix up behind in the dma_map_ Unfortunately, if the device mask doesn't match the queue mask then swiotlb will never kick in and you'll end up with mapped pages beyond the 4GB limit. Yuck.. All the IOMMU DMA mapping code checks against the device DMA mask, so it looks like if we get to the point of doing the DMA mapping on 4GB addresses in libata we're screwed with this approach. The key problem is that both ata_ports share the same struct device with one DMA mask which really doesn't match what this controller wants. I wonder if we could do a different struct device for each port? Other than that, I guess the solutions would be to just set a 32-bit mask on the device if either port has an ATAPI device connected (which is fairly ugly, considering that you could do things like hotplug an ATAPI device when the other port was in use, for example), or do something to prevent requests from reaching this point with 4GB addresses in the first place.. Well ... assuming this is the problem (and perhaps we'd better get the traces to confirm) there are at least three possible solutions: 1. As you say, just take the pci device mask down to 32 bits. 2. Find the problematic allocations and add GFP_DMA32 3. set the mask on the actual SCSI device rather than the PCI device and pass that into dma_map_ (this approach would have to get signoff from the arch people; I know it will work on parisc and x86 but I'm not sure about any other arch). Tejun, I believe you had a patch that was printing warnings when libata tried to program a legacy PRD with an address over 4GB. Could we change that to WARN_ON and get someone experiencing this to try it and see what the stack trace points to? Unfortunately, the stack trace probably won't help, since the command likely gets issued from the block request function, so the trace won't go back to the culpable initiator; that's why the command would be helpful. Well, dumping the ATA command surely isn't helpful, as I'm sure it will be PACKET. I guess we'd have to dump out the actual CDB.. Sorry, when a SCSI person says dump the command, they mean the CDB. James - To unsubscribe from this list: send the line unsubscribe linux-ide in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH #upstream-fixes] sata_sil24: fix stupid typo
Fix stupid typo. Signed-off-by: Tejun Heo [EMAIL PROTECTED] --- drivers/ata/sata_sil24.c |2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/ata/sata_sil24.c b/drivers/ata/sata_sil24.c index b4c674d..d9c8b32 100644 --- a/drivers/ata/sata_sil24.c +++ b/drivers/ata/sata_sil24.c @@ -301,7 +301,7 @@ static struct sil24_cerr_info { [PORT_CERR_PKT_PROT]= { AC_ERR_HSM, ATA_EH_SOFTRESET, invalid data directon for ATAPI CDB }, [PORT_CERR_SGT_BOUNDARY] = { AC_ERR_SYSTEM, ATA_EH_SOFTRESET, -SGT no on qword boundary }, +SGT not on qword boundary }, [PORT_CERR_SGT_TGTABRT] = { AC_ERR_HOST_BUS, ATA_EH_SOFTRESET, PCI target abort while fetching SGT }, [PORT_CERR_SGT_MSTABRT] = { AC_ERR_HOST_BUS, ATA_EH_SOFTRESET, - To unsubscribe from this list: send the line unsubscribe linux-ide in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
[PATCH #upstream-fixes] sata_sil24: freeze on non-dev errors reported via CERR
CERR reports errors detected during executing a command. This doesn't mean the error is tied to the command and can be recovered by just issuing it again. Many of the errors are fatal port-wide connditions including HSM violation, host bus error and ATA bus error and require freezing and port reset. The freezing part wasn't implemented previously. This used to be okay because port resets were scheduled anyway and EH eventually resets and recovers the port. With PMP support added, this is no longer true. The error condition and recover actions are attributed to the fan-out port and the host port condition isn't properly recovered leading to EH failures. This patch makes CERR errors which require resets to freeze the port. This will force host port reset and proper recovery. Signed-off-by: Tejun Heo [EMAIL PROTECTED] Cc: Andrew Ryder [EMAIL PROTECTED] --- drivers/ata/sata_sil24.c |3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/ata/sata_sil24.c b/drivers/ata/sata_sil24.c index b4c674d..d84561d 100644 --- a/drivers/ata/sata_sil24.c +++ b/drivers/ata/sata_sil24.c @@ -1094,10 +1094,13 @@ static void sil24_error_intr(struct ata_port *ap) if (ci ci-desc) { err_mask |= ci-err_mask; action |= ci-action; + if (action ATA_EH_RESET_MASK) + freeze = 1; ata_ehi_push_desc(ehi, %s, ci-desc); } else { err_mask |= AC_ERR_OTHER; action |= ATA_EH_SOFTRESET; + freeze = 1; ata_ehi_push_desc(ehi, unknown command error %d, cerr); } - To unsubscribe from this list: send the line unsubscribe linux-ide in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: Problem setting dma using pata_it821x driver in vanilla 2.6.23.12 and gentoo-sources 2.6.23-r3
Marc Howard Zuckman wrote: On Sat, 12 Jan 2008, Bartlomiej Zolnierkiewicz wrote: In smart mode controller takes care of mode programming. Cc'ing Alan and Bartlomiej. Guys, is this the smart mode problem? Do ide and libata have this fixed in 2.6.24-rc? [ added Alan and myself ;) to cc: ] Marc, please also send output of 'hdparm --Istdout /dev/hde' command. This is the output from hdparm with my non-working vanilla 2.6.23.12. /dev/hde: 2008 1301 0501 4721 0101 0005 496e 7465 6772 6174 6564 2054 6563 686e 6f6c 6f67 7920 4578 7072 6573 7320 496e 6320 2020 2020 2020 0fff 0007 003f 9eae 12a1 0001 0003 3133 2121 9111 0091 3266 0021 0021 0001 0505 0005 0500 0005 0005 0005 0040 0001 Hmm... this is horrifying. $ hdparm --Istdin hdparm.out ATA device, with non-removable media Model Number: Integrated Technology Express Inc Serial Number: G! Standards: Likely used: 1 Configuration: Logical max current cylinders 0 0 heads 0 0 sectors/track 0 0 -- device size with M = 1024*1024: 0 MBytes device size with M = 1000*1000: 0 MBytes Capabilities: IORDY not likely Cannot perform double-word IO R/W multiple sector transfer: not supported DMA: not supported PIO: pio0 The only thing which matches the number of sectors is at word 100 which is in reserved area. What's going on here? -- tejun - To unsubscribe from this list: send the line unsubscribe linux-ide in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: 40-wire cable detected when directly connected
Tobias Müller wrote: Hi Please apply the attached patch and specify libata.force_cbl=80 as kernel boot parameter. If you load libata from initrd or after boot you need to pass 'force_cbl=80' as module parameter. How you do it depends on your distro. Ah.. right. I'm brewing more complete debug helper patch. I'll take the above into consideration. -- tejun - To unsubscribe from this list: send the line unsubscribe linux-ide in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html
Re: Problem setting dma using pata_it821x driver in vanilla 2.6.23.12 and gentoo-sources 2.6.23-r3
On Sun, 13 Jan 2008, Tejun Heo wrote: Does this change anything? And, yeah, I really wanna see the hdparm --Istdout too. I applied the patch to libata-core.c. A scsi device, /dev/sdb, was recognized, but partition /dev/sdb1 (where all the data resides) is not seen. Boot log messages and hdparm output follow: Linux version 2.6.23.12 ([EMAIL PROTECTED]) (gcc version 4.1.1 (Gentoo 4.1.1-r3)) #5 SMP Sun Jan 13 01:07:07 EST 2008 BIOS-provided physical RAM map: BIOS-e820: - 0009f800 (usable) BIOS-e820: 0009f800 - 000a (reserved) BIOS-e820: 000f - 0010 (reserved) BIOS-e820: 0010 - 5fff (usable) BIOS-e820: 5fff - 5fff3000 (ACPI NVS) BIOS-e820: 5fff3000 - 6000 (ACPI data) BIOS-e820: fec0 - 0001 (reserved) 639MB HIGHMEM available. 896MB LOWMEM available. found SMP MP-table at 000f5320 Entering add_active_range(0, 0, 393200) 0 entries of 256 used Zone PFN ranges: DMA 0 - 4096 Normal 4096 - 229376 HighMem229376 - 393200 Movable zone start PFN for each node early_node_map[1] active PFN ranges 0:0 - 393200 On node 0 totalpages: 393200 DMA zone: 32 pages used for memmap DMA zone: 0 pages reserved DMA zone: 4064 pages, LIFO batch:0 Normal zone: 1760 pages used for memmap Normal zone: 223520 pages, LIFO batch:31 HighMem zone: 1279 pages used for memmap HighMem zone: 162545 pages, LIFO batch:31 Movable zone: 0 pages used for memmap DMI 2.3 present. Intel MultiProcessor Specification v1.4 Virtual Wire compatibility mode. OEM ID: OEM0 Product ID: PROD APIC at: 0xFEE0 Processor #0 15:2 APIC version 17 I/O APIC #2 Version 17 at 0xFEC0. Enabling APIC mode: Flat. Using 1 I/O APICs Processors: 1 Allocating PCI resources starting at 7000 (gap: 6000:9ec0) Built 1 zonelists in Zone order. Total pages: 390129 Kernel command line: BOOT_IMAGE=p1ata2.6.23 ro root=307 ide0=ata66 ide2=ata66 ide_setup: ide0=ata66 -- OBSOLETE OPTION, WILL BE REMOVED SOON! ide_setup: ide2=ata66 -- OBSOLETE OPTION, WILL BE REMOVED SOON! mapped APIC to b000 (fee0) mapped IOAPIC to a000 (fec0) Enabling fast FPU save and restore... done. Enabling unmasked SIMD FPU exception support... done. Initializing CPU#0 PID hash table entries: 4096 (order: 12, 16384 bytes) Detected 2813.563 MHz processor. Console: colour VGA+ 80x25 console [tty0] enabled Dentry cache hash table entries: 131072 (order: 7, 524288 bytes) Inode-cache hash table entries: 65536 (order: 6, 262144 bytes) Memory: 1552764k/1572800k available (3124k kernel code, 18908k reserved, 1707k data, 256k init, 655296k highmem) virtual kernel memory layout: fixmap : 0xffe1a000 - 0xf000 (1940 kB) pkmap : 0xff80 - 0xffc0 (4096 kB) vmalloc : 0xf880 - 0xff7fe000 ( 111 MB) lowmem : 0xc000 - 0xf800 ( 896 MB) .init : 0xc05bf000 - 0xc05ff000 ( 256 kB) .data : 0xc040d037 - 0xc05b7ebc (1707 kB) .text : 0xc010 - 0xc040d037 (3124 kB) Checking if this processor honours the WP bit even in supervisor mode... Ok. Calibrating delay using timer specific routine.. 5631.42 BogoMIPS (lpj=11262850) Mount-cache hash table entries: 512 CPU: After generic identify, caps: bfebfbff 4400 CPU: Trace cache: 12K uops, L1 D cache: 8K CPU: L2 cache: 512K CPU: Physical Processor ID: 0 CPU: After all inits, caps: bfebfbff b080 4400 Intel machine check architecture supported. Intel machine check reporting enabled on CPU#0. CPU0: Intel P4/Xeon Extended MCE MSRs (12) available CPU0: Thermal monitoring enabled Compat vDSO mapped to e000. Checking 'hlt' instruction... OK. SMP alternatives: switching to UP code Freeing SMP alternatives: 17k freed CPU0: Intel(R) Pentium(R) 4 CPU 2.80GHz stepping 09 Total of 1 processors activated (5631.42 BogoMIPS). ExtINT not setup in hardware but reported by MP table ENABLING IO-APIC IRQs ..TIMER: vector=0x31 apic1=0 pin1=2 apic2=0 pin2=0 Brought up 1 CPUs NET: Registered protocol family 16 PCI: PCI BIOS revision 2.10 entry at 0xfb640, last bus=3 PCI: Using configuration type 1 Setting up standard PCI resources SCSI subsystem initialized libata version 2.21 loaded. usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb PCI: Probing PCI hardware PCI: Probing PCI hardware (bus 00) PCI quirk: region 1000-107f claimed by ICH4 ACPI/GPIO/TCO PCI quirk: region 1080-10bf claimed by ICH4 GPIO PCI: Transparent bridge - :00:1e.0 PCI: Using IRQ router PIIX/ICH [8086/24d0] at :00:1f.0 PCI-APIC IRQ transform: :00:1d.0[A] - IRQ 16 PCI-APIC IRQ transform: :00:1d.1[B] - IRQ 19 PCI-APIC IRQ transform: :00:1d.2[C] - IRQ 18 PCI-APIC IRQ transform: