Re: kernel 2.6.25 with ide driver cs5520 does not boot.

From: Bartlomiej Zolnierkiewicz
Date: Wed May 14 2008 - 16:28:29 EST


On Friday 09 May 2008, TAKADA Yoshihito wrote:
> Hi.
>
> From: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx>
> Subject: Re: kernel 2.6.25 with ide driver cs5520 does not boot.
> Date: Fri, 9 May 2008 11:27:53 +0200
>
> > On Friday 09 May 2008, TAKADA Yoshihito wrote:
> > > Thanks for quick reply.
> > >
> > > I tried 2.6.26rc1. It hangs same as 2.6.25.
> > > kernel 2.6.26rc1 with cs5520 cannot boot. cs5520 scans ide0 and ide1.
> > > It seems 2nd port DMA base issue was solved.
> >
> > [...]
> >
> > Thanks.
> >
> > The following patch for 2.6.26-rc1 disables VDMA, please give it a try
> > (I haven't time to fully audit VDMA support yet but lets see if it is
> > the main source of the problems).
>
> I applied the patch. But kernel was hung.
> And I attempt to kill IDE_HFLAG_CS5520. It cannot boot, oo.
>
> kill IDE_HFLAG_VDMA : hang
> kill IDE_HFLAG_CS5520: hang
> kill both flags : boot

Thanks for investigating this - I forgot that currently VDMA and CS5520
host flags use the same bit (so it also needs to be fixed).

I'm going to send the following patch to Linus (please verify it):

From: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx>
Subject: [PATCH] cs5520: disable VDMA

Disable Virtual DMA support for now (it causes system hangs).

Thanks to TAKADA Yoshihito for the help with debugging the problem.

Reported-by: TAKADA Yoshihito <takada@xxxxxxxxxxxxx>
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@xxxxxxxxx>
---
drivers/ide/pci/cs5520.c | 2 +-
include/linux/ide.h | 8 ++++----
2 files changed, 5 insertions(+), 5 deletions(-)

Index: b/drivers/ide/pci/cs5520.c
===================================================================
--- a/drivers/ide/pci/cs5520.c
+++ b/drivers/ide/pci/cs5520.c
@@ -119,6 +119,7 @@ static const struct ide_dma_ops cs5520_d
.dma_timeout = ide_dma_timeout,
};

+/* FIXME: VDMA is disabled because it caused system hangs */
#define DECLARE_CS_DEV(name_str) \
{ \
.name = name_str, \
@@ -126,7 +127,6 @@ static const struct ide_dma_ops cs5520_d
.dma_ops = &cs5520_dma_ops, \
.host_flags = IDE_HFLAG_ISA_PORTS | \
IDE_HFLAG_CS5520 | \
- IDE_HFLAG_VDMA | \
IDE_HFLAG_NO_ATAPI_DMA | \
IDE_HFLAG_ABUSE_SET_DMA_MODE, \
.pio_mask = ATA_PIO4, \
Index: b/include/linux/ide.h
===================================================================
--- a/include/linux/ide.h
+++ b/include/linux/ide.h
@@ -1058,8 +1058,8 @@ enum {
IDE_HFLAG_NO_SET_MODE = (1 << 9),
/* trust BIOS for programming chipset/device for DMA */
IDE_HFLAG_TRUST_BIOS_FOR_DMA = (1 << 10),
- /* host uses VDMA (tied with IDE_HFLAG_CS5520 for now) */
- IDE_HFLAG_VDMA = (1 << 11),
+ /* host is CS5510/CS5520 */
+ IDE_HFLAG_CS5520 = (1 << 11),
/* ATAPI DMA is unsupported */
IDE_HFLAG_NO_ATAPI_DMA = (1 << 12),
/* set if host is a "non-bootable" controller */
@@ -1070,8 +1070,6 @@ enum {
IDE_HFLAG_NO_AUTODMA = (1 << 15),
/* host uses MMIO */
IDE_HFLAG_MMIO = (1 << 16),
- /* host is CS5510/CS5520 */
- IDE_HFLAG_CS5520 = IDE_HFLAG_VDMA,
/* no LBA48 */
IDE_HFLAG_NO_LBA48 = (1 << 17),
/* no LBA48 DMA */
@@ -1101,6 +1099,8 @@ enum {
IDE_HFLAG_NO_IO_32BIT = (1 << 30),
/* never unmask IRQs */
IDE_HFLAG_NO_UNMASK_IRQS = (1 << 31),
+ /* host uses VDMA (disabled for now) */
+ IDE_HFLAG_VDMA = 0,
};

#ifdef CONFIG_BLK_DEV_OFFBOARD
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/