different chipset, the OPL3-SAx. After an email exhange with
Yamaha, however, it turns out that the 719 is just a re-badged
715, and the chipsets are identical. The chipset detection code
-has been updated to refkect this.
+has been updated to reflect this.
Anyways, all of these chipsets implement the following devices:
VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 7
-EXTRAVERSION =-pre7
+EXTRAVERSION =-pre8
KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
-# BK Id: SCCS/s.Makefile 1.13 05/21/01 00:48:24 cort
+# BK Id: SCCS/s.Makefile 1.18 07/07/01 13:37:26 paulus
#
# This file is included by the global makefile so that you can add your own
# architecture-specific flags and dependencies. Remember to do have actions
ARCH_SUBDIRS = arch/ppc/kernel arch/ppc/mm arch/ppc/lib
SUBDIRS := $(SUBDIRS) $(ARCH_SUBDIRS)
-ARCHIVES := arch/ppc/kernel/kernel.o arch/ppc/mm/mm.o arch/ppc/lib/lib.o $(ARCHIVES)
CORE_FILES := arch/ppc/kernel/kernel.o arch/ppc/mm/mm.o arch/ppc/lib/lib.o $(CORE_FILES)
ifdef CONFIG_MATH_EMULATION
SUBDIRS += arch/ppc/math-emu
-ARCHIVES += arch/ppc/math-emu/math-emu.o
CORE_FILES += arch/ppc/math-emu/math-emu.o
endif
ifdef CONFIG_APUS
SUBDIRS += arch/ppc/amiga
-ARCHIVES += arch/ppc/amiga/amiga.o
CORE_FILES += arch/ppc/amiga/amiga.o
endif
archmrproper:
archdep:
- $(MAKEBOOT) dep
+ $(MAKEBOOT) fastdep
# modified by Cort (cort@cs.nmt.edu)
#
-.c.s:
- $(CC) $(CFLAGS) -S -o $*.s $<
-.s.o:
- $(AS) -o $*.o $<
-.c.o:
- $(CC) $(CFLAGS) -c -o $*.o $<
-.S.s:
- $(CPP) $(AFLAGS) -traditional -o $*.o $<
-.S.o:
- $(CC) $(AFLAGS) -traditional -c -o $*.o $<
-
GZIP_FLAGS = -v9f
CFLAGS := $(CPPFLAGS) -O2 -DSTDC_HEADERS -fno-builtin -D__BOOTER__ \
TFTPSIMAGE=/tftpboot/sImage
endif
-
lib/zlib.a:
$(MAKE) -C lib
images/vmlinux.gz: $(TOPDIR)/vmlinux
$(MAKE) -C images vmlinux.gz
-# Since gemini doesn't need/have it's own directory, we do znetboot* here
-ifdef CONFIG_GEMINI
-BOOT_TARGETS = zImage zImage.initrd
-else
-BOOT_TARGETS = zImage zImage.initrd znetboot znetboot.initrd
-endif
+# Subdirs and tools needed for each.
+subdir-y := lib images common
+subdir-$(CONFIG_ALL_PPC) += chrp pmac prep
+tools-$(CONFIG_ALL_PPC) := addnote piggyback mknote hack-coff mkprep
+subdir-$(CONFIG_4xx) += tree
+subdir-$(CONFIG_8xx) += mbx
+subdir-$(CONFIG_8260) += mbx
+tools-$(CONFIG_GEMINI) := mksimage
-# We go into the utils dir by hand to ensure HOSTCC builds
-$(BOOT_TARGETS): sImage vmapus lib/zlib.a images/vmlinux.gz
-ifneq ("xx$(CONFIG_8260)$(CONFIG_8xx)","xx")
- $(MAKE) -C mbx $@
-endif
-ifdef CONFIG_ALL_PPC
- $(MAKE) -C utils addnote piggyback mknote hack-coff mkprep
- $(MAKE) -C chrp $@
- $(MAKE) -C pmac $@
- $(MAKE) -C prep $@
+# These are dirs we don't want to go into on BOOT_TARGETS
+NONBOOT := lib images common
+
+# These are the subdirs we want to use
+BOOTDIRS = $(filter-out $(NONBOOT), $(subdir-y))
+
+# This will make the tools we need. We do it like this to ensure that we use
+# HOSTCC. -- Tom
+maketools:
+ $(MAKE) -C utils $(tools-y)
+
+# The targets all boards support for boot images.
+BOOT_TARGETS = zImage
+ifndef CONFIG_GEMINI
+BOOT_TARGETS += zImage.initrd znetboot znetboot.initrd
endif
-ifdef CONFIG_4xx
- $(MAKE) -C tree $@
+
+$(BOOT_TARGETS): sImage vmapus lib/zlib.a images/vmlinux.gz maketools
+ifneq ($(BOOTDIRS),)
+ for d in $(BOOTDIRS); do $(MAKE) -C $$d $@; done
endif
sImage: $(TOPDIR)/vmlinux
cp images/sImage $(TFTPSIMAGE)
endif
-# Do the dirs
+# Clean up after ourselves. We have to do it like this since only some dirs
+# need to be gone into. -- Tom
clean:
$(MAKE) -C images clean
$(MAKE) -C tree clean
$(MAKE) -C utils clean
-dep:
- $(MAKE) -C mbx fastdep
- $(MAKE) -C chrp fastdep
- $(MAKE) -C common fastdep
- $(MAKE) -C pmac fastdep
- $(MAKE) -C prep fastdep
- $(MAKE) -C common fastdep
-
include $(TOPDIR)/Rules.make
void _vprintk(void(*)(const char), const char *, va_list);
#if defined(CONFIG_SERIAL_CONSOLE)
-struct NS16550 *com_port;
+extern unsigned long com_port;
-int serial_tstc(volatile struct NS16550 *);
-unsigned char serial_getc(volatile struct NS16550 *);
-void serial_putc(volatile struct NS16550 *, unsigned char);
+extern int serial_tstc(volatile unsigned long com_port);
+extern unsigned char serial_getc(volatile unsigned long com_port);
+extern void serial_putc(volatile unsigned long com_port, unsigned char c);
#endif
void pause(void)
/*
- * BK Id: SCCS/s.misc.c 1.9 05/18/01 07:54:04 patch
+ * BK Id: SCCS/s.misc.c 1.11 07/18/01 15:46:50 trini
*/
/*
* Adapted for PowerPC by Gary Thomas
char cmd_buf[256];
char *cmd_line = cmd_buf;
+/* We need to pass along a 'dummy' com_port. */
+unsigned long com_port = 0;
+
/* This is the default cmdline that will be given to the user at boot time..
* If none was specified at compile time, we'll give it one that should work.
* -- Tom */
HOSTCFLAGS += -I$(TOPDIR)/arch/$(ARCH)/boot/include
+all: dummy
+
# Simple programs with 1 file and no extra CFLAGS
UTILS = addnote hack-coff mkprep mksimage mknote piggyback mkpmon mkbugboot
-# BK Id: SCCS/s.config.in 1.30 06/27/01 14:49:58 trini
+# BK Id: SCCS/s.config.in 1.34 07/08/01 11:39:11 trini
#
# For a description of the syntax of this configuration file,
# see Documentation/kbuild/config-language.txt.
if [ "$CONFIG_6xx" = "y" -a "$CONFIG_8260" = "n" ]; then
choice 'Machine Type' \
"CHRP/PowerMac/PReP CONFIG_ALL_PPC \
- Amgia-APUS CONFIG_APUS \
+ Amiga-APUS CONFIG_APUS \
Synergy-Gemini CONFIG_GEMINI" CHRP/PowerMac/PReP
fi
source drivers/parport/Config.in
-if [ "$CONFIG_4xx" != "y" -a "$CONFIG_8xx" != "y" ]; then
+if [ "$CONFIG_4xx" != "y" ]; then
if [ "$CONFIG_APUS" != "y" ]; then
tristate 'Support for /dev/rtc' CONFIG_PPC_RTC
else
bool 'Support for RTAS (RunTime Abstraction Services) in /proc' CONFIG_PPC_RTAS
bool 'Support for early boot text console (BootX or OpenFirmware only)' CONFIG_BOOTX_TEXT
bool 'Support for PReP Residual Data' CONFIG_PREP_RESIDUAL
- bool 'Default bootloader kernel arguments' CONFIG_CMDLINE_BOOL
- if [ "$CONFIG_CMDLINE_BOOL" = "y" ] ; then
- string 'Initial kernel command string' CONFIG_CMDLINE "console=ttyS0,9600 console=tty0 root=/dev/sda2"
- fi
+fi
+
+bool 'Default bootloader kernel arguments' CONFIG_CMDLINE_BOOL
+if [ "$CONFIG_CMDLINE_BOOL" = "y" ] ; then
+ string 'Initial kernel command string' CONFIG_CMDLINE "console=ttyS0,9600 console=tty0 root=/dev/sda2"
fi
if [ "$CONFIG_APUS" = "y" ]; then
# CONFIG_ALL_PPC is not set
# CONFIG_SMP is not set
CONFIG_MATH_EMULATION=y
-CONFIG_SASH=y
-CONFIG_SASH_PATH="/bin/sash"
#
# General setup
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_PNP=y
+# CONFIG_IP_PNP_DHCP is not set
# CONFIG_IP_PNP_BOOTP is not set
# CONFIG_IP_PNP_RARP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_ETHERTAP is not set
-# CONFIG_NET_SB1000 is not set
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
+# CONFIG_ARM_AM79C961A is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
# CONFIG_NCR885E is not set
# CONFIG_OAKNET is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNGEM is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
# CONFIG_NET_ISA is not set
# CONFIG_NET_PCI is not set
# CONFIG_NET_POCKET is not set
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+# CONFIG_MYRI_SBUS is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
CONFIG_ISO9660_FS=y
# CONFIG_JOLIET is not set
# CONFIG_MINIX_FS is not set
+# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_EXT2_FS=y
# CONFIG_SYSV_FS is not set
-# CONFIG_SYSV_FS_WRITE is not set
# CONFIG_UDF_FS is not set
# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set
#
# CONFIG_USB is not set
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
#
# Kernel hacking
#
# CONFIG_ALL_PPC is not set
# CONFIG_SMP is not set
CONFIG_MATH_EMULATION=y
-CONFIG_SASH=y
-CONFIG_SASH_PATH="/bin/sash"
#
# General setup
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_PNP=y
+# CONFIG_IP_PNP_DHCP is not set
# CONFIG_IP_PNP_BOOTP is not set
# CONFIG_IP_PNP_RARP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_ETHERTAP is not set
-# CONFIG_NET_SB1000 is not set
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
+# CONFIG_ARM_AM79C961A is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
# CONFIG_NCR885E is not set
# CONFIG_OAKNET is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNGEM is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
# CONFIG_NET_ISA is not set
# CONFIG_NET_PCI is not set
# CONFIG_NET_POCKET is not set
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+# CONFIG_MYRI_SBUS is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
# CONFIG_ISO9660_FS is not set
# CONFIG_JOLIET is not set
# CONFIG_MINIX_FS is not set
+# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
# CONFIG_ROMFS_FS is not set
# CONFIG_EXT2_FS is not set
# CONFIG_SYSV_FS is not set
-# CONFIG_SYSV_FS_WRITE is not set
# CONFIG_UDF_FS is not set
# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set
#
# CONFIG_USB is not set
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
#
# Kernel hacking
#
# CONFIG_ALL_PPC is not set
# CONFIG_SMP is not set
CONFIG_MATH_EMULATION=y
-CONFIG_SASH=y
-CONFIG_SASH_PATH="/bin/sash"
#
# General setup
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_PNP=y
+# CONFIG_IP_PNP_DHCP is not set
# CONFIG_IP_PNP_BOOTP is not set
# CONFIG_IP_PNP_RARP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_ETHERTAP is not set
-# CONFIG_NET_SB1000 is not set
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
+# CONFIG_ARM_AM79C961A is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
# CONFIG_NCR885E is not set
# CONFIG_OAKNET is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNGEM is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
# CONFIG_NET_ISA is not set
# CONFIG_NET_PCI is not set
# CONFIG_NET_POCKET is not set
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+# CONFIG_MYRI_SBUS is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
# CONFIG_ISO9660_FS is not set
# CONFIG_JOLIET is not set
# CONFIG_MINIX_FS is not set
+# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
# CONFIG_ROMFS_FS is not set
# CONFIG_EXT2_FS is not set
# CONFIG_SYSV_FS is not set
-# CONFIG_SYSV_FS_WRITE is not set
# CONFIG_UDF_FS is not set
# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set
#
# CONFIG_USB is not set
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
#
# Kernel hacking
#
# CONFIG_ALL_PPC is not set
# CONFIG_SMP is not set
CONFIG_MATH_EMULATION=y
-CONFIG_SASH=y
-CONFIG_SASH_PATH="/bin/sash"
#
# General setup
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_PNP=y
+# CONFIG_IP_PNP_DHCP is not set
# CONFIG_IP_PNP_BOOTP is not set
# CONFIG_IP_PNP_RARP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_ETHERTAP is not set
-# CONFIG_NET_SB1000 is not set
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
+# CONFIG_ARM_AM79C961A is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
# CONFIG_NCR885E is not set
# CONFIG_OAKNET is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNGEM is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
# CONFIG_NET_ISA is not set
# CONFIG_NET_PCI is not set
# CONFIG_NET_POCKET is not set
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+# CONFIG_MYRI_SBUS is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
# CONFIG_ISO9660_FS is not set
# CONFIG_JOLIET is not set
# CONFIG_MINIX_FS is not set
+# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
# CONFIG_ROMFS_FS is not set
# CONFIG_EXT2_FS is not set
# CONFIG_SYSV_FS is not set
-# CONFIG_SYSV_FS_WRITE is not set
# CONFIG_UDF_FS is not set
# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set
#
# CONFIG_USB is not set
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
#
# Kernel hacking
#
# CONFIG_ALL_PPC is not set
# CONFIG_SMP is not set
CONFIG_MATH_EMULATION=y
-CONFIG_SASH=y
-CONFIG_SASH_PATH="/bin/sash"
#
# General setup
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_PNP=y
+# CONFIG_IP_PNP_DHCP is not set
# CONFIG_IP_PNP_BOOTP is not set
# CONFIG_IP_PNP_RARP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_ETHERTAP is not set
-# CONFIG_NET_SB1000 is not set
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
+# CONFIG_ARM_AM79C961A is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
# CONFIG_NCR885E is not set
# CONFIG_OAKNET is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNGEM is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
# CONFIG_NET_ISA is not set
# CONFIG_NET_PCI is not set
# CONFIG_NET_POCKET is not set
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+# CONFIG_MYRI_SBUS is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
# CONFIG_ISO9660_FS is not set
# CONFIG_JOLIET is not set
# CONFIG_MINIX_FS is not set
+# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
# CONFIG_ROMFS_FS is not set
# CONFIG_EXT2_FS is not set
# CONFIG_SYSV_FS is not set
-# CONFIG_SYSV_FS_WRITE is not set
# CONFIG_UDF_FS is not set
# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set
#
# CONFIG_USB is not set
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
#
# Kernel hacking
#
# CONFIG_ALL_PPC is not set
# CONFIG_SMP is not set
CONFIG_MATH_EMULATION=y
-CONFIG_SASH=y
-CONFIG_SASH_PATH="/bin/sash"
#
# General setup
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_PNP=y
+# CONFIG_IP_PNP_DHCP is not set
# CONFIG_IP_PNP_BOOTP is not set
# CONFIG_IP_PNP_RARP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_ETHERTAP is not set
-# CONFIG_NET_SB1000 is not set
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
+# CONFIG_ARM_AM79C961A is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
# CONFIG_NCR885E is not set
# CONFIG_OAKNET is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNGEM is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
# CONFIG_NET_ISA is not set
# CONFIG_NET_PCI is not set
# CONFIG_NET_POCKET is not set
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+# CONFIG_MYRI_SBUS is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
# CONFIG_ISO9660_FS is not set
# CONFIG_JOLIET is not set
# CONFIG_MINIX_FS is not set
+# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
# CONFIG_ROMFS_FS is not set
# CONFIG_EXT2_FS is not set
# CONFIG_SYSV_FS is not set
-# CONFIG_SYSV_FS_WRITE is not set
# CONFIG_UDF_FS is not set
# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set
#
# CONFIG_USB is not set
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
#
# Kernel hacking
#
# CONFIG_8xx is not set
# CONFIG_8260 is not set
# CONFIG_ALL_PPC is not set
-# CONFIG_GEMINI is not set
CONFIG_APUS=y
+# CONFIG_GEMINI is not set
# CONFIG_PPC601_SYNC_FIX is not set
# CONFIG_SMP is not set
# CONFIG_ALTIVEC is not set
# CONFIG_EISA is not set
# CONFIG_SBUS is not set
# CONFIG_MCA is not set
+CONFIG_PCI_PERMEDIA=y
CONFIG_PCI=y
CONFIG_NET=y
CONFIG_SYSCTL=y
CONFIG_WARPENGINE_SCSI=y
CONFIG_BLZ603EPLUS_SCSI=y
CONFIG_OKTAGON_SCSI=y
-CONFIG_CYBERSTORMIII_SCSI=y
#
# IEEE 1394 (FireWire) support
# CONFIG_EQUALIZER is not set
CONFIG_TUN=m
# CONFIG_ETHERTAP is not set
-# CONFIG_NET_SB1000 is not set
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
+# CONFIG_ARM_AM79C961A is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
CONFIG_NE2K_ZORRO=y
CONFIG_A2065=y
CONFIG_HYDRA=y
+# CONFIG_SUNLANCE is not set
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNGEM is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
# CONFIG_HP100 is not set
# CONFIG_NET_ISA is not set
# CONFIG_NET_PCI is not set
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+# CONFIG_MYRI_SBUS is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
# CONFIG_SERIAL is not set
# CONFIG_SERIAL_EXTENDED is not set
# CONFIG_SERIAL_NONSTANDARD is not set
+CONFIG_A2232=y
CONFIG_UNIX98_PTYS=y
CONFIG_UNIX98_PTY_COUNT=256
CONFIG_PRINTER=m
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
CONFIG_ISO9660_FS=y
CONFIG_JOLIET=y
CONFIG_MINIX_FS=y
+# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
CONFIG_ROMFS_FS=y
CONFIG_EXT2_FS=y
# CONFIG_SYSV_FS is not set
-# CONFIG_SYSV_FS_WRITE is not set
# CONFIG_UDF_FS is not set
# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set
# CONFIG_SOUND_MSNDCLAS is not set
# CONFIG_SOUND_MSNDPIN is not set
# CONFIG_SOUND_VIA82CXXX is not set
+# CONFIG_MIDI_VIA82CXXX is not set
CONFIG_SOUND_OSS=m
CONFIG_SOUND_TRACEINIT=y
CONFIG_SOUND_DMAP=y
#
# CONFIG_USB is not set
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
#
# Kernel hacking
#
CONFIG_IP_MULTICAST=y
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_PNP=y
+# CONFIG_IP_PNP_DHCP is not set
CONFIG_IP_PNP_BOOTP=y
# CONFIG_IP_PNP_RARP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_ETHERTAP is not set
-# CONFIG_NET_SB1000 is not set
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
+# CONFIG_ARM_AM79C961A is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
# CONFIG_NCR885E is not set
# CONFIG_OAKNET is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNGEM is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
# CONFIG_NET_ISA is not set
# CONFIG_NET_PCI is not set
# CONFIG_NET_POCKET is not set
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+# CONFIG_MYRI_SBUS is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
# CONFIG_ISO9660_FS is not set
# CONFIG_JOLIET is not set
# CONFIG_MINIX_FS is not set
+# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_EXT2_FS=y
# CONFIG_SYSV_FS is not set
-# CONFIG_SYSV_FS_WRITE is not set
# CONFIG_UDF_FS is not set
# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set
#
# CONFIG_USB is not set
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
#
# Kernel hacking
#
# CONFIG_8xx is not set
# CONFIG_8260 is not set
CONFIG_ALL_PPC=y
-# CONFIG_GEMINI is not set
# CONFIG_APUS is not set
+# CONFIG_GEMINI is not set
CONFIG_PPC601_SYNC_FIX=y
# CONFIG_SMP is not set
CONFIG_ALTIVEC=y
# CONFIG_SCSI_AHA1740 is not set
CONFIG_SCSI_AIC7XXX=m
CONFIG_AIC7XXX_CMDS_PER_DEVICE=253
-CONFIG_AIC7XXX_RESET_DELAY=5000
+CONFIG_AIC7XXX_RESET_DELAY_MS=15000
+# CONFIG_AIC7XXX_BUILD_FIRMWARE is not set
CONFIG_SCSI_AIC7XXX_OLD=m
# CONFIG_AIC7XXX_OLD_TCQ_ON_BY_DEFAULT is not set
CONFIG_AIC7XXX_OLD_CMDS_PER_DEVICE=8
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_ETHERTAP is not set
-# CONFIG_NET_SB1000 is not set
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
+# CONFIG_ARM_AM79C961A is not set
CONFIG_MACE=y
# CONFIG_MACE_AAUI_PORT is not set
CONFIG_BMAC=y
CONFIG_GMAC=y
# CONFIG_NCR885E is not set
# CONFIG_OAKNET is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNGEM is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
# CONFIG_HP100 is not set
# CONFIG_NET_ISA is not set
CONFIG_NET_PCI=y
# CONFIG_APRICOT is not set
# CONFIG_CS89x0 is not set
CONFIG_TULIP=y
+# CONFIG_TULIP_MWI is not set
+CONFIG_TULIP_MMIO=y
CONFIG_DE4X5=m
# CONFIG_DGRS is not set
# CONFIG_DM9102 is not set
# CONFIG_EEPRO100 is not set
-# CONFIG_EEPRO100_PM is not set
# CONFIG_LNE390 is not set
+# CONFIG_FEALNX is not set
# CONFIG_NATSEMI is not set
# CONFIG_NE2K_PCI is not set
# CONFIG_NE3210 is not set
# CONFIG_TLAN is not set
# CONFIG_VIA_RHINE is not set
# CONFIG_WINBOND_840 is not set
-# CONFIG_HAPPYMEAL is not set
# CONFIG_NET_POCKET is not set
#
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+# CONFIG_MYRI_SBUS is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
CONFIG_PPP=y
CONFIG_PPP_MULTILINK=y
# CONFIG_PPP_FILTER is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
CONFIG_ISO9660_FS=y
# CONFIG_JOLIET is not set
# CONFIG_MINIX_FS is not set
+# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_EXT2_FS=y
# CONFIG_SYSV_FS is not set
-# CONFIG_SYSV_FS_WRITE is not set
# CONFIG_UDF_FS is not set
# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set
# CONFIG_SOUND_MSNDCLAS is not set
# CONFIG_SOUND_MSNDPIN is not set
# CONFIG_SOUND_VIA82CXXX is not set
+# CONFIG_MIDI_VIA82CXXX is not set
# CONFIG_SOUND_OSS is not set
# CONFIG_SOUND_TVMIXER is not set
#
# CONFIG_USB_IBMCAM is not set
# CONFIG_USB_OV511 is not set
+# CONFIG_USB_PWC is not set
+# CONFIG_USB_SE401 is not set
# CONFIG_USB_DSBR is not set
# CONFIG_USB_DABUSB is not set
#
# CONFIG_USB_PLUSB is not set
# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_CATC is not set
# CONFIG_USB_NET1080 is not set
#
# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
# CONFIG_USB_SERIAL_KEYSPAN is not set
# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
# CONFIG_USB_SERIAL_OMNINET is not set
#
#
# CONFIG_USB_RIO500 is not set
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
#
# Kernel hacking
#
CONFIG_IP_MULTICAST=y
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_PNP=y
+# CONFIG_IP_PNP_DHCP is not set
CONFIG_IP_PNP_BOOTP=y
# CONFIG_IP_PNP_RARP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_ETHERTAP is not set
-# CONFIG_NET_SB1000 is not set
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
+# CONFIG_ARM_AM79C961A is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
# CONFIG_NCR885E is not set
# CONFIG_OAKNET is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNGEM is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
# CONFIG_NET_ISA is not set
# CONFIG_NET_PCI is not set
# CONFIG_NET_POCKET is not set
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+# CONFIG_MYRI_SBUS is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
# CONFIG_ISO9660_FS is not set
# CONFIG_JOLIET is not set
# CONFIG_MINIX_FS is not set
+# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_EXT2_FS=y
# CONFIG_SYSV_FS is not set
-# CONFIG_SYSV_FS_WRITE is not set
# CONFIG_UDF_FS is not set
# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set
#
# CONFIG_USB is not set
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
#
# Kernel hacking
#
# CONFIG_8xx is not set
# CONFIG_8260 is not set
# CONFIG_ALL_PPC is not set
-CONFIG_GEMINI=y
# CONFIG_APUS is not set
+CONFIG_GEMINI=y
# CONFIG_PPC601_SYNC_FIX is not set
# CONFIG_SMP is not set
CONFIG_ALTIVEC=y
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_ETHERTAP is not set
-# CONFIG_NET_SB1000 is not set
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
+# CONFIG_ARM_AM79C961A is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
CONFIG_NCR885E=y
# CONFIG_OAKNET is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNGEM is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
# CONFIG_HP100 is not set
# CONFIG_NET_ISA is not set
# CONFIG_NET_PCI is not set
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+# CONFIG_MYRI_SBUS is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
CONFIG_ISO9660_FS=y
# CONFIG_JOLIET is not set
# CONFIG_MINIX_FS is not set
+# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_EXT2_FS=y
# CONFIG_SYSV_FS is not set
-# CONFIG_SYSV_FS_WRITE is not set
# CONFIG_UDF_FS is not set
# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set
#
# CONFIG_USB is not set
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
#
# Kernel hacking
#
# CONFIG_8xx is not set
# CONFIG_8260 is not set
CONFIG_ALL_PPC=y
-# CONFIG_GEMINI is not set
# CONFIG_APUS is not set
+# CONFIG_GEMINI is not set
# CONFIG_PPC601_SYNC_FIX is not set
# CONFIG_SMP is not set
# CONFIG_ALTIVEC is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_ETHERTAP is not set
-# CONFIG_NET_SB1000 is not set
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
+# CONFIG_ARM_AM79C961A is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
# CONFIG_NCR885E is not set
# CONFIG_OAKNET is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNGEM is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
# CONFIG_HP100 is not set
# CONFIG_NET_ISA is not set
CONFIG_NET_PCI=y
# CONFIG_APRICOT is not set
# CONFIG_CS89x0 is not set
# CONFIG_TULIP is not set
+# CONFIG_TULIP_MWI is not set
+# CONFIG_TULIP_MMIO is not set
CONFIG_DE4X5=y
# CONFIG_DGRS is not set
# CONFIG_DM9102 is not set
# CONFIG_EEPRO100 is not set
-# CONFIG_EEPRO100_PM is not set
# CONFIG_LNE390 is not set
+# CONFIG_FEALNX is not set
# CONFIG_NATSEMI is not set
# CONFIG_NE2K_PCI is not set
# CONFIG_NE3210 is not set
# CONFIG_TLAN is not set
# CONFIG_VIA_RHINE is not set
# CONFIG_WINBOND_840 is not set
-# CONFIG_HAPPYMEAL is not set
# CONFIG_NET_POCKET is not set
#
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+# CONFIG_MYRI_SBUS is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
CONFIG_ISO9660_FS=y
# CONFIG_JOLIET is not set
# CONFIG_MINIX_FS is not set
+# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_EXT2_FS=y
# CONFIG_SYSV_FS is not set
-# CONFIG_SYSV_FS_WRITE is not set
# CONFIG_UDF_FS is not set
# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set
#
# CONFIG_USB is not set
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
#
# Kernel hacking
#
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_PNP=y
+# CONFIG_IP_PNP_DHCP is not set
CONFIG_IP_PNP_BOOTP=y
# CONFIG_IP_PNP_RARP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
-# CONFIG_NET_SB1000 is not set
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
+# CONFIG_ARM_AM79C961A is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
# CONFIG_NCR885E is not set
# CONFIG_OAKNET is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNGEM is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
# CONFIG_NET_ISA is not set
# CONFIG_NET_PCI is not set
# CONFIG_NET_POCKET is not set
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+# CONFIG_MYRI_SBUS is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
# CONFIG_ISO9660_FS is not set
# CONFIG_JOLIET is not set
# CONFIG_MINIX_FS is not set
+# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_EXT2_FS=y
# CONFIG_SYSV_FS is not set
-# CONFIG_SYSV_FS_WRITE is not set
# CONFIG_UDF_FS is not set
# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set
#
# CONFIG_USB is not set
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
#
# Kernel hacking
#
CONFIG_IP_MULTICAST=y
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_PNP=y
+# CONFIG_IP_PNP_DHCP is not set
CONFIG_IP_PNP_BOOTP=y
CONFIG_IP_PNP_RARP=y
# CONFIG_NET_IPIP is not set
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
-# CONFIG_NET_SB1000 is not set
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
+# CONFIG_ARM_AM79C961A is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
# CONFIG_NCR885E is not set
CONFIG_OAKNET=y
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNGEM is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
# CONFIG_NET_ISA is not set
# CONFIG_NET_PCI is not set
# CONFIG_NET_POCKET is not set
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+# CONFIG_MYRI_SBUS is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
# CONFIG_ISO9660_FS is not set
# CONFIG_JOLIET is not set
# CONFIG_MINIX_FS is not set
+# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_EXT2_FS=y
# CONFIG_SYSV_FS is not set
-# CONFIG_SYSV_FS_WRITE is not set
# CONFIG_UDF_FS is not set
# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set
#
# CONFIG_USB is not set
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
#
# Kernel hacking
#
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_ETHERTAP is not set
-# CONFIG_NET_SB1000 is not set
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
+# CONFIG_ARM_AM79C961A is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
# CONFIG_NCR885E is not set
# CONFIG_OAKNET is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNGEM is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
# CONFIG_HP100 is not set
# CONFIG_NET_ISA is not set
CONFIG_NET_PCI=y
# CONFIG_APRICOT is not set
# CONFIG_CS89x0 is not set
# CONFIG_TULIP is not set
+# CONFIG_TULIP_MWI is not set
+# CONFIG_TULIP_MMIO is not set
# CONFIG_DE4X5 is not set
# CONFIG_DGRS is not set
# CONFIG_DM9102 is not set
# CONFIG_EEPRO100 is not set
-# CONFIG_EEPRO100_PM is not set
# CONFIG_LNE390 is not set
+# CONFIG_FEALNX is not set
# CONFIG_NATSEMI is not set
# CONFIG_NE2K_PCI is not set
# CONFIG_NE3210 is not set
# CONFIG_TLAN is not set
# CONFIG_VIA_RHINE is not set
# CONFIG_WINBOND_840 is not set
-# CONFIG_HAPPYMEAL is not set
# CONFIG_NET_POCKET is not set
#
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+# CONFIG_MYRI_SBUS is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
CONFIG_ISO9660_FS=y
CONFIG_JOLIET=y
# CONFIG_MINIX_FS is not set
+# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_EXT2_FS=y
# CONFIG_SYSV_FS is not set
-# CONFIG_SYSV_FS_WRITE is not set
# CONFIG_UDF_FS is not set
# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set
# CONFIG_SOUND_MSNDCLAS is not set
# CONFIG_SOUND_MSNDPIN is not set
# CONFIG_SOUND_VIA82CXXX is not set
+# CONFIG_MIDI_VIA82CXXX is not set
CONFIG_SOUND_OSS=y
CONFIG_SOUND_TRACEINIT=y
# CONFIG_SOUND_DMAP is not set
#
# CONFIG_USB is not set
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
#
# Kernel hacking
#
CONFIG_IP_MULTICAST=y
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_PNP=y
+# CONFIG_IP_PNP_DHCP is not set
CONFIG_IP_PNP_BOOTP=y
# CONFIG_IP_PNP_RARP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_ETHERTAP is not set
-# CONFIG_NET_SB1000 is not set
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
+# CONFIG_ARM_AM79C961A is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
# CONFIG_NCR885E is not set
# CONFIG_OAKNET is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNGEM is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
# CONFIG_NET_ISA is not set
# CONFIG_NET_PCI is not set
# CONFIG_NET_POCKET is not set
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+# CONFIG_MYRI_SBUS is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
# CONFIG_ISO9660_FS is not set
# CONFIG_JOLIET is not set
# CONFIG_MINIX_FS is not set
+# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_EXT2_FS=y
# CONFIG_SYSV_FS is not set
-# CONFIG_SYSV_FS_WRITE is not set
# CONFIG_UDF_FS is not set
# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set
#
# CONFIG_USB is not set
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
#
# Kernel hacking
#
CONFIG_IP_MULTICAST=y
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_PNP=y
+# CONFIG_IP_PNP_DHCP is not set
CONFIG_IP_PNP_BOOTP=y
# CONFIG_IP_PNP_RARP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_ETHERTAP is not set
-# CONFIG_NET_SB1000 is not set
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
+# CONFIG_ARM_AM79C961A is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
# CONFIG_NCR885E is not set
# CONFIG_OAKNET is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNGEM is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
# CONFIG_NET_ISA is not set
# CONFIG_NET_PCI is not set
# CONFIG_NET_POCKET is not set
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+# CONFIG_MYRI_SBUS is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
# CONFIG_ISO9660_FS is not set
# CONFIG_JOLIET is not set
# CONFIG_MINIX_FS is not set
+# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_EXT2_FS=y
# CONFIG_SYSV_FS is not set
-# CONFIG_SYSV_FS_WRITE is not set
# CONFIG_UDF_FS is not set
# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set
#
# CONFIG_USB is not set
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
#
# Kernel hacking
#
CONFIG_IP_MULTICAST=y
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_PNP=y
+# CONFIG_IP_PNP_DHCP is not set
CONFIG_IP_PNP_BOOTP=y
CONFIG_IP_PNP_RARP=y
# CONFIG_NET_IPIP is not set
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
-# CONFIG_NET_SB1000 is not set
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
+# CONFIG_ARM_AM79C961A is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_GMAC is not set
# CONFIG_NCR885E is not set
# CONFIG_OAKNET is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNGEM is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
# CONFIG_NET_ISA is not set
# CONFIG_NET_PCI is not set
# CONFIG_NET_POCKET is not set
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+# CONFIG_MYRI_SBUS is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
# CONFIG_ISO9660_FS is not set
# CONFIG_JOLIET is not set
# CONFIG_MINIX_FS is not set
+# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_EXT2_FS=y
# CONFIG_SYSV_FS is not set
-# CONFIG_SYSV_FS_WRITE is not set
# CONFIG_UDF_FS is not set
# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set
#
# CONFIG_USB is not set
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
#
# Kernel hacking
#
# CONFIG_8xx is not set
# CONFIG_8260 is not set
CONFIG_ALL_PPC=y
-# CONFIG_GEMINI is not set
# CONFIG_APUS is not set
+# CONFIG_GEMINI is not set
CONFIG_PPC601_SYNC_FIX=y
# CONFIG_SMP is not set
CONFIG_ALTIVEC=y
# CONFIG_SCSI_AHA152X is not set
# CONFIG_SCSI_AHA1542 is not set
# CONFIG_SCSI_AHA1740 is not set
-CONFIG_SCSI_AIC7XXX=y
+CONFIG_SCSI_AIC7XXX=m
CONFIG_AIC7XXX_CMDS_PER_DEVICE=253
CONFIG_AIC7XXX_RESET_DELAY_MS=15000
-# CONFIG_SCSI_AIC7XXX_OLD is not set
+# CONFIG_AIC7XXX_BUILD_FIRMWARE is not set
+CONFIG_SCSI_AIC7XXX_OLD=m
+# CONFIG_AIC7XXX_OLD_TCQ_ON_BY_DEFAULT is not set
+CONFIG_AIC7XXX_OLD_CMDS_PER_DEVICE=8
+CONFIG_AIC7XXX_OLD_PROC_STATS=y
# CONFIG_SCSI_ADVANSYS is not set
# CONFIG_SCSI_IN2000 is not set
# CONFIG_SCSI_AM53C974 is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_ETHERTAP is not set
-# CONFIG_NET_SB1000 is not set
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
+# CONFIG_ARM_AM79C961A is not set
CONFIG_MACE=y
# CONFIG_MACE_AAUI_PORT is not set
CONFIG_BMAC=y
CONFIG_GMAC=y
# CONFIG_NCR885E is not set
# CONFIG_OAKNET is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_HAPPYMEAL is not set
+# CONFIG_SUNBMAC is not set
+# CONFIG_SUNQE is not set
+# CONFIG_SUNLANCE is not set
+# CONFIG_SUNGEM is not set
# CONFIG_NET_VENDOR_3COM is not set
# CONFIG_LANCE is not set
# CONFIG_NET_VENDOR_SMC is not set
# CONFIG_NET_VENDOR_RACAL is not set
-# CONFIG_AT1700 is not set
-# CONFIG_DEPCA is not set
# CONFIG_HP100 is not set
# CONFIG_NET_ISA is not set
CONFIG_NET_PCI=y
# CONFIG_APRICOT is not set
# CONFIG_CS89x0 is not set
CONFIG_TULIP=y
+# CONFIG_TULIP_MWI is not set
+CONFIG_TULIP_MMIO=y
CONFIG_DE4X5=m
# CONFIG_DGRS is not set
# CONFIG_DM9102 is not set
# CONFIG_EEPRO100 is not set
-# CONFIG_EEPRO100_PM is not set
# CONFIG_LNE390 is not set
+# CONFIG_FEALNX is not set
# CONFIG_NATSEMI is not set
# CONFIG_NE2K_PCI is not set
# CONFIG_NE3210 is not set
# CONFIG_TLAN is not set
# CONFIG_VIA_RHINE is not set
# CONFIG_WINBOND_840 is not set
-# CONFIG_HAPPYMEAL is not set
# CONFIG_NET_POCKET is not set
#
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
+# CONFIG_ACENIC_OMIT_TIGON_I is not set
+# CONFIG_MYRI_SBUS is not set
# CONFIG_HAMACHI is not set
# CONFIG_YELLOWFIN is not set
# CONFIG_SK98LIN is not set
# CONFIG_FDDI is not set
# CONFIG_HIPPI is not set
+# CONFIG_PLIP is not set
CONFIG_PPP=y
CONFIG_PPP_MULTILINK=y
# CONFIG_PPP_FILTER is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
+# CONFIG_SONYPI is not set
#
# Ftape, the floppy tape device driver
CONFIG_ISO9660_FS=y
# CONFIG_JOLIET is not set
# CONFIG_MINIX_FS is not set
+# CONFIG_VXFS_FS is not set
# CONFIG_NTFS_FS is not set
# CONFIG_NTFS_RW is not set
# CONFIG_HPFS_FS is not set
# CONFIG_ROMFS_FS is not set
CONFIG_EXT2_FS=y
# CONFIG_SYSV_FS is not set
-# CONFIG_SYSV_FS_WRITE is not set
# CONFIG_UDF_FS is not set
# CONFIG_UDF_RW is not set
# CONFIG_UFS_FS is not set
# CONFIG_SOUND_MSNDCLAS is not set
# CONFIG_SOUND_MSNDPIN is not set
# CONFIG_SOUND_VIA82CXXX is not set
+# CONFIG_MIDI_VIA82CXXX is not set
# CONFIG_SOUND_OSS is not set
# CONFIG_SOUND_TVMIXER is not set
#
# CONFIG_USB_IBMCAM is not set
# CONFIG_USB_OV511 is not set
+# CONFIG_USB_PWC is not set
+# CONFIG_USB_SE401 is not set
# CONFIG_USB_DSBR is not set
# CONFIG_USB_DABUSB is not set
#
# CONFIG_USB_PLUSB is not set
# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_CATC is not set
# CONFIG_USB_NET1080 is not set
#
# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
# CONFIG_USB_SERIAL_KEYSPAN is not set
# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_PL2303 is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
# CONFIG_USB_SERIAL_OMNINET is not set
#
#
# CONFIG_USB_RIO500 is not set
+#
+# Bluetooth support
+#
+# CONFIG_BLUEZ is not set
+
#
# Kernel hacking
#
-# BK Id: SCCS/s.Makefile 1.22 06/28/01 08:01:06 trini
+# BK Id: SCCS/s.Makefile 1.24 07/10/01 12:12:22 trini
#
#
# Makefile for the linux kernel.
include $(TOPDIR)/Rules.make
entry.o: entry.S ppc_defs.h
+misc.o: misc.S ppc_defs.h
head.o: head.S ppc_defs.h
head_4xx.o: head_4xx.S ppc_defs.h
head_8xx.o: head_8xx.S ppc_defs.h
+gemini_prom.o: gemini_prom.S ppc_defs.h
ppc_defs.h: mk_defs.c ppc_defs.head \
$(TOPDIR)/include/asm/mmu.h \
/*
- * BK Id: SCCS/s.chrp_setup.c 1.20 06/05/01 21:22:02 paulus
+ * BK Id: SCCS/s.chrp_setup.c 1.22 07/18/01 22:56:39 paulus
*/
/*
* linux/arch/ppc/kernel/setup.c
extern int bootx_text_mapped;
static int max_width;
-unsigned long empty_zero_page[1024];
-
static const char *gg2_memtypes[4] = {
"FPM", "SDRAM", "EDO", "BEDO"
};
/*
- * BK Id: SCCS/s.m8260_setup.c 1.15 05/17/01 18:14:21 cort
+ * BK Id: SCCS/s.m8260_setup.c 1.20 07/18/01 22:56:39 paulus
*/
/*
* linux/arch/ppc/kernel/setup.c
extern unsigned long loops_per_jiffy;
unsigned char __res[sizeof(bd_t)];
-unsigned long empty_zero_page[1024];
extern char saved_command_line[256];
/*
- * BK Id: SCCS/s.m8xx_setup.c 1.20 06/27/01 14:49:58 trini
+ * BK Id: SCCS/s.m8xx_setup.c 1.23 07/18/01 22:56:39 paulus
*/
/*
* linux/arch/ppc/kernel/setup.c
void m8xx_calibrate_decr(void);
unsigned char __res[sizeof(bd_t)];
-unsigned long empty_zero_page[1024];
#if defined(CONFIG_BLK_DEV_IDE) || defined(CONFIG_BLK_DEV_IDE_MODULE)
#ifdef CONFIG_BLK_DEV_MPC8xx_IDE
return(0);
}
-unsigned long __init
+unsigned long
m8xx_get_rtc_time(void)
{
/* Get time from the RTC.
/*
- * BK Id: SCCS/s.prep_setup.c 1.20 05/21/01 09:19:50 trini
+ * BK Id: SCCS/s.prep_setup.c 1.23 07/18/01 22:56:39 paulus
*/
/*
* linux/arch/ppc/kernel/setup.c
kdev_t boot_dev;
/* used in nasty hack for sound - see prep_setup_arch() -- Cort */
long ppc_cs4232_dma, ppc_cs4232_dma2;
-unsigned long empty_zero_page[1024];
extern PTE *Hash, *Hash_end;
extern unsigned long Hash_size, Hash_mask;
MODULE_PARM(parport, "1-" __MODULE_STRING(LP_NO) "s");
MODULE_PARM(reset, "i");
+#ifndef MODULE
static int __init lp_setup (char *str)
{
static int parport_ptr; // initially zero
}
return 1;
}
+#endif
static int lp_register(int nr, struct parport *port)
{
/*
- * $Id: b1dma.c,v 1.11.6.6 2001/05/17 21:15:33 kai Exp $
+ * $Id: b1dma.c,v 1.11.6.7 2001/07/18 16:02:15 kai Exp $
*
* Common module for AVM B1 cards that support dma with AMCC
*
#error FIXME: driver requires 32-bit platform
#endif
-static char *revision = "$Revision: 1.11.6.6 $";
+static char *revision = "$Revision: 1.11.6.7 $";
/* ------------------------------------------------------------- */
-/* $Id: asuscom.c,v 1.11.6.1 2001/02/16 16:43:25 kai Exp $
+/* $Id: asuscom.c,v 1.11.6.2 2001/07/13 09:20:12 kai Exp $
*
* asuscom.c low level stuff for ASUSCOM NETWORK INC. ISDNLink cards
*
extern const char *CardType[];
-const char *Asuscom_revision = "$Revision: 1.11.6.1 $";
+const char *Asuscom_revision = "$Revision: 1.11.6.2 $";
#define byteout(addr,val) outb(val,addr)
#define bytein(addr) inb(addr)
cs->cardmsg = &Asus_card_msg;
val = readreg(cs->hw.asus.cfg_reg + ASUS_IPAC_ALE,
cs->hw.asus.cfg_reg + ASUS_IPAC_DATA, IPAC_ID);
- if (val == 1) {
+ if ((val == 1) || (val == 2)) {
cs->subtyp = ASUS_IPAC;
cs->hw.asus.adr = cs->hw.asus.cfg_reg + ASUS_IPAC_ALE;
cs->hw.asus.isac = cs->hw.asus.cfg_reg + ASUS_IPAC_DATA;
-/* $Id: bkm_a4t.c,v 1.13.6.4 2001/02/16 16:43:25 kai Exp $
+/* $Id: bkm_a4t.c,v 1.13.6.5 2001/07/18 16:02:15 kai Exp $
* bkm_a4t.c low level stuff for T-Berkom A4T
* derived from the original file sedlbauer.c
* derived from the original file niccy.c
extern const char *CardType[];
-const char *bkm_a4t_revision = "$Revision: 1.13.6.4 $";
+const char *bkm_a4t_revision = "$Revision: 1.13.6.5 $";
static inline u_char
-/* $Id: bkm_a8.c,v 1.14.6.5 2001/04/15 14:51:09 keil Exp $
+/* $Id: bkm_a8.c,v 1.14.6.6 2001/07/18 16:02:15 kai Exp $
* bkm_a8.c low level stuff for Scitel Quadro (4*S0, passive)
* derived from the original file sedlbauer.c
* derived from the original file niccy.c
extern const char *CardType[];
-const char sct_quadro_revision[] = "$Revision: 1.14.6.5 $";
+const char sct_quadro_revision[] = "$Revision: 1.14.6.6 $";
static const char *sct_quadro_subtypes[] =
{
-/* $Id: config.c,v 2.57.6.15 2001/06/09 15:14:17 kai Exp $
+/* $Id: config.c,v 2.57.6.16 2001/07/13 09:01:00 kai Exp $
*
* Author Karsten Keil (keil@isdn4linux.de)
* based on the teles driver from Jan den Ouden
-/* $Id: elsa.c,v 2.26.6.3 2001/02/16 16:43:25 kai Exp $
+/* $Id: elsa.c,v 2.26.6.5 2001/07/18 16:25:12 kai Exp $
*
* elsa.c low level stuff for Elsa isdn cards
*
extern const char *CardType[];
-const char *Elsa_revision = "$Revision: 2.26.6.3 $";
+const char *Elsa_revision = "$Revision: 2.26.6.5 $";
const char *Elsa_Types[] =
{"None", "PC", "PCC-8", "PCC-16", "PCF", "PCF-Pro",
"PCMCIA", "QS 1000", "QS 3000", "Microlink PCI", "QS 3000 PCI",
if (!(cs->subtyp = probe_elsa_adr(cs->hw.elsa.base,
cs->typ))) {
printk(KERN_WARNING
- "Elsa: no Elsa Microlink at 0x%x\n",
+ "Elsa: no Elsa Microlink at %#lx\n",
cs->hw.elsa.base);
return (0);
}
if ((cs->subtyp == ELSA_PCFPRO) && (val = 'G'))
val = 'C';
printk(KERN_INFO
- "Elsa: %s found at 0x%x Rev.:%c IRQ %d\n",
+ "Elsa: %s found at %#lx Rev.:%c IRQ %d\n",
Elsa_Types[cs->subtyp],
cs->hw.elsa.base,
val, cs->irq);
cs->hw.elsa.timer = cs->hw.elsa.base + ELSA_START_TIMER;
cs->hw.elsa.ctrl = cs->hw.elsa.base + ELSA_CONTROL;
printk(KERN_INFO
- "Elsa: %s defined at 0x%x IRQ %d\n",
+ "Elsa: %s defined at %#lx IRQ %d\n",
Elsa_Types[cs->subtyp],
cs->hw.elsa.base,
cs->irq);
cs->hw.elsa.trig = 0;
cs->hw.elsa.ctrl = 0;
printk(KERN_INFO
- "Elsa: %s defined at 0x%x IRQ %d\n",
+ "Elsa: %s defined at %#lx IRQ %d\n",
Elsa_Types[cs->subtyp],
cs->hw.elsa.base,
cs->irq);
cs->hw.elsa.trig = 0;
cs->irq_flags |= SA_SHIRQ;
printk(KERN_INFO
- "Elsa: %s defined at 0x%x/0x%x IRQ %d\n",
+ "Elsa: %s defined at %#lx/0x%x IRQ %d\n",
Elsa_Types[cs->subtyp],
cs->hw.elsa.base,
cs->hw.elsa.cfg,
here, it would fail. */
if (cs->typ != ISDN_CTYPE_ELSA_PCMCIA && check_region(cs->hw.elsa.base, bytecnt)) {
printk(KERN_WARNING
- "HiSax: %s config port %x-%x already in use\n",
+ "HiSax: %s config port %#lx-%#lx already in use\n",
CardType[card->typ],
cs->hw.elsa.base,
cs->hw.elsa.base + bytecnt);
-/* $Id: hfc_sx.c,v 1.9.6.1 2001/06/09 15:14:17 kai Exp $
+/* $Id: hfc_sx.c,v 1.9.6.2 2001/07/18 16:25:12 kai Exp $
* hfc_sx.c low level driver for CCD´s hfc-s+/sp based cards
*
extern const char *CardType[];
-static const char *hfcsx_revision = "$Revision: 1.9.6.1 $";
+static const char *hfcsx_revision = "$Revision: 1.9.6.2 $";
/***************************************/
/* IRQ-table for CCDs demo board */
if ((!cs->hw.hfcsx.base) ||
check_region((cs->hw.hfcsx.base), 2)) {
printk(KERN_WARNING
- "HiSax: HFC-SX io-base 0x%x already in use\n",
+ "HiSax: HFC-SX io-base %#lx already in use\n",
cs->hw.hfcsx.base);
return(0);
} else {
-/* $Id: hisax.h,v 2.52.6.6 2001/06/09 15:14:17 kai Exp $
+/* $Id: hisax.h,v 2.52.6.7 2001/07/18 16:02:15 kai Exp $
*
* Basic declarations, defines and prototypes
*
-// $Id: nj_s.c,v 2.7.6.4 2001/02/16 16:43:28 kai Exp $
+// $Id: nj_s.c,v 2.7.6.5 2001/07/18 16:25:12 kai Exp $
//
// This file is (c) under GNU General Public License
//
#include <linux/ppp_defs.h>
#include "netjet.h"
-const char *NETjet_S_revision = "$Revision: 2.7.6.4 $";
+const char *NETjet_S_revision = "$Revision: 2.7.6.5 $";
static u_char dummyrr(struct IsdnCardState *cs, int chan, u_char off)
{
bytecnt = 256;
printk(KERN_INFO
- "NETjet-S: PCI card configured at 0x%x IRQ %d\n",
+ "NETjet-S: PCI card configured at %#lx IRQ %d\n",
cs->hw.njet.base, cs->irq);
if (check_region(cs->hw.njet.base, bytecnt)) {
printk(KERN_WARNING
- "HiSax: %s config port %x-%x already in use\n",
+ "HiSax: %s config port %#lx-%#lx already in use\n",
CardType[card->typ],
cs->hw.njet.base,
cs->hw.njet.base + bytecnt);
-/* $Id: nj_u.c,v 2.8.6.4 2001/02/16 16:43:28 kai Exp $
+/* $Id: nj_u.c,v 2.8.6.5 2001/07/18 16:25:12 kai Exp $
*
* This file is (c) under GNU General Public License
*
#include <linux/ppp_defs.h>
#include "netjet.h"
-const char *NETjet_U_revision = "$Revision: 2.8.6.4 $";
+const char *NETjet_U_revision = "$Revision: 2.8.6.5 $";
static u_char dummyrr(struct IsdnCardState *cs, int chan, u_char off)
{
bytecnt = 256;
printk(KERN_INFO
- "NETspider-U: PCI card configured at 0x%x IRQ %d\n",
+ "NETspider-U: PCI card configured at %#lx IRQ %d\n",
cs->hw.njet.base, cs->irq);
if (check_region(cs->hw.njet.base, bytecnt)) {
printk(KERN_WARNING
- "HiSax: %s config port %x-%x already in use\n",
+ "HiSax: %s config port %#lx-%#lx already in use\n",
CardType[card->typ],
cs->hw.njet.base,
cs->hw.njet.base + bytecnt);
-/* $Id: sedlbauer.c,v 1.25.6.4 2001/02/16 16:43:29 kai Exp $
+/* $Id: sedlbauer.c,v 1.25.6.5 2001/07/13 09:20:12 kai Exp $
*
* sedlbauer.c low level stuff for Sedlbauer cards
* includes support for the Sedlbauer speed star (speed star II),
* Speed Win2 IPAC ISAPNP
* ISDN PC/104 IPAC DIP-SWITCH
* Speed Star2 IPAC CARDMGR
- * Speed PCI IPAC PCI PNP
+ * Speed PCI IPAC PCI PNP
* Speed Fax+ ISAC_ISAR PCI PNP Full analog support
*
* Important:
- * For the sedlbauer speed fax+ to work properly you have to download
+ * For the sedlbauer speed fax+ to work properly you have to download
* the firmware onto the card.
* For example: hisaxctrl <DriverID> 9 ISAR.BIN
*/
extern const char *CardType[];
-const char *Sedlbauer_revision = "$Revision: 1.25.6.4 $";
+const char *Sedlbauer_revision = "$Revision: 1.25.6.5 $";
const char *Sedlbauer_Types[] =
- {"None", "speed card/win", "speed star", "speed fax+",
+ {"None", "speed card/win", "speed star", "speed fax+",
"speed win II / ISDN PC/104", "speed star II", "speed pci",
"speed fax+ pyramid", "speed fax+ pci"};
#define PCI_SUBVENDOR_SEDLBAUER_PCI 0x53
#define PCI_SUBVENDOR_SPEEDFAX_PCI 0x54
#define PCI_SUB_ID_SEDLBAUER 0x01
-
+
#define SEDL_SPEED_CARD_WIN 1
#define SEDL_SPEED_STAR 2
#define SEDL_SPEED_FAX 3
* mode = 1 access with IRQ off
* mode = 2 access with IRQ off and using last offset
*/
-
+
static u_char
ReadISAR(struct IsdnCardState *cs, int mode, u_char offset)
{
causing us to just crash the kernel. bad. */
printk(KERN_WARNING "Sedlbauer: card not available!\n");
return;
- }
+ }
val = readreg(cs->hw.sedl.adr, cs->hw.sedl.hscx, HSCX_ISTA + 0x40);
Start_HSCX:
#endif /* CONFIG_PCI */
}
- /* In case of the sedlbauer pcmcia card, this region is in use,
- reserved for us by the card manager. So we do not check it
- here, it would fail. */
+ /* In case of the sedlbauer pcmcia card, this region is in use,
+ * reserved for us by the card manager. So we do not check it
+ * here, it would fail.
+ */
if (cs->hw.sedl.bus != SEDL_BUS_PCMCIA &&
check_region((cs->hw.sedl.cfg_reg), bytecnt)) {
printk(KERN_WARNING
cs->cardmsg = &Sedl_card_msg;
/*
- * testing ISA and PCMCIA Cards for IPAC, default is ISAC
+ * testing ISA and PCMCIA Cards for IPAC, default is ISAC
* do not test for PCI card, because ports are different
* and PCI card uses only IPAC (for the moment)
*/
if (cs->hw.sedl.bus != SEDL_BUS_PCI) {
val = readreg(cs->hw.sedl.cfg_reg + SEDL_IPAC_ANY_ADR,
- cs->hw.sedl.cfg_reg + SEDL_IPAC_ANY_IPAC, IPAC_ID);
- if (val == 1) {
- /* IPAC */
- cs->subtyp = SEDL_SPEED_WIN2_PC104;
+ cs->hw.sedl.cfg_reg + SEDL_IPAC_ANY_IPAC, IPAC_ID);
+ printk(KERN_DEBUG "Sedlbauer: testing IPAC version %x\n", val);
+ if ((val == 1) || (val == 2)) {
+ /* IPAC */
+ cs->subtyp = SEDL_SPEED_WIN2_PC104;
if (cs->hw.sedl.bus == SEDL_BUS_PCMCIA) {
cs->subtyp = SEDL_SPEED_STAR2;
}
cs->hw.sedl.chip = SEDL_CHIP_IPAC;
} else {
- /* ISAC_HSCX oder ISAC_ISAR */
+ /* ISAC_HSCX oder ISAC_ISAR */
if (cs->hw.sedl.chip == SEDL_CHIP_TEST) {
cs->hw.sedl.chip = SEDL_CHIP_ISAC_HSCX;
}
if (cs->hw.sedl.chip == SEDL_CHIP_IPAC) {
if (cs->hw.sedl.bus == SEDL_BUS_PCI) {
cs->hw.sedl.adr = cs->hw.sedl.cfg_reg + SEDL_IPAC_PCI_ADR;
- cs->hw.sedl.isac = cs->hw.sedl.cfg_reg + SEDL_IPAC_PCI_IPAC;
- cs->hw.sedl.hscx = cs->hw.sedl.cfg_reg + SEDL_IPAC_PCI_IPAC;
+ cs->hw.sedl.isac = cs->hw.sedl.cfg_reg + SEDL_IPAC_PCI_IPAC;
+ cs->hw.sedl.hscx = cs->hw.sedl.cfg_reg + SEDL_IPAC_PCI_IPAC;
} else {
cs->hw.sedl.adr = cs->hw.sedl.cfg_reg + SEDL_IPAC_ANY_ADR;
- cs->hw.sedl.isac = cs->hw.sedl.cfg_reg + SEDL_IPAC_ANY_IPAC;
- cs->hw.sedl.hscx = cs->hw.sedl.cfg_reg + SEDL_IPAC_ANY_IPAC;
+ cs->hw.sedl.isac = cs->hw.sedl.cfg_reg + SEDL_IPAC_ANY_IPAC;
+ cs->hw.sedl.hscx = cs->hw.sedl.cfg_reg + SEDL_IPAC_ANY_IPAC;
}
- test_and_set_bit(HW_IPAC, &cs->HW_Flags);
- cs->readisac = &ReadISAC_IPAC;
- cs->writeisac = &WriteISAC_IPAC;
- cs->readisacfifo = &ReadISACfifo_IPAC;
- cs->writeisacfifo = &WriteISACfifo_IPAC;
- cs->irq_func = &sedlbauer_interrupt_ipac;
+ test_and_set_bit(HW_IPAC, &cs->HW_Flags);
+ cs->readisac = &ReadISAC_IPAC;
+ cs->writeisac = &WriteISAC_IPAC;
+ cs->readisacfifo = &ReadISACfifo_IPAC;
+ cs->writeisacfifo = &WriteISACfifo_IPAC;
+ cs->irq_func = &sedlbauer_interrupt_ipac;
val = readreg(cs->hw.sedl.adr, cs->hw.sedl.isac, IPAC_ID);
- printk(KERN_INFO "Sedlbauer: IPAC version %x\n", val);
+ printk(KERN_INFO "Sedlbauer: IPAC version %x\n", val);
reset_sedlbauer(cs);
} else {
- /* ISAC_HSCX oder ISAC_ISAR */
+ /* ISAC_HSCX oder ISAC_ISAR */
cs->readisac = &ReadISAC;
cs->writeisac = &WriteISAC;
cs->readisacfifo = &ReadISACfifo;
-/* $Id: boardergo.c,v 1.5.6.4 2001/04/20 02:42:00 keil Exp $
+/* $Id: boardergo.c,v 1.5.6.5 2001/07/18 16:02:16 kai Exp $
* Linux driver for HYSDN cards, specific routines for ergo type boards.
*
-/* $Id: tpam_main.c,v 1.1.2.1 2001/06/05 19:45:37 kai Exp $
+/* $Id: tpam_main.c,v 1.1.2.2 2001/07/11 12:22:59 kai Exp $
*
* Turbo PAM ISDN driver for Linux. (Kernel Driver - main routines)
*
card->interface.features =
ISDN_FEATURE_P_EURO |
ISDN_FEATURE_L2_HDLC |
- ISDN_FEATURE_L2_MODEM;
+ ISDN_FEATURE_L2_MODEM |
+ ISDN_FEATURE_L3_TRANS;
card->interface.hl_hdrlen = 0;
card->interface.command = tpam_command;
card->interface.writebuf_skb = tpam_writebuf_skb;
PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE2_GTS },
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE2_GTS2,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE2_GTS },
+ { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_GEFORCE2_ULTRA,
+ PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_GEFORCE2_ULTRA },
{ PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_QUADRO2_PRO,
PCI_ANY_ID, PCI_ANY_ID, 0, 0, CH_QUADRO2_PRO },
{ 0, } /* terminate list */
#define BH_ENTRY(list) list_entry((list), struct buffer_head, b_inode_buffers)
-static inline void get_bh(struct buffer_head * bh)
-{
- atomic_inc(&(bh)->b_count);
-}
-
-static inline void put_bh(struct buffer_head *bh)
-{
- smp_mb__before_atomic_dec();
- atomic_dec(&bh->b_count);
-}
-
/*
* Hash table gook..
*/
static int __init bdflush_init(void)
{
- static DECLARE_COMPLETION(startup);
+ static struct completion startup __initdata = COMPLETION_INITIALIZER(startup);
kernel_thread(bdflush, &startup, CLONE_FS | CLONE_FILES | CLONE_SIGNAL);
wait_for_completion(&startup);
// user space buffer is swapped out. At that time
// entry can move to somewhere else
memcpy (local_buf, d_name, d_reclen);
- if (filldir (dirent, d_name, d_reclen, d_off, d_ino,
+ if (filldir (dirent, local_buf, d_reclen, d_off, d_ino,
DT_UNKNOWN) < 0) {
if (local_buf != small_buf) {
kfree(local_buf) ;
next_pos = deh_offset (deh) + 1;
if (item_moved (&tmp_ih, &path_to_entry)) {
- reiserfs_warning ("vs-9020: reiserfs_readdir "
- "things are moving under hands. Researching..\n");
goto research;
}
} /* for */
delimiting key check is it directory end */
rkey = get_rkey (&path_to_entry, inode->i_sb);
if (! comp_le_keys (rkey, &MIN_KEY)) {
-#ifdef CONFIG_REISERFS_CHECK
- reiserfs_warning ("vs-9025: reiserfs_readdir:"
- "get_rkey failed. Researching..\n");
-#endif
/* set pos_key to key, that is the smallest and greater
that key of the last entry in the item */
set_cpu_key_k_offset (&pos_key, next_pos);
for (i = 0; i < sizeof (tb->thrown)/sizeof (tb->thrown[0]); i ++)
if (!tb->thrown[i]) {
tb->thrown[i] = bh;
- atomic_inc(&bh->b_count) ; /* decremented in free_thrown */
+ get_bh(bh) ; /* free_thrown puts this */
return;
}
reiserfs_warning ("store_thrown: too many thrown buffers\n");
left, left);
}
#endif
- atomic_dec (&(left->b_count));
+ put_bh(left) ;
return 1;
}
n_first_last_position = B_NR_ITEMS (p_s_parent);
if ( n_position != n_first_last_position ) {
*pp_s_com_father = p_s_parent;
- atomic_inc (&((*pp_s_com_father)->b_count));
+ get_bh(*pp_s_com_father) ;
/*(*pp_s_com_father = p_s_parent)->b_count++;*/
break;
}
/* Current node is not the first child of its parent. */
/*(p_s_curf = p_s_curcf = PATH_OFFSET_PBUFFER(p_s_path, n_path_offset - 1))->b_count += 2;*/
p_s_curf = p_s_curcf = PATH_OFFSET_PBUFFER(p_s_path, n_path_offset - 1);
- atomic_inc (&(p_s_curf->b_count));
- atomic_inc (&(p_s_curf->b_count));
+ get_bh(p_s_curf) ;
+ get_bh(p_s_curf) ;
p_s_tb->lkey[n_h] = n_position - 1;
}
else {
/* Current node is not the last child of its parent F[n_h]. */
/*(p_s_curf = p_s_curcf = PATH_OFFSET_PBUFFER(p_s_path, n_path_offset - 1))->b_count += 2;*/
p_s_curf = p_s_curcf = PATH_OFFSET_PBUFFER(p_s_path, n_path_offset - 1);
- atomic_inc (&(p_s_curf->b_count));
- atomic_inc (&(p_s_curf->b_count));
+ get_bh(p_s_curf) ;
+ get_bh(p_s_curf) ;
p_s_tb->rkey[n_h] = n_position;
}
windex = push_journal_writer("delete_inode") ;
reiserfs_delete_object (&th, inode);
- reiserfs_remove_page_from_flush_list(&th, inode) ;
pop_journal_writer(windex) ;
reiserfs_release_objectid (&th, inode->i_ino);
ih->u.ih_entry_count = cpu_to_le16 (entry_count);
}
+static void add_to_flushlist(struct inode *inode, struct buffer_head *bh) {
+ struct inode *jinode = &(SB_JOURNAL(inode->i_sb)->j_dummy_inode) ;
+
+ buffer_insert_inode_queue(bh, jinode) ;
+}
//
// FIXME: we might cache recently accessed indirect item (or at least
** --chris
*/
-/* people who call journal_begin with a page locked must call this
-** BEFORE calling journal_begin
-*/
-static int prevent_flush_page_lock(struct page *page,
- struct inode *inode) {
- struct reiserfs_page_list *pl ;
- struct super_block *s = inode->i_sb ;
- /* we don't care if the inode has a stale pointer from an old
- ** transaction
- */
- if(!page || inode->u.reiserfs_i.i_conversion_trans_id != SB_JOURNAL(s)->j_trans_id) {
- return 0 ;
- }
- pl = inode->u.reiserfs_i.i_converted_page ;
- if (pl && pl->page == page) {
- pl->do_not_lock = 1 ;
- }
- /* this last part is really important. The address space operations have
- ** the page locked before they call the journal functions. So it is possible
- ** for one process to be waiting in flush_pages_before_commit for a
- ** page, then for the process with the page locked to call journal_begin.
- **
- ** We'll deadlock because the process flushing pages will never notice
- ** the process with the page locked has called prevent_flush_page_lock.
- ** So, we wake up the page waiters, even though the page is still locked.
- ** The process waiting in flush_pages_before_commit must check the
- ** pl->do_not_lock flag, and stop trying to lock the page.
- */
- wake_up(&page->wait) ;
- return 0 ;
-
-}
-/* people who call journal_end with a page locked must call this
-** AFTER calling journal_end
-*/
-static int allow_flush_page_lock(struct page *page,
- struct inode *inode) {
-
- struct reiserfs_page_list *pl ;
- struct super_block *s = inode->i_sb ;
- /* we don't care if the inode has a stale pointer from an old
- ** transaction
- */
- if(!page || inode->u.reiserfs_i.i_conversion_trans_id != SB_JOURNAL(s)->j_trans_id) {
- return 0 ;
- }
- pl = inode->u.reiserfs_i.i_converted_page ;
- if (pl && pl->page == page) {
- pl->do_not_lock = 0 ;
- }
- return 0 ;
-
-}
-
/* If this page has a file tail in it, and
** it was read in by get_block_create_0, the page data is valid,
** but tail is still sitting in a direct item, and we can't write to
}
//
- bh = get_bh (&path);
+ bh = get_last_bh (&path);
ih = get_ih (&path);
if (is_indirect_le_ih (ih)) {
__u32 * ind_item = (__u32 *)B_I_PITEM (bh, ih);
if (search_for_position_by_key (inode->i_sb, &key, &path) != POSITION_FOUND)
// we read something from tail, even if now we got IO_ERROR
break;
- bh = get_bh (&path);
+ bh = get_last_bh (&path);
ih = get_ih (&path);
} while (1);
return -EIO;
}
- prevent_flush_page_lock(bh_result->b_page, inode) ;
inode->u.reiserfs_i.i_pack_on_close = 1 ;
windex = push_journal_writer("reiserfs_get_block") ;
goto failure;
}
- bh = get_bh (&path);
+ bh = get_last_bh (&path);
ih = get_ih (&path);
item = get_item (&path);
pos_in_item = path.pos_in_item;
if (transaction_started)
journal_end(&th, inode->i_sb, jbegin_count) ;
- allow_flush_page_lock(bh_result->b_page, inode) ;
unlock_kernel() ;
/* the item was found, so new blocks were not added to the file
/* we've converted the tail, so we must
** flush unbh before the transaction commits
*/
- reiserfs_add_page_to_flush_list(&th, inode, unbh) ;
- mark_buffer_dirty(unbh) ;
+ add_to_flushlist(inode, unbh) ;
+
+ /* mark it dirty now to prevent commit_write from adding
+ ** this buffer to the inode's dirty buffer list
+ */
+ __mark_buffer_dirty(unbh) ;
//inode->i_blocks += inode->i_sb->s_blocksize / 512;
//mark_tail_converted (inode);
pathrelse(&path) ;
goto failure;
}
- bh = get_bh (&path);
+ bh = get_last_bh (&path);
ih = get_ih (&path);
item = get_item (&path);
pos_in_item = path.pos_in_item;
journal_end(&th, inode->i_sb, jbegin_count) ;
}
pop_journal_writer(windex) ;
- allow_flush_page_lock(bh_result->b_page, inode) ;
unlock_kernel() ;
reiserfs_check_path(&path) ;
return retval;
copy_key (INODE_PKEY (inode), &(ih->ih_key));
- inode->i_generation = INODE_PKEY (inode)->k_dir_id;
inode->i_blksize = PAGE_SIZE;
INIT_LIST_HEAD(&inode->u.reiserfs_i.i_prealloc_list) ;
inode->i_ctime = le32_to_cpu (sd->sd_ctime);
inode->i_blocks = le32_to_cpu (sd->u.sd_blocks);
+ inode->i_generation = INODE_PKEY (inode)->k_dir_id;
blocks = (inode->i_size + 511) >> 9;
blocks = _ROUND_UP (blocks, inode->i_blksize >> 9);
if (inode->i_blocks > blocks) {
inode->i_ctime = le32_to_cpu (sd->sd_ctime);
inode->i_blocks = le32_to_cpu (sd->sd_blocks);
rdev = le32_to_cpu (sd->u.sd_rdev);
+ if( S_ISCHR( inode -> i_mode ) || S_ISBLK( inode -> i_mode ) )
+ inode->i_generation = INODE_PKEY (inode)->k_dir_id;
+ else
+ inode->i_generation = le32_to_cpu( sd->u.sd_generation );
}
/* nopack = 0, by default */
sd_v2->sd_atime = cpu_to_le32 (inode->i_atime);
sd_v2->sd_ctime = cpu_to_le32 (inode->i_ctime);
sd_v2->sd_blocks = cpu_to_le32 (inode->i_blocks);
- if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode))
+ if (S_ISCHR(inode->i_mode) || S_ISBLK(inode->i_mode)) {
sd_v2->u.sd_rdev = cpu_to_le32 (inode->i_rdev);
+ } else {
+ sd_v2->u.sd_generation = cpu_to_le32( inode -> i_generation );
+ }
}
** FS might change. We have to detect that, and loop back to the
** search if the stat data item has moved
*/
- bh = get_bh(&path) ;
+ bh = get_last_bh(&path) ;
ih = get_ih(&path) ;
copy_item_head (&tmp_ih, ih);
fs_gen = get_generation (inode->i_sb);
key.on_disk_key.k_objectid = data[0] ;
key.on_disk_key.k_dir_id = data[1] ;
inode = reiserfs_iget(sb, &key) ;
+ if (inode && (fhtype == 3 || fhtype == 6) &&
+ data[2] != inode->i_generation) {
+ iput(inode) ;
+ inode = NULL ;
+ }
} else {
- key.on_disk_key.k_objectid = data[2] ;
- key.on_disk_key.k_dir_id = data[3] ;
+ key.on_disk_key.k_objectid = data[fhtype==6?3:2] ;
+ key.on_disk_key.k_dir_id = data[fhtype==6?4:3] ;
inode = reiserfs_iget(sb, &key) ;
+ if (inode && fhtype == 6 &&
+ data[5] != inode->i_generation) {
+ iput(inode) ;
+ inode = NULL ;
+ }
}
out:
if (!inode)
struct inode *inode = dentry->d_inode ;
int maxlen = *lenp;
- if (maxlen < 2)
+ if (maxlen < 3)
return 255 ;
data[0] = inode->i_ino ;
data[1] = le32_to_cpu(INODE_PKEY (inode)->k_dir_id) ;
- *lenp = 2;
+ data[2] = inode->i_generation ;
+ *lenp = 3;
/* no room for directory info? return what we've stored so far */
- if (maxlen < 4 || ! need_parent)
- return 2 ;
+ if (maxlen < 6 || ! need_parent)
+ return 3;
inode = dentry->d_parent->d_inode ;
- data[2] = inode->i_ino ;
- data[3] = le32_to_cpu(INODE_PKEY (inode)->k_dir_id) ;
- *lenp = 4;
- return 4;
+ data[3] = inode->i_ino ;
+ data[4] = le32_to_cpu(INODE_PKEY (inode)->k_dir_id) ;
+ data[5] = inode->i_generation ;
+ *lenp = 6;
+ return 6;
}
*err = -ENOMEM;
return NULL;
}
+ if (old_format_only (sb))
+ /* not a perfect generation count, as object ids can be reused, but this
+ ** is as good as reiserfs can do right now.
+ ** note that the private part of inode isn't filled in yet, we have
+ ** to use the directory.
+ */
+ inode->i_generation = INODE_PKEY (dir)->k_objectid;
+ else
+#if defined( USE_INODE_GENERATION_COUNTER )
+ inode->i_generation =
+ le32_to_cpu( sb -> u.reiserfs_sb.s_rs -> s_inode_generation );
+#else
+ inode->i_generation = ++event;
+#endif
if (old_format_only (sb))
make_le_item_head (&ih, 0, ITEM_VERSION_1, SD_OFFSET, TYPE_STAT_DATA, SD_V1_SIZE, MAX_US_INT);
else
return NULL;
}
- /* not a perfect generation count, as object ids can be reused, but this
- ** is as good as reiserfs can do right now
- */
- inode->i_generation = INODE_PKEY (inode)->k_dir_id;
insert_inode_hash (inode);
// we do not mark inode dirty: on disk content matches to the
// in-core one
** because the truncate might pack the item anyway
** (it will unmap bh if it packs).
*/
- prevent_flush_page_lock(page, p_s_inode) ;
journal_begin(&th, p_s_inode->i_sb, JOURNAL_PER_BALANCE_CNT * 2 ) ;
windex = push_journal_writer("reiserfs_vfs_truncate_file") ;
reiserfs_do_truncate (&th, p_s_inode, page, update_timestamps) ;
pop_journal_writer(windex) ;
journal_end(&th, p_s_inode->i_sb, JOURNAL_PER_BALANCE_CNT * 2 ) ;
- allow_flush_page_lock(page, p_s_inode) ;
if (page) {
length = offset & (blocksize - 1) ;
start_over:
lock_kernel() ;
- prevent_flush_page_lock(bh_result->b_page, inode) ;
journal_begin(&th, inode->i_sb, jbegin_count) ;
make_cpu_key(&key, inode, byte_offset, TYPE_ANY, 3) ;
goto out ;
}
- bh = get_bh(&path) ;
+ bh = get_last_bh(&path) ;
ih = get_ih(&path) ;
item = get_item(&path) ;
pos_in_item = path.pos_in_item ;
out:
pathrelse(&path) ;
journal_end(&th, inode->i_sb, jbegin_count) ;
- allow_flush_page_lock(bh_result->b_page, inode) ;
unlock_kernel() ;
/* this is where we fill in holes in the file. */
for(i = 0 ; i < nr ; i++) {
bh = bhp[i] ;
lock_buffer(bh) ;
- atomic_inc(&bh->b_count) ; /* async end_io handler decs this */
+ get_bh(bh) ; /* async end_io handler puts this */
set_buffer_async_io(bh) ;
/* submit_bh doesn't care if the buffer is dirty, but nobody
** later on in the call chain will be cleaning it. So, we
return generic_block_bmap(as, block, reiserfs_bmap) ;
}
+static int reiserfs_commit_write(struct file *f, struct page *page,
+ unsigned from, unsigned to) {
+ struct inode *inode = page->mapping->host;
+ int ret ;
-static int reiserfs_commit_write(struct file *f, struct page *page,
- unsigned from, unsigned to) {
- struct inode *inode = page->mapping->host ;
- int ret ;
- struct reiserfs_transaction_handle th ;
-
reiserfs_wait_on_write_block(inode->i_sb) ;
- lock_kernel();
- prevent_flush_page_lock(page, inode) ;
ret = generic_commit_write(f, page, from, to) ;
+
/* we test for O_SYNC here so we can commit the transaction
** for any packed tails the file might have had
*/
if (f->f_flags & O_SYNC) {
+ struct reiserfs_transaction_handle th ;
+ lock_kernel() ;
journal_begin(&th, inode->i_sb, 1) ;
reiserfs_prepare_for_journal(inode->i_sb,
SB_BUFFER_WITH_SB(inode->i_sb), 1) ;
journal_mark_dirty(&th, inode->i_sb, SB_BUFFER_WITH_SB(inode->i_sb)) ;
journal_end_sync(&th, inode->i_sb, 1) ;
+ unlock_kernel() ;
}
- allow_flush_page_lock(page, inode) ;
- unlock_kernel();
return ret ;
}
static int reiserfs_clean_and_file_buffer(struct buffer_head *bh) {
if (bh) {
clear_bit(BH_Dirty, &bh->b_state) ;
-#if 0
- if (bh->b_list != BUF_CLEAN) {
- reiserfs_file_buffer(bh, BUF_CLEAN) ;
- }
-#endif
+ refile_buffer(bh) ;
}
return 0 ;
}
}
ll_rw_block(WRITE, 1, &tbh) ;
count++ ;
- atomic_dec(&(tbh->b_count)) ; /* once for our get_hash */
+ put_bh(tbh) ; /* once for our get_hash */
}
}
if (!buffer_uptodate(tbh)) {
reiserfs_panic(s, "journal-601, buffer write failed\n") ;
}
- atomic_dec(&(tbh->b_count)) ; /* once for our get_hash */
+ put_bh(tbh) ; /* once for our get_hash */
bforget(tbh) ; /* once due to original getblk in do_journal_end */
atomic_dec(&(jl->j_commit_left)) ;
}
}
mark_buffer_uptodate(bh, uptodate) ;
unlock_buffer(bh) ;
+ put_bh(bh) ;
}
static void submit_logged_buffer(struct buffer_head *bh) {
lock_buffer(bh) ;
+ get_bh(bh) ;
bh->b_end_io = reiserfs_end_buffer_io_sync ;
mark_buffer_notjournal_new(bh) ;
clear_bit(BH_Dirty, &bh->b_state) ;
/* we do this to make sure nobody releases the buffer while
** we are working with it
*/
- atomic_inc(&(saved_bh->b_count)) ;
+ get_bh(saved_bh) ;
if (buffer_journal_dirty(saved_bh)) {
was_jwait = 1 ;
mark_buffer_notjournal_dirty(saved_bh) ;
- /* brelse the inc from journal_mark_dirty */
- atomic_dec(&(saved_bh->b_count)) ;
+ /* undo the inc from journal_mark_dirty */
+ put_bh(saved_bh) ;
}
if (can_dirty(cn)) {
was_dirty = 1 ;
}
if (was_dirty) {
/* we inc again because saved_bh gets decremented at free_cnode */
- atomic_inc(&(saved_bh->b_count)) ;
+ get_bh(saved_bh) ;
set_bit(BLOCK_NEEDS_FLUSH, &cn->state) ;
submit_logged_buffer(saved_bh) ;
count++ ;
cn = cn->next ;
if (saved_bh) {
/* we incremented this to keep others from taking the buffer head away */
- atomic_dec(&(saved_bh->b_count));
+ put_bh(saved_bh) ;
if (atomic_read(&(saved_bh->b_count)) < 0) {
printk("journal-945: saved_bh->b_count < 0") ;
}
memset(journal_writers, 0, sizeof(char *) * 512) ; /* debug code */
INIT_LIST_HEAD(&SB_JOURNAL(p_s_sb)->j_bitmap_nodes) ;
+ INIT_LIST_HEAD(&(SB_JOURNAL(p_s_sb)->j_dummy_inode.i_dirty_buffers)) ;
reiserfs_allocate_list_bitmaps(p_s_sb, SB_JOURNAL(p_s_sb)->j_list_bitmap,
SB_BMAP_NR(p_s_sb)) ;
allocate_bitmap_nodes(p_s_sb) ;
cn->jlist = NULL ;
insert_journal_hash(SB_JOURNAL(p_s_sb)->j_hash_table, cn) ;
if (!count_already_incd) {
- atomic_inc(&(bh->b_count)) ;
+ get_bh(bh) ;
}
}
cn->next = NULL ;
if (!already_cleaned) {
mark_buffer_notjournal_dirty(bh) ;
- atomic_dec(&(bh->b_count)) ;
+ put_bh(bh) ;
if (atomic_read(&(bh->b_count)) < 0) {
printk("journal-1752: remove from trans, b_count < 0\n") ;
}
** in the current trans
*/
mark_buffer_notjournal_dirty(cn->bh) ;
- if (!buffer_locked(cn->bh)) {
- reiserfs_clean_and_file_buffer(cn->bh) ;
- }
cleaned = 1 ;
- atomic_dec(&(cn->bh->b_count)) ;
+ put_bh(cn->bh) ;
if (atomic_read(&(cn->bh->b_count)) < 0) {
printk("journal-2138: cn->bh->b_count < 0\n") ;
}
}
if (bh) {
- atomic_dec(&(bh->b_count)) ; /* get_hash incs this */
+ reiserfs_clean_and_file_buffer(bh) ;
+ put_bh(bh) ; /* get_hash grabs the buffer */
if (atomic_read(&(bh->b_count)) < 0) {
printk("journal-2165: bh->b_count < 0\n") ;
}
}
}
-/*
- * Wait for a page to get unlocked.
- *
- * This must be called with the caller "holding" the page,
- * ie with increased "page->count" so that the page won't
- * go away during the wait..
- */
-static void ___reiserfs_wait_on_page(struct reiserfs_page_list *pl)
-{
- struct task_struct *tsk = current;
- struct page *page = pl->page ;
- DECLARE_WAITQUEUE(wait, tsk);
-
- add_wait_queue(&page->wait, &wait);
- do {
- block_sync_page(page);
- set_task_state(tsk, TASK_UNINTERRUPTIBLE);
- if (!PageLocked(page) || pl->do_not_lock)
- break;
- schedule();
- } while (PageLocked(page));
- tsk->state = TASK_RUNNING;
- remove_wait_queue(&page->wait, &wait);
-}
-
-/*
- * Get an exclusive lock on the page..
- * but, every time you get woken up, check the page to make sure
- * someone hasn't called a journal_begin with it locked.
- *
- * the page should always be locked when this returns
- *
- * returns 0 if you've got the page locked
- * returns 1 if it returns because someone else has called journal_begin
- * with the page locked
- * this is only useful to the code that flushes pages before a
- * commit. Do not export this hack. Ever.
- */
-static int reiserfs_try_lock_page(struct reiserfs_page_list *pl)
-{
- struct page *page = pl->page ;
- while (TryLockPage(page)) {
- if (pl->do_not_lock) {
- /* the page is locked, but we cannot have it */
- return 1 ;
- }
- ___reiserfs_wait_on_page(pl);
- }
- /* we have the page locked */
- return 0 ;
-}
-
-
-/*
-** This can only be called from do_journal_end.
-** it runs through the list things that need flushing before the
-** transaction can commit, and writes each of them to disk
-**
-*/
-
-static void flush_pages_before_commit(struct reiserfs_transaction_handle *th,
- struct super_block *p_s_sb) {
- struct reiserfs_page_list *pl = SB_JOURNAL(p_s_sb)->j_flush_pages ;
- struct reiserfs_page_list *pl_tmp ;
- struct buffer_head *bh, *head ;
- int count = 0 ;
-
- /* first write each dirty unlocked buffer in the list */
-
- while(pl) {
- /* ugly. journal_end can be called from get_block, which has a
- ** page locked. So, we have to check to see if pl->page is the page
- ** currently locked by the calling function, and if so, skip the
- ** lock
- */
- if (reiserfs_try_lock_page(pl)) {
- goto setup_next ;
- }
- if (!PageLocked(pl->page)) {
- BUG() ;
- }
- if (pl->page->buffers) {
- head = pl->page->buffers ;
- bh = head ;
- do {
- if (bh->b_blocknr == pl->blocknr && buffer_dirty(bh) &&
- !buffer_locked(bh) && buffer_uptodate(bh) ) {
- ll_rw_block(WRITE, 1, &bh) ;
- }
- bh = bh->b_this_page ;
- } while (bh != head) ;
- }
- if (!pl->do_not_lock) {
- UnlockPage(pl->page) ;
- }
-setup_next:
- pl = pl->next ;
- }
-
- /* now wait on them */
-
- pl = SB_JOURNAL(p_s_sb)->j_flush_pages ;
- while(pl) {
- if (reiserfs_try_lock_page(pl)) {
- goto remove_page ;
- }
- if (!PageLocked(pl->page)) {
- BUG() ;
- }
- if (pl->page->buffers) {
- head = pl->page->buffers ;
- bh = head ;
- do {
- if (bh->b_blocknr == pl->blocknr) {
- count++ ;
- wait_on_buffer(bh) ;
- if (!buffer_uptodate(bh)) {
- reiserfs_panic(p_s_sb, "journal-2443: flush_pages_before_commit, error writing block %lu\n", bh->b_blocknr) ;
- }
- }
- bh = bh->b_this_page ;
- } while (bh != head) ;
- }
- if (!pl->do_not_lock) {
- UnlockPage(pl->page) ;
- }
-remove_page:
- /* we've waited on the I/O, we can remove the page from the
- ** list, and free our pointer struct to it.
- */
- if (pl->prev) {
- pl->prev->next = pl->next ;
- }
- if (pl->next) {
- pl->next->prev = pl->prev ;
- }
- put_page(pl->page) ;
- pl_tmp = pl ;
- pl = pl->next ;
- reiserfs_kfree(pl_tmp, sizeof(struct reiserfs_page_list), p_s_sb) ;
- }
- SB_JOURNAL(p_s_sb)->j_flush_pages = NULL ;
-}
-
-/*
-** called when a indirect item is converted back into a tail.
-**
-** The reiserfs part of the inode stores enough information to find
-** our page_list struct in the flush list. We remove it from the list
-** and free the struct.
-**
-** Note, it is possible for this to happen:
-**
-** reiserfs_add_page_to_flush_list(inode)
-** transaction ends, list is flushed
-** reiserfs_remove_page_from_flush_list(inode)
-**
-** This would be bad because the page_list pointer in the inode is not
-** updated when the list is flushed, so we can't know if the pointer is
-** valid. So, in the inode, we also store the transaction id when the
-** page was added. If we are trying to remove something from an old
-** transaction, we just clear out the pointer in the inode and return.
-**
-** Normal case is to use the reiserfs_page_list pointer in the inode to
-** find and remove the page from the flush list.
-*/
-int reiserfs_remove_page_from_flush_list(struct reiserfs_transaction_handle *th,
- struct inode *inode) {
- struct reiserfs_page_list *pl ;
-
- /* was this conversion done in a previous transaction? If so, return */
- if (inode->u.reiserfs_i.i_conversion_trans_id < th->t_trans_id) {
- inode->u.reiserfs_i.i_converted_page = NULL ;
- inode->u.reiserfs_i.i_conversion_trans_id = 0 ;
- return 0 ;
- }
-
- /* remove the page_list struct from the list, release our hold on the
- ** page, and free the page_list struct
- */
- pl = inode->u.reiserfs_i.i_converted_page ;
- if (pl) {
- if (pl->next) {
- pl->next->prev = pl->prev ;
- }
- if (pl->prev) {
- pl->prev->next = pl->next ;
- }
- if (SB_JOURNAL(inode->i_sb)->j_flush_pages == pl) {
- SB_JOURNAL(inode->i_sb)->j_flush_pages = pl->next ;
- }
- put_page(pl->page) ;
- reiserfs_kfree(pl, sizeof(struct reiserfs_page_list), inode->i_sb) ;
- inode->u.reiserfs_i.i_converted_page = NULL ;
- inode->u.reiserfs_i.i_conversion_trans_id = 0 ;
- }
- return 0 ;
-}
-
-/*
-** Called after a direct to indirect transaction. The unformatted node
-** must be flushed to disk before the transaction commits, otherwise, we
-** risk losing the data from the direct item. This adds the page
-** containing the unformatted node to a list of pages that need flushing.
-**
-** it calls get_page(page), so the page won't disappear until we've
-** flushed or removed it from our list.
-**
-** pointers to the reiserfs_page_list struct are stored in the inode,
-** so this page can be quickly removed from the list after the tail is
-** converted back into a direct item.
-**
-** If we fail to find the memory for the reiserfs_page_list struct, we
-** just sync the page now. Not good, but safe.
-**
-** since this must be called with the page locked, we always set
-** the do_not_lock field in the page_list struct we allocate
-**
-*/
-int reiserfs_add_page_to_flush_list(struct reiserfs_transaction_handle *th,
- struct inode *inode,
- struct buffer_head *bh) {
- struct reiserfs_page_list *new_pl ;
-
-/* debugging use ONLY. Do not define this on data you care about. */
-#ifdef REISERFS_NO_FLUSH_AFTER_CONVERT
- return 0 ;
-#endif
-
- get_page(bh->b_page) ;
- new_pl = reiserfs_kmalloc(sizeof(struct reiserfs_page_list), GFP_NOFS,
- inode->i_sb) ;
- if (!new_pl) {
- put_page(bh->b_page) ;
- reiserfs_warning("journal-2480: forced to flush page, out of memory\n") ;
- ll_rw_block(WRITE, 1, &bh) ;
- wait_on_buffer(bh) ;
- if (!buffer_uptodate(bh)) {
- reiserfs_panic(inode->i_sb, "journal-2484: error writing buffer %lu to disk\n", bh->b_blocknr) ;
- }
- inode->u.reiserfs_i.i_converted_page = NULL ;
- return 0 ;
- }
-
- new_pl->page = bh->b_page ;
- new_pl->do_not_lock = 1 ;
- new_pl->blocknr = bh->b_blocknr ;
- new_pl->next = SB_JOURNAL(inode->i_sb)->j_flush_pages;
- if (new_pl->next) {
- new_pl->next->prev = new_pl ;
- }
- new_pl->prev = NULL ;
- SB_JOURNAL(inode->i_sb)->j_flush_pages = new_pl ;
-
- /* if we have numbers from an old transaction, zero the converted
- ** page, it has already been flushed and freed
- */
- if (inode->u.reiserfs_i.i_conversion_trans_id &&
- inode->u.reiserfs_i.i_conversion_trans_id < th->t_trans_id) {
- inode->u.reiserfs_i.i_converted_page = NULL ;
- }
- if (inode->u.reiserfs_i.i_converted_page) {
- reiserfs_panic(inode->i_sb, "journal-2501: inode already had a converted page\n") ;
- }
- inode->u.reiserfs_i.i_converted_page = new_pl ;
- inode->u.reiserfs_i.i_conversion_trans_id = th->t_trans_id ;
- return 0 ;
-}
-
/*
** long and ugly. If flush, will not return until all commit
** blocks and all real buffers in the trans are on disk.
jindex = (SB_JOURNAL_LIST_INDEX(p_s_sb) + 1) % JOURNAL_LIST_COUNT ;
SB_JOURNAL_LIST_INDEX(p_s_sb) = jindex ;
- /* make sure to flush any data converted from direct items to
- ** indirect items before allowing the commit blocks to reach the
- ** disk
- */
- flush_pages_before_commit(th, p_s_sb) ;
+ /* write any buffers that must hit disk before this commit is done */
+ fsync_inode_buffers(&(SB_JOURNAL(p_s_sb)->j_dummy_inode)) ;
/* honor the flush and async wishes from the caller */
if (flush) {
// comment? maybe something like set de to point to what the path points to?
static inline void set_de_item_location (struct reiserfs_dir_entry * de, struct path * path)
{
- de->de_bh = get_bh (path);
+ de->de_bh = get_last_bh (path);
de->de_ih = get_ih (path);
de->de_deh = B_I_DEH (de->de_bh, de->de_ih);
de->de_item_num = PATH_LAST_POSITION (path);
) {
if ( p_s_bh ) {
if ( atomic_read (&(p_s_bh->b_count)) ) {
- atomic_dec (&(p_s_bh->b_count));
+ put_bh(p_s_bh) ;
return;
}
reiserfs_panic(NULL, "PAP-5070: decrement_bcount: trying to free free buffer %b", p_s_bh);
}
/* Cut one record from the directory item. */
- *cut_size = -(DEH_SIZE + entry_length (get_bh (path), le_ih, pos_in_item (path)));
+ *cut_size = -(DEH_SIZE + entry_length (get_last_bh (path), le_ih, pos_in_item (path)));
return M_CUT;
}
/* Search for the buffer in cache. */
p_s_un_bh = get_hash_table(p_s_sb->s_dev, *p_n_unfm_pointer, n_blk_size);
- if (p_s_un_bh && buffer_locked(p_s_un_bh)) {
- __wait_on_buffer(p_s_un_bh) ;
- if ( item_moved (&s_ih, p_s_path) ) {
- need_research = 1;
- brelse(p_s_un_bh) ;
- break ;
- }
+ if (p_s_un_bh) {
+ mark_buffer_clean(p_s_un_bh) ;
+ if (buffer_locked(p_s_un_bh)) {
+ __wait_on_buffer(p_s_un_bh) ;
+ }
+ /* even if the item moves, the block number of the
+ ** unformatted node we want to cut won't. So, it was
+ ** safe to clean the buffer here, this block _will_
+ ** get freed during this call to prepare_for_delete_or_cut
+ */
+ if ( item_moved (&s_ih, p_s_path) ) {
+ need_research = 1;
+ brelse(p_s_un_bh) ;
+ break ;
+ }
}
if ( p_s_un_bh && block_in_use (p_s_un_bh)) {
/* Block is locked or held more than by one holder and by
if ( item_moved (&s_ih, p_s_path) ) {
need_research = 1;
break ;
-#if 0
- reiserfs_prepare_for_journal(p_s_sb,
- PATH_PLAST_BUFFER(p_s_path),
- 1) ;
- if ( comp_items(&s_ih, p_s_path) ) {
- reiserfs_restore_prepared_buffer(p_s_sb,
- PATH_PLAST_BUFFER(p_s_path)) ;
- brelse(p_s_un_bh);
- break;
- }
- *p_n_unfm_pointer = 0;
- journal_mark_dirty (th,p_s_sb,PATH_PLAST_BUFFER(p_s_path));
-
- reiserfs_free_block(th, p_s_sb, block_addr);
- if (p_s_un_bh) {
- mark_buffer_clean (p_s_un_bh);
- brelse (p_s_un_bh);
- }
- if ( comp_items(&s_ih, p_s_path) ) {
- break ;
- }
-#endif
}
-
}
/* a trick. If the buffer has been logged, this
if (inode->i_nlink != 0) {
reiserfs_warning("clm-4001: deleting inode with link count==%d\n", inode->i_nlink) ;
}
+#endif
+#if defined( USE_INODE_GENERATION_COUNTER )
+ if( !old_format_only ( th -> t_super ) )
+ {
+ __u32 *inode_generation;
+
+ inode_generation =
+ &th -> t_super -> u.reiserfs_sb.s_rs -> s_inode_generation;
+ *inode_generation = cpu_to_le32( le32_to_cpu( *inode_generation ) + 1 );
+ }
+/* USE_INODE_GENERATION_COUNTER */
#endif
reiserfs_delete_solid_item (th, INODE_PKEY (inode));
}
do_balance(&s_cut_balance, NULL, NULL, c_mode);
if ( n_is_inode_locked ) {
- /* we've converted from indirect to direct, we must remove
- ** ourselves from the list of pages that need flushing before
- ** this transaction can commit
+ /* we've done an indirect->direct conversion. when the data block
+ ** was freed, it was removed from the list of blocks that must
+ ** be flushed before the transaction commits, so we don't need to
+ ** deal with it here.
*/
- reiserfs_remove_page_from_flush_list(th, p_s_inode) ;
p_s_inode->u.reiserfs_i.i_pack_on_close = 0 ;
}
return n_ret_value;
struct item_head * found_ih = get_ih (path);
if (is_direct_le_ih (found_ih)) {
- if (le_ih_k_offset (found_ih) + op_bytes_number (found_ih, get_bh (path)->b_size) !=
+ if (le_ih_k_offset (found_ih) + op_bytes_number (found_ih, get_last_bh (path)->b_size) !=
cpu_key_k_offset (p_s_key) ||
- op_bytes_number (found_ih, get_bh (path)->b_size) != pos_in_item (path))
+ op_bytes_number (found_ih, get_last_bh (path)->b_size) != pos_in_item (path))
reiserfs_panic (0, "PAP-5720: check_research_for_paste: "
"found direct item %h or position (%d) does not match to key %K",
found_ih, pos_in_item (path), p_s_key);
}
if (is_indirect_le_ih (found_ih)) {
- if (le_ih_k_offset (found_ih) + op_bytes_number (found_ih, get_bh (path)->b_size) != cpu_key_k_offset (p_s_key) ||
+ if (le_ih_k_offset (found_ih) + op_bytes_number (found_ih, get_last_bh (path)->b_size) != cpu_key_k_offset (p_s_key) ||
I_UNFM_NUM (found_ih) != pos_in_item (path) ||
get_ih_free_space (found_ih) != 0)
reiserfs_panic (0, "PAP-5730: check_research_for_paste: "
"=b" (*ebx),
"=c" (*ecx),
"=d" (*edx)
- : "a" (op));
+ : "0" (op));
}
/*
*/
extern inline unsigned int cpuid_eax(unsigned int op)
{
- unsigned int eax, ebx, ecx, edx;
+ unsigned int eax;
__asm__("cpuid"
- : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
- : "a" (op));
+ : "=a" (eax)
+ : "0" (op)
+ : "bx", "cx", "dx");
return eax;
}
extern inline unsigned int cpuid_ebx(unsigned int op)
{
- unsigned int eax, ebx, ecx, edx;
+ unsigned int eax, ebx;
__asm__("cpuid"
- : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
- : "a" (op));
+ : "=a" (eax), "=b" (ebx)
+ : "0" (op)
+ : "cx", "dx" );
return ebx;
}
extern inline unsigned int cpuid_ecx(unsigned int op)
{
- unsigned int eax, ebx, ecx, edx;
+ unsigned int eax, ecx;
__asm__("cpuid"
- : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
- : "a" (op));
+ : "=a" (eax), "=c" (ecx)
+ : "0" (op)
+ : "bx", "dx" );
return ecx;
}
extern inline unsigned int cpuid_edx(unsigned int op)
{
- unsigned int eax, ebx, ecx, edx;
+ unsigned int eax, edx;
__asm__("cpuid"
- : "=a" (eax), "=b" (ebx), "=c" (ecx), "=d" (edx)
- : "a" (op));
+ : "=a" (eax), "=d" (edx)
+ : "0" (op)
+ : "bx", "cx");
return edx;
}
/*
- * BK Id: SCCS/s.hardirq.h 1.10 06/09/01 22:16:38 paulus
+ * BK Id: SCCS/s.hardirq.h 1.12 07/10/01 11:26:58 trini
*/
#ifdef __KERNEL__
#ifndef __ASM_HARDIRQ_H
unsigned int __local_irq_count;
unsigned int __local_bh_count;
unsigned int __syscall_count;
+ struct task_struct * __ksoftirqd_task;
unsigned int __last_jiffy_stamp;
} ____cacheline_aligned irq_cpustat_t;
/*
- * BK Id: SCCS/s.immap_8260.h 1.5 05/17/01 18:14:24 cort
+ * BK Id: SCCS/s.immap_8260.h 1.8 07/18/01 15:46:50 trini
*/
/*
char res11[4096];
} immap_t;
-/* The 8260 relies heavily on the IMMR, so we keep it around as a
- * kernel global symbol now. Should have done this for the 8xx......
- */
-immap_t *immr;
+extern immap_t *immr;
#endif /* __IMMAP_82XX__ */
#endif /* __KERNEL__ */
/*
- * BK Id: SCCS/s.softirq.h 1.10 06/09/01 22:16:38 paulus
+ * BK Id: SCCS/s.softirq.h 1.13 07/12/01 20:02:34 paulus
*/
#ifdef __KERNEL__
#ifndef __ASM_SOFTIRQ_H
if (!--local_bh_count(smp_processor_id()) \
&& softirq_pending(smp_processor_id())) { \
do_softirq(); \
- __sti(); \
} \
} while (0)
#define BUF_PROTECTED 3 /* Ramdisk persistent storage */
#define NR_LIST 4
+static inline void get_bh(struct buffer_head * bh)
+{
+ atomic_inc(&(bh)->b_count);
+}
+
+static inline void put_bh(struct buffer_head *bh)
+{
+ smp_mb__before_atomic_dec();
+ atomic_dec(&bh->b_count);
+}
+
/*
* This is called by bh->b_end_io() handlers when I/O has completed.
*/
/* enable journalling */
#define ENABLE_JOURNAL
+#define USE_INODE_GENERATION_COUNTER
+
+
#ifdef __KERNEL__
/* #define REISERFS_CHECK */
__u32 sd_blocks;
union {
__u32 sd_rdev;
+ __u32 sd_generation;
//__u32 sd_first_direct_byte;
/* first byte of file which is stored in a
direct item: except that if it equals 1
#define PATH_H_PATH_OFFSET(p_s_path, n_h) ((p_s_path)->path_length - (n_h))
-#define get_bh(path) PATH_PLAST_BUFFER(path)
+#define get_last_bh(path) PATH_PLAST_BUFFER(path)
#define get_ih(path) PATH_PITEM_HEAD(path)
#define get_item_pos(path) PATH_LAST_POSITION(path)
#define get_item(path) ((void *)B_N_PITEM(PATH_PLAST_BUFFER(path), PATH_LAST_POSITION (path)))
__u32 j_mount_id ;
} ;
-/* these are used to keep flush pages that contain converted direct items.
-** if the page is not flushed before the transaction that converted it
-** is committed, we risk losing data
-**
-** note, while a page is in this list, its counter is incremented.
-*/
-struct reiserfs_page_list {
- struct reiserfs_page_list *next ;
- struct reiserfs_page_list *prev ;
- struct page *page ;
- unsigned long blocknr ; /* block number holding converted data */
-
- /* if a transaction writer has the page locked the flush_page_list
- ** function doesn't need to (and can't) get the lock while flushing
- ** the page. do_not_lock needs to be set by anyone who calls journal_end
- ** with a page lock held. They have to look in the inode and see
- ** if the inode has the page they have locked in the flush list.
- **
- ** this sucks.
- */
- int do_not_lock ;
-} ;
-
extern task_queue reiserfs_commit_thread_tq ;
extern wait_queue_head_t reiserfs_commit_thread_wait ;
#include <linux/list.h>
-/* these are used to keep track of the pages that need
-** flushing before the current transaction can commit
-*/
-struct reiserfs_page_list ;
-
struct reiserfs_inode_info {
__u32 i_key [4];/* key is still 4 32 bit integers */
__u32 i_first_direct_byte; // offset of first byte stored in direct item.
- /* pointer to the page that must be flushed before
- ** the current transaction can commit.
- **
- ** this pointer is only used when the tail is converted back into
- ** a direct item, or the file is deleted
- */
- struct reiserfs_page_list *i_converted_page ;
-
- /* we save the id of the transaction when we did the direct->indirect
- ** conversion. That allows us to flush the buffers to disk
- ** without having to update this inode to zero out the converted
- ** page variable
- */
- int i_conversion_trans_id ;
-
/* My guess is this contains the first
unused block of a sequence of
blocks plus the length of the
don't need to save bytes in the
superblock. -Hans */
__u16 s_reserved;
- char s_unused[128] ; /* zero filled by mkreiserfs */
+ __u32 s_inode_generation;
+ char s_unused[124] ; /* zero filled by mkreiserfs */
} __attribute__ ((__packed__));
#define SB_SIZE (sizeof(struct reiserfs_super_block))
int j_free_bitmap_nodes ;
int j_used_bitmap_nodes ;
struct list_head j_bitmap_nodes ;
+ struct inode j_dummy_inode ;
struct reiserfs_list_bitmap j_list_bitmap[JOURNAL_NUM_BITMAPS] ; /* array of bitmaps to record the deleted blocks */
struct reiserfs_journal_list j_journal_list[JOURNAL_LIST_COUNT] ; /* array of all the journal lists */
struct reiserfs_journal_cnode *j_hash_table[JOURNAL_HASH_SIZE] ; /* hash table for real buffer heads in current trans */
if (found_page)
goto out_free_swap;
- new_page = alloc_page(GFP_USER);
+ new_page = alloc_page(GFP_HIGHUSER);
if (!new_page)
goto out_free_swap; /* Out of memory */