All of lore.kernel.org
 help / color / mirror / Atom feed
* [parisc-linux] [PATCH] usb/input/hid-core.c extract() brain damage
@ 2005-06-02 21:35 Grant Grundler
  0 siblings, 0 replies; 9+ messages in thread
From: Grant Grundler @ 2005-06-02 21:35 UTC (permalink / raw)
  To: linux-usb-devel; +Cc: Kyle McMartin, parisc-linux

Hi folks,,
extract() and implement() are bit field manipulation routines.
They mangle "n" bits starting at "offset" index into the bit field.
Since this is USB, the byte array is little endian.
Big endian machines (e.g. parisc, mips) should only need to
byte swap the value.

extract() and implement() have brain damaged attempts to handle
32-bit wide "fields".
The problem is the index math in the original code didn't clear all
the relevant bits.  (offset >> 5) only compensated for 32-bit index.
We need (offset >> 6) if we want to use 64-bit loads.

But it was also wrong in that it tried to use quasi-aligned loads.
Ie "report" was only incremented in multiples of 4 bytes and then
the offset was masked off for values greater than 4 bytes.
The right way is to pretend "report" points at a byte array.
And offset is then only minor adjustment for < 8 bits of offset.
"n" (field width) can then be as big as 24 (assuming 32-bit loads)
since "offset" will never be bigger than 7.

If someone needs either function to handle more than 24-bits,
please document why - point at a specification or specific USB
hid device - in comments in the code.

extract/implement() are also an eyesore to read.
Please banish whoever wrote it to read CodingStyle 3 times in a row
to a classroom full of 1st graders armed with rubberbands.
Or just flame them. Whatever. Globbing all the code together
on two lines does NOT make it faster and is Just Wrong.

Patch below fixes the above issues. Please apply.

I've tested this patch on j6000 (dual 750Mhz PA-RISC, 32-bit 2.6.12-rc5).
Kyle McMartin tested on c3000 (up 400Mhz PA-RISC, same kernel).
"p2-mate" (Peter De Schrijver?) tested on sb1250 (dual core Mips,
   broadcom "swarm" eval board).

c3000 and j6000 have (lspci output):
0000:00:0e.0 IDE interface: National Semiconductor Corporation 87415/87560 IDE (rev 03)
0000:00:0e.1 Bridge: National Semiconductor Corporation 87560 Legacy I/O (rev 01)
0000:00:0e.2 USB Controller: National Semiconductor Corporation USB Controller (rev 02)

(87560 is also known as "SuckyIO" chip in parisc community)



Couple more general comments that belong in seperate patches:
o get_unaligned() and put_unaligned() are more or less obsolete.
  The kernel misaligned trap handler is expected to handle this
  for every arch that uses "asm-generic/unaligned.h".
  See "fgrep generic include/asm*/unaligned.h" output.

  Don't misunderstand, I prefer to see get_unaligned() but just
  want to point out it's not doing what people might assume it does.

  The networking stack has misaligned accesses that davem/jgarzik
  have refused to fixup with get_aligned() despite well documented
  performance reasons for doing so. So USB is not some odd exception. 

o "static inline" is preferred as per Documentation/SubmittingPatches.
  I'd be happy to submit a patch if someone isn't able
  to run "sed -e 's/__inline__/inline/'" over the code.

thanks,
grant

Signed-off-by: Grant Grundler <grundler@parisc-linux.org>

Index: drivers/usb/input/hid-core.c
===================================================================
RCS file: /var/cvs/linux-2.6/drivers/usb/input/hid-core.c,v
retrieving revision 1.21
diff -u -p -r1.21 hid-core.c
--- drivers/usb/input/hid-core.c	22 Apr 2005 00:25:56 -0000	1.21
+++ drivers/usb/input/hid-core.c	2 Jun 2005 06:10:13 -0000
@@ -759,21 +759,31 @@ static __inline__ __u32 s32ton(__s32 val
 }
 
 /*
- * Extract/implement a data field from/to a report.
+ * Extract/implement a data field from/to a little endian report (bit array).
  */
 
 static __inline__ __u32 extract(__u8 *report, unsigned offset, unsigned n)
 {
-	report += (offset >> 5) << 2; offset &= 31;
-	return (le64_to_cpu(get_unaligned((__le64*)report)) >> offset) & ((1 << n) - 1);
+	u32 x;
+
+	report += offset >> 3;  /* adjust byte index */
+	offset &= 8 - 1;
+	x = get_unaligned((u32 *) report);
+	x = le32_to_cpu(x);
+	x = (x >> offset) & ((1 << n) - 1);
+	return x;
 }
 
 static __inline__ void implement(__u8 *report, unsigned offset, unsigned n, __u32 value)
 {
-	report += (offset >> 5) << 2; offset &= 31;
-	put_unaligned((get_unaligned((__le64*)report)
-		& cpu_to_le64(~((((__u64) 1 << n) - 1) << offset)))
-		| cpu_to_le64((__u64)value << offset), (__le64*)report);
+	u32 x;
+
+	report += offset >> 3;
+	offset &= 8 - 1;
+	x = get_unaligned((u32 *)report);
+	x &= cpu_to_le32(~((((__u32) 1 << n) - 1) << offset));
+	x |= cpu_to_le32(value << offset);
+	put_unaligned(x,(u32 *)report);
 }
 
 /*
_______________________________________________
parisc-linux mailing list
parisc-linux@lists.parisc-linux.org
http://lists.parisc-linux.org/mailman/listinfo/parisc-linux

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [parisc-linux] [PATCH] usb/input/hid-core.c extract() brain damage
       [not found] <20050602213519.GA18164@colo.lackof.org>
@ 2005-06-03 22:41 ` John David Anglin
       [not found] ` <200506032241.j53MfuCv008601@hiauly1.hia.nrc.ca>
  1 sibling, 0 replies; 9+ messages in thread
From: John David Anglin @ 2005-06-03 22:41 UTC (permalink / raw)
  To: Grant Grundler; +Cc: parisc-linux, linux-usb-devel, kyle

> extract() and implement() have brain damaged attempts to handle
> 32-bit wide "fields".

It seems that this problem has been around for some time.  Does
it fix the usb keyboard and mouse problems in 2.6.12?

Dave
-- 
J. David Anglin                                  dave.anglin@nrc-cnrc.gc.ca
National Research Council of Canada              (613) 990-0752 (FAX: 952-6602)
_______________________________________________
parisc-linux mailing list
parisc-linux@lists.parisc-linux.org
http://lists.parisc-linux.org/mailman/listinfo/parisc-linux

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [parisc-linux] [PATCH] usb/input/hid-core.c extract() brain damage
       [not found] ` <200506032241.j53MfuCv008601@hiauly1.hia.nrc.ca>
@ 2005-06-04  1:16   ` Grant Grundler
  0 siblings, 0 replies; 9+ messages in thread
From: Grant Grundler @ 2005-06-04  1:16 UTC (permalink / raw)
  To: John David Anglin; +Cc: kyle, parisc-linux, linux-usb-devel

On Fri, Jun 03, 2005 at 06:41:55PM -0400, John David Anglin wrote:
> > extract() and implement() have brain damaged attempts to handle
> > 32-bit wide "fields".
> 
> It seems that this problem has been around for some time.

I didn't check to see how long this code has been around.

> Does it fix the usb keyboard and mouse problems in 2.6.12?

USB keyboard and mouse work with 2.6.12-rc5 on parisc.

grant
_______________________________________________
parisc-linux mailing list
parisc-linux@lists.parisc-linux.org
http://lists.parisc-linux.org/mailman/listinfo/parisc-linux

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [parisc-linux] [PATCH] usb/input/hid-core.c extract() brain damage
       [not found] <20050604011655.GA16999@colo.lackof.org>
@ 2005-06-04  1:25 ` John David Anglin
       [not found] ` <200506040125.j541PI7g009179@hiauly1.hia.nrc.ca>
  1 sibling, 0 replies; 9+ messages in thread
From: John David Anglin @ 2005-06-04  1:25 UTC (permalink / raw)
  To: Grant Grundler; +Cc: parisc-linux, linux-usb-devel, kyle

> > It seems that this problem has been around for some time.
> 
> I didn't check to see how long this code has been around.

It's in 2.6.10-pa3.  Since the USB mouse and keyboard work in it,
some other change must have been involved in the 2.6.12 breakage.

As an aside, 2.6.10-pa3 doesn't seem to have the stability problems
that I saw 2.6.11-pa4.  It pretty much seems as stable as 2.6.8.1-pa11
on my c3750.  There was hang in the java testsuite (PR218) in one of
two gcc builds and check.  Otherwise, the test results were identical.

> > Does it fix the usb keyboard and mouse problems in 2.6.12?
> 
> USB keyboard and mouse work with 2.6.12-rc5 on parisc.

Great!

Dave
-- 
J. David Anglin                                  dave.anglin@nrc-cnrc.gc.ca
National Research Council of Canada              (613) 990-0752 (FAX: 952-6602)
_______________________________________________
parisc-linux mailing list
parisc-linux@lists.parisc-linux.org
http://lists.parisc-linux.org/mailman/listinfo/parisc-linux

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [parisc-linux] [PATCH] usb/input/hid-core.c extract() brain damage
       [not found] ` <200506040125.j541PI7g009179@hiauly1.hia.nrc.ca>
@ 2005-06-04  7:25   ` Grant Grundler
       [not found]   ` <20050604072510.GD8230@colo.lackof.org>
  1 sibling, 0 replies; 9+ messages in thread
From: Grant Grundler @ 2005-06-04  7:25 UTC (permalink / raw)
  To: John David Anglin; +Cc: parisc-linux, linux-usb-devel, kyle

On Fri, Jun 03, 2005 at 09:25:18PM -0400, John David Anglin wrote:
> > > It seems that this problem has been around for some time.
> > 
> > I didn't check to see how long this code has been around.
> 
> It's in 2.6.10-pa3.  Since the USB mouse and keyboard work in it,
> some other change must have been involved in the 2.6.12 breakage.

Yes, Kyle tracked it down to parisc switching from a parisc asm
definition of get_unaligned() to using the generic ones.
Ie we moved from avoiding kernel traps to exercising them.
But 64-bit kernel worked fine with USB.
And on 32-bit kernels le64() loads degenerate into two 32-bit
loads. Ie the trap handler is still only dealing with 32-bit
misaligned accesses like it would with this patch. So I don't
think the kernel trap support is the problem.

Regardless, the two functions are badly written and could
be alot clearer.

> As an aside, 2.6.10-pa3 doesn't seem to have the stability problems
> that I saw 2.6.11-pa4.  It pretty much seems as stable as 2.6.8.1-pa11
> on my c3750.  There was hang in the java testsuite (PR218) in one of
> two gcc builds and check.  Otherwise, the test results were identical.

Ok. Can you want to try the older version of include/asm-parisc/unaligned.h?

> > USB keyboard and mouse work with 2.6.12-rc5 on parisc.
> 
> Great!

Well, I haven't committed it to cvs.parisc-linux.org.
I'm waiting for the USB guru's to comment.

grant
_______________________________________________
parisc-linux mailing list
parisc-linux@lists.parisc-linux.org
http://lists.parisc-linux.org/mailman/listinfo/parisc-linux

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [parisc-linux] [PATCH] usb/input/hid-core.c extract() brain damage
       [not found]   ` <20050604072510.GD8230@colo.lackof.org>
@ 2005-06-04 10:31     ` Joel Soete
       [not found]     ` <42A182E9.7020609@tiscali.be>
  1 sibling, 0 replies; 9+ messages in thread
From: Joel Soete @ 2005-06-04 10:31 UTC (permalink / raw)
  To: Grant Grundler; +Cc: John David Anglin, kyle, linux-usb-devel, parisc-linux



Grant Grundler wrote:
> On Fri, Jun 03, 2005 at 09:25:18PM -0400, John David Anglin wrote:
> 
>>>>It seems that this problem has been around for some time.
>>>
>>>I didn't check to see how long this code has been around.
>>
>>It's in 2.6.10-pa3.  Since the USB mouse and keyboard work in it,
>>some other change must have been involved in the 2.6.12 breakage.
> 
> 
> Yes, Kyle tracked it down to parisc switching from a parisc asm
> definition of get_unaligned() to using the generic ones.
> Ie we moved from avoiding kernel traps to exercising them.
> But 64-bit kernel worked fine with USB.
> And on 32-bit kernels le64() loads degenerate into two 32-bit
> loads. Ie the trap handler is still only dealing with 32-bit
> misaligned accesses like it would with this patch. So I don't
> think the kernel trap support is the problem.
> 
> Regardless, the two functions are badly written and could
> be alot clearer.
> 
Thanks for feedback ;-)

That said, I also noticed a big difference of behaviour when I select or not the CONFIG_PDC_STABLE option or not:
	o when selected my stress test make panicing my b2k in 5 min showing a cash_grow() pb (as reported before)
	o when not selected the system hang as decribe by jda.

> 
>>As an aside, 2.6.10-pa3 doesn't seem to have the stability problems
Interesting, I will check. Thanks

>>that I saw 2.6.11-pa4.  It pretty much seems as stable as 2.6.8.1-pa11
>>on my c3750.  There was hang in the java testsuite (PR218) in one of
>>two gcc builds and check.  Otherwise, the test results were identical.
> 
> 
> Ok. Can you want to try the older version of include/asm-parisc/unaligned.h?
> 
Interesting, I will too
> 
>>>USB keyboard and mouse work with 2.6.12-rc5 on parisc.
>>
>>Great!
> 
> 
> Well, I haven't committed it to cvs.parisc-linux.org.
> I'm waiting for the USB guru's to comment.
> 
Many thanks,
	Joel
_______________________________________________
parisc-linux mailing list
parisc-linux@lists.parisc-linux.org
http://lists.parisc-linux.org/mailman/listinfo/parisc-linux

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [parisc-linux] [PATCH] usb/input/hid-core.c extract() brain damage
       [not found]     ` <42A182E9.7020609@tiscali.be>
@ 2005-06-04 13:59       ` Joel Soete
  0 siblings, 0 replies; 9+ messages in thread
From: Joel Soete @ 2005-06-04 13:59 UTC (permalink / raw)
  To: Joel Soete; +Cc: John David Anglin, parisc-linux, linux-usb-devel, kyle

[...]
>>
>> Ok. Can you want to try the older version of 
>> include/asm-parisc/unaligned.h?
>>
> Interesting, I will too
> 
Sorry it didn't help for me (on a b180 with kernel 2.6.12-rc5-pa2 and 2.6.8/include/asm-parisc/unaligned.h)
still panicing as usual:
  [<101511b0>] cache_grow+0xd8/0x1a8
  [<10151428>] cache_alloc_refill+0x1a8/0x264
  [<10151744>] kmem_cache_alloc+0x48/0x4c
  [<101b590c>] ext3_alloc_inode+0x18/0x40
  [<10186ae8>] alloc_inode+0x28/0x1a0
  [<1018772c>] new_inode+0x10/0x8c
  [<101aa718>] ext3_new_inode+0xc4/0x73c
  [<101b36b8>] ext3_create+0x8c/0x12c
  [<1017b484>] vfs_create+0xe0/0x140
  [<1017bd54>] open_namei+0x680/0x734
  [<101694bc>] filp_open+0x3c/0x70
  [<101699ac>] sys_open+0x70/0xb8
  [<1010d12c>] syscall_exit+0x0/0x14


Kernel Fault: Code=15 regs=15154600 (Addr=27c944cc)

      YZrvWESTHLNXBCVMcbcbcbcbOGFRQPDI
PSW: 00000000000001001110011100001111 Not tainted
r00-03  00000000 10513e58 101511b0 105004f8
r04-07  17794000 100df6e0 00000010 00000050
r08-11  00000001 15f172bc 17b050dc 00000000
r12-15  15154110 000081a4 0004db4e 000e1bc8
r16-19  000e1c68 00000000 00000000 27c944f8
r20-23  27c944bc 000003dc 000001a5 00000050
r24-27  105004bc 17794000 100df6e0 10400010
r28-31  27c944bc 00000000 15154600 10153a94
sr0-3   00000000 000028a9 00000000 00002635
sr4-7   00000000 00000000 00000000 00000000

IASQ: 00000000 00000000 IAOQ: 10150f30 10150f34
  IIR: 6b800020    ISR: 00000000  IOR: 27c944cc
  CPU:        0   CR30: 15154000 CR31: 10460000
  ORIG_R28: 00000000
  IAOQ[0]: alloc_slabmgmt+0x30/0x6c
  IAOQ[1]: alloc_slabmgmt+0x34/0x6c
  RP(r2): cache_grow+0xd8/0x1a8
Kernel panic - not syncing: Kernel Fault
  <0>Rebooting in 120 seconds..

:_(

Thanks,
	Joel

_______________________________________________
parisc-linux mailing list
parisc-linux@lists.parisc-linux.org
http://lists.parisc-linux.org/mailman/listinfo/parisc-linux

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [parisc-linux] [PATCH] usb/input/hid-core.c extract() brain damage
       [not found] <4282FEEE0000A497@mail-5-bnl.tiscali.it>
@ 2005-06-07 20:20 ` John David Anglin
  2005-06-11 21:06   ` Joel Soete
  0 siblings, 1 reply; 9+ messages in thread
From: John David Anglin @ 2005-06-07 20:20 UTC (permalink / raw)
  To: Joel Soete; +Cc: kyle, parisc-linux

> > Sorry it didn't help for me (on a b180 with kernel 2.6.12-rc5-pa2 and 2.6.8/include/asm-parisc/unaligned.h)
> > still panicing as usual:

It also didn't help the stability issues that I previously reported
for my c3750 although the mouse and keyboard now work with 2.6.12.

> Definitely, the system already hang with 2.6.9-rc2-pa13.
> As it's a b180, I observe leds on front panel:
>     o heart bit always flicking, 
>     o from time to time lan in/out leds flick also,
>     o power on/off button didn't reach to stop the system
>     o after that only toc buttom reach to restart the server (fwiw nothing
> in piminfo?)

Here's a hand copy TOC dump using 2.6.12-rc5-pa1 with Grant's usb
patch:

General registers
0	00000000	409b4480	1018122c	4ce72ac0
4	00000001	0002e4f8	000007d1	4ce72ac0
8	00000000	0002e500	00000001	fffffff2
12	00000000	000e7508	00000000	00000000
16	000eb8e8	00000000	00000001	40918000
20	00000001	00000000	0002e4fe	4ce72ad6
24	00000000	00000001	4d9f7e00	103dc010
28	00000000	00155cc0	40918140	10180fe8

IIA Space	= 00000000
IIA Offset	= 10181300

r2 points to this bit of code in sys_poll:

101810e8 <sys_poll>:
101810e8:       6b c2 3f d9     stw rp,-14(sp)
101810ec:       37 de 01 00     ldo 80(sp),sp
101810f0:       6b cb 3f 31     stw r11,-68(sp)
101810f4:       6b ca 3f 39     stw r10,-64(sp)
...
1018120c:       8d 00 3f 4f     cmpib,<>,n 0,r8,101811b8 <sys_poll+0xd0>
10181210:       08 08 02 44     copy r8,r4
10181214:       08 0a 02 5a     copy r10,r26
10181218:       08 06 02 57     copy r6,r23
1018121c:       08 07 02 59     copy r7,r25
10181220:       37 d8 3f 11     ldo -78(sp),r24
10181224:       eb ff bb 8d     b,l 10180ff0 <do_poll>,%r2
10181228:       34 0b 3f e5     ldi -e,r11
1018122c:       c8 67 20 9a     movb,=,n r7,r3,10181280 <sys_poll+0x198>

IIA Offset points to this bit of code in do_poll:

101810e8 <sys_poll>:
101810e8:       6b c2 3f d9     stw rp,-14(sp)
101810ec:       37 de 01 00     ldo 80(sp),sp
101810f0:       6b cb 3f 31     stw r11,-68(sp)
101810f4:       6b ca 3f 39     stw r10,-64(sp)
...
10181250:       03 c0 08 b3     mfctl tr6,r19
10181254:       0e 78 10 94     ldw c(,r19),r20
10181258:       8e 80 21 38     cmpib,<> 0,r20,101812fc <sys_poll+0x214>
...
101812f0:       4b c3 3f 71     ldw -48(sp),r3
101812f4:       e8 40 d0 00     bve (rp)
101812f8:       37 de 3f 01     ldo -80(sp),sp
101812fc:       0e d5 d2 40     sth r21,0(sr3,r22)
10181300:       e8 1f 1e bf     b,l,n 10181264 <sys_poll+0x17c>,r0
10181304:       e8 1f 1f 35     b,l 101812a4 <sys_poll+0x1bc>,r0
10181308:       34 0b 3f e5     ldi -e,r11
1018130c:       e8 1f 1d a5     b,l 101811e4 <sys_poll+0xfc>,r0
10181310:       08 1c 02 47     copy ret0,r7
10181314:       e8 1f 1c f5     b,l 10181194 <sys_poll+0xac>,r0
10181318:       d4 df 18 01     depwi,z -1,31,31,r6

1018131c <wait_for_partner>:

The system was still pingable, but ssh and the console didn't work.
No heartbeat was observed.

Dave
-- 
J. David Anglin                                  dave.anglin@nrc-cnrc.gc.ca
National Research Council of Canada              (613) 990-0752 (FAX: 952-6602)
_______________________________________________
parisc-linux mailing list
parisc-linux@lists.parisc-linux.org
http://lists.parisc-linux.org/mailman/listinfo/parisc-linux

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [parisc-linux] [PATCH] usb/input/hid-core.c extract() brain damage
  2005-06-07 20:20 ` [parisc-linux] [PATCH] usb/input/hid-core.c extract() brain damage John David Anglin
@ 2005-06-11 21:06   ` Joel Soete
  0 siblings, 0 replies; 9+ messages in thread
From: Joel Soete @ 2005-06-11 21:06 UTC (permalink / raw)
  To: John David Anglin; +Cc: kyle, parisc-linux

Hi all,

A small update:

John David Anglin wrote:
>>>Sorry it didn't help for me (on a b180 with kernel 2.6.12-rc5-pa2 and 2.6.8/include/asm-parisc/unaligned.h)
>>>still panicing as usual:
> 
> 
> It also didn't help the stability issues that I previously reported
> for my c3750 although the mouse and keyboard now work with 2.6.12.
> 
> 
>>Definitely, the system already hang with 2.6.9-rc2-pa13.
>>As it's a b180, I observe leds on front panel:
>>    o heart bit always flicking, 
>>    o from time to time lan in/out leds flick also,
>>    o power on/off button didn't reach to stop the system
>>    o after that only toc buttom reach to restart the server (fwiw nothing
>>in piminfo?)
OTC 2.6.9-rc2-pa1 works fine (stress test during a full day wihout pb)

:-) : pb didn't come from upstream merge (that reduce also analysis to only some 150k :-) )

[...]

> 
> The system was still pingable, but ssh and the console didn't work.
mmm typical when a system crash: as far as I can observe the nic is only reset when the system reset itself.
So when a system crash, the nic is still configured and icmp trafic (afaik hw level) still respond.

> No heartbeat was observed.
>
That would mean that there is not anymore activity on the system.
Otc of my system where at least some routine (e.g. heartbit) was still running.

Most probably we are facing to different pb.

Thanks,
	Joel
_______________________________________________
parisc-linux mailing list
parisc-linux@lists.parisc-linux.org
http://lists.parisc-linux.org/mailman/listinfo/parisc-linux

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2005-06-11 21:06 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <4282FEEE0000A497@mail-5-bnl.tiscali.it>
2005-06-07 20:20 ` [parisc-linux] [PATCH] usb/input/hid-core.c extract() brain damage John David Anglin
2005-06-11 21:06   ` Joel Soete
     [not found] <20050604011655.GA16999@colo.lackof.org>
2005-06-04  1:25 ` John David Anglin
     [not found] ` <200506040125.j541PI7g009179@hiauly1.hia.nrc.ca>
2005-06-04  7:25   ` Grant Grundler
     [not found]   ` <20050604072510.GD8230@colo.lackof.org>
2005-06-04 10:31     ` Joel Soete
     [not found]     ` <42A182E9.7020609@tiscali.be>
2005-06-04 13:59       ` Joel Soete
     [not found] <20050602213519.GA18164@colo.lackof.org>
2005-06-03 22:41 ` John David Anglin
     [not found] ` <200506032241.j53MfuCv008601@hiauly1.hia.nrc.ca>
2005-06-04  1:16   ` Grant Grundler
2005-06-02 21:35 Grant Grundler

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.