* Re: [PATCH] SIS AGP vs 2.6.6-rc2
@ 2004-05-07 23:08 Cédric Rivard
0 siblings, 0 replies; 6+ messages in thread
From: Cédric Rivard @ 2004-05-07 23:08 UTC (permalink / raw)
To: Heilmann, Oliver; +Cc: linux-kernel
Heilmann, Oliver wrote:
> Basically, if you have an SiS chipset and your machine freezes when you
> start X, try the -agp_sis_force_delay=1 option. If this fixes your
> problem add your PCI ID to sis_broken_chipsets in sis-agp.c
> Note to 746[FX] people: I'm still not sure what the differences between
> the two 746 versions and the 648 series are. If this patch does not work
> for you try playing with the agp_sis_agp_spec module option. Any
> feedback is greatly appreciated.
Hi Oliver,
SIS 655 does also require the delay workaround not to freeze.
Following, the relevant kernel log of my machine (SIS655TX with Radeon 9200):
cdj:~# dmesg |grep -i agp
Linux agpgart interface v0.100 (c) Dave Jones
agpgart: Detected SiS 655 chipset
agpgart: Maximum main memory to use for agp memory: 941M
agpgart: AGP aperture is 256M @ 0xe0000000
agpgart: Found an AGP 3.5 compliant device at 0000:00:00.0.
agpgart: Putting AGP V3 device at 0000:00:00.0 into 4x mode
agpgart: SiS delay workaround: giving bridge time to recover.
agpgart: Putting AGP V3 device at 0000:01:00.0 into 4x mode
Cheers,
Cédric Rivard
^ permalink raw reply [flat|nested] 6+ messages in thread[parent not found: <20040426082159.90513.qmail@web10102.mail.yahoo.com>]
* Re: [PATCH] SIS AGP clean up, blacklist and module options [not found] <20040426082159.90513.qmail@web10102.mail.yahoo.com> @ 2004-04-26 9:32 ` Heilmann, Oliver 2004-04-27 11:04 ` [PATCH] SIS AGP vs 2.6.6-rc2 Heilmann, Oliver 0 siblings, 1 reply; 6+ messages in thread From: Heilmann, Oliver @ 2004-04-26 9:32 UTC (permalink / raw) To: linux-kernel > From: Andrew Morton <akpm@osdl.org> > To: Oliver Heilmann <heilmano@yahoo.com> > Subject: Re: [PATCH] SIS AGP clean up, blacklist and module options > Date: Sun, 25 Apr 2004 22:05:51 -0700 > > Oliver Heilmann <heilmano@yahoo.com> wrote: > > > > Sorry, I'm not used to using yahoo webmail. It > > stupidly wrapped all the lines. Patch vs 2.6.5. is > > attached. > > Generates several non-trivial rejects against the current kernel. > > Please update the patch and resend both the patch and the description of > the changes which it makes, thanks. > > (Patches in `patch -p1' format are preferred, btw). Mildly embarrassed. Sorry about wasting everybody's time. Btw. Documentation/SubmittingPatches seems to suggest -p0, At least for single file patches. Anyway, here it is again (tested and -p1): * renamed sis_648_enable to sis_delayed_enable and removed chipset references * All chipsets that require the sis delay-hack are listed in sis_broken_chipsets (and no other place). * There are two new module options to force agp3-spec compliant initialisation and/or the delay hack. As I only have a 648FX chipset to test on, I figured this might be useful to experiment with on other chipsets (i.e.746[FX]). Basically, if you have an SiS chipset and your machine freezes when you start X, try the -agp_sis_force_delay=1 option. If this fixes your problem add your PCI ID to sis_broken_chipsets in sis-agp.c Note to 746[FX] people: I'm still not sure what the differences between the two 746 versions and the 648 series are. If this patch does not work for you try playing with the agp_sis_agp_spec module option. Any feedback is greatly appreciated. Oliver --- linux-2.6.5/drivers/char/agp/sis-agp.c.orig 2004-04-04 04:36:16.000000000 +0100 +++ linux-2.6.5/drivers/char/agp/sis-agp.c 2004-04-26 09:13:03.000000000 +0100 @@ -13,6 +13,8 @@ #define SIS_TLBCNTRL 0x97 #define SIS_TLBFLUSH 0x98 +static int __devinitdata agp_sis_force_delay = 0; +static int __devinitdata agp_sis_agp_spec = -1; static int sis_fetch_size(void) { @@ -67,7 +69,7 @@ static void sis_cleanup(void) (previous_size->size_value & ~(0x03))); } -static void sis_648_enable(u32 mode) +static void sis_delayed_enable(u32 mode) { struct pci_dev *device = NULL; u32 command; @@ -93,10 +95,13 @@ static void sis_648_enable(u32 mode) pci_write_config_dword(device, agp + PCI_AGP_COMMAND, command); - if(device->device == PCI_DEVICE_ID_SI_648) { - // weird: on 648 and 648fx chipsets any rate change in the target command register - // triggers a 5ms screwup during which the master cannot be configured - printk(KERN_INFO PFX "sis 648 agp fix - giving bridge time to recover\n"); + /* + * Weird: on some sis chipsets any rate change in the target + * command register triggers a 5ms screwup during which the master + * cannot be configured + */ + if (device->device == agp_bridge->dev->device) { + printk(KERN_INFO PFX "SiS delay workaround: giving bridge time to recover.\n"); set_current_state(TASK_UNINTERRUPTIBLE); schedule_timeout (1+(HZ*10)/1000); } @@ -219,21 +224,35 @@ static struct agp_device_ids sis_agp_dev }; +// chipsets that require the 'delay hack' +static int sis_broken_chipsets[] __devinitdata = { + PCI_DEVICE_ID_SI_648, + PCI_DEVICE_ID_SI_746, + 0 // terminator +}; + static void __devinit sis_get_driver(struct agp_bridge_data *bridge) { - if (bridge->dev->device == PCI_DEVICE_ID_SI_648) { - if (agp_bridge->major_version == 3 && agp_bridge->minor_version < 5) { - sis_driver.agp_enable=sis_648_enable; - } else { - sis_driver.agp_enable = sis_648_enable; - sis_driver.aperture_sizes = agp3_generic_sizes; - sis_driver.size_type = U16_APER_SIZE; - sis_driver.num_aperture_sizes = AGP_GENERIC_SIZES_ENTRIES; - sis_driver.configure = agp3_generic_configure; - sis_driver.fetch_size = agp3_generic_fetch_size; - sis_driver.cleanup = agp3_generic_cleanup; - sis_driver.tlb_flush = agp3_generic_tlbflush; - } + int i; + + for(i=0; sis_broken_chipsets[i]!=0; ++i) + if(bridge->dev->device==sis_broken_chipsets[i]) + break; + + if(sis_broken_chipsets[i] || agp_sis_force_delay) + sis_driver.agp_enable=sis_delayed_enable; + + // sis chipsets that indicate less than agp3.5 + // are not actually fully agp3 compliant + if ((agp_bridge->major_version == 3 && agp_bridge->minor_version >= 5 + && agp_sis_agp_spec!=0) || agp_sis_agp_spec==1) { + sis_driver.aperture_sizes = agp3_generic_sizes; + sis_driver.size_type = U16_APER_SIZE; + sis_driver.num_aperture_sizes = AGP_GENERIC_SIZES_ENTRIES; + sis_driver.configure = agp3_generic_configure; + sis_driver.fetch_size = agp3_generic_fetch_size; + sis_driver.cleanup = agp3_generic_cleanup; + sis_driver.tlb_flush = agp3_generic_tlbflush; } } @@ -324,4 +343,8 @@ static void __exit agp_sis_cleanup(void) module_init(agp_sis_init); module_exit(agp_sis_cleanup); +MODULE_PARM(agp_sis_force_delay,"i"); +MODULE_PARM_DESC(agp_sis_force_delay,"forces sis delay hack"); +MODULE_PARM(agp_sis_agp_spec,"i"); +MODULE_PARM_DESC(agp_sis_agp_spec,"0=force sis init, 1=force generic agp3 init, default: autodetect"); MODULE_LICENSE("GPL and additional rights"); -------------------------------------------------------------------------------- The information contained herein is confidential and is intended solely for the addressee. Access by any other party is unauthorised without the express written permission of the sender. If you are not the intended recipient, please contact the sender either via the company switchboard on +44 (0)20 7623 8000, or via e-mail return. If you have received this e-mail in error or wish to read our e-mail disclaimer statement and monitoring policy, please refer to http://www.drkw.com/disc/email/ or contact the sender. -------------------------------------------------------------------------------- ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] SIS AGP vs 2.6.6-rc2 2004-04-26 9:32 ` [PATCH] SIS AGP clean up, blacklist and module options Heilmann, Oliver @ 2004-04-27 11:04 ` Heilmann, Oliver 2004-04-27 17:29 ` Hemmann, Volker Armin 0 siblings, 1 reply; 6+ messages in thread From: Heilmann, Oliver @ 2004-04-27 11:04 UTC (permalink / raw) To: linux-kernel; +Cc: akpm, davej, oschoett, volker.hemmann And here it is yet again this time diffed against 2.6.6-rc2 plus latest cset (patches cleanly onto "vanilla" 2.6.6.-rc2 too). I've included the description again: * renamed sis_648_enable to sis_delayed_enable and removed chipset references * All chipsets that require the sis delay-hack are listed in sis_broken_chipsets (and no other place). * There are two new module options to force agp3-spec compliant initialisation and/or the delay hack. As I only have a 648FX chipset to test on, I figured this might be useful to experiment with on other chipsets (i.e.746[FX]). Basically, if you have an SiS chipset and your machine freezes when you start X, try the -agp_sis_force_delay=1 option. If this fixes your problem add your PCI ID to sis_broken_chipsets in sis-agp.c Note to 746[FX] people: I'm still not sure what the differences between the two 746 versions and the 648 series are. If this patch does not work for you try playing with the agp_sis_agp_spec module option. Any feedback is greatly appreciated. Oliver --- linux-2.6.6-rc2.latest/drivers/char/agp/sis-agp.c.orig 2004-04-27 11:22:45.000000000 +0100 +++ linux-2.6.6-rc2.latest/drivers/char/agp/sis-agp.c 2004-04-27 11:35:17.000000000 +0100 @@ -13,6 +13,8 @@ #define SIS_TLBCNTRL 0x97 #define SIS_TLBFLUSH 0x98 +static int __devinitdata agp_sis_force_delay = 0; +static int __devinitdata agp_sis_agp_spec = -1; static int sis_fetch_size(void) { @@ -67,7 +69,7 @@ static void sis_cleanup(void) (previous_size->size_value & ~(0x03))); } -static void sis_648_enable(u32 mode) +static void sis_delayed_enable(u32 mode) { struct pci_dev *device = NULL; u32 command; @@ -94,13 +96,12 @@ static void sis_648_enable(u32 mode) pci_write_config_dword(device, agp + PCI_AGP_COMMAND, command); /* - * Weird: on 648(fx) and 746(fx) chipsets any rate change in the target + * Weird: on some sis chipsets any rate change in the target * command register triggers a 5ms screwup during which the master * cannot be configured */ - if (device->device == PCI_DEVICE_ID_SI_648 || - device->device == PCI_DEVICE_ID_SI_746) { - printk(KERN_INFO PFX "SiS chipset with AGP problems detected. Giving bridge time to recover.\n"); + if (device->device == agp_bridge->dev->device) { + printk(KERN_INFO PFX "SiS delay workaround: giving bridge time to recover.\n"); set_current_state(TASK_UNINTERRUPTIBLE); schedule_timeout (1+(HZ*10)/1000); } @@ -223,28 +224,35 @@ static struct agp_device_ids sis_agp_dev }; +// chipsets that require the 'delay hack' +static int sis_broken_chipsets[] __devinitdata = { + PCI_DEVICE_ID_SI_648, + PCI_DEVICE_ID_SI_746, + 0 // terminator +}; + static void __devinit sis_get_driver(struct agp_bridge_data *bridge) { - if (bridge->dev->device == PCI_DEVICE_ID_SI_648) { - sis_driver.agp_enable=sis_648_enable; - if (agp_bridge->major_version == 3) { - sis_driver.aperture_sizes = agp3_generic_sizes; - sis_driver.size_type = U16_APER_SIZE; - sis_driver.num_aperture_sizes = AGP_GENERIC_SIZES_ENTRIES; - sis_driver.configure = agp3_generic_configure; - sis_driver.fetch_size = agp3_generic_fetch_size; - sis_driver.cleanup = agp3_generic_cleanup; - sis_driver.tlb_flush = agp3_generic_tlbflush; - } - } + int i; - if (bridge->dev->device == PCI_DEVICE_ID_SI_746) { - /* - * We don't know enough about the 746 to enable it properly. - * Though we do know that it needs the 'delay' hack to settle - * after changing modes. - */ - sis_driver.agp_enable=sis_648_enable; + for(i=0; sis_broken_chipsets[i]!=0; ++i) + if(bridge->dev->device==sis_broken_chipsets[i]) + break; + + if(sis_broken_chipsets[i] || agp_sis_force_delay) + sis_driver.agp_enable=sis_delayed_enable; + + // sis chipsets that indicate less than agp3.5 + // are not actually fully agp3 compliant + if ((agp_bridge->major_version == 3 && agp_bridge->minor_version >= 5 + && agp_sis_agp_spec!=0) || agp_sis_agp_spec==1) { + sis_driver.aperture_sizes = agp3_generic_sizes; + sis_driver.size_type = U16_APER_SIZE; + sis_driver.num_aperture_sizes = AGP_GENERIC_SIZES_ENTRIES; + sis_driver.configure = agp3_generic_configure; + sis_driver.fetch_size = agp3_generic_fetch_size; + sis_driver.cleanup = agp3_generic_cleanup; + sis_driver.tlb_flush = agp3_generic_tlbflush; } } @@ -335,4 +343,8 @@ static void __exit agp_sis_cleanup(void) module_init(agp_sis_init); module_exit(agp_sis_cleanup); +MODULE_PARM(agp_sis_force_delay,"i"); +MODULE_PARM_DESC(agp_sis_force_delay,"forces sis delay hack"); +MODULE_PARM(agp_sis_agp_spec,"i"); +MODULE_PARM_DESC(agp_sis_agp_spec,"0=force sis init, 1=force generic agp3 init, default: autodetect"); MODULE_LICENSE("GPL and additional rights"); -------------------------------------------------------------------------------- The information contained herein is confidential and is intended solely for the addressee. Access by any other party is unauthorised without the express written permission of the sender. If you are not the intended recipient, please contact the sender either via the company switchboard on +44 (0)20 7623 8000, or via e-mail return. If you have received this e-mail in error or wish to read our e-mail disclaimer statement and monitoring policy, please refer to http://www.drkw.com/disc/email/ or contact the sender. -------------------------------------------------------------------------------- ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] SIS AGP vs 2.6.6-rc2 2004-04-27 11:04 ` [PATCH] SIS AGP vs 2.6.6-rc2 Heilmann, Oliver @ 2004-04-27 17:29 ` Hemmann, Volker Armin 2004-04-27 19:00 ` Heilmann, Oliver 2004-04-27 19:40 ` Heilmann, Oliver 0 siblings, 2 replies; 6+ messages in thread From: Hemmann, Volker Armin @ 2004-04-27 17:29 UTC (permalink / raw) To: Heilmann, Oliver; +Cc: linux-kernel, akpm, davej, oschoett [-- Attachment #1: Type: text/plain, Size: 616 bytes --] Hi, I tried your patch and is has rejects again: energy linux # patch -p1 < sis.agp.patch patching file drivers/char/agp/sis-agp.c Hunk #1 succeeded at 13 with fuzz 2. Hunk #2 succeeded at 69 with fuzz 2. Hunk #3 FAILED at 96. Hunk #4 FAILED at 224. 2 out of 5 hunks FAILED -- saving rejects to file drivers/char/agp/sis-agp.c.rej Attached is the .rej file. Glück Auf Volker -- Conclusions In a straight-up fight, the Empire squashes the Federation like a bug. Even with its numerical advantage removed, the Empire would still squash the Federation like a bug. Accept it. -Michael Wong [-- Attachment #2: sis-agp.c.rej --] [-- Type: text/x-diff, Size: 3954 bytes --] *************** *** 94,106 **** pci_write_config_dword(device, agp + PCI_AGP_COMMAND, command); /* - * Weird: on 648(fx) and 746(fx) chipsets any rate change in the target * command register triggers a 5ms screwup during which the master * cannot be configured */ - if (device->device == PCI_DEVICE_ID_SI_648 || - device->device == PCI_DEVICE_ID_SI_746) { - printk(KERN_INFO PFX "SiS chipset with AGP problems detected. Giving bridge time to recover.\n"); set_current_state(TASK_UNINTERRUPTIBLE); schedule_timeout (1+(HZ*10)/1000); } --- 96,107 ---- pci_write_config_dword(device, agp + PCI_AGP_COMMAND, command); /* + * Weird: on some sis chipsets any rate change in the target * command register triggers a 5ms screwup during which the master * cannot be configured */ + if (device->device == agp_bridge->dev->device) { + printk(KERN_INFO PFX "SiS delay workaround: giving bridge time to recover.\n"); set_current_state(TASK_UNINTERRUPTIBLE); schedule_timeout (1+(HZ*10)/1000); } *************** *** 223,250 **** }; static void __devinit sis_get_driver(struct agp_bridge_data *bridge) { - if (bridge->dev->device == PCI_DEVICE_ID_SI_648) { - sis_driver.agp_enable=sis_648_enable; - if (agp_bridge->major_version == 3) { - sis_driver.aperture_sizes = agp3_generic_sizes; - sis_driver.size_type = U16_APER_SIZE; - sis_driver.num_aperture_sizes = AGP_GENERIC_SIZES_ENTRIES; - sis_driver.configure = agp3_generic_configure; - sis_driver.fetch_size = agp3_generic_fetch_size; - sis_driver.cleanup = agp3_generic_cleanup; - sis_driver.tlb_flush = agp3_generic_tlbflush; - } - } - if (bridge->dev->device == PCI_DEVICE_ID_SI_746) { - /* - * We don't know enough about the 746 to enable it properly. - * Though we do know that it needs the 'delay' hack to settle - * after changing modes. - */ - sis_driver.agp_enable=sis_648_enable; } } --- 224,258 ---- }; + // chipsets that require the 'delay hack' + static int sis_broken_chipsets[] __devinitdata = { + PCI_DEVICE_ID_SI_648, + PCI_DEVICE_ID_SI_746, + 0 // terminator + }; + static void __devinit sis_get_driver(struct agp_bridge_data *bridge) { + int i; + for(i=0; sis_broken_chipsets[i]!=0; ++i) + if(bridge->dev->device==sis_broken_chipsets[i]) + break; + + if(sis_broken_chipsets[i] || agp_sis_force_delay) + sis_driver.agp_enable=sis_delayed_enable; + + // sis chipsets that indicate less than agp3.5 + // are not actually fully agp3 compliant + if ((agp_bridge->major_version == 3 && agp_bridge->minor_version >= 5 + && agp_sis_agp_spec!=0) || agp_sis_agp_spec==1) { + sis_driver.aperture_sizes = agp3_generic_sizes; + sis_driver.size_type = U16_APER_SIZE; + sis_driver.num_aperture_sizes = AGP_GENERIC_SIZES_ENTRIES; + sis_driver.configure = agp3_generic_configure; + sis_driver.fetch_size = agp3_generic_fetch_size; + sis_driver.cleanup = agp3_generic_cleanup; + sis_driver.tlb_flush = agp3_generic_tlbflush; } } ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] SIS AGP vs 2.6.6-rc2 2004-04-27 17:29 ` Hemmann, Volker Armin @ 2004-04-27 19:00 ` Heilmann, Oliver 2004-04-27 19:40 ` Heilmann, Oliver 1 sibling, 0 replies; 6+ messages in thread From: Heilmann, Oliver @ 2004-04-27 19:00 UTC (permalink / raw) To: Hemmann, Volker Armin, linux-kernel The patch works! (Just to be sure I tried it again with the posting I received back from vger.). Make sure you don't screw up the tabs when you copy and paste. I always save the entire mail to a patch file. On Tue, 2004-04-27 at 18:29, Hemmann, Volker Armin wrote: > Hi, > I tried your patch and is has rejects again: > energy linux # patch -p1 < sis.agp.patch > patching file drivers/char/agp/sis-agp.c > Hunk #1 succeeded at 13 with fuzz 2. > Hunk #2 succeeded at 69 with fuzz 2. > Hunk #3 FAILED at 96. > Hunk #4 FAILED at 224. > 2 out of 5 hunks FAILED -- saving rejects to file > drivers/char/agp/sis-agp.c.rej > > Attached is the .rej file. > > Glück Auf > Volker -------------------------------------------------------------------------------- The information contained herein is confidential and is intended solely for the addressee. Access by any other party is unauthorised without the express written permission of the sender. If you are not the intended recipient, please contact the sender either via the company switchboard on +44 (0)20 7623 8000, or via e-mail return. If you have received this e-mail in error or wish to read our e-mail disclaimer statement and monitoring policy, please refer to http://www.drkw.com/disc/email/ or contact the sender. -------------------------------------------------------------------------------- ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] SIS AGP vs 2.6.6-rc2 2004-04-27 17:29 ` Hemmann, Volker Armin 2004-04-27 19:00 ` Heilmann, Oliver @ 2004-04-27 19:40 ` Heilmann, Oliver 2004-04-27 20:22 ` Hemmann, Volker Armin 1 sibling, 1 reply; 6+ messages in thread From: Heilmann, Oliver @ 2004-04-27 19:40 UTC (permalink / raw) To: Hemmann, Volker Armin; +Cc: linux-kernel, akpm, davej, oschoett I forgot, this (-l) will probably do the trick for you: patch -p1 -l < sis.agp.patch On Tue, 2004-04-27 at 18:29, Hemmann, Volker Armin wrote: > Hi, > I tried your patch and is has rejects again: > energy linux # patch -p1 < sis.agp.patch > patching file drivers/char/agp/sis-agp.c > Hunk #1 succeeded at 13 with fuzz 2. > Hunk #2 succeeded at 69 with fuzz 2. > Hunk #3 FAILED at 96. > Hunk #4 FAILED at 224. > 2 out of 5 hunks FAILED -- saving rejects to file > drivers/char/agp/sis-agp.c.rej > > Attached is the .rej file. > > Glück Auf > Volker -------------------------------------------------------------------------------- The information contained herein is confidential and is intended solely for the addressee. Access by any other party is unauthorised without the express written permission of the sender. If you are not the intended recipient, please contact the sender either via the company switchboard on +44 (0)20 7623 8000, or via e-mail return. If you have received this e-mail in error or wish to read our e-mail disclaimer statement and monitoring policy, please refer to http://www.drkw.com/disc/email/ or contact the sender. -------------------------------------------------------------------------------- ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH] SIS AGP vs 2.6.6-rc2 2004-04-27 19:40 ` Heilmann, Oliver @ 2004-04-27 20:22 ` Hemmann, Volker Armin 0 siblings, 0 replies; 6+ messages in thread From: Hemmann, Volker Armin @ 2004-04-27 20:22 UTC (permalink / raw) To: Heilmann, Oliver; +Cc: linux-kernel, akpm, davej, oschoett Hi, I tried the gzip'ed patch and it applied cleanly. testgart works and gives the usual results, dmesg is ok, showing the warning. Nvidia is not working with 2.6.6-rc2, so I do not know exactly that everything is ok, but if testgart is fine, X had no problems in the past. Glück Auf Volker -- Conclusions In a straight-up fight, the Empire squashes the Federation like a bug. Even with its numerical advantage removed, the Empire would still squash the Federation like a bug. Accept it. -Michael Wong ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2004-05-07 23:09 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-05-07 23:08 [PATCH] SIS AGP vs 2.6.6-rc2 Cédric Rivard
[not found] <20040426082159.90513.qmail@web10102.mail.yahoo.com>
2004-04-26 9:32 ` [PATCH] SIS AGP clean up, blacklist and module options Heilmann, Oliver
2004-04-27 11:04 ` [PATCH] SIS AGP vs 2.6.6-rc2 Heilmann, Oliver
2004-04-27 17:29 ` Hemmann, Volker Armin
2004-04-27 19:00 ` Heilmann, Oliver
2004-04-27 19:40 ` Heilmann, Oliver
2004-04-27 20:22 ` Hemmann, Volker Armin
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.