Updated shutdown in Debian Lenny/Sid

2008-01-12 Thread Stephan Windmüller
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

2008-01-12 Thread Bartlomiej Zolnierkiewicz
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

2008-01-12 Thread Tobias Müller

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

2008-01-12 Thread Robert Hancock

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

2008-01-12 Thread mikp
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

2008-01-12 Thread Bartlomiej Zolnierkiewicz
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

2008-01-12 Thread Bartlomiej Zolnierkiewicz
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

2008-01-12 Thread Bartlomiej Zolnierkiewicz
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()

2008-01-12 Thread Bartlomiej Zolnierkiewicz
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

2008-01-12 Thread James Bottomley

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

2008-01-12 Thread Borislav Petkov

[...]

 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

2008-01-12 Thread Borislav Petkov
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

2008-01-12 Thread James Bottomley
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

2008-01-12 Thread Tejun Heo
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

2008-01-12 Thread Tejun Heo
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

2008-01-12 Thread Tejun Heo
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

2008-01-12 Thread Tejun Heo
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

2008-01-12 Thread Marc Howard Zuckman

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: