Date: Wed, 7 Jun 1995 17:36:26 +1000 From: Bruce Evans <bde@zeta.org.au> To: freebsd-hackers@freefall.cdrom.com, jleppek@harris.com Subject: Re: silo overflows Message-ID: <199506070736.RAA06651@godzilla.zeta.org.au>
next in thread | raw e-mail | index | archive | help
>I have been seeing a number of silo overflows from a current >kernel on a DX4/100 32Meg memory running ppp with >the serial port rate at 57600. I had about 28 overflows >in about an hour so nothing drastic. >I never saw the "reduce trigger" message which I thought >was suppose to appear when "silo overflow" messages appeared but >a little looking reveals that >the reduce stuff seems to be "#if 0" excluded... >sooo I guess the initial trigger is FIFO_TRIGGER_14 and stays. The "reduce trigger" stuff is ifdefed because it doesn't work very well. On some systems it causes the trigger level to collapse from 14 to 1 whenever a transient overload occurs. This is undesirable if transient overloads are very rare. I think the collapse is from buffering of overflows that occur while the trigger level is at 14. A trigger level of 8 should be low enough for all systems that aren't overloaded all the time (such as a 386SX/16 with more than one port at 115200 bps, or a P900 (sic) with more than 8 ports at 115200 bps sustained). Overruns for low speeds such as 57600 on one port may be caused by bus hogging DMA controllers. There are two solutions: don't use bus hogging DMA controllers, or reduce the initial trigger level to 8. Reducing the trigger level only works for 16550's of course. For 8250's and 16450's, don't use bus hogging DMA controllers. What type of DMA controller(s) do you have? >Is the current solution to change the FIFO_TRIGGER_14 >value in sioreg.h to something lower ? No, FIFO_TRIGGER_14 is a constant, not an option. Change the one place in sio.c where it is used to initialize com->ftl_init. Use FIFO_TRIGGER_8 instead. Bruce
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199506070736.RAA06651>