Re: [PATCH 6/6] ide: rework handling of serialized ports

Sergei Shtylyov
2008-11-04T18:30:39Z

Bartlomiej Zolnierkiewicz wrote:

> From: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>
> Subject: [PATCH] ide: rework handling of serialized ports

> * hpt366: set IDE_HFLAG_SERIALIZE in hwif->host_flags if needed
> in init_hwif_hpt366(). Remove HPT_SERIALIZE_IO while at it.

> * Set IDE_HFLAG_SERIALIZE in hwif->host_flags if needed in
> ide_init_port().

> * Convert init_irq() to use IDE_HFLAG_SERIALIZE together with
> hwif->host to find out ports which need to be serialized.

> * Remove no longer needed save_match() and ide_hwif_t.serialized.

> This patch should fix the incorrect grouping of port(s) from
> host(s) that need serialization with port(s) that happen to use
> the same IRQ(s) but are from the host(s) that don't need it.

> Cc: Sergei Shtylyov <sshtylyov@ru.mvista.com>
> Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>

Acked-by: Sergei Shtylyov <sshtylyov@ru.mvista.com>

> static int __devinit init_dma_hpt366(ide_hwif_t *hwif,
> Index: b/drivers/ide/ide-probe.c
> ===================================================================
> --- a/drivers/ide/ide-probe.c
> +++ b/drivers/ide/ide-probe.c
[...]
> + if (hwif->host_flags & IDE_HFLAG_SERIALIZE) {
> + if (hwif->host == h->host)
> + match = h;

Can be collapsed into a single *if*, and braces not needed either way.

> @@ -1436,10 +1398,8 @@ static void ide_init_port(ide_hwif_t *hw
> }
>
> if ((d->host_flags & IDE_HFLAG_SERIALIZE) ||
> - ((d->host_flags & IDE_HFLAG_SERIALIZE_DMA) && hwif->dma_base)) {
> - if (hwif->mate)
> - hwif->mate->serialized = hwif->serialized = 1;
> - }
> + ((d->host_flags & IDE_HFLAG_SERIALIZE_DMA) && hwif->dma_base))
> + hwif->host_flags |= IDE_HFLAG_SERIALIZE;

I don't see what use is forcing this flag at all here -- it doesn't seem
to be checked only in init_irq() now, so this *if* could just be moved there...

MBR, Sergei