Re: too much untested code in new kernels

bofh@snoopy.virtual.net.au
Sat, 04 Jan 97 13:52:41 +1000


>> Finally I would like to address the argument 'go run 2.0.XX if you want
>> a stable kernel'. I don't need a stable kernel. But I do want a kernel
>> where ALL code gets tested at least ONCE by the people who write it
>> BEFORE they hand it to Linus.
>>
>> Is that asking too much?

>Maybe yes, maybe no.

>Two of your examples I have opinions on.

> 2) How can you protect against munged patches, as affected the
> watchdog driver? When they are noticed, they'll get fixed,
> but they must be noticed.

> I discovered for myself while trying to build all of the
> drivers to determine how they were affected by the module
> patches that it is virtually impossible to build a kernel
> with _everything_, because some drivers require parameter
> knowledge to even build that I don't have. Or two drivers
> that are not modules are mutually exclusive.
>
> Therefore we must rely on the users of those drivers to speak up
> and say the drivers are broken.

Those are fair points. However I believe that it would be a good idea to
distribute Linux with files named /usr/src/linux/.config.maximum and
/usr/src/linux/.config.allmods (or something distinct from .config). These
files would be configured to compile everything possible and everything
possible as a module. Then it would be possible for someone who about to
submit a patch to test compilation with both of those config files to make sure
that everything at least compiles. Once the config files had been devised it
would be easy to automatically perform both compilations from a script file.
It should take less than an hour on a fast computer.
As you say there are some mutually exclusive options, this means that we
have to live with the chance that some of these options will be broken by a
patch and yet it will pass the test. However if this means that 1% of the code
modules are liable to be broken in a patch then it'll be much better than the
current situation where 90% of the code is at risk!
For this to work people who submit patches for drivers would have to submit
appropriate patches for .config.maximum and .config.allmods.

Here is a trivial script to test compilation and produce error log files that
can be used to determine how well things worked. Obviously we could add a
makefile option to do this and abort on errors etc.

cp .config.maximum .config
make dep
(make zImage > max.out) 2>&1 | tee max.err
(make modules >> max.out) 2>&1 | tee -a max.err
cp .config.allmods .config
make dep
(make zImage > mod.out) 2>&1 | tee mod.err
(make modules >> mod.out) 2>&1 | tee -a mod.err

Here is the .config file I used in my test of compiling everything. NB I
turned off module versions checking so it could start the compile. Also the
only problem I found in generating the file was in configuring sound drivers.
The "make menuconfig" program gave some strange errors so I just de-selected
some sound drivers. The following may not compile even if the watch-dog code
(and other assorted bugs) are fixed due to conflicts between drivers. But it's
something that can be used as a base to work from.

A config file for all modules follows this.

#
# Automatically generated by make menuconfig: don't edit
#

#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y

#
# Loadable module support
#
CONFIG_MODULES=y
# CONFIG_MODVERSIONS is not set
CONFIG_KERNELD=y

#
# General setup
#
CONFIG_MATH_EMULATION=y
CONFIG_NET=y
# CONFIG_MAX_16M is not set
CONFIG_PCI=y
CONFIG_PCI_OPTIMIZE=y
CONFIG_MCA=y
CONFIG_SYSVIPC=y
CONFIG_BINFMT_AOUT=y
CONFIG_BINFMT_ELF=y
CONFIG_BINFMT_JAVA=y
CONFIG_M386=y
CONFIG_VIDEO_SELECT=y

#
# Floppy, IDE, and other block devices
#
CONFIG_BLK_DEV_FD=y
CONFIG_BLK_DEV_IDE=y
# CONFIG_BLK_DEV_HD_IDE is not set
CONFIG_BLK_DEV_IDEDISK=y
CONFIG_BLK_DEV_IDECD=y
CONFIG_BLK_DEV_IDETAPE=y
CONFIG_BLK_DEV_IDEFLOPPY=y
CONFIG_BLK_DEV_IDESCSI=y
CONFIG_BLK_DEV_CMD640=y
CONFIG_BLK_DEV_CMD640_ENHANCED=y
CONFIG_BLK_DEV_RZ1000=y
CONFIG_BLK_DEV_TRITON=y
CONFIG_IDE_CHIPSETS=y
CONFIG_BLK_DEV_ALI14XX=y
CONFIG_BLK_DEV_DTC2278=y
CONFIG_BLK_DEV_HT6560B=y
CONFIG_BLK_DEV_PROMISE=y
CONFIG_BLK_DEV_OPTI621=y
CONFIG_BLK_DEV_QD6580=y
CONFIG_BLK_DEV_UMC8672=y
CONFIG_BLK_DEV_PS2=y
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_MD=y
CONFIG_MD_LINEAR=y
CONFIG_MD_STRIPED=y
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_INITRD=y
CONFIG_BLK_DEV_XD=y
CONFIG_BLK_DEV_EZ=y
# CONFIG_BLK_DEV_HD is not set

#
# Networking options
#
CONFIG_NETLINK=y
CONFIG_RTNETLINK=y
CONFIG_FIREWALL=y
CONFIG_NET_ALIAS=y
CONFIG_INET=y
CONFIG_IP_FORWARD=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_FIREWALL=y
CONFIG_IP_FIREWALL_NETLINK=y
CONFIG_IP_FIREWALL_VERBOSE=y
CONFIG_IP_MASQUERADE=y
CONFIG_IP_TRANSPARENT_PROXY=y
CONFIG_IP_ALWAYS_DEFRAG=y
CONFIG_IP_ACCT=y
CONFIG_IP_ROUTER=y
CONFIG_NET_IPIP=y
CONFIG_IP_MROUTE=y
CONFIG_IP_ALIAS=y
CONFIG_ARPD=y
CONFIG_INET_PCTCP=y
CONFIG_INET_RARP=y
CONFIG_PATH_MTU_DISCOVERY=y
CONFIG_IP_NOSR=y
CONFIG_SKB_LARGE=y
CONFIG_IPV6=y
CONFIG_IPX=y
CONFIG_IPX_INTERN=y
CONFIG_IPX_PPROP_ROUTING=y
CONFIG_ATALK=y
CONFIG_AX25=y
CONFIG_NETROM=y
CONFIG_ROSE=y
CONFIG_X25=y
CONFIG_LAPB=y
CONFIG_BRIDGE=y
CONFIG_LLC=y

#
# SCSI support
#
CONFIG_SCSI=y
CONFIG_BLK_DEV_SD=y
CONFIG_CHR_DEV_ST=y
CONFIG_BLK_DEV_SR=y
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=y
CONFIG_SCSI_MULTI_LUN=y
CONFIG_SCSI_CONSTANTS=y

#
# SCSI low-level drivers
#
CONFIG_SCSI_7000FASST=y
CONFIG_SCSI_AHA152X=y
CONFIG_SCSI_AHA1542=y
CONFIG_SCSI_AHA1740=y
CONFIG_SCSI_AIC7XXX=y
CONFIG_SCSI_ADVANSYS=y
CONFIG_SCSI_IN2000=y
CONFIG_SCSI_AM53C974=y
CONFIG_SCSI_BUSLOGIC=y
CONFIG_SCSI_DTC3280=y
CONFIG_SCSI_EATA_DMA=y
CONFIG_SCSI_EATA_PIO=y
CONFIG_SCSI_EATA=y
CONFIG_SCSI_EATA_TAGGED_QUEUE=y
CONFIG_SCSI_FUTURE_DOMAIN=y
CONFIG_SCSI_GENERIC_NCR5380=y
CONFIG_SCSI_GENERIC_NCR53C400=y
CONFIG_SCSI_G_NCR5380_PORT=y
CONFIG_SCSI_NCR53C406A=y
CONFIG_SCSI_NCR53C7xx=y
CONFIG_SCSI_NCR53C7xx_sync=y
CONFIG_SCSI_NCR53C7xx_FAST=y
CONFIG_SCSI_NCR53C7xx_DISCONNECT=y
CONFIG_SCSI_IBMMCA=y
CONFIG_SCSI_PPA=y
CONFIG_SCSI_PAS16=y
CONFIG_SCSI_QLOGIC_FAS=y
CONFIG_SCSI_QLOGIC_ISP=y
CONFIG_SCSI_SEAGATE=y
CONFIG_SCSI_T128=y
CONFIG_SCSI_U14_34F=y
CONFIG_SCSI_ULTRASTOR=y

#
# Network device support
#
CONFIG_NETDEVICES=y
CONFIG_ARCNET=y
CONFIG_ARCNET_ETH=y
CONFIG_ARCNET_1051=y
CONFIG_DUMMY=y
CONFIG_EQUALIZER=y
CONFIG_NET_ETHERNET=y
CONFIG_NET_VENDOR_3COM=y
CONFIG_EL1=y
CONFIG_EL2=y
CONFIG_ELPLUS=y
CONFIG_EL16=y
CONFIG_ELMC=y
CONFIG_EL3=y
CONFIG_VORTEX=y
CONFIG_LANCE=y
CONFIG_LANCE32=y
CONFIG_NET_VENDOR_SMC=y
CONFIG_WD80x3=y
CONFIG_ULTRA=y
CONFIG_SMC9194=y
CONFIG_NET_ISA=y
CONFIG_AT1700=y
CONFIG_E2100=y
CONFIG_DEPCA=y
CONFIG_EWRK3=y
CONFIG_EEXPRESS=y
CONFIG_EEXPRESS_PRO=y
CONFIG_FMV18X=y
CONFIG_HPLAN_PLUS=y
CONFIG_HPLAN=y
CONFIG_HP100=y
CONFIG_ETH16I=y
CONFIG_NE2000=y
CONFIG_NI52=y
CONFIG_NI65=y
CONFIG_SEEQ8005=y
CONFIG_SK_G16=y
CONFIG_NET_EISA=y
CONFIG_AC3200=y
CONFIG_APRICOT=y
CONFIG_DE4X5=y
CONFIG_DEC_ELCP=y
CONFIG_DGRS=y
CONFIG_ES3210=y
CONFIG_ZNET=y
CONFIG_NET_POCKET=y
CONFIG_ATP=y
CONFIG_DE600=y
CONFIG_DE620=y
CONFIG_FDDI=y
CONFIG_DEFXX=y
CONFIG_DLCI=y
CONFIG_DLCI_COUNT=24
CONFIG_DLCI_MAX=8
CONFIG_SDLA=y
CONFIG_PLIP=y
CONFIG_PPP=y
CONFIG_NET_RADIO=y
CONFIG_MKISS=y
CONFIG_BPQETHER=y
CONFIG_PT=y
CONFIG_PI=y
CONFIG_SCC=y
CONFIG_BAYCOM=y
CONFIG_SOUNDMODEM=y
CONFIG_SOUNDMODEM_SBC=y
CONFIG_SOUNDMODEM_WSS=y
CONFIG_SOUNDMODEM_AFSK1200=y
CONFIG_SOUNDMODEM_FSK9600=y
CONFIG_STRIP=y
CONFIG_WAVELAN=y
CONFIG_WIC=y
CONFIG_LAPBETHER=y
CONFIG_SLIP=y
CONFIG_SLIP_COMPRESSED=y
CONFIG_SLIP_SMART=y
CONFIG_SLIP_MODE_SLIP6=y
CONFIG_TR=y
CONFIG_IBMTR=y
CONFIG_SHAPER=y

#
# ISDN subsystem
#
CONFIG_ISDN=y
CONFIG_ISDN_PPP=y
CONFIG_ISDN_PPP_VJ=y
CONFIG_ISDN_MPP=y
CONFIG_ISDN_AUDIO=y
CONFIG_ISDN_DRV_ICN=y
CONFIG_ISDN_DRV_PCBIT=y
CONFIG_ISDN_DRV_TELES=y

#
# CD-ROM drivers (not for SCSI or IDE/ATAPI drives)
#
CONFIG_CD_NO_IDESCSI=y
CONFIG_AZTCD=y
CONFIG_GSCD=y
CONFIG_SBPCD=y
CONFIG_SBPCD2=y
CONFIG_SBPCD3=y
CONFIG_SBPCD4=y
CONFIG_BPCD=y
CONFIG_MCD=y
CONFIG_MCDX=y
CONFIG_OPTCD=y
CONFIG_CM206=y
CONFIG_SJCD=y
CONFIG_CDI_INIT=y
CONFIG_ISP16_CDI=y
CONFIG_CDU31A=y
CONFIG_CDU535=y

#
# Filesystems
#
CONFIG_QUOTA=y
CONFIG_MINIX_FS=y
CONFIG_EXT_FS=y
CONFIG_EXT2_FS=y
CONFIG_XIA_FS=y
CONFIG_FAT_FS=y
CONFIG_MSDOS_FS=y
CONFIG_VFAT_FS=y
CONFIG_UMSDOS_FS=y
CONFIG_PROC_FS=y
CONFIG_NFS_FS=y
CONFIG_ROOT_NFS=y
CONFIG_RNFS_BOOTP=y
CONFIG_RNFS_RARP=y
CONFIG_SMB_FS=y
CONFIG_SMB_WIN95=y
CONFIG_NCP_FS=y
CONFIG_ISO9660_FS=y
CONFIG_HPFS_FS=y
CONFIG_SYSV_FS=y
CONFIG_AFFS_FS=y
CONFIG_AMIGA_PARTITION=y
CONFIG_UFS_FS=y
CONFIG_BSD_DISKLABEL=y
CONFIG_SMD_DISKLABEL=y

#
# Character devices
#
CONFIG_SERIAL=y
CONFIG_DIGI=y
CONFIG_CYCLADES=y
CONFIG_STALDRV=y
CONFIG_STALLION=y
CONFIG_ISTALLION=y
CONFIG_RISCOM8=y
CONFIG_ESPSERIAL=y
CONFIG_ESPSERIAL_DMA_CHANNEL=1
CONFIG_ESPSERIAL_TRIGGER_LEVEL=768
CONFIG_PRINTER=y
CONFIG_MOUSE=y
CONFIG_ATIXL_BUSMOUSE=y
CONFIG_BUSMOUSE=y
CONFIG_MS_BUSMOUSE=y
CONFIG_PSMOUSE=y
CONFIG_82C710_MOUSE=y
CONFIG_UMISC=y
CONFIG_QIC02_TAPE=y
CONFIG_QIC02_DYNCONF=y
CONFIG_FTAPE=y
CONFIG_APM=y
CONFIG_APM_IGNORE_USER_SUSPEND=y
CONFIG_APM_DO_ENABLE=y
CONFIG_APM_CPU_IDLE=y
CONFIG_APM_DISPLAY_BLANK=y
CONFIG_APM_POWER_OFF=y
CONFIG_WATCHDOG=y
CONFIG_WATCHDOG_NOWAYOUT=y
CONFIG_WDT=y
CONFIG_WDT_501=y
CONFIG_WDT_501_FAN=y
CONFIG_PCWATCHDOG=y
CONFIG_PCWD_REV_A=y
CONFIG_PCWD_REV_C=y
CONFIG_PCWD_SHOW_PREVSTAT=y
CONFIG_RTC=y

#
# Sound
#
CONFIG_SOUND=y
CONFIG_PAS=y
CONFIG_SB=y
CONFIG_ADLIB=y
CONFIG_GUS=y
CONFIG_MPU401=y
CONFIG_UART6850=y
# CONFIG_PSS is not set
CONFIG_GUS16=y
CONFIG_GUSMAX=y
CONFIG_MSS=y
CONFIG_SSCAPE=y
# CONFIG_TRIX is not set
CONFIG_MAD16=y
CONFIG_CS4232=y
# CONFIG_MAUI is not set
CONFIG_YM3812=y
SBC_BASE=220
SBC_IRQ=7
SBC_DMA=1
SB_DMA2=5
SB_MPU_BASE=330
SB_MPU_IRQ=-1
PAS_IRQ=10
PAS_DMA=3
GUS_BASE=220
GUS_IRQ=15
GUS_DMA=6
GUS_DMA2=-1
GUS16_BASE=530
GUS16_IRQ=7
GUS16_DMA=3
MPU_BASE=330
MPU_IRQ=9
U6850_BASE=0
U6850_IRQ=-1
MSS_BASE=530
MSS_IRQ=11
MSS_DMA=3
SSCAPE_BASE=330
SSCAPE_IRQ=9
SSCAPE_DMA=3
SSCAPE_MSS_BASE=534
SSCAPE_MSS_IRQ=11
CS4232_BASE=530
CS4232_IRQ=11
CS4232_DMA=0
CS4232_DMA2=3
CS4232_MPU_BASE=330
CS4232_MPU_IRQ=9
MAD16_BASE=530
MAD16_IRQ=11
MAD16_DMA=3
MAD16_DMA2=0
MAD16_MPU_BASE=330
MAD16_MPU_IRQ=9
CONFIG_LOWLEVEL_SOUND=y
CONFIG_ACI_MIXER=y
CONFIG_AWE32_SYNTH=y

#
# Kernel hacking
#
CONFIG_PROFILE=y
CONFIG_PROFILE_SHIFT=2

Here is the modules version:

#
# Automatically generated by make menuconfig: don't edit
#

#
# Code maturity level options
#
CONFIG_EXPERIMENTAL=y

#
# Loadable module support
#
CONFIG_MODULES=y
# CONFIG_MODVERSIONS is not set
CONFIG_KERNELD=y

#
# General setup
#
CONFIG_MATH_EMULATION=y
CONFIG_NET=y
# CONFIG_MAX_16M is not set
CONFIG_PCI=y
CONFIG_PCI_OPTIMIZE=y
CONFIG_MCA=y
CONFIG_SYSVIPC=y
CONFIG_BINFMT_AOUT=m
CONFIG_BINFMT_ELF=m
CONFIG_BINFMT_JAVA=m
CONFIG_M386=y
CONFIG_VIDEO_SELECT=y

#
# Floppy, IDE, and other block devices
#
CONFIG_BLK_DEV_FD=m
CONFIG_BLK_DEV_IDE=m
# CONFIG_BLK_DEV_HD_IDE is not set
CONFIG_BLK_DEV_IDEDISK=m
CONFIG_BLK_DEV_IDECD=m
CONFIG_BLK_DEV_IDETAPE=m
CONFIG_BLK_DEV_IDEFLOPPY=m
CONFIG_BLK_DEV_IDESCSI=m
CONFIG_BLK_DEV_PS2=y
CONFIG_BLK_DEV_LOOP=m
CONFIG_BLK_DEV_MD=y
CONFIG_MD_LINEAR=m
CONFIG_MD_STRIPED=m
CONFIG_BLK_DEV_RAM=m
CONFIG_BLK_DEV_XD=m
CONFIG_BLK_DEV_EZ=m
# CONFIG_BLK_DEV_HD is not set

#
# Networking options
#
CONFIG_NETLINK=y
CONFIG_RTNETLINK=y
CONFIG_FIREWALL=y
CONFIG_NET_ALIAS=y
CONFIG_INET=y
CONFIG_IP_FORWARD=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_FIREWALL=y
CONFIG_IP_FIREWALL_NETLINK=y
CONFIG_IP_FIREWALL_VERBOSE=y
CONFIG_IP_MASQUERADE=y
CONFIG_IP_TRANSPARENT_PROXY=y
CONFIG_IP_ALWAYS_DEFRAG=y
CONFIG_IP_ACCT=y
CONFIG_IP_ROUTER=y
CONFIG_NET_IPIP=m
CONFIG_IP_MROUTE=y
CONFIG_IP_ALIAS=m
CONFIG_ARPD=y
CONFIG_INET_PCTCP=y
CONFIG_INET_RARP=m
CONFIG_PATH_MTU_DISCOVERY=y
CONFIG_IP_NOSR=y
CONFIG_SKB_LARGE=y
CONFIG_IPV6=m
CONFIG_IPX=m
CONFIG_IPX_INTERN=y
CONFIG_IPX_PPROP_ROUTING=y
CONFIG_ATALK=m
CONFIG_AX25=m
CONFIG_NETROM=m
CONFIG_ROSE=m
CONFIG_X25=m
CONFIG_LAPB=m
CONFIG_BRIDGE=y
CONFIG_LLC=y

#
# SCSI support
#
CONFIG_SCSI=m
CONFIG_BLK_DEV_SD=m
CONFIG_CHR_DEV_ST=m
CONFIG_BLK_DEV_SR=m
CONFIG_BLK_DEV_SR_VENDOR=y
CONFIG_CHR_DEV_SG=m
CONFIG_SCSI_MULTI_LUN=y
CONFIG_SCSI_CONSTANTS=y

#
# SCSI low-level drivers
#
CONFIG_SCSI_7000FASST=m
CONFIG_SCSI_AHA152X=m
CONFIG_SCSI_AHA1542=m
CONFIG_SCSI_AHA1740=m
CONFIG_SCSI_AIC7XXX=m
CONFIG_SCSI_ADVANSYS=m
CONFIG_SCSI_IN2000=m
CONFIG_SCSI_AM53C974=m
CONFIG_SCSI_BUSLOGIC=m
CONFIG_SCSI_DTC3280=m
CONFIG_SCSI_EATA_DMA=m
CONFIG_SCSI_EATA_PIO=m
CONFIG_SCSI_EATA=m
CONFIG_SCSI_EATA_TAGGED_QUEUE=y
CONFIG_SCSI_FUTURE_DOMAIN=m
CONFIG_SCSI_GENERIC_NCR5380=m
CONFIG_SCSI_GENERIC_NCR53C400=y
CONFIG_SCSI_G_NCR5380_PORT=y
CONFIG_SCSI_NCR53C406A=m
CONFIG_SCSI_NCR53C7xx=m
CONFIG_SCSI_NCR53C7xx_sync=y
CONFIG_SCSI_NCR53C7xx_FAST=y
CONFIG_SCSI_NCR53C7xx_DISCONNECT=y
# CONFIG_SCSI_NCR53C8XX is not set
CONFIG_SCSI_IBMMCA=y
CONFIG_SCSI_PPA=m
CONFIG_SCSI_PAS16=m
CONFIG_SCSI_QLOGIC_FAS=m
CONFIG_SCSI_QLOGIC_ISP=m
CONFIG_SCSI_SEAGATE=m
CONFIG_SCSI_T128=m
CONFIG_SCSI_U14_34F=m
CONFIG_SCSI_ULTRASTOR=m

#
# Network device support
#
CONFIG_NETDEVICES=y
CONFIG_ARCNET=m
CONFIG_ARCNET_ETH=y
CONFIG_ARCNET_1051=y
CONFIG_DUMMY=m
CONFIG_EQUALIZER=m
CONFIG_NET_ETHERNET=y
CONFIG_NET_VENDOR_3COM=y
CONFIG_EL1=m
CONFIG_EL2=m
CONFIG_ELPLUS=m
CONFIG_EL16=m
CONFIG_ELMC=m
CONFIG_EL3=m
CONFIG_VORTEX=m
CONFIG_LANCE=y
CONFIG_LANCE32=y
CONFIG_NET_VENDOR_SMC=y
CONFIG_WD80x3=m
CONFIG_ULTRA=m
CONFIG_SMC9194=m
CONFIG_NET_ISA=y
CONFIG_AT1700=m
CONFIG_E2100=m
CONFIG_DEPCA=m
CONFIG_EWRK3=m
CONFIG_EEXPRESS=m
CONFIG_EEXPRESS_PRO=m
CONFIG_FMV18X=m
CONFIG_HPLAN_PLUS=m
CONFIG_HPLAN=m
CONFIG_HP100=m
CONFIG_ETH16I=m
CONFIG_NE2000=m
CONFIG_NI52=m
CONFIG_NI65=m
CONFIG_SEEQ8005=y
CONFIG_SK_G16=y
CONFIG_NET_EISA=y
CONFIG_AC3200=m
CONFIG_APRICOT=m
CONFIG_DE4X5=m
CONFIG_DEC_ELCP=m
CONFIG_DGRS=m
CONFIG_ES3210=m
CONFIG_ZNET=y
CONFIG_NET_POCKET=y
CONFIG_ATP=y
CONFIG_DE600=m
CONFIG_DE620=m
CONFIG_FDDI=y
CONFIG_DEFXX=y
CONFIG_DLCI=m
CONFIG_DLCI_COUNT=24
CONFIG_DLCI_MAX=8
CONFIG_SDLA=m
CONFIG_PLIP=m
CONFIG_PPP=m
CONFIG_NET_RADIO=y
CONFIG_MKISS=m
CONFIG_BPQETHER=m
CONFIG_PT=m
CONFIG_PI=m
CONFIG_SCC=m
CONFIG_BAYCOM=m
CONFIG_SOUNDMODEM=m
CONFIG_SOUNDMODEM_SBC=y
CONFIG_SOUNDMODEM_WSS=y
CONFIG_SOUNDMODEM_AFSK1200=y
CONFIG_SOUNDMODEM_FSK9600=y
CONFIG_STRIP=m
CONFIG_WAVELAN=m
CONFIG_WIC=m
CONFIG_LAPBETHER=m
CONFIG_SLIP=m
CONFIG_SLIP_COMPRESSED=y
CONFIG_SLIP_SMART=y
CONFIG_SLIP_MODE_SLIP6=y
CONFIG_TR=y
CONFIG_IBMTR=m
CONFIG_SHAPER=m

#
# ISDN subsystem
#
CONFIG_ISDN=m
CONFIG_ISDN_PPP=y
CONFIG_ISDN_PPP_VJ=y
CONFIG_ISDN_MPP=y
CONFIG_ISDN_AUDIO=y
CONFIG_ISDN_DRV_ICN=m
CONFIG_ISDN_DRV_PCBIT=m
CONFIG_ISDN_DRV_TELES=m

#
# CD-ROM drivers (not for SCSI or IDE/ATAPI drives)
#
CONFIG_CD_NO_IDESCSI=y
CONFIG_AZTCD=m
CONFIG_GSCD=m
CONFIG_SBPCD=m
CONFIG_BPCD=m
CONFIG_MCD=m
CONFIG_MCDX=m
CONFIG_OPTCD=m
CONFIG_CM206=m
CONFIG_SJCD=m
CONFIG_CDI_INIT=y
CONFIG_ISP16_CDI=m
CONFIG_CDU31A=m
CONFIG_CDU535=m

#
# Filesystems
#
CONFIG_QUOTA=y
CONFIG_MINIX_FS=m
CONFIG_EXT_FS=m
CONFIG_EXT2_FS=m
CONFIG_XIA_FS=m
CONFIG_FAT_FS=m
CONFIG_MSDOS_FS=m
CONFIG_VFAT_FS=m
CONFIG_UMSDOS_FS=m
CONFIG_PROC_FS=y
CONFIG_NFS_FS=m
CONFIG_SMB_FS=m
CONFIG_SMB_WIN95=y
CONFIG_NCP_FS=m
CONFIG_ISO9660_FS=m
CONFIG_HPFS_FS=m
CONFIG_SYSV_FS=m
CONFIG_AFFS_FS=m
CONFIG_AMIGA_PARTITION=y
CONFIG_UFS_FS=m
CONFIG_BSD_DISKLABEL=y
CONFIG_SMD_DISKLABEL=y

#
# Character devices
#
CONFIG_SERIAL=m
CONFIG_DIGI=y
CONFIG_CYCLADES=m
CONFIG_STALDRV=y
CONFIG_STALLION=m
CONFIG_ISTALLION=m
CONFIG_RISCOM8=m
CONFIG_ESPSERIAL=m
CONFIG_ESPSERIAL_DMA_CHANNEL=1
CONFIG_ESPSERIAL_TRIGGER_LEVEL=768
CONFIG_PRINTER=m
CONFIG_MOUSE=y
CONFIG_ATIXL_BUSMOUSE=m
CONFIG_BUSMOUSE=m
CONFIG_MS_BUSMOUSE=m
CONFIG_PSMOUSE=m
CONFIG_82C710_MOUSE=y
CONFIG_UMISC=y
CONFIG_QIC02_TAPE=m
CONFIG_QIC02_DYNCONF=y
CONFIG_FTAPE=m
CONFIG_APM=y
CONFIG_APM_IGNORE_USER_SUSPEND=y
CONFIG_APM_DO_ENABLE=y
CONFIG_APM_CPU_IDLE=y
CONFIG_APM_DISPLAY_BLANK=y
CONFIG_APM_POWER_OFF=y
CONFIG_WATCHDOG=y
CONFIG_WATCHDOG_NOWAYOUT=y
CONFIG_WDT=m
CONFIG_WDT_501=y
CONFIG_WDT_501_FAN=y
CONFIG_PCWATCHDOG=m
CONFIG_PCWD_REV_A=y
CONFIG_PCWD_REV_C=y
CONFIG_PCWD_SHOW_PREVSTAT=y
CONFIG_RTC=y

#
# Sound
#
CONFIG_SOUND=m
CONFIG_PAS=y
CONFIG_SB=y
CONFIG_ADLIB=y
CONFIG_GUS=y
CONFIG_MPU401=y
CONFIG_UART6850=y
# CONFIG_PSS is not set
CONFIG_GUS16=y
CONFIG_GUSMAX=y
CONFIG_MSS=y
CONFIG_SSCAPE=y
# CONFIG_TRIX is not set
CONFIG_MAD16=y
CONFIG_CS4232=y
# CONFIG_MAUI is not set
CONFIG_YM3812=y
SBC_BASE=220
SBC_IRQ=7
SBC_DMA=1
SB_DMA2=5
SB_MPU_BASE=330
SB_MPU_IRQ=-1
PAS_IRQ=10
PAS_DMA=3
GUS_BASE=220
GUS_IRQ=15
GUS_DMA=6
GUS_DMA2=-1
GUS16_BASE=530
GUS16_IRQ=7
GUS16_DMA=3
MPU_BASE=330
MPU_IRQ=9
U6850_BASE=0
U6850_IRQ=-1
MSS_BASE=530
MSS_IRQ=11
MSS_DMA=3
SSCAPE_BASE=330
SSCAPE_IRQ=9
SSCAPE_DMA=3
SSCAPE_MSS_BASE=534
SSCAPE_MSS_IRQ=11
CS4232_BASE=530
CS4232_IRQ=11
CS4232_DMA=0
CS4232_DMA2=3
CS4232_MPU_BASE=330
CS4232_MPU_IRQ=9
MAD16_BASE=530
MAD16_IRQ=11
MAD16_DMA=3
MAD16_DMA2=0
MAD16_MPU_BASE=330
MAD16_MPU_IRQ=9
CONFIG_LOWLEVEL_SOUND=y
CONFIG_ACI_MIXER=y
CONFIG_AWE32_SYNTH=y

#
# Kernel hacking
#
CONFIG_PROFILE=y
CONFIG_PROFILE_SHIFT=2