Re: ServeRAID semi show stopper (was Re: lots of "exclusive sleep mutex")

From: Scott Long <scottl_at_freebsd.org>
Date: Wed, 03 Dec 2003 10:29:19 -0700
Clive Lin wrote:
> Hi,
> 
>     Here comes more helpful ServeRAID related warnings:
> 
> Bad malloc flags: 0
> Stack backtrace:
> malloc() of "16" with the following non-sleepable locks held:
> exclusive sleep mutex g_xdown r = 0 (0xe1f31cbc) locked _at_ /usr/src/sys/geom/geom_io.c:355
> Bad uma_zalloc flags: 0
> Stack backtrace:
> malloc() of "16" with the following non-sleepable locks held:
> exclusive sleep mutex g_xdown r = 0 (0xe1f31cbc) locked _at_ /usr/src/sys/geom/geom_io.c:355
> malloc() of "16" with the following non-sleepable locks held:
> exclusive sleep mutex g_xdown r = 0 (0xe1f31cbc) locked _at_ /usr/src/sys/geom/geom_io.c:355
> malloc() of "16" with the following non-sleepable locks held:
> exclusive sleep mutex g_xdown r = 0 (0xe1f31cbc) locked _at_ /usr/src/sys/geom/geom_io.c:355
> ( ... repeats ... )
> 
>     The ServeRAID adaptor is
> # grep ips /var/run/dmesg.boot
> ips0: <IBM ServeRAID Adapter> mem 0xf0000000-0xf3ffffff irq 24 at device 1.0 on pci4
> ppc0: Generic chipset (NIBBLE-only) in COMPATIBLE mode
> ips0: adapter type: ServeRAID 5i II (sarasota)
> ips0: logical drives: 1
> ips0: Logical Drive 0: RAID5 sectors: 142192640, state OK
> ipsd0: <Logical Drive> on ips0
> GEOM: create disk ipsd0 dp=0xc6bc1010
> ipsd0: Logical Drive  (69430MB)
> 
>     To be more specific, it's FreeBSD 5.2-BETA with
> hint.acpi.0.disabled=1, running on IBM x225. Everything is ok, except
> the ServeRAID warns :)
> 

The patch below will silence this warning.  However, the real solution
is a lot more complicated and will have to wait for after 5.2.

Scott


--- ips_commands.c      27 Nov 2003 08:37:36 -0000      1.7
+++ ips_commands.c      3 Dec 2003 17:26:28 -0000
_at__at_ -165,7 +165,7 _at__at_

  void ips_start_io_request(ips_softc_t *sc, struct bio *iobuf)
  {
-       if(ips_get_free_cmd(sc, ips_send_io_request, iobuf, 0)){
+       if(ips_get_free_cmd(sc, ips_send_io_request, iobuf, 
IPS_NOWAIT_FLAG)){
                 device_printf(sc->dev, "no mem for command slots!\n");
                 iobuf->bio_flags |= BIO_ERROR;
                 iobuf->bio_error = ENOMEM;
Received on Wed Dec 03 2003 - 08:30:31 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:32 UTC