From: Alan Cox <alan@redhat.com>
To: rusty@rustcorp.com.au (Rusty Russell)
Cc: alan@redhat.com, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] Experimental IDE oops dumper v0.1
Date: Mon, 16 Sep 2002 08:18:07 -0400 (EDT) [thread overview]
Message-ID: <200209161218.g8GCI7301692@devserv.devel.redhat.com> (raw)
In-Reply-To: <20020916120022.AD2EA2C06F@lists.samba.org> from "Rusty Russell" at Sep 16, 2002 09:52:46 PM
> + /* Pause (at least 400ns) in case we just issued a command */
> + oopser_usec(1);
> + for (i = 0; i < 1000; i++) {
> + b = inb(HD_STATUS);
> + if (!(b & BUSY_STAT)) {
> + if (b & ERR_STAT) return 0;
> + if (b & flag) return 1;
> + }
> + oopser_usec(1000);
This will stop working on SATA when VDMA goes into newer controllers btw.
> + /* Bits 24-27, 0x40=LBA, 0x10=slave */
> + if (!wait_before_command()) return -EIO;
> + outb(0x40 | (master ? 0 : 0x10) | ((lba >> 24) & 0x0F), HD_CURRENT);
Doesn't work for LBA48
> + if (!wait_before_command()) return -EIO;
> + outb(0x40 | (master ? 0 : 0x10) | ((lba >> 24) & 0x0F), HD_CURRENT);
Ditto
> +/* Called with interrupts off */
> +int oopser_read_ide(char dump[512], unsigned int block)
> +{
> + /* Wait for non-busy: if not, reset anyway */
> + wait_before_command();
> + /* Soft reset of drive (set nIEN as well) */
> + outb(0x0e, HD_CMD);
Be careful here - one or two drives get nIEN backwards, you might just
want to turn off interrupts and be done with it
> + oopser_usec(1); /* 400ns according to spec */
> + outb(0x0a, HD_CMD);
You really need to reset and reprogram/retune the controller as well.
I like the infrastructure but the IDE dumper code is wishful thinking
in one or two spots. You don't know f the controller is in DMA modes,
tuned for different things to the drives or legacy free. Im not sure what
to do for legacy free cases but the other bits like LBA48 and retuning
probably can be handled with some small chipset specific hooks
Alan
next prev parent reply other threads:[~2002-09-16 12:13 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-09-16 11:52 [PATCH] Experimental IDE oops dumper v0.1 Rusty Russell
2002-09-16 12:18 ` Alan Cox [this message]
2002-09-16 12:39 ` jbradford
2002-09-16 9:43 ` Rob Landley
2002-09-16 15:14 ` jbradford
2002-09-16 19:55 ` Vojtech Pavlik
2002-09-16 19:52 ` Vojtech Pavlik
2002-09-16 22:22 ` Alan Cox
2002-09-17 0:49 ` Rusty Russell
2002-09-17 7:42 ` Andre Hedrick
2002-09-17 9:57 ` Alan Cox
2002-09-18 4:19 ` Rusty Russell
2002-09-18 6:00 ` Andre Hedrick
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=200209161218.g8GCI7301692@devserv.devel.redhat.com \
--to=alan@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=rusty@rustcorp.com.au \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox