Re: savecore: first and last dump headers disagree on /dev/ad0b

2003-10-08 Thread YONETANI Tomokazu
On 2003/10/07 18:11:30, Doug White wrote:
 On Tue, 7 Oct 2003, YONETANI Tomokazu wrote:
 
  The hardware is IBM NetFinity 6000R, and it has ServerWorks ROSB4 UDMA33
  controller, to which the IDE disk is attached. The size of the IDE hard
  disk is 4Gbytes, and the size of the kernel dump and physical memory both
  fits in that size.
 
 The ROSB4 is known to have data-corruption problems with running in UDMA
 mode.  The dump is probably tripping over this, which is why Tor's patch
 works since it demotes the device back to PIO.
 
 You could optionally set hw.ata.ata_dma=0 in loader.conf to disable UDMA
 rather than apply the patch.

Yes, setting hw.ata.ata_dma=0 allowed me to dump a usable core file.
Thanks.
-- 
YONETANI Tomokazu / Ergo-Brains Inc.
___
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to [EMAIL PROTECTED]


Re: savecore: first and last dump headers disagree on /dev/ad0b

2003-10-08 Thread Doug White
On Tue, 7 Oct 2003, Kris Kennaway wrote:

 On Tue, Oct 07, 2003 at 06:11:30PM -0700, Doug White wrote:
  On Tue, 7 Oct 2003, YONETANI Tomokazu wrote:
 
   The hardware is IBM NetFinity 6000R, and it has ServerWorks ROSB4 UDMA33
   controller, to which the IDE disk is attached. The size of the IDE hard
   disk is 4Gbytes, and the size of the kernel dump and physical memory both
   fits in that size.
 
  The ROSB4 is known to have data-corruption problems with running in UDMA
  mode.  The dump is probably tripping over this, which is why Tor's patch
  works since it demotes the device back to PIO.

 I also had problems dumping onto a UDMA66 disk on a promise PDC20267
 controller - it seemed to dump OK (dump was readable after I recovered
 the disk), but it (or maybe the crash itself) trashed the partition
 table.


Well that woudl be funny since the problem boards were replaced with Tyan
S2518s, which have a PDC20267 onboard as well as the ROSB4.  The disks
were attached to the Promise, and never had any data corruption issues
with them, at least under linnex.

-- 
Doug White|  FreeBSD: The Power to Serve
[EMAIL PROTECTED]  |  www.FreeBSD.org
___
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to [EMAIL PROTECTED]


Re: savecore: first and last dump headers disagree on /dev/ad0b

2003-10-08 Thread Kris Kennaway
On Wed, Oct 08, 2003 at 07:05:49PM -0700, Doug White wrote:

   The ROSB4 is known to have data-corruption problems with running in UDMA
   mode.  The dump is probably tripping over this, which is why Tor's patch
   works since it demotes the device back to PIO.
 
  I also had problems dumping onto a UDMA66 disk on a promise PDC20267
  controller - it seemed to dump OK (dump was readable after I recovered
  the disk), but it (or maybe the crash itself) trashed the partition
  table.
 
 
 Well that woudl be funny since the problem boards were replaced with Tyan
 S2518s, which have a PDC20267 onboard as well as the ROSB4.  The disks
 were attached to the Promise, and never had any data corruption issues
 with them, at least under linnex.

This is a FreeBSD bug that was introduced within the past few months,
perhaps with ATAng.

Kris


pgp0.pgp
Description: PGP signature


Re: savecore: first and last dump headers disagree on /dev/ad0b

2003-10-07 Thread Tor Egge

 Hello.
 -CURRENT as of yesterday can't save kernel dump:
 
   savecore: first and last dump headers disagree on /dev/ad0b
   savecore: unsaved dumps found but not saved
 
 Is this a known issue? 

Yes.

I had the same problem on my development machine at the end of August and
ended up using the enclosed patch to get working dumps.

- Tor Egge
Index: sys/dev/ata/ata-all.c
===
RCS file: /home/ncvs/src/sys/dev/ata/ata-all.c,v
retrieving revision 1.187
diff -u -r1.187 ata-all.c
--- sys/dev/ata/ata-all.c   27 Aug 2003 15:27:56 -  1.187
+++ sys/dev/ata/ata-all.c   31 Aug 2003 22:31:33 -
@@ -109,9 +109,11 @@
 ch-device[MASTER].channel = ch;
 ch-device[MASTER].unit = ATA_MASTER;
 ch-device[MASTER].mode = ATA_PIO;
+ch-device[MASTER].dumping = 0;
 ch-device[SLAVE].channel = ch;
 ch-device[SLAVE].unit = ATA_SLAVE;
 ch-device[SLAVE].mode = ATA_PIO;
+ch-device[SLAVE].dumping = 0;
 ch-dev = dev;
 ch-state = ATA_IDLE;
 bzero(ch-queue_mtx, sizeof(struct mtx));
Index: sys/dev/ata/ata-all.h
===
RCS file: /home/ncvs/src/sys/dev/ata/ata-all.h,v
retrieving revision 1.65
diff -u -r1.65 ata-all.h
--- sys/dev/ata/ata-all.h   25 Aug 2003 11:13:04 -  1.65
+++ sys/dev/ata/ata-all.h   31 Aug 2003 22:56:14 -
@@ -227,6 +227,7 @@
 
 intcmd;/* last cmd executed */
 intmode;   /* transfermode */
+intdumping;/* panic dump in progress */
 void   (*setmode)(struct ata_device *atadev, int mode);
 };
 
Index: sys/dev/ata/ata-disk.c
===
RCS file: /home/ncvs/src/sys/dev/ata/ata-disk.c,v
retrieving revision 1.159
diff -u -r1.159 ata-disk.c
--- sys/dev/ata/ata-disk.c  25 Aug 2003 09:01:49 -  1.159
+++ sys/dev/ata/ata-disk.c  31 Aug 2003 23:18:40 -
@@ -336,6 +336,26 @@
 if (!adp)
return ENXIO;
 
+/* Some chipsets must be configured for PIO before dump starts. */
+if (adp-device-dumping == 0) {
+   adp-device-dumping = 1;
+   adp-device-setmode(adp-device, ATA_PIO_MAX);
+}
+if (length == 0) {
+   int error = 0;
+   /* Commit dump to media */
+   if (adp-device-param != NULL 
+   adp-device-param-support.command2  ATA_SUPPORT_FLUSHCACHE) {
+   error = ata_controlcmd(adp-device, ATA_FLUSHCACHE, 0, 0, 0);
+   if (error != 0)
+   ata_prtdev(adp-device, Flush cache failed\n);
+   else
+   ata_prtdev(adp-device, Flush cache succeeded\n);
+   } else
+   ata_prtdev(adp-device, Flush cache skipped\n);
+   return error;
+}
+
 bzero(request, sizeof(struct ata_request));
 request.device = adp-device;
 request.data = virtual;
@@ -352,13 +372,15 @@
 
 if (adp-device-channel-hw.transaction(request) == ATA_OP_FINISHED)
return EIO;
-while (request.bytecount  request.donecount) {
+while (adp-device-channel-running == request) {
DELAY(20);
-   adp-device-channel-running = request;
adp-device-channel-hw.interrupt(adp-device-channel);
-   adp-device-channel-running = NULL;
if (request.status  ATA_S_ERROR)
return EIO;
+}
+if (request.bytecount  request.donecount) {
+   printf(Short write?);
+   return EIO;
 }
 return 0;
 }
Index: sys/dev/ata/ata-queue.c
===
RCS file: /home/ncvs/src/sys/dev/ata/ata-queue.c,v
retrieving revision 1.4
diff -u -r1.4 ata-queue.c
--- sys/dev/ata/ata-queue.c 28 Aug 2003 08:22:53 -  1.4
+++ sys/dev/ata/ata-queue.c 31 Aug 2003 22:35:30 -
@@ -106,9 +106,36 @@
 ata_controlcmd(struct ata_device *atadev, u_int8_t command, u_int16_t feature,
   u_int64_t lba, u_int16_t count)
 {
-struct ata_request *request = ata_alloc_request();
+struct ata_request *request;
 int error = ENOMEM;
 
+/* Handle calls from addump */
+if (atadev-dumping) {
+   struct ata_request request2;
+   request = request2;
+   bzero(request, sizeof(struct ata_request));
+   request-device = atadev;
+   request-u.ata.command = command;
+   request-u.ata.lba = lba;
+   request-u.ata.count = count;
+   request-u.ata.feature = feature;
+   request-flags = ATA_R_CONTROL;
+   request-timeout = 5;
+   if (atadev-channel-hw.transaction(request) ==
+   ATA_OP_CONTINUES) {
+   while (atadev-channel-running == request 
+  (request-status  ATA_S_ERROR) == 0) {
+   DELAY(20);
+   atadev-channel-hw.interrupt(atadev-channel);
+   }
+   }
+   error = request-result;
+   if ((request-status

Re: savecore: first and last dump headers disagree on /dev/ad0b

2003-10-07 Thread Doug White
On Tue, 7 Oct 2003, YONETANI Tomokazu wrote:

 The hardware is IBM NetFinity 6000R, and it has ServerWorks ROSB4 UDMA33
 controller, to which the IDE disk is attached. The size of the IDE hard
 disk is 4Gbytes, and the size of the kernel dump and physical memory both
 fits in that size.

The ROSB4 is known to have data-corruption problems with running in UDMA
mode.  The dump is probably tripping over this, which is why Tor's patch
works since it demotes the device back to PIO.

You could optionally set hw.ata.ata_dma=0 in loader.conf to disable UDMA
rather than apply the patch.

-- 
Doug White|  FreeBSD: The Power to Serve
[EMAIL PROTECTED]  |  www.FreeBSD.org
___
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to [EMAIL PROTECTED]


Re: savecore: first and last dump headers disagree on /dev/ad0b

2003-10-07 Thread Kris Kennaway
On Tue, Oct 07, 2003 at 06:11:30PM -0700, Doug White wrote:
 On Tue, 7 Oct 2003, YONETANI Tomokazu wrote:
 
  The hardware is IBM NetFinity 6000R, and it has ServerWorks ROSB4 UDMA33
  controller, to which the IDE disk is attached. The size of the IDE hard
  disk is 4Gbytes, and the size of the kernel dump and physical memory both
  fits in that size.
 
 The ROSB4 is known to have data-corruption problems with running in UDMA
 mode.  The dump is probably tripping over this, which is why Tor's patch
 works since it demotes the device back to PIO.

I also had problems dumping onto a UDMA66 disk on a promise PDC20267
controller - it seemed to dump OK (dump was readable after I recovered
the disk), but it (or maybe the crash itself) trashed the partition
table.

Kris


pgp0.pgp
Description: PGP signature


Re: savecore: first and last dump headers disagree on /dev/ad0b

2003-10-07 Thread Bryan Liesner

On Tue, 7 Oct 2003, Kris Kennaway wrote:

 I also had problems dumping onto a UDMA66 disk on a promise PDC20267
 controller - it seemed to dump OK (dump was readable after I recovered
 the disk), but it (or maybe the crash itself) trashed the partition
 table.

 Kris

I mentioned the very same problem last June in a few posts here.  I
guess no one else experienced this issue, or there would have been
some kind of response. In fact, I haven't been able to recover a
crashdump since I switched over to current at the beginning of the year.

I have a promise PDC20269 UDMA133 and a Maxtor 60G.

More recently, though, sometime in mid September, a panic and crash
dump trash my partition table as well.  And it's repeatable, but I'm
not going to try again to see if it was fixed :)

-Bryan
___
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to [EMAIL PROTECTED]


savecore: first and last dump headers disagree on /dev/ad0b

2003-10-06 Thread YONETANI Tomokazu
Hello.
-CURRENT as of yesterday can't save kernel dump:

  savecore: first and last dump headers disagree on /dev/ad0b
  savecore: unsaved dumps found but not saved

Is this a known issue? I need to be able to dump to this device because
I've seen reliably reproducible panics to be reported, and saving kernel
dumps is not supported by ips(4).
/dev/ad0 is an IDE hard disk capable of UDMA33 and dedicated to saving
kernel dumps, and is not used as a swap device, so I think misc/55933
is not relavant. How can I force it to save the kernel dump; I've tried -f
optition, but it didn't work. I've seen no odd messages while it's dumping,
just the numbers counted up from 16 to 512.

The hardware is IBM NetFinity 6000R, and it has ServerWorks ROSB4 UDMA33
controller, to which the IDE disk is attached. The size of the IDE hard
disk is 4Gbytes, and the size of the kernel dump and physical memory both
fits in that size.

Please tell me if I missed any information you need.

Regards.
-- 
YONETANI Tomokazu / Ergo-Brains Inc.
___
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to [EMAIL PROTECTED]