Date: Mon, 17 May 2004 13:30:45 +0200 From: "Carlos Velasco" <freebsd@newipnet.com> To: "Bruce Evans" <bde@zeta.org.au> Cc: freebsd-mobile@freebsd.org Subject: Re[5]: Modem + Network in Xircom cards, and maybe others Message-ID: <200405171330450414.08078360@192.168.128.16> In-Reply-To: <20040506151240.J19057@gamplex.bde.org> References: <200405021259230046.12648609@192.168.128.16> <200405022224250625.14440A3D@192.168.128.16> <20040505233435.B15444@gamplex.bde.org> <200405051746300245.2039F9A4@192.168.128.16> <20040506151240.J19057@gamplex.bde.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 06/05/2004 at 16:44 Bruce Evans wrote: >On Wed, 5 May 2004, Carlos Velasco wrote: > >> On 06/05/2004 at 0:26 Bruce Evans wrote: >> >> >However, you may need only this part of it. This part permits software >> >interrupts to be delayed by 38 ticks instead of the expected maximim >> >of 2 ticks. I keep forgetting to fix this. Scaling by hz is not quite Yes, this patch in sio.c seems to work perfectly. So I think sio swi is being delayed somewhere by Giant or any other thing. >> >right, because hz may be set to values that are too small to work all >> >the time or even most of the time. There is a clamp to 128 (min), but >> >this is a bit small. E.g., with hz = 1000 and speed = 115200, the >> >original code in the above gives cp4ticks = 44 and ibufsize = 128. If what about if we fix the value or making it adjustable via sysctl? >The broken interrupt priorities are easy to see in "ps laxw | sort -n +4" >output. Note that the highest priorities are numerically lowest: > 0 27 0 0 -48 0 0 12 - WL ?? 0:00.06 (swi8: >tty:cy+ clock) > > [I think this is supposed to be the low priority softclock ithread > (the "slow" cy and sio SWIs attach to it and misname themselves as > tty:cy and tty:sio instead of clk:cy and clk:sio). It actually has > _highest_ priority among SWIs, so the problem is sort of the opposite > of what I thought, but mostly worse. The "slow" cy and sio SWIs > actually have the same bogus high priority, so they don't compete > with other SWIs. However, they compete with softclock, and all > other SWIs have lower priority than softclock so they don't even > compete with it. This is the reverse of what is supposed to > happen. I think softclock starts with the correct low priority, but > its priority gets clobbered when the cy and sio SWIs attach to it. > > 0 37 0 0 -48 0 0 12 - WL ?? 0:00.00 (swi0: >tty:cy+) > > [I think this is the "fast" cy and sio SWI. Verbose names which get > truncated complicate debugging.] I have here: 0 22 0 0 -80 0 0 12 - WL ?? 0:00.01 (irq11: cbb0 cbb1+) ... 0 28 0 0 -48 0 0 12 - WL ?? 0:01.74 (swi8: tty:sio clock) 0 39 0 0 -48 0 0 12 - WL ?? 0:00.00 (swi0: tty:sio) So, I assume you are right. >> I believe this patch to sio.c is only a temporary solution that should be >> removed when GIANT dissapears in most drivers, am I right? > >No, it (the cp4ticks one) is a more general patch, though it is temporary >because it is not in its final form. Best-case interrupt latency cannot >be guaranteed for SWIs, and even a saftey margin of a factor of 4 is not >enough even without the Giant and priority bugs, since it doesn't scale >right when "hz" is configured to large values, and configuring "hz" to >too-large values is now encouraged by DEVICE_POLLING. Could we commit it or something similar? I think sio is normal mode is broken for high speeds cause this like my problem with modem pccard. Regards, Carlos Velasco
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200405171330450414.08078360>