Date: Mon, 19 Apr 2004 19:03:44 +0900 From: Hiroharu Tamaru <tamaru@myn.rcast.u-tokyo.ac.jp> To: "Artem Koutchine" <matrix@itlegion.ru> Cc: freebsd-hardware@freebsd.org Subject: Re: Escalde 7506-4LP PCI parity error on Asustek p2b-ds Message-ID: <sa63c70e133.wl@gin.myn.rcast.u-tokyo.ac.jp> In-Reply-To: <001801c425e5$9f3a19a0$0c00a8c0@artem> References: <sa68z5e8f78.wl@gin.myn.rcast.u-tokyo.ac.jp> <001801c425e5$9f3a19a0$0c00a8c0@artem>
next in thread | previous in thread | raw e-mail | index | archive | help
Hi, there. I got a few people asking me the same thing recently, so I'll reply you on the ML to keep it archived. At Mon, 19 Apr 2004 12:09:17 +0400, Artem Koutchine wrote: > I am trying to install an escalde 7506-4LP into 32 PCI slot > on Asustek P2B-DS motherboard with dual PIII 550Mhz > CPUs. I have installed the card and inisialized RAID 5 array > (3 drives). The in inserted the FreeBSD installed disk (5.2-RC2) > and tried installing it. During kernel boot i see message like: > > twe0: <3ware Storage Controller> port 0xb800-0xb80f mem 0xe0000000-0xe07fff= > ff,0xe0800000-0xe080000f irq 5 at device 11.0 on pci0 > twe0: PCI parity error: Reseat card, move card or buggy device present. > (this line is repeated many times). > > I have searched google and maillist archived and have found that other > people have met this error message, but there is nowhere clear explanation > why it is happening. Some people say it should be just ignored. Is it so? This is the original message I wrote back then: http://docs.freebsd.org/cgi/getmsg.cgi?fetch=0+0+archive/2002/freebsd-hardware/20020623.freebsd-hardware I couldn't confirm if it were safe to ignore the message or not, but I never had any trouble with it for the 1+ year that I ran the system. That includes mail alarting and rebuilding the array through the 3dmd utility. I use to run JBOD, mirroring and RAID5 on that card. After that, I upgraded the M/B to a P4 system (an ordinary 32-bit-PCI Intel 845 setup) and (naturally) I no longer have any warnings. The warning message was annoying and bloating the logs, so I simply patched the driver not to log that particular message, and instead just count it in a sysctl MIB. As far as I remember, the rate at which this counter counts was really stable for an uptime of more than one month. The patch is against 4-stable of those days, and is attached below for your reference. With this patch, do a 'sysctl hw.twe.twe_pe_discard=1' to shut the message up, and check 'sysctl hw.twe.twe_pe' to see how many PE counts you got. Hope it helps. Hiroharu Tamaru. diff -ru sys/dev/twe-/twe.c sys/dev/twe/twe.c --- sys/dev/twe-/twe.c Tue May 21 21:33:16 2002 +++ sys/dev/twe/twe.c Tue May 21 21:47:34 2002 @@ -38,6 +38,8 @@ #define TWE_DEFINE_TABLES #include <dev/twe/twe_tables.h> +extern int twe_pe_discard; + /* * Command submission. */ @@ -1595,13 +1597,17 @@ if ((status_reg & TWE_STATUS_UNEXPECTED_BITS) != 0) { if (time_second > (lastwarn[1] + 5)) { + if (!(twe_pe_discard && (status_reg & TWE_STATUS_PCI_PARITY_ERROR))) { twe_printf(sc, "unexpected status bit(s) %b\n", status_reg & TWE_STATUS_UNEXPECTED_BITS, TWE_STATUS_BITS_DESCRIPTION); lastwarn[1] = time_second; + } } result = 1; if (status_reg & TWE_STATUS_PCI_PARITY_ERROR) { + if (!twe_pe_discard) { twe_printf(sc, "PCI parity error: Reseat card, move card or buggy device present."); + } twe_clear_pci_parity_error(sc); } if (status_reg & TWE_STATUS_PCI_ABORT) { diff -ru sys/dev/twe-/twe_freebsd.c sys/dev/twe/twe_freebsd.c --- sys/dev/twe-/twe_freebsd.c Tue May 21 21:33:16 2002 +++ sys/dev/twe/twe_freebsd.c Tue May 21 21:40:21 2002 @@ -45,6 +45,7 @@ #include <dev/twe/twe_tables.h> #include <sys/devicestat.h> +#include <sys/sysctl.h> static devclass_t twe_devclass; @@ -58,6 +59,13 @@ #define TWED_BIO_OUT #endif +int twe_pe_discard = 0; +unsigned int twe_pe = 0; + +SYSCTL_NODE(_hw, OID_AUTO, twe, CTLFLAG_RW, 0, "Twe RAID Driver mgmt"); +SYSCTL_INT(_hw_twe, OID_AUTO, pe_discard, CTLFLAG_RW, &twe_pe_discard, 0, "no msg for parity error"); +SYSCTL_UINT(_hw_twe, OID_AUTO, pe, CTLFLAG_RD, &twe_pe, 0, "parity error count"); + /******************************************************************************** ******************************************************************************** Control device interface @@ -520,6 +528,7 @@ { TWE_CONTROL(sc, TWE_CONTROL_CLEAR_PARITY_ERROR); pci_write_config(sc->twe_dev, PCIR_STATUS, TWE_PCI_CLEAR_PARITY_ERROR, 2); + ++ twe_pe; } /********************************************************************************
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?sa63c70e133.wl>