Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 6 Apr 2001 06:00:02 -0700 (PDT)
From:      WATANABE Kiyoshi <aab10490@pop16.odn.ne.jp>
To:        freebsd-bugs@FreeBSD.org
Subject:   Re: i386/26261: silo overflow problem in sio driver
Message-ID:  <200104061300.f36D02P60663@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help
The following reply was made to PR i386/26261; it has been noted by GNATS.

From: WATANABE Kiyoshi <aab10490@pop16.odn.ne.jp>
To: freebsd-gnats-submit@FreeBSD.org, richw@webcom.com,
	bde@zeta.org.au
Cc:  
Subject: Re: i386/26261: silo overflow problem in sio driver
Date: Fri, 06 Apr 2001 21:51:16 +0900

 Sorry I sent temporary patch to gnats by mistake.
 
 Bruce Evans wrote:
 > On Tue, 3 Apr 2001, Rich Wales wrote:
 > 
 > >  WATANABE Kiyoshi wrote:
 > >  
 > >      > try this patch.
 > >      > +      cp4ticks *= 10;   /* to avoid buffer overflow */
 > >  
 > >  Thanks.  This helped to some extent, though I'm still seeing some
 > >  silo overflows even with the above patch.  Should the "10" be bumped
 > >  up to something larger, perhaps?
 > 
 > This can't possibly help reduce silo overflows, since it increases the
 > size a driver buffer, but silo overflows occur when a hardware buffer is
 > too small.
 > 
 > Silo overflows are caused by non-sio hardware hogging the bus or by
 > interrupt latency outside the driver.  They should never occur at low
 
 I agree.
 
 > speeds like 115200 bps even on 386/20's (except in -current, where
 > interrupt latency outside the driver is certainly broken enough to
 > matter even on 486DX2/66's).
 
 
 I guess that INTR_TYPE_FAST flag is  suspicious.
 Only sio, cy, and loran use this flag.
 
 but I cant get silo overflows in my Celeron-700Mhz/i810 machine.
 so I cant test.
 
 
 --- /usr/src/sys/isa/sio.c.orig      Tue Oct 10 19:08:12 2000
 +++ /usr/src/sys/isa/sio.c      Fri Apr  6 21:19:41 2001
 @@ -1333,16 +1333,20 @@
         com->irqres = bus_alloc_resource(dev, SYS_RES_IRQ, &rid, 0ul, ~0ul, 1,
             RF_ACTIVE);
         if (com->irqres) {
 +#if 0
                 ret = BUS_SETUP_INTR(device_get_parent(dev), dev, com->irqres,
                                      INTR_TYPE_TTY | INTR_TYPE_FAST,
                                      siointr, com, &com->cookie);
                 if (ret) {
 +#endif
                         ret = BUS_SETUP_INTR(device_get_parent(dev), dev,
                                              com->irqres, INTR_TYPE_TTY,
                                              siointr, com, &com->cookie);
 +#if 0
                         if (ret == 0)
                                 device_printf(dev, "unable to activate interrupt in fast mode - using normal mode");
                 }
 +#endif
                 if (ret)
                         device_printf(dev, "could not activate interrupt\n");
         }
 
 
 WATANABE Kiyoshi  aab10490@pop16.odn.ne.jp
 
 

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200104061300.f36D02P60663>