* information conqueror
From: Henry Gage @ 2004-01-11 7:13 UTC (permalink / raw)
To: kernel-janitors
[-- Attachment #1: Type: text/plain, Size: 180 bytes --]
pestilential allude merrymake psychosis astm bowstring
backwood bough carload capitulate
figurine antoinette emphatic copolymer desicate scoria schoolmaster preparation banbury
[-- Attachment #2: Type: text/html, Size: 2996 bytes --]
^ permalink raw reply
* Re: [PATCH] Increase recursive symlink limit from 5 to 8
From: Steve Youngs @ 2004-01-11 7:01 UTC (permalink / raw)
To: Linux Kernel List
In-Reply-To: <2flllofnvp6.fsf@saruman.uio.no>
[-- Attachment #1: Type: text/plain, Size: 1025 bytes --]
* Petter Reinholdtsen <pere@hungry.com> writes:
> Linux: Symlink limit seem to be 6 path entities.
> AIX: Symlink limit seem to be 21 path entities.
> HP-UX: Symlink limit seem to be 21 path entities.
> Solaris: Symlink limit seem to be 21 path entities.
> Irix: Symlink limit seem to be 31 path entities.
> Mac OS X: Symlink limit seem to be 33 path entities.
> Tru64 Unix: Symlink limit seem to be 65 path entities.
> I really think this limit should be increased in Linux. Not sure
> how high it should go, but from 5 to somewhere between 20 and 64
> seem like a good idea to me.
6 does seem pretty low. What was the reason for setting it there? Is
there a downside to increasing it?
--
|---<Steve Youngs>---------------<GnuPG KeyID: A94B3003>---|
| Ashes to ashes, dust to dust. |
| The proof of the pudding, is under the crust. |
|------------------------------<sryoungs@bigpond.net.au>---|
[-- Attachment #2: Type: application/pgp-signature, Size: 256 bytes --]
^ permalink raw reply
* errors in compiling the hooks
From: vamsi krishna @ 2004-01-11 6:55 UTC (permalink / raw)
To: netfilter
hai,
i am a new bie. when i am trying to compile the
following program
#define __KERNEL__
#define MODULE
#include<linux/module.h>
#include<linux/kernel.h>
#include<linux/netfilter.h>
#include<linux/netfilter_ipv4.h>
static struct nf_hook_ops nfho;
unsigned int hook_func(unsigned int hooknum,
struct sk_buff **skb,
const struct net_device *in,
const struct net_device *out,
int (*okfn)(struct sk_buff *))
{
return NF_DROP;
}
int init_module()
{
nfho.hook=hook_func;
nfho.hooknum=NF_IP_PRE_ROUTING;
nfho.pf=PF_INET;
nfho.priority=NF_IP_PRI_FIRST;
nf_register_hook(&nfho);
return 0;
}
void cleanup_module()
{
nf_unregister_hook(&nfho);
}
i got the following errors .
[root@localhost vamsi]# gcc -c p1.c
In file included from p1.c:7:
/usr/include/linux/netfilter_ipv4.h:53: `INT_MIN'
undeclared here (not in a function)
/usr/include/linux/netfilter_ipv4.h:53: enumerator
value for `NF_IP_PRI_FIRST' not integer constant
/usr/include/linux/netfilter_ipv4.h:59: `INT_MAX'
undeclared here (not in a function)
/usr/include/linux/netfilter_ipv4.h:59: enumerator
value for `NF_IP_PRI_LAST' not integer constant
p1.c:15: warning: `struct net_device' declared inside
parameter list
p1.c:15: warning: its scope is only this definition or
declaration, which is probably not what you want
p1.c:15: warning: `struct sk_buff' declared inside
parameter list
p1.c: In function `init_module':
p1.c:22: invalid use of undefined type `struct
nf_hook_ops'
p1.c:23: invalid use of undefined type `struct
nf_hook_ops'
p1.c:24: invalid use of undefined type `struct
nf_hook_ops'
p1.c:24: `PF_INET' undeclared (first use in this
function)
p1.c:24: (Each undeclared identifier is reported only
once
p1.c:24: for each function it appears in.)
p1.c:25: invalid use of undefined type `struct
nf_hook_ops'
p1.c: At top level:
p1.c:9: storage size of `nfho' isn't known
please help me,
thanks,
vamsi
________________________________________________________________________
Yahoo! India Mobile: Download the latest polyphonic ringtones.
Go to http://in.mobile.yahoo.com
^ permalink raw reply
* errors in compiling the hooks
From: vamsi krishna @ 2004-01-11 6:55 UTC (permalink / raw)
To: netfilter
hai,
i am a new bie. when i am trying to compile the
following program
#define __KERNEL__
#define MODULE
#include<linux/module.h>
#include<linux/kernel.h>
#include<linux/netfilter.h>
#include<linux/netfilter_ipv4.h>
static struct nf_hook_ops nfho;
unsigned int hook_func(unsigned int hooknum,
struct sk_buff **skb,
const struct net_device *in,
const struct net_device *out,
int (*okfn)(struct sk_buff *))
{
return NF_DROP;
}
int init_module()
{
nfho.hook=hook_func;
nfho.hooknum=NF_IP_PRE_ROUTING;
nfho.pf=PF_INET;
nfho.priority=NF_IP_PRI_FIRST;
nf_register_hook(&nfho);
return 0;
}
void cleanup_module()
{
nf_unregister_hook(&nfho);
}
i got the following errors .
[root@localhost vamsi]# gcc -c p1.c
In file included from p1.c:7:
/usr/include/linux/netfilter_ipv4.h:53: `INT_MIN'
undeclared here (not in a function)
/usr/include/linux/netfilter_ipv4.h:53: enumerator
value for `NF_IP_PRI_FIRST' not integer constant
/usr/include/linux/netfilter_ipv4.h:59: `INT_MAX'
undeclared here (not in a function)
/usr/include/linux/netfilter_ipv4.h:59: enumerator
value for `NF_IP_PRI_LAST' not integer constant
p1.c:15: warning: `struct net_device' declared inside
parameter list
p1.c:15: warning: its scope is only this definition or
declaration, which is probably not what you want
p1.c:15: warning: `struct sk_buff' declared inside
parameter list
p1.c: In function `init_module':
p1.c:22: invalid use of undefined type `struct
nf_hook_ops'
p1.c:23: invalid use of undefined type `struct
nf_hook_ops'
p1.c:24: invalid use of undefined type `struct
nf_hook_ops'
p1.c:24: `PF_INET' undeclared (first use in this
function)
p1.c:24: (Each undeclared identifier is reported only
once
p1.c:24: for each function it appears in.)
p1.c:25: invalid use of undefined type `struct
nf_hook_ops'
p1.c: At top level:
p1.c:9: storage size of `nfho' isn't known
please help me,
thanks,
vamsi
________________________________________________________________________
Yahoo! India Mobile: Download the latest polyphonic ringtones.
Go to http://in.mobile.yahoo.com
^ permalink raw reply
* Re: Laptops & CPU frequency
From: Willy Tarreau @ 2004-01-11 6:16 UTC (permalink / raw)
To: Robert Love; +Cc: jlnance, linux-kernel
In-Reply-To: <1073791061.1663.77.camel@localhost>
On Sat, Jan 10, 2004 at 10:17:41PM -0500, Robert Love wrote:
> You probably have some issue in your power management scripts - Fedora
> should scale the CPU speed back as soon as you remove AC power, not just
> at boot if not on AC.
I never understood why the speed depends on AC power (except to fake a long
autonomy). It would be smarter if it scaled the speed based on CPU usage.
It's what I did on my notebook (athlon 1.3G), and I'm happy to run it all
the day at 500 MHz and not to hear its stupid CPU fan dancing every minute,
and I too am happy to be able to compile a kernel in 3 minutes even on
battery, when it would take 10 min at 500 MHz and eat the battery much more,
since LCD and disk eat power during 7 more minutes.
Just my thought...
Cheers,
Willy
^ permalink raw reply
* Re: SoundBlaster 64 AWE and 2.6.1-mm1?
From: Rene Herman @ 2004-01-11 6:09 UTC (permalink / raw)
To: trelane; +Cc: linux-kernel
In-Reply-To: <20040110191950.GD5002@digitasaru.net>
Joseph Pingenot wrote:
> For some reason, while pnp detects the SoundBlaster card, it's not
> recognized by ALSA for some reason, exactly as the CS4236 card was
> (different machine, tho).
> Am I missing something? Anyone using SoundBlaster 64 AWE under 2.6?
Yes, I am. If ALSA comletely ignores the card, it's likely that it
simply does not know it _should_ be driving it, that is, that it doesn't
list your card's PnP ID. You can check your card's ID(s) at:
cat /sys/bus/pnp/devices/01:??.O{0,1,2}
Example for my AWE64:
rene@7ixe4:~$ cat /sys/bus/pnp/devices/01:01.00/id
CTL0044
rene@7ixe4:~$ cat /sys/bus/pnp/devices/01:01.01/id
CTL7002
PNPb02f
rene@7ixe4:~$ cat /sys/bus/pnp/devices/01:01.02/id
CTL0023
That second device is the gameport and will be picked up by ns558.c
through the "compatible device" PNPb02f ID, but you'll need the 00
(SB/MPU/OPL part) and the 02 ID (wavetable) listed in
sound/isa/sb/sb16.c. Add them to the snd_sb16_pnpids[] table in that file.
Hope this helps,
Rene.
^ permalink raw reply
* Kernel 2.4.20 RH Cannot set DMA
From: Alex @ 2004-01-11 6:04 UTC (permalink / raw)
To: linux-kernel
In-Reply-To: <20040111053446.GA1242@rivenstone.net>
Hi,
I am desperatly trying to enamle DMA on my HD (hdparm -d1 /dev/hda) but always get an error message saying
HDIO_SET_DMA failed: Operation not permitted
using_dma = 0 (off)
Can anybody help me to get this working?
Thanks
Alex
Some information about my system
[root@morcote root]# uname -a
Linux morcote 2.4.20-28.9custom #2 Tue Jan 6 19:25:28 JST 2004 i686 i686 i386 GNU/Linux
[root@morcote root]# hdparm -tT /dev/hda
/dev/hda:
Timing buffer-cache reads: 128 MB in 0.19 seconds =673.68 MB/sec
Timing buffered disk reads: 64 MB in 22.30 seconds = 2.87 MB/sec
[root@morcote root]# hdparm -i /dev/hda
/dev/hda:
Model=ST3120026A, FwRev=3.06, SerialNo=3JT28LX6
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs RotSpdTol>.5% }
RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=4
BuffType=unknown, BuffSize=8192kB, MaxMultSect=16, MultSect=16
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=234441648
IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5
AdvancedPM=no WriteCache=enabled
Drive conforms to: ATA/ATAPI-6 T13 1410D revision 2: 1 2 3 4 5 6
[root@morcote root]# hdparm -v /dev/hda
/dev/hda:
multcount = 16 (on)
IO_support = 0 (default 16-bit)
unmaskirq = 0 (off)
using_dma = 0 (off)
keepsettings = 0 (off)
readonly = 0 (off)
readahead = 8 (on)
geometry = 14593/255/63, sectors = 234441648, start = 0
[root@morcote root]# dmesg
Linux version 2.4.20-28.9custom (root@localhost) (gcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5)) #2 Tue Jan 6 19:25:28 JST 2004
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 000000003bef0000 (usable)
BIOS-e820: 000000003bef0000 - 000000003bef3000 (ACPI NVS)
BIOS-e820: 000000003bef3000 - 000000003bf00000 (ACPI data)
BIOS-e820: 00000000fec00000 - 0000000100000000 (reserved)
62MB HIGHMEM available.
896MB LOWMEM available.
On node 0 totalpages: 245488
zone(0): 4096 pages.
zone(1): 225280 pages.
zone(2): 16112 pages.
Kernel command line: ro root=LABEL=/ hdc=ide-scsi
ide_setup: hdc=ide-scsi
Initializing CPU#0
Detected 3192.624 MHz processor.
Console: colour VGA+ 80x25
Calibrating delay loop... 6370.09 BogoMIPS
Memory: 962280k/981952k available (1354k kernel code, 16608k reserved, 1001k data, 132k init, 64448k highmem)
Dentry cache hash table entries: 131072 (order: 8, 1048576 bytes)
Inode cache hash table entries: 65536 (order: 7, 524288 bytes)
Mount cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer-cache hash table entries: 65536 (order: 6, 262144 bytes)
Page-cache hash table entries: 262144 (order: 8, 1048576 bytes)
CPU: Trace cache: 12K uops, L1 D cache: 8K
CPU: L2 cache: 512K
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#0.
CPU: After generic, caps: bfebfbff 00000000 00000000 00000000
CPU: Common caps: bfebfbff 00000000 00000000 00000000
CPU: Intel(R) Pentium(R) 4 CPU 3.20GHz stepping 09
Enabling fast FPU save and restore... done.
Enabling unmasked SIMD FPU exception support... done.
Checking 'hlt' instruction... OK.
POSIX conformance testing by UNIFIX
mtrr: v1.40 (20010327) Richard Gooch (rgooch@atnf.csiro.au)
mtrr: detected mtrr type: Intel
PCI: PCI BIOS revision 2.10 entry at 0xfb470, last bus=2
PCI: Using configuration type 1
PCI: Probing PCI hardware
PCI: Ignoring BAR0-3 of IDE controller 00:14.1
Transparent bridge - PCI device 1002:4342 (ATI Technologies Inc)
PCI: Using IRQ router default [1002/5833] at 00:00.0
isapnp: Scanning for PnP cards...
isapnp: No Plug & Play device found
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
apm: BIOS version 1.2 Flags 0x07 (Driver version 1.16)
Starting kswapd
allocated 32 pages and 32 bhs reserved for the highmem bounces
VFS: Disk quotas vdquot_6.5.1
pty: 2048 Unix98 ptys configured
Serial driver version 5.05c (2001-07-08) with MANY_PORTS MULTIPORT SHARE_IRQ SERIAL_PCI ISAPNP enabled
ttyS0 at 0x03f8 (irq = 4) is a 16550A
Real Time Clock Driver v1.10e
floppy0: no floppy controllers found
NET4: Frame Diverter 0.46
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
Uniform Multi-Platform E-IDE driver Revision: 7.00beta3-.2.4
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
hda: ST3120026A, ATA DISK drive
hdc: DVD-RW IDE1004, ATAPI CD/DVD-ROM drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
hda: attached ide-disk driver.
hda: host protected area => 1
hda: 234441648 sectors (120034 MB) w/8192KiB Cache, CHS=14593/255/63
ide-floppy driver 0.99.newide
Partition check:
hda: hda1 hda2 hda3 hda4 < hda5 hda6 hda7 hda8 >
ide-floppy driver 0.99.newide
md: md driver 0.90.0 MAX_MD_DEVS=256, MD_SB_DISKS=27
md: Autodetecting RAID arrays.
md: autorun ...
md: ... autorun DONE.
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
IP: routing cache hash table of 8192 buckets, 64Kbytes
TCP: Hash tables configured (established 262144 bind 65536)
Linux IP multicast router 0.06 plus PIM-SM
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
RAMDISK: Compressed image found at block 0
Freeing initrd memory: 146k freed
VFS: Mounted root (ext2 filesystem).
Journalled Block Device driver loaded
kjournald starting. Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
Freeing unused kernel memory: 132k freed
usb.c: registered new driver usbdevfs
usb.c: registered new driver hub
usb-ohci.c: USB OHCI at membase 0xf884a000, IRQ 3
usb-ohci.c: usb-00:13.0, PCI device 1002:4347 (ATI Technologies Inc)
usb.c: new USB bus registered, assigned bus number 1
hub.c: USB hub found
hub.c: 3 ports detected
usb-ohci.c: USB OHCI at membase 0xf884c000, IRQ 3
usb-ohci.c: usb-00:13.1, PCI device 1002:4348 (ATI Technologies Inc)
usb.c: new USB bus registered, assigned bus number 2
hub.c: USB hub found
hub.c: 3 ports detected
ehci-hcd 00:13.2: PCI device 1002:4345 (ATI Technologies Inc)
ehci-hcd 00:13.2: irq 3, pci mem f8854000
usb.c: new USB bus registered, assigned bus number 3
PCI: 00:13.2 PCI cache line size set incorrectly (32 bytes) by BIOS/FW.
PCI: 00:13.2 PCI cache line size corrected to 128.
ehci-hcd 00:13.2: USB 2.0 enabled, EHCI 1.00, driver 2003-Jan-22
hub.c: USB hub found
hub.c: 6 ports detected
usb.c: registered new driver hiddev
usb.c: registered new driver hid
hid-core.c: v1.8.1 Andreas Gal, Vojtech Pavlik <vojtech@suse.cz>
hid-core.c: USB HID support drivers
mice: PS/2 mouse device common for all mice
EXT3 FS 2.4-0.9.19, 19 August 2002 on ide0(3,3), internal journal
Adding Swap: 2024148k swap-space (priority -1)
hub.c: new USB device 00:13.2-5, assigned address 2
usb.c: USB device not accepting new address=2 (error=-71)
hub.c: new USB device 00:13.2-5, assigned address 3
usb.c: USB device not accepting new address=3 (error=-71)
kjournald starting. Commit interval 5 seconds
EXT3 FS 2.4-0.9.19, 19 August 2002 on ide0(3,1), internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting. Commit interval 5 seconds
EXT3 FS 2.4-0.9.19, 19 August 2002 on ide0(3,8), internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting. Commit interval 5 seconds
EXT3 FS 2.4-0.9.19, 19 August 2002 on ide0(3,6), internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting. Commit interval 5 seconds
EXT3 FS 2.4-0.9.19, 19 August 2002 on ide0(3,5), internal journal
EXT3-fs: mounted filesystem with ordered data mode.
kjournald starting. Commit interval 5 seconds
EXT3 FS 2.4-0.9.19, 19 August 2002 on ide0(3,2), internal journal
EXT3-fs: mounted filesystem with ordered data mode.
ohci1394: $Rev: 693 $ Ben Collins <bcollins@debian.org>
ohci1394_0: OHCI-1394 1.0 (PCI): IRQ=[3] MMIO=[df003000-df0037ff] Max Packet=[2048]
ieee1394: SelfID completion called outside of bus reset!
ieee1394: Host added: Node[00:1023] GUID[00301bb100006be5] [Linux OHCI-1394]
SCSI subsystem driver Revision: 1.00
hdc: attached ide-scsi driver.
scsi0 : SCSI host adapter emulation for IDE ATAPI devices
Vendor: DVDRW Model: IDE1004 Rev: 0040
Type: CD-ROM ANSI SCSI revision: 02
parport0: PC-style at 0x378 [PCSPP,TRISTATE]
Attached scsi CD-ROM sr0 at scsi0, channel 0, id 0, lun 0
sr0: scsi3-mmc drive: 1x/40x writer cd/rw xa/form2 cdda tray
Uniform CD-ROM driver Revision: 3.12
ip_tables: (C) 2000-2002 Netfilter core team
Broadcom 4401 Ethernet Driver bcm4400 ver. 1.0.2 (09/06/02)
divert: allocating divert_blk for eth0
eth0: Broadcom BCM4401 100Base-T found at mem df000000, IRQ 10, node addr 00301bb16b81
ip_tables: (C) 2000-2002 Netfilter core team
bcm4400: eth0 NIC Link is Up, 100 Mbps full duplex
NETDEV WATCHDOG: eth0: transmit timed out
ip_tables: (C) 2000-2002 Netfilter core team
[root@morcote root]#
[root@morcote log]# lspci
00:00.0 Host bridge: ATI Technologies Inc: Unknown device 5833 (rev 02)
00:01.0 PCI bridge: ATI Technologies Inc: Unknown device 5838
00:13.0 USB Controller: ATI Technologies Inc: Unknown device 4347 (rev 01)
00:13.1 USB Controller: ATI Technologies Inc: Unknown device 4348 (rev 01)
00:13.2 USB Controller: ATI Technologies Inc: Unknown device 4345 (rev 01)
00:14.0 SMBus: ATI Technologies Inc: Unknown device 4353 (rev 17)
00:14.1 IDE interface: ATI Technologies Inc: Unknown device 4349
00:14.3 ISA bridge: ATI Technologies Inc: Unknown device 434c
00:14.4 PCI bridge: ATI Technologies Inc: Unknown device 4342
00:14.5 Multimedia audio controller: ATI Technologies Inc: Unknown device 4341
01:05.0 VGA compatible controller: ATI Technologies Inc: Unknown device 5834
02:05.0 RAID bus controller: CMD Technology Inc: Unknown device 3512 (rev 01)
02:06.0 Ethernet controller: Broadcom Corporation BCM4401 100Base-T (rev 01)
02:0b.0 FireWire (IEEE 1394): VIA Technologies, Inc. IEEE 1394 Host Controller (rev 80)
[root@morcote log]# cat /proc/modules
iptable_filter 2444 0 (autoclean) (unused)
ip_tables 15096 1 [iptable_filter]
autofs 13268 0 (autoclean) (unused)
bcm4400 30912 1
sg 36524 0 (autoclean)
sr_mod 18168 0 (autoclean)
ide-scsi 12208 0
scsi_mod 107576 3 [sg sr_mod ide-scsi]
ide-cd 35680 0
cdrom 33728 0 [sr_mod ide-cd]
ohci1394 20200 0 (unused)
ieee1394 48780 0 [ohci1394]
keybdev 2976 0 (unused)
mousedev 5556 1
hid 22244 0 (unused)
input 5888 0 [keybdev mousedev hid]
ehci-hcd 20104 0 (unused)
usb-ohci 21704 0 (unused)
usbcore 79072 1 [hid ehci-hcd usb-ohci]
ext3 70784 6
jbd 51924 6 [ext3]
boot log
Jan 7 23:49:04 morcote syslog: syslogd startup succeeded
Jan 7 23:49:04 morcote syslog: klogd startup succeeded
Jan 7 23:49:05 morcote portmap: portmap startup succeeded
Jan 7 23:49:05 morcote nfslock: rpc.statd startup succeeded
Jan 7 23:49:05 morcote keytable:
Jan 7 23:49:05 morcote keytable: Loading system font:
Jan 7 23:49:05 morcote keytable:
Jan 7 23:49:05 morcote rc: Starting keytable: succeeded
Jan 7 23:49:05 morcote random: Initializing random number generator: succeeded
Jan 7 23:49:05 morcote rc: Starting pcmcia: succeeded
Jan 7 23:49:05 morcote netfs: Mounting other filesystems: succeeded
Jan 7 23:49:06 morcote autofs: automount startup succeeded
Jan 7 23:49:02 morcote sysctl: kernel.shmall = 536870912
Jan 7 23:49:02 morcote sysctl: kernel.shmmax = 536870912
Jan 7 23:49:02 morcote network: Setting network parameters: succeeded
Jan 7 23:49:02 morcote network: Bringing up loopback interface: succeeded
Jan 7 23:49:07 morcote sshd: succeeded
Jan 7 23:49:10 morcote xinetd: xinetd startup succeeded
Jan 7 23:49:12 morcote ntpd: succeeded
Jan 7 23:49:13 morcote ntpd: ntpd startup succeeded
Jan 7 23:49:14 morcote sendmail: sendmail startup succeeded
Jan 7 23:49:14 morcote sendmail: sm-client startup succeeded
Jan 7 23:49:14 morcote gpm: gpm startup succeeded
Jan 7 23:49:15 morcote canna: succeeded
Jan 7 23:49:16 morcote crond: crond startup succeeded
Jan 7 23:49:19 morcote xfs: xfs startup succeeded
Jan 7 23:49:19 morcote anacron: anacron startup succeeded
Jan 7 23:49:19 morcote atd: atd startup succeeded
Jan 7 23:49:19 morcote rhnsd: rhnsd startup succeeded
^ permalink raw reply
* Re: [linux-lvm] failed a disk of LVM
From: Goetz Bock @ 2004-01-11 5:59 UTC (permalink / raw)
To: linux-lvm
In-Reply-To: <1073644416.2536.14.camel@heppc23>
On Fri, Jan 09 '04 at 11:33, Juan Jos? Pardo Navarro wrote:
> I have a logical volume (LV) with four physical volumnes (PV):
> hda1, hdb1, hdc1, hdd1.
> Yesterday a PV failed. (hdc1).
>
> could I recover the information?
Plane A: Take it from an up to date backup. (If you don't have one, try
to get one next time)
Plane B: get a disk the same size (or better 4 disks the same size as
hda, hdb, hdc and hdd) and ddrescue hdc to the new disks.
Than try to reactivate your backup version.
Plane C: force LVM to work without the broken drive (might work if you
had no data on hdc1)
Than make a full backup (plane B and C only), replace hdc, make a RAID5
and restore the backup.
--
/"\ Goetz Bock at blacknet dot de -- secure mobile Linux everNETting
\ / (c) 2003 as GNU FDL 1.1
X [ 1. Use descriptive subjects - 2. Edit a reply for brevity - ]
/ \ [ 3. Reply to the list - 4. Read the archive *before* you post ]
^ permalink raw reply
* [linux-lvm] LVM2 migration on 2.4.24 - prepare for 2.6
From: lvm @ 2004-01-11 5:59 UTC (permalink / raw)
To: linux-lvm
Hello,
i tried to migrate my system to LVM2 on 2.4 before migration to 2.6
to avoid troubles with LVM. I got the newest device-mapper/LVM2 tools
and installed them alongside with a patched kernel and dm-mod.
When i try to "vgchange -ay" with device-mapper/LVM2 i get all of my lv's
except one! All my snapshots are also corrupt (I use snapshots intensively).
Back to LVM1 was no problem - everything running and Ok. On another
machine without snapshots moving to dm/LVM2 on 2.4.24 was no problem.
Are there incompatibilities regarding snapshots with LVM1/2?
Details, logs, config can be sent on interest.
Regards
Axel Reinhold
^ permalink raw reply
* Re: source-mac filtering
From: Unknown, Alistair Tonner @ 2004-01-11 5:55 UTC (permalink / raw)
To: Håkan Engblom, netfilter
In-Reply-To: <Sea1-F7gMiX6AZCFgXe000520e9@hotmail.com>
On January 10, 2004 06:20 pm, Håkan Engblom wrote:
> Hi,
>
> I've run in to a strange problem. I have a dhcp-server on a 2.4.22 kernel
> with a 1.2.8 iptables. The dhcp-server is configured only to offer
> IP-addresses to one single mac-address (it is a single host on a private
> network)
>
>
> Does anyone have a clue ?
>
> br Håkan Engblom
>
> Some "logs" :
<relevant info snipped, since it has been through the list several times>
Can I think out loud for a moment???
have dhcpd listen on a *different* port than normal
have iptables grab relevant mac address broadcasts and redirect to appropriate port?
drop anything not in relevant mac address range?
Perhaps this might work???
anyone care to try?? --my personal net is static ... thankgod its only 5 boxen
Alistair Tonner
^ permalink raw reply
* Re: rtl8180l status ?
From: Andres Salomon @ 2004-01-11 5:47 UTC (permalink / raw)
To: linux-kernel
In-Reply-To: <200401102054.53387.geekassault@planetinternet.be>
I'm not sure if jgarzik is working on a driver or not (he never
responded to an email I sent), but I'm working on one. The main
remaining issues I need to work on are figuring out the tx/rx buffer
management scheme the rtl8180 uses, and getting the wireless stuff
done (this is my first attempt at dealing w/ wireless nics, so associating
w/ an access point and other such things are new to me).
Unfortunately, I really have been short of time lately, so progress on the
driver has been slow.
On Sat, 10 Jan 2004 20:56:01 +0100,
Geek Assault wrote:
> hi,
>
> I recently got my hands on a system with a realtek 8180l-based wireless
> network card (billionton miwlrp, [1]). There is a closed source driver from
> realtek, however it does not support 2.6 (yet, probably) and seems to be
> quite buggy.
>
> Having read a thread [2] about this, in which mr. Jeff Garzik seemed to imply
> that he was working with the realtek people to create an open source driver,
> I was wondering if anybody could confirm the existance of such an initiative.
> If it exists I'd like to offer my help, both towards developping (I'm a
> newbie, but I'd be happy to learn :) and/or testing.
>
> thanks in advance
>
> [1] http://sup.nl.packardbell.be/pri/
> index.php?PibItemNr=spec_WL_BilliontonMIWLRP
> [2] http://groups.google.com/
> groups?hl=en&lr=&ie=UTF-8&oe=utf-8&c2coff=1&threadm=Heux.4nY.7%
> 40gated-at.bofh.it&rnum=1&prev=/groups%3Fhl%3Den%26lr%3D%26ie%3DUTF-8%26oe%
> 3Dutf-8%26c2coff%3D1%26q%3D8180%2Bgarzik%26btnG%3DGoogle%2BSearch
^ permalink raw reply
* [PATCH] Re: ALSA in 2.6 failing to find the OPL chip of the sb cards
From: Rene Herman @ 2004-01-11 5:33 UTC (permalink / raw)
To: Santiago Garcia Mantinan; +Cc: Takashi Iwai, linux-kernel, Adam Belay
In-Reply-To: <3FFFA8C3.6040609@keyaccess.nl>
[-- Attachment #1: Type: text/plain, Size: 2241 bytes --]
Rene Herman wrote:
NOTE: I seem unable to contact Adam Belay; his ISP is not accepting mail
from mine. Takashi, if you agree attached patch is a correct fix, could
you relay it to Adam?
>> ALSA sound/drivers/opl3/opl3_lib.c:444: OPL2/3 chip not detected at
>> 0x388/0x38a
>> ALSA sound/isa/sb/sb16.c:484: sb16: no OPL device at 0x388-0x38a
>>
>> I think I have already said that in 2.4 it works, and I have tested both
>> alsa in the kernel plus alsa sources downloaded from alsa-project,
>> this last
>> one works in 2.4 but doesn't work in 2.6.
>
> I'm seeing the same behaviour with a Sound Blaster AWE64 Gold. It seems
> it's not an ALSA problem though, but ISA-PnP.
Assuming ALSA isn't misusing the PnP API, it's indeed not ALSA, but PnP.
It also isn't actually an OPL3 issue, but MPU401. Trouble is that sb16.c
doesn't set mpu_port to SNDRV_DEFAULT_PORT, but hardcodes the values for
the first two cards as 0x330 and 0x300 (Takashi: why is that, by the
way? At least for ISA-PnP cards SNDRV_DEFAULT_PORT would seem better?).
This causes the initialisation code to call pnp_resource_change() for
the MPU port resource, which clears IORESOURCE_AUTO for that resource.
The rest of the PnP layer, seeing IORESOURCE_AUTO clear, then never
touches that resource again, but at that point IORESOURCE_IO (indicating
an I/O port resource) hasn't yet been set, so that when it later gets to
isapnp_set_resources(), that function bails out believing it has reached
the end of the I/O port resources for the device. Since SB is resource
0, MPU401 resource 1 and OPL3 resource 2 for the device, only SB gets
enabled, MPU401 and OPL3 do not.
Making sure IORESOURCE_IO gets set fixes it. Having
pnp_init_resource_table() do this seems proper.
The attached patch works for me:
rene@7ixe4:~$ sbiload -l
Port Client name Port name
64:0 Rawmidi 0 - MPU-401 (UART) 0-0 MPU-401 (UART) 0-0
65:0 Emu8000 WaveTable Emu8000 Port 0
65:1 Emu8000 WaveTable Emu8000 Port 1
65:2 Emu8000 WaveTable Emu8000 Port 2
65:3 Emu8000 WaveTable Emu8000 Port 3
66:0 OPL3 FM synth OPL3 FM Port
Rene.
[-- Attachment #2: linux-2.6.1_pnp_resource.diff --]
[-- Type: text/plain, Size: 1449 bytes --]
--- linux-2.6.1/drivers/pnp/manager.c.orig 2004-01-11 05:32:34.000000000 +0100
+++ linux-2.6.1/drivers/pnp/manager.c 2004-01-11 05:15:36.000000000 +0100
@@ -223,25 +223,25 @@
table->irq_resource[idx].name = NULL;
table->irq_resource[idx].start = -1;
table->irq_resource[idx].end = -1;
- table->irq_resource[idx].flags = IORESOURCE_AUTO | IORESOURCE_UNSET;
+ table->irq_resource[idx].flags = IORESOURCE_AUTO | IORESOURCE_UNSET | IORESOURCE_IRQ;
}
for (idx = 0; idx < PNP_MAX_DMA; idx++) {
table->dma_resource[idx].name = NULL;
table->dma_resource[idx].start = -1;
table->dma_resource[idx].end = -1;
- table->dma_resource[idx].flags = IORESOURCE_AUTO | IORESOURCE_UNSET;
+ table->dma_resource[idx].flags = IORESOURCE_AUTO | IORESOURCE_UNSET | IORESOURCE_DMA;
}
for (idx = 0; idx < PNP_MAX_PORT; idx++) {
table->port_resource[idx].name = NULL;
table->port_resource[idx].start = 0;
table->port_resource[idx].end = 0;
- table->port_resource[idx].flags = IORESOURCE_AUTO | IORESOURCE_UNSET;
+ table->port_resource[idx].flags = IORESOURCE_AUTO | IORESOURCE_UNSET | IORESOURCE_IO;
}
for (idx = 0; idx < PNP_MAX_MEM; idx++) {
table->mem_resource[idx].name = NULL;
table->mem_resource[idx].start = 0;
table->mem_resource[idx].end = 0;
- table->mem_resource[idx].flags = IORESOURCE_AUTO | IORESOURCE_UNSET;
+ table->mem_resource[idx].flags = IORESOURCE_AUTO | IORESOURCE_UNSET | IORESOURCE_MEM;
}
}
^ permalink raw reply
* Re: Cannot boot after new Kernel Build
From: Joseph Fannin @ 2004-01-11 5:34 UTC (permalink / raw)
To: Alex; +Cc: linux-kernel
In-Reply-To: <3FFFB60C.9010309@meerkatsoft.com>
[-- Attachment #1: Type: text/plain, Size: 2216 bytes --]
On Sat, Jan 10, 2004 at 05:21:32PM +0900, Alex wrote:
> Hi,
> I am trying to build a new kernel but what ever version 2.4.24, 2.6.0,
> 2.6.1 i am trying to build I come across the same problem.
>
> when doing a "make install" i get the following error.
>
> /dev/mapper/control: open failed: No such file or directlry
> Is device-mapper driver missing from kernel?
> Comman failed.
>
> I have installed the lates packages
> device mapper 1.00.07
> initscripts 7.28.1
> modutils, lvm2.2.00.08
> mkinitrd-3.5.15.1-2
>
> If I just ignore the message and try to boot the machine with the new
> kernel then I get a Kernel Panic.
>
> VFS: Cannot open root device "LABEL=/" or unknown-block(0,0)
> Please append a correct "root=" boot option
> Kernel panic: VFS: Unapble to mount root fs on unknown-block(0,0).
>
> The boot command in grub is
> root (hd0,0)
> kernel /vmlinuz-2.6.1 ro root=LABEL=/ hdc=ide-scsi
> initrd /initrd-2.6.1.img
>
> It is basically the same (except the version) as I use for 2.4.20-28 so
> I assume the label is correct.
I went through something similar with Fedora Core 1 recently. I
have never used initrds before.
First, be sure that the initrd is in fact getting built; my
experience has been that that device-mapper error is non-fatal, but
there may be other problems. The command that is generating the
error is mkinitrd; if you need to, run the command manually and read
the mkinitrd man page (the --omit-lvm-modules will make the d-m error
go away, assuming you aren't using LVM, but again, it's not a big deal).
You probably don't need to do that though. More likely, the
problem is the lack of *both* initrd and ramdisk support in your
kernel new kernel config. Yes, you need to explicitly select ramdisk
support -- I don't know why initrd can be selected without ramdisk on,
but I've been assuming there is a good reason.
After that, I had a problem with the ramdisk being too big, so
you may want to increase the default ramdisk size to 8192 before
rebuilding your kernel, or otherwise change your kernel command line
to include ramdisk_size=8192.
HTH.
--
Joseph Fannin
jhf@rivenstone.net
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply
* Re: GIVEUP [bootup kernel panic 2.6.x] no root partition detected?
From: Pablo E. Limon Garcia Viesca @ 2004-01-11 5:24 UTC (permalink / raw)
To: gene.heskett; +Cc: linux-kernel
In-Reply-To: <200401110010.09341.gene.heskett@verizon.net>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Thanks for your answer, I use LILO but that root is refering to
presisely the root partition, in my case it its /dev/hda5...
It is well configured in lilo, I can enter with kernel 2.4... but not
with 2.6...
if you want to know, the exact Kernel error at the begining is:
VFS: Cannot open root device "305" or hda5
Please append a correct "root=" boot option
Kernel panic: VFS: Unable to mount root fs on hda5
but I know hda5 is the partition, maybe there has something to be with
the fact that the root partition is logical, in the extended partiton...
I mean is not a primary partition... could this be true???
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (GNU/Linux)
Comment: Using GnuPG with Debian - http://enigmail.mozdev.org
iD8DBQFAAN4SOGkG8a1Mf+oRAqD6AJ0UJi0lArcbh8SPk6b+z8jIdPULPwCgrTOE
IeWde/UI3AjoojonFRtB9AY=
=YXTH
-----END PGP SIGNATURE-----
^ permalink raw reply
* Re: 2.6.1 and irq balancing
From: Ethan Weinstein @ 2004-01-11 5:19 UTC (permalink / raw)
To: Ed Tomlinson; +Cc: linux-kernel, piggin
In-Reply-To: <200401102139.09883.edt@aei.ca>
Ed Tomlinson wrote:
> Hi,
>
> What is the load on the box when this is happening? If its low think
> this is optimal (for cache reasons).
>
Admittedly, the machine's load was not high when I took this sample.
However, creating a great deal of load does not change these statistics
at all. Being that there are patches available for 2.4.x kernels to fix
this, I don't think this at all by design, but what do I know? =)
2.6.0 running on a non-HT SMP machine I have (old Compaq proliant
2xPentium2) does interrupt on all CPU's with "noirqbalance" bootparam.
Regarding the keyboard, I noticed something interesting
2.6.1-rc1 shows the i8042 in /proc/interrupts:
1: 1871 0 0 0 IO-APIC-edge i8042
(keyboard still does not work, though..)
2.6.1 final does not show this at all, and [kseriod] eats a constant 5%
CPU. Something's awry =)
-Ethan
^ permalink raw reply
* Re: [PATCH 3/2] Psmouse log and discard timed out bytes - addition
From: Dmitry Torokhov @ 2004-01-11 4:57 UTC (permalink / raw)
To: Gunter Königsmann, Gunter Königsmann
Cc: linux-kernel, Vojtech Pavlik, Andrew Morton
In-Reply-To: <200401100346.04660.dtor_core@ameritech.net>
Hi Gunter,
I have some additions to the last patch and I'd like you to give it a spin.
Also, could you please define DEBUG symbol in drivers/input/serio/i8042.c
and send me your dmesg with boot data and also when the touchpad loses
sync. I'd like to see it in all gory details :)
Thank you,
Dmitry
===================================================================
ChangeSet@1.1514, 2004-01-10 23:50:51-05:00, dtor_core@ameritech.net
Input: Change the way timeouts/parity errors are handled:
- Only complain about errors from keyboard controller if mouse
is activated
- Reset packet count to 0 as the next received byte will most
likely be the first byte of a new packet
- If expecting an ACK from the mouse set NACK condition
psmouse-base.c | 12 +++++++++---
1 files changed, 9 insertions(+), 3 deletions(-)
===================================================================
diff -Nru a/drivers/input/mouse/psmouse-base.c b/drivers/input/mouse/psmouse-base.c
--- a/drivers/input/mouse/psmouse-base.c Sat Jan 10 23:55:28 2004
+++ b/drivers/input/mouse/psmouse-base.c Sat Jan 10 23:55:28 2004
@@ -122,9 +122,15 @@
goto out;
if (flags & (SERIO_PARITY|SERIO_TIMEOUT)) {
- printk(KERN_WARNING "psmouse.c: bad data from KBC -%s%s\n",
- flags & SERIO_TIMEOUT ? " timeout" : "",
- flags & SERIO_PARITY ? " bad parity" : "");
+ if (psmouse->state == PSMOUSE_ACTIVATED)
+ printk(KERN_WARNING "psmouse.c: bad data from KBC -%s%s\n",
+ flags & SERIO_TIMEOUT ? " timeout" : "",
+ flags & SERIO_PARITY ? " bad parity" : "");
+ if (psmouse->acking) {
+ psmouse->ack = -1;
+ psmouse->acking = 0;
+ }
+ psmouse->pktcnt = 0;
goto out;
}
^ permalink raw reply
* Re: nfs failover
From: Brian Tinsley @ 2004-01-11 4:55 UTC (permalink / raw)
To: Eric Ford; +Cc: nfs
In-Reply-To: <20040111030238.18638.qmail@web12607.mail.yahoo.com>
[-- Attachment #1: Type: text/plain, Size: 1297 bytes --]
There are some specific events that must occur in order to make NFS
server failover happen. You should search the mailing list archives for
the linux-ha software (a.k.a., heartbeat) for further details. NFS
server failover has been detailed there quite extensively over the past
couple of years. And if you do not use linux-ha for clustering
(especially in the context you describe here), I suggest you give it a
try.
On Sat, 2004-01-10 at 21:02, Eric Ford wrote:
> Hello, everybody
>
> I installed nfs on my cluster system, two head nodes(one is primary
> and another is backup) with two clients. They use NFS to store and
> transfer data between server and clients. But whenever failover
> happens, the client can't connect to backup server although
> backup server has the same IP and hostname and same configuration at
> that time.
>
> "NFS server is not responding, still trying"
>
> I use this command: #service nfs restart on backup server, it is
> not useful.
>
> What should I do on backup server so that client can get connection
> with it? By the way I use Pfilter (iptables) on both servers.
>
> Thank you
>
> Eric
>
>
> ______________________________________________________________________
> Do you Yahoo!?
> Yahoo! Hotjobs: Enter the "Signing Bonus" Sweepstakes
[-- Attachment #2: Type: text/html, Size: 1851 bytes --]
^ permalink raw reply
* [parisc-linux] Re: KDE and sarge (dcopserver?)
From: Grant Grundler @ 2004-01-11 4:51 UTC (permalink / raw)
To: Damien; +Cc: parisc-linux, debian-hppa
References: <20040109151436.51FB54E8F8@mailhost.cetic.be>
In-Reply-To: <20040109151436.51FB54E8F8@mailhost.cetic.be>
Damien,
My apologies.
I was hunting through parisc-linux mail archives for something else and
noticed Helge Deller did NOT post his patch to parisc-linux mailing list:
Subject: [PATCH] fix KJS crash on some more strict platforms
Date: Tuesday 16 December 2003 22:08
To: kde-core-devel@kde.org
I've dropped Helge's patch and rebuilt kdelibs packages here:
http://www.parisc-linux.org/~grundler/kdelibs-3.1.4/
The official fix is slightly different but this works.
I've installed kdelibs4, kdelibs-bin, and kdelibs-data from the above
and konqueror is again working on my c3k (32-bit 2.6.0-pa7, sarge).
Might only need to install kdelibs4 and the not others.
This patch also suggested the kernel LDD misaligned trap handler wasn't
working correctly. Lamont Jones fixed with this checkin (2.4.23-pa5 IIRC):
http://lists.parisc-linux.org/pipermail/parisc-linux-cvs/2003-December/033645.html
hth,
grant
^ permalink raw reply
* [parisc-linux] Re: KDE and sarge (dcopserver?)
From: Grant Grundler @ 2004-01-11 4:51 UTC (permalink / raw)
To: Damien; +Cc: parisc-linux, debian-hppa
References: <20040109151436.51FB54E8F8@mailhost.cetic.be>
In-Reply-To: <20040109151436.51FB54E8F8@mailhost.cetic.be>
Damien,
My apologies.
I was hunting through parisc-linux mail archives for something else and
noticed Helge Deller did NOT post his patch to parisc-linux mailing list:
Subject: [PATCH] fix KJS crash on some more strict platforms
Date: Tuesday 16 December 2003 22:08
To: kde-core-devel@kde.org
I've dropped Helge's patch and rebuilt kdelibs packages here:
http://www.parisc-linux.org/~grundler/kdelibs-3.1.4/
The official fix is slightly different but this works.
I've installed kdelibs4, kdelibs-bin, and kdelibs-data from the above
and konqueror is again working on my c3k (32-bit 2.6.0-pa7, sarge).
Might only need to install kdelibs4 and the not others.
This patch also suggested the kernel LDD misaligned trap handler wasn't
working correctly. Lamont Jones fixed with this checkin (2.4.23-pa5 IIRC):
http://lists.parisc-linux.org/pipermail/parisc-linux-cvs/2003-December/033645.html
hth,
grant
^ permalink raw reply
* GIVEUP [bootup kernel panic 2.6.x] no root partition detected?
From: Pablo E. Limon Garcia Viesca @ 2004-01-11 4:43 UTC (permalink / raw)
To: linux-kernel
In-Reply-To: <40005E9C.3030309@intercable.net>
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hello again, after two days of trying to solve my problem I give up now.
I tried lots of diferent configurations, so I do not know if it is a
kernel BUG or what, because Ive seen similar threads in this mail-list
and in other lists, irc chats...
I definitevily giveup of trying use 2.6.x in that computer, if someone
wants to investigate what happened and need config files, logs or
whatever, just tell me...
I am sure it is a kernel-hardware interactuation problem, because there
is no configuration I can do for this to work... so... giveup...
Thanks anyway to all of you that took the time of reading this mail...
Pablo limon
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (GNU/Linux)
Comment: Using GnuPG with Debian - http://enigmail.mozdev.org
iD8DBQFAANRjOGkG8a1Mf+oRAp05AJ4qQPYodLQs5xfTJ3sPcrS+5gCFtgCeM8XC
20HGVyBY8q3kB4jr6zfJJxI=
=M06e
-----END PGP SIGNATURE-----
^ permalink raw reply
* krealloc()
From: john moser @ 2004-01-11 4:42 UTC (permalink / raw)
To: linux-kernel
Why is there no krealloc()? I'm not sure if I should just call mmap() inside the
kernel (any security hazzards or whatnot I should be worried about there?), but
it's going to be a pain to resize arrays. realloc() is usually:
void *realloc(void *block, size_t size);
I'm thinking krealloc would be the same, since we'd have the old GFP_* flags and
the old size:
void *krealloc(void *block, size_t size);
Most realloc() implimentations grow or shrink in place, if possible. If they can't,
or if that wasn't how they were coded, they allocate the new block, memcpy() over,
then free the old block.
I have nowhere near the skill or experience needed to impliment any sort of
krealloc(), so for now I'm going to have to do bad hacks in my code. Can someone
please impliment a krealloc() by 2.6.2? Or at least slate it for SOME time in the
future, if not immediately now.
_____________________________________________________________
Linux.Net -->Open Source to everyone
Powered by Linare Corporation
http://www.linare.com/
^ permalink raw reply
* Re: VT locking patch #2
From: Benjamin Herrenschmidt @ 2004-01-11 4:17 UTC (permalink / raw)
To: Andrew Morton; +Cc: Linux Kernel list, James Simmons
In-Reply-To: <1073792656.750.82.camel@gaston>
On Sun, 2004-01-11 at 14:44, Benjamin Herrenschmidt wrote:
> Hi Andrew !
>
> Here's a new version of the patch, against 2.6.1 bk.
>
> I went more in depth into some of the calls in vt_ioctl and I think
> fixed a few more races along with a possible false-positive. I added
> the check for oops in progress too.
>
> There are matching bits that have to go to fbdev as well, they'll be
> part of the fbdev merge.
>
> James: Do no include this patch with your big fbdev patches please,
> it makes things more confusing. I'll send you separately the patches
> to apply to fbdev to add locking in the right place.
And with the patch attached...
===== drivers/char/selection.c 1.6 vs edited =====
--- 1.6/drivers/char/selection.c Thu Jun 12 12:54:19 2003
+++ edited/drivers/char/selection.c Sun Jan 11 13:58:58 2004
@@ -24,6 +24,7 @@
#include <linux/consolemap.h>
#include <linux/selection.h>
#include <linux/tiocl.h>
+#include <linux/console.h>
#ifndef MIN
#define MIN(a,b) ((a) < (b) ? (a) : (b))
@@ -290,7 +291,10 @@
int pasted = 0, count;
DECLARE_WAITQUEUE(wait, current);
+ acquire_console_sem();
poke_blanked_console();
+ release_console_sem();
+
add_wait_queue(&vt->paste_wait, &wait);
while (sel_buffer && sel_buffer_lth > pasted) {
set_current_state(TASK_INTERRUPTIBLE);
===== drivers/char/tty_io.c 1.127 vs edited =====
--- 1.127/drivers/char/tty_io.c Wed Oct 22 14:42:38 2003
+++ edited/drivers/char/tty_io.c Sun Jan 11 13:57:14 2004
@@ -1484,7 +1484,12 @@
#ifdef CONFIG_VT
if (tty->driver->type == TTY_DRIVER_TYPE_CONSOLE) {
unsigned int currcons = tty->index;
- if (vc_resize(currcons, tmp_ws.ws_col, tmp_ws.ws_row))
+ int rc;
+
+ acquire_console_sem();
+ rc = vc_resize(currcons, tmp_ws.ws_col, tmp_ws.ws_row);
+ release_console_sem();
+ if (rc)
return -ENXIO;
}
#endif
===== drivers/char/vt.c 1.56 vs edited =====
--- 1.56/drivers/char/vt.c Fri Oct 10 08:13:53 2003
+++ edited/drivers/char/vt.c Sun Jan 11 13:58:25 2004
@@ -148,7 +148,6 @@
static int con_open(struct tty_struct *, struct file *);
static void vc_init(unsigned int console, unsigned int rows,
unsigned int cols, int do_clear);
-static void blank_screen(unsigned long dummy);
static void gotoxy(int currcons, int new_x, int new_y);
static void save_cur(int currcons);
static void reset_terminal(int currcons, int do_clear);
@@ -156,8 +155,8 @@
static void set_vesa_blanking(unsigned long arg);
static void set_cursor(int currcons);
static void hide_cursor(int currcons);
-static void unblank_screen_t(unsigned long dummy);
static void console_callback(void *ignored);
+static void blank_screen_t(unsigned long dummy);
static int printable; /* Is console ready for printing? */
@@ -214,6 +213,13 @@
int (*console_blank_hook)(int);
static struct timer_list console_timer;
+static int blank_state;
+static int blank_timer_expired;
+enum {
+ blank_off = 0,
+ blank_normal_wait,
+ blank_vesa_wait,
+};
/*
* Low-Level Functions
@@ -337,6 +343,8 @@
void update_region(int currcons, unsigned long start, int count)
{
+ WARN_CONSOLE_UNLOCKED();
+
if (DO_UPDATE) {
hide_cursor(currcons);
do_update_region(currcons, start, count);
@@ -400,6 +408,8 @@
{
unsigned short *p;
+ WARN_CONSOLE_UNLOCKED();
+
count /= 2;
p = screenpos(currcons, offset, viewed);
if (sw->con_invert_region)
@@ -445,6 +455,8 @@
static unsigned short old;
static unsigned short oldx, oldy;
+ WARN_CONSOLE_UNLOCKED();
+
if (p) {
scr_writew(old, p);
if (DO_UPDATE)
@@ -559,6 +571,8 @@
static void set_origin(int currcons)
{
+ WARN_CONSOLE_UNLOCKED();
+
if (!IS_VISIBLE ||
!sw->con_set_origin ||
!sw->con_set_origin(vc_cons[currcons].d))
@@ -570,6 +584,8 @@
static inline void save_screen(int currcons)
{
+ WARN_CONSOLE_UNLOCKED();
+
if (sw->con_save_screen)
sw->con_save_screen(vc_cons[currcons].d);
}
@@ -583,6 +599,8 @@
int redraw = 1;
int currcons, old_console;
+ WARN_CONSOLE_UNLOCKED();
+
if (!vc_cons_allocated(new_console)) {
/* strange ... */
/* printk("redraw_screen: tty %d not allocated ??\n", new_console+1); */
@@ -660,6 +678,8 @@
int vc_allocate(unsigned int currcons) /* return 0 on success */
{
+ WARN_CONSOLE_UNLOCKED();
+
if (currcons >= MAX_NR_CONSOLES)
return -ENXIO;
if (!vc_cons[currcons].d) {
@@ -726,6 +746,8 @@
unsigned int new_cols, new_rows, new_row_size, new_screen_size;
unsigned short *newscreen;
+ WARN_CONSOLE_UNLOCKED();
+
if (!vc_cons_allocated(currcons))
return -ENXIO;
@@ -812,7 +834,8 @@
void vc_disallocate(unsigned int currcons)
{
- acquire_console_sem();
+ WARN_CONSOLE_UNLOCKED();
+
if (vc_cons_allocated(currcons)) {
sw->con_deinit(vc_cons[currcons].d);
if (kmalloced)
@@ -821,7 +844,6 @@
kfree(vc_cons[currcons].d);
vc_cons[currcons].d = NULL;
}
- release_console_sem();
}
/*
@@ -2076,6 +2098,10 @@
sw->con_scrolldelta(vc_cons[currcons].d, scrollback_delta);
scrollback_delta = 0;
}
+ if (blank_timer_expired) {
+ do_blank_screen(0);
+ blank_timer_expired = 0;
+ }
release_console_sem();
}
@@ -2409,7 +2435,9 @@
currcons = tty->index;
+ acquire_console_sem();
i = vc_allocate(currcons);
+ release_console_sem();
if (i)
return i;
@@ -2475,16 +2503,20 @@
const char *display_desc = NULL;
unsigned int currcons = 0;
+ acquire_console_sem();
+
if (conswitchp)
display_desc = conswitchp->con_startup();
if (!display_desc) {
fg_console = 0;
+ release_console_sem();
return 0;
}
init_timer(&console_timer);
- console_timer.function = blank_screen;
+ console_timer.function = blank_screen_t;
if (blankinterval) {
+ blank_state = blank_normal_wait;
mod_timer(&console_timer, jiffies + blankinterval);
}
@@ -2515,6 +2547,8 @@
printable = 1;
printk("\n");
+ release_console_sem();
+
#ifdef CONFIG_VT_CONSOLE
register_console(&vt_console_driver);
#endif
@@ -2594,8 +2628,13 @@
int i, j = -1;
const char *desc;
+ acquire_console_sem();
+
desc = csw->con_startup();
- if (!desc) return;
+ if (!desc) {
+ release_console_sem();
+ return;
+ }
if (deflt)
conswitchp = csw;
@@ -2635,6 +2674,8 @@
desc, vc_cons[j].d->vc_cols, vc_cons[j].d->vc_rows);
else
printk("to %s\n", desc);
+
+ release_console_sem();
}
void give_up_console(const struct consw *csw)
@@ -2683,23 +2724,24 @@
}
}
-/*
- * This is a timer handler
- */
-static void vesa_powerdown_screen(unsigned long dummy)
-{
- console_timer.function = unblank_screen_t;
-
- vesa_powerdown();
-}
-
-static void timer_do_blank_screen(int entering_gfx, int from_timer_handler)
+void do_blank_screen(int entering_gfx)
{
int currcons = fg_console;
int i;
- if (console_blanked)
+ WARN_CONSOLE_UNLOCKED();
+
+ if (console_blanked) {
+ if (blank_state == blank_vesa_wait) {
+ blank_state = blank_off;
+ vesa_powerdown();
+
+ }
return;
+ }
+ if (blank_state != blank_normal_wait)
+ return;
+ blank_state = blank_off;
/* entering graphics mode? */
if (entering_gfx) {
@@ -2718,9 +2760,8 @@
}
hide_cursor(currcons);
- if (!from_timer_handler)
- del_timer_sync(&console_timer);
- console_timer.function = unblank_screen_t;
+ del_timer_sync(&console_timer);
+ blank_timer_expired = 0;
save_screen(currcons);
/* In case we need to reset origin, blanking hook returns 1 */
@@ -2733,7 +2774,7 @@
return;
if (vesa_off_interval) {
- console_timer.function = vesa_powerdown_screen;
+ blank_state = blank_vesa_wait,
mod_timer(&console_timer, jiffies + vesa_off_interval);
}
@@ -2741,18 +2782,6 @@
sw->con_blank(vc_cons[currcons].d, vesa_blank_mode + 1);
}
-void do_blank_screen(int entering_gfx)
-{
- timer_do_blank_screen(entering_gfx, 0);
-}
-
-/*
- * This is a timer handler
- */
-static void unblank_screen_t(unsigned long dummy)
-{
- unblank_screen();
-}
/*
* Called by timer as well as from vt_console_driver
@@ -2761,6 +2790,8 @@
{
int currcons;
+ WARN_CONSOLE_UNLOCKED();
+
ignore_poke = 0;
if (!console_blanked)
return;
@@ -2773,9 +2804,9 @@
if (vcmode != KD_TEXT)
return; /* but leave console_blanked != 0 */
- console_timer.function = blank_screen;
if (blankinterval) {
mod_timer(&console_timer, jiffies + blankinterval);
+ blank_state = blank_normal_wait;
}
console_blanked = 0;
@@ -2789,23 +2820,33 @@
}
/*
- * This is both a user-level callable and a timer handler
+ * We defer the timer blanking to work queue so it can take the console semaphore
+ * (console operations can still happen at irq time, but only from printk which
+ * has the console semaphore. Not perfect yet, but better than no locking
*/
-static void blank_screen(unsigned long dummy)
+static void blank_screen_t(unsigned long dummy)
{
- timer_do_blank_screen(0, 1);
+ blank_timer_expired = 1;
+ schedule_work(&console_work);
}
void poke_blanked_console(void)
{
+ WARN_CONSOLE_UNLOCKED();
+
+ /* This isn't perfectly race free, but a race here would be mostly harmless,
+ * at worse, we'll do a spurrious blank and it's unlikely
+ */
del_timer(&console_timer);
+ blank_timer_expired = 0;
+
if (ignore_poke || !vt_cons[fg_console] || vt_cons[fg_console]->vc_mode == KD_GRAPHICS)
return;
- if (console_blanked) {
- console_timer.function = unblank_screen_t;
- mod_timer(&console_timer, jiffies); /* Now */
- } else if (blankinterval) {
+ if (console_blanked)
+ unblank_screen();
+ else if (blankinterval) {
mod_timer(&console_timer, jiffies + blankinterval);
+ blank_state = blank_normal_wait;
}
}
@@ -2815,6 +2856,8 @@
void set_palette(int currcons)
{
+ WARN_CONSOLE_UNLOCKED();
+
if (vcmode != KD_GRAPHICS)
sw->con_set_palette(vc_cons[currcons].d, color_table);
}
@@ -2823,6 +2866,8 @@
{
int i, j, k;
+ WARN_CONSOLE_UNLOCKED();
+
for (i = 0; i < 16; i++)
if (set) {
get_user(default_red[i], arg++);
@@ -2854,12 +2899,24 @@
int con_set_cmap(unsigned char *arg)
{
- return set_get_cmap (arg,1);
+ int rc;
+
+ acquire_console_sem();
+ rc = set_get_cmap (arg,1);
+ release_console_sem();
+
+ return rc;
}
int con_get_cmap(unsigned char *arg)
{
- return set_get_cmap (arg,0);
+ int rc;
+
+ acquire_console_sem();
+ rc = set_get_cmap (arg,0);
+ release_console_sem();
+
+ return rc;
}
void reset_palette(int currcons)
@@ -2933,8 +2990,12 @@
set = 1;
} else if (op->op == KD_FONT_OP_GET)
set = 0;
- else
- return sw->con_font_op(vc_cons[currcons].d, op);
+ else {
+ acquire_console_sem();
+ rc = sw->con_font_op(vc_cons[currcons].d, op);
+ release_console_sem();
+ return rc;
+ }
if (op->data) {
temp = kmalloc(size, GFP_KERNEL);
if (!temp)
@@ -3029,10 +3090,14 @@
switch (rqst)
{
case PM_RESUME:
+ acquire_console_sem();
unblank_screen();
+ release_console_sem();
break;
case PM_SUSPEND:
+ acquire_console_sem();
do_blank_screen(0);
+ release_console_sem();
break;
}
return 0;
===== drivers/char/vt_ioctl.c 1.32 vs edited =====
--- 1.32/drivers/char/vt_ioctl.c Tue Dec 30 08:38:05 2003
+++ edited/drivers/char/vt_ioctl.c Sun Jan 11 13:58:48 2004
@@ -470,6 +470,9 @@
* currently, setting the mode from KD_TEXT to KD_GRAPHICS
* doesn't do a whole lot. i'm not sure if it should do any
* restoration of modes or what...
+ *
+ * XXX It should at least call into the driver, fbdev's definitely
+ * need to restore their engine state. --BenH
*/
if (!perm)
return -EPERM;
@@ -492,10 +495,12 @@
/*
* explicitly blank/unblank the screen if switching modes
*/
+ acquire_console_sem();
if (arg == KD_TEXT)
unblank_screen();
else
do_blank_screen(1);
+ release_console_sem();
return 0;
case KDGETMODE:
@@ -665,18 +670,29 @@
return -EFAULT;
if (tmp.mode != VT_AUTO && tmp.mode != VT_PROCESS)
return -EINVAL;
+ acquire_console_sem();
vt_cons[console]->vt_mode = tmp;
/* the frsig is ignored, so we set it to 0 */
vt_cons[console]->vt_mode.frsig = 0;
vt_cons[console]->vt_pid = current->pid;
/* no switch is required -- saw@shade.msu.ru */
vt_cons[console]->vt_newvt = -1;
+ release_console_sem();
return 0;
}
case VT_GETMODE:
- return copy_to_user((void*)arg, &(vt_cons[console]->vt_mode),
- sizeof(struct vt_mode)) ? -EFAULT : 0;
+ {
+ struct vt_mode tmp;
+ int rc;
+
+ acquire_console_sem();
+ memcpy(&tmp, &vt_cons[console]->vt_mode, sizeof(struct vt_mode));
+ release_console_sem();
+
+ rc = copy_to_user((void*)arg, &tmp, sizeof(struct vt_mode));
+ return rc ? -EFAULT : 0;
+ }
/*
* Returns global vt state. Note that VT 0 is always open, since
@@ -718,7 +734,9 @@
if (arg == 0 || arg > MAX_NR_CONSOLES)
return -ENXIO;
arg--;
+ acquire_console_sem();
i = vc_allocate(arg);
+ release_console_sem();
if (i)
return i;
set_console(arg);
@@ -768,17 +786,20 @@
* The current vt has been released, so
* complete the switch.
*/
- int newvt = vt_cons[console]->vt_newvt;
+ int newvt;
+ acquire_console_sem();
+ newvt = vt_cons[console]->vt_newvt;
vt_cons[console]->vt_newvt = -1;
i = vc_allocate(newvt);
- if (i)
+ if (i) {
+ release_console_sem();
return i;
+ }
/*
* When we actually do the console switch,
* make sure we are atomic with respect to
* other console switches..
*/
- acquire_console_sem();
complete_change_console(newvt);
release_console_sem();
}
@@ -806,16 +827,21 @@
return -ENXIO;
if (arg == 0) {
/* disallocate all unused consoles, but leave 0 */
- for (i=1; i<MAX_NR_CONSOLES; i++)
- if (! VT_BUSY(i))
- vc_disallocate(i);
+ acquire_console_sem();
+ for (i=1; i<MAX_NR_CONSOLES; i++)
+ if (! VT_BUSY(i))
+ vc_disallocate(i);
+ release_console_sem();
} else {
- /* disallocate a single console, if possible */
- arg--;
- if (VT_BUSY(arg))
- return -EBUSY;
- if (arg) /* leave 0 */
- vc_disallocate(arg);
+ /* disallocate a single console, if possible */
+ arg--;
+ if (VT_BUSY(arg))
+ return -EBUSY;
+ if (arg) { /* leave 0 */
+ acquire_console_sem();
+ vc_disallocate(arg);
+ release_console_sem();
+ }
}
return 0;
@@ -828,8 +854,11 @@
if (get_user(ll, &vtsizes->v_rows) ||
get_user(cc, &vtsizes->v_cols))
return -EFAULT;
- for (i = 0; i < MAX_NR_CONSOLES; i++)
+ for (i = 0; i < MAX_NR_CONSOLES; i++) {
+ acquire_console_sem();
vc_resize(i, cc, ll);
+ release_console_sem();
+ }
return 0;
}
@@ -870,11 +899,13 @@
for (i = 0; i < MAX_NR_CONSOLES; i++) {
if (!vc_cons[i].d)
continue;
+ acquire_console_sem();
if (vlin)
vc_cons[i].d->vc_scan_lines = vlin;
if (clin)
vc_cons[i].d->vc_font.height = clin;
vc_resize(i, cc, ll);
+ release_console_sem();
}
return 0;
}
===== include/linux/console.h 1.10 vs edited =====
--- 1.10/include/linux/console.h Tue Dec 30 12:01:55 2003
+++ edited/include/linux/console.h Sun Jan 11 13:59:31 2004
@@ -102,6 +102,14 @@
extern void release_console_sem(void);
extern void console_conditional_schedule(void);
extern void console_unblank(void);
+extern int is_console_locked(void);
+
+/* Some debug stub to catch some of the obvious races in the VT code */
+#if 1
+#define WARN_CONSOLE_UNLOCKED() WARN_ON(!is_console_locked() && !oops_in_progress)
+#else
+#define WARN_CONSOLE_UNLOCKED()
+#endif
/* VESA Blanking Levels */
#define VESA_NO_BLANKING 0
===== kernel/printk.c 1.30 vs edited =====
--- 1.30/kernel/printk.c Wed Dec 31 08:49:22 2003
+++ edited/kernel/printk.c Sun Jan 11 14:00:01 2004
@@ -62,6 +62,15 @@
*/
static DECLARE_MUTEX(console_sem);
struct console *console_drivers;
+/*
+ * This is used for debugging the mess that is the VT code by
+ * keeping track if we have the console semaphore held. It's
+ * definitely not the perfect debug tool (we don't know if _WE_
+ * hold it are racing, but it helps tracking those weird code
+ * path in the console code where we end up in places I want
+ * locked without the console sempahore held
+ */
+static int console_locked;
/*
* logbuf_lock protects log_buf, log_start, log_end, con_start and logged_chars
@@ -524,6 +533,7 @@
goto out;
}
if (!down_trylock(&console_sem)) {
+ console_locked = 1;
/*
* We own the drivers. We can drop the spinlock and let
* release_console_sem() print the text
@@ -557,10 +567,17 @@
if (in_interrupt())
BUG();
down(&console_sem);
+ console_locked = 1;
console_may_schedule = 1;
}
EXPORT_SYMBOL(acquire_console_sem);
+int is_console_locked(void)
+{
+ return console_locked;
+}
+EXPORT_SYMBOL(is_console_locked);
+
/**
* release_console_sem - unlock the console system
*
@@ -592,12 +609,14 @@
spin_unlock_irqrestore(&logbuf_lock, flags);
call_console_drivers(_con_start, _log_end);
}
+ console_locked = 0;
console_may_schedule = 0;
up(&console_sem);
spin_unlock_irqrestore(&logbuf_lock, flags);
if (wake_klogd && !oops_in_progress && waitqueue_active(&log_wait))
wake_up_interruptible(&log_wait);
}
+EXPORT_SYMBOL(release_console_sem);
/** console_conditional_schedule - yield the CPU if required
*
@@ -633,6 +652,7 @@
*/
if (down_trylock(&console_sem) != 0)
return;
+ console_locked = 1;
console_may_schedule = 0;
for (c = console_drivers; c != NULL; c = c->next)
if ((c->flags & CON_ENABLED) && c->unblank)
===== kernel/power/console.c 1.5 vs edited =====
--- 1.5/kernel/power/console.c Sat Aug 23 06:15:05 2003
+++ edited/kernel/power/console.c Sun Jan 11 14:00:10 2004
@@ -6,6 +6,7 @@
#include <linux/vt_kern.h>
#include <linux/kbd_kern.h>
+#include <linux/console.h>
#include "power.h"
static int new_loglevel = 10;
@@ -18,14 +19,20 @@
console_loglevel = new_loglevel;
#ifdef SUSPEND_CONSOLE
+ acquire_console_sem();
+
orig_fgconsole = fg_console;
- if (vc_allocate(SUSPEND_CONSOLE))
+ if (vc_allocate(SUSPEND_CONSOLE)) {
/* we can't have a free VC for now. Too bad,
* we don't want to mess the screen for now. */
+ release_console_sem();
return 1;
+ }
set_console(SUSPEND_CONSOLE);
+ release_console_sem();
+
if (vt_waitactive(SUSPEND_CONSOLE)) {
pr_debug("Suspend: Can't switch VCs.");
return 1;
@@ -40,12 +47,9 @@
{
console_loglevel = orig_loglevel;
#ifdef SUSPEND_CONSOLE
+ acquire_console_sem();
set_console(orig_fgconsole);
-
- /* FIXME:
- * This following part is left over from swsusp. Is it really needed?
- */
- update_screen(fg_console);
+ release_console_sem();
#endif
return;
}
^ permalink raw reply
* Re: Laptops & CPU frequency
From: Valdis.Kletnieks @ 2004-01-11 4:12 UTC (permalink / raw)
To: Robert Love; +Cc: jlnance, linux-kernel
In-Reply-To: <1073791061.1663.77.camel@localhost>
[-- Attachment #1: Type: text/plain, Size: 906 bytes --]
On Sat, 10 Jan 2004 22:17:41 EST, Robert Love said:
> The MHz value in /proc/cpuinfo should be updated as the CPU speed
> changes - that is, it is not calculated just at boot, but it is updated
> as the speed actually changes.
Yes, it should. However, I remember chasing down a similar bug in the
SpeedStep code back around 2.5.73-75 timeframe (which managed to manifest as
the audio chipset latching onto the wrong clocking, no less - it wasn't till
later that I noticed that the frequency and bogomips numbers in /proc/cpuinfo
were bogus too). I admit never checking if either the original code or the
patch were backported to 2.4.
http://marc.theaimsgroup.com/?l=linux-kernel&m=105859009128595&w=2
http://marc.theaimsgroup.com/?l=linux-kernel&m=105691055706753&w=2
(the final actual fix ended up being slightly different, but that was the bug).
Feel free to hit "delete" if this is irrelevant...
[-- Attachment #2: Type: application/pgp-signature, Size: 226 bytes --]
^ permalink raw reply
* Re: 2.4.24 SMP lockups
From: Rik van Riel @ 2004-01-11 4:12 UTC (permalink / raw)
To: Andrew Morton; +Cc: Marcelo Tosatti, sim, linux-kernel
In-Reply-To: <20040110144049.5e195ebd.akpm@osdl.org>
On Sat, 10 Jan 2004, Andrew Morton wrote:
> We don't have an each-CPU backtrace facility - it could be handy.
> There's one in the low-latency patch for some reason.
There's one in the RHEL3 tree, too.
Marcelo, do you want me to rediff it and send it to you ?
--
"Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are,
by definition, not smart enough to debug it." - Brian W. Kernighan
^ permalink raw reply
* Re: [parisc-linux] [Testers wanted] New glibc with profiling fixed.
From: Grant Grundler @ 2004-01-11 4:09 UTC (permalink / raw)
To: Carlos O'Donell; +Cc: parisc-linux, debian-hppa
In-Reply-To: <20040105194839.GB9269@systemhalted>
On Mon, Jan 05, 2004 at 02:48:39PM -0500, Carlos O'Donell wrote:
> http://www.parisc-linux.org/~carlos/glibc-2.3.2-debs-2004-01-05/
I finally installed these (libc6 and libc6-dev) and live is still good.
thanks carlos!
hth,
grant
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
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.