All of lore.kernel.org
 help / color / mirror / Atom feed
From: Davin McCall <davmac@ozonline.com.au>
To: Bartlomiej Zolnierkiewicz <B.Zolnierkiewicz@elka.pw.edu.pl>
Cc: linux-kernel@vger.kernel.org, linux-ide@vger.kernel.org
Subject: Re: [PATCH] fix issues with loading PCI ide drivers as modules (linux 2.6.0)
Date: Sun, 4 Jan 2004 14:21:41 +1100	[thread overview]
Message-ID: <20040104142141.2bf4f230.davmac@ozonline.com.au> (raw)
In-Reply-To: <200401040256.57419.bzolnier@elka.pw.edu.pl>

On Sun, 4 Jan 2004 02:56:57 +0100
Bartlomiej Zolnierkiewicz <B.Zolnierkiewicz@elka.pw.edu.pl> wrote:

> Are you aware that your change brakes "idex=base", "idex=base,ctl"
> and "idex=base,ctl,irq" kernel parameters?  If these parameters are used
> hwif->chipset is also set to ide_generic.  Now if controller is a PCI one
> and PCI IDE support is compiled in hwif->chipset will be set to
> ide_pci_takeover and drives won't be probed.

Ok. I see the problem.

> When it fails controller+drives are not being programmed correctly
> (because probe_hwif() returns early).  "takeover" is not supported because
> you need to reprogram controller/drive to do DMA, but probing code
> (which does also reprogramming) can race with actual data transfer.

... So basically, it's not nearly as simple as I had hoped.

However, there are still two genuine but easily solveable problems that I can see:

1) unless "idex=base,ctl,irq" is used, the hwif->chipset is left as "ide_unknown"
   (this means for that the hwif can get re-allocated in setup-pci.c - ide_match_hwif() -
    and clobbered)
2) if "idex=base,ctl,irq" IS used, the hwif structure will still get clobbered when a PCI
   chipset module is loaded.

What about this is a solution to these problems:
 - set hwif->chipset to "ide_generic" instead of leaving it as "ide_unknown" (ide-probe.c);
 - if ide_match_hwif() returns an already allocated hwif, do not clobber it in ide_hwif_configure() (setup-pci.c)

Two individual patches below; again any comments appreciated!

Davin



--- ide-probe.c.orig	Sun Jan  4 14:17:22 2004
+++ ide-probe.c	Sun Jan  4 13:58:44 2004
@@ -1343,6 +1343,7 @@
 			int unit;
 			if (!hwif->present)
 				continue;
+			if (hwif->chipset == ide_unknown) hwif_chipset = ide_generic;
 			for (unit = 0; unit < MAX_DRIVES; ++unit)
 				if (hwif->drives[unit].present)
 					ata_attach(&hwif->drives[unit]);


--- setup-pci.c.orig	Sun Jan  4 14:17:30 2004
+++ setup-pci.c	Sun Jan  4 14:12:23 2004
@@ -441,6 +441,9 @@
 	}
 	if ((hwif = ide_match_hwif(base, d->bootable, d->name)) == NULL)
 		return NULL;	/* no room in ide_hwifs[] */
+	if (hwif->chipset != ide_unknown)
+		return NULL;  /* clash with already allocated hwif */
+
 	if (hwif->io_ports[IDE_DATA_OFFSET] != base) {
 fixup_address:
 		ide_init_hwif_ports(&hwif->hw, base, (ctl | 2), NULL);



  reply	other threads:[~2004-01-04  3:18 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-01-03  4:28 [PATCH] fix issues with loading PCI ide drivers as modules (linux 2.6.0) Davin McCall
2004-01-04  1:56 ` Bartlomiej Zolnierkiewicz
2004-01-04  3:21   ` Davin McCall [this message]
2004-01-04  3:52     ` Bartlomiej Zolnierkiewicz
2004-01-04  6:31       ` Davin McCall
2004-01-04 14:47         ` Bartlomiej Zolnierkiewicz
2004-01-05  2:09           ` Davin McCall
2004-01-05 14:16             ` Bartlomiej Zolnierkiewicz
2004-01-06  2:51               ` Davin McCall
2004-01-06 11:13                 ` Bartlomiej Zolnierkiewicz
2004-01-06 13:09                   ` Davin McCall
2004-01-06 13:45                   ` Davin McCall
2004-01-30  3:27                   ` [PATCH] various IDE patches/cleanups Davin McCall
2004-01-30  3:30                     ` Davin McCall
2004-01-30  3:33                       ` Davin McCall
2004-01-30  3:34                         ` Davin McCall
2004-01-30  3:35                           ` Davin McCall
2004-02-05  5:21                         ` Davin McCall
2004-02-05  6:37                           ` Davin McCall
2004-02-03 19:41                     ` Bartlomiej Zolnierkiewicz
2004-02-05  3:51                       ` Davin McCall

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20040104142141.2bf4f230.davmac@ozonline.com.au \
    --to=davmac@ozonline.com.au \
    --cc=B.Zolnierkiewicz@elka.pw.edu.pl \
    --cc=linux-ide@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.