# This is a BitKeeper generated patch for the following project: # Project Name: Linux kernel tree # This patch format is intended for GNU patch command version 2.5 or higher. # This patch includes the following deltas: # ChangeSet v2.5.59 -> 1.988 # drivers/net/8139too.c 1.48 -> 1.49 # drivers/acpi/include/acglobal.h 1.18 -> 1.19 include/acpi/acglobal.h (moved) # arch/i386/kernel/process.c 1.43 -> 1.44 # arch/sparc/Kconfig 1.7 -> 1.8 # drivers/hotplug/cpqphp_core.c 1.12 -> 1.14 # fs/nfs/read.c 1.29 -> 1.30 # drivers/s390/cio/Makefile 1.6 -> 1.7 # fs/binfmt_flat.c 1.1 -> 1.2 # fs/jfs/inode.c 1.26 -> 1.28 # arch/arm/kernel/irq.c 1.23 -> 1.24 # drivers/usb/media/Makefile 1.8 -> 1.9 # drivers/acorn/scsi/oak.c 1.14 -> 1.15 # drivers/hotplug/ibmphp_pci.c 1.3 -> 1.5 # arch/ppc64/kernel/signal.c 1.22 -> 1.25 # drivers/acpi/include/acpixf.h 1.15 -> 1.16 include/acpi/acpixf.h (moved) # drivers/scsi/megaraid.c 1.30 -> 1.34 # arch/m68k/sun3/Makefile 1.6 -> 1.7 # arch/mips64/mm/Makefile 1.5 -> 1.6 # sound/pci/emu10k1/emu10k1.c 1.8 -> 1.10 # include/linux/isdnif.h 1.12 -> 1.13 # include/asm-alpha/pci.h 1.9 -> 1.10 # drivers/scsi/aic7xxx/aic79xx_core.c 1.6 -> 1.10 # include/linux/acpi.h 1.19 -> 1.22 # arch/arm/mach-sa1100/sa1111-pcibuf.c 1.8 -> 1.9 arch/arm/common/sa1111-pcibuf.c (moved) # arch/sparc64/kernel/signal32.c 1.24 -> 1.26 # drivers/block/paride/Kconfig 1.1 -> 1.2 # include/net/route.h 1.17 -> 1.19 # sound/sound_firmware.c 1.4 -> 1.6 # drivers/pnp/isapnp/Makefile 1.5 -> 1.6 # arch/ppc64/lib/Makefile 1.7 -> 1.8 # arch/um/kernel/tt/syscall_kern.c 1.3 -> 1.4 # arch/mips/baget/time.c 1.2 -> 1.3 # drivers/scsi/aic7xxx/aic79xx_reg_print.c_shipped 1.3 -> 1.4 # drivers/usb/media/Kconfig 1.2 -> 1.3 # include/asm-mips64/topology.h 1.2 -> 1.3 # arch/sh/kernel/time.c 1.5 -> 1.6 # arch/ppc/boot/simple/Makefile 1.12 -> 1.13 # drivers/input/joystick/Kconfig 1.1 -> 1.2 # sound/core/seq/oss/seq_oss_midi.c 1.5 -> 1.6 # drivers/scsi/ips.c 1.38 -> 1.43 # drivers/net/pcmcia/Makefile 1.12 -> 1.13 # drivers/pnp/Makefile 1.10 -> 1.11 # drivers/scsi/sim710.scr 1.2 -> (deleted) # include/asm-arm/arch-ebsa110/param.h 1.2 -> 1.3 # include/asm-ia64/topology.h 1.5 -> 1.6 # drivers/scsi/scsi_error.c 1.27 -> 1.33 # fs/sysfs/Makefile 1.3 -> 1.4 # drivers/input/gameport/Makefile 1.4 -> 1.5 # arch/arm/kernel/via82c505.c 1.8 -> 1.9 arch/arm/common/via82c505.c (moved) # Documentation/tipar.txt 1.1 -> 1.2 # drivers/net/skfp/smtdef.c 1.1 -> 1.2 # arch/s390/kernel/time.c 1.10 -> 1.11 # sound/i2c/cs8427.c 1.4 -> 1.5 # sound/core/seq/seq_midi_event.c 1.7 -> 1.8 # drivers/media/video/bt856.c 1.6 -> 1.7 # drivers/acpi/include/acutils.h 1.22 -> 1.23 include/acpi/acutils.h (moved) # arch/ia64/kernel/palinfo.c 1.9 -> 1.10 # crypto/digest.c 1.11 -> 1.12 # arch/um/drivers/daemon_kern.c 1.2 -> 1.3 # sound/pci/emu10k1/emupcm.c 1.9 -> 1.11 # arch/mips/philips/nino/time.c 1.1 -> 1.2 # include/linux/mmzone.h 1.35 -> 1.36 # drivers/scsi/aic7xxx/aic79xx_osm.c 1.11 -> 1.17 # fs/nfsd/nfssvc.c 1.30 -> 1.32 # sound/drivers/opl3/Makefile 1.10 -> 1.11 # net/lapb/Makefile 1.4 -> 1.5 # arch/um/kernel/tt/include/tt.h 1.1 -> 1.2 # arch/um/drivers/mcast_kern.c 1.3 -> 1.4 # include/asm-parisc/bitops.h 1.2 -> 1.3 # include/asm-s390/kmap_types.h 1.3 -> 1.4 # sound/pci/korg1212/korg1212.c 1.14 -> 1.16 # kernel/ksyms.c 1.178 -> 1.181 # drivers/net/e1000/e1000.h 1.22 -> 1.23 # include/asm-ppc64/unistd.h 1.15 -> 1.16 # drivers/char/n_tty.c 1.9 -> 1.10 # drivers/acorn/scsi/Makefile 1.7 -> 1.8 # drivers/sgi/char/Makefile 1.5 -> 1.6 # net/irda/ircomm/Kconfig 1.1 -> 1.2 # arch/mips/Makefile 1.12 -> 1.13 # arch/m68k/math-emu/fp_decode.h 1.2 -> 1.3 # arch/ppc64/kernel/entry.S 1.16 -> 1.19 # drivers/acpi/include/acpiosxf.h 1.18 -> 1.20 include/acpi/acpiosxf.h (moved) # drivers/ieee1394/Kconfig 1.2 -> 1.3 # drivers/mtd/nand/Makefile 1.5 -> 1.6 # crypto/internal.h 1.13 -> 1.14 # include/asm-x86_64/signal.h 1.4 -> 1.5 # arch/um/sys-i386/util/mk_thread_kern.c 1.2 -> 1.3 # drivers/char/ip2/i2ellis.c 1.3 -> 1.4 # net/rxrpc/krxiod.c 1.2 -> 1.3 # mm/fremap.c 1.2 -> 1.3 # drivers/i2c/Makefile 1.7 -> 1.8 # arch/arm/kernel/signal.c 1.18 -> 1.19 # drivers/usb/serial/ipaq.h 1.5 -> 1.6 # arch/um/drivers/chan_user.c 1.4 -> 1.5 # arch/um/sys-i386/sigcontext.c 1.2 -> 1.3 # drivers/input/gameport/Kconfig 1.1 -> 1.2 # sound/ppc/tumbler.c 1.8 -> 1.9 # include/asm-arm/bug.h 1.1 -> 1.2 # arch/arm/mm/proc-arm920.S 1.16 -> 1.17 # drivers/net/tulip/de4x5.c 1.20 -> 1.21 # arch/ia64/ia32/ia32_signal.c 1.10 -> 1.14 # drivers/scsi/pci2220i.c 1.13 -> 1.15 # arch/um/drivers/mconsole_kern.c 1.5 -> 1.6 # include/linux/jiffies.h 1.3 -> 1.5 # Documentation/modules.txt 1.3 -> 1.4 # sound/synth/Makefile 1.11 -> 1.12 # fs/fat/Makefile 1.5 -> 1.6 # drivers/parport/Makefile 1.6 -> 1.7 # arch/i386/kernel/cpu/mtrr/Makefile 1.2 -> 1.3 # fs/xfs/xfs_buf_item.c 1.6 -> 1.7 # fs/lockd/clntproc.c 1.7 -> 1.8 # drivers/char/Kconfig 1.6 -> 1.8 # include/asm-i386/edd.h 1.3 -> 1.4 # drivers/video/Kconfig 1.11 -> 1.12 # Documentation/DocBook/journal-api.tmpl 1.4 -> 1.5 # include/linux/buffer_head.h 1.36 -> 1.37 # drivers/net/e1000/Makefile 1.7 -> 1.8 # drivers/scsi/eata_dma.c 1.7 -> 1.9 # include/asm-arm/arch-sa1100/ide.h 1.5 -> 1.6 # net/ax25/Makefile 1.5 -> 1.6 # drivers/net/appletalk/Makefile 1.4 -> 1.5 # arch/um/kernel/tt/tracer.c 1.2 -> 1.3 # Documentation/sound/alsa/CMIPCI.txt 1.1 -> 1.3 # drivers/net/3c509.c 1.29 -> 1.30 # fs/xfs/pagebuf/page_buf.c 1.35 -> 1.37 # net/sunrpc/auth_gss/gss_krb5_crypto.c 1.1 -> 1.2 # drivers/mtd/devices/blkmtd.c 1.23 -> 1.24 # arch/ia64/Makefile 1.32 -> 1.37 # drivers/atm/Makefile 1.15 -> 1.16 # arch/arm/mach-adifcc/Makefile 1.4 -> 1.5 # drivers/media/video/saa7185.c 1.8 -> 1.9 # fs/freevxfs/vxfs_fshead.c 1.6 -> 1.7 # arch/ia64/kernel/efi.c 1.17 -> 1.19 # drivers/message/i2o/Kconfig 1.1 -> 1.2 # drivers/scsi/53c7,8xx.c 1.14 -> (deleted) # include/linux/mm.h 1.105 -> 1.107 # drivers/acpi/button.c 1.15 -> 1.16 # arch/um/os-Linux/drivers/ethertap_kern.c 1.2 -> 1.3 # fs/jfs/jfs_btree.h 1.3 -> 1.4 # include/asm-generic/vmlinux.lds.h 1.4 -> 1.7 # drivers/scsi/fcal.c 1.8 -> 1.9 # sound/pci/ice1712/ice1712.h 1.5 -> 1.6 # arch/um/kernel/ksyms.c 1.6 -> 1.8 # drivers/scsi/scsiiom.c 1.2 -> 1.3 # drivers/net/skfp/pcmplc.c 1.2 -> 1.3 # Documentation/arm/SA1100/CERF 1.1 -> 1.2 # net/sunrpc/Makefile 1.9 -> 1.10 # drivers/scsi/hosts.c 1.45 -> 1.51 # arch/i386/kernel/apm.c 1.42 -> 1.43 # lib/Makefile 1.17 -> 1.18 # sound/isa/gus/gus_mixer.c 1.5 -> 1.6 # include/sound/gus.h 1.2 -> 1.3 # arch/ppc/Makefile 1.34 -> 1.36 # fs/devfs/Makefile 1.4 -> 1.5 # net/Kconfig 1.6 -> 1.7 # arch/um/drivers/xterm.c 1.4.1.1 -> 1.11 # arch/ppc/lib/Makefile 1.10 -> 1.11 # net/sctp/input.c 1.14 -> 1.15 # drivers/net/skfp/skfddi.c 1.9 -> 1.10 # sound/core/hwdep.c 1.7 -> 1.10 # sound/core/memory.c 1.15 -> 1.16 # include/asm-um/processor-i386.h 1.1 -> 1.2 # include/asm-i386/pgalloc.h 1.18 -> 1.19 # fs/proc/Makefile 1.5 -> 1.6 # drivers/scsi/cpqfcTSinit.c 1.25.1.1 -> 1.30 # drivers/usb/class/Kconfig 1.5 -> 1.6 # drivers/scsi/aic7xxx/aic7xxx_pci.c 1.8 -> 1.9 # drivers/acpi/toshiba_acpi.c 1.4 -> 1.5 # arch/um/drivers/port_kern.c 1.7.1.1 -> 1.15 # fs/xfs/xfs_trans_buf.c 1.5 -> 1.6 # drivers/acpi/fan.c 1.9 -> 1.10 # net/irda/ircomm/Makefile 1.6 -> 1.7 # drivers/input/serio/Makefile 1.6 -> 1.7 # arch/um/kernel/trap_kern.c 1.5 -> 1.7 # drivers/scsi/aic7xxx/aiclib.h 1.4 -> 1.5 # sound/core/oss/Makefile 1.5 -> 1.6 # drivers/net/hamradio/Kconfig 1.2 -> 1.3 # arch/um/kernel/skas/sys-i386/sigcontext.c 1.1 -> 1.2 # fs/nfs/mount_clnt.c 1.6 -> 1.7 # arch/ppc/syslib/Makefile 1.3 -> 1.4 # drivers/net/pcmcia/aironet4500_cs.c 1.11 -> 1.12 # arch/um/kernel/tt/tlb.c 1.3 -> 1.4 # arch/i386/kernel/irq.c 1.24 -> 1.25 # mm/page_alloc.c 1.145 -> 1.148 # mm/readahead.c 1.26 -> 1.28 # fs/ext2/inode.c 1.60 -> 1.61 # drivers/scsi/aic7xxx/aic7xxx_osm.c 1.11 -> 1.16 # drivers/acpi/include/acexcep.h 1.12 -> 1.13 include/acpi/acexcep.h (moved) # drivers/scsi/scsi_proc.c 1.12 -> 1.16 # fs/jfs/jfs_inode.c 1.5 -> 1.6 # include/asm-ppc64/processor.h 1.22 -> 1.23 # sound/core/seq/oss/seq_oss_init.c 1.4 -> 1.5 # include/asm-um/current.h 1.1 -> 1.3 # include/linux/times.h 1.2 -> 1.3 # arch/ia64/ia32/ia32_support.c 1.5 -> 1.6 # arch/alpha/kernel/alpha_ksyms.c 1.30 -> 1.31 # sound/pci/cs46xx/cs46xx_lib.c 1.19 -> 1.23 # drivers/video/vesafb.c 1.28 -> 1.29 # include/asm-ia64/spinlock.h 1.5 -> 1.6 # include/asm-ppc/signal.h 1.4 -> 1.5 # drivers/net/hamradio/Makefile 1.6 -> 1.7 # include/linux/ext3_jbd.h 1.7 -> 1.8 # drivers/usb/host/ohci-hcd.c 1.35 -> 1.36 # arch/sparc/kernel/sparc_ksyms.c 1.12 -> 1.13 # fs/ext3/Makefile 1.7 -> 1.8 # fs/lockd/Makefile 1.3 -> 1.4 # arch/arm/mach-shark/Makefile 1.7 -> 1.8 # drivers/char/drm/i830_dma.c 1.9 -> 1.10 # arch/alpha/kernel/core_marvel.c 1.4 -> 1.6 # Documentation/sound/alsa/ALSA-Configuration.txt 1.1 -> 1.3 # drivers/acorn/scsi/cumana_1.c 1.13 -> 1.14 # drivers/net/pcmcia/nmclan_cs.c 1.9 -> 1.10 # sound/drivers/opl3/opl3_oss.c 1.4 -> 1.5 # drivers/acpi/include/acstruct.h 1.12 -> 1.13 include/acpi/acstruct.h (moved) # drivers/usb/image/Kconfig 1.2 -> 1.3 # sound/isa/gus/gus_main.c 1.7 -> 1.8 # include/linux/init_task.h 1.20 -> 1.21 # drivers/net/tokenring/tmsisa.c 1.6 -> 1.7 # arch/um/drivers/null.c 1.2 -> 1.3 # sound/drivers/serial-u16550.c 1.11 -> 1.12 # include/asm-generic/topology.h 1.3 -> 1.4 # include/linux/sched.h 1.121 -> 1.127 # kernel/fork.c 1.100 -> 1.104 # include/linux/ptrace.h 1.5 -> 1.7 # drivers/net/Space.c 1.15 -> 1.16 # drivers/block/ll_rw_blk.c 1.147 -> 1.149 # arch/i386/kernel/vm86.c 1.18 -> 1.19 # fs/jffs2/os-linux.h 1.8 -> 1.9 # kernel/sys.c 1.38 -> 1.40 # drivers/input/Kconfig 1.3 -> 1.4 # Makefile 1.357 -> 1.369 # sound/pci/cmipci.c 1.16 -> 1.19 # arch/um/drivers/slirp_user.c 1.1 -> 1.2 # drivers/net/wireless/airo.c 1.30 -> 1.31 # arch/um/include/sysdep-i386/frame.h 1.1 -> 1.2 # drivers/video/Makefile 1.70 -> 1.71 # drivers/acpi/include/acnamesp.h 1.16 -> 1.17 include/acpi/acnamesp.h (moved) # include/asm-ia64/unistd.h 1.22 -> 1.23 # net/wanrouter/Makefile 1.5 -> 1.6 # arch/i386/mach-voyager/Makefile 1.2 -> 1.3 # include/asm-ppc64/thread_info.h 1.6 -> 1.7 # drivers/md/Kconfig 1.1 -> 1.2 # drivers/media/video/bt819.c 1.5 -> 1.6 # drivers/net/wan/lmc/lmc_ioctl.h 1.2 -> 1.3 # include/asm-ia64/mmu_context.h 1.10 -> 1.12 # include/net/tcp.h 1.27 -> 1.29 # drivers/acpi/include/acresrc.h 1.10 -> 1.11 include/acpi/acresrc.h (moved) # drivers/acpi/hardware/hwtimer.c 1.11 -> 1.12 # drivers/acpi/include/acobject.h 1.15 -> 1.16 include/acpi/acobject.h (moved) # arch/um/os-Linux/process.c 1.4 -> 1.5 # net/rxrpc/krxtimod.c 1.2 -> 1.3 # fs/befs/ChangeLog 1.1 -> 1.2 # drivers/s390/net/lcs.c 1.8 -> 1.9 # sound/isa/cs423x/cs4236.c 1.11 -> 1.12 # drivers/char/ftape/Kconfig 1.1 -> 1.2 # sound/core/seq/seq_clientmgr.c 1.12 -> 1.14 # include/asm-ia64/signal.h 1.7 -> 1.8 # drivers/net/lasi_82596.c 1.16 -> 1.17 # drivers/ieee1394/sbp2.c 1.20 -> 1.22 # arch/um/include/user_util.h 1.9 -> 1.11 # fs/dcache.c 1.37 -> 1.38 # sound/pci/ac97/ak4531_codec.c 1.3 -> 1.5 # mm/vmscan.c 1.143 -> 1.146 # arch/ia64/kernel/setup.c 1.34 -> 1.36 # net/atm/Makefile 1.6 -> 1.7 # sound/oss/ac97_codec.c 1.12 -> 1.13 # arch/um/kernel/tt/gdb.c 1.2 -> 1.5 # sound/pci/rme9652/hammerfall_mem.c 1.9 -> 1.11 # arch/um/drivers/mmapper_kern.c 1.2 -> 1.3 # fs/proc/proc_misc.c 1.62 -> 1.64 # arch/um/kernel/ptrace.c 1.5.1.1 -> 1.11 # sound/core/ioctl32/ioctl32.c 1.13 -> 1.16 # drivers/s390/char/sclp_tty.c 1.3 -> 1.4 # arch/ppc64/Makefile 1.21 -> 1.22 # sound/isa/cmi8330.c 1.8 -> 1.12 # arch/sparc/Makefile 1.17 -> 1.19 # arch/ia64/sn/kernel/Makefile 1.9 -> 1.10 # drivers/block/cpqarray.c 1.68 -> 1.69 # arch/um/kernel/skas/include/ptrace-skas.h 1.1 -> 1.2 # drivers/acorn/scsi/scsi.h 1.2 -> 1.3 # arch/um/include/sysdep-i386/syscalls.h 1.1 -> 1.2 # arch/x86_64/kernel/apic.c 1.8 -> 1.9 # drivers/acpi/include/amlresrc.h 1.6 -> (deleted) # drivers/acpi/include/actbl1.h 1.9 -> 1.10 include/acpi/actbl1.h (moved) # drivers/i2c/i2c-core.c 1.14 -> 1.15 # sound/isa/gus/gus_reset.c 1.3 -> 1.4 # arch/ia64/hp/common/sba_iommu.c 1.9 -> 1.10 # fs/xfs/xfs_dquot_item.c 1.1 -> 1.2 # drivers/net/wan/lmc/lmc_ver.h 1.2 -> 1.3 # arch/i386/Kconfig 1.34 -> 1.36 # include/asm-parisc/module.h 1.2 -> 1.3 # sound/core/rawmidi.c 1.19 -> 1.22 # drivers/block/floppy.c 1.65 -> 1.67 # drivers/media/dvb/frontends/Kconfig 1.2 -> 1.3 # drivers/sbus/char/aurora.c 1.17 -> 1.18 # arch/ia64/kernel/ivt.S 1.11 -> 1.13 # arch/um/util/mk_task_kern.c 1.1 -> 1.2 # drivers/base/node.c 1.7 -> 1.8 # drivers/parisc/Makefile 1.2 -> 1.3 # include/linux/elf.h 1.17 -> 1.18 # drivers/scsi/53c700.c 1.22 -> 1.24 # sound/core/control.c 1.15 -> 1.18 # drivers/net/tokenring/Makefile 1.7 -> 1.8 # drivers/usb/serial/Makefile 1.16 -> 1.17 # drivers/hotplug/ibmphp_ebda.c 1.7 -> 1.9 # arch/um/include/sysdep-i386/ptrace.h 1.2 -> 1.5 # net/bridge/br.c 1.8 -> 1.9 # net/ipv4/netfilter/ip_nat_helper.c 1.9 -> 1.10 # drivers/acpi/include/acdebug.h 1.15 -> 1.17 include/acpi/acdebug.h (moved) # arch/um/sys-i386/Makefile 1.8.1.1 -> 1.15 # fs/jfs/jfs_imap.c 1.18 -> 1.19 # arch/x86_64/lib/Makefile 1.9 -> 1.10 # sound/isa/opti9xx/opti92x-ad1848.c 1.9 -> 1.10 # fs/jbd/journal.c 1.23 -> 1.25 # include/asm-sparc64/unistd.h 1.18 -> 1.19 # include/asm-i386/signal.h 1.4 -> 1.5 # Documentation/isdn/HiSax.cert 1.2 -> 1.3 # include/asm-i386/topology.h 1.4 -> 1.5 # arch/i386/kernel/traps.c 1.42 -> 1.43 # net/bluetooth/Makefile 1.12 -> 1.13 # arch/um/kernel/user_util.c 1.3 -> 1.6 # drivers/net/hamradio/6pack.c 1.9 -> 1.10 # arch/alpha/kernel/setup.c 1.27 -> 1.30 # drivers/parisc/ccio-dma.c 1.8 -> 1.10 # drivers/scsi/g_NCR5380.c 1.12 -> 1.13 # arch/i386/kernel/Makefile 1.32 -> 1.33 # fs/nls/Makefile 1.6 -> 1.7 # include/asm-m68k/signal.h 1.3 -> 1.4 # include/asm-mips/isadep.h 1.2 -> 1.3 # include/linux/signal.h 1.6 -> 1.7 # sound/core/init.c 1.11 -> 1.15 # fs/stat.c 1.16 -> 1.17 # include/asm-um/processor-generic.h 1.4 -> 1.6 # drivers/usb/Kconfig 1.1 -> 1.2 # arch/arm/mach-sa1100/leds.c 1.9 -> 1.10 # drivers/video/skeletonfb.c 1.20 -> 1.22 # drivers/net/tg3.h 1.20 -> 1.23 # arch/sparc64/kernel/Makefile 1.18 -> 1.19 # drivers/isdn/hisax/isdnl2.c 1.10 -> 1.11 # arch/s390/Makefile 1.20 -> 1.22 # arch/i386/kernel/acpi_wakeup.S 1.10 -> 1.11 # arch/arm/mach-arc/Makefile 1.5 -> 1.6 # arch/um/include/time_user.h 1.3 -> 1.4 # fs/xfs/xfs_vfsops.c 1.23 -> 1.24 # drivers/scsi/scsi_sysfs.c 1.5 -> 1.6 # arch/mips64/mips-boards/generic/time.c 1.3 -> 1.4 # fs/autofs/waitq.c 1.5 -> 1.7 # arch/um/include/sysdep-i386/frame_kern.h 1.2 -> 1.3 # net/irda/irlan/Kconfig 1.1 -> 1.2 # kernel/Makefile 1.25 -> 1.26 # arch/um/kernel/time.c 1.4 -> 1.6 # Documentation/kbuild/00-INDEX 1.2 -> 1.3 # drivers/telephony/Kconfig 1.1 -> 1.2 # Documentation/kbuild/bug-list.txt 1.1 -> (deleted) # fs/ioctl.c 1.7 -> 1.8 # net/sctp/Kconfig 1.1 -> 1.2 # arch/alpha/kernel/proto.h 1.10 -> 1.13 # arch/parisc/kernel/entry.S 1.8 -> 1.9 # arch/parisc/kernel/signal32.c 1.2 -> 1.3 # security/dummy.c 1.14 -> 1.19 # drivers/i2c/Kconfig 1.3 -> 1.5 # sound/core/seq/seq_device.c 1.7 -> 1.9 # sound/isa/cs423x/cs4231_lib.c 1.10 -> 1.12 # arch/cris/drivers/Kconfig 1.1 -> 1.2 # arch/ia64/kernel/time.c 1.11 -> 1.13 # include/sound/pcm_params.h 1.5 -> 1.6 # sound/oss/dmasound/Makefile 1.5 -> 1.6 # arch/um/include/os.h 1.2 -> 1.3 # arch/arm/kernel/plx90x0.c 1.4 -> 1.5 arch/arm/common/plx90x0.c (moved) # include/linux/xfrm.h 1.2 -> 1.3 # include/asm-sparc/kmap_types.h 1.11 -> 1.12 # drivers/acpi/include/platform/acenv.h 1.13 -> 1.14 include/acpi/platform/acenv.h (moved) # drivers/isdn/hisax/l3ni1.c 1.8 -> 1.9 # net/ipv4/netfilter/Makefile 1.16 -> 1.17 # drivers/scsi/aacraid/aacraid.h 1.3 -> 1.4 # include/linux/blkdev.h 1.94 -> 1.97 # kernel/time.c 1.8 -> 1.9 # drivers/block/Kconfig 1.1 -> 1.2 # drivers/acpi/tables/tbinstal.c 1.15 -> 1.16 # arch/um/kernel/smp.c 1.5 -> 1.6 # drivers/block/nbd.c 1.47 -> 1.49 # drivers/usb/serial/safe_serial.c 1.12 -> 1.13 # drivers/input/joystick/iforce/Kconfig 1.1 -> 1.2 # include/asm-ia64/sn/sv.h 1.2 -> 1.3 # drivers/char/rio/cmdpkt.h 1.1 -> 1.2 # drivers/parisc/ccio-rm-dma.c 1.5 -> 1.6 # drivers/video/console/Kconfig 1.15 -> 1.16 # drivers/scsi/ips.h 1.18 -> 1.22 # drivers/net/e1000/e1000_osdep.h 1.9 -> 1.10 # net/rxrpc/krxsecd.c 1.3 -> 1.4 # sound/pci/ice1712/ews.c 1.6 -> 1.7 # drivers/net/pcmcia/3c574_cs.c 1.12 -> 1.13 # net/ipv4/devinet.c 1.11 -> 1.12 # include/asm-ia64/asmmacro.h 1.3 -> 1.9 # drivers/net/rrunner.c 1.12 -> 1.13 # include/asm-ppc64/compat.h 1.5 -> 1.6 # fs/mpage.c 1.37 -> 1.39 # arch/ppc64/kernel/init_task.c 1.3 -> 1.4 # drivers/usb/core/message.c 1.18 -> 1.20 # include/asm-sparc/smp.h 1.4 -> 1.5 # drivers/net/wireless/Kconfig 1.2 -> 1.3 # arch/ia64/kernel/smpboot.c 1.24 -> 1.27 # drivers/scsi/NCR5380.c 1.11 -> 1.13 # arch/um/drivers/stdio_console.c 1.6 -> 1.7 # arch/m68k/kernel/time.c 1.5 -> 1.6 # drivers/mtd/maps/sa1100-flash.c 1.4 -> 1.5 # drivers/char/ftape/lowlevel/fdc-io.c 1.6 -> 1.7 # drivers/net/wan/Kconfig 1.2 -> 1.3 # arch/ia64/sn/io/Makefile 1.8 -> 1.9 # arch/arm/mach-tbox/Makefile 1.4 -> 1.5 # arch/um/kernel/tt/include/mode_kern.h 1.3 -> 1.5 # arch/um/kernel/skas/process_kern.c 1.2 -> 1.3 # drivers/media/Kconfig 1.2 -> 1.3 # drivers/net/wan/dscc4.c 1.31 -> 1.32 # kernel/suspend.c 1.30 -> 1.33 # drivers/scsi/scsi.h 1.54 -> 1.60 # include/linux/gfp.h 1.10 -> 1.11 # include/asm-sparc64/signal.h 1.4 -> 1.6 # arch/v850/kernel/rte_mb_a_pci.c 1.2 -> 1.3 # fs/jfs/jfs_metapage.c 1.21 -> 1.22 # include/linux/fs.h 1.213 -> 1.217 # drivers/video/sa1100fb.c 1.23 -> 1.24 # drivers/usb/misc/atmsar.c 1.3 -> 1.6 # arch/ia64/kernel/entry.S 1.29 -> 1.30 # drivers/usb/storage/usb.c 1.51 -> 1.56 # arch/i386/mm/Makefile 1.8 -> 1.9 # drivers/scsi/ini9100u.c 1.10 -> 1.12 # drivers/atm/lanai.c 1.6 -> 1.7 # fs/jfs/jfs_mount.c 1.12 -> 1.13 # arch/mips64/Makefile 1.14 -> 1.15 # fs/jfs/jfs_debug.h 1.4 -> 1.5 # arch/ia64/dig/setup.c 1.6 -> 1.7 # include/asm-alpha/topology.h 1.4 -> 1.6 # drivers/tc/Makefile 1.7 -> 1.8 # include/sound/emu10k1.h 1.9 -> 1.11 # arch/i386/kernel/entry.S 1.53 -> 1.54 # drivers/net/tokenring/Kconfig 1.3 -> 1.4 # Documentation/networking/bonding.txt 1.5 -> 1.6 # drivers/mtd/chips/Makefile 1.5 -> 1.6 # drivers/video/matrox/Makefile 1.7 -> 1.8 # net/rxrpc/internal.h 1.2 -> 1.3 # sound/core/seq/seq_queue.h 1.8 -> 1.9 # include/sound/ak4531_codec.h 1.1 -> 1.2 # include/asm-m68k/mac_psc.h 1.2 -> 1.3 # drivers/net/skfp/ecm.c 1.1 -> 1.2 # drivers/usb/image/scanner.c 1.45 -> 1.48 # arch/ppc64/defconfig 1.22 -> 1.24 # include/asm-arm/arch-ebsa110/time.h 1.5 -> 1.6 # include/asm-i386/node.h 1.2 -> 1.3 # drivers/isdn/eicon/eicon.h 1.9 -> 1.10 # arch/ia64/mm/extable.c 1.4 -> 1.6 # drivers/char/n_hdlc.c 1.9 -> 1.10 # Documentation/scsi/aic7xxx.txt 1.5 -> 1.6 # include/linux/crypto.h 1.24 -> 1.25 # Documentation/sparc/sbus_drivers.txt 1.1 -> 1.2 # arch/m68knommu/kernel/Makefile 1.3 -> 1.4 # Documentation/filesystems/proc.txt 1.11 -> 1.12 # drivers/acpi/include/actables.h 1.13 -> 1.14 include/acpi/actables.h (moved) # include/asm-arm/mach/irq.h 1.5 -> 1.6 # net/ipv6/netfilter/ip6_queue.c 1.4 -> 1.5 # sound/core/oss/pcm_plugin.c 1.4 -> 1.5 # arch/alpha/kernel/smp.c 1.30 -> 1.31 # net/irda/iriap.c 1.11 -> 1.12 # include/net/xfrm.h 1.11 -> 1.12 # drivers/net/Makefile 1.51 -> 1.53 # sound/oss/Makefile 1.20 -> 1.21 # kernel/timer.c 1.38 -> 1.40 # sound/pci/via82xx.c 1.20 -> 1.24 # drivers/net/wireless/airo_cs.c 1.5 -> 1.6 # arch/ppc/platforms/pmac_time.c 1.10 -> 1.11 # include/asm-sparc/delay.h 1.1 -> 1.2 # arch/alpha/kernel/core_titan.c 1.12 -> 1.13 # drivers/md/md.c 1.133 -> 1.134 # arch/mips64/Kconfig 1.8 -> 1.9 # arch/x86_64/ia32/Makefile 1.10 -> 1.11 # drivers/scsi/ncr53c8xx.c 1.19 -> 1.20 # sound/Makefile 1.14 -> 1.15 # arch/um/kernel/skas/include/skas.h 1.2 -> 1.3 # drivers/scsi/advansys.c 1.23 -> 1.26 # drivers/net/e100/e100.h 1.20 -> 1.21 # drivers/char/ftape/lowlevel/Makefile 1.6 -> 1.7 # drivers/scsi/inia100.c 1.16 -> 1.18 # kernel/kmod.c 1.18 -> 1.20 # drivers/net/wireless/orinoco.h 1.10 -> 1.11 # arch/ppc/ocp/Makefile 1.1 -> 1.2 # fs/jbd/transaction.c 1.23 -> 1.25 # sound/usb/usbmixer.c 1.10 -> 1.11 # fs/exportfs/Makefile 1.3 -> 1.4 # Documentation/usb/hiddev.txt 1.3 -> 1.4 # drivers/scsi/u14-34f.c 1.19 -> 1.22 # arch/ppc64/kernel/rtasd.c 1.7 -> 1.8 # arch/parisc/kernel/Makefile 1.8 -> 1.9 # include/sound/sndmagic.h 1.8 -> 1.10 # sound/isa/cs423x/cs4236_lib.c 1.4 -> 1.5 # arch/um/drivers/harddog_user.c 1.1 -> 1.2 # include/asm-ia64/uaccess.h 1.5 -> 1.8 # drivers/scsi/hosts.h 1.48 -> 1.52 # drivers/char/agp/Makefile 1.14 -> 1.15 # arch/mips/dec/Makefile 1.8 -> 1.9 # include/sound/cs46xx.h 1.10 -> 1.11 # arch/um/kernel/tt/uaccess_user.c 1.2 -> 1.3 # drivers/net/wan/lmc/lmc_main.c 1.10 -> 1.11 # drivers/base/cpu.c 1.5 -> 1.6 # drivers/isdn/i4l/Makefile 1.12 -> 1.13 # include/sound/ad1848.h 1.2 -> 1.4 # arch/cris/kernel/ptrace.c 1.9 -> 1.10 # drivers/zorro/Makefile 1.8 -> 1.9 # drivers/isdn/eicon/Makefile 1.6 -> 1.7 # net/ipv4/tcp_ipv4.c 1.40 -> 1.43 # fs/reiserfs/inode.c 1.71 -> 1.72 # include/asm-mips/signal.h 1.1 -> 1.2 # arch/i386/kernel/io_apic.c 1.40 -> 1.41 # drivers/hotplug/acpiphp_glue.c 1.4 -> 1.5 # drivers/usb/core/hcd.h 1.22 -> 1.23 # include/asm-sparc64/elf.h 1.12 -> 1.13 # fs/char_dev.c 1.6 -> 1.7 # include/asm-v850/pci.h 1.1 -> 1.2 # arch/parisc/kernel/sys_parisc32.c 1.5 -> 1.7 # include/asm-arm/io.h 1.14 -> 1.15 # sound/core/pcm_native.c 1.22 -> 1.26 # drivers/usb/media/vicam.c 1.29 -> 1.30 # sound/isa/ad1848/Makefile 1.7 -> 1.8 # sound/pci/ice1712/ice1712.c 1.6 -> 1.8 # sound/pci/rme9652/hdsp.c 1.10 -> 1.13 # include/asm-alpha/core_irongate.h 1.3 -> 1.4 # mm/filemap.c 1.173 -> 1.176 # arch/i386/kernel/edd.c 1.10.1.2 -> 1.15 # drivers/scsi/aic7xxx/Kconfig.aic7xxx 1.8 -> 1.9 # drivers/scsi/pluto.c 1.8 -> 1.9 # drivers/acpi/acpi_ksyms.c 1.19 -> 1.20 # sound/synth/emux/emux_oss.c 1.4 -> 1.5 # fs/namei.c 1.63 -> 1.64 # arch/um/kernel/frame.c 1.3 -> 1.5 # sound/isa/sb/emu8000.c 1.8 -> 1.9 # net/decnet/dn_nsp_in.c 1.6 -> 1.7 # arch/um/include/umid.h 1.1 -> 1.2 # arch/um/kernel/skas/mem_user.c 1.1 -> 1.2 # arch/mips/au1000/common/time.c 1.2 -> 1.3 # drivers/hotplug/cpqphp_ctrl.c 1.6 -> 1.8 # drivers/pci/pci.h 1.1 -> 1.2 # arch/i386/Makefile 1.41 -> 1.43 # net/socket.c 1.41 -> 1.42 # include/asm-ia64/processor.h 1.29 -> 1.30 # sound/pci/Kconfig 1.2 -> 1.4 # arch/um/include/frame.h 1.2 -> 1.3 # sound/pci/emu10k1/emuproc.c 1.6 -> 1.7 # Documentation/usb/silverlink.txt 1.1 -> 1.2 # drivers/char/synclink.c 1.23 -> 1.24 # drivers/acpi/include/acoutput.h 1.13 -> 1.14 include/acpi/acoutput.h (moved) # sound/pci/rme96.c 1.13 -> 1.15 # security/capability.c 1.11 -> 1.14 # arch/um/include/kern_util.h 1.6 -> 1.7 # arch/sparc/kernel/sys_sparc.c 1.7 -> 1.8 # drivers/scsi/aic7xxx/aic7xxx_osm.h 1.23 -> 1.28 # drivers/media/video/Makefile 1.16 -> 1.17 # arch/um/drivers/tty.c 1.2 -> 1.3 # drivers/isdn/sc/Kconfig 1.1 -> 1.2 # fs/ncpfs/sock.c 1.12 -> 1.13 # drivers/net/e1000/e1000_main.c 1.43 -> 1.46 # arch/arm/Makefile 1.32 -> 1.35 # arch/mips64/sgi-ip27/ip27-timer.c 1.4 -> 1.5 # include/sound/version.h 1.43 -> 1.50 # sound/pci/ac97/ac97_codec.c 1.22 -> 1.26 # drivers/hotplug/pci_hotplug.h 1.4 -> 1.7 # drivers/scsi/53c8xx_d.h_shipped 1.2 -> (deleted) # include/linux/sysfs.h 1.22 -> 1.23 # include/asm-sparc64/ide.h 1.13 -> 1.14 # sound/drivers/mpu401/mpu401_uart.c 1.10 -> 1.12 # fs/partitions/ldm.c 1.10 -> 1.11 # drivers/fc4/Kconfig 1.1 -> 1.2 # arch/i386/kernel/dmi_scan.c 1.25 -> 1.26 # fs/exec.c 1.63 -> 1.69 # init/do_mounts.c 1.33 -> 1.34 # fs/ext2/balloc.c 1.24 -> 1.26 # arch/mips64/kernel/Makefile 1.7 -> 1.8 # drivers/mtd/mtdblock.c 1.35 -> 1.36 # drivers/scsi/nsp32.c 1.4 -> 1.6 # fs/binfmt_som.c 1.2 -> 1.3 # drivers/net/e100/e100_proc.c 1.12 -> (deleted) # sound/core/seq/seq_instr.c 1.3 -> 1.4 # drivers/char/rio/riotty.c 1.3 -> 1.4 # drivers/acorn/scsi/fas216.c 1.12 -> 1.14 # include/asm-parisc/dma-mapping.h 1.2 -> 1.3 # net/sunrpc/clnt.c 1.29 -> 1.30 # drivers/usb/storage/transport.c 1.61 -> 1.62 # sound/pci/ice1712/Makefile 1.3 -> 1.4 # drivers/scsi/aacraid/linit.c 1.7 -> 1.8 # arch/alpha/kernel/sys_nautilus.c 1.9 -> 1.10 # include/asm-v850/signal.h 1.1 -> 1.2 # arch/ia64/kernel/perfmon_generic.h 1.1 -> 1.3 # drivers/net/pcmcia/xirc2ps_cs.c 1.12 -> 1.13 # drivers/net/pcmcia/ray_cs.c 1.13 -> 1.14 # drivers/char/ftape/zftape/zftape-init.c 1.15 -> 1.16 # sound/isa/wavefront/wavefront_synth.c 1.9 -> 1.11 # fs/eventpoll.c 1.12 -> 1.13 # arch/s390x/kernel/Makefile 1.14 -> 1.15 # drivers/s390/net/Makefile 1.9 -> 1.10 # Documentation/filesystems/ext3.txt 1.1 -> 1.2 # arch/ia64/kernel/entry.h 1.4 -> 1.5 # arch/parisc/kernel/irq.c 1.8 -> 1.10 # arch/um/drivers/slip_kern.c 1.3 -> 1.4 # drivers/char/nvram.c 1.15 -> 1.16 # drivers/acpi/tables.c 1.10 -> 1.11 # arch/ia64/kernel/irq_ia64.c 1.10 -> 1.11 # drivers/isdn/hisax/Makefile 1.21 -> 1.22 # drivers/usb/image/scanner.h 1.26 -> 1.28 # drivers/usb/storage/transport.h 1.18 -> 1.19 # drivers/serial/uart00.c 1.10 -> 1.11 # arch/m68k/mac/via.c 1.3 -> 1.4 # kernel/signal.c 1.57 -> 1.65 # arch/um/drivers/daemon_user.c 1.1 -> 1.3 # arch/sh/kernel/io.c 1.2 -> 1.3 # arch/parisc/kernel/time.c 1.4 -> 1.5 # arch/um/kernel/mem.c 1.7.2.1 -> 1.12 # drivers/acpi/acpi_bus.h 1.12 -> 1.14 include/acpi/acpi_bus.h (moved) # drivers/message/fusion/mptscsih.c 1.16 -> 1.18 # drivers/char/rtc.c 1.19 -> 1.21 # sound/pci/emu10k1/Makefile 1.5 -> 1.8 # arch/m68k/sun3x/Makefile 1.5 -> 1.6 # drivers/char/keyboard.c 1.23 -> 1.24 # drivers/scsi/atp870u.c 1.15 -> 1.17 # scripts/Makefile.modver 1.6 -> 1.11 # fs/afs/internal.h 1.2 -> 1.3 # drivers/bluetooth/Kconfig 1.1 -> 1.2 # drivers/scsi/sim710_d.h_shipped 1.3 -> (deleted) # drivers/scsi/aic7xxx/scsi_iu.h 1.1 -> 1.2 # net/netsyms.c 1.44 -> 1.46 # drivers/usb/serial/usb-serial.c 1.69 -> 1.70 # include/linux/pci_ids.h 1.78 -> 1.80 # drivers/acpi/scan.c 1.13 -> 1.14 # drivers/isdn/hisax/l3dss1.c 1.8 -> 1.9 # sound/synth/emux/emux_seq.c 1.5 -> 1.7 # drivers/scsi/aic7xxx_old.c 1.38 -> 1.42 # fs/partitions/Makefile 1.9 -> 1.10 # net/802/Makefile 1.10 -> 1.11 # sound/core/seq/oss/Makefile 1.7 -> 1.8 # sound/core/pcm_lib.c 1.12 -> 1.15 # arch/sparc/kernel/sys_sunos.c 1.20 -> 1.22 # drivers/hotplug/Kconfig 1.5 -> 1.6 # drivers/sbus/char/bbc_envctrl.c 1.2 -> 1.3 # arch/mips/ite-boards/generic/time.c 1.3 -> 1.4 # sound/pci/trident/trident_synth.c 1.3 -> 1.4 # include/asm-ia64/system.h 1.28 -> 1.31 # drivers/acpi/ac.c 1.12 -> 1.13 # include/asm-ppc/system.h 1.15 -> 1.16 # sound/core/ioctl32/ioctl32.h 1.7 -> 1.8 # include/asm-ia64/tlb.h 1.12 -> 1.13 # sound/isa/sb/Makefile 1.10 -> 1.13 # arch/mips/kernel/Makefile 1.9 -> 1.10 # sound/usb/usbquirks.h 1.7 -> 1.10 # sound/isa/es18xx.c 1.11 -> 1.13 # arch/arm/kernel/traps.c 1.21 -> 1.22 # arch/um/include/mconsole.h 1.2 -> 1.3 # sound/isa/gus/gus_pcm.c 1.6 -> 1.7 # include/asm-ppc64/signal.h 1.2 -> 1.3 # drivers/isdn/hysdn/hysdn_boot.c 1.5 -> 1.6 # arch/alpha/kernel/Makefile 1.21 -> 1.23 # drivers/char/agp/agp.h 1.37 -> 1.38 # arch/ia64/mm/init.c 1.30 -> 1.32 # drivers/acpi/utilities/utcopy.c 1.19 -> 1.20 # net/Makefile 1.18 -> 1.19 # arch/ppc/amiga/Makefile 1.8 -> 1.9 # arch/sparc64/kernel/systbls.S 1.28 -> 1.29 # sound/isa/ad1816a/Makefile 1.4 -> 1.5 # drivers/mtd/Makefile 1.9 -> 1.10 # arch/um/kernel/skas/include/uaccess.h 1.4 -> 1.5 # drivers/input/misc/Kconfig 1.2 -> 1.3 # arch/um/kernel/tt/mem.c 1.1 -> 1.2 # Documentation/networking/ip-sysctl.txt 1.13 -> 1.14 # sound/isa/gus/gus_mem.c 1.3 -> 1.5 # include/linux/usb.h 1.67 -> 1.68 # arch/um/kernel/irq_user.c 1.7 -> 1.9 # drivers/net/sis900.c 1.29 -> 1.30 # sound/isa/sb/sb_mixer.c 1.7 -> 1.9 # drivers/hotplug/cpci_hotplug_core.c 1.2 -> 1.3 # arch/um/kernel/skas/trap_user.c 1.2 -> 1.4 # arch/mips/kernel/time.c 1.6 -> 1.7 # arch/ia64/hp/zx1/hpzx1_misc.c 1.12 -> 1.13 # drivers/scsi/aacraid/aachba.c 1.6 -> 1.9 # drivers/usb/storage/protocol.h 1.4 -> 1.5 # sound/core/seq/instr/ainstr_fm.c 1.2 -> 1.3 # arch/sparc/math-emu/math.c 1.1 -> 1.2 # arch/i386/kernel/cpu/cpufreq/Makefile 1.3 -> 1.4 # include/asm-ppc64/ppc32.h 1.10 -> 1.11 # include/asm-generic/rtc.h 1.2 -> 1.3 # drivers/input/mouse/rpcmouse.c 1.11 -> 1.12 # sound/isa/sb/sb8_main.c 1.3 -> 1.4 # drivers/usb/misc/atmsar.h 1.2 -> 1.3 # fs/super.c 1.93 -> 1.95 # sound/pci/rme9652/rme9652.c 1.13 -> 1.15 # arch/ia64/hp/sim/simscsi.c 1.10 -> 1.11 # drivers/atm/Kconfig 1.1 -> 1.3 # net/sunrpc/auth_gss/Makefile 1.2 -> 1.3 # drivers/net/appletalk/Kconfig 1.2 -> 1.3 # drivers/acpi/include/actbl71.h 1.9 -> 1.10 include/acpi/actbl71.h (moved) # fs/jbd/Makefile 1.3 -> 1.4 # fs/binfmt_elf.c 1.34 -> 1.37 # arch/um/uml.lds.S 1.9.1.2 -> 1.16 # arch/i386/kernel/signal.c 1.26 -> 1.27 # mm/memory.c 1.107 -> 1.111 # drivers/net/irda/Makefile 1.13 -> 1.14 # include/sound/sb.h 1.4 -> 1.6 # drivers/isdn/hardware/avm/Makefile 1.4 -> 1.5 # arch/s390x/kernel/signal32.c 1.12 -> 1.13 # drivers/scsi/sg.c 1.45 -> 1.47 # drivers/scsi/aic7xxx/aic7xxx_core.c 1.17 -> 1.20 # drivers/usb/serial/pl2303.c 1.33 -> 1.34 # fs/jfs/super.c 1.32 -> 1.33 # arch/v850/Kconfig 1.5 -> 1.6 # drivers/cdrom/Makefile 1.4 -> 1.5 # drivers/s390/char/Makefile 1.11 -> 1.12 # arch/ia64/kernel/ia64_ksyms.c 1.18 -> 1.19 # fs/xfs/xfs_trans.c 1.2 -> 1.4 # arch/sparc64/kernel/winfixup.S 1.3 -> 1.4 # drivers/net/e1000/e1000_ethtool.c 1.17 -> 1.19 # drivers/video/console/Makefile 1.14 -> 1.15 # arch/sparc/kernel/entry.S 1.8 -> 1.10 # drivers/char/ip2/i2os.h 1.1 -> 1.2 # drivers/ide/Kconfig 1.5 -> 1.7 # drivers/fc4/Makefile 1.5 -> 1.6 # arch/um/kernel/trap_user.c 1.8 -> 1.9 # drivers/net/pcmcia/com20020_cs.c 1.5 -> 1.6 # arch/ppc/kernel/pci.c 1.21 -> 1.22 # fs/afs/cmservice.c 1.2 -> 1.3 # drivers/net/acenic.c 1.25 -> 1.26 # arch/ppc64/kernel/rtas-proc.c 1.3 -> 1.4 # drivers/net/e100/e100_main.c 1.37 -> 1.41 # include/linux/pci.h 1.60 -> 1.61 # drivers/scsi/aic7xxx/aic79xx_inline.h 1.3 -> 1.5 # sound/isa/sb/sb16_main.c 1.7 -> 1.9 # arch/um/drivers/net_kern.c 1.8 -> 1.9 # arch/ia64/kernel/mca.c 1.16 -> 1.17 # drivers/isdn/capi/Makefile 1.10 -> 1.11 # arch/ia64/kernel/iosapic.c 1.16 -> 1.18 # drivers/scsi/osst.c 1.38 -> 1.39 # arch/i386/kernel/setup.c 1.65 -> 1.67 # arch/ia64/kernel/process.c 1.21 -> 1.25 # arch/alpha/kernel/signal.c 1.14 -> 1.15 # include/asm-arm/signal.h 1.4 -> 1.5 # arch/mips/Kconfig 1.7 -> 1.8 # include/sound/pcm.h 1.9 -> 1.11 # drivers/scsi/gdth_proc.c 1.7 -> 1.11 # include/asm-sparc64/mman.h 1.3 -> 1.4 # drivers/input/touchscreen/Kconfig 1.1 -> 1.2 # net/ipv4/fib_hash.c 1.9 -> 1.10 # arch/um/drivers/ubd_kern.c 1.19.1.1 -> 1.26 # arch/um/kernel/helper.c 1.3.1.1 -> 1.8 # sound/synth/emux/Makefile 1.6 -> 1.9 # drivers/scsi/AM53C974.c 1.8 -> 1.10 # sound/i2c/tea6330t.c 1.4 -> 1.5 # include/sound/cs46xx_dsp_scb_types.h 1.1 -> 1.2 # arch/ia64/lib/memcpy_mck.S 1.2 -> 1.3 # arch/ia64/lib/memset.S 1.5 -> 1.6 # arch/um/Kconfig 1.3.1.1 -> 1.8 # drivers/serial/Makefile 1.12 -> 1.13 # arch/arm/mach-ebsa110/Makefile 1.5 -> 1.7 # arch/arm/mach-footbridge/Makefile 1.8 -> 1.9 # fs/jfs/jfs_xtree.c 1.7 -> 1.8 # arch/ia64/hp/sim/simserial.c 1.9 -> 1.10 # arch/ia64/kernel/acpi.c 1.24 -> 1.27 # drivers/mtd/maps/elan-104nc.c 1.3 -> 1.4 # include/linux/sdla_x25.h 1.2 -> 1.3 # arch/i386/kernel/time.c 1.24 -> 1.26 # arch/arm/mach-rpc/Makefile 1.4 -> 1.5 # include/linux/hugetlb.h 1.6 -> 1.10 # arch/um/kernel/skas/include/mode_kern.h 1.3 -> 1.5 # include/asm-ia64/kmap_types.h 1.3 -> 1.4 # include/asm-ppc64/kmap_types.h 1.3 -> 1.4 # arch/ia64/kernel/machvec.c 1.2 -> 1.3 # include/linux/spinlock.h 1.20 -> 1.21 # drivers/scsi/scsi_syms.c 1.24 -> 1.26 # drivers/media/video/zr36120.c 1.16 -> 1.17 # drivers/ide/pci/sis5513.c 1.9 -> 1.10 # drivers/usb/storage/isd200.c 1.26 -> 1.27 # sound/core/seq/instr/ainstr_iw.c 1.2 -> 1.3 # drivers/usb/storage/scsiglue.c 1.33.1.2 -> 1.37 # drivers/scsi/scsi_lib.c 1.61 -> 1.68 # scripts/Makefile.lib 1.10 -> 1.13 # arch/sparc64/kernel/time.c 1.19 -> 1.20 # sound/core/ioctl32/rawmidi32.c 1.7 -> 1.8 # sound/pci/ice1712/amp.c 1.1 -> 1.3 # sound/i2c/l3/uda1341.c 1.4 -> 1.5 # drivers/net/skfp/cfm.c 1.1 -> 1.2 # arch/x86_64/kernel/mtrr/Makefile 1.1 -> 1.2 # drivers/scsi/sim710.h 1.8 -> (deleted) # drivers/base/fs/Makefile 1.7 -> 1.8 # drivers/pnp/Kconfig 1.2 -> 1.3 # drivers/acpi/include/actbl.h 1.10 -> 1.12 include/acpi/actbl.h (moved) # drivers/acpi/include/acpi.h 1.6 -> 1.7 include/acpi/acpi.h (moved) # net/netlink/af_netlink.c 1.15 -> 1.16 # arch/um/drivers/ssl.c 1.6 -> 1.7 # include/asm-alpha/elf.h 1.2 -> 1.3 # include/asm-i386/mmzone.h 1.6 -> 1.7 # arch/um/os-Linux/drivers/ethertap_user.c 1.1 -> 1.2 # drivers/ide/Makefile 1.8 -> 1.9 # arch/mips64/sgi-ip22/ip22-timer.c 1.3 -> 1.4 # drivers/eisa/Makefile 1.1 -> 1.2 # drivers/usb/core/usb.c 1.113 -> 1.114 # fs/jfs/jfs_logmgr.c 1.41 -> 1.43 # include/asm-sparc/ide.h 1.12 -> 1.13 # drivers/scsi/scsi.c 1.82 -> 1.90 # arch/s390x/Makefile 1.20 -> 1.22 # arch/ppc64/kernel/traps.c 1.11 -> 1.12 # arch/um/sys-i386/fault.c 1.1 -> 1.2 # include/asm-alpha/signal.h 1.4 -> 1.5 # arch/alpha/kernel/time.c 1.12 -> 1.14 # arch/ppc64/kernel/head.S 1.19 -> 1.22 # net/irda/Kconfig 1.1 -> 1.2 # drivers/i2c/i2c-proc.c 1.13 -> 1.14 # arch/ia64/mm/hugetlbpage.c 1.4 -> 1.7 # arch/arm/mach-pxa/Makefile 1.5 -> 1.6 # fs/jfs/jfs_umount.c 1.8 -> 1.9 # arch/um/kernel/tt/Makefile 1.10 -> 1.12 # arch/ia64/tools/Makefile 1.11 -> 1.12 # drivers/acorn/scsi/acornscsi.c 1.22 -> 1.23 # drivers/acorn/scsi/arxescsi.c 1.14 -> 1.16 # crypto/cipher.c 1.10 -> 1.11 # drivers/acpi/power.c 1.13 -> 1.14 # Documentation/sysctl/kernel.txt 1.5 -> 1.6 # sound/pci/emu10k1/emufx.c 1.14 -> 1.15 # include/asm-ppc64/uaccess.h 1.4 -> 1.5 # drivers/scsi/pcmcia/qlogic_stub.c 1.9 -> 1.11 # arch/x86_64/mm/hugetlbpage.c 1.2 -> 1.5 # drivers/mca/Makefile 1.5 -> 1.6 # drivers/s390/char/sclp_tty.h 1.2 -> 1.3 # sound/isa/gus/gus_synth.c 1.4 -> 1.5 # drivers/scsi/aic7xxx/aic7xxx_reg_print.c_shipped 1.3 -> 1.4 # drivers/scsi/aic7xxx/aiclib.c 1.2 -> 1.3 # arch/um/kernel/process_kern.c 1.13 -> 1.15 # drivers/net/pcmcia/ibmtr_cs.c 1.9 -> 1.10 # arch/um/drivers/mcast_user.c 1.1 -> 1.2 # drivers/net/sk98lin/skgeinit.c 1.3 -> 1.4 # mm/oom_kill.c 1.18 -> 1.19 # include/sound/ac97_codec.h 1.13 -> 1.14 # arch/arm/mm/proc-arm926.S 1.13 -> 1.14 # drivers/scsi/aic7xxx/aic7xxx.h 1.7 -> 1.8 # drivers/acpi/resources/rscalc.c 1.13 -> 1.14 # arch/arm/Kconfig 1.7 -> 1.8 # arch/m68k/atari/hades-pci.c 1.5 -> 1.6 # net/bluetooth/rfcomm/Kconfig 1.1 -> 1.2 # arch/sparc/kernel/pcic.c 1.16 -> 1.17 # include/sound/timer.h 1.2 -> 1.4 # arch/m68k/math-emu/fp_scan.S 1.2 -> 1.3 # drivers/input/serio/Kconfig 1.5 -> 1.6 # arch/arm/kernel/setup.c 1.27 -> 1.28 # include/asm-ia64/intrinsics.h 1.1 -> 1.3 # fs/xfs/support/move.c 1.3 -> 1.4 # include/asm-m68knommu/signal.h 1.1 -> 1.2 # sound/isa/gus/interwave.c 1.8 -> 1.9 # drivers/usb/storage/scsiglue.h 1.4 -> 1.5 # include/asm-i386/apicdef.h 1.6 -> 1.7 # drivers/net/mac8390.c 1.9 -> 1.10 # drivers/usb/serial/pl2303.h 1.6 -> 1.7 # arch/um/kernel/skas/tlb.c 1.2 -> 1.5 # net/sunrpc/sched.c 1.20 -> 1.21 # include/linux/apm_bios.h 1.6 -> 1.7 # drivers/acpi/include/acmacros.h 1.18 -> 1.19 include/acpi/acmacros.h (moved) # drivers/acpi/ec.c 1.18 -> 1.19 # mm/mremap.c 1.27 -> 1.28 # arch/ppc64/Kconfig 1.9 -> 1.11 # kernel/acct.c 1.16 -> 1.17 # arch/um/kernel/tempfile.c 1.3 -> 1.4 # arch/um/kernel/skas/include/mode.h 1.1 -> 1.2 # drivers/scsi/eata_generic.h 1.3 -> 1.4 # drivers/i2c/chips/Kconfig 1.3 -> 1.4 # include/linux/sysctl.h 1.38 -> 1.39 # drivers/md/Makefile 1.10 -> 1.11 # sound/core/ioctl32/timer32.c 1.7 -> 1.8 # arch/ia64/ia32/ia32_entry.S 1.15 -> 1.18 # drivers/net/tg3.c 1.42 -> 1.58 # include/asm-sh/signal.h 1.2 -> 1.3 # include/asm-i386/memblk.h 1.2 -> 1.3 # drivers/net/pcmcia/axnet_cs.c 1.7 -> 1.8 # sound/i2c/Makefile 1.8 -> 1.9 # arch/arm/mach-clps7500/Makefile 1.4 -> 1.5 # sound/pci/ice1712/ak4524.c 1.6 -> 1.7 # include/sound/mixer_oss.h 1.5 -> 1.6 # net/ipv6/tcp_ipv6.c 1.32 -> 1.36 # drivers/net/arlan.h 1.3 -> 1.4 # arch/um/kernel/signal_kern.c 1.5.1.1 -> 1.12 # include/asm-ia64/perfmon.h 1.9 -> 1.11 # fs/Kconfig 1.17 -> 1.18 # arch/ia64/kernel/sys_ia64.c 1.18 -> 1.20 # arch/sparc64/kernel/signal.c 1.22 -> 1.24 # arch/um/drivers/Makefile 1.9 -> 1.10 # drivers/telephony/Makefile 1.4 -> 1.5 # arch/arm/mach-anakin/Makefile 1.4 -> 1.5 # include/asm-um/page.h 1.3 -> 1.4 # arch/um/kernel/tt/trap_user.c 1.1 -> 1.2 # net/ipv4/xfrm_user.c 1.6 -> 1.8 # drivers/fc4/fc.c 1.10 -> 1.11 # arch/sparc/kernel/time.c 1.11 -> 1.12 # fs/direct-io.c 1.26 -> 1.27 # drivers/pci/proc.c 1.23 -> 1.24 # drivers/char/agp/Kconfig 1.7 -> 1.8 # fs/buffer.c 1.179 -> 1.182 # arch/ia64/kernel/signal.c 1.18 -> 1.19 # fs/Makefile 1.55 -> 1.56 # drivers/media/radio/Makefile 1.8 -> 1.9 # drivers/net/wan/Makefile 1.14 -> 1.15 # drivers/block/loop.c 1.78 -> 1.80 # drivers/usb/core/hcd.c 1.52 -> 1.54 # drivers/usb/input/hid-core.c 1.46 -> 1.47 # include/sound/trident.h 1.4 -> 1.5 # net/ipv4/esp.c 1.7 -> 1.12 # fs/jffs/intrep.c 1.19 -> 1.21 # drivers/pcmcia/sa1100_trizeps.c 1.3 -> 1.4 # drivers/acpi/include/acevents.h 1.11 -> 1.12 include/acpi/acevents.h (moved) # drivers/acpi/include/actypes.h 1.19 -> 1.20 include/acpi/actypes.h (moved) # arch/ppc64/kernel/htab.c 1.28 -> 1.29 # arch/um/include/mode.h 1.1 -> 1.2 # drivers/net/sk98lin/skvpd.c 1.3 -> 1.4 # drivers/net/declance.c 1.12 -> 1.13 # net/ipv6/netfilter/Makefile 1.9 -> 1.10 # arch/cris/kernel/Makefile 1.12 -> 1.13 # arch/arm/mach-ebsa110/time.c 1.2 -> (deleted) # fs/afs/kafstimod.c 1.2 -> 1.3 # drivers/scsi/pcmcia/fdomain_stub.c 1.9 -> 1.11 # arch/m68k/Kconfig 1.8 -> 1.9 # drivers/char/tty_io.c 1.55 -> 1.56 # arch/sh/kernel/Makefile 1.9 -> 1.10 # include/sound/cs46xx_dsp_spos.h 1.7 -> 1.8 # include/asm-sparc/signal.h 1.2 -> 1.3 # drivers/mtd/chips/jedec.c 1.5 -> 1.6 # arch/ppc64/kernel/process.c 1.25 -> 1.26 # fs/proc/array.c 1.38 -> 1.41 # drivers/acpi/include/achware.h 1.10 -> 1.11 include/acpi/achware.h (moved) # fs/jfs/jfs_txnmgr.c 1.34 -> 1.37 # include/asm-arm/arch-rpc/io.h 1.5 -> 1.6 # sound/i2c/l3/Makefile 1.3 -> 1.4 # sound/pci/maestro3.c 1.13 -> 1.15 # MAINTAINERS 1.116 -> 1.117 # arch/parisc/Kconfig 1.9 -> 1.10 # sound/pci/intel8x0.c 1.21 -> 1.25 # arch/um/kernel/tt/ptproxy/proxy.c 1.4 -> 1.5 # sound/isa/es1688/es1688_lib.c 1.6 -> 1.7 # drivers/isdn/hardware/eicon/diva_didd.c 1.2 -> 1.3 # include/asm-um/ptrace-i386.h 1.1 -> 1.2 # include/asm-generic/rmap.h 1.3 -> 1.4 # arch/sparc64/math-emu/math.c 1.7 -> 1.8 # drivers/scsi/scsi_debug.c 1.25.1.1 -> 1.28 # drivers/acpi/include/actbl2.h 1.13 -> 1.14 include/acpi/actbl2.h (moved) # arch/sparc64/kernel/sys_sunos32.c 1.25 -> 1.27 # arch/ia64/ia32/sys_ia32.c 1.36 -> 1.42 # sound/core/ioctl32/pcm32.c 1.9 -> 1.10 # drivers/scsi/aic7xxx/aic79xx_osm.h 1.11 -> 1.16 # drivers/scsi/aic7xxx/aic7xxx_reg.h_shipped 1.9 -> 1.10 # drivers/acpi/include/aclocal.h 1.23 -> 1.24 include/acpi/aclocal.h (moved) # sound/pci/rme9652/Makefile 1.5 -> 1.6 # sound/core/device.c 1.8 -> 1.10 # arch/um/kernel/skas/syscall_kern.c 1.1 -> 1.2 # include/asm-s390x/signal.h 1.4 -> 1.5 # mm/mmap.c 1.63 -> 1.69 # arch/um/Makefile 1.16.1.1 -> 1.25 # net/bridge/netfilter/Makefile 1.2 -> 1.3 # net/rxrpc/Makefile 1.3 -> 1.4 # sound/pci/ac97/Makefile 1.10 -> 1.11 # arch/mips/mm/Makefile 1.6 -> 1.7 # sound/usb/usbaudio.h 1.9 -> 1.12 # drivers/media/radio/Kconfig 1.1 -> 1.2 # arch/ia64/hp/sim/simeth.c 1.3 -> 1.4 # arch/alpha/Makefile 1.21 -> 1.23 # include/asm-sparc64/compat.h 1.6 -> 1.7 # drivers/scsi/gdth.c 1.17 -> 1.20 # sound/core/timer.c 1.12 -> 1.14 # sound/drivers/opl3/opl3_seq.c 1.8 -> 1.9 # arch/um/drivers/port_user.c 1.3.1.1 -> 1.9 # mm/highmem.c 1.39 -> 1.40 # arch/s390x/kernel/signal.c 1.15 -> 1.16 # arch/um/kernel/time_kern.c 1.5 -> 1.8 # arch/um/include/irq_user.h 1.2 -> 1.3 # net/unix/af_unix.c 1.34 -> 1.35 # scripts/ver_linux 1.7 -> 1.8 # fs/read_write.c 1.25 -> 1.28 # include/linux/time.h 1.7 -> 1.8 # mm/Makefile 1.21 -> 1.23 # fs/lockd/svc.c 1.18 -> 1.19 # net/sched/sch_htb.c 1.5 -> 1.6 # arch/um/os-Linux/drivers/tuntap_kern.c 1.2 -> 1.3 # Documentation/filesystems/jfs.txt 1.3 -> 1.4 # drivers/scsi/53c8xx_u.h_shipped 1.2 -> (deleted) # arch/sparc64/kernel/sys_sparc32.c 1.59 -> 1.61 # net/irda/irnet/Kconfig 1.1 -> 1.2 # arch/um/drivers/harddog_kern.c 1.2 -> 1.3 # drivers/net/arlan.c 1.10 -> 1.12 # drivers/usb/class/cdc-acm.c 1.31 -> 1.33 # sound/isa/wavefront/wavefront_fx.c 1.6 -> 1.8 # drivers/hotplug/cpci_hotplug_pci.c 1.3 -> 1.5 # sound/pci/trident/trident_main.c 1.9 -> 1.13 # sound/isa/ad1816a/ad1816a_lib.c 1.6 -> 1.7 # arch/m68knommu/kernel/signal.c 1.3 -> 1.4 # drivers/scsi/ide-scsi.c 1.21 -> 1.23 # arch/v850/kernel/time.c 1.2 -> 1.3 # arch/um/kernel/tt/include/mode.h 1.1 -> 1.2 # include/asm-i386/unistd.h 1.22 -> 1.23 # sound/core/oss/mixer_oss.c 1.13 -> 1.15 # drivers/usb/storage/usb.h 1.23 -> 1.25 # drivers/scsi/eata_pio.c 1.10 -> 1.12 # arch/um/kernel/tt/include/uaccess.h 1.2 -> 1.3 # arch/mips/mips-boards/generic/time.c 1.4 -> 1.5 # arch/sh/Makefile 1.13 -> 1.15 # drivers/acorn/scsi/powertec.c 1.19 -> 1.21 # drivers/acpi/include/acparser.h 1.13 -> 1.14 include/acpi/acparser.h (moved) # drivers/scsi/sr_ioctl.c 1.27 -> 1.29 # net/appletalk/Makefile 1.6 -> 1.7 # fs/namespace.c 1.33 -> 1.34 # drivers/scsi/pcmcia/Kconfig 1.2 -> 1.3 # net/8021q/vlan.h 1.2 -> 1.3 # drivers/acpi/include/amlcode.h 1.14 -> 1.15 include/acpi/amlcode.h (moved) # drivers/usb/host/ohci-mem.c 1.13 -> 1.14 # drivers/usb/host/ehci-hcd.c 1.42 -> 1.43 # fs/ext2/super.c 1.43 -> 1.44 # arch/um/kernel/tt/syscall_user.c 1.1 -> 1.2 # include/asm-arm/module.h 1.3 -> 1.4 # fs/smbfs/smbiod.c 1.5 -> 1.6 # arch/um/defconfig 1.6 -> 1.7 # include/sound/asound.h 1.10 -> 1.12 # include/asm-ia64/ptrace.h 1.5 -> 1.8 # include/asm-um/module.h 1.1 -> 1.2 # drivers/net/tulip/de4x5.h 1.4 -> 1.5 # drivers/char/watchdog/Kconfig 1.3 -> 1.5 # drivers/message/fusion/Makefile 1.11 -> 1.12 # arch/ia64/sn/io/sn1/pcibr.c 1.11 -> 1.12 # drivers/scsi/pci2000.c 1.10 -> 1.12 # arch/m68knommu/kernel/time.c 1.1 -> 1.2 # sound/isa/gus/gus_mem_proc.c 1.5 -> 1.6 # fs/ext3/inode.c 1.58 -> 1.59 # arch/sparc64/mm/hugetlbpage.c 1.3 -> 1.5 # lib/zlib_deflate/Makefile 1.3 -> 1.4 # drivers/hotplug/pci_hotplug_util.c 1.6 -> (deleted) # arch/ia64/kernel/head.S 1.7 -> 1.8 # drivers/scsi/sym53c8xx.c 1.21 -> 1.23 # include/asm-i386/cpu.h 1.2 -> 1.3 # drivers/net/irda/irport.c 1.12 -> 1.13 # arch/cris/drivers/serial.c 1.9 -> 1.10 # Documentation/md.txt 1.1 -> 1.2 # arch/um/kernel/Makefile 1.16 -> 1.19 # arch/m68k/mvme16x/Makefile 1.3 -> 1.4 # include/asm-sparc64/delay.h 1.4 -> 1.5 # mm/page-writeback.c 1.54 -> 1.55 # fs/dquot.c 1.56 -> 1.58 # arch/arm/mach-sa1100/pcipool.c 1.4 -> 1.5 arch/arm/common/sa1111-pcipool.c (moved) # arch/m68k/atari/Makefile 1.5 -> 1.6 # sound/core/sound.c 1.17 -> 1.20 # drivers/scsi/qlogicpti.c 1.15 -> 1.16 # drivers/acpi/processor.c 1.27 -> 1.32 # include/net/ip.h 1.13 -> 1.14 # arch/x86_64/kernel/time.c 1.7 -> 1.10 # net/ipv4/tcp_output.c 1.19 -> 1.21 # sound/core/pcm_memory.c 1.5 -> 1.8 # sound/pci/trident/trident_memory.c 1.4 -> 1.5 # net/irda/irnet/irnet.h 1.14 -> 1.15 # sound/pci/es1938.c 1.12 -> 1.15 # fs/xfs/xfs_inode_item.c 1.5 -> 1.6 # include/asm-ia64/elf.h 1.5 -> 1.7 # security/Kconfig 1.4 -> 1.5 # sound/pci/trident/Makefile 1.4 -> 1.7 # drivers/net/arcnet/Makefile 1.5 -> 1.6 # arch/um/include/choose-mode.h 1.1 -> 1.2 # Documentation/s390/s390dbf.txt 1.2 -> 1.3 # include/asm-mips/ng1hw.h 1.1 -> 1.2 # drivers/video/aty/atyfb_base.c 1.48 -> 1.50 # arch/m68knommu/Kconfig 1.4 -> 1.5 # arch/x86_64/kernel/signal.c 1.11 -> 1.12 # sound/core/Makefile 1.22 -> 1.23 # drivers/message/i2o/Makefile 1.5 -> 1.6 # Documentation/scsi/ibmmca.txt 1.4 -> 1.6 # sound/core/seq/seq_timer.h 1.3 -> 1.4 # sound/isa/es1688/Makefile 1.4 -> 1.5 # arch/m68knommu/Makefile 1.3 -> 1.5 # include/linux/page-flags.h 1.34 -> 1.36 # arch/arm/mach-sa1100/stork.c 1.6 -> 1.7 # arch/alpha/kernel/core_irongate.c 1.8 -> 1.9 # arch/ppc64/kernel/sys_ppc32.c 1.44 -> 1.45 # arch/arm/kernel/time.c 1.12 -> 1.13 # sound/core/seq/seq_ports.c 1.7 -> 1.8 # arch/sparc/kernel/signal.c 1.18 -> 1.19 # fs/xfs/Makefile 1.8 -> 1.9 # sound/pci/es1968.c 1.14 -> 1.16 # drivers/net/fealnx.c 1.23 -> 1.24 # sound/drivers/mpu401/mpu401.c 1.6 -> 1.7 # Documentation/SubmittingDrivers 1.6 -> 1.7 # drivers/video/riva/fbdev.c 1.32 -> 1.33 # drivers/scsi/fdomain.c 1.15 -> 1.16 # arch/um/kernel/syscall_kern.c 1.5.1.1 -> 1.10 # drivers/hotplug/Makefile 1.11 -> 1.13 # arch/um/include/sysdep-i386/sigcontext.h 1.2 -> 1.3 # fs/jfs/jfs_dtree.c 1.18 -> 1.20 # sound/pci/sonicvibes.c 1.9 -> 1.12 # security/Makefile 1.4 -> 1.5 # drivers/scsi/constants.c 1.8 -> 1.10 # fs/seq_file.c 1.5 -> 1.6 # include/asm-x86_64/compat.h 1.4 -> 1.5 # arch/um/drivers/xterm_kern.c 1.3 -> 1.4 # arch/arm/mach-integrator/pci_v3.c 1.13 -> 1.15 # include/asm-ppc/kmap_types.h 1.13 -> 1.14 # sound/core/seq/instr/ainstr_gf1.c 1.2 -> 1.3 # drivers/acorn/scsi/cumana_2.c 1.20 -> 1.22 # drivers/acpi/acpi_drivers.h 1.12 -> 1.13 include/acpi/acpi_drivers.h (moved) # drivers/serial/8250_gsc.c 1.2 -> 1.3 # include/asm-i386/kmap_types.h 1.12 -> 1.13 # drivers/net/skfp/h/supern_2.h 1.1 -> 1.2 # kernel/module.c 1.51 -> 1.62 # arch/s390x/kernel/linux32.c 1.33 -> 1.34 # include/linux/security.h 1.9 -> 1.14 # drivers/usb/storage/dpcm.c 1.5 -> 1.6 # drivers/acpi/include/acdispat.h 1.11 -> 1.12 include/acpi/acdispat.h (moved) # drivers/net/e1000/e1000_proc.c 1.9 -> (deleted) # include/linux/quota.h 1.20 -> 1.21 # sound/usb/usbaudio.c 1.24 -> 1.30 # drivers/usb/serial/Kconfig 1.4 -> 1.5 # drivers/scsi/in2000.c 1.14 -> 1.16 # drivers/scsi/qlogicfc.c 1.22 -> 1.25 # include/net/sock.h 1.29 -> 1.30 # include/asm-ppc64/elf.h 1.4 -> 1.7 # include/asm-x86_64/kmap_types.h 1.6 -> 1.7 # include/asm-s390/signal.h 1.3 -> 1.4 # Documentation/scsi/aic79xx.txt 1.6 -> 1.7 # net/ipv4/sysctl_net_ipv4.c 1.6 -> 1.7 # sound/synth/emux/soundfont.c 1.3 -> 1.4 # drivers/input/power.c 1.3 -> 1.4 # arch/ia64/kernel/perfmon_mckinley.h 1.2 -> 1.5 # arch/ia64/lib/swiotlb.c 1.11 -> 1.12 # drivers/ide/pci/pdc202xx_new.c 1.9 -> 1.10 # arch/ppc64/kernel/smp.c 1.27 -> 1.28 # drivers/usb/net/Kconfig 1.2 -> 1.3 # include/asm-cris/io.h 1.6 -> 1.7 # arch/x86_64/kernel/Makefile 1.14 -> 1.15 # fs/nfs/write.c 1.37 -> 1.38 # fs/ext2/Makefile 1.6 -> 1.7 # fs/xfs/xfs_trans.h 1.3 -> 1.4 # include/asm-um/ptrace-generic.h 1.2 -> 1.3 # drivers/net/pcmcia/Kconfig 1.1 -> 1.2 # arch/um/kernel/unmap.c 1.1 -> 1.2 arch/um/kernel/tt/unmap.c (moved) # include/asm-mips64/signal.h 1.2 -> 1.3 # drivers/net/tokenring/smctr_firmware.h 1.2 -> 1.3 # arch/x86_64/mm/Makefile 1.6 -> 1.7 # Documentation/kbuild/makefiles.txt 1.5 -> 1.6 # drivers/scsi/53c7,8xx.h 1.5 -> (deleted) # include/asm-i386/pgtable.h 1.22 -> 1.24 # drivers/net/irda/Kconfig 1.2 -> 1.3 # drivers/net/hamradio/yam.c 1.11 -> 1.12 # arch/ia64/ia32/ia32_ioctl.c 1.5 -> 1.6 # drivers/acpi/include/acconfig.h 1.29 -> 1.31 include/acpi/acconfig.h (moved) # fs/nfs/nfs4proc.c 1.11 -> 1.12 # drivers/media/video/saa5249.c 1.10 -> 1.11 # arch/um/kernel/tlb.c 1.7 -> 1.8 # include/sound/info.h 1.6 -> 1.8 # net/ipv6/route.c 1.15 -> 1.16 # drivers/pcmcia/Kconfig 1.1 -> 1.2 # drivers/serial/mux.c 1.3 -> 1.4 # drivers/net/tulip/Kconfig 1.1 -> 1.2 # drivers/usb/storage/datafab.h 1.4 -> 1.5 # drivers/parisc/sba_iommu.c 1.6 -> 1.8 # arch/i386/mm/init.c 1.41 -> 1.43 # drivers/acpi/battery.c 1.13 -> 1.14 # arch/ppc/kernel/time.c 1.18 -> 1.19 # net/ipv4/tcp_minisocks.c 1.21 -> 1.22 # drivers/usb/input/Kconfig 1.2 -> 1.3 # arch/sparc/mm/sun4c.c 1.23 -> 1.24 # arch/arm/mach-sa1100/leds.h 1.6 -> 1.7 # drivers/media/video/bttv-driver.c 1.24 -> 1.25 # net/ipv6/Makefile 1.6 -> 1.7 # drivers/char/ftape/zftape/Makefile 1.4 -> 1.5 # sound/oss/i810_audio.c 1.31 -> 1.32 # sound/oss/trident.c 1.28 -> 1.29 # arch/alpha/Kconfig 1.13 -> 1.15 # arch/arm/kernel/ecard.c 1.18 -> 1.19 # arch/m68k/kernel/Makefile 1.7 -> 1.8 # fs/jfs/namei.c 1.23 -> 1.24 # drivers/s390/char/tape_char.c 1.1 -> 1.2 # drivers/block/DAC960.c 1.50 -> 1.51 # drivers/block/DAC960.h 1.16 -> 1.17 # Documentation/scsi/ChangeLog.sym53c8xx 1.4 -> 1.5 # sound/core/seq/seq_timer.c 1.7 -> 1.8 # sound/core/seq/instr/ainstr_simple.c 1.2 -> 1.3 # drivers/usb/storage/unusual_devs.h 1.23 -> 1.24 # drivers/acpi/include/platform/aclinux.h 1.16 -> 1.17 include/acpi/platform/aclinux.h (moved) # arch/um/kernel/tt/gdb_kern.c 1.1 -> 1.2 # sound/core/pcm_misc.c 1.5 -> 1.7 # arch/ia64/kernel/brl_emu.c 1.4 -> 1.5 # include/linux/module.h 1.42 -> 1.49 # arch/alpha/kernel/irq.c 1.17 -> 1.18 # mm/slab.c 1.56 -> 1.60 # include/sound/pcm_sgbuf.h 1.3 -> 1.5 # arch/um/sys-i386/bugs.c 1.2 -> 1.3 # drivers/net/skfp/h/osdef1st.h 1.1 -> 1.2 # drivers/usb/serial/ftdi_sio.c 1.40 -> 1.41 # fs/xfs/xfsidbg.c 1.17 -> 1.18 # arch/s390/kernel/signal.c 1.16 -> 1.17 # drivers/pcmcia/Makefile 1.20 -> 1.21 # arch/um/main.c 1.4 -> 1.6 # drivers/net/skfp/smt.c 1.1 -> 1.2 # arch/x86_64/Kconfig 1.12 -> 1.13 # drivers/scsi/aic7xxx/aic7xxx.seq 1.8 -> 1.9 # drivers/scsi/scsi_scan.c 1.52 -> 1.58 # sound/pci/fm801.c 1.11 -> 1.13 # arch/um/kernel/um_arch.c 1.8 -> 1.11 # kernel/sched.c 1.151 -> 1.155 # include/linux/agp_backend.h 1.22 -> 1.23 # include/asm-parisc/smp.h 1.2 -> 1.3 # arch/ppc/boot/simple/misc.c 1.9 -> 1.10 # crypto/tcrypt.c 1.20 -> 1.21 # sound/drivers/mtpav.c 1.12 -> 1.13 # sound/isa/sb/sb16.c 1.11 -> 1.12 # drivers/net/irda/sir_kthread.c 1.2 -> 1.3 # sound/core/seq/seq_queue.c 1.10 -> 1.11 # fs/jbd/recovery.c 1.8 -> 1.9 # drivers/usb/host/ehci-dbg.c 1.16 -> 1.17 # drivers/usb/host/ehci-q.c 1.42 -> 1.43 # drivers/scsi/Makefile 1.34 -> 1.37 # fs/quota_v2.c 1.8 -> 1.9 # arch/cris/lib/old_checksum.c 1.4 -> 1.5 # fs/xfs/xfs_extfree_item.c 1.1 -> 1.2 # init/Kconfig 1.8 -> 1.10 # include/linux/jbd.h 1.14 -> 1.15 # drivers/acpi/osl.c 1.21 -> 1.22 # lib/zlib_inflate/Makefile 1.3 -> 1.4 # drivers/block/Makefile 1.13 -> 1.14 # drivers/sbus/char/Makefile 1.11 -> 1.12 # include/asm-um/archparam-i386.h 1.1 -> 1.2 # include/asm-i386/pgtable-3level.h 1.8 -> 1.10 # scripts/Makefile.build 1.17 -> 1.27 # arch/um/kernel/irq.c 1.3.1.1 -> 1.6 # arch/mips/dec/time.c 1.4 -> 1.5 # drivers/char/pcmcia/Kconfig 1.1 -> 1.2 # drivers/scsi/sim710.c 1.6 -> 1.8 # arch/ia64/kernel/gate.S 1.9 -> 1.13 # drivers/scsi/dpt_i2o.c 1.20.1.1 -> 1.24 # kernel/params.c 1.3 -> 1.4 # sound/pci/ens1370.c 1.20 -> 1.24 # sound/core/rtctimer.c 1.11 -> 1.13 # include/asm-cris/signal.h 1.1 -> 1.2 # drivers/hotplug/pci_hotplug_core.c 1.31 -> 1.35 # include/asm-ppc/io.h 1.11 -> 1.12 # drivers/usb/serial/ipaq.c 1.25 -> 1.26 # sound/core/seq/instr/Makefile 1.11 -> 1.14 # drivers/base/Makefile 1.17 -> 1.18 # drivers/mtd/ftl.c 1.42 -> 1.43 # net/ipv4/netfilter/Kconfig 1.1 -> 1.2 # sound/oss/Kconfig 1.3 -> 1.4 # arch/um/kernel/tt/process_kern.c 1.4 -> 1.6 # arch/s390x/kernel/time.c 1.9 -> 1.10 # drivers/input/mouse/Kconfig 1.3 -> 1.4 # fs/sysfs/inode.c 1.78 -> 1.80 # arch/um/kernel/sys_call_table.c 1.13.1.1 -> 1.19 # arch/m68k/mac/macints.c 1.7 -> 1.8 # sound/pci/cs46xx/dsp_spos.c 1.11 -> 1.12 # drivers/cdrom/Kconfig 1.1 -> 1.2 # drivers/isdn/hysdn/Kconfig 1.1 -> 1.2 # drivers/isdn/hardware/eicon/Makefile 1.2 -> 1.3 # sound/core/seq/seq_midi.c 1.7 -> 1.8 # fs/vfat/Makefile 1.3 -> 1.4 # fs/jfs/jfs_unicode.c 1.3 -> 1.4 # arch/um/include/signal_kern.h 1.1 -> 1.2 # arch/ia64/vmlinux.lds.S 1.22 -> 1.27 # arch/i386/kernel/timers/timer_pit.c 1.7 -> 1.8 # drivers/scsi/aic7xxx/aic79xx.seq 1.3 -> 1.4 # arch/ia64/hp/common/Makefile 1.6 -> 1.7 # drivers/pnp/pnpbios/Makefile 1.2 -> 1.3 # scripts/per-cpu-check.awk 1.2 -> 1.3 # drivers/char/ftape/lowlevel/ftape-init.c 1.3 -> 1.4 # drivers/usb/host/ehci.h 1.15 -> 1.17 # sound/isa/cs423x/Makefile 1.7 -> 1.8 # drivers/net/hamradio/scc.c 1.18 -> 1.19 # arch/ia64/kernel/minstate.h 1.8 -> 1.9 # include/asm-mips64/r10kcache.h 1.2 -> 1.3 # include/asm-arm/ecard.h 1.5 -> 1.6 # drivers/char/ftape/compressor/zftape-compress.c 1.7 -> 1.8 # drivers/net/Kconfig 1.10 -> 1.12 # drivers/i2c/busses/Kconfig 1.3 -> 1.4 # arch/ppc64/kernel/pci.c 1.21 -> 1.22 # arch/um/kernel/process.c 1.7 -> 1.10 # fs/jfs/jfs_dmap.c 1.12 -> 1.13 # drivers/usb/serial/ftdi_sio.h 1.4 -> 1.5 # sound/core/oss/pcm_oss.c 1.16 -> 1.19 # drivers/scsi/eata.c 1.23 -> 1.26 # net/bluetooth/Kconfig 1.1 -> 1.2 # drivers/char/drm/Kconfig 1.1 -> 1.2 # arch/ia64/mm/discontig.c 1.1 -> 1.2 # sound/pci/nm256/nm256.c 1.11 -> 1.13 # arch/i386/kernel/acpi.c 1.17 -> 1.19 # net/llc/Makefile 1.6 -> 1.7 # drivers/s390/Kconfig 1.8 -> 1.9 # drivers/net/tokenring/tmspci.c 1.10 -> 1.11 # sound/pci/ymfpci/ymfpci_main.c 1.11 -> 1.15 # drivers/telephony/ixj_pcmcia.c 1.2 -> 1.3 # arch/ppc64/kernel/misc.S 1.41 -> 1.44 # arch/sparc64/Kconfig 1.10 -> 1.11 # drivers/acpi/thermal.c 1.17 -> 1.19 # arch/sparc/kernel/Makefile 1.13 -> 1.14 # drivers/macintosh/Makefile 1.10 -> 1.11 # arch/um/drivers/pcap_user.c 1.1 -> 1.2 # kernel/exit.c 1.80 -> 1.88 # arch/arm/mm/proc-arm922.S 1.11 -> 1.12 # net/ipv4/ah.c 1.9 -> 1.11 # include/linux/types.h 1.7 -> 1.8 # sound/oss/maestro.c 1.15 -> 1.17 # arch/alpha/kernel/process.c 1.24 -> 1.25 # arch/um/drivers/pty.c 1.3 -> 1.5 # arch/um/kernel/skas/include/skas_ptrace.h 1.1 -> 1.3 arch/um/include/skas_ptrace.h (moved) # drivers/parport/parport_gsc.c 1.7 -> 1.8 # arch/um/drivers/slip_user.c 1.2 -> 1.3 # arch/ia64/kernel/irq.c 1.16 -> 1.17 # arch/x86_64/Makefile 1.21 -> 1.22 # include/asm-x86_64/proto.h 1.5 -> 1.6 # drivers/usb/input/pid.c 1.5 -> 1.6 # net/sched/Kconfig 1.1 -> 1.2 # arch/ppc/platforms/4xx/Makefile 1.6 -> 1.7 # drivers/usb/host/uhci-hcd.c 1.29 -> 1.30 # arch/um/drivers/line.c 1.8 -> 1.12 # net/irda/Makefile 1.7 -> 1.8 # drivers/hotplug/cpqphp_nvram.c 1.6 -> 1.7 # arch/sparc64/kernel/power.c 1.8 -> 1.9 # net/ax25/Kconfig 1.1 -> 1.2 # drivers/acpi/include/acinterp.h 1.19 -> 1.20 include/acpi/acinterp.h (moved) # sound/usb/usbmidi.c 1.17 -> 1.21 # arch/arm/mach-epxa10db/Makefile 1.4 -> 1.5 # arch/um/kernel/skas/mem.c 1.1 -> 1.2 # arch/alpha/kernel/ptrace.c 1.11 -> 1.12 # sound/pci/emu10k1/memory.c 1.5 -> 1.6 # drivers/scsi/pcmcia/aha152x_stub.c 1.9 -> 1.11 # fs/hugetlbfs/inode.c 1.12 -> 1.18 # arch/ppc/kernel/Makefile 1.32 -> 1.33 # include/asm-ia64/tlbflush.h 1.6 -> 1.7 # drivers/scsi/aic7xxx_old/aic7xxx_proc.c 1.7 -> 1.8 # arch/arm/boot/compressed/head.S 1.17 -> 1.18 # fs/xfs/linux/xfs_aops.c 1.22 -> 1.23 # drivers/scsi/Kconfig 1.9 -> 1.12 # include/asm-ia64/bitops.h 1.9 -> 1.10 # sound/core/seq/Makefile 1.20 -> 1.24 # drivers/net/wireless/orinoco_cs.c 1.16 -> 1.17 # arch/arm/kernel/Makefile 1.13 -> 1.15 # arch/ia64/kernel/unaligned.c 1.8 -> 1.11 # arch/ia64/tools/print_offsets.c 1.10 -> 1.13 # arch/parisc/Makefile 1.14 -> 1.17 # drivers/media/video/stradis.c 1.12 -> 1.13 # sound/drivers/dummy.c 1.12 -> 1.13 # fs/partitions/sun.c 1.5 -> 1.6 # arch/alpha/kernel/pci_impl.h 1.9 -> 1.10 # arch/ppc64/kernel/signal32.c 1.31 -> 1.35 # drivers/pci/Makefile 1.20 -> 1.22 # net/irda/irlmp.c 1.20 -> 1.21 # arch/um/kernel/user_syms.c 1.1 -> 1.3 # arch/cris/Kconfig 1.4 -> 1.5 # arch/arm/mach-sa1100/sa1111.c 1.19 -> 1.20 arch/arm/common/sa1111.c (moved) # drivers/scsi/pci2000.h 1.5 -> 1.6 # include/asm-sparc64/kmap_types.h 1.3 -> 1.4 # Documentation/ia64/README 1.1 -> 1.2 # drivers/net/sgiseeq.c 1.12 -> 1.13 # drivers/pci/hotplug.c 1.8 -> 1.10 # arch/mips/kernel/sysirix.c 1.9 -> 1.10 # arch/m68k/Makefile 1.9 -> 1.11 # drivers/serial/Kconfig 1.4 -> 1.5 # sound/isa/gus/gus_irq.c 1.2 -> 1.3 # Documentation/Changes 1.31 -> 1.32 # drivers/acpi/namespace/nsload.c 1.15 -> 1.16 # arch/i386/mm/hugetlbpage.c 1.22 -> 1.29 # drivers/scsi/aic7xxx/aic79xx.reg 1.3 -> 1.4 # fs/msdos/Makefile 1.3 -> 1.4 # drivers/net/e100/Makefile 1.5 -> 1.6 # sound/pci/cs46xx/dsp_spos_scb_lib.c 1.10 -> 1.11 # sound/pci/ac97/ac97_patch.c 1.6 -> 1.8 # arch/um/kernel/umid.c 1.3 -> 1.5 # sound/core/seq/seq_midi_emul.c 1.3 -> 1.5 # net/sunrpc/svc.c 1.19 -> 1.20 # drivers/acpi/dispatcher/dsinit.c 1.5 -> 1.6 # drivers/acorn/char/pcf8583.c 1.6 -> 1.7 # arch/ppc64/kernel/time.c 1.15 -> 1.16 # drivers/nubus/Makefile 1.3 -> 1.4 # arch/arm/mach-iop310/Makefile 1.4 -> 1.5 # fs/xfs/xfs_bmap.c 1.5 -> 1.6 # arch/ia64/ia32/binfmt_elf32.c 1.10 -> 1.11 # drivers/media/video/Kconfig 1.2 -> 1.5 # drivers/char/ipmi/Makefile 1.1 -> 1.2 # drivers/net/arcnet/Kconfig 1.2 -> 1.3 # drivers/usb/host/ehci-mem.c 1.12 -> 1.13 # drivers/block/paride/Makefile 1.7 -> 1.8 # sound/pci/ali5451/ali5451.c 1.17 -> 1.20 # drivers/usb/host/ohci-q.c 1.33 -> 1.34 # drivers/input/Makefile 1.10 -> 1.11 # arch/ia64/kernel/perfmon.c 1.30 -> 1.35 # drivers/scsi/3w-xxxx.c 1.20 -> 1.22 # drivers/hotplug/cpqphp_pci.c 1.9 -> 1.12 # include/asm-ia64/bugs.h 1.1 -> 1.2 # include/asm-ia64/compat.h 1.5 -> 1.8 # drivers/net/ppp_generic.c 1.21 -> 1.22 # sound/core/pcm_sgbuf.c 1.6 -> 1.9 # arch/um/include/sysdep-i386/frame_user.h 1.1 -> 1.2 # drivers/net/tokenring/madgemc.c 1.9 -> 1.10 # fs/autofs4/waitq.c 1.5 -> 1.6 # arch/ia64/Kconfig 1.12 -> 1.14 # drivers/scsi/BusLogic.c 1.13 -> 1.15 # drivers/net/pcmcia/3c589_cs.c 1.12 -> 1.13 # drivers/hotplug/cpqphp_proc.c 1.5 -> 1.6 # drivers/char/Makefile 1.52 -> 1.54 # drivers/acpi/Makefile 1.26 -> 1.29 # arch/ia64/lib/Makefile 1.15 -> 1.16 # sound/pci/cs4281.c 1.18 -> 1.21 # mm/truncate.c 1.6 -> 1.8 # arch/um/kernel/skas/syscall_user.c 1.1 -> 1.2 # drivers/usb/host/Kconfig 1.2 -> 1.3 # drivers/usb/storage/Kconfig 1.1 -> 1.2 # arch/um/drivers/fd.c 1.2.1.1 -> 1.8 # net/bridge/Makefile 1.5 -> 1.6 # arch/arm/mach-ftvpci/Makefile 1.4 -> 1.5 # arch/um/kernel/tt/include/ptrace-tt.h 1.1 -> 1.2 # drivers/input/keyboard/Kconfig 1.3 -> 1.4 # arch/m68knommu/platform/68360/uCquicc/crt0_rom.S 1.1 -> 1.2 # include/sound/sb16_csp.h 1.1 -> 1.2 # drivers/video/acornfb.c 1.21 -> 1.22 # sound/core/info.c 1.18 -> 1.22 # arch/um/kernel/skas/process.c 1.3 -> 1.5 # fs/afs/kafsasyncd.c 1.2 -> 1.3 # sound/ppc/keywest.c 1.7 -> 1.8 # drivers/net/skfp/rmt.c 1.1 -> 1.2 # arch/ia64/kernel/sal.c 1.4 -> 1.5 # drivers/usb/misc/Kconfig 1.3 -> 1.4 # include/asm-sparc/mman.h 1.3 -> 1.4 # arch/ia64/kernel/traps.c 1.20 -> 1.25 # include/sound/seq_kernel.h 1.3 -> 1.4 # crypto/Makefile 1.15 -> 1.16 # arch/mips/au1000/common/Makefile 1.7 -> 1.8 # include/asm-arm/proc-armv/processor.h 1.5 -> 1.6 # include/asm-parisc/signal.h 1.1 -> 1.2 # fs/quota.c 1.11 -> 1.12 # arch/ia64/mm/fault.c 1.9 -> 1.10 # arch/s390/kernel/Makefile 1.15 -> 1.16 # arch/um/kernel/sigio_user.c 1.3 -> 1.6 # arch/um/drivers/pcap_kern.c 1.1 -> 1.2 # arch/i386/kernel/init_task.c 1.6 -> 1.7 # drivers/parport/parport_pc.c 1.31 -> 1.32 # sound/isa/ad1848/ad1848_lib.c 1.9 -> 1.12 # arch/um/drivers/hostaudio_kern.c 1.2 -> 1.3 # drivers/net/sk98lin/skxmac2.c 1.3 -> 1.4 # arch/x86_64/ia32/ia32_signal.c 1.8 -> 1.9 # drivers/video/sis/Makefile 1.7 -> 1.8 # arch/um/kernel/tt/sys-i386/sigcontext.c 1.1 -> 1.2 # drivers/net/wireless/netwave_cs.c 1.12 -> 1.13 # sound/pci/emu10k1/emu10k1_main.c 1.9 -> 1.11 # arch/um/drivers/slirp_kern.c 1.1 -> 1.2 # drivers/parport/Kconfig 1.3 -> 1.4 # drivers/usb/core/devices.c 1.19 -> 1.20 # include/asm-ppc64/topology.h 1.4 -> 1.5 # arch/arm/mach-l7200/Makefile 1.4 -> 1.5 # drivers/mtd/maps/Kconfig 1.2 -> 1.3 # arch/ppc64/kernel/module.c 1.1 -> 1.2 # arch/ppc64/kernel/Makefile 1.17 -> 1.19 # arch/parisc/kernel/signal.c 1.6 -> 1.7 # drivers/ide/pci/pdc202xx_old.c 1.9 -> 1.10 # drivers/acpi/include/platform/acgcc.h 1.14 -> 1.15 include/acpi/platform/acgcc.h (moved) # sound/isa/sb/emu8000_pcm.c 1.3 -> 1.4 # sound/isa/sb/sb16_csp.c 1.5 -> 1.6 # arch/ppc/8xx_io/Makefile 1.8 -> 1.9 # arch/ppc/kernel/signal.c 1.19 -> 1.20 # drivers/scsi/qlogicisp.c 1.15 -> 1.17 # arch/um/drivers/chan_kern.c 1.4 -> 1.5 # drivers/scsi/esp.c 1.21 -> 1.22 # arch/ppc/Kconfig 1.16 -> 1.17 # net/ipv4/ip_output.c 1.25 -> 1.26 # drivers/scsi/aic7xxx/aic79xx_seq.h_shipped 1.3 -> 1.4 # arch/ia64/kernel/ptrace.c 1.17 -> 1.18 # sound/isa/sb/sb_common.c 1.8 -> 1.9 # arch/sparc64/Makefile 1.22 -> 1.24 # include/scsi/scsi.h 1.8 -> 1.9 # drivers/ieee1394/Makefile 1.14 -> 1.15 # sound/isa/gus/Makefile 1.7 -> 1.10 # arch/m68k/mac/Makefile 1.3 -> 1.4 # drivers/parport/parport_cs.c 1.5 -> 1.6 # kernel/workqueue.c 1.3 -> 1.5 # arch/ia64/kernel/pal.S 1.5 -> 1.6 # drivers/acorn/scsi/eesox.c 1.20 -> 1.22 # fs/inode.c 1.79 -> 1.81 # include/asm-ia64/ia32.h 1.14 -> 1.17 # arch/sh/Kconfig 1.6 -> 1.7 # arch/um/os-Linux/file.c 1.5 -> 1.7 # net/bridge/br_if.c 1.5 -> 1.6 # drivers/hotplug/acpiphp.h 1.2 -> 1.4 # net/ipv4/route.c 1.37 -> 1.38 # drivers/usb/image/hpusbscsi.c 1.24 -> 1.25 # drivers/scsi/aic7xxx/aic79xx_reg.h_shipped 1.3 -> 1.4 # drivers/media/dvb/dvb-core/Makefile 1.2 -> 1.3 # sound/pci/rme32.c 1.11 -> 1.15 # drivers/acorn/scsi/fas216.h 1.3 -> 1.4 # drivers/bluetooth/bt3c_cs.c 1.6 -> 1.7 # arch/v850/kernel/mach.h 1.1 -> 1.2 # net/bluetooth/bnep/Kconfig 1.1 -> 1.2 # arch/i386/kernel/i386_ksyms.c 1.42 -> 1.43 # include/linux/slab.h 1.15 -> 1.17 # arch/ia64/kernel/Makefile 1.12 -> 1.14 # include/asm-ppc64/system.h 1.13 -> 1.16 # drivers/usb/storage/freecom.c 1.22 -> 1.23 # sound/core/ioctl32/seq32.c 1.6 -> 1.7 # drivers/base/memblk.c 1.3 -> 1.4 # include/sound/core.h 1.18 -> 1.21 # arch/parisc/kernel/syscall.S 1.5 -> 1.6 # drivers/acpi/Kconfig 1.3 -> 1.4 # drivers/scsi/sym53c8xx_2/sym_glue.h 1.7 -> 1.8 # drivers/isdn/hardware/eicon/io.h 1.1 -> 1.2 # drivers/net/hamachi.c 1.21 -> 1.22 # drivers/ide/pci/amd74xx.c 1.10 -> 1.11 # kernel/printk.c 1.21 -> 1.22 # drivers/media/radio/radio-zoltrix.c 1.9 -> 1.10 # include/asm-alpha/kmap_types.h 1.3 -> 1.4 # arch/um/os-Linux/drivers/tuntap_user.c 1.1 -> 1.2 # include/asm-arm/arch-rpc/hardware.h 1.2 -> 1.3 # arch/parisc/kernel/parisc_ksyms.c 1.6 -> 1.7 # sound/drivers/mpu401/Makefile 1.10 -> 1.11 # drivers/s390/block/Makefile 1.9 -> 1.10 # drivers/scsi/qla1280.c 1.24 -> 1.30 # arch/sparc64/kernel/sbus.c 1.10 -> 1.11 # drivers/usb/misc/speedtouch.c 1.28 -> 1.44 # arch/v850/kernel/signal.c 1.5 -> 1.6 # drivers/scsi/aic7xxx/aic7xxx_inline.h 1.6 -> 1.7 # sound/core/pcm.c 1.10 -> 1.12 # drivers/scsi/qlogicfas.c 1.16 -> 1.17 # sound/ppc/powermac.c 1.6 -> 1.8 # arch/ppc/platforms/Makefile 1.12 -> 1.13 # drivers/usb/media/usbvideo.c 1.32 -> 1.33 # arch/v850/kernel/Makefile 1.4 -> 1.5 # fs/xfs/xfs_log.c 1.8 -> 1.9 # drivers/macintosh/adb.c 1.14 -> 1.15 # drivers/scsi/53c7,8xx.scr 1.1 -> (deleted) # kernel/ptrace.c 1.23 -> 1.25 # arch/arm/mach-sa1100/Makefile 1.20 -> 1.24 # drivers/usb/core/Makefile 1.13 -> 1.14 # arch/um/kernel/init_task.c 1.2 -> 1.3 # arch/ia64/kernel/perfmon_itanium.h 1.2 -> 1.4 # fs/fs-writeback.c 1.27 -> 1.32 # arch/ia64/sn/io/sn2/pcibr/pcibr_dvr.c 1.3 -> 1.4 # sound/core/isadma.c 1.4 -> 1.6 # sound/ppc/pmac.c 1.9 -> 1.11 # arch/v850/Makefile 1.4 -> 1.5 # drivers/hotplug/ibmphp_core.c 1.15 -> 1.17 # drivers/usb/image/microtek.c 1.27 -> 1.28 # arch/arm/mach-sa1100/Kconfig 1.1 -> 1.3 # arch/parisc/kernel/traps.c 1.6 -> 1.7 # drivers/char/ip2main.c 1.21 -> 1.23 # arch/arm/mm/Makefile 1.16 -> 1.17 # arch/m68k/amiga/Makefile 1.3 -> 1.4 # arch/m68knommu/platform/68360/uCquicc/crt0_ram.S 1.1 -> 1.2 # drivers/message/fusion/Kconfig 1.1 -> 1.2 # arch/sparc64/solaris/signal.c 1.4 -> 1.5 # net/core/rtnetlink.c 1.7 -> 1.8 # arch/parisc/kernel/module.c 1.1 -> 1.2 # arch/mips/baget/Makefile 1.6 -> 1.7 # mm/pdflush.c 1.14 -> 1.15 # drivers/usb/host/hc_simple.c 1.5 -> 1.6 # Documentation/kernel-parameters.txt 1.12 -> 1.14 # arch/i386/mm/pgtable.c 1.5 -> 1.7 # net/ipv4/netfilter/ip_queue.c 1.8 -> 1.9 # arch/ia64/kernel/unwind.c 1.9 -> 1.11 # include/asm-parisc/compat.h 1.1 -> 1.2 # drivers/scsi/aic7xxx/aic7xxx_seq.h_shipped 1.9 -> 1.10 # drivers/net/wireless/Makefile 1.8 -> 1.9 # include/asm-um/pgtable.h 1.5 -> 1.6 # arch/um/kernel/frame_kern.c 1.6 -> 1.7 # drivers/scsi/sym53c8xx_2/sym_glue.c 1.10 -> 1.13 # drivers/scsi/tmscsim.c 1.14 -> 1.16 # sound/isa/sgalaxy.c 1.8 -> 1.10 # fs/xfs/xfs_log.h 1.1 -> 1.2 # (new) -> 1.1 arch/um/vmlinux.lds.S # (new) -> 1.5 arch/ia64/kernel/fsys.S # (new) -> 1.1 arch/arm/def-configs/trizeps # (new) -> 1.2 arch/i386/kernel/cpu/cpufreq/acpi.c # (new) -> 1.1 arch/um/include/uml_uaccess.h # (new) -> 1.1 include/asm-um/ucontext.h # (new) -> 1.2 Documentation/sound/alsa/DocBook/alsa-driver-api.tmpl # (new) -> 1.2 include/asm-um/common.lds.S # (new) -> 1.2 arch/um/kernel/tt/mem_user.c # (new) -> 1.1 arch/arm/mach-sa1100/leds-hackkit.c # (new) -> 1.3 Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl # (new) -> 1.1 mm/fadvise.c # (new) -> 1.1 drivers/char/hangcheck-timer.c # (new) -> 1.1 include/acpi/processor.h # (new) -> 1.2 arch/arm/common/Makefile # (new) -> 1.2 include/linux/seqlock.h # (new) -> 1.2 arch/um/Makefile-skas # (new) -> 1.1 include/asm-um/bug.h # (new) -> 1.3 arch/um/dyn.lds.S # (new) -> 1.1 include/asm-x86_64/dma-mapping.h # (new) -> 1.3 drivers/pci/pci-sysfs.c # (new) -> 1.4 Documentation/ia64/fsys.txt # (new) -> 1.2 Documentation/sound/alsa/OSS-Emulation.txt # (new) -> 1.1 arch/ia64/scripts/check-gas-asm.S # (new) -> 1.1 arch/um/kernel/uaccess_user.c # (new) -> 1.1 arch/um/Makefile-tt # (new) -> 1.1 drivers/usb/net/Makefile.mii # (new) -> 1.1 arch/ia64/scripts/check-gas # (new) -> 1.1 include/linux/fadvise.h # (new) -> 1.1 include/asm-arm/arch-sa1100/trizeps.h # (new) -> 1.1 arch/ia64/scripts/unwcheck.sh # (new) -> 1.1 include/asm-arm/arch-sa1100/mftb2.h # (new) -> 1.1 arch/alpha/kernel/srmcons.c # (new) -> 1.1 arch/um/sys-i386/extable.c # (new) -> 1.2 arch/arm/mach-sa1100/trizeps.c # (new) -> 1.1 arch/arm/mach-sa1100/hackkit.c # (new) -> 1.1 arch/arm/def-configs/hackkit # # The following is the BitKeeper ChangeSet Log # -------------------------------------------- # 03/01/16 torvalds@penguin.transmeta.com 1.925.6.4 # Linux v2.5.59 # -------------------------------------------- # 03/01/17 anton@samba.org 1.925.8.1 # ppc64: SO_TIMESTAMP fix from sparc64 # -------------------------------------------- # 03/01/17 anton@samba.org 1.925.8.2 # ppc64: compat layer updates from Stephen Rothwell # -------------------------------------------- # 03/01/16 scott.feldman@intel.com 1.925.6.5 # [netdrvr e100] udelay a better way # # * Bug Fix: TCO workaround after hard reset of controller to wait for TCO # traffic to settle. Workaround requires issuing a CU load base command # after hard reset, followed by a wait for scb and finally a wait for # TCO traffic bit to clear. Affects 82559s and above wired to SMBus. # -------------------------------------------- # 03/01/16 scott.feldman@intel.com 1.925.6.6 # [netdrvr e100] fix TxDescriptor bit setting # -------------------------------------------- # 03/01/16 scott.feldman@intel.com 1.925.6.7 # [netdrvr e100] standardize nic-specific stats support # # * Removed /proc/net/PRO_LAN_Adapters # * Added ethtool GSTATS support # -------------------------------------------- # 03/01/16 jgarzik@redhat.com 1.925.6.8 # [netdrvr tg3] s/spin_lock/spin_lock_irqsave/ in tg3_poll and tg3_timer # # The tg3_timer one is very likely superfluous, and will hopefully be # removed after extended testing. # -------------------------------------------- # 03/01/16 jgarzik@redhat.com 1.925.6.9 # [netdrvr tg3] Better interrupt masking # # The bcm570x chips provide a register that disables (masks) or enables # interrupts, and as a side effect, each write to this register regardless # of value clears various PCI and internal interrupt-pending flags. This # register, intr-mbox-0, provides a superset of the function provided # by the mask-pci-int and clear-pci-int bits in the misc-host-ctrl register. # # Furthermore, the documentation clearly implies use of this register, # as an indicator that the host [tg3 driver] is in its interrupt handler. # # The new tg3 logic, taking this knowledge into account, masks-and-clears # irqs using intr-mbox-0 [only] when a hard irq is received, and # unmasks-and-clears irqs at the end of tg3_poll after all NAPI events # have been exhausted. # # The old logic twiddled the misc-host-ctrl irq masking bits separately # from intr-mbox-0 bits, which was not only inconsistent but also # a few additional I/Os that were not needed. # -------------------------------------------- # 03/01/17 jgarzik@redhat.com 1.925.6.10 # [netdrvr tg3] flush irq-mask reg write before checking hw status block, # in tg3_enable_ints. # -------------------------------------------- # 03/01/17 jgarzik@redhat.com 1.925.6.11 # [netdrvr tg3] manage jumbo flag on MTU change when interface is down # -------------------------------------------- # 03/01/17 jgarzik@redhat.com 1.925.6.12 # [netdrvr e100] remove e100_proc.c. should have been in prior cset. # -------------------------------------------- # 03/01/17 anton@samba.org 1.925.9.1 # Merge samba.org:/scratch/anton/linux-2.5 # into samba.org:/scratch/anton/for-alan # -------------------------------------------- # 03/01/17 anton@samba.org 1.927 # Merge samba.org:/scratch/anton/export into samba.org:/scratch/anton/sfr # -------------------------------------------- # 03/01/17 sfr@canb.auug.org.au 1.925.10.1 # [COMPAT]: compat_{old_}sigset_t sparc64. # -------------------------------------------- # 03/01/17 shaggy@shaggy.austin.ibm.com 1.925.11.1 # Merge jfs@jfs.bkbits.net:linux-2.5 # into shaggy.austin.ibm.com:/shaggy/bk/jfs-2.5 # -------------------------------------------- # 03/01/17 Matt_Domsch@dell.com 1.925.5.3 # Merge dell.com:/home/mdomsch/bk/linux-2.5 # into dell.com:/home/mdomsch/bk/edd/linux-2.5-edd # -------------------------------------------- # 03/01/17 kai@tp1.ruhr-uni-bochum.de 1.925.12.1 # kbuild: Fix __start_SECTION, __stop_SECTION # # In a discussion with Sam Ravnborg, the following problem became apparent: # Most vmlinux.lds.S (but the ARM ones) used the following construct: # # __start___ksymtab = .; # __ksymtab : AT(ADDR(__ksymtab) - LOAD_OFFSET) { # *(__ksymtab) # } # __stop___ksymtab = .; # # However, the link will align the beginning of the section __ksymtab # according to the requirements for the input sections. If '.' (current # location counter) wasn't sufficiently aligned before, it's possible # that __ksymtab actually starts at an address after the one # __start___ksymtab points to, which will confuse the users of # __start___ksymtab badly. The fix is to follow what the ARM Makefiles # did for this case, ie # # __ksymtab : AT(ADDR(__ksymtab) - LOAD_OFFSET) { # __start___ksymtab = .; # *(__ksymtab) # __stop___ksymtab = .; # } # -------------------------------------------- # 03/01/17 jdike@uml.karaya.com 1.925.13.1 # Merged the vmlinux.lds.h changes. # -------------------------------------------- # 03/01/17 jdike@uml.karaya.com 1.925.14.1 # Merge uml.karaya.com:/home/jdike/linux/2.5/linus-2.5 # into uml.karaya.com:/home/jdike/linux/2.5/fixes-2.5 # -------------------------------------------- # 03/01/17 jdike@uml.karaya.com 1.925.15.1 # Merged the vmlinux.lds.h changes. # -------------------------------------------- # 03/01/17 jdike@uml.karaya.com 1.925.16.1 # Merge uml.karaya.com:/home/jdike/linux/2.5/linus-2.5 # into uml.karaya.com:/home/jdike/linux/2.5/skas-2.5 # -------------------------------------------- # 03/01/17 jdike@uml.karaya.com 1.925.17.1 # Merge uml.karaya.com:/home/jdike/linux/2.5/linus-2.5 # into uml.karaya.com:/home/jdike/linux/2.5/stack-2.5 # -------------------------------------------- # 03/01/17 jdike@uml.karaya.com 1.925.18.1 # Merge uml.karaya.com:/home/jdike/linux/2.5/linus-2.5 # into uml.karaya.com:/home/jdike/linux/2.5/updates-2.5 # -------------------------------------------- # 03/01/17 ink@jurassic.park.msu.ru 1.925.19.1 # [PATCH] alpha_agpgart_size # # This allows to set the AGP aperture size from command line. # Default is 64Mb. # # Ivan. # -------------------------------------------- # 03/01/17 Jeff.Wiedemeier@hp.com 1.925.19.2 # [PATCH] NODE_BALANCE_RATE (numa) # # This defines NODE_BALANCE_RATE in include/asm-alpha/topology.h. Value is # pulled from asm-generic/topology.h. # # /jeff # -------------------------------------------- # 03/01/17 agrover@groveronline.com 1.925.1.25 # Merge groveronline.com:/root/bk/linux-2.5 # into groveronline.com:/root/bk/linux-acpi # -------------------------------------------- # 03/01/17 greg@kroah.com 1.925.20.1 # Merge kroah.com:/home/greg/linux/BK/bleeding_edge-2.5 # into kroah.com:/home/greg/linux/BK/gregkh-2.5 # -------------------------------------------- # 03/01/17 gibbs@overdrive.btc.adaptec.com 1.925.4.7 # Aic7xxx and Aic79xx DV Fix: # Don't bother with DV if the device can only do async # -------------------------------------------- # 03/01/17 gibbs@overdrive.btc.adaptec.com 1.925.4.8 # Aic79xx Driver Update # Enable abort and bus device reset handlers for both legacy # and packetized connections. # -------------------------------------------- # 03/01/17 david-b@pacbell.net 1.925.20.2 # [PATCH] usb root hub strings # # Someone changed the "get string" logic to use short reads, # not long ones, a while back. That broke many root hub # string accesses (not through tools like "lsusb"!) because # that logic didn't handle short reads quite right. # -------------------------------------------- # 03/01/17 baldrick@wanadoo.fr 1.925.20.3 # [PATCH] export speedtouch usb info # # speedtouch: restore use of MODULE_DEVICE_TABLE to export usb info. There may have # been a problem with older 2.4 kernels, but there is none now. # -------------------------------------------- # 03/01/17 davidm@wailua.hpl.hp.com 1.838.49.15 # ia64: Fix ia64_fls() so it works for all possible 64-bit values. # Reported by Dan Magenheimer (note: the bug didn't affect # the existing kernel, since the possible values passed to # the routine were always "safe"). # -------------------------------------------- # 03/01/17 jdike@uml.karaya.com 1.925.18.2 # Fixed asm/modules.h to update UML to 2.5.59. # -------------------------------------------- # 03/01/17 ganesh@tuxtop.vxindia.veritas.com 1.925.20.4 # [PATCH] USB ipaq driver ids # # Added ids for the Dell Axim and Toshiba E740. # # Thanks to Ian Molton and B.I. # -------------------------------------------- # 03/01/17 shaggy@shaggy.austin.ibm.com 1.925.11.2 # JFS: replace ugly JFS debug macros with simpler ones. # # JFS has always used ugly debug macros, jFYI, jEVENT, & jERROR. I have # replaced them with simpler jfs_info(), jfs_warn(), & jfs_err(). # -------------------------------------------- # 03/01/17 gibbs@overdrive.btc.adaptec.com 1.925.4.9 # Aic7xxx Driver Update: # o Determine more conclusively that a BIOS has initialized the # adapter before using "left over BIOS settings". # o Adapt to upcoming removal of cmd->target/channel/lun/host in 2.5.X # o Fix a memory leak on driver unload. # o Enable the pci_parity command line option and default to pci parity # error detection *disabled*. There are just too many broken VIA # chipsets out there. # o Move more functionality into aiclib to share with the aic79xx driver. # o Correct a few negotiation regressions. # o Don't bother doing full DV on devices that only support async transfers. # This should fix a few more of the reported problems with DV. # # Aic79xx Driver Update # o Add abort and bus device reset handlers. # o Fix a memory leak on driver unload. # o Adapt to upcoming removal of cmd->target/channel/lun/host in 2.5.X. # o Correct a few negotiation regressions. # -------------------------------------------- # 03/01/17 gibbs@overdrive.btc.adaptec.com 1.925.4.10 # Bump aic7xxx driver version to 6.2.27. # -------------------------------------------- # 03/01/17 gibbs@overdrive.btc.adaptec.com 1.925.4.11 # Aic7xxx and Aic79xx Driver Update # Force an SDTR after a rejected WDTR if the syncrate is unkonwn. # -------------------------------------------- # 03/01/17 agrover@groveronline.com 1.925.1.26 # ACPI: Move drivers/acpi/include directory to include/acpi # -------------------------------------------- # 03/01/17 davidm@tiger.hpl.hp.com 1.838.49.16 # ia64: Add unwcheck.sh script contributed by Harish Patil. It checks # the unwind info for consistency (well, just the obvious # stuff, but it's a start). # Fix the couple of bugs that this script uncovered (and work # around one false positive). # -------------------------------------------- # 03/01/17 jdike@uml.karaya.com 1.925.13.2 # Some build changes for 2.5.59 and SMP. Also cleanup of the linker # scripts and Kconfig. # -------------------------------------------- # 03/01/17 jdike@uml.karaya.com 1.925.15.2 # Correctly check the mmap return value. # -------------------------------------------- # 03/01/17 jdike@uml.karaya.com 1.925.14.2 # Some SMP fixes from Oleg. # -------------------------------------------- # 03/01/17 bjorn_helgaas@hp.com 1.838.49.17 # [PATCH] irq cleanups # # Cleanup the irq handling macros. # -------------------------------------------- # 03/01/17 jdike@uml.karaya.com 1.925.18.3 # Some SMP fixes. # -------------------------------------------- # 03/01/17 davidm@tiger.hpl.hp.com 1.838.49.18 # ia64: Fix Makefiles so that "make clean" removes the files generated # in the tools directory. Patch by Yu, Fenghua. # -------------------------------------------- # 03/01/17 jdike@uml.karaya.com 1.925.13.3 # Fixed dyn.lds.S to include common.lds.S. # -------------------------------------------- # 03/01/17 rohit.seth@intel.com 1.838.49.19 # [PATCH] ia64: Update to hugetlb # # Please find attached a patch that brings in the support of hugetlb # inline with the ia32 tree. This removes the syscall interface and gets # the hugetlbfs support (using mmap and shmat). I might be sending you # couple of more small updates a little later. At least wanted to get # this out first. # -------------------------------------------- # 03/01/17 davidm@tiger.hpl.hp.com 1.838.49.20 # Remove last vestiges of hugepage system calls (they have been replaced by hugetlbfs). # -------------------------------------------- # 03/01/17 eranian@hpl.hp.com 1.838.49.21 # [PATCH] ia64: perfmon update # # Here is the patch. It is rather big because there is some renaming and # cleanups. This patch bring 2.5 in line with 2.4.20: perfmon-1.3 # # It adds: # - idle task exclusion # - less ctxsw overhead in system wide # - cleanups most of the inline asm # - don't use PAL anymore to determine PMU features # - added temporary hooks for custom overflow handlers (VTUNE/Oprofile) # - renaming of the perfmon init functions # # Thanks. # -------------------------------------------- # 03/01/17 kochi@hpc.bs1.fc.nec.co.jp 1.838.49.22 # [PATCH] ia64: skip _PRT entry for non-existent IOSAPICs # # On some machines that support I/O hot-plugging, # it happens that after boottime one or more IO SAPICs appear # after hot-plug event. Even in that case, ACPI _PRT entries # can exist for devices behind those IO SAPICs at boottime # for future use. # # Currently iosapic.c will give up parsing _PRT entries # once one of them hits such a non-existent IO SAPIC. # # This patch fixes the problem on 2.5 ia64 bk tree. # For 2.4, we don't have this problem now. # -------------------------------------------- # 03/01/17 alex_williamson@hp.com 1.838.49.23 # [PATCH] ia64: fix typo in ia32_support.c # # Happened to notice the attached redundancy. # -------------------------------------------- # 03/01/17 davidm@tiger.hpl.hp.com 1.838.49.24 # ia64: Don't risk running past the end of the unwind-table. Based on a patch by # Suresh Siddha. # -------------------------------------------- # 03/01/18 jdike@uml.karaya.com 1.925.15.3 # Ported a cleanup from 2.4. # -------------------------------------------- # 03/01/18 jdike@uml.karaya.com 1.925.14.3 # Ported a uml-config.h change from 2.4. # -------------------------------------------- # 03/01/18 jdike@uml.karaya.com 1.925.17.2 # Ported a cleanup from 2.4. # -------------------------------------------- # 03/01/18 jdike@uml.karaya.com 1.925.18.4 # Changed some CONFIG_* names to UML_CONFIG_* names. # -------------------------------------------- # 03/01/18 rmk@flint.arm.linux.org.uk 1.925.21.1 # [ARM] Fix printk in rpcmouse.c # # printk was missing a new line, and displaying the (fixed) IRQ number # is rather meaningless. # -------------------------------------------- # 03/01/18 rmk@flint.arm.linux.org.uk 1.925.21.2 # [ARM] Fix buffer overflow in fas216-based SCSI drivers. # # 100 characters is too small for the SCSI "info" string buffer; the # last few characters appear to get stomped on. Make the buffer 150 # characters long. # -------------------------------------------- # 03/01/18 rmk@flint.arm.linux.org.uk 1.925.21.3 # [ARM] Fix fas216-based data-phase lockups # # Ensure SCpnt->request_bufflen is initialised correctly when we # request sense information. # -------------------------------------------- # 03/01/18 rmk@flint.arm.linux.org.uk 1.925.21.4 # [ARM] Add soft-cursor support to acornfb and sa1100fb. # -------------------------------------------- # 03/01/18 rmk@flint.arm.linux.org.uk 1.925.21.5 # [ARM] Make oops dump reasonble again without kallsyms support enabled. # # print_symbol() becomes a NOP when CONFIG_KALLSYMS=n, so we loose # the new line character as well. Explicitly call printk("\n"). # -------------------------------------------- # 03/01/18 jdike@uml.karaya.com 1.925.15.4 # A bunch of minor changes ported up from 2.4. # All userspace uses of CONFIG_* have been changed to UML_CONFIG_* # to avoid conflicts with the host's config. # os_open_file now has FD_CLOEXEC support. # -------------------------------------------- # 03/01/18 jdike@uml.karaya.com 1.925.14.4 # Fixed the time locking bug. # The mconsole and switch protocols are now 64-bit clean. # Fixed some smaller bugs. # -------------------------------------------- # 03/01/18 jdike@uml.karaya.com 1.925.17.3 # Changed CONFIG_KERNEL_STACK_ORDER to UML_CONFIG_KERNEL_STACK_ORDER. # -------------------------------------------- # 03/01/18 drow@nevyn.them.org 1.925.22.1 # Tweak has_stopped_jobs for use with debugging # -------------------------------------------- # 03/01/18 jdike@uml.karaya.com 1.925.15.5 # Replaced some CONFIG_* with UML_CONFIG_*. # -------------------------------------------- # 03/01/18 jdike@uml.karaya.com 1.925.16.2 # Replaced a CONFIG_* name with a UML_CONFIG_* name. # -------------------------------------------- # 03/01/18 jdike@uml.karaya.com 1.925.14.5 # Changed some CONFIG_* symbols to UML_CONFIG_*. # -------------------------------------------- # 03/01/18 jdike@jdike.wstearns.org 1.925.23.1 # Merge jdike.wstearns.org:/home/jdike/linux/linus-2.5 # into jdike.wstearns.org:/home/jdike/linux/fixes-2.5 # -------------------------------------------- # 03/01/18 drow@nevyn.them.org 1.925.22.2 # Add PTRACE_GETSIGINFO and PTRACE_SETSIGINFO # # These new ptrace commands allow a debugger to control signals more precisely; # for instance, store a signal and deliver it later, as if it had come from the # original outside process or in response to the same faulting memory access. # -------------------------------------------- # 03/01/18 jdike@jdike.wstearns.org 1.925.24.1 # Merge jdike.wstearns.org:/home/jdike/linux/linus-2.5 # into jdike.wstearns.org:/home/jdike/linux/skas-2.5 # -------------------------------------------- # 03/01/18 jdike@jdike.wstearns.org 1.925.25.1 # Merge jdike.wstearns.org:/home/jdike/linux/linus-2.5 # into jdike.wstearns.org:/home/jdike/linux/stack-2.5 # -------------------------------------------- # 03/01/18 jdike@jdike.wstearns.org 1.925.26.1 # Merge jdike.wstearns.org:/home/jdike/linux/linus-2.5 # into jdike.wstearns.org:/home/jdike/linux/updates-2.5 # -------------------------------------------- # 03/01/18 jdike@jdike.wstearns.org 1.925.27.1 # Fixed a conflict in the linker script. # -------------------------------------------- # 03/01/18 jdike@uml.karaya.com 1.925.18.5 # Merge jdike.stearns.org:linux/updates-2.5 # into uml.karaya.com:/home/jdike/linux/2.5/updates-2.5 # -------------------------------------------- # 03/01/18 jdike@uml.karaya.com 1.925.17.4 # Merge jdike.stearns.org:linux/stack-2.5/ # into uml.karaya.com:/home/jdike/linux/2.5/stack-2.5 # -------------------------------------------- # 03/01/18 jdike@uml.karaya.com 1.925.16.3 # Merge jdike.stearns.org:linux/skas-2.5/ # into uml.karaya.com:/home/jdike/linux/2.5/skas-2.5 # -------------------------------------------- # 03/01/18 jdike@uml.karaya.com 1.925.14.6 # Merge jdike.stearns.org:linux/fixes-2.5/ # into uml.karaya.com:/home/jdike/linux/2.5/fixes-2.5 # -------------------------------------------- # 03/01/18 jdike@jdike.wstearns.org 1.925.28.1 # Fixed a conflict in the linker script. # -------------------------------------------- # 03/01/18 jdike@uml.karaya.com 1.925.13.4 # Merge # -------------------------------------------- # 03/01/18 jdike@uml.karaya.com 1.925.15.6 # Merge jdike.stearns.org:linux/cleanup-2.5/ # into uml.karaya.com:/home/jdike/linux/2.5/cleanup-2.5 # -------------------------------------------- # 03/01/19 akpm@digeo.com 1.925.10.2 # [SPARC64]: Handle unchanging _TIF_32BIT properly in SET_PERSONALITY. # -------------------------------------------- # 03/01/19 jamie@shareable.org 1.925.10.3 # [SPARC64]: Fix MAP_GROWSDOWN value, cannot be the same as MAP_LOCKED. # -------------------------------------------- # 03/01/19 jdike@uml.karaya.com 1.925.18.6 # Added vmlinux.lds.S which is now necessary for linking the vmlinux # object file. # -------------------------------------------- # 03/01/20 anton@samba.org 1.925.29.1 # ppc64: defer change of 32/64bit mode, from Andrew Morton # -------------------------------------------- # 03/01/20 anton@samba.org 1.928 # Merge samba.org:/scratch/anton/linux-2.5_ppc64 # into samba.org:/scratch/anton/sfr # -------------------------------------------- # 03/01/20 anton@samba.org 1.925.29.2 # ppc64: now make it compile # -------------------------------------------- # 03/01/20 anton@samba.org 1.929 # Merge samba.org:/scratch/anton/linux-2.5_ppc64 # into samba.org:/scratch/anton/sfr # -------------------------------------------- # 03/01/19 Jeff.Wiedemeier@hp.com 1.925.19.3 # [PATCH] mark boot_cpu online in smp_prepare_boot_cpu # # Mark the boot cpu online in smp_prepare_boot_cpu instead of # smp_prepare_cpus so that early printks (srmcons) work with alpha smp # kernels. # # /jeff # -------------------------------------------- # 03/01/20 rth@kanga.twiddle.net 1.925.19.4 # [ALPHA] Add debugging access (core and ptrace) to the # PAL unique value. Support threaded core dumps. # -------------------------------------------- # 03/01/20 rth@kanga.twiddle.net 1.925.19.5 # [ALPHA] New SRM console driver. # # From Jeff Wiedemeier: # # How about this.. This version no longer piggy backs on ttyS0 (it # actually doesn't touch any files outside arch/alpha/kernel at all). It # does use a dynamic major for the tty piece of the driver. From # userspace, /dev/console is ok for most uses, but because of the 'noctty # = 1' at tty_tio.c:1329 (in the IS_SYSCONS_DEV section) using # /dev/console cannot result in a controlling tty so some things, like # 'resize' and bash job control don't work. For those uses, however, it's # easy enough to parse /proc/devices on the way up to get the major number # and create the specific device for the tty side of the driver. # # I made a distinction in kernel options as well. "srmcons" specifically # requests the early prints (as before) and "console=srm" requests the # full driver, including the early prints. The two options can be # combined with "console=srm" behavior resulting. The other change is that # if "console=srm" is specified, I don't unregister_srm_console before # console_init any more - that only happens in the "srmcons" case. That # way preferred console selection remains stable and "console=srm" doesn't # result in the early messages being repeated when the driver # re-registers. The use of "srmcons_allowed" is also eliminated due to the # "srmcons" vs. "console=srm" distinction. # -------------------------------------------- # 03/01/20 Jeff.Wiedemeier@hp.com 1.925.19.6 # [PATCH] remove srmcons_allowed implementation from marvel # # Remove unused marvel_srmcons_allowed implementation. # # /jeff # -------------------------------------------- # 03/01/20 Jeff.Wiedemeier@hp.com 1.925.19.7 # [PATCH] use CONFIG_EARLY_PRINTK to turn off "srmcons" prints # # Use CONFIG_EARLY_PRINTK to trigger disable_early_printk() call in # console_init (tty_io.c) to turn off "srmcons" prints rather than the # existing code in time.c. # # /jeff # -------------------------------------------- # 03/01/20 agrover@groveronline.com 1.925.1.27 # ACPI: Move more headers to include/acpi, and delete an unused header. # -------------------------------------------- # 03/01/20 agrover@groveronline.com 1.925.1.28 # CPUFREQ: Break out ACPI Perf code into its own module, under cpufreq # (Dominik Brodowski) # -------------------------------------------- # 03/01/20 agrover@groveronline.com 1.925.1.29 # ACPI: acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since the # former now also includes the latter, acpiphp.h only needs the one, now. # -------------------------------------------- # 03/01/20 gibbs@overdrive.btc.adaptec.com 1.925.4.12 # Aic7xxx Driver Update 6.2.28 # o Add some more DV diagnostic code # o Fix bug that cause sequencer debug code to be # downloaded always. # # Aic79xx Driver Update 1.3.0.RC2 # o Correct a bug that effectively limited DV to just ID 0. # o Add some more DV diagnostic code # o Misc code cleanups. # -------------------------------------------- # 03/01/20 agrover@groveronline.com 1.925.1.30 # ACPI: Remove include of unused header (Adrian Bunk) # -------------------------------------------- # 03/01/20 agrover@groveronline.com 1.925.1.31 # ACPI: Properly init/clean up in cpufreq/acpi (Dominik Brodowski) # -------------------------------------------- # 03/01/20 agrover@groveronline.com 1.925.1.32 # ACPI: Make proc write interfaces work (Pavel Machek) # -------------------------------------------- # 03/01/20 agrover@groveronline.com 1.925.1.33 # ACPI: This makes it possible to select method of bios restoring after S3 # resume. [=> no more ugly ifdefs] (Pavel Machek) # -------------------------------------------- # 03/01/21 baldrick@wanadoo.fr 1.925.20.5 # [PATCH] USB: trivial speedtouch changes # # speedtouch: trivial whitespace and debug message changes. # -------------------------------------------- # 03/01/21 baldrick@wanadoo.fr 1.925.20.6 # [PATCH] USB: move udsl_atm_set_mac into speedtouch probe function # # speedtouch: roll udsl_atm_set_mac into udsl_usb_probe. # -------------------------------------------- # 03/01/21 baldrick@wanadoo.fr 1.925.20.7 # [PATCH] USB: eliminate pointless dynamic allocation in speedtouch # # speedtouch: use an array for rcvbufs rather than a pointer and dynamic allocation. # -------------------------------------------- # 03/01/21 baldrick@wanadoo.fr 1.925.20.8 # [PATCH] USB: move udsl_atm_startdevice into speedtouch probe function # # speedtouch: roll udsl_atm_startdevice into udsl_usb_probe. # -------------------------------------------- # 03/01/21 baldrick@wanadoo.fr 1.925.20.9 # [PATCH] USB: rework error handling in speedtouch probe function # # speedtouch: rework udsl_usb_probe error handling (for example, handle failure of # atm_dev_register). Do some trivial cleaning up while we're at it. # -------------------------------------------- # 03/01/21 baldrick@wanadoo.fr 1.925.20.10 # [PATCH] USB: turn speedtouch micro race into a nano race # # speedtouch: turn a micro race into a nano race. The race is that an ATM device can # be used the moment atm_dev_register returns, but you only get to fill out the # atm_dev structure after atm_dev_register returns (this is a design flaw in the # ATM layer). Thus there is a small window during which you can be called with an # incompletely set up data structure. Workaround this by causing all ATM callbacks # to fail if the dev_data field has not been set. There is still a nano race if # writing/reading the dev_data field is not atomic. Is it atomic on all architectures? # -------------------------------------------- # 03/01/21 baldrick@wanadoo.fr 1.925.20.11 # [PATCH] USB: simplify speedtouch receive urb lifecycle # # speedtouch: simplify the receive urb lifecycle: allocate them in the usb probe function, # free them on disconnect. # -------------------------------------------- # 03/01/21 henning@meier-geinitz.de 1.925.20.12 # [PATCH] USB scanner.h, scanner.c: New vendor/product ids # # This patch adds vendor/product ids for Artec, Canon, Compaq, Epson, # HP, and Microtek scanners. Further more, the device list was cleaned # up, sorted and duplicated entries have been removed. # -------------------------------------------- # 03/01/21 sri@us.ibm.com 1.925.30.1 # [IPV{4,6}]: Add ipfragok arg to ip_queue_xmit. # -------------------------------------------- # 03/01/21 davem@nuts.ninka.net 1.925.30.2 # [TCP]: Named struct initializers and tabbing fixes. # -------------------------------------------- # 03/01/21 davem@nuts.ninka.net 1.925.30.3 # [IPSEC]: Clear SKB checksum state when mangling. # -------------------------------------------- # 03/01/21 thomas@bender.thinknerd.de 1.925.30.4 # [IPSEC]: Fix some buglets in xfrm_user.c # -------------------------------------------- # 03/01/21 kaber@trash.net 1.925.30.5 # [PPP]: Handle filtering drops correctly. # -------------------------------------------- # 03/01/21 Jeff.Wiedemeier@hp.com 1.925.19.8 # [PATCH] fix /proc/interrupts on smp alpha kernels # # alpha show_interrupts was using irq as the cpu index and cpu as the irq # index fpr the kstat_cpu(cpu).irqs[irq] lookup. # # /jeff # -------------------------------------------- # 03/01/21 agrover@groveronline.com 1.925.1.34 # ACPI: Handle P_BLK lengths shorter than 6 more gracefully # -------------------------------------------- # 03/01/21 davidm@tiger.hpl.hp.com 1.925.31.1 # ia64: Merge with 2.5.59. # -------------------------------------------- # 03/01/21 Matt_Domsch@dell.com 1.925.5.4 # EDD: until SCSI layer sysfs is fixed, don't use it for raw_data either. # -------------------------------------------- # 03/01/21 Matt_Domsch@dell.com 1.925.5.5 # EDD: don't over-allocate EDD data block # # Found by Kevin Lawton. # -------------------------------------------- # 03/01/21 sfr@canb.auug.org.au 1.925.31.2 # [PATCH] ia64: [COMPAT] Eliminate the rest of the __kernel_..._t32 typedefs # # -------------------------------------------- # 03/01/21 sfr@canb.auug.org.au 1.925.31.3 # [PATCH] ia64: [COMPAT] {get,put}_compat_timspec 5/8 # # -------------------------------------------- # 03/01/21 sfr@canb.auug.org.au 1.925.31.4 # [PATCH] ia64: [COMPAT] compat_{old_}sigset_t # # -------------------------------------------- # 03/01/21 sfr@canb.auug.org.au 1.925.31.5 # [PATCH] ia64: [COMPAT] compat_sys_sigpending and compat_sys_sigprocmask # # -------------------------------------------- # 03/01/21 davidm@tiger.hpl.hp.com 1.925.31.6 # ia64: asm-ia64/system.h: Remove include of . # -------------------------------------------- # 03/01/21 sfr@canb.auug.org.au 1.925.31.7 # [PATCH] ia64: [COMPAT] compat_sys_[f]statfs # # -------------------------------------------- # 03/01/22 gibbs@overdrive.btc.adaptec.com 1.925.4.13 # Update Aic7xxx and Aic79xx driver documentation. # -------------------------------------------- # 03/01/22 gibbs@overdrive.btc.adaptec.com 1.925.4.14 # Bump aic79xx driver version number to 1.3.0, now that it has # passed functional test. # -------------------------------------------- # 03/01/23 dougg@torque.net 1.925.32.1 # [PATCH] SAM-3 status codes # # The perverse CHECK_CONDITION in include/scsi/scsi.h seems # to have struck again (see "Can't burn DVD under 2.5.59 with # ide-cd" thread on the linux kernel list). Most users of # CHECK_CONDITION found out to their surprise that it is # shifted 1 bit (right) from those values found in the # standards. # # The attachment marks the orginal list of SCSI status codes # as deprecated and supplies defines taken from the most # recent SAM-3 draft. # -------------------------------------------- # 03/01/23 ink@jurassic.park.msu.ru 1.925.19.9 # [PATCH] nautilus update # # - make irongate_ioremap() use generic __alpha_remap_area_pages(); # - remove huge debugging printk; # - AGP remapping hardware disabled for now. Any attempt to use it # would result in corrupted memory; # - albacore (UP1500) support: # - handle differences between AMD-761 (UP1500) and AMD-751 (UP1000/1100) # chipsets, namely ECC mode/status and pci_mem registers; # - customized nautilus_init_pci() to minimize amount of system memory # consumed by PCI MMIO for 4Gb configuration. # # Ivan. # -------------------------------------------- # 03/01/23 agrover@groveronline.com 1.925.1.35 # ACPI: update to 20030122 # -------------------------------------------- # 03/01/23 adam@yggdrasil.com 1.925.32.2 # | The following changes to ide-scsi.c are a recovery of the # | changes that I had in ide-scsi.c in the stock kernel's before # | Martin Dalecki's IDE tree was reverted and a few other changes. # | # | The principal change is that each ATAPI device is a Scsi_host # | (which reflects reality), instead of having one fake Scsi_Host with # | that appears to have all of the ATAPI devices on one bus regardless of # | actual hardware topology. This way it is much easier for software to # | tell that, for example, a scsi copy command will not work between two # | ATAPI devices. More importantly, hot plugging should theoretically # | work now, since Scsi_hosts are allocated and deallocated as ATAPI # | devices are added or removed. # | # | This change eliminates the idescsi_drives[] array and the # | ide_driver_t.id field that was used to index it. # | # | The idescsi_scsi_t data structure is now allocated at # | the end of the struct Scsi_Host rather than being a separate # | memory allocation. The calculation of various private pointers # | are changed slightly as a result. # | # | Other minor nits include making all global routines # | static and adding some missing error branches in # | init_idescsi_module. # | # | I've verified that I can at least read raw data # | from a DVD-ROM with with this change. # | # | When I unload this ide-scsi module, the stock ide-scsi module # | or the stock ide-cd modules in 2.5.56, I get what appears to be the # | same kernel bad memory reference, apparently due to some generic # | device device added to drivers/ide/ide.c. It does not appear to # | be due to this patch. # | # | The patch is a net deletion of one line. # | # -------------------------------------------- # 03/01/24 warlord@mit.edu 1.925.30.6 # [IPSEC]: Block on connect for IPSEC keying. # -------------------------------------------- # 03/01/24 kai@tp1.ruhr-uni-bochum.de 1.925.12.2 # kbuild: Remove -DEXPORT_SYMTAB switch # # rusty's module rewrite removed the reference to EXPORT_SYMTAB # from linux/module.h, and it's not used anywhere else, either. # -------------------------------------------- # 03/01/24 kai@tp1.ruhr-uni-bochum.de 1.925.12.3 # kbuild: Remove obsolete CONFIG_MODVERSIONS cruft # # Though the CONFIG_MODVERSIONS option was removed with rusty's module # rewrite and the associated code broken, a lot of that code was still # living on here and there. Now it's gone for good. # -------------------------------------------- # 03/01/24 davidm@tiger.hpl.hp.com 1.925.31.8 # ia64: Sync up with 2.5.59. # Add light-weight version of set_tid_address() system call. # -------------------------------------------- # 03/01/24 kai@tp1.ruhr-uni-bochum.de 1.925.12.4 # kbuild: Add CONFIG_MODVERSIONING and __kcrctab # # This patch adds the new config option CONFIG_MODVERSIONING which will # be the new way of checking for ABI changes between kernel and module # code. # # This and the following patches are in part based on an initial # implementation by Rusty Russell and I believe some of the ideas go back # to discussions on linux-kbuild, Keith Owens and Rusty. # # though I'm not sure I think credit for the basic idea of # storing version info in sections goes to Keith Owens and Rusty. # # o Rename __gpl_ksymtab to __ksymtab_gpl since that looks more consistent # and appending _gpl instead of putting it into the middle simplifies # sharing code for EXPORT_SYMBOL() and EXPORT_SYMBOL_GPL() # o Add CONFIG_MODVERSIONING # o If CONFIG_MODVERSIONING is set, add a section __kcrctab{,_gpl}, which # contains the ABI checksums for the exported symbols listed in # __ksymtab{,_crc} Since we don't know the checksums yet at compilation # time, just make them an unresolved symbol which gets filled in by the # linker later. # -------------------------------------------- # 03/01/24 davidm@tiger.hpl.hp.com 1.925.31.9 # ia64: More vmlinux.lds.S cleanups. # -------------------------------------------- # 03/01/24 manish@Zambeel.com 1.925.6.13 # [netdrvr tg3] add support for another 5704 board, fix up 5704 phy init # -------------------------------------------- # 03/01/24 jgarzik@redhat.com 1.925.6.14 # [netdrvr tg3] more verbose failures, during initialization # -------------------------------------------- # 03/01/24 davidm@tiger.hpl.hp.com 1.925.31.10 # ia64: Switch over to using place-relative ("ip"-relative) entries in # the exception table. # -------------------------------------------- # 03/01/24 scott.feldman@intel.com 1.925.6.15 # [netdrvr e1000] ethtool eeprom buffer dynamic allocation, # rather than large static allocation on the stack # -------------------------------------------- # 03/01/24 scott.feldman@intel.com 1.925.6.16 # [netdrvr e1000] remove /proc support (superceded by ETHTOOL_GSTATS) # -------------------------------------------- # 03/01/24 scott.feldman@intel.com 1.925.6.17 # [netdrvr e1000] add ETHTOOL_GSTATS support # -------------------------------------------- # 03/01/24 scott.feldman@intel.com 1.925.6.18 # [netdrvr e1000] TSO fixes and cleanups: # # * Bug fix: TSO s/w workaround for premature desc write-back by h/w. h/w # was indicating desc done before DMA is complete, causing resources to # be returned to OS too early. Bad things happen then. # * Bug fix: Not time-stamping descriptors for fragmented sends. Could # cause false hang-detection. # * Removed unecessary #ifdefs # -------------------------------------------- # 03/01/24 robert.olsson@data.slu.se 1.925.6.19 # [netdrvr e1000] NAPI fixes: # # * e1000_irq_disable was used to disable irqs which called # synchronize_irq which in turn caused a solid hang on SMP # systems. # -------------------------------------------- # 03/01/24 kai@tp1.ruhr-uni-bochum.de 1.925.12.5 # kbuild: Generate versions for exported symbols # # Up to now, we had a way to store the checksums associated with the # exported symbols, but they were not filled in yet. This is done # with this patch, using the linker to actually do that for us. # # The comment added with this patch explains what magic exactly is going # on. # -------------------------------------------- # 03/01/24 davidm@tiger.hpl.hp.com 1.925.31.11 # ia64: Check for acceptable version of gas before trying to build # the kernel. Old gas versions will result in buggy kernels # that will bugcheck all over the place (usually mount() is # the first one to fail). # -------------------------------------------- # 03/01/24 kai@tp1.ruhr-uni-bochum.de 1.925.12.6 # kbuild/modules: Check __vermagic for validity # # modprobe --force allows to load modules without a matching version # magic string. This invalidation is done by clearing the SHF_ALLOC # flag, so check it in the kernel. Also, clear the SHF_ALLOC flag # unconditionally, since we don't need to store the __vermagic section # in the kernel, it's only checked once at load time. # -------------------------------------------- # 03/01/24 kai@tp1.ruhr-uni-bochum.de 1.925.12.7 # kbuild/modules: Don't save the license string # # Again, the license string is only used at load time, so no need # to store it permanently in kernel memory. # -------------------------------------------- # 03/01/24 kai@tp1.ruhr-uni-bochum.de 1.925.12.8 # kbuild/modules: Track versions of exported symbols # # Store the information on the checksum alongside the rest of the # information on exported symbols. To actually use them, we need # something to check them against first, though ;) # # Also, fix some conditional debug code to actually compile. # -------------------------------------------- # 03/01/24 kai@tp1.ruhr-uni-bochum.de 1.925.12.9 # kbuild: Always link module (.ko) from associated (.o) # # For extracting the versions and finding the unresolved symbols, we # need multi-part modules to be linked together already, so this # patch separates the building of the modules as a .o file from generating # the .ko in the next step. # -------------------------------------------- # 03/01/24 kai@tp1.ruhr-uni-bochum.de 1.925.12.10 # kbuild: Don't build final .ko yet when descending with CONFIG_MODVERSIONING # # With CONFIG_MODVERSIONING, we need to record the versions of the unresolved # symbols in the final .ko, which we only know after we finished # the descending build. So we only build .o in that case. # # Also, keep track of the modules we built, the post-processing step needs # a list of all modules. Keeping track is done by touching # .tmp_versions/path/to/module.ko # -------------------------------------------- # 03/01/24 kai@tp1.ruhr-uni-bochum.de 1.925.12.11 # kbuild/modules: Record versions for unresolved symbols # # In the case of CONFIG_MODVERSIONING, the build step will only # generate preliminary .o objects, and an additional # postprocessing step is necessary to record the versions of the unresolved # symbols and add them into the final .ko # # The version information for unresolved symbols is again recorded into # a special section, "__versions", which contains an array of symbol # name strings and checksum (struct modversion_info). Size is here not # an issue, since this section will not be stored permanently in kernel # memory. # # Makefile.modver takes care of the following steps: # o Collect the version information for all exported symbols from vmlinux # and all modules which export symbols. # o For each module, generate a C file which contains the modversion # information for all unresolved symbols in that module. # o For each module, compile that C file to an object file # o Finally, link the .ko using the preliminary + the # version information above. # # The first two steps are currently done by not very efficient scripting, # so there's room for performance improvement using some helper C code. # -------------------------------------------- # 03/01/24 kai@tp1.ruhr-uni-bochum.de 1.925.12.12 # kbuild/modules: Return the index of the symbol from __find_symbol() # # We'll need that index to find the version checksum for the symbol in # a bit. # -------------------------------------------- # 03/01/24 kai@tp1.ruhr-uni-bochum.de 1.925.12.13 # kbuild/modules: Check module symbol versions on insmod # # Yeah, the final step! # # Now that we've got the checksums for the exported symbols and the # checksums of the unresolved symbols for the module we're loading, # let's compare and see. # # Again, we allow to load a module which has the version info stripped, # but taint the kernel in that case. # -------------------------------------------- # 03/01/25 rmk@flint.arm.linux.org.uk 1.925.21.6 # [ARM] Drop "alloc" flag for the .stack segment. # # Some linkers obey the linker script and make .stack unallocatable, # others obey the flags from the object files. Dropping "a" should # make the end result deterministic in all cases. # -------------------------------------------- # 03/01/25 rmk@flint.arm.linux.org.uk 1.925.21.7 # [ARM] Add one CPU device to the driver model. # # Since CPUFreq now uses the driver model, we need to register a CPU # device with the driver model. # -------------------------------------------- # 03/01/25 rmk@flint.arm.linux.org.uk 1.925.21.8 # [ARM] Kill build warnings for Integrator PCI V3 driver. # -------------------------------------------- # 03/01/25 rmk@flint.arm.linux.org.uk 1.925.21.9 # [ARM] Fix KSTK_EIP and KSTK_ESP macros # # These two macros got missed when converting from the task-struct on # stack to thread_info-struct on stack. # -------------------------------------------- # 03/01/25 rmk@flint.arm.linux.org.uk 1.925.21.10 # [ARM] Add extra IO functionality. # # Add {read,write}[bwl] functionality to Acorn RISC PC. Add # {read,write}s[bwl] functionality for all. # -------------------------------------------- # 03/01/25 kai@tp1.ruhr-uni-bochum.de 1.925.12.14 # kbuild: Add cscope support to Makefile # # We support tags and TAGS already, so... # # by Louis Zhuang # -------------------------------------------- # 03/01/25 kai@tp1.ruhr-uni-bochum.de 1.925.12.15 # kbuild: gcc-3.3 warns about 2.5.59 EXPORT_SYMBOL # # When building linux-2.5.59 with gcc-3.3 (on s390, if that matters), # I get a warning like "warning: `__ksymtab___foo' defined but # not used" each time that EXPORT_SYMBOL is used. # # by Arnd Bergmann # -------------------------------------------- # 03/01/25 kai@tp1.ruhr-uni-bochum.de 1.925.12.16 # kbuild: Move the definition of MODVERDIR # # MODVERDIR was defined in the build-only section, but it's needed for # "make mrproper" as well. # -------------------------------------------- # 03/01/26 sam@mars.ravnborg.org 1.925.33.1 # kbuild: arch{mrproper,clean} no longer mandatory # # archmrproper and archclean is declared .PHONY in top-level Makefile, # therefore they are no longer mandatory in arch/$(ARCH)/Makefile. # -------------------------------------------- # 03/01/26 sam@mars.ravnborg.org 1.925.33.2 # kbuild/all archs: Removed unused arch{clean,rproper} targets # # The recent change in the top level makefile allowed this clean-up in all # the architecture specific Makefiles. # No functional changes, just deleted the now optional targets # -------------------------------------------- # 03/01/26 rmk@flint.arm.linux.org.uk 1.925.21.11 # [ARM] Convert ecard to allow use of ioremap + {read,write}[bwl] # -------------------------------------------- # 03/01/26 jejb@mulgrave.(none) 1.925.32.3 # [SCSI] make echo scsi add-single-device x x x x > /proc/scsi/scsi work again # # Correct the logic error making it fail # -------------------------------------------- # 03/01/26 sam@mars.ravnborg.org 1.925.33.3 # kbuild: HEAD replaced with head-y # # In arch/$(ARCH)/Makefile the objects to be linked as the very first are specified with HEAD. # To make more consistent naming, and to allow smarter kbuild style declarations # HEAD is replaced with head-y. # Support for the old notaion is kept for now. # Only i386 updated. # -------------------------------------------- # 03/01/26 sam@mars.ravnborg.org 1.925.33.4 # kbuild/all archs: Replace HEAD with head-y # # Replace done for all archs except mips* and cris. # These architectures are lacking too much behind that it made sense # -------------------------------------------- # 03/01/26 sam@mars.ravnborg.org 1.925.33.5 # kbuild: Update Documentation/kbuild/makefiles.txt # # makefiles.txt brought up-to-date with the changes that has occured # in kbuild within the last couple of months. # Restructured to present relevant info earlier, and rewritten the # architecture specific section to a certain degree. # # One change in style is that makefiles used throughout the kernel tree is called # "kbuild makefiles", because they follow the kbuild syntax. # Old notation was "subdirectory makefiles". # # There is added a TODO section, if anyone feel tempted to add a bit more text. # -------------------------------------------- # 03/01/26 sam@mars.ravnborg.org 1.925.33.6 # Documentation/modules.txt: How to compile modules outside the kernel tree # # Updated documentation/modules.txt with the following: # o Default config target is menuconfig # o Documented INSTLL_MOD_PATH # o Referenced to kernel 2.4 # o How to compile modules outside the kernel tree # # There is a lot of stuff in need for updating, this is first step # -------------------------------------------- # 03/01/26 sam@mars.ravnborg.org 1.925.33.7 # kbuild: Removed Documentation/kbuild/bug-list.txt # # The bugs listed was no longer relevant. # Also updated OO-INDEX # -------------------------------------------- # 03/01/26 rmk@flint.arm.linux.org.uk 1.925.21.12 # [ARM] Update Acorn SCSI drivers # # - Add scsi devclass support. # - Convert to use ioremap and friends. # - Fix oops which can occur when driver claims interrupt, and there's # an interrupt pending - move to a two-level fas driver initialisation. # -------------------------------------------- # 03/01/26 sam@mars.ravnborg.org 1.925.33.8 # kbuild: Enable the syntax "make dir/" # # "make dir/" is used to build a subsystem without going through the # full kernel tree, neither completing the build. # This is solely useful during development, when focus is on a # single subsystem. # This is the counterpart to "make dir/module.ko" # -------------------------------------------- # 03/01/26 sam@mars.ravnborg.org 1.925.33.9 # kbuild: Made cmd_link_multi readable # # Introduced ld_flags, and separated out the common parts of link_multi # for normal and module objects. # Added a bit of a comment as well # -------------------------------------------- # 03/01/26 sam@mars.ravnborg.org 1.925.33.10 # kbuild: ld_flags used consistently in Makefile.build # -------------------------------------------- # 03/01/26 rmk@flint.arm.linux.org.uk 1.925.21.13 # [ARM] Add linux/errno.h include to allow pcf8583.c to build. # -------------------------------------------- # 03/01/27 rmk@flint.arm.linux.org.uk 1.925.21.14 # [ARM] Remove 200Hz -> 100Hz conversion for ebsa110 timer. # # We now really run the ebsa110 kernel timer at 200Hz, and convert # where necessary to 100Hz for user space. # -------------------------------------------- # 03/01/27 rmk@flint.arm.linux.org.uk 1.925.21.15 # [ARM] Include ARM architecture version in module "version" string # -------------------------------------------- # 03/01/27 petkan@users.sourceforge.net 1.925.20.13 # [PATCH] USB: pegasus & mii cset # # Some ethernet drivers other than those in .../drivers/net need generic # MII code too and this cset shows how we do it for .../drivers/usb/net; # For now only pegasus.c is using this feature, but as soon as we find # more MII compliant controllers we'll put them in Makefile.mii too. # Note: drivers which use the generic mii routines should bracket the # code with #ifdef CONFIG_MII #endif since CONFIG_MII may not be present. # See pegasus.c for more details. # -------------------------------------------- # 03/01/27 david-b@pacbell.net 1.925.20.14 # [PATCH] USB ohci-hcd, don't force SLAB_ATOMIC allocations # # This is a minor cleanup to let per-request memory allocations block, # when the caller allows (it provided the bitmask). The driver used # to work that way until something like 2.4.3; an update (a few months # back) to how the "dma_addr_t" hashes to a "struct ohci_td *" lets us # simplify things again. Another benfit: it blocks irqs for less time # on the submit path. (The ehci driver already acts this way.) # -------------------------------------------- # 03/01/27 david-b@pacbell.net 1.925.20.15 # [PATCH] USB: usbcore misc cleanup (notably for non-dma hcds) # # The support for non-dma HCDs is likely the most interesting bit here. # # - makes dma calls behave sensibly when used with host controllers # that don't use dma (including sl811). usb_buffer_map() is a nop # while scatterlist dma mappings fail (as they must). # # - make usb_sg_init() behave sensibly when used with non-dma hcs. # the urbs are initted with transfer_buffer, not transfer_dma. # this is the higher level analogue to usb_buffer_map(), so it # needs to succeed unless there's a Real Error (tm). # # - moves two compatibility inlines from ehci.h into hcd.h so # it'll be more practical to have the other hcds work in other # environments (notably lk 2.4) too # # - remove URB_TIMEOUT_KILLED flag ... no device driver tests it; # hcds don't really (uhci sets it, never reads it; sl811 doesn't # enable the path that might set it), and it's not well defined. # if any hcd needs such state, keep it in hc-private storage. # # - in usb_sg_wait(), use yield() instead of schedule() to let # other activities free resources needed to continue. (This # was noted recently by Oliver.) # -------------------------------------------- # 03/01/27 andmike@us.ibm.com 1.925.32.4 # [SCSI] fix scsi_find_device() # -------------------------------------------- # 03/01/27 perex@suse.cz 1.925.34.1 # ALSA update # - removed some 2.2 code # - PCM - fixed memory leak for 24-bit samples # - gameport cleanups (CS4231, ENS1370/1371, SonicVibes, Trident) # - VIA82xx - fixed current pointer calculation # - sound_firmware - fixed errno problem # - USB - moved out compatibility code # # -------------------------------------------- # 03/01/27 shaggy@shaggy.austin.ibm.com 1.925.11.3 # JFS: Minor update in Documentation/filesystems/jfs.txt # # linuxjfs email address is obsolete. Updating todo list # -------------------------------------------- # 03/01/27 perex@suse.cz 1.925.34.2 # ALSA update # - added DocBook documentation # - added many source comments # - simplified proc style interface (per card) # - updated PCM scatter-gather routines # - moved PM locking outside callbacks # -------------------------------------------- # 03/01/27 zaitcev@redhat.com 1.925.10.4 # [SUN PARTITION]: Advance slot properly while scanning. # -------------------------------------------- # 03/01/27 zaitcev@redhat.com 1.925.10.5 # [SPARC]: Kill smp_found_cpus declaration. # -------------------------------------------- # 03/01/27 perex@suse.cz 1.925.34.3 # ALSA update # - added documentation for OSS emulation # - CMI8330 - duplex/mixer cleanups # - via82xx - rewritten for 8233+ (multiple playback, S/PDIF, secondary capture) # - USB - quirk code update # -------------------------------------------- # 03/01/27 davidm@tiger.hpl.hp.com 1.925.31.12 # ia64: Fix typo. # -------------------------------------------- # 03/01/27 perex@suse.cz 1.925.34.4 # ALSA update # - updated programmer's documentation # - recoded PCM scatter-gather memory management # - MPU401 - cleanups # - CMI8330 - cleanups # - EMU10K1 - Audigy2 update # - ENS1371 - added surround support # - USB - added more quirks and improved PCM constraint definitions # -------------------------------------------- # 03/01/27 davem@nuts.ninka.net 1.925.30.7 # [TCP]: Add tcp_low_latency sysctl. # Currently it turns of prequeue processing, but more decisions # may be guided by it in the future. # Based upon a patch from Andi Kleen. # -------------------------------------------- # 03/01/28 vojtech@suse.cz 1.925.20.16 # [PATCH] USB: Add an entry in cdc-acm.c for devices with ACM class (some Motorola phones) # # Normally the CDC ACM devices have an subclass of 0, and the ACM subclass is # only applied to their first interface. But some have the subclass set on # the device itself, namely Motorola mobile phones. This patch takes those # devices into account. # -------------------------------------------- # 03/01/28 vojtech@suse.cz 1.925.20.17 # [PATCH] USB: additions to hid-core.c blacklist # -------------------------------------------- # 03/01/28 jejb@raven.il.steeleye.com 1.925.4.15 # Merge # -------------------------------------------- # 03/01/28 luben@splentec.com 1.838.181.3 # cmd_alloc54-3.patch [3/3] # # this patch implements the new command allocation scheme for SCSI # Core, using the slab cache and a free_list for each host for a # backup store of one command (or many). # # o The three (3) subversion means that it has been updated to use # ISA DMA and PCI DMA memory for scsi command allocation, # i.e. there's two scsi command caches now. # # o The interface is, of course, unchanged; and this is the whole # point of making this allocation scheme -- i.e. the allocator # is abstracted. # # -------------------------------------------- # 03/01/28 jejb@raven.il.steeleye.com 1.925.35.1 # Merge raven.il.steeleye.com:/home/jejb/BK/scsi-cmd-changes-old-2.5 # into raven.il.steeleye.com:/home/jejb/BK/scsi-cmd-changes-2.5 # -------------------------------------------- # 03/01/28 jejb@raven.il.steeleye.com 1.925.35.2 # Merge raven.il.steeleye.com:/home/jejb/BK/scsi-cmd-changes-2.5.54 # into raven.il.steeleye.com:/home/jejb/BK/scsi-cmd-changes-2.5 # -------------------------------------------- # 03/01/28 perex@suse.cz 1.925.34.5 # ALSA update # - fixed makefiles for sequencer modules: # when CONFIG_SND_SEQUENCER is m, then synth modules should be m, too # -------------------------------------------- # 03/01/28 jejb@raven.il.steeleye.com 1.925.4.16 # Merge raven.il.steeleye.com:/home/jejb/BK/scsi-aic-2.5 # into raven.il.steeleye.com:/home/jejb/BK/scsi-combine-2.5 # -------------------------------------------- # 03/01/28 jejb@raven.il.steeleye.com 1.925.4.17 # Merge by hand # -------------------------------------------- # 03/01/28 davem@nuts.ninka.net 1.925.10.6 # [SPARC64]: Kill references to hugepage syscalls. # -------------------------------------------- # 03/01/28 eranian@hpl.hp.com 1.925.31.13 # [PATCH] ia64: fix PSR bug in perfmon code and switch to C99 initializers # # Please apply this small patch to your 2.5.59. # It fixes the psr problem reported by the NEC guy and also cleans # up the structure intializations in the model specific files. # -------------------------------------------- # 03/01/28 arun.sharma@intel.com 1.925.31.14 # [PATCH] ia64: make hugetlb support work again # # -------------------------------------------- # 03/01/28 jejb@mulgrave.(none) 1.925.4.18 # [SCSI] Correct command leaks in the prep_fn # -------------------------------------------- # 03/01/28 eranian@hpl.hp.com 1.925.31.15 # [PATCH] ia64: fix return type of sys_perfmonctl() # # -------------------------------------------- # 03/01/28 kuznet@ms2.inr.ac.ru 1.925.30.8 # [TCP]: Do not forget data copy while collapsing retransmission queue. # -------------------------------------------- # 03/01/29 anton@samba.org 1.930 # ppc64: some small optimisations # -------------------------------------------- # 03/01/29 anton@samba.org 1.931 # ppc64: restore non rt signals, we need to verify that older 64bit glibcs dont use them # -------------------------------------------- # 03/01/29 anton@samba.org 1.932 # ppc64: Preparation work for minimal register save/restore exception paths # -------------------------------------------- # 03/01/29 anton@samba.org 1.933 # ppc64: Fix compile with CONFIG_DEBUG_KERNEL disabled, from David Altobelli # -------------------------------------------- # 03/01/29 anton@samba.org 1.934 # ppc64: rtas proc fixes from David Altobelli # -------------------------------------------- # 03/01/29 anton@samba.org 1.935 # ppc64: defconfig update # -------------------------------------------- # 03/01/29 shaggy@shaggy.austin.ibm.com 1.925.11.4 # JFS: Implement get_index_page to replace some uses of read_index_page # # A recent change added the function read_index_page to replace calls to # read_metapage() when accessing the directory index table. However, we # replaced both calls to read_metapage() and get_metapage() with the same # function, but we really need two. In addition to unnecesary disk reads, # this problem caused an oops in __get_metapage(). # -------------------------------------------- # 03/01/29 rmk@flint.arm.linux.org.uk 1.925.21.16 # [ARM PATCH] 1361/1: EPXA10DB: Correct some typos in uart00.c # # Patch from Dirk Behme # # Patch some typos in uart00.c. frame is selected with FE_MSK and for OE_MSK rds # must be used. # -------------------------------------------- # 03/01/29 rmk@flint.arm.linux.org.uk 1.925.21.17 # [ARM PATCH] 1348/1: Add support for the HackKit board # # Patch from Stefan Eletzhofer # # This patch adds basic support for the HackKit Core CPU Board. # -------------------------------------------- # 03/01/29 davidm@tiger.hpl.hp.com 1.925.31.16 # ia64: Fix ARCH_DLINFO. # -------------------------------------------- # 03/01/29 davidm@tiger.hpl.hp.com 1.925.31.17 # ia64: Add light-weight version of getppid(). Detect at boottime whether the # McKinley Erratum 9 workaround is needed and, if not, patch the workaround # bundles with NOPs. # -------------------------------------------- # 03/01/30 dougg@torque.net 1.925.32.5 # [SCSI] Add length checking to sprintf in sg # -------------------------------------------- # 03/01/31 david-b@pacbell.net 1.925.20.18 # [PATCH] USB: ehci-hcd updates # # This should apply to 2.5.59 too. It seems to get rid of some pesky # hangs, on at least some hardware, but I won't have time to test it # on either VIA version ... maybe someone else will make the time? :) # # New QH state prevents a re-activation race # - nobody can un-halt a qh before its cleanup is done # - resubmit-from-completion had this race (some usbtest cases) # as could some normal submit paths on busy endpoints (storage) # - faster controllers would trip on this more consistently # # Queues of qtds # - work harder to avoid ever modifing any qh in software # - short reads block queue advance much less often # - be more cautious with large (>~19KB) unaligned buffers # # Unlinking urbs # - if qtd unlinked is at queue head, use its latest status # (main effect is reporting bytes from partial transfers) # - another new qh state: defer qh unlink if IAA is busy # (eliminates a busy-wait loop in a rare scenario) # # Enable features to improve bus utilization # - PCI MWI ... can produce better write throughput; and by # using right cacheline size, sometimes read throughput too # - USB NAK throttle ... sometimes reduces PCI access rates # # Other # - async dump shows more funky qh+qtd states, and NAK count # - cope with with some of the sprintf wierdness # - periodic dump is usually smaller (so is that schedule) # - minor cleanups # -------------------------------------------- # 03/01/31 baldrick@wanadoo.fr 1.925.20.19 # [PATCH] USB speedtouch: add a new speedtouch encoding function # # speedtouch: add a new encoding function, atmsar_encode. Calling it amounts to doing # atmsar_encode_aal5 followed by atmsar_encode_rawcell in one fell swoop. It eliminates # the need for intermediate buffers and reduces memory movement. The following patches # use it to simplify the send logic (and get rid of those annoying little oopsen). # -------------------------------------------- # 03/01/30 davem@nuts.ninka.net 1.925.30.9 # [TCP]: In tcp_check_req, handle ACKless packets properly. # -------------------------------------------- # 03/01/31 anton@samba.org 1.936 # ppc64: Fix my overoptimisation of zeroing RESULT. Yes Linus, it # was all my fault. # -------------------------------------------- # 03/01/31 akpm@digeo.com 1.925.30.10 # [IPV4]: Kill bogus semicolon in fib_get_next. # -------------------------------------------- # 03/02/01 rmk@flint.arm.linux.org.uk 1.925.21.18 # [ARM PATCH] 1097/3: trizeps IDE support # # Patch from Guennadi Liakhovetski # # The enclosed patch includes trizeps-specific IDE code. It adds a # Trizeps-specific section to asm/arch/ide.h. The patch is built # against 2.5.44-rmk1. # -------------------------------------------- # 03/02/01 rmk@flint.arm.linux.org.uk 1.925.21.19 # [ARM PATCH] 1096/4: trizeps PCMCIA support # # Patch from Guennadi Liakhovetski # # A minor update, trizeps.h has to be included explicitely now, since # platform-specific headers are commented out in hardware.h # -------------------------------------------- # 03/02/01 rmk@flint.arm.linux.org.uk 1.925.21.20 # [ARM PATCH] 1091/3: support for trizeps board (SA1110-based) # # Patch from Guennadi Liakhovetski # # The enclosed patch includes support for the trizeps board, based on the # StrongARM-1110 CPU, machine number 74. The patch is built against # 2.5.44-rmk1. Only the core files - from arch/arm and # include/asm-arm directories. # -------------------------------------------- # 03/02/01 rmk@flint.arm.linux.org.uk 1.925.21.21 # [ARM] Make trizeps_map_io static. # -------------------------------------------- # 03/02/01 rmk@flint.arm.linux.org.uk 1.925.21.22 # [ARM] Ensure GCC uses frame pointers when we want them. # # ARM GCC 2.95 generates frame pointers by default. GCC 3.2.x seems # to require some persuasion to generate them, despite being required # for debugging. # -------------------------------------------- # 03/02/01 rmk@flint.arm.linux.org.uk 1.925.21.23 # [ARM] Add missing #endif # -------------------------------------------- # 03/02/01 rmk@flint.arm.linux.org.uk 1.925.21.24 # [ARM] Remove IRQ desc->enabled in favour of testing disable_depth # -------------------------------------------- # 03/02/01 davem@nuts.ninka.net 1.925.6.20 # [TG3]: Let chip do pseudo-header csum on rx. # -------------------------------------------- # 03/02/01 davem@nuts.ninka.net 1.925.6.21 # [TG3]: Add device IDs for 5704S/5702a3/5703a3. # -------------------------------------------- # 03/02/01 davem@nuts.ninka.net 1.925.6.22 # [TG3]: Prevent dropped frames when flow-control is enabled. # -------------------------------------------- # 03/02/01 davem@nuts.ninka.net 1.925.6.23 # [TG3]: Correct MIN_DMA and ONE_DMA settings in dma_rwctrl. # -------------------------------------------- # 03/02/01 davem@nuts.ninka.net 1.925.6.24 # [TG3]: Workaround 5701 back-to-back register write bug. # -------------------------------------------- # 03/02/01 davem@nuts.ninka.net 1.925.6.25 # [TG3]: Add workaround for third-party phy issues. # -------------------------------------------- # 03/02/01 davem@nuts.ninka.net 1.925.6.26 # [TG3]: Remove anal grc_misc_cfg board IDs check. # -------------------------------------------- # 03/02/01 davem@nuts.ninka.net 1.925.6.27 # [TG3]: Fix typos in previous changes. # -------------------------------------------- # 03/02/01 jgarzik@redhat.com 1.925.6.28 # [netdrvr tg3] bump version, tidy comments # # No code changes in this patch, just cleanup and version bump. # -------------------------------------------- # 03/02/01 scott.feldman@intel.com 1.925.6.29 # [netdrvr e100] math fixes and a cleanup: # * Use correct math to calc timeout value passed to schedule_timeout # * Change "walkaround" to "workaround" # -------------------------------------------- # 03/02/02 wriede@riede.org 1.925.32.6 # [osst] fix bugzilla 244 (SRpnt initialisation problem) # # see http://bugzilla.kernel.org/show_bug.cgi?id=244 # -------------------------------------------- # 03/02/02 torvalds@home.transmeta.com 1.925.10.7 # Merge bk://kernel.bkbits.net/davem/sparc-2.5 # into home.transmeta.com:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/02/02 torvalds@home.transmeta.com 1.925.10.8 # Make threaded core-dump names use the tgid instead of the pid. Makes # sense now that we can dump all threads in one core-dump. # # Fix from MAEDA Naoaki # -------------------------------------------- # 03/02/02 torvalds@home.transmeta.com 1.925.10.9 # Atyfb_base compile fix from Andres Salomon # -------------------------------------------- # 03/02/02 torvalds@home.transmeta.com 1.925.10.10 # Merge http://linux-sound.bkbits.net/linux-sound # into home.transmeta.com:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/02/02 rmk@flint.arm.linux.org.uk 1.925.21.25 # [ARM] Add arch/arm/common # # Certain support files are shared between various ARM machine classes. # In other to sanely support these, we place the shared files in # arch/arm/common instead of the individual machine class directories. # -------------------------------------------- # 03/02/02 akpm@digeo.com 1.925.36.1 # [PATCH] Fix data loss problem due to sys_sync # # In 2.5.52 I broke sys_sync() for ext2 in subtle ways. # # sys_sync() will set mapping->dirtied_when non-zero against a clean inode. # Later, in (say) __iget(), that inode gets moved over to inode_unused or # inode_in_use. But because it has non-zero ->dirtied_when, # __mark_inode_dirty() thinks that the inode must still be on sb->s_dirty. # # But it isn't. It's on inode_in_use. It (and its pages) never get written # out and the data gets thrown away on unmount. # # The patch ceases to use ->dirtied_when as an indicator of inode dirtiness. # Not sure why I even did that :( # -------------------------------------------- # 03/02/02 akpm@digeo.com 1.925.36.2 # [PATCH] direct-IO: fix i_size handling on ENOSPC # # When an appending O_DIRECT write hits ENOSPC we're returning a short write # which is _too_ short. The file ends up with an undersized i_size and fsck # complains. # # So update the return value with the partial result before bailing out. # -------------------------------------------- # 03/02/02 akpm@digeo.com 1.925.36.3 # [PATCH] Fix inode size accounting race # # Since Jan removed the lock_kernel()s in inode_add_bytes() and # inode_sub_bytes(), these functions have been racy. # # One problematic workload has been discovered in which concurrent writepage # and truncate on SMP quickly causes i_blocks to go negative. writepage() does # not take i_sem, and it seems that for ext2, there are no other locks in # force when inode_add_bytes() is called. # # Putting the BKL back in there is not acceptable. To fix this race I have # added a new spinlock "i_lock" to the inode. # # That lock is presently used to protect i_bytes and i_blocks. We could use it # to protect i_size as well. # # The splitting of the used disk space into i_blocks and i_bytes is silly - we # should nuke all that and just have a bare loff_t i_usedbytes. Later. # -------------------------------------------- # 03/02/02 akpm@digeo.com 1.925.36.4 # [PATCH] vmlinux fix # # Patch from: "H. J. Lu" # # Fixes a commonly-reported insmod oops. # # Move the ksymtab labels definitions inside the liker section, so they get the # right addresses. # -------------------------------------------- # 03/02/02 akpm@digeo.com 1.925.36.5 # [PATCH] Compile fix in sound/oss/maestro.c # # Patch from "Ph. Marek" # # Compile fix in sound/oss/maestro.c # -------------------------------------------- # 03/02/02 akpm@digeo.com 1.925.36.6 # [PATCH] remove lock_kernel() from exec of setuid apps # # Patch from Manfred Spraul # # exec of setuid apps and ptrace must be synchronized, to ensure that a normal # user cannot ptrace a setuid app across exec. ptrace_attach acquires the # task_lock around the uid checks, compute_creds acquires the BLK. The patch # converts compute_creds to the task_lock. Additionally, it removes the # do_unlock variable: the task_lock is not heaviliy used, there is no need to # avoid the spinlock by adding branches. # # The patch is a cleanup patch, not a fix for a security problem: AFAICS the # sys_ptrace in every arch acquires the BKL before calling ptrace_attach. # -------------------------------------------- # 03/02/02 akpm@digeo.com 1.925.36.7 # [PATCH] properly handle too long pathnames in d_path # # Forward port of a 2.4 patch by Christoph Hellwig. # # See http://cert.uni-stuttgart.de/archive/bugtraq/2002/03/msg00384.html # for the security implications. # -------------------------------------------- # 03/02/02 akpm@digeo.com 1.925.36.8 # [PATCH] fix handling of ext2 allocation failures # # Patch from: Hugh Dickins # # For almost a year (since 2.5.4) ext2_new_block has tended to set err 0 # instead of -ENOSPC or -EIO. This manifested variously (typically depends on # what's stale in ext2_get_block's chain[4] array): sometimes __brelse free # free buffer backtraces, sometimes release_pages oops, usually # generic_make_request beyond end of device messages, followed by further ext2 # errors. # # [Insert lecture on dangers of using goto for unwind :-] # -------------------------------------------- # 03/02/02 akpm@digeo.com 1.925.36.9 # [PATCH] ext2_new_block cleanups and fixes # # The general error logic handling in there is: # # *errp = -EFOO; # # if (some_error) # goto out; # # this is fragile and unmaintainable, because the setting of the error code is # "far away" from the site where the error was detected. # # And the code was actually wrong - we're returning ENOSPC in places where fs # metadata inconsistency was detected. We traditionally return -EIO in this # case. # # So change it all to do, effectively: # # if (some_error) { # *errp = -EFOO; # goto out; # } # -------------------------------------------- # 03/02/02 akpm@digeo.com 1.925.36.10 # [PATCH] ext3: fix scheduling storm and lockups # # There have been sporadic sightings of ext3 causing little blips of 100,000 # context switches per second when under load. # # At the start of do_get_write_access() we have this logic: # # repeat: # lock_buffer(jh->bh); # ... # unlock_buffer(jh->bh); # ... # if (jh->j_list == BJ_Shadow) { # sleep_on_buffer(jh->bh); # goto repeat; # } # # The problem is that the unlock_buffer() will wake up anyone who is sleeping # in the sleep_on_buffer(). # # So if task A is asleep in sleep_on_buffer() and task B now runs # do_get_write_access(), task B will wake task A by accident. Task B will then # sleep on the buffer and task A will loop, will run unlock_buffer() and then # wake task B. # # This state will continue until I/O completes against the buffer and kjournal # changes jh->j_list. # # Unless task A and task B happen to both have realtime scheduling policy - if # they do then kjournald will never run. The state is never cleared and your # box locks up. # # # The fix is to not do the `goto repeat;' until the buffer has been taken of # the shadow list. So we don't go and wake up the other waiter(s) until they # can actually proceed to use the buffer. # # The patch removes the exported sleep_on_buffer() function and simply exports # an existing function which provides access to a buffer_head's waitqueue # pointer. Which is a better interface anyway, because it permits the use of # wait_event(). # # This bug was introduced introduced into 2.4.20-pre5 and was faithfully ported # up. # -------------------------------------------- # 03/02/02 akpm@digeo.com 1.925.36.11 # [PATCH] slab poison checking fix # # Spotted by Andries Brouwer. There's one place where slab is calling # check_poison_obj() but not reporting on any detected failure. # # We used to go BUG() in there. Convert it over to the kinder, gentler # slab_error() regime. # -------------------------------------------- # 03/02/02 akpm@digeo.com 1.925.36.12 # [PATCH] quota locking fix # # Quota locking fix from Jan Kara. # -------------------------------------------- # 03/02/02 akpm@digeo.com 1.925.36.13 # [PATCH] quota semaphore fix # # The second quota locking fix. Sorry, I seem to have misplaced the # changelog. # -------------------------------------------- # 03/02/02 akpm@digeo.com 1.925.36.14 # [PATCH] preempt spinlock efficiency fix # # Patch from: jak@rudolph.ccur.com (Joe Korty) # # The new, preemptable spin_lock() spins on an atomic bus-locking read/write # instead of an ordinary read, as the original spin_lock implementation did. # Perhaps that is the source of the inefficiency being seen. # # Attached sample code compiles but is untested and incomplete (present # only to illustrate the idea). # -------------------------------------------- # 03/02/02 akpm@digeo.com 1.925.36.15 # [PATCH] Make fix sync_filesystems() actually do something # # Random semicolon makes the whole thing a no-op. # # It _did_ work. I must have broken it between testing and sending :( # -------------------------------------------- # 03/02/02 akpm@digeo.com 1.925.36.16 # [PATCH] stack overflow checking fix # # Patch from William Lee Irwin III # # struct thread_info is shared with the stack, not struct task_struct. # False positives have been seen. # -------------------------------------------- # 03/02/02 akpm@digeo.com 1.925.36.17 # [PATCH] slab IRQ fix # # Patch from Manfred Spraul # # cache_alloc_refill() forgets to disable interrupts again on an error path. # This exposes us to slab corruption and it makes slab debugging go BUG (it # expects local irqs to be disabled). # -------------------------------------------- # 03/02/02 akpm@digeo.com 1.925.36.18 # [PATCH] blkdev.h fixes # # Patch from William Lee Irwin III # # BLK_BOUNCE_HIGH and BLK_BOUNCE_ANY are compared against 64-bit quantities. # Cast these unsigned long quantities to avoid overflow. # -------------------------------------------- # 03/02/02 akpm@digeo.com 1.925.36.19 # [PATCH] symbol_get linkage fix # # Patch from Rusty Russell # # Make symbol_get() use undefined weak symbols if !CONFIG_MODULE. # Many thanks to RTH for introducing undef weak symbols to me. # -------------------------------------------- # 03/02/02 akpm@digeo.com 1.925.36.20 # [PATCH] i386 pgd_index() doesn't parenthesize its arg # # Patch from William Lee Irwin III # # pgd_index() doesn't parenthesize its argument. This is a bad idea for # macros, since it's legitimate to pass expressions to them that will get # misinterpreted given operator precedence and the shift. # -------------------------------------------- # 03/02/02 akpm@digeo.com 1.925.36.21 # [PATCH] kernel param and KBUILD_MODNAME name-munging mess # # Patch from: Rusty Russell # # Mikael Pettersson points out that "-s" gets mangled to "_s" on the # kernel command line, even though it turns out not to be a # parameter. # -------------------------------------------- # 03/02/02 akpm@digeo.com 1.925.36.22 # [PATCH] i386 pgd_index() doesn't parenthesize its arg # # Patch from William Lee Irwin III # # PAE's pte_none() and pte_pfn() evaluate their arguments twice; # analogous fixes have been made to other things; c.f. pgtable.h's long # list of one-line inlines with parentheses still around their args. # -------------------------------------------- # 03/02/02 akpm@digeo.com 1.925.36.23 # [PATCH] pcmcia timer initialisation fixes # # pcmcia timer initialisation fixes from Anton Blanchard # -------------------------------------------- # 03/02/02 akpm@digeo.com 1.925.36.24 # [PATCH] correct wait accounting in wait_on_buffer() # # __wait_on_buffer() needs to use io_schedule(), so processes in there are # accounted as being in I/O wait. # -------------------------------------------- # 03/02/02 akpm@digeo.com 1.925.36.25 # [PATCH] atyfb compilation fix # # Patch from "Andres Salomon" # # Fix compilation of atyfb_base.c # -------------------------------------------- # 03/02/02 akpm@digeo.com 1.925.36.26 # [PATCH] floppy locking fix # # redo_fd_request() needs to take the queue lock around the call to # elv_next_request(). # -------------------------------------------- # 03/02/02 akpm@digeo.com 1.925.36.27 # [PATCH] soundcore.c referenced non-existent errno variable # # Patch from: Petr Vandrovec # # soundcore is trying to perform kernel syscalls to load firmware, but falls # afoul of missing `errno'. Convert it to use VFS API functions. # -------------------------------------------- # 03/02/02 akpm@digeo.com 1.925.36.28 # [PATCH] Fix generic_file_readonly_mmap() # # We cannot clear VM_MAYWRITE in there - it turns writeable MAP_PRIVATE # mappings into readonly ones. # # So change it back to the 2.4 form - disallow a writeable MAP_SHARED mapping # against filesystems which do not implement ->writepage(). # -------------------------------------------- # 03/02/02 akpm@digeo.com 1.925.36.29 # [PATCH] exit_mmap fix for 64bit->32bit execs # # The recent exit_mmap() changes broke PPC64 when 64-bit applications exec # 32-bit ones. ia32-on-ia64 was broken as well # # What is happening is that load_elf_binary() sets TIF_32BIT (via # SET_PERSONALITY) _before_ running exit_mmap(). So when we're unmapping the # vma's of the old image, we are running under the new image's personality. # # This causes PPC64 to pass a 32-bit TASK_SIZE to unmap_vmas(), even when the # execing process had a 64-bit image. Because unmap_vmas() is not provided # with the correct virtual address span it does not unmap all the old image's # vma's and we go BUG_ON(mm->map_count) in exit_mmap(). # # The early SET_PERSONALITY() is required before we look up the interpreter # because the lookup of the executable has to happen under the alternate root # which SET_PERSONALITY() may set. # # Unfortunately this means that we're running flush_old_exec() under the new # exec's personality. Hence this bug. # # So what the patch does is to simply pass ~0UL into unmap_vmas(), which tells # it to unmap everything regardless of current personality. Which is what the # old open-coded VMA killer was doing. # # There remains the problem that some architectures are sometimes passing the # incorrect TASK_SIZE into tlb_finish_mmu(). They've always been doing that. # -------------------------------------------- # 03/02/02 akpm@digeo.com 1.925.36.30 # [PATCH] fix show_task oops # # Patch from Russell King # # show_task() attempts to calculate the amount of free space which hasn't been # written to on the kernel stack by reading from the base of the kernel stack # upwards. # # However, it mistakenly uses the task_struct pointer as the base of the stack, # which it isn't, and this can cause an oops. # # Here is a patch which uses the task thread pointer instead, which should be # located at the bottom of the kernel stack. It appears this was missed when # the thread structure was introduced. # -------------------------------------------- # 03/02/02 torvalds@home.transmeta.com 1.925.10.11 # Merge # -------------------------------------------- # 03/02/02 torvalds@home.transmeta.com 1.925.10.12 # Merge bk://bk.arm.linux.org.uk # into home.transmeta.com:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/02/02 jmorris@intercode.com.au 1.925.30.11 # [IPSEC]: remove trailer_len from esp and xfrm properties. # -------------------------------------------- # 03/02/02 jmorris@intercode.com.au 1.925.30.12 # [IPSEC]: Update ah documentation. # -------------------------------------------- # 03/02/02 jmorris@intercode.com.au 1.925.30.13 # [IPSEC] Convert esp auth to use proper crypto api calls. # -------------------------------------------- # 03/02/02 jmorris@intercode.com.au 1.925.30.14 # [IPSEC] Generic ICV handling for ESP. # -------------------------------------------- # 03/02/03 jgarzik@redhat.com 1.925.6.30 # Merge kernel.bkbits.net:net-drivers-2.5 # into redhat.com:/garz/repo/net-drivers-2.5 # -------------------------------------------- # 03/02/02 jmorris@intercode.com.au 1.925.30.15 # [CRYPTO]: in/out scatterlist support for ciphers. # - Merge scatterwalk patch from Adam J. Richter # API change: cipher methods now take in/out scatterlists and nbytes # params. # - Merge gss_krb5_crypto update from Adam J. Richter # - Add KM_SOFTIRQn (instead of KM_CRYPTO_IN etc). # - Add asm/kmap_types.h to crypto/internal.h # - Update cipher.c credits. # - Update cipher.c documentation. # -------------------------------------------- # 03/02/03 James.Bottomley@steeleye.com 1.925.6.31 # 3c509 fixes: correct MCA probing, add back ISA probe to Space.c # -------------------------------------------- # 03/02/02 cw@f00f.org 1.925.30.16 # [IPV6]: Fix tcp_v6_xmit prototype. # -------------------------------------------- # 03/02/03 devik@cdi.cz 1.925.30.17 # [NET_SCHED]: HTB scheduler updates from Devik. # - repaired htb_debug_dump call in htb_dequeue # - removed performance counter macros # - error report text fixes, new more precise mindelay error reporting # - minor fixes and cleanup # -------------------------------------------- # 03/02/03 ak@muc.de 1.925.30.18 # [IPV4]: Better behavior for NETDEV_CHANGENAME requests. # -------------------------------------------- # 03/02/03 davem@nuts.ninka.net 1.925.30.19 # [IPSEC]: Revert previous change to ip_route_connect. # -------------------------------------------- # 03/02/03 kunihiro@ipinfusion.com 1.925.30.20 # [XFRM]: Add family member to xfrm_usersa_id. # -------------------------------------------- # 03/02/03 Matt_Domsch@dell.com 1.925.5.6 # Merge dell.com:/home/mdomsch/bk/linux-2.5 # into dell.com:/home/mdomsch/bk/edd/linux-2.5-edd # -------------------------------------------- # 03/02/03 jejb@raven.il.steeleye.com 1.925.4.19 # Merge raven.il.steeleye.com:/home/jejb/BK/scsi-combined-2.5 # into raven.il.steeleye.com:/home/jejb/BK/scsi-for-linus-2.5 # -------------------------------------------- # 03/02/03 jejb@raven.il.steeleye.com 1.925.4.20 # Merge raven.il.steeleye.com:/home/jejb/BK/scsi-misc-2.5 # into raven.il.steeleye.com:/home/jejb/BK/scsi-for-linus-2.5 # -------------------------------------------- # 03/02/03 torvalds@home.transmeta.com 1.925.4.21 # Merge http://linux-scsi.bkbits.net/scsi-for-linus-2.5 # into home.transmeta.com:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/02/03 rddunlap@osdl.org 1.925.4.22 # [PATCH] fix references to discarded sections # # After disabling files that wouldn't build, there were 2 (in-kernel) # modules that referenced _init or _exit code sections when they # shouldn't. # # This fixes those modules. # -------------------------------------------- # 03/02/03 lord@sgi.com 1.925.10.13 # [XFS] Transaction A is in callback processing unpinning a buffer, # Transaction B is in the process of marking the buffer stale. # Between transaction A dropping its reference and checking # the stale state, transaction B gets a reference and stales # the buffer. A ends up freeing the log item and releasing # the buffer. End result is we have a reference to free memory # and an unlocked buffer. # # SGI Modid: 2.5.x-xfs:slinx:137748a # -------------------------------------------- # 03/02/03 lord@sgi.com 1.925.10.14 # [XFS] Do not release the last iclog of a transaction before we get our # callbacks attached to it. Otherwise we can end up executing the # callback out of order. # # SGI Modid: 2.5.x-xfs:slinx:137750a # -------------------------------------------- # 03/02/03 hch@sgi.com 1.925.10.15 # [XFS] remove a dead codepath in xfs_syncsub # # SGI Modid: 2.5.x-xfs:slinx:138037a # -------------------------------------------- # 03/02/03 lord@sgi.com 1.925.10.16 # [XFS] fix initialization of bio in end case where we are dealing with sub page # sized requests. # # SGI Modid: 2.5.x-xfs:slinx:138201a # -------------------------------------------- # 03/02/03 agrover@groveronline.com 1.925.1.36 # Merge groveronline.com:/root/bk/linux-2.5 # into groveronline.com:/root/bk/linux-acpi # -------------------------------------------- # 03/02/03 kai@tp1.ruhr-uni-bochum.de 1.925.12.17 # kbuild: Rename CONFIG_MODVERSIONING -> CONFIG_MODVERSIONS # # CONFIG_MODVERSIONING was a temporary name introduced to distinguish # between the old and new module version implementation. Since the # traces of the old implementation are now gone from the build system, # we rename the config option back in order to not confuse users more # than necessary in 2.6. # # Also, remove some historic modversions cruft throughout the tree. # -------------------------------------------- # 03/02/03 kai@tp1.ruhr-uni-bochum.de 1.925.12.18 # kbuild: Generate module versions in the normal object directories # # We generated the intermediate files that contain checksums for # unresolved symbols in .tmp_versions, which had the disadvantage # that is obscured what's going on during the build. Just # generate them as .ver.[co] right next to the actual objects in the # object tree. # -------------------------------------------- # 03/02/03 rusty@rustcorp.com.au 1.925.12.19 # kbuild: Modversions fixes # # Fix the case where no CRCs are supplied (OK, but taints kernel), and # only print one tainted message (otherwise --force gives hundreds of them). # -------------------------------------------- # 03/02/03 rusty@rustcorp.com.au 1.925.12.20 # kbuild: Ignore kernel version part of vermagic if CONFIG_MODVERSIONS # # Skip over the first part of __vermagic in modversioning is on: otherwise # you'll have to force it when changing from 2.6.0 to 2.6.1. # -------------------------------------------- # 03/02/03 kai@tp1.ruhr-uni-bochum.de 1.925.4.23 # Hand merged # -------------------------------------------- # 03/02/03 kai@tp1.ruhr-uni-bochum.de 1.925.4.24 # Merge tp1.ruhr-uni-bochum.de:/scratch/kai/kernel/v2.5/linux-2.5.make-sam # into tp1.ruhr-uni-bochum.de:/scratch/kai/kernel/v2.5/linux-2.5.make # -------------------------------------------- # 03/02/03 kai@tp1.ruhr-uni-bochum.de 1.925.4.25 # kbuild: Assorted fixlets # # o Build modules with CONFIG_MODVERSIONS when just saying "make" # o Ignore generated *.ver.c files # o Fix a typo (Sam Ravnborg) # o Fix another typo (Paul Marinceu) # -------------------------------------------- # 03/02/03 kai@tp1.ruhr-uni-bochum.de 1.925.4.26 # kbuild: Remove export-objs := ... statements # # One of the goals of the whole new modversions implementation: # export-objs is gone for good! # -------------------------------------------- # 03/02/03 jfs.adm@hostme.bitkeeper.com 1.925.37.1 # Merge bk://linux.bkbits.net/linux-2.5 # into hostme.bitkeeper.com:/ua/repos/j/jfs/linux-2.5 # -------------------------------------------- # 03/02/03 shaggy@shaggy.austin.ibm.com 1.925.37.2 # Merge jfs@jfs.bkbits.net:linux-2.5 # into shaggy.austin.ibm.com:/shaggy/bk/jfs-2.5 # -------------------------------------------- # 03/02/03 torvalds@penguin.transmeta.com 1.925.4.27 # Merge http://jfs.bkbits.net/linux-2.5 # into penguin.transmeta.com:/home/penguin/torvalds/repositories/kernel/linux # -------------------------------------------- # 03/02/03 agrover@groveronline.com 1.925.1.37 # ACPI: It is OK to not have a _PPC, so don't error out if it's not found # -------------------------------------------- # 03/02/04 greg@kroah.com 1.925.20.20 # [PATCH] USB: add a blank line between each device in usbfs/devices # -------------------------------------------- # 03/02/04 greg@kroah.com 1.925.20.21 # [PATCH] USB: fix to get usb-storage code to work again. # # Thanks to Matt Dharm and David Brownell for tracking this bug down. # -------------------------------------------- # 03/02/04 mdharm-usb@one-eyed-alien.net 1.925.20.22 # [PATCH] usb-storage: move to SCSI hotplugging # # The attached patch is my first implementation of SCSI hotplugging. # # It's only been tested that it compiles, as I can't get the current # linux-2.5 tree from linuxusb to boot. It dies _very_ early. Greg, I'm not # sure if you'll want to apply this. Linus seemed to want this very much, # and it is 2.5.x... I say go for it, but I can understand if you have # reservations. # # I would definately like to see this tested by anyone who can get a kernel # to boot. # # This patch is quite large. Lots of things had to be changed. Among them: # # (o) The proc interface now uses the host number to look up the SCSI host # structure, and then finds the usb-storage structure from that. # (o) The SCSI interface has been changed. The code flow is now much # clearer, as more work is done from the USB probe/detach functions than # from auxillary functions. # (o) Names have been changed for newer conventions # (o) GUIDs have been removed # (o) The linked-list of devices has been removed, and it's associated # semaphore # (o) All code dealing with re-attaching a device to it's old association has # been removed # (o) Some spaces changed to tabs # (o) usb-storage now takes one directory under /proc/scsi instead of # one per virtual-HBA # (o) All control threads now have the same name. This could be changed back # to the old behavior, if enough people want it. # # Known problems: # (o) Testing, testing, testing # (o) More dead code needs to be cut # (o) It's a unclear how a LLD is supposed to cut off the flow of # commands, so that the unregister() call always succeeds. SCSI folks # need to work on this. # (o) Probing needs to be broken down into smaller functions, probably. # -------------------------------------------- # 03/02/04 mdharm-scsi@one-eyed-alien.net 1.925.20.23 # [PATCH] usb-storage: fix typo # # This patch goes on top of the last one. It fixes a typo in the test for # scsi_register() failure. # # -- reversed the logic of failure test for scsi_register() # -------------------------------------------- # 03/02/04 mdharm-scsi@one-eyed-alien.net 1.925.20.24 # [PATCH] usb-storage: fix oops # # It should fix the OOPS on attach. # # This fixes a silly error where I fail to initialize a pointer early enough # for the scanning code. If this isn't a perfect example of why # scsi_register() and scsi_add_host() aren't two separate functions, I don't # know what is. :) # # Oh, and I added a couple of comments, too. # # - Fix an OOPS by moving the setting of the hostdata[] pointer to _before_ # the device scan starts. # -------------------------------------------- # 03/02/04 mdharm-usb@one-eyed-alien.net 1.925.20.25 # [PATCH] usb-storage: comments, cleanup # # This patch does the following: # (o) Add comments showing what needs to be done to complete the hot-unplug # system. # (o) Add a BUG_ON() for (what is now) a critical failure case. # (o) Make certain that a debug print happens even if a usb_get_intfdata() # crashes. # (o) Add an un-necessary up() to balance a down, for the auto-code-checkers. # -------------------------------------------- # 03/02/04 mdharm-usb@one-eyed-alien.net 1.925.20.26 # [PATCH] usb-storage: remove US_FL_DEV_ATTACHED # # This patch removes the US_FL_DEV_ATTACHED flag, which is now rendered # obsolete by the new hotplug system. # # It also adds a comment or two about areas of code that need to be # re-examined. # -------------------------------------------- # 03/02/04 mdharm-usb@one-eyed-alien.net 1.925.20.27 # [PATCH] usb-storage: convert spaces to tabs # # This is a minor cleanup to convert 8 spaces into tabs. There is no # functional change here. # -------------------------------------------- # 03/02/04 mdharm-usb@one-eyed-alien.net 1.925.20.28 # [PATCH] Replace a line of code that shouldn't have been removed. # -------------------------------------------- # 03/02/04 henning@meier-geinitz.de 1.925.20.29 # [PATCH] USB scanner.h, scanner.c: maintainer change # # This patch changes the maintainer from Brian Beattie to Henning # Meier-Geinitz and adds a link to the documentation and website. # -------------------------------------------- # 03/02/04 henning@meier-geinitz.de 1.925.20.30 # [PATCH] USB scanner.c: Adjust syslog output # # This patch prints the vendor + product ids of the scanner after it has # been successfully detected. # # Also the annoying error message about "Scanner device is already open" # was downgraded to a dbg. Scanning for devices while one scanner device # was open produced several 100 error messages in syslog. # -------------------------------------------- # 03/02/04 anton@samba.org 1.937 # Merge samba.org:/scratch/anton/linux-2.5 # into samba.org:/scratch/anton/sfr # -------------------------------------------- # 03/02/04 baldrick@wanadoo.fr 1.925.20.31 # [PATCH] USB speedtouch: let the tasklet do all processing of speedtouch receive urbs # # speedtouch: move all processing of receive urbs to udsl_atm_processqueue. This has # several advantages, as will be seen in the next few patches. The most important is # that it makes it easy to reuse of the urb's buffer (right now a new buffer is # allocated every time the urb completes). By the way, this patch is much smaller than # it looks: most of the bulk is due to indentation changes. # -------------------------------------------- # 03/02/04 baldrick@wanadoo.fr 1.925.20.32 # [PATCH] USB speedtouch: re-recycle speedtouch receive buffers # # Rediffed version of the original patch - no sk_buff on the stack this time. # # speedtouch: recycle the receive urb's buffer. Currently, every time a receive urb # completes, its old buffer is thrown away and replaced with a new one. This patch # performs the minor changes needed to reuse the old buffer. # -------------------------------------------- # 03/02/04 baldrick@wanadoo.fr 1.925.20.33 # [PATCH] USB speedtouch: re-recycle failed speedtouch receive urbs # # speedtouch: more robust handling of receive urb failure: retry failed urbs whenever # a new connection is opened. This should work well with pppd's persist option. # -------------------------------------------- # 03/02/04 baldrick@wanadoo.fr 1.925.20.34 # [PATCH] USB speedtouch: re-wait for speedtouch completion handlers after usb_unlink_urb # # speedtouch: wait for receive urb completion handlers to finish after calling # usb_unlink_urb. # -------------------------------------------- # 03/02/04 baldrick@wanadoo.fr 1.925.20.35 # [PATCH] USB speedtouch: re-cosmetic speedtouch changes # # speedtouch: a pile of cosmetic changes to make me feel happier (no code changes). # -------------------------------------------- # 03/02/04 baldrick@wanadoo.fr 1.925.20.36 # [PATCH] USB speedtouch: tweak speedtouch status logic # # speedtouch: change data_started to firmware_loaded, which is what it actually # means, plus some minor related changes. # -------------------------------------------- # 03/02/04 baldrick@wanadoo.fr 1.925.20.37 # [PATCH] USB speedtouch: allocate speedtouch send urbs in the USB probe routine # # speedtouch: allocate send urbs in udsl_usb_probe rather than in udsl_usb_data_init. # Since this diminishes udsl_usb_data_init down to almost nothing, roll it into the one # place it was used. Get rid of the semaphore Oliver put it - it is no longer needed. # # # speedtouch.c | 86 ++++++++++++++++++++++++++--------------------------------- # 1 files changed, 38 insertions(+), 48 deletions(-) # -------------------------------------------- # 03/02/04 baldrick@wanadoo.fr 1.925.20.38 # [PATCH] USB speedtouch: earlier rejection of outgoing speedtouch packets # # speedtouch: reject outgoing packets earlier when the firmware is not loaded. # -------------------------------------------- # 03/02/04 mdharm-usb@one-eyed-alien.net 1.925.20.39 # [PATCH] USB usb-storage: host a host refcount a little bit longer # # This patch makes us hold the host reference count a little bit longer in # the /proc interface code. We were releasing it too early before. # -------------------------------------------- # 03/02/04 mdharm-usb@one-eyed-alien.net 1.925.20.40 # [PATCH] USB usb-storage: implement device-offline code # # This code implements the setting of devices offline during the removal # phase. # -------------------------------------------- # 03/02/04 mdharm-usb@one-eyed-alien.net 1.925.20.41 # [PATCH] USB usb-storage: implement clearing of device queue # # This patch clears out the device queue when a unit is removed. # -------------------------------------------- # 03/02/04 p.guehring@futureware.at 1.925.20.42 # [PATCH] USB: FTDI driver, new id added # -------------------------------------------- # 03/02/04 greg@kroah.com 1.925.20.43 # [PATCH] USB: added tripp device id's to pl2303 driver. # # Thanks to John Moses for the information. # -------------------------------------------- # 03/02/04 anton@samba.org 1.938 # ppc64: fix UP compile # -------------------------------------------- # 03/02/04 anton@samba.org 1.937.1.1 # ppc64: module updates from Rusty # -------------------------------------------- # 03/02/04 anton@samba.org 1.939 # Merge samba.org:/scratch/anton/linux-2.5_ppc64_up # into samba.org:/scratch/anton/sfr # -------------------------------------------- # 03/02/04 davem@kernel.bkbits.net 1.925.4.28 # Merge davem@nuts.ninka.net:/home/davem/src/BK/net-2.5 # into kernel.bkbits.net:/home/davem/net-2.5 # -------------------------------------------- # 03/02/04 davem@nuts.ninka.net 1.925.38.1 # [SPARC]: Add ndelay. # -------------------------------------------- # 03/02/04 davem@nuts.ninka.net 1.925.38.2 # [FC4]: Update for scsi_cmnd changes. # -------------------------------------------- # 03/02/04 davem@nuts.ninka.net 1.925.38.3 # [SCSI ESP]: Update for scsi_cmnd changes. # -------------------------------------------- # 03/02/04 davem@nuts.ninka.net 1.925.38.4 # [SCSI QLOGICPTI]: Update for scsi_cmnd changes. # -------------------------------------------- # 03/02/04 davem@nuts.ninka.net 1.925.38.5 # [SCSI PLUTO/FCAL]: Update for scsi_cmnd changes. # -------------------------------------------- # 03/02/04 Matt_Domsch@dell.com 1.925.39.1 # Merge dell.com:/home/mdomsch/bk/linux-2.5 # into dell.com:/home/mdomsch/bk/edd/linux-2.5-edd # -------------------------------------------- # 03/02/04 nlaredo@transmeta.com 1.925.40.1 # [PATCH] stradis.c "proper" port to 2.5.x # -------------------------------------------- # 03/02/04 akpm@digeo.com 1.925.41.1 # [PATCH] qlogic fix # # Linus's current BK tree needs the following build fix: # -------------------------------------------- # 03/02/04 akpm@digeo.com 1.925.40.2 # [PATCH] implement posix_fadvise64() # # An implementation of posix_fadvise64(). It adds 368 bytes to my vmlinux and # is worth it. # # I didn't bother doing posix_fadvise(), as userspace can implement that by # calling fadvise64(). # # The main reason for wanting this syscall is to provide userspace with the # ability to explicitly shoot down pagecache when streaming large files. This # is what O_STEAMING does, only posix_fadvise() is standards-based, and harder # to use. # # posix_fadvise() also subsumes sys_readahead(). # # POSIX_FADV_WILLNEED will generally provide asynchronous readahead semantics # for small amounts of I/O. As long as things like indirect blocks are aready # in core. # # POSIX_FADV_RANDOM gives unprivileged applications a way of disabling # readahead on a per-fd basis, which may provide some benefit for super-seeky # access patterns such as databases. # # # # The POSIX_FADV_* values are already implemented in glibc, and this patch # ensures that they are in sync. # # A test app (fadvise.c) is available in ext3 CVS. See # # http://www.zip.com.au/~akpm/linux/ext3/ # # for CVS details. # # Ulrich has reviewed this patch (thanks). # -------------------------------------------- # 03/02/04 akpm@digeo.com 1.925.40.3 # [PATCH] fix agp compile warning # # A static function in a header where presumably a static inline was intended. # -------------------------------------------- # 03/02/04 akpm@digeo.com 1.925.40.4 # [PATCH] add stats for page reclaim via inode freeing # # pagecache can be reclaimed via the page LRU and via prune_icache. We # currently don't know how much reclaim is happening via each. # # The patch adds instrumentation to display the number of pages which were # freed via prune_icache. This is displayed in /proc/vmstat:pginodesteal and # /proc/vmstat:kswapd_inodesteal. # # Turns out that under some workloads (well, dbench at least), fully half of # page reclaim is via the unused inode list. Which seems quite OK to me. # -------------------------------------------- # 03/02/04 akpm@digeo.com 1.925.40.5 # [PATCH] file-backed vma merging # # Implements merging of file-backed VMA's. Based on Andrea's 2.4 patch. # # It's only done for mmap(). mprotect() and mremap() still will not merge # VMA's. # # It works for hugetlbfs mappings also. # -------------------------------------------- # 03/02/04 akpm@digeo.com 1.925.40.6 # [PATCH] mm/mmap.c whitespace cleanups # # - Don't require a 160-col xterm # # - Coding style consistency # -------------------------------------------- # 03/02/04 akpm@digeo.com 1.925.40.7 # [PATCH] cleanup in read_cache_pages() # # Patch from Nikita Danilov # # read_cache_pages() is passed a bunch of pages to start I/O against and it is # supposed to consume all those pages. But if there is an I/O error, someone # need to throw away the unused pages. # # At present the single user of read_cache_pages() (nfs_readpages) does that # cleanup by hand. But it should be done in the core kernel. # -------------------------------------------- # 03/02/04 akpm@digeo.com 1.925.40.8 # [PATCH] remove __GFP_HIGHIO # # Patch From: Hugh Dickins # # Recently noticed that __GFP_HIGHIO has played no real part since bounce # buffering was converted to mempool in 2.5.12: so this patch (over 2.5.58-mm1) # removes it and GFP_NOHIGHIO and SLAB_NOHIGHIO. # # Also removes GFP_KSWAPD, in 2.5 same as GFP_KERNEL; leaves GFP_USER, which # can be a useful comment, even though in 2.5 same as GFP_KERNEL. # # One anomaly needs comment: strictly, if there's no __GFP_HIGHIO, then # GFP_NOHIGHIO translates to GFP_NOFS; but GFP_NOFS looks wrong in the block # layer, and if you follow them down, you find that GFP_NOFS and GFP_NOIO # behave the same way in mempool_alloc - so I've used the less surprising # GFP_NOIO to replace GFP_NOHIGHIO. # -------------------------------------------- # 03/02/04 akpm@digeo.com 1.925.40.9 # [PATCH] Use a slab cache for pgd and pmd pages # # From Bill Irwin # # This allocates pgd's and pmd's using the slab and slab ctors. It has a # benefit beyond preconstruction in that PAE pmd's are accounted via # /proc/slabinfo # # Profiling of kernel builds by Martin Bligh shows a 30-40% drop in CPU load # due to pgd_alloc()'s page clearing activity. But this was already a tiny # fraction of the overall CPU time. # -------------------------------------------- # 03/02/04 akpm@digeo.com 1.925.40.10 # [PATCH] pgd_ctor update # # From wli # # A moment's reflection on the subject suggests to me it's worthwhile to # generalize pgd_ctor support so it works (without #ifdefs!) on both PAE # and non-PAE. This tiny tweak is actually more noticeably beneficial # on non-PAE systems but only really because pgd_alloc() is more visible; # the most likely reason it's less visible on PAE is "other overhead". # It looks particularly nice since it removes more code than it adds. # # Touch tested on NUMA-Q (PAE). OFTC #kn testers testing the non-PAE case. # -------------------------------------------- # 03/02/04 akpm@digeo.com 1.925.40.11 # [PATCH] Avoid losing timer ticks when slab debug is enabled. # # Patch from Manfred Spraul # # When slab debugging is enabled we're holding off interrupts for too long # (more than a jiffy), so reduce the alloc/free batching size when slab debug # is enabled. # -------------------------------------------- # 03/02/04 akpm@digeo.com 1.925.40.12 # [PATCH] remove unneeded locking in do_syslog() # # Lots of nonsensical locking in there. # -------------------------------------------- # 03/02/04 akpm@digeo.com 1.925.40.13 # [PATCH] hangcheck-timer # # Patch from: Joel Becker # # This kernel module will detect long durations when jiffies has failed to # increment, and will reboot the machine in response. # # Joel says: # # # "Here's why Oracle wants such a thing. We run clusters. Imagine a two node # cluster. Node1 pauses completely for some reason. There are multiple # reasons this can happen. A bad driver can udelay() for 90 seconds (qla used # to do this). zVM on S/390 can page Linux out for minutes at a time. # Anything that causes the box to freeze. Jiffies does *not* count during # this, so when Node1 returns it feels that no time has passed. # # Node2, however, has been counting time. When Node1 goes away, the Oracle # cluster manager starts looking for it. After a timeout, it gives up. It # then recovers any in-progress transactions from Node1. After that, it # starts new operations, modifying the data in ways that Node1 has no idea # about (it's still out to lunch). # # When Node1 finally returns (udelay() ends, zVM pages it in, whatever), any # I/O that it has queued or is about to queue will get sent to the disk. # Oops, you've just corrupted your shared data. # # hangcheck-timer should catch this and reboot the box. # # This is why Oracle wants this driver. We figure that such functionality # would be beneficial to others as well, so we posted to l-k. We'd all hope # that driver writers don't udelay() for 90s, but S/390 with zVM is still # around. Some folks might want to notice when it happens. I am sure other # things exist that trigger the same symptoms." # -------------------------------------------- # 03/02/04 akpm@digeo.com 1.925.40.14 # [PATCH] Restore LSM hook calls to sendfile # # Patch from "Stephen D. Smalley" # # This patch restores the LSM hook calls in sendfile to 2.5.59. The hook was # previously added as of 2.5.29 but the hook calls in sendfile were # subsequently lost as a result of the sendfile rewrite as of 2.5.30. # -------------------------------------------- # 03/02/04 akpm@digeo.com 1.925.40.15 # [PATCH] asm-i386/mmzone.h macro paren/eval fixes # # Patch from William Lee Irwin III # # Okay, this one looks ugly because we're missing some of the definitions # available with which to convert to inline functions (esp. struct page). # A lot of these introduce temporaries and sort of hope names won't clash, # which might be important to whoever cares about -Wshadow. # # - node_end_pfn() evaluates nid twice # - local_mapnr() evaluates kvaddr twice # - kern_addr_valid() evaluates kaddr twice # - pfn_to_page() evaluates pfn multiple times # - page_to_pfn() evaluates page thrice # - pfn_valid() doesn't parenthesize its argument # -------------------------------------------- # 03/02/04 akpm@digeo.com 1.925.40.16 # [PATCH] remove spaces from slab names # # From Anton Blanchard: remove spaces from slab cache identifiers. Simplifies # parsing of /proc/slabinfo. # -------------------------------------------- # 03/02/04 akpm@digeo.com 1.925.40.17 # [PATCH] remove will_become_orphaned_pgrp() # # Patch from William Lee Irwin III # # will_become_orphaned_pgrp()'s sole use is is_orphaned_pgrp(). Fold its body # into is_orphaned_pgrp(), rename __will_become_orphaned_pgrp(), and adjust # callers. Code shrinkage plus some relief from underscore-itis. # -------------------------------------------- # 03/02/04 akpm@digeo.com 1.925.40.18 # [PATCH] MAX_IO_APICS #ifdef'd wrongly # # Patch from William Lee Irwin III # # CONFIG_X86_NUMA no longer exists. This changes the MAX_IO_APICS definition # to 32, where it is required to be so large on NUMA-Q in order to boot. # -------------------------------------------- # 03/02/04 akpm@digeo.com 1.925.40.19 # [PATCH] patch to DAC960 driver for error retry # # Patch from Dave Olien # # The following patch implements retry on media errors for the DAC960 driver. # On such media errors, the DAC960 apparently doesn't report how much of the # transfer may have been successful before the error was encountered. # # This type of error should be rare on healthy hardware, especially if the # disks are stripped or mirrored. But, when large transfers are submitted to # the controller, it's especially bad to have to fail the entire transfer # because one disk sector may have been bad. # -------------------------------------------- # 03/02/04 akpm@digeo.com 1.925.40.20 # [PATCH] Remove __ from topology macros # # Patch from Matthew Dobson # # When I originally wrote the patches implementing the in-kernel topology # macros, they were meant to be called as a second layer of functions, # sans underbars. This additional layer was deemed unnecessary and # summarily dropped. As such, carrying around (and typing!) all these # extra underbars is quite pointless. Here's a patch to nip this in the # (sorta) bud. The macros only appear in 16 files so far, most of them # being the definitions themselves. # -------------------------------------------- # 03/02/04 akpm@digeo.com 1.925.40.21 # [PATCH] put_user() warning fix # # Patch from Russell King # # Have a couple of extra warnings: # # fs/binfmt_elf.c: In function `create_elf_tables': # fs/binfmt_elf.c:239: warning: initialization makes integer from pointer without a cast # fs/binfmt_elf.c:249: warning: initialization makes integer from pointer without a cast # # #ifndef elf_addr_t # #define elf_addr_t unsigned long # #endif # # elf_addr_t *argv, *envp; # # __put_user(NULL, argv); # __put_user(NULL, envp); # # It would therefore appear that x86 __put_user is not properly type-checking # the arguments to __put_user(). # # Here's a patch which fixes the warning (but doesn't fix x86's type-check # challenged __put_user implementation). # -------------------------------------------- # 03/02/04 akpm@digeo.com 1.925.40.22 # [PATCH] fix #warnings # # Patch from "Randy.Dunlap" # # This fixes a few #warning's that gcc 2.96 complains about having # unmatched single-quote marks. (warnings on #warnings) # -------------------------------------------- # 03/02/04 akpm@digeo.com 1.925.40.23 # [PATCH] ia32 Lost tick compensation # # Patch from john stultz # # Adds some lost-tick compensation code, which handles the case where time # accounting goes wrong due to interrupts being disabled for longer than two # ticks. # # This patch solves the problem by checking when an interrupt occurs if # timer->get_offset() is a value greater then 2 ticks. If so, it increments # jiffies appropriately. # # I was concerned that we'd be better off finding and fixing the misbehaving # drivers, but it turns out that the main culprits are system management cards # over which the kernel has no control. # # However John has added some debug code which will drop a backtrace on the # first five occurrences which will allow us to find-and-fix bad drivers if # overruns _are_ due to Linux software. (I disabled this - it was irritating # me. Dave Hansen has a patch which allows it to be turned on via a kernel # boot parameter, like the x86_64 equiv). # -------------------------------------------- # 03/02/04 akpm@digeo.com 1.925.40.24 # [PATCH] Include in fs/seq_file.c, as it uses # # Patch from miles@lsi.nec.co.jp (Miles Bader) # # Otherwise it won't compile. I guesss this used to work because # was included somewhere to get the BUG macros, but now with the advent of # that's changed. # -------------------------------------------- # 03/02/04 akpm@digeo.com 1.925.40.25 # [PATCH] scsi_eh_* needs to run even during suspend # # Patch from Pavel Machek # # scsi_eh_* needs to run even during suspend because suspend does not prevent a # hard disk from reporting an error. # -------------------------------------------- # 03/02/04 akpm@digeo.com 1.925.40.26 # [PATCH] misc fixes # # - Fix dead comment in load_elf_interp() (Dave Airlie) # # - Add some (hard-won) commentary around the early SET_PERSONALITY() in # load_elf_binary(). # # - Remove dead hugetlb prototype. # # - Fix some silliness in hugetlbpage.c # -------------------------------------------- # 03/02/04 akpm@digeo.com 1.925.40.27 # [PATCH] Remove unneeded code in fs/fs-writeback.c # # We do not need to pass the `wait' argument down to __sync_single_inode(). # That information is now present at wbc->sync_mode. # -------------------------------------------- # 03/02/04 akpm@digeo.com 1.925.40.28 # [PATCH] Fix latencies during writeback # # When a throttled writer is performing writeback, and it encounters an inode # which is already under writeback it is forced to wait on the inode. So that # process sleeps until whoever is writing it out finishes the writeout. # # Which is OK - we want to throttle that process, and another process is # currently pumping data at the disk anyway. # # But in one situations the delays are excessive. If one process is performing # a huge linear write, other processes end up waiting for a very long time # indeed. It appears that this is because the writing process just keeps on # hogging the CPU, returning to userspace, generating more dirty data, writing # it out, sleeping in get_request_wait, etc. All other throttled dirtiers get # starved. # # So just remove the wait altogether if it is just a memory-cleansing writeout. # The calling process will then throttle in balance_dirty_pages()'s call to # blk_congestion_wait(). # -------------------------------------------- # 03/02/04 akpm@digeo.com 1.925.40.29 # [PATCH] fix i_sem contention in sys_unlink() # # Truncates can take a very long time. Especially if there is a lot of # writeout happening, because truncate must wait on in-progress I/O. # # And sys_unlink() is performing that truncate while holding the parent # directory's i_sem. This basically shuts down new accesses to the entire # directory until the synchronous I/O completes. # # In the testing I've been doing, that directory is /tmp, and this hurts. # # So change sys_unlink() to perform the actual truncate outside i_sem. # # When there is a continuous streaming write to the same disk, this patch # reduces the time for `make -j4 bzImage' from 370 seconds to 220. # -------------------------------------------- # 03/02/04 torvalds@home.transmeta.com 1.925.40.30 # Merge # -------------------------------------------- # 03/02/04 hch@hera.kernel.org 1.925.42.1 # Merge # -------------------------------------------- # 03/02/04 torvalds@home.transmeta.com 1.925.40.31 # Fix up manual merge error in usb/storage/scsiglue.c # -------------------------------------------- # 03/02/04 torvalds@home.transmeta.com 1.925.40.32 # Fix Makefile syntax error for (deprecated) "make dep" # -------------------------------------------- # 03/02/04 torvalds@home.transmeta.com 1.925.40.33 # Merge master.kernel.org:/home/hch/BK/xfs/linux-2.5 # into home.transmeta.com:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/02/04 torvalds@home.transmeta.com 1.925.4.29 # Merge bk://kernel.bkbits.net/davem/net-2.5 # into home.transmeta.com:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/02/04 torvalds@home.transmeta.com 1.925.4.30 # Merge bk://kernel.bkbits.net/davem/sparc-2.5 # into home.transmeta.com:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/02/04 willy@debian.org 1.925.4.31 # [PATCH] PA-RISC updates for 2.5.59 # # - conversion of remaining drivers to generic device model # - more of sfr's compat stuff # - eliminate some bogus syscalls # - update for MUX driver # - beginnings of new module code # - tell the keyboard driver about CONFIG_PARISC # -------------------------------------------- # 03/02/04 tim@physik3.uni-rostock.de 1.925.4.32 # [PATCH] use 64 bit jiffies: infrastructure # # Provide a sane way to avoid unneccessary locking on 64 bit platforms, # and a 64 bit analogous to "jiffies_to_clock_t()". # -------------------------------------------- # 03/02/04 tim@physik3.uni-rostock.de 1.925.4.33 # [PATCH] use 64 bit jiffies: fix utime wrap # # Use 64 bit jiffies for reporting uptime. # -------------------------------------------- # 03/02/04 tim@physik3.uni-rostock.de 1.925.4.34 # [PATCH] use 64 bit jiffies: 64-bit process start time # # This prevents reporting processes as having started in the future, after # 32 bit jiffies wrap. # -------------------------------------------- # 03/02/04 Matt_Domsch@dell.com 1.925.4.35 # Merge dell.com:/home/mdomsch/bk/linux-2.5 # into dell.com:/home/mdomsch/bk/edd/linux-2.5-edd # -------------------------------------------- # 03/02/04 hch@lst.de 1.925.41.2 # [PATCH] remove __scsi_add_host # # now that scsi_add_host accepts a NMULL dev argument we don't need it # anymore. # -------------------------------------------- # 03/02/04 drow@nevyn.them.org 1.925.22.3 # Use force_sig_specific to send SIGSTOP to newly-created CLONE_PTRACE processes. # -------------------------------------------- # 03/02/05 greg@kroah.com 1.925.43.1 # USB: fix up drivers the scsi people missed # -------------------------------------------- # 03/02/04 hch@lst.de 1.925.41.3 # [PATCH] fixes and cleanups for the new command allocation code # # On Tue, Feb 04, 2003 at 12:33:23PM -0600, James Bottomley wrote: # > I agree with this. It is a guarantee the mid-layer makes to the LLD # > (and there are some LLDs with static issue queues for which this is a # > hard requirement). I think (once the dust has settled and we've agreed # > which field holds the current queue depth) what's needed is a check in # > the scsi_request_fn() to see if we're over the LLD's current depth for # > the device and plug the queue and exit if we are. The next returning # > command will unplug and send. # > # > This way of doing things means that we're free to prep as many commands # > as we can, but we guarantee only to have the correct number outstanding # > to the LLD. # # Okay, here's a new versin of the patch. Changes: # # * throttel on number of inflight command blocks # * rename scsi_cmnd->new_queue_depth to scsi_cmnd->queue_depth # * remove scsi_do_cmd # * serialize pool handling # -------------------------------------------- # 03/02/04 agrover@groveronline.com 1.925.1.38 # ACPI: Optimize for space # -------------------------------------------- # 03/02/04 davidm@wailua.hpl.hp.com 1.925.31.18 # ia64: Use printk severity-levels where appropriate. # Triggered by analysis done by Philipp Marek. # -------------------------------------------- # 03/02/04 davidm@tiger.hpl.hp.com 1.925.31.19 # ia64: Fix potential perfmon deadlock. Patch by Stephane Eranian. # -------------------------------------------- # 03/02/05 greg@kroah.com 1.925.44.1 # [PATCH] PCI Hotplug: dereference null variable cleanup patches. # # These were pointed out by "dan carpenter" # from his smatch tool. # -------------------------------------------- # 03/02/05 greg@kroah.com 1.925.44.2 # [PATCH] IBM PCI Hotplug driver: Clean up the slot filename generation logic a lot. # -------------------------------------------- # 03/02/05 stanley.wang@linux.co.intel.com 1.925.44.3 # [PATCH] PCI Hotplug: Replace pcihpfs with sysfs. # -------------------------------------------- # 03/02/05 stanley.wang@linux.co.intel.com 1.925.44.4 # [PATCH] PCI Hotplug: Remove procfs stuff from pci_hotplug_core # # Here is a little patch that remove procfs stuff in pci_hotplug_core.c # Remove /proc entry for pci_hotplug_core. # -------------------------------------------- # 03/02/05 greg@kroah.com 1.925.44.5 # [PATCH] PCI Hotplug: change pci_hp_change_slot_info() to take a hotplug_slot and not a string. # -------------------------------------------- # 03/02/05 greg@kroah.com 1.925.44.6 # [PATCH] sysfs: add sysfs_update_file() function. # -------------------------------------------- # 03/02/05 greg@kroah.com 1.925.44.7 # [PATCH] PCI Hotplug: Make pci_hp_change_slot_info() work again # # Relies on sysfs_update_file() to be present in the kernel. # -------------------------------------------- # 03/02/05 greg@kroah.com 1.925.44.8 # [PATCH] PCI Hotplug: moved the some stuff into the pci core # # Moved functions from drivers/hotplug/pci_hotplug_util.c to # drivers/pci/hotplug.c, which is a better place for them. # -------------------------------------------- # 03/02/05 rddunlap@osdl.org 1.925.44.9 # [PATCH] PCI Hotplug: checker patches # # Fixes problems found by the CHECKER program in the pci hotplug drivers # -------------------------------------------- # 03/02/05 jdike@uml.karaya.com 1.925.14.7 # Merged a conflict in ptrace.h. # -------------------------------------------- # 03/02/05 riel@conectiva.com.br 1.925.41.4 # [PATCH] Re: [CHECKER] 112 potential memory leaks in 2.5.48 # # On Wed, 5 Feb 2003, Rik van Riel wrote: # > On Tue, 4 Feb 2003, Andy Chou wrote: # # Thanks for the checker output. First patch below... # # > > [BUG] # > > u1/acc/linux/2.5.48/drivers/scsi/sr_ioctl.c:188:sr_do_ioctl: # > > ERROR:LEAK:85:188:Memory leak [Allocated from: # > > /u1/acc/linux/2.5.48/drivers/scsi/sr_ioctl.c:85:scsi_allocate_request] # > # > Bug indeed, I've created a patch to fix the possible leak of # > a scsi request, but can't figure out the bounce buffer logic... # # The patch below fixes the scsi request leak. I'm not sure # how the bounce buffer thing is supposed to work (Christoph? # James?) so I'm not touching that at the moment. # # Linus, could you please apply this patch (against today's # bk tree) ? # # thank you, # # Rik # -- # Bravely reimplemented by the knights who say "NIH". # http://www.surriel.com/ http://guru.conectiva.com/ # Current spamtrap: october@surriel.com # # # ===== drivers/scsi/sr_ioctl.c 1.27 vs edited ===== # -------------------------------------------- # 03/02/05 jejb@raven.il.steeleye.com 1.925.41.5 # Correct compiler warnings with use of likely() on pointers # -------------------------------------------- # 03/02/05 jejb@raven.il.steeleye.com 1.925.41.6 # Fix sr_ioctl.c bounce buffer usage # # Make sure all DMAs come from kmalloc'd memory with the correct # GFP_ flags # -------------------------------------------- # 03/02/05 jejb@raven.il.steeleye.com 1.925.41.7 # move queue_depth check from scsi_prep_fn to scsi_request_fn # -------------------------------------------- # 03/02/05 jdike@uml.karaya.com 1.925.13.5 # Merge # -------------------------------------------- # 03/02/05 green@namesys.com 1.925.45.1 # [PATCH] fix HZ=100 case with 64 bit jiffies # # The updates to use 64-bit jiffies broke fs/proc/proc_misc.c for # architectures still using a 100 Hz clocktick (e.g. UML) # -------------------------------------------- # 03/02/05 torvalds@home.transmeta.com 1.925.43.2 # Merge penguin:v2.5/linux # into home.transmeta.com:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/02/05 rth@are.twiddle.net 1.925.46.1 # Merge # -------------------------------------------- # 03/02/05 torvalds@home.transmeta.com 1.925.43.3 # Merge bk://are.twiddle.net/axp-2.5 # into home.transmeta.com:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/02/05 agrover@groveronline.com 1.925.1.39 # Merge groveronline.com:/root/bk/linux-2.5 # into groveronline.com:/root/bk/linux-acpi # -------------------------------------------- # 03/02/05 kai@tp1.ruhr-uni-bochum.de 1.925.47.1 # kbuild: Don't default to building modules when not selected # # Defaulting to building modules together with vmlinux when just doing # "make" or "make all" is only a good choice when "CONFIG_MODULES" is set. # -------------------------------------------- # 03/02/06 stekloff@w-stekloff.beaverton.ibm.com 1.925.44.10 # [PATCH] pci patch for sysfs files # # The patch is modeled after your method for creating files for usb. It # makes a single file for pci sysfs files (except for pool, which I haven't # touched yet). It also exposes more pci information to User Space # through sysfs. Finally, it removes the dependence on the proc pci code # for sysfs files. # -------------------------------------------- # 03/02/06 greg@kroah.com 1.925.44.11 # [PATCH] PCI: put proper field sizes on sysfs files, and add class file. # -------------------------------------------- # 03/02/05 torvalds@penguin.transmeta.com 1.925.43.4 # Merge http://linux-isdn.bkbits.net/linux-2.5.make # into penguin.transmeta.com:/home/penguin/torvalds/repositories/kernel/linux # -------------------------------------------- # 03/02/06 randy.dunlap@verizon.net 1.925.44.12 # [PATCH] PCI Hotplug: memory leaks in acpiphp_glue # # Here's the memory leaks patch for acpiphp_glue.c. # -------------------------------------------- # 03/02/05 randy.dunlap@verizon.net 1.925.43.5 # [PATCH] do_mounts memory leak # # The Stanford Checker identified a memory leak in init/do_mounts.c. # # This corrects it. # -------------------------------------------- # 03/02/05 shemminger@osdl.org 1.925.43.6 # [PATCH] x86_64 gettimeofday bug. # # Found by inspection of of the x86_64 gettimeofday. # # The problem is that the code always records the maximum value # but it is not reset on the next clock tick. As written, I see it # keeping the maximum number of microseconds since the last clock tick. # -------------------------------------------- # 03/02/05 chris@wirex.com 1.925.43.7 # [PATCH] 2.5-bk trivial LSM cleanup # # Trivial patch from Randy Dunlap removes some useless # error/retval assignments. # -------------------------------------------- # 03/02/05 shemminger@osdl.org 1.925.43.8 # [PATCH] seqlock for xtime # # Add "seqlock" infrastructure for doing low-overhead optimistic reader # locks (writer increments a sequence number, reader verifies that no # writers came in during the critical region, and lots of careful memory # barriers to take care of business). # # Make xtime/get_jiffies_64() use this new locking. # -------------------------------------------- # 03/02/05 torvalds@penguin.transmeta.com 1.925.1.40 # Merge http://linux-acpi.bkbits.net/linux-acpi # into penguin.transmeta.com:/home/penguin/torvalds/repositories/kernel/linux # -------------------------------------------- # 03/02/05 rmk@arm.linux.org.uk 1.925.1.41 # [PATCH] disassociate_ctty SMP fix # # Ok, here's my proposed fix, which appears to work with preempt. I haven't # tested on non-preempt, nor (obviously since its from me) SMP. However, # I forsee no problems caused by this change. # # release_dev() sets filp->private_data to NULL when the tty layer has # done with the file descriptor. However, it remains on the tty_files # list until __fput completes. # -------------------------------------------- # 03/02/05 torvalds@penguin.transmeta.com 1.925.1.42 # Merge http://mdomsch.bkbits.net/linux-2.5-edd # into penguin.transmeta.com:/home/penguin/torvalds/repositories/kernel/linux # -------------------------------------------- # 03/02/06 anton@samba.org 1.940 # Merge samba.org:/scratch/anton/linux-2.5 # into samba.org:/scratch/anton/sfr # -------------------------------------------- # 03/02/06 greg@kroah.com 1.925.44.13 # [PATCH] Compaq PCI Hotplug: fix checker memory leak bugs. # -------------------------------------------- # 03/02/06 greg@kroah.com 1.925.44.14 # [PATCH] IBM PCI Hotplug: fix memory leak found by checker project. # -------------------------------------------- # 03/02/05 akpm@digeo.com 1.925.1.43 # [PATCH] seqlock fix: read_seqretry_irqrestore() # -------------------------------------------- # 03/02/06 anton@samba.org 1.941 # Merge samba.org:/scratch/anton/linux-2.5 # into samba.org:/scratch/anton/sfr # -------------------------------------------- # 03/02/06 anton@samba.org 1.942 # Merge samba.org:/scratch/anton/linux-2.5 # into samba.org:/scratch/anton/sfr # -------------------------------------------- # 03/02/05 patmans@us.ibm.com 1.925.41.8 # [PATCH] add back single_lun support # # On Wed, Feb 05, 2003 at 05:14:00PM -0600, James Bottomley wrote: # # > I don't see device_active getting set anywhere. # > # > shouldn't we just dump device_active in favour of a non-zero check of # > device_busy (it's all done under the queue lock, anyway). # > # > James # # OK - once more. # # This patch against the current scsi-misc-2.5 adds back the check for the # single_lun case and removes the unused device_active field. # # I compiled and booted with this applied but don't have any devices (i.e. # CD ROM changer) for testing. # -------------------------------------------- # 03/02/06 greg@kroah.com 1.925.44.15 # [PATCH] IBM PCI Hotplug: fix a load of memory leak errors found by the checker project. # -------------------------------------------- # 03/02/06 anton@samba.org 1.936.1.1 # ppc64: Add ppc64 relocations to asm/elf.h. I am the example of good taste. # -------------------------------------------- # 03/02/06 anton@samba.org 1.943 # Merge samba.org:/scratch/anton/linux-2.5_ppc64 # into samba.org:/scratch/anton/sfr # -------------------------------------------- # 03/02/06 greg@kroah.com 1.925.1.44 # Merge kroah.com:/home/greg/linux/BK/bleed-2.5 # into kroah.com:/home/greg/linux/BK/pci-hp-2.5 # -------------------------------------------- # 03/02/06 greg@kroah.com 1.925.1.45 # sysfs: remember to add EXPORT_SYMBOL() for sysfs_update_file. # -------------------------------------------- # 03/02/05 torvalds@home.transmeta.com 1.925.1.46 # Merge http://jdike.stearns.org:5000/updates-2.5 # into home.transmeta.com:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/02/05 torvalds@home.transmeta.com 1.925.1.47 # Merge http://jdike.stearns.org:5000/skas-2.5 # into home.transmeta.com:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/02/05 torvalds@home.transmeta.com 1.925.1.48 # Merge http://jdike.stearns.org:5000/stack-2.5 # into home.transmeta.com:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/02/05 torvalds@home.transmeta.com 1.925.1.49 # Merge http://jdike.stearns.org:5000/fixes-2.5 # into home.transmeta.com:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/02/06 anton@samba.org 1.944 # Merge samba.org:/scratch/anton/linux-2.5 # into samba.org:/scratch/anton/sfr # -------------------------------------------- # 03/02/06 rem@osdl.org 1.925.1.50 # [NETFILTER]: Delete un-used stack variable in ip_nat_helper.c # -------------------------------------------- # 03/02/06 elenstev@mesatop.com 1.925.1.51 # [NETFILTER]: Update Kconfig help text to match 2.4.x # -------------------------------------------- # 03/02/06 vojtech@suse.cz 1.925.48.1 # x86-64: Minor fixes to make the kernel compile and remove warnings. # -------------------------------------------- # 03/02/06 hch@lst.de 1.925.41.9 # [SCSI] Remove host_active # # It isn't used anywhere anymore # -------------------------------------------- # 03/02/06 rusty@rustcorp.com.au 1.925.41.10 # [PATCH] [patch, 2.5] scsi_qla1280.c free on error path # # From: Marcus Alanen # # Remove check_region in favour of request_region. Free resources # properly on error path. Horribly subtle ioremap/iounmap lurks here I # think, in qla1280_pci_config(), which the below patch should take care # of. # # I'm wondering if there couldn't / shouldn't be a better way to # allocate resources. Obviously lots of drivers have broken error paths. # Is this even necessary? # # Marcus # # # # # # create_patch: qla1280_release_on_error_path-2002-12-08-A.patch # # Date: Sun Dec 8 22:32:33 EET 2002 # # # -------------------------------------------- # 03/02/06 rusty@rustcorp.com.au 1.925.41.11 # [PATCH] 2.5.59 add two help texts to drivers_scsi_Kconfig # # From: Steven Cole # # Here are some help texts from 2.4.21-pre3 Configure.help which are # needed in 2.5.59 drivers/scsi/Kconfig. # # Steven # -------------------------------------------- # 03/02/06 hch@lst.de 1.925.41.12 # [PATCH] coding style updates for scsi_lib.c # # I just couldn't see the mess anymore.. Nuke the ifdefs and use sane # variable names. Some more small nitpicks but no behaviour changes at # all. # -------------------------------------------- # 03/02/06 akpm@digeo.com 1.925.49.1 # [PATCH] BTTV build fix # # Patch from Gerd Knorr # # bttv requires CONFIG_SOUND. # -------------------------------------------- # 03/02/06 akpm@digeo.com 1.925.49.2 # [PATCH] reiserfs v3 readpages support # # Patch from Chris Mason # # The patch below is against 2.5.59, various forms have been floating # around for a while, and Andrew recently included this fixed version in # 2.5.55-mm. The end result is faster reads and writes for reiserfs. # # This adds reiserfs support for readpages, along with a support func in # fs/mpage.c to deal with the reiserfs_get_block call sending back up to # date buffers with packed tails copied into them. # # Most of the changes are to reiserfs_writepage, which still had many # 2.4isms in the way it started io, dealt with errors and handled the bh # state bits. I've also added an optimization so it only starts # transactions when we need to copy a packed tail into the btree or fill a # hole, instead of any time reiserfs_writepage hits an unmapped buffer. # -------------------------------------------- # 03/02/06 akpm@digeo.com 1.925.49.3 # [PATCH] self-unplugging request queues # # The patch teaches a queue to unplug itself: # # a) if is has four requests OR # b) if it has had plugged requests for 3 milliseconds. # # These numbers may need to be tuned, although doing so doesn't seem to # make much difference. 10 msecs works OK, so HZ=100 machines will be # fine. # # Instrumentation shows that about 5-10% of requests were started due to # the three millisecond timeout (during a kernel compile). That's # somewhat significant. It means that the kernel is leaving stuff in the # queue, plugged, for too long. This testing was with a uniprocessor # preemptible kernel, which is particularly vulnerable to unplug latency # (submit some IO, get preempted before the unplug). # # This patch permits the removal of a lot of rather lame unplugging in # page reclaim and in the writeback code, which kicks the queues # (globally!) every four megabytes to get writeback underway. # # This patch doesn't use blk_run_queues(). It is able to kick just the # particular queue. # # The patch is not expected to make much difference really, except for # AIO. AIO needs a blk_run_queues() in its io_submit() call. For each # request. This means that AIO has to disable plugging altogether, # unless something like this patch does it for it. It means that AIO # will unplug *all* queues in the machine for every io_submit(). Even # against a socket! # # This patch was tested by disabling blk_run_queues() completely. The # system ran OK. # # The 3 milliseconds may be too long. It's OK for the heavy writeback # code, but AIO may want less. Or maybe AIO really wants zero (ie: # disable plugging). If that is so, we need new code paths by which AIO # can communicate the "immediate unplug" information - a global unplug is # not good. # # # To minimise unplug latency due to user CPU load, this patch gives keventd # `nice -10'. This is of course completely arbitrary. Really, I think keventd # should be SCHED_RR/MAX_RT_PRIO-1, as it has been in -aa kernels for ages. # -------------------------------------------- # 03/02/06 akpm@digeo.com 1.925.49.4 # [PATCH] Remove most of the blk_run_queues() calls # # We don't need these with self-unplugging queues. # # The patch also contains a couple of microopts suggested by Andrea: we # don't need to run sync_page() if the page just came unlocked. # -------------------------------------------- # 03/02/06 akpm@digeo.com 1.925.49.5 # [PATCH] Updated Documentation/kernel-parameters.txt # # Patch from Petr Baudis # # this patch (against 2.5.59) updates Documentation/kernel-parameters.txt to # the (more-or-less; I certainly missed some parameters) current state of # kernel. Note also that I will probably send up another update after few # further kernel releases.. # -------------------------------------------- # 03/02/06 akpm@digeo.com 1.925.49.6 # [PATCH] JBD Documentation # # Patch from Roger Gammans # # Adds lots of API documentation to the JBD layer. # -------------------------------------------- # 03/02/06 akpm@digeo.com 1.925.49.7 # [PATCH] Restore LSM hook calls to sendfile # # Patch from "Stephen D. Smalley" # # This patch restores the LSM hook calls in sendfile to 2.5.59. The hook was # previously added as of 2.5.29 but the hook calls in sendfile were # subsequently lost as a result of the sendfile rewrite as of 2.5.30. # -------------------------------------------- # 03/02/06 akpm@digeo.com 1.925.49.8 # [PATCH] Fix SMP race betwen __sync_single_inode and # # Patch from Mikulas Patocka # # there's a SMP race condition between __sync_single_inode (or __sync_one on # 2.4.20) and __mark_inode_dirty. __mark_inode_dirty doesn't take inode # spinlock. As we know -- unless you take a spinlock or use barrier, # processor can change order of instructions. # # CPU 1 # # modify inode # (but modifications are in cpu-local # buffer and do not go to bus) # # calls # __mark_inode_dirty # it sees I_DIRTY and exits immediatelly # CPU 2 # takes spinlock # calls __sync_single_inode # inode->i_state &= ~I_DIRTY # writes the inode (but does not see # modifications by CPU 1 yet) # # CPU 1 flushes its write buffer to the bus # inode is already written, clean, modifications # done by CPU1 are lost # # The easiest fix would be to move the test inside spinlock in # __mark_inode_dirty; if you do not want to suffer from performance loss, # use the attached patches that use memory barriers to ensure ordering of # reads and writes. # -------------------------------------------- # 03/02/06 akpm@digeo.com 1.925.49.9 # [PATCH] ia32 IRQ distribution rework # # Patch from "Kamble, Nitin A" # # Hello All, # # We were looking at the performance impact of the IRQ routing from # the 2.5.52 Linux kernel. This email includes some of our findings # about the way the interrupts are getting moved in the 2.5.52 kernel. # Also there is discussion and a patch for a new implementation. Let # me know what you think at nitin.a.kamble@intel.com # # Current implementation: # ====================== # We have found that the existing implementation works well on IA32 # SMP systems with light load of interrupts. Also we noticed that it # is not working that well under heavy interrupt load conditions on # these SMP systems. The observations are: # # * Interrupt load of each IRQ is getting balanced on CPUs independent # of load of other IRQs. Also the current implementation moves the # IRQs randomly. This works well when the interrupt load is light. But # we start seeing imbalance of interrupt load with existence of # multiple heavy interrupt sources. Frequently multiple heavily loaded # IRQs gets moved to a single CPU while other CPUs stay very lightly # loaded. To achieve a good interrupts load balance, it is important to # consider the load of all the interrupts together. # This further can be explained with an example of 4 CPUs and 4 # heavy interrupt sources. With the existing random movement approach, # the chance of each of these heavy interrupt sources moving to separate # CPUs is: (4/4)*(3/4)*(2/4)*(1/4) = 3/16. It means 13/16 = 81.25% of # the time the situation is, some CPUs are very lightly loaded and some # are loaded with multiple heavy interrupts. This causes the interrupt # load imbalance and results in less performance. In a case of 2 CPUs # and 2 heavily loaded interrupt sources, this imbalance happens # 1/2 = 50% of the times. This issue becomes more and more severe with # increasing number of heavy interrupt sources. # # * Another interesting observation is: We cannot see the imbalance # of the interrupt load from /proc/interrupts. (/proc/interrupts shows # the cumulative load of interrupts on all CPUs.) If the interrupt load # is imbalanced and this imbalance is getting rotated among CPUs # continuously, then /proc/interrupts will still show that the interrupt # load is going to processors very evenly. Currently at the frequency # (HZ/50) at which IRQs are moved across CPUs, it is not possible to # see any interrupt load imbalance happening. # # * We have also found that, in certain cases the static IRQ binding # performs better than the existing kernel distribution of interrupt # load. The reason is, in a well-balanced interrupt load situations, # these interrupts are unnecessarily getting frequently moved across # CPUs. This adds an extra overhead; also it takes off the CPU cache # warmth benefits. # This came out from the performance measurements done on a 4-way HT # (8 logical processors) Pentium 4 Xeon system running 8 copies of # netperf. The 4 NICs in the system taking different IRQs generated # sizable interrupt load with the help of connected clients. # # Here the netperf transactions/sec throughput numbers observed are: # # IRQs nicely manually bound to CPUs: 56.20K # The current kernel implementation of IRQ movement: 50.05K # ----------------------- # The static binding of IRQs has performed 12.28% better than the # current IRQ movement implemented in the kernel. # # * The current implementation does not distinguish siblings from the # HT (Hyper-Threading(tm)) enabled CPUs. It will be beneficial to # balance the interrupt load with respect to processor packages first, # and then among logical CPUs inside processor packages. # For example if we have 2 heavy interrupt sources and 2 processor # packages (4 logical CPUs); Assigning both the heavy interrupt sources # in different processor packages is better, it will use different # execution resources from the different processor packages. # # # # New revised implementation: # ========================== # We also have been working on a new implementation. The following # points are in main focus. # # * At any moment heavily loaded IRQs are distributed to different # CPUs to achieve as much balance as possible. # # * Lightly loaded interrupt sources are ignored from the load # balancing, as they do not cause considerable imbalance. # # * When the heavy interrupt sources are balanced, they are not moved # around. This also helps in keeping the CPU caches warm. # # * It has been made HT aware. While distributing the load, the load # on a processor package to which the logical CPUs belong to is also # considered. # # * In the situations of few (lesser than num_cpus) heavy interrupt # sources, it is not possible to balance them evenly. In such case # the existing code has been reused to move the interrupts. The # randomness from the original code has been removed. # # * The time interval for redistribution has been made flexible. It # varies as the system interrupt load changes. # # * A new kernel_thread is introduced to do the load balancing # calculations for all the interrupt sources. It keeps the balanace_maps # ready for interrupt handlers, keeping the overhead in the interrupt # handling to minimum. # # * It allows the disabling of the IRQ distribution from the boot loader # command line, if anybody wants to do it for any reason. # # * The algorithm also takes into account the static binding of # interrupts to CPUs that user imposes from the # /proc/irq/{n}/smp_affinity interface. # # # Throughput numbers with the netperf setup for the new implementation: # # Current kernel IRQ balance implementation: 50.02K transactions/sec # The new IRQ balance implementation: 56.01K transactions/sec # --------------------- # The performance improvement on P4 Xeon of 11.9% is observed. # # The new IRQ balance implementation also shows little performance # improvement on P6 (Pentium II, III) systems. # # On a P6 system the netperf throughput numbers are: # Current kernel IRQ balance implementation: 36.96K transactions/sec # The new IRQ balance implementation: 37.65K transactions/sec # --------------------- # Here the performance improvement on P6 system of about 2% is observed. # # # --------------------- # # Andrew Theurer did some testing of this patch on a quad # P4: # # # I got a chance to run the NetBench benchmark with your patch on 2.5.54-mjb2 # kernel. NetBench measures SMB/CIFS performance by using several SMB # clients (in this case 44 Windows 2000 systems), sending SMB requests to a # Linux server running Samba 2.2.3a+sendfile. Result is in throughput, # Mbps. Generally the network traffic on the server is 60% recv, 40% tx. # # I believe we have very similar systems. Mine is a 4 x 1.6 GHz, 1 MB L3 P4 # Xeon with 4 GB DDR memory (3.2 GB/sec I believe). The chipset is "Summit". # I also have more than one Intel e1000 adapters. # # I decided to run a few configurations, first with just one adapter, with # and without HT support in the kernel (acpi=off), then add another adapter # and test again with/without HT. # # Here are the results: # # 4P, no HT, 1 x e1000, no kirq: 1214 Mbps, 4% idle # 4P, no HT, 1 x e1000, kirq: 1223 Mbps, 4% idle, +0.74% # # I suppose we didn't see much of an improvement here because we never run # into the situation where more than one interrupt with a high rate is # routed to a single CPU on irq_balance. # # 4P, HT, 1 x e1000, no kirq: 1214 Mbps, 25% idle # 4P, HT, 1 x e1000, kirq: 1220 Mbps, 30% idle, +0.49% # # Again, not much of a difference just yet, but lots of idle time. We may # have reached the limit at which one logical CPU can process interrupts for # an e1000 adapter. There are other things I can probably do to help this, # like int delay, and NAPI, which I will get to eventually. # # 4P, HT, 2 x e1000, no kirq: 1269 Mbps, 23% idle # 4P, HT, 2 x e1000, kirq: 1329 Mbps, 18% idle +4.7% # # OK, almost 5% better! Probably has to do with a couple of things; the fact # that your code does not route two different interrupts to the same # core/different logical cpus (quite obvious by looking at /proc/interrupts), # and that more than one interrupt does not go to the same cpu if possible. # I suspect irq_balance did some of those [bad] things some of the time, and # we observed a bottleneck in int processing that was lower than with kirq. # # I don't think all of the idle time is because of a int processing # bottleneck. I'm just not sure what it is yet :) Hopefully something will # become obvious to me... # # Overall I like the way it works, and I believe it can be tweaked to work # with NUMA when necessary. I hope to have access to a specweb system on a # NUMA box soon, so we can verify that. # -------------------------------------------- # 03/02/06 akpm@digeo.com 1.925.49.10 # [PATCH] Fix futexes in huge pages # # Using a futex in a large page causes a kernel lockup in __pin_page() - # because __pin_page's page revalidation uses follow_page(), and follow_page() # doesn't work for hugepages. # # The patch fixes up follow_page() to return the appropriate 4k page for # hugepages. # # This incurs a vma lookup for each follow_page(), which is considerable # overhead in some situations. We only _need_ to do this if the architecture # cannot determin a page's hugeness from the contents of the PMD. # # So this patch is a "reference" implementation for, say, PPC BAT-based # hugepages. # -------------------------------------------- # 03/02/06 akpm@digeo.com 1.925.49.11 # [PATCH] Optimise follow_page() for page-table-based hugepages # # ia32 and others can determine a page's hugeness by inspecting the pmd's value # directly. No need to perform a VMA lookup against the user's virtual # address. # # This patch ifdef's away the VMA-based implementation of # hugepage-aware-follow_page for ia32 and replaces it with a pmd-based # implementation. # # The intent is that architectures will implement one or the other. So the architecture either: # # 1: Implements hugepage_vma()/follow_huge_addr(), and stubs out # pmd_huge()/follow_huge_pmd() or # # 2: Implements pmd_huge()/follow_huge_pmd(), and stubs out # hugepage_vma()/follow_huge_addr() # -------------------------------------------- # 03/02/06 akpm@digeo.com 1.925.49.12 # [PATCH] default_idle micro-optimisation # # Patch from rwhron@earthlink.net # # Micro-optimization of default_idle from -aa. current_cpu_data.hlt_works_ok # is only false for some old 386/486 pcs. # -------------------------------------------- # 03/02/06 akpm@digeo.com 1.925.49.13 # [PATCH] loop inefficiency fix # # Patch from Hugh Dickins # # The loop driver's loop over elements of bi_io_vec is in lo_send and # lo_receive: iterating that same transfer bi_vcnt times at the level above is, # er, excessive. (And no need to increment bi_idx here.) # -------------------------------------------- # 03/02/06 akpm@digeo.com 1.925.49.14 # [PATCH] pte_chain_alloc fixes # # There are several places in which the return value from pte_chain_alloc() is # not being checked, and one place in which a GFP_KERNEL allocatiopn is # happening inside spinlock. # -------------------------------------------- # 03/02/06 akpm@digeo.com 1.925.49.15 # [PATCH] give hugetlbfs a set_page_dirty a_op # # Seems that nobody has tested direct IO into hugetlb pages yet. The VFS gets # upset about running set_page_dirty() against a non-uptodate page. # # So give hugetlbfs inodes a private no-op ->set_page_dirty() to isolate them # from all that. # -------------------------------------------- # 03/02/06 akpm@digeo.com 1.925.49.16 # [PATCH] Infrastructure for correct hugepage refcounting # # We currently have a problem when things like ptrace, futexes and direct-io # try to pin user pages. If the user's address is in a huge page we're # elevting the refcount of a constituent 4k page, not the head page of the # high-order allocation unit. # # To solve this, a generic way of handling higher-order pages has been # implemented: # # - A higher-order page is called a "compound page". Chose this because # "huge page", "large page", "super page", etc all seem to mean different # things to different people. # # - The first (controlling) 4k page of a compound page is referred to as the # "head" page. # # - The remaining pages are tail pages. # # All pages have PG_compound set. All pages have their lru.next pointing at # the head page (even the head page has this). # # The head page's lru.prev, if non-zero, holds the address of the compound # page's put_page() function. # # The order of the allocation is stored in the first tail page's lru.prev. # This is only for debug at present. This usage means that zero-order pages # may not be compound. # # The above relationships are established for _all_ higher-order pages in the # page allocator. Which has some cost, but not much - another atomic op during # fork(), mainly. # # This functionality is only enabled if CONFIG_HUGETLB_PAGE, although it could # be turned on permanently. There's a little extra cost in get_page/put_page. # # These changes do not preclude adding compound pages to the LRU in the future # - we can add a new page flag to the head page and then move all the # additional data to the first tail page's lru.next, lru.prev, list.next, # list.prev, index, private, etc. # -------------------------------------------- # 03/02/06 akpm@digeo.com 1.925.49.17 # [PATCH] convert hugetlb code to use compound pages # # The odd thing about hugetlb is that it maintains its own freelist of pages. # And it has to do that, else it would trivially run out of pages due to buddy # fragmetation. # # So we we don't want callers of put_page() to be passing those pages # to __free_pages_ok() on the final put(). # # So hugetlb installs a destructor in the compound pages to point at # free_huge_page(), which knows how to put these pages back onto the free list. # # Also, don't mark hugepages as all PageReserved any more. That's preenting # callers from doing proper refcounting. Any code which does a user pagetable # walk and hits part of a hugepage will now handle it transparently. # -------------------------------------------- # 03/02/06 akpm@digeo.com 1.925.49.18 # [PATCH] get_unmapped_area for hugetlbfs # # Having to specify the mapping address is a pain. Give hugetlbfs files a # file_operations.get_unmapped_area(). # # The implementation is in hugetlbfs rather than in arch code because it's # probably common to several architectures. If the architecture has special # needs it can define HAVE_ARCH_HUGETLB_UNMAPPED_AREA and go it alone. Just # like HAVE_ARCH_UNMAPPED_AREA. # -------------------------------------------- # 03/02/06 akpm@digeo.com 1.925.49.19 # [PATCH] hugetlbfs: fix truncate # # - Opening a hugetlbfs file O_TRUNC calls the generic vmtruncate() functions # and nukes the kernel. # # Give S_ISREG hugetlbfs files a inode_operations, and hence a setattr # which know how to handle these files. # # - Don't permit the user to truncate hugetlbfs files to sizes which are not # a multiple of HPAGE_SIZE. # # - We don't support expanding in ftruncate(), so remove that code. # -------------------------------------------- # 03/02/06 akpm@digeo.com 1.925.49.20 # [PATCH] hugetlbfs i_size fixes # # We're expanding hugetlbfs i_size in the wrong place. If someone attempts to # mmap more pages than are available, i_size is updated to reflect the # attempted mapping size. # # So set i_size only when pages are successfully added to the mapping. # # i_size handling at truncate time is still a bit wrong - if the mapping has # pages at (say) page offset 100-200 and the mappng is truncated to (say) page # offset 50, i_size should be set to zero. But it is instead set to # 50*HPAGE_SIZE. That's harmless. # -------------------------------------------- # 03/02/06 akpm@digeo.com 1.925.49.21 # [PATCH] hugetlbfs cleanups # # - Remove quota code. # # - Remove extraneous copy-n-paste code from truncate: that's only for # physically-backed filesystems. # # - Whitespace changes. # -------------------------------------------- # 03/02/06 akpm@digeo.com 1.925.49.22 # [PATCH] Give all architectures a hugetlb_nopage(). # # If someone maps a hugetlbfs file, then truncates it, then references the part # of the mapping outside the truncation point, they take a pagefault and we end # up hitting hugetlb_nopage(). # # We want to prevent this from ever happening. This patch just makes sure that # all architectures have a goes-BUG hugetlb_nopage() to trap it. # -------------------------------------------- # 03/02/06 akpm@digeo.com 1.925.49.23 # [PATCH] Fix hugetlbfs faults # # If the underlying mapping was truncated and someone references the # now-unmapped memory the kernel will enter handle_mm_fault() and will start # instantiating PAGE_SIZE pte's inside the hugepage VMA. Everything goes # generally pear-shaped. # # So trap this in handle_mm_fault(). It adds no overhead to non-hugepage # builds. # # Another possible fix would be to not unmap the huge pages at all in truncate # - just anonymise them. # # But I think we want full ftruncate semantics for hugepages for management # purposes. # -------------------------------------------- # 03/02/06 akpm@digeo.com 1.925.49.24 # [PATCH] ia32 hugetlb cleanup # # - whitespace # # - remove unneeded spinlocking no-op. # -------------------------------------------- # 03/02/06 akpm@digeo.com 1.925.49.25 # [PATCH] Fix hugetlb_vmtruncate_list() # # This function is quite wrong - has an "=" where it should have a "-" and # confuses PAGE_SIZE and HPAGE_SIZE in its address and file offset arithmetic. # -------------------------------------------- # 03/02/06 akpm@digeo.com 1.925.49.26 # [PATCH] hugetlb mremap fix # # If you attempt to perform a relocating 4k-aligned mremap and the new address # for the map lands on top of a hugepage VMA, do_mremap() will attempt to # perform a 4k-aligned unmap inside the hugetlb VMA. The hugetlb layer goes # BUG. # # Fix that by trapping the poorly-aligned unmap attempt in do_munmap(). # do_remap() will then fall through without having done anything to the place # where it tests for a hugetlb VMA. # # It would be neater to perform these checks on entry to do_mremap(), but that # would incur another VMA lookup. # # Also, if you attempt to perform a 4k-aligned and/or sized munmap() inside a # hugepage VMA the same BUG happens. This patch fixes that too. # # This all means that an mremap attempt against a hugetlb area will fail, but # only after having unmapped the source pages. That's a bit messy, but # supporting hugetlb mremap doesn't seem worth it, and completely disallowing # it will add overhead to normal mremaps. # -------------------------------------------- # 03/02/06 akpm@digeo.com 1.925.49.27 # [PATCH] mm/mremap.c whitespace cleanup # # - Not everyone uses 160-column xterms. # # - Coding style consistency # -------------------------------------------- # 03/02/06 akpm@digeo.com 1.925.49.28 # [PATCH] spinlock debugging on uniprocessors # # Patch from Manfred Spraul # # This enables spinlock debuggng on uniprocessor builds, under # CONFIG_DEBUG_SPINLOCK. # # The reason I want this is that one day we'll need to pull out the debugging # support from the timer code which detects uninitialised timers. And once # that has gone, uniprocessor developers and testers have no way of detecting # uninitialised timers - there will be mysterious deadlocks on SMP machines. # And there will surely be more uninitialised timers # # The patch also removes the last pieces of the support for including # directly. Doesn't work since (IIRC) 2.3.x # -------------------------------------------- # 03/02/06 akpm@digeo.com 1.925.49.29 # [PATCH] CPU Hotplug mm/slab.c CPU_UP_CANCELED fix # # Patch from Manfred Spraul. # # Fixes a bug which was exposed by Zwane's hotplug CPU work. The # cache_cache.array pointer is initially given a temp bootstrap area, which is # later converted over to the final value after the CPU is brought up. # # But if slab is enhanced to permit cancellation of a CPU bringup, this pointer # ends up pointing at stale memory. So reinitialise it by hand when # kmem_cache_init() is run. # -------------------------------------------- # 03/02/06 akpm@digeo.com 1.925.49.30 # [PATCH] Fix signed use of i_blocks in ext3 truncate # # Patch from "Stephen C. Tweedie" # # Fix "h_buffer_credits<0" assert failure during truncate. # # The bug occurs when the "i_blocks" count in the file's inode overflows # past 2^31. That works fine most of the time, because i_blocks is an # unsigned long, and should go up to 2^32; but there's a place in truncate # where ext3 calculates the size of the next transaction chunk for the # delete, and that mistakenly uses a signed long instead. Because the # huge i_blocks gets cast to a negative value, ext3 does not reserve # enough credits for the transaction and the above error results. # # This is usually only possible on filesystems corrupted for other # reasons, but it is reproducible if you create a single, non-sparse file # larger than 1TB on ext3 and then try to delete it. # -------------------------------------------- # 03/02/06 torvalds@home.transmeta.com 1.925.48.2 # Merge bk://kernel.bkbits.net/vojtech/x86-64 # into home.transmeta.com:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/02/06 randy.dunlap@verizon.net 1.925.48.3 # [PATCH] quota memleak # # The Stanford Checker found a memleak. # -------------------------------------------- # 03/02/06 jejb@raven.il.steeleye.com 1.925.48.4 # Merge raven.il.steeleye.com:/home/jejb/BK/scsi-misc-2.5 # into raven.il.steeleye.com:/home/jejb/BK/scsi-for-linus-2.5 # -------------------------------------------- # 03/02/06 agrover@groveronline.com 1.925.50.1 # ACPI: Enable compilation w/o cpufreq # -------------------------------------------- # 03/02/06 torvalds@home.transmeta.com 1.925.51.1 # Merge http://linux-acpi.bkbits.net/linux-acpi # into home.transmeta.com:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/02/06 torvalds@home.transmeta.com 1.925.48.5 # Merge http://linux-scsi.bkbits.net/scsi-for-linus-2.5 # into home.transmeta.com:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/02/06 David_Jeffery@adaptec.com 1.925.48.6 # [PATCH] ips driver 1/4: fix struct length and remove dead code # # This small patch fixes the length of the IPS_ENQ # struct. It was too short which can cause the adapter # to write beyond the the end of the struct during # driver initialization and corrupt part of memory. # -------------------------------------------- # 03/02/06 David_Jeffery@adaptec.com 1.925.48.7 # [PATCH] ips driver 2/4: initialization reordering # # This large patch reworks much of the adapter initialization # code. # # It splits the scsi initialization code from the pci # initialization. It adds support for working with some # future cards. It also removes the use of multiple pci_driver # registrations and instead does its own adapter ordering. # -------------------------------------------- # 03/02/06 David_Jeffery@adaptec.com 1.925.48.8 # [PATCH] ips driver 3/4: 64bit dma addressing # # This large patch adds support for using 64bit addressing. # # Special thanks goes to Mike Anderson who did the initial # versions of this patch. # -------------------------------------------- # 03/02/06 David_Jeffery@adaptec.com 1.925.48.9 # [PATCH] ips driver 4/4: error messages # # This small patch does 2 things. It reworks the firmware/driver # versioning messages to make them more understandable, and it # fixes one case where the 64bit addressing changes caused # error/success to not be properly reported to the serveraid tools. # -------------------------------------------- # 03/02/06 drow@nevyn.them.org 1.925.22.4 # Add PTRACE_O_TRACEVFORKDONE and PTRACE_O_TRACEEXIT facilities. # -------------------------------------------- # 03/02/06 mingo@elte.hu 1.925.48.10 # [PATCH] signal-fixes-2.5.59-A4 # # this is the current threading patchset, which accumulated up during the # past two weeks. It consists of a biggest set of changes from Roland, to # make threaded signals work. There were still tons of testcases and # boundary conditions (mostly in the signal/exit/ptrace area) that we did # not handle correctly. # # Roland's thread-signal semantics/behavior/ptrace fixes: # # - fix signal delivery race with do_exit() => signals are re-queued to the # 'process' if do_exit() finds pending unhandled ones. This prevents # signals getting lost upon thread-sys_exit(). # # - a non-main thread has died on one processor and gone to TASK_ZOMBIE, # but before it's gotten to release_task a sys_wait4 on the other # processor reaps it. It's only because it's ptraced that this gets # through eligible_child. Somewhere in there the main thread is also # dying so it reparents the child thread to hit that case. This means # that there is a race where P might be totally invalid. # # - forget_original_parent is not doing the right thing when the group # leader dies, i.e. reparenting threads to init when there is a zombie # group leader. Perhaps it doesn't matter for any practical purpose # without ptrace, though it makes for ppid=1 for each thread in core # dumps, which looks funny. Incidentally, SIGCHLD here really should be # p->exit_signal. # # - one of the gdb tests makes a questionable assumption about what kill # will do when it has some threads stopped by ptrace and others running. # # exit races: # # 1. Processor A is in sys_wait4 case TASK_STOPPED considering task P. # Processor B is about to resume P and then switch to it. # # While A is inside that case block, B starts running P and it clears # P->exit_code, or takes a pending fatal signal and sets it to a new # value. Depending on the interleaving, the possible failure modes are: # a. A gets to its put_user after B has cleared P->exit_code # => returns with WIFSTOPPED, WSTOPSIG==0 # b. A gets to its put_user after B has set P->exit_code anew # => returns with e.g. WIFSTOPPED, WSTOPSIG==SIGKILL # # A can spend an arbitrarily long time in that case block, because # there's getrusage and put_user that can take page faults, and # write_lock'ing of the tasklist_lock that can block. But even if it's # short the race is there in principle. # # 2. This is new with NPTL, i.e. CLONE_THREAD. # Two processors A and B are both in sys_wait4 case TASK_STOPPED # considering task P. # # Both get through their tests and fetches of P->exit_code before either # gets to P->exit_code = 0. => two threads return the same pid from # waitpid. # # In other interleavings where one processor gets to its put_user after # the other has cleared P->exit_code, it's like case 1(a). # # # 3. SMP races with stop/cont signals # # First, take: # # kill(pid, SIGSTOP); # kill(pid, SIGCONT); # # or: # # kill(pid, SIGSTOP); # kill(pid, SIGKILL); # # It's possible for this to leave the process stopped with a pending # SIGCONT/SIGKILL. That's a state that should never be possible. # Moreover, kill(pid, SIGKILL) without any repetition should always be # enough to kill a process. (Likewise SIGCONT when you know it's # sequenced after the last stop signal, must be sufficient to resume a # process.) # # 4. take: # # kill(pid, SIGKILL); // or any fatal signal # kill(pid, SIGCONT); // or SIGKILL # # it's possible for this to cause pid to be reaped with status 0 # instead of its true termination status. The equivalent scenario # happens when the process being killed is in an _exit call or a # trap-induced fatal signal before the kills. # # plus i've done stability fixes for bugs that popped up during # beta-testing, and minor tidying of Roland's changes: # # - a rare tasklist corruption during exec, causing some very spurious and # colorful crashes. # # - a copy_process()-related dereference of already freed thread structure # if hit with a SIGKILL in the wrong moment. # # - SMP spinlock deadlocks in the signal code # # this patchset has been tested quite well in the 2.4 backport of the # threading changes - and i've done some stresstesting on 2.5.59 SMP as # well, and did an x86 UP testcompile + testboot as well. # -------------------------------------------- # 03/02/06 markh@osdl.org 1.925.48.11 # [PATCH] fix megaraid driver compile error # # This moves access of the host element to device since host has been # removed from struct scsi_cmnd. # -------------------------------------------- # 03/02/06 drow@nevyn.them.org 1.925.22.5 # Signal handling bugs for thread exit + ptrace # -------------------------------------------- # 03/02/06 colpatch@us.ibm.com 1.925.48.12 # [PATCH] Broken CLEAR_BITMAP() macro # # The CLEAR_BITMAP() macro in include/linux/types.h is broken and doesn't # round the bitmap size to the proper 'long' boundary. # # This fixes it by creating a macro BITS_TO_LONGS that just rounds a # number of bits up to the closest number of unsigned longs. This makes # the DECLARE & CLEAR _BITMAP macros more readable and fixes the bug. # -------------------------------------------- # 03/02/06 drow@nevyn.them.org 1.925.52.1 # Hand-merge with Ingo's changes # -------------------------------------------- # 03/02/06 elenstev@mesatop.com 1.925.48.13 # [PATCH] Spelling fixes # # OK, here is the diff against 2.5.59-bk2, now up to 880 lines due to an # additional misspelling which crept in the -bk2 snapshot. # # Fixes 'seperate' -> 'separate' and 'definate' -> 'definite'. # # Kernal codrs cna't spel. # -------------------------------------------- # 03/02/06 roland@redhat.com 1.925.48.14 # [PATCH] Make sys_wait4() more readable # # I cleaned up sys_wait4; it was straightforward and I think a definite # improvement. While at it, I noticed that one of the races I fixed in the # TASK_STOPPED case actually can happen earlier. Between read_unlock and # write_lock_irq, another thread could reap the process and make P invalid, # so now I do get_task_struct before read_unlock and then the existing race # checks catch all scenarios. # # Aside from the aforementioned race tweak, the code should be the same as # in the previous patch (that Ingo and I have tested more thoroughly) # modulo being moved into functions and some reformatting and comment # changes. # # Oh, my old patch had one case where it failed to retake the read lock after # a race bailout that I just noticed reading over it. That's fixed too. # # These exit fixes were something I noticed incidentally and spent less time # on than the signals changes. Another few passes of eyeballs over them are # certainly warranted. (In particular, there are code paths like that one # that check for specific races that have probably never been seen in # practice, so those code paths have never run once.) # -------------------------------------------- # 03/02/06 akpm@digeo.com 1.925.48.15 # [PATCH] revert extra sendfile security hook patch # # hm. It seems that I sent this patch twice. # # After resyncing with your tree I go through and try to reapply all the sent # patches, throwing out the ones which get a lot of rejects. Just to make sure # that everything got through OK. # # But it appears that that particular patch happily applied on top of itself, # so I assumed it was not applied... # -------------------------------------------- # 03/02/06 Andries.Brouwer@cwi.nl 1.925.48.16 # [PATCH] Remove dead code # # In struct char_dev the fields openers and sem are unused. # The file char_dev.c claims that it is called differently. # -------------------------------------------- # 03/02/06 Andries.Brouwer@cwi.nl 1.925.48.17 # [PATCH] Doc fix # -------------------------------------------- # 03/02/06 hch@sgi.com 1.925.48.18 # [PATCH] fix leaks in vxfs_read_fshead() # # The Stanford checker disclose that vxfs_read_fshead was missing any # unwinding in the error cases.. # -------------------------------------------- # 03/02/06 fdavis@si.rr.com 1.925.48.19 # [PATCH] 2.5.59 : drivers/media/video/bt856.c # # This fixes a bt856.c compile error. The driver now compiles. Its a # straightforward patch and have emailed l-k and no objections have been # reported. # -------------------------------------------- # 03/02/06 drow@nevyn.them.org 1.925.53.1 # Merge # -------------------------------------------- # 03/02/06 fdavis@si.rr.com 1.925.48.20 # [PATCH] 2.5.59 : drivers/media/video/saa7185.c # # This patch to saa7185 to resolves buzilla bug #168 (compile error). It # has been sent to l-k and has received no objections. # -------------------------------------------- # 03/02/06 fdavis@si.rr.com 1.925.48.21 # [PATCH] 2.5.59 : drivers/media/video/bt819.c # # This patch for bt819.c addresses buzilla bug #169 (compile error). # -------------------------------------------- # 03/02/06 anton@samba.org 1.925.48.22 # [PATCH] missing include in pci-sysfs.c # # Add a missing include for those pesky S_IRUGO thingys. # -------------------------------------------- # 03/02/06 roland@redhat.com 1.925.48.23 # [PATCH] exit_notify/do_exit cleanup # # Here is a cleanup moving the new pending thread signal check into # exit_notify. # # I also made exit_notify and do_exit consistent in using the saved tsk # variable instead of current, as most of do_exit already does. # -------------------------------------------- # 03/02/06 torvalds@home.transmeta.com 1.925.48.24 # Merge # -------------------------------------------- # 03/02/07 bdschuym@pandora.be 1.925.1.52 # [BRIDGE]: update to new module scheme. # -------------------------------------------- # 03/02/07 jmorris@intercode.com.au 1.925.1.53 # [IPV4]: Fix skb leak in inet_rtm_getroute. # -------------------------------------------- # 03/02/07 jmorris@intercode.com.au 1.925.1.54 # [IPV6]: Fix skb leak in inet6_rtm_getroute. # -------------------------------------------- # 03/02/07 buytenh@gnu.org 1.925.1.55 # [BRIDGE]: Update maintainership status. # -------------------------------------------- # 03/02/07 buytenh@gnu.org 1.925.1.56 # [BRIDGE]: handle out-of-ports corner case. # -------------------------------------------- # 03/02/07 jmorris@intercode.com.au 1.925.1.57 # [LSM]: networking hooks, kconfig bits. # -------------------------------------------- # 03/02/07 jmorris@intercode.com.au 1.925.1.58 # [LSM]: Networking top-level socket operation hooks. # -------------------------------------------- # 03/02/07 jmorris@intercode.com.au 1.925.1.59 # [LSM]: Networking socket SKB receive hook. # -------------------------------------------- # 03/02/07 jmorris@intercode.com.au 1.925.1.60 # [LSM]: Networking AF_UNIX hooks. # -------------------------------------------- # 03/02/07 jmorris@intercode.com.au 1.925.1.61 # [LSM]: Networking netlink socket capability hooks. # -------------------------------------------- # 03/02/07 elenstev@mesatop.com 1.925.48.25 # [PATCH] Spelling fixes for consistent, dependent, persistent # # This fixes the following common misspellings and their variants. # # consistant -> consistent # dependant -> dependent # persistant -> persistent # -------------------------------------------- # 03/02/07 roland@redhat.com 1.925.48.26 # [PATCH] SA_NOCLDWAIT now supported - update comments # # This patch removes all the comments on the SA_NOCLDWAIT definitions, # since SA_NOCLDWAIT is fully supported now. # -------------------------------------------- # 03/02/07 roland@redhat.com 1.925.48.27 # [PATCH] do_sigaction locking cleanup # # This changes do_sigaction to avoid read_lock(&tasklist_lock) on every # call. Only in the fairly uncommon cases where it's really needed will # it take that lock (which requires unlocking and relocking the siglock # for locking order). # # I also changed the ERESTARTSYS added in my earlier patch to ERESTARTNOINTR. # That is an "instantaneous" case, and there is no reason to have it possibly # return EINTR if !SA_RESTART (which AFAIK sigaction never could before, and # it might not be kosher by POSIX); rollback is always better. # -------------------------------------------- # 03/02/07 akpm@digeo.com 1.925.48.28 # [PATCH] Fix possible uninitialised variable in vma merging code # # Spotted by davem. Strange that it ever worked. Don't know why the compiler # didn't warn... # -------------------------------------------- # 03/02/07 torvalds@home.transmeta.com 1.925.48.29 # Don't special-case SIGKILL/SIGSTOP - the blocking masks should # already take care of it. # # This fixes kernel threads that _do_ block SIGKILL/STOP. # -------------------------------------------- # 03/02/07 torvalds@home.transmeta.com 1.925.48.30 # Split up "struct signal_struct" into "signal" and "sighand" parts. # # This is required to get make the old LinuxThread semantics work # together with the fixed-for-POSIX full signal sharing. A traditional # CLONE_SIGHAND thread (LinuxThread) will not see any other shared # signal state, while a new-style CLONE_THREAD thread will share all # of it. # # This way the two methods don't confuse each other. # -------------------------------------------- # 03/02/07 drow@nevyn.them.org 1.925.48.31 # Hand merge # -------------------------------------------- # 03/02/07 cw@f00f.org 1.925.48.32 # [PATCH] signal locking update # # Accomodate the signal locking moving from "tsk->sig" to "tsk->sighand". # -------------------------------------------- # 03/02/07 roland@redhat.com 1.925.48.33 # [PATCH] TASK_STOPPED wakeup cleanup # # For handle_stop_signal to do the special case for SIGKILL and have it # work right in all SMP cases (without changing all the existing ptrace # stops), it needs to at least set TIF_SIGPENDING on each thread before # resuming it. # # handle_stop_signal addresses a related race for SIGCONT by setting # TIF_SIGPENDING already, so having SIGKILL handled the same way makes # sense. # # Now it seems pretty clean to have handle_stop_signal resume threads for # SIGKILL, and have on SIGKILL special case in group_send_sig_info. # # There is also an SMP race issue with cases like do_syscall_trace, i.e. # TASK_STOPPED state set without holding the siglock. So I think # handle_stop_signal should call wake_up_process unconditionally. # -------------------------------------------- # 03/02/08 anton@samba.org 1.945 # resolve conflicts # -------------------------------------------- # 03/02/08 kai@tp1.ruhr-uni-bochum.de 1.925.48.34 # kbuild: Handle external SUBDIRS with modversions # # We need to collect a list of all modules during the recursive build. I used # a "touch .tmp_versions/" to do so, which however doesn't # work so well, when path/to isn't inside the kernel tree. # # The best way to build external modules is currently using kbuild by saying # "make SUBDIRS=/some/external/dir modules", which was thus broken. While this # way is not all that optimal and I hope to come up with something better # before 2.6, it works and should keep working, so this patch fixes the usage # above. # # Instead of touching files with the entire path added, we just create a # .mod file in $(MODVERDIR) now, and save the path to the module.ko # in it. Since module names are unique, a flat hierarchy is actually fine here. # -------------------------------------------- # 03/02/08 kai@tp1.ruhr-uni-bochum.de 1.925.48.35 # kbuild: Warn on obsolete export-objs use # # Setting export-objs is not necessary anymore, so warn on encountering it # to prevent it from creeping back in ;) # # Also, make the error when we find someone still using O_TARGET non-fatal, # so that people sharing stuff between 2.4 and 2.5 don't have more hassle # than necessary. # -------------------------------------------- # 03/02/08 perex@suse.cz 1.925.54.1 # ALSA update # - cmipci driver cleanups (ac3 & surround) # - replaced snd_dma_residue() with snd_dma_pointer() # - GCC 3.3 warnings removal # - timer interface # - recoded using tasklet # - improved slave timer locking (should be much faster) # - added async support # - improved ioctl32 wrapper functions # - fixed Makefile problems (synth modules were build for not selected driver) # - AC97 codec # - improved SPSA control # - moved reset function outside the main init code # - improved ALC650 initialization # - USB driver # - added quirk for Roland XV-2020 # # -------------------------------------------- # 03/02/08 kai@tp1.ruhr-uni-bochum.de 1.925.48.36 # kbuild: Modversions fix # # We're still using the old genksyms binary, that's why we have to # postprocess the output to convert it into a linker script - that # postprocessing got confused by "__verify_write". # # Kick out the grep, do it all and correctly within sed. # # Bug reported by Thomas Molina. # -------------------------------------------- # 03/02/08 kai@tp1.ruhr-uni-bochum.de 1.925.48.37 # kbuild: Add a bug trap for people playing with SUBDIRS too much # # If SUBDIRS is set manually on the command line, the contents of # .tmp_versions are not deleted before descending and can accumulate # stale entries. Print a warning if that case is detected, but deal with # it gracefully. # -------------------------------------------- # 03/02/08 perex@suse.cz 1.925.54.2 # ALSA update # - emu10k1 - fixed makefile to not build synth module when emu10k1 is not selected # -------------------------------------------- # 03/02/08 cw@f00f.org 1.925.54.3 # [PATCH] missing sound include file # # Sound drivers need for tasklets # -------------------------------------------- # 03/02/08 torvalds@home.transmeta.com 1.925.54.4 # More signal handling fixups for the threaded signal fix upheavals. # # This fixes the signal code to not wake up threads with blocked signals, # especially noticeable with kernel threads that may not be able to handle # signals at all. # # We also don't unnecessarily wake processes in TASK_UNINTERRUPTIBLE. # -------------------------------------------- # 03/02/09 anton@samba.org 1.946 # Merge samba.org:/scratch/anton/linux-2.5 # into samba.org:/scratch/anton/sfr # -------------------------------------------- # 03/02/09 rmk@arm.linux.org.uk 1.925.54.5 # [PATCH] Fix Alt-SysRQ-T status, and comment # # Fix wrong order of process status. It's # # #define TASK_RUNNING 0 # #define TASK_INTERRUPTIBLE 1 # #define TASK_UNINTERRUPTIBLE 2 # #define TASK_STOPPED 4 # #define TASK_ZOMBIE 8 # #define TASK_DEAD 16 # # but SysRQ printout routines switch stopped and zombie around. # # So, for one more time, here's another mailing of the same patch to fix # this brokenness. In addition, fix the wrong comment in fs/proc/array.c # -------------------------------------------- # 03/02/09 akpm@digeo.com 1.925.54.6 # [PATCH] Fix compile warning for 'sys_exit_group' # # sys_exit_group() doesn't return any value, and obviously cannot. # # So don't make the compiler unhappy about it by claiming it does. # -------------------------------------------- # 03/02/09 jamie@shareable.org 1.925.54.7 # [PATCH] CONFIG_PREEMPT fix of do_debug() # # If CONFIG_PREEMPT is enabled, and the kernel is preempted just before # do_debug() has a chance to save the debug register values, DR6 could be # read from the wrong CPU. # # It is exactly the same problem as reading %cr2 in the page fault # handler. Same fix: make the handler a interrupt gate, and enable # interrupts only once safe. # -------------------------------------------- # 03/02/09 davem@kernel.bkbits.net 1.925.1.62 # Merge davem@nuts.ninka.net:/home/davem/src/BK/net-2.5 # into kernel.bkbits.net:/home/davem/net-2.5 # -------------------------------------------- # 03/02/09 jejb@raven.il.steeleye.com 1.925.54.8 # Restore device command queue functionality # # The recent slab allocation changes mean that we no longer keep a # permanent list of commands on the device_queue list. However, # certain pieces of SCSI code relied on being able to traverse this # list to find details of all outstanding commands (the error handler # being the prime example). This code adds back a new dynamic cmd_list # which keeps the list of commands currently allocated to the device. # Since the list is dynamic, it is protected by a lock (list_lock). # -------------------------------------------- # 03/02/09 jejb@raven.il.steeleye.com 1.925.54.9 # [SCSI] Migrate sim710 to 53c700 chip driver # # This should add synchronous support and Tagged Command Queueing. # At the moment, it cuts down on the number of command line options, # but we can add those back in later. # # This patch also migrates the driver to the new device model for # both MCA and EISA. # -------------------------------------------- # 03/02/09 luben@splentec.com 1.925.54.10 # [SCSI] add commands at the tail of cmd_list # # It's probably going to be a fifo, so it should be more efficient # for taking them off again # -------------------------------------------- # 03/02/09 jejb@raven.il.steeleye.com 1.925.54.11 # [SCSI] Remove 53c7,8xx since we have plenty of alternatives. # # We have 53c700.c and 53c7xx for the 7xx series and # ncr53c8xx for the 720. The sym53c8xx_2 covers all the 8xx chips. # -------------------------------------------- # 03/02/09 jejb@mulgrave.(none) 1.925.54.12 # [SCSI] Add missing list head init of cmd_list # -------------------------------------------- # 03/02/09 perex@suse.cz 1.925.55.1 # ALSA update # - moved inclusion of from to # - pmac driver - removed beep stuff for 2.5 kernels # - USB driver - fixed compilation # -------------------------------------------- # 03/02/10 anton@samba.org 1.947 # Merge samba.org:/scratch/anton/linux-2.5 # into samba.org:/scratch/anton/sfr # -------------------------------------------- # 03/02/10 anton@samba.org 1.948 # ppc64: update for signal changes # -------------------------------------------- # 03/02/10 anton@samba.org 1.949 # ppc64: Fix nasty bug in cmpxchg where we would sign extend the old value. # -------------------------------------------- # 03/02/09 torvalds@home.transmeta.com 1.950 # Merge http://linux-sound.bkbits.net/linux-sound # into home.transmeta.com:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/02/09 torvalds@home.transmeta.com 1.951 # Merge http://linux-scsi.bkbits.net/scsi-for-linus-2.5 # into home.transmeta.com:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/02/09 mingo@elte.hu 1.952 # [PATCH] Lock session and group ID setting # # - session-IDs and group-IDs are set outside the tasklist lock. This # causes breakage in the USB code. The correct fix is to do this: # # I introduced the bug with the new pidhash. # -------------------------------------------- # 03/02/09 mingo@elte.hu 1.953 # [PATCH] lock group_send_sig_info() properly # # - a read_lock(&tasklist_lock) is missing around the group_send_sig_info() # in send_sig_info(). # -------------------------------------------- # 03/02/09 torvalds@home.transmeta.com 1.954 # Merge bk://kernel.bkbits.net/davem/net-2.5 # into home.transmeta.com:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/02/09 roland@redhat.com 1.955 # [PATCH] zap_other_threads() needs tasklist_lock held # -------------------------------------------- # 03/02/09 mikulas@artax.karlin.mff.cuni.cz 1.956 # [PATCH] simple EXT2 patch # # Do not crash on null pointer dereference, if cannot reread superblock. # -------------------------------------------- # 03/02/09 torvalds@home.transmeta.com 1.957 # Make sigprocmask() available to kernel threads too, since a lot of # them do want to temporarily block signals. # # Kernel users can also block signals that are normally unblockable # to user space, ie SIGKILL and SIGSTOP. # # Make nfsd and autofs use the new interface, as an example to others. # -------------------------------------------- # 03/02/09 torvalds@home.transmeta.com 1.958 # Fix missing break, causing sigprocmask(SIG_SETMASK ...) to always # return an error. # # Interestingly, nobody much seems to care. Apparently few programs # check the error value. # -------------------------------------------- # 03/02/09 torvalds@home.transmeta.com 1.959 # Merge http://linux-isdn.bkbits.net/linux-2.5.make # into home.transmeta.com:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/02/09 rusty@rustcorp.com.au 1.960 # [PATCH] Documentation_Changes # # From: Frank Davis # # this was already mentioned on l-k by ramune@net-ronin.org, but isn't in # 2.5.59. Placing on the trivial queue for inclusion. # -------------------------------------------- # 03/02/09 rusty@rustcorp.com.au 1.961 # [PATCH] Remove superflous 'either' # # From: John Bradford # -------------------------------------------- # 03/02/09 rusty@rustcorp.com.au 1.962 # [PATCH] fix comment in module.c # # From: John Levon # -------------------------------------------- # 03/02/09 rusty@rustcorp.com.au 1.963 # [PATCH] remove check_region from drivers_net_irda_irport.c # # From: william stinson # # this patch for drivers/net/irda/irport.c IRDA driver removes one call # to check_region using request_region instead. The patch also moves # the call to request_region to before the allocation of the driver # instance. # -------------------------------------------- # 03/02/09 rusty@rustcorp.com.au 1.964 # [PATCH] parport_pc and !CONFIG_PNP # # From: Geert Uytterhoeven # # parport_pc_pnp_driver is const if !CONFIG_PNP, while pnp_register_driver() # takes a non-const pointer as parameter. # # An alternative fix is to change the prototype of the dummy # pnp_register_driver(), but this may affect other drivers. # -------------------------------------------- # 03/02/09 rusty@rustcorp.com.au 1.965 # [PATCH] Change "char _version" to "char in drivers_lcs.c # # From: Pablo Menichini # -------------------------------------------- # 03/02/09 rusty@rustcorp.com.au 1.966 # [PATCH] add one help text to drivers_atm_Kconfig # # From: Steven Cole # # Here is a help text from 2.4.21-pre4 Configure.help which is # needed in 2.5.59 drivers/atm/Kconfig. # -------------------------------------------- # 03/02/09 rusty@rustcorp.com.au 1.967 # [PATCH] scripts_ver_linux # # From: Frank Davis # # The ver_linux script is still using rmmod to determine # module-init-tools version. The following patch uses depmod, # which produces the appropriate result. # -------------------------------------------- # 03/02/09 rusty@rustcorp.com.au 1.968 # [PATCH] Change "char _version" to "char in drivers_net_mac8390.c # # From: Pablo Menichini # -------------------------------------------- # 03/02/09 rusty@rustcorp.com.au 1.969 # [PATCH] add two help texts to drivers_i2c_Kconfig # # From: Steven Cole # # Here are some help texts from 2.4.21-pre3 Configure.help which are # needed in 2.5.59 drivers/i2c/Kconfig. # -------------------------------------------- # 03/02/09 rusty@rustcorp.com.au 1.970 # [PATCH] Remove compile warning from fs_xfs_support_move.c # # From: Bob Miller # # Include string.h to remove a compiler warning. # -------------------------------------------- # 03/02/09 rusty@rustcorp.com.au 1.971 # [PATCH] make i2c-core driver_lock static # # From: Muli Ben-Yehuda # # The i2c driver_lock is needlessly exported. # This makes it static. # -------------------------------------------- # 03/02/09 rusty@rustcorp.com.au 1.972 # [PATCH] Memory leak in drivers_net_arlan.c (1) # # From: Pablo Menichini # -------------------------------------------- # 03/02/09 rusty@rustcorp.com.au 1.973 # [PATCH] RTC alarm and wildcards # # (Included in 2.4) # From: Paul Gortmaker # # Summary: Wildcards in RTC alarm settings failed to work # # Description: # The RTC has provision for wildcards when setting the alarm; to # use them you have to write a value higher than 0xc0 to the # appropriate hr/min/sec entry. The driver used 0xff, which is # fine, but it mistakenly fed the 0xff through BIN_TO_BCD before # writing them (which is < 0xc0) and so wildcards didn't work. # (Thanks to Gerhard Kurz for reporting the bug.) # -------------------------------------------- # 03/02/09 rusty@rustcorp.com.au 1.974 # [PATCH] fix typo of members name in drivers_mtd_ftl.c # # From: Pablo Menichini # -------------------------------------------- # 03/02/09 rusty@rustcorp.com.au 1.975 # [PATCH] Fix return code of init_module in drivers_net_arlan.c (2) # # From: Pablo Menichini # # This patch returns correct error codes if init_modules fail. # Because of this, we can take the printks indicating the error as these # corrected error codes return miningfull information. # -------------------------------------------- # 03/02/09 rusty@rustcorp.com.au 1.976 # [PATCH] Kill unused code # # From: Pavel Machek # # Second part of this patch never got in (and I was told it was not bug # in ASUS but in linux), so it is useless junk... Please apply, # -------------------------------------------- # 03/02/09 rusty@rustcorp.com.au 1.977 # [PATCH] remove LinuxVersionCode from de4x5.h # # From: Adrian Bunk # # drivers/net/tulip/de4x5.h in 2.5.54 contains a definition of # LinuxVersionCode. LinuxVersionCode isn't used and it's anyway obsoleted # by KERNEL_VERSION in version.h. # -------------------------------------------- # 03/02/09 rusty@rustcorp.com.au 1.978 # [PATCH] nfs_write.c warning # # From: William Lee Irwin III # # This trivially corrects an unused variable warning in nfs/write.c: # -------------------------------------------- # 03/02/09 rusty@rustcorp.com.au 1.979 # [PATCH] Squash unused function in fs_nfs_mount_clnt.c # # From: David Gibson # # is never used, so this patch removes it. # -------------------------------------------- # 03/02/09 rusty@rustcorp.com.au 1.980 # [PATCH] fix spelling of kernel in arch_v850_kernel_mach.h # # From: Steven Cole # # This fixes the only instance of "kernal" in 2.5.59. # -------------------------------------------- # 03/02/09 rusty@rustcorp.com.au 1.981 # [PATCH] fix linewrap in Documentation_arm_SA1100_CERF # # [ Verified that no text changed with tr and cmp --RR ] # From: ookhoi@humilis.net # # With this patch I tried to make Documentation/arm/SA1100/CERF more # readible by fixing the linewrap. # -------------------------------------------- # 03/02/09 rusty@rustcorp.com.au 1.982 # [PATCH] swsusp: do not panic on bad signature with noresume # # From: Pavel Machek # # This patch makes kernel ignore bad signature on suspend device when # "noresume" is given, and cleans things up a little bit. Please apply, # -------------------------------------------- # 03/02/09 rusty@rustcorp.com.au 1.983 # [PATCH] add six help texts to drivers_ide_Kconfig # # From: Steven Cole # # Here are some help texts from 2.4.21-pre3 Configure.help which are # needed in 2.5.59 drivers/ide/Kconfig. # -------------------------------------------- # 03/02/09 rusty@rustcorp.com.au 1.984 # [PATCH] add four help texts to drivers_char_watchdog_Kconfig # # From: Steven Cole # # Here are some help texts from 2.4.21-pre3 Configure.help which are # needed in 2.5.59 drivers/char/watchdog/Kconfig. # -------------------------------------------- # 03/02/09 rusty@rustcorp.com.au 1.985 # [PATCH] Change "char version" to initdata in drivers_net_tulip_de4x5.c # # From: Pablo Menichini # -------------------------------------------- # 03/02/09 rusty@rustcorp.com.au 1.986 # [PATCH] add two help texts to drivers_media_video_Kconfig # # From: Steven Cole # # Here are some help texts from 2.4.21-pre3 Configure.help which are # needed in 2.5.59 drivers/media/video/Kconfig. # -------------------------------------------- # 03/02/09 rusty@rustcorp.com.au 1.987 # [PATCH] Write with buffer>2GB returns broken errno (2) # # [ Acked by AKPM --RR ] # From: Kazuto MIYOSHI # # On 64-bit platforms, issuing write(2) with buffer larger than # 2GB will return -1 and broken errno (such as 2147483640) # Requested data itself is written correctly. # # That is because generic_file_write() and other relating functions # store 'ssize_t written' into 'int err'. Written byte is trimmed to # int and then sign-extended to a negative ssize_t value, which # wrongly indicates an error. # # (On 64bit platform, current glibc defines SSIZE_MAX as 'LONG_MAX') # -------------------------------------------- # 03/02/09 rusty@rustcorp.com.au 1.988 # [PATCH] Change all .o to .ko in Kconfig files # # From: GertJan Spoelman # # OK, here is a new patch, I edited the old patch and took out the .ko's # so now the extension is trimmed instead. # -------------------------------------------- # diff -Nru a/Documentation/Changes b/Documentation/Changes --- a/Documentation/Changes Sun Feb 9 21:13:36 2003 +++ b/Documentation/Changes Sun Feb 9 21:13:36 2003 @@ -52,7 +52,7 @@ o Gnu make 3.78 # make --version o binutils 2.9.5.0.25 # ld -v o util-linux 2.10o # fdformat --version -o module-init-tools 0.9.8 # rmmod -V +o module-init-tools 0.9.9 # depmod -V o e2fsprogs 1.29 # tune2fs o jfsutils 1.0.14 # fsck.jfs -V o reiserfsprogs 3.6.3 # reiserfsck -V 2>&1|grep reiserfsprogs diff -Nru a/Documentation/DocBook/journal-api.tmpl b/Documentation/DocBook/journal-api.tmpl --- a/Documentation/DocBook/journal-api.tmpl Sun Feb 9 21:13:28 2003 +++ b/Documentation/DocBook/journal-api.tmpl Sun Feb 9 21:13:28 2003 @@ -141,17 +141,14 @@ Or if you've asked for access to a buffer you now know is now longer required to be pushed back on the device you can call journal_forget() in much the same way as you might have used bforget() in the past. - - - A journal_flush() may be called at any time to commit and checkpoint all your transactions. - + Then at umount time , in your put_super() (2.4) or write_super() (2.5) you can then call journal_destroy() to clean up your in-core journal object. @@ -168,8 +165,8 @@ across differing journals, and another filesystem other than yours (say ext3) may be modified in a later syscall. - + The second case to bear in mind is that journal_start() can block if there isn't enough space in the journal for your transaction (based on the passed nblocks param) - when it blocks it merely(!) needs to @@ -180,10 +177,14 @@ deadlocks. Note that journal_extend() has similar blocking behaviour to journal_start() so you can deadlock here just as easily as on journal_start(). - -Try to reserve the right number of blocks the first time. ;-). + +Try to reserve the right number of blocks the first time. ;-). This will +be the maximum number of blocks you are going to touch in this transaction. +I advise having a look at at least ext3_jbd.h to see the basis on which +ext3 uses to make these decisions. + Another wriggle to watch out for is your on-disk block allocation strategy. why? Because, if you undo a delete, you need to ensure you haven't reused any @@ -211,6 +212,30 @@ if you allow unprivileged userspace to trigger codepaths containing these calls. + + +A new feature of jbd since 2.5.25 is commit callbacks with the new +journal_callback_set() function you can now ask the journalling layer +to call you back when the transaction is finally commited to disk, so that +you can do some of your own management. The key to this is the journal_callback +struct, this maintains the internal callback information but you can +extend it like this:- + + + struct myfs_callback_s { + //Data structure element required by jbd.. + struct journal_callback for_jbd; + // Stuff for myfs allocated together. + myfs_inode* i_commited; + + } + + + +this would be useful if you needed to know when data was commited to a +particular inode. + + diff -Nru a/Documentation/SubmittingDrivers b/Documentation/SubmittingDrivers --- a/Documentation/SubmittingDrivers Sun Feb 9 21:13:34 2003 +++ b/Documentation/SubmittingDrivers Sun Feb 9 21:13:34 2003 @@ -62,7 +62,7 @@ in Documentation/CodingStyle. If you have sections of code that need to be in other formats, for example because they are shared with a windows driver kit and you want to - maintain them just once seperate them out nicely and note + maintain them just once separate them out nicely and note this fact. Portability: Pointers are not always 32bits, not all computers are little diff -Nru a/Documentation/arm/SA1100/CERF b/Documentation/arm/SA1100/CERF --- a/Documentation/arm/SA1100/CERF Sun Feb 9 21:13:28 2003 +++ b/Documentation/arm/SA1100/CERF Sun Feb 9 21:13:28 2003 @@ -1,23 +1,28 @@ -The Intrinsyc CerfBoard is a StrongARM 1110-based computer on a board that measures -approximately 2" square. It includes an Ethernet controller, an RS232-compatible serial port, a -USB function port, and one CompactFlash+ slot on the back. Pictures can be found at the +The Intrinsyc CerfBoard is a StrongARM 1110-based computer on a board +that measures approximately 2" square. It includes an Ethernet +controller, an RS232-compatible serial port, a USB function port, and +one CompactFlash+ slot on the back. Pictures can be found at the Intrinsyc website, http://www.intrinsyc.com. -This document describes the support in the Linux kernel for the Intrinsyc CerfBoard as of -version 2.4.0-test4-np1. +This document describes the support in the Linux kernel for the +Intrinsyc CerfBoard as of version 2.4.0-test4-np1. Supported in this version: - - CompactFlash+ slot (select PCMCIA in General Setup and any options that may be required) - - Onboard Crystal CS8900 Ethernet controller (Cerf CS8900A support in Network Devices) + - CompactFlash+ slot (select PCMCIA in General Setup and any options + that may be required) + - Onboard Crystal CS8900 Ethernet controller (Cerf CS8900A support in + Network Devices) - Serial ports with a serial console (hardcoded to 38400 8N1) Not supported in this version (yet): - LCD driver/touchscreen interface - - UDC (a driver exists right now, but is unstable and slow and only works with the Linux USB) + - UDC (a driver exists right now, but is unstable and slow and only + works with the Linux USB) -In order to get this kernel onto your Cerf, you need a server that runs both BOOTP and -TFTP. Detailed instructions should have come with your evaluation kit on how to use the -bootloader. This series of commands will suffice: +In order to get this kernel onto your Cerf, you need a server that runs +both BOOTP and TFTP. Detailed instructions should have come with your +evaluation kit on how to use the bootloader. This series of commands +will suffice: make cerf_config make xconfig @@ -25,10 +30,9 @@ make zImage cp arch/arm/boot/zImage -The default config uses a 4MB RAM disk located at 0xc0500000 as root. Setting the board to -mount root from a NFS partition works, too. +The default config uses a 4MB RAM disk located at 0xc0500000 as root. +Setting the board to mount root from a NFS partition works, too. I-Gene Leong, Intrinsyc Software Inc. ileong@intrinsyc.com - diff -Nru a/Documentation/filesystems/ext3.txt b/Documentation/filesystems/ext3.txt --- a/Documentation/filesystems/ext3.txt Sun Feb 9 21:13:31 2003 +++ b/Documentation/filesystems/ext3.txt Sun Feb 9 21:13:31 2003 @@ -78,7 +78,7 @@ filesystem code will inform the JBD of modifications it is performing (Call a transaction). the journal support the transactions start and stop, and in case of crash, the journal can replayed the transactions -to put the partition on a consistant state fastly. +to put the partition on a consistent state fastly. handles represent a single atomic update to a filesystem. JBD can handle external journal on a block device. diff -Nru a/Documentation/filesystems/jfs.txt b/Documentation/filesystems/jfs.txt --- a/Documentation/filesystems/jfs.txt Sun Feb 9 21:13:33 2003 +++ b/Documentation/filesystems/jfs.txt Sun Feb 9 21:13:33 2003 @@ -28,8 +28,6 @@ Plans for our near term development items - enhance support for logfile on dedicated partition - - get access control list functionality operational - - get extended attributes functionality operational Longer term work items @@ -37,7 +35,7 @@ - add quota support - add support for block sizes (512,1024,2048) -Please send bugs, comments, cards and letters to linuxjfs@us.ibm.com. +Please send bugs, comments, cards and letters to shaggy@austin.ibm.com. The JFS mailing list can be subscribed to by using the link labeled "Mail list Subscribe" at our web page http://oss.software.ibm.com/jfs/. diff -Nru a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt --- a/Documentation/filesystems/proc.txt Sun Feb 9 21:13:30 2003 +++ b/Documentation/filesystems/proc.txt Sun Feb 9 21:13:30 2003 @@ -911,7 +911,7 @@ The four values in printk denote * console_loglevel, * default_message_loglevel, -* minimum_console_level and +* minimum_console_loglevel and * default_console_loglevel respectively. diff -Nru a/Documentation/ia64/README b/Documentation/ia64/README --- a/Documentation/ia64/README Sun Feb 9 21:13:36 2003 +++ b/Documentation/ia64/README Sun Feb 9 21:13:36 2003 @@ -4,40 +4,40 @@ platform. This document provides information specific to IA-64 ONLY, to get additional information about the Linux kernel also read the original Linux README provided with the kernel. - + INSTALLING the kernel: - IA-64 kernel installation is the same as the other platforms, see original README for details. - - + + SOFTWARE REQUIREMENTS Compiling and running this kernel requires an IA-64 compliant GCC compiler. And various software packages also compiled with an IA-64 compliant GCC compiler. - + CONFIGURING the kernel: Configuration is the same, see original README for details. - - + + COMPILING the kernel: - Compiling this kernel doesn't differ from other platform so read the original README for details BUT make sure you have an IA-64 compliant GCC compiler. - + IA-64 SPECIFICS - General issues: - + o Hardly any performance tuning has been done. Obvious targets include the library routines (IP checksum, etc.). Less obvious targets include making sure we don't flush the TLB needlessly, etc. - + o SMP locks cleanup/optimization - + o IA32 support. Currently experimental. It mostly works. diff -Nru a/Documentation/ia64/fsys.txt b/Documentation/ia64/fsys.txt --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/Documentation/ia64/fsys.txt Sun Feb 9 21:13:38 2003 @@ -0,0 +1,231 @@ +-*-Mode: outline-*- + + Light-weight System Calls for IA-64 + ----------------------------------- + + Started: 13-Jan-2003 + Last update: 24-Jan-2003 + + David Mosberger-Tang + + +Using the "epc" instruction effectively introduces a new mode of +execution to the ia64 linux kernel. We call this mode the +"fsys-mode". To recap, the normal states of execution are: + + - kernel mode: + Both the register stack and the memory stack have been + switched over to kernel memory. The user-level state is saved + in a pt-regs structure at the top of the kernel memory stack. + + - user mode: + Both the register stack and the kernel stack are in + user memory. The user-level state is contained in the + CPU registers. + + - bank 0 interruption-handling mode: + This is the non-interruptible state which all + interruption-handlers start execution in. The user-level + state remains in the CPU registers and some kernel state may + be stored in bank 0 of registers r16-r31. + +In contrast, fsys-mode has the following special properties: + + - execution is at privilege level 0 (most-privileged) + + - CPU registers may contain a mixture of user-level and kernel-level + state (it is the responsibility of the kernel to ensure that no + security-sensitive kernel-level state is leaked back to + user-level) + + - execution is interruptible and preemptible (an fsys-mode handler + can disable interrupts and avoid all other interruption-sources + to avoid preemption) + + - neither the memory nor the register stack can be trusted while + in fsys-mode (they point to the user-level stacks, which may + be invalid) + +In summary, fsys-mode is much more similar to running in user-mode +than it is to running in kernel-mode. Of course, given that the +privilege level is at level 0, this means that fsys-mode requires some +care (see below). + + +* How to tell fsys-mode + +Linux operates in fsys-mode when (a) the privilege level is 0 (most +privileged) and (b) the stacks have NOT been switched to kernel memory +yet. For convenience, the header file provides +three macros: + + user_mode(regs) + user_stack(task,regs) + fsys_mode(task,regs) + +The "regs" argument is a pointer to a pt_regs structure. The "task" +argument is a pointer to the task structure to which the "regs" +pointer belongs to. user_mode() returns TRUE if the CPU state pointed +to by "regs" was executing in user mode (privilege level 3). +user_stack() returns TRUE if the state pointed to by "regs" was +executing on the user-level stack(s). Finally, fsys_mode() returns +TRUE if the CPU state pointed to by "regs" was executing in fsys-mode. +The fsys_mode() macro is equivalent to the expression: + + !user_mode(regs) && user_stack(task,regs) + +* How to write an fsyscall handler + +The file arch/ia64/kernel/fsys.S contains a table of fsyscall-handlers +(fsyscall_table). This table contains one entry for each system call. +By default, a system call is handled by fsys_fallback_syscall(). This +routine takes care of entering (full) kernel mode and calling the +normal Linux system call handler. For performance-critical system +calls, it is possible to write a hand-tuned fsyscall_handler. For +example, fsys.S contains fsys_getpid(), which is a hand-tuned version +of the getpid() system call. + +The entry and exit-state of an fsyscall handler is as follows: + +** Machine state on entry to fsyscall handler: + + - r10 = 0 + - r11 = saved ar.pfs (a user-level value) + - r15 = system call number + - r16 = "current" task pointer (in normal kernel-mode, this is in r13) + - r32-r39 = system call arguments + - b6 = return address (a user-level value) + - ar.pfs = previous frame-state (a user-level value) + - PSR.be = cleared to zero (i.e., little-endian byte order is in effect) + - all other registers may contain values passed in from user-mode + +** Required machine state on exit to fsyscall handler: + + - r11 = saved ar.pfs (as passed into the fsyscall handler) + - r15 = system call number (as passed into the fsyscall handler) + - r32-r39 = system call arguments (as passed into the fsyscall handler) + - b6 = return address (as passed into the fsyscall handler) + - ar.pfs = previous frame-state (as passed into the fsyscall handler) + +Fsyscall handlers can execute with very little overhead, but with that +speed comes a set of restrictions: + + o Fsyscall-handlers MUST check for any pending work in the flags + member of the thread-info structure and if any of the + TIF_ALLWORK_MASK flags are set, the handler needs to fall back on + doing a full system call (by calling fsys_fallback_syscall). + + o Fsyscall-handlers MUST preserve incoming arguments (r32-r39, r11, + r15, b6, and ar.pfs) because they will be needed in case of a + system call restart. Of course, all "preserved" registers also + must be preserved, in accordance to the normal calling conventions. + + o Fsyscall-handlers MUST check argument registers for containing a + NaT value before using them in any way that could trigger a + NaT-consumption fault. If a system call argument is found to + contain a NaT value, an fsyscall-handler may return immediately + with r8=EINVAL, r10=-1. + + o Fsyscall-handlers MUST NOT use the "alloc" instruction or perform + any other operation that would trigger mandatory RSE + (register-stack engine) traffic. + + o Fsyscall-handlers MUST NOT write to any stacked registers because + it is not safe to assume that user-level called a handler with the + proper number of arguments. + + o Fsyscall-handlers need to be careful when accessing per-CPU variables: + unless proper safe-guards are taken (e.g., interruptions are avoided), + execution may be pre-empted and resumed on another CPU at any given + time. + + o Fsyscall-handlers must be careful not to leak sensitive kernel' + information back to user-level. In particular, before returning to + user-level, care needs to be taken to clear any scratch registers + that could contain sensitive information (note that the current + task pointer is not considered sensitive: it's already exposed + through ar.k6). + +The above restrictions may seem draconian, but remember that it's +possible to trade off some of the restrictions by paying a slightly +higher overhead. For example, if an fsyscall-handler could benefit +from the shadow register bank, it could temporarily disable PSR.i and +PSR.ic, switch to bank 0 (bsw.0) and then use the shadow registers as +needed. In other words, following the above rules yields extremely +fast system call execution (while fully preserving system call +semantics), but there is also a lot of flexibility in handling more +complicated cases. + +* Signal handling + +The delivery of (asynchronous) signals must be delayed until fsys-mode +is exited. This is acomplished with the help of the lower-privilege +transfer trap: arch/ia64/kernel/process.c:do_notify_resume_user() +checks whether the interrupted task was in fsys-mode and, if so, sets +PSR.lp and returns immediately. When fsys-mode is exited via the +"br.ret" instruction that lowers the privilege level, a trap will +occur. The trap handler clears PSR.lp again and returns immediately. +The kernel exit path then checks for and delivers any pending signals. + +* PSR Handling + +The "epc" instruction doesn't change the contents of PSR at all. This +is in contrast to a regular interruption, which clears almost all +bits. Because of that, some care needs to be taken to ensure things +work as expected. The following discussion describes how each PSR bit +is handled. + +PSR.be Cleared when entering fsys-mode. A srlz.d instruction is used + to ensure the CPU is in little-endian mode before the first + load/store instruction is executed. PSR.be is normally NOT + restored upon return from an fsys-mode handler. In other + words, user-level code must not rely on PSR.be being preserved + across a system call. +PSR.up Unchanged. +PSR.ac Unchanged. +PSR.mfl Unchanged. Note: fsys-mode handlers must not write-registers! +PSR.mfh Unchanged. Note: fsys-mode handlers must not write-registers! +PSR.ic Unchanged. Note: fsys-mode handlers can clear the bit, if needed. +PSR.i Unchanged. Note: fsys-mode handlers can clear the bit, if needed. +PSR.pk Unchanged. +PSR.dt Unchanged. +PSR.dfl Unchanged. Note: fsys-mode handlers must not write-registers! +PSR.dfh Unchanged. Note: fsys-mode handlers must not write-registers! +PSR.sp Unchanged. +PSR.pp Unchanged. +PSR.di Unchanged. +PSR.si Unchanged. +PSR.db Unchanged. The kernel prevents user-level from setting a hardware + breakpoint that triggers at any privilege level other than 3 (user-mode). +PSR.lp Unchanged. +PSR.tb Lazy redirect. If a taken-branch trap occurs while in + fsys-mode, the trap-handler modifies the saved machine state + such that execution resumes in the gate page at + syscall_via_break(), with privilege level 3. Note: the + taken branch would occur on the branch invoking the + fsyscall-handler, at which point, by definition, a syscall + restart is still safe. If the system call number is invalid, + the fsys-mode handler will return directly to user-level. This + return will trigger a taken-branch trap, but since the trap is + taken _after_ restoring the privilege level, the CPU has already + left fsys-mode, so no special treatment is needed. +PSR.rt Unchanged. +PSR.cpl Cleared to 0. +PSR.is Unchanged (guaranteed to be 0 on entry to the gate page). +PSR.mc Unchanged. +PSR.it Unchanged (guaranteed to be 1). +PSR.id Unchanged. Note: the ia64 linux kernel never sets this bit. +PSR.da Unchanged. Note: the ia64 linux kernel never sets this bit. +PSR.dd Unchanged. Note: the ia64 linux kernel never sets this bit. +PSR.ss Lazy redirect. If set, "epc" will cause a Single Step Trap to + be taken. The trap handler then modifies the saved machine + state such that execution resumes in the gate page at + syscall_via_break(), with privilege level 3. +PSR.ri Unchanged. +PSR.ed Unchanged. Note: This bit could only have an effect if an fsys-mode + handler performed a speculative load that gets NaTted. If so, this + would be the normal & expected behavior, so no special treatment is + needed. +PSR.bn Unchanged. Note: fsys-mode handlers may clear the bit, if needed. + Doing so requires clearing PSR.i and PSR.ic as well. +PSR.ia Unchanged. Note: the ia64 linux kernel never sets this bit. diff -Nru a/Documentation/isdn/HiSax.cert b/Documentation/isdn/HiSax.cert --- a/Documentation/isdn/HiSax.cert Sun Feb 9 21:13:29 2003 +++ b/Documentation/isdn/HiSax.cert Sun Feb 9 21:13:29 2003 @@ -27,7 +27,7 @@ the layer 1. Because all hardware based on these chips are complete ISDN solutions in one chip all cards and USB-TAs using these chips are to be regarded as approved for those tests. Some additional electrical tests -of the layer 1 which are independant of the driver and related to a +of the layer 1 which are independent of the driver and related to a special hardware used will be regarded as approved if at least one solution has been tested including those electrical tests. So if cards or tas have been completely approved for any other os, the approval diff -Nru a/Documentation/kbuild/00-INDEX b/Documentation/kbuild/00-INDEX --- a/Documentation/kbuild/00-INDEX Sun Feb 9 21:13:29 2003 +++ b/Documentation/kbuild/00-INDEX Sun Feb 9 21:13:29 2003 @@ -1,10 +1,10 @@ 00-INDEX - this file: info on the kernel build process -bug-list.txt - - known bugs in kbuild programs commands.txt - overview of kbuild commands kconfig-language.txt - specification of Config Language, the language in Kconfig files +random.txt + - description of generic config targets makefiles.txt - developer information for linux kernel makefiles diff -Nru a/Documentation/kbuild/bug-list.txt b/Documentation/kbuild/bug-list.txt --- a/Documentation/kbuild/bug-list.txt Sun Feb 9 21:13:29 2003 +++ /dev/null Wed Dec 31 16:00:00 1969 @@ -1,22 +0,0 @@ -Bug List -21 January 1999 -Michael Elizabeth Chastain, - -- If a variable has a value of "m" in the previous .config file, - and a type of bool in the Config script, then all the interpreters - get confused. This happens frequently when someone changes a - tristate option to a bool option and people in the field have - .config files with a value of 'm'. For example: CONFIG_PSMOUSE. - -- CONFIG_MODVERSIONS has incorrect dependencies. If you have a - problem building the kernel, and you have CONFIG_MODVERSIONS turned - on, do a 'make dep' followed by 'make clean' before you try anything - else. - -- 'make dep' uses multistage dependencies, so the .hdepend file contains - 'touch' commands. As a result, building a kernel often touches files - in include/linux/*.h. This messes up CVS and other systems which like - to rely on file dates. - -- 'make dep' fails for C files which include other C files, such as - drivers/cdrom/sbpcd2.c. diff -Nru a/Documentation/kbuild/makefiles.txt b/Documentation/kbuild/makefiles.txt --- a/Documentation/kbuild/makefiles.txt Sun Feb 9 21:13:34 2003 +++ b/Documentation/kbuild/makefiles.txt Sun Feb 9 21:13:34 2003 @@ -1,74 +1,76 @@ Linux Kernel Makefiles -2000-September-14 -Michael Elizabeth Chastain, - - - -=== Table of Contents This document describes the Linux kernel Makefiles. - 1 Overview - 2 Who does what - 3 Makefile language - 4 Variables passed down from the top - 5 The structure of an arch Makefile - 5.1 Architecture-specific variables - 5.2 Vmlinux build variables - 5.3 Post-vmlinux goals - 5.4 Mandatory arch-specific goals - 6 The structure of a subdirectory Makefile - 6.1 Comments - 6.2 Goal definitions - 6.3 Adapter section - 6.4 Rules.make section - 6.5 Special rules - 7 Rules.make variables - 7.1 Subdirectories - 7.2 Object file goals - 7.3 Library file goals - 7.4 Loadable module goals - 7.5 Multi-part modules - 7.6 Compilation flags - 7.7 Miscellaneous variables - 8 New-style variables - 8.1 New variables - 8.2 Converting to old-style - 9 Credits +=== Table of Contents + === 1 Overview + === 2 Who does what + === 3 The kbuild Makefiles + --- 3.1 Goal definitions + --- 3.2 Built-in object goals - obj-y + --- 3.3 Loadable module goals - obj-m + --- 3.4 Objects which export symbols - export-objs + --- 3.5 Library file goals - L_TARGET + --- 3.6 Descending down in directories + --- 3.7 Compilation flags + --- 3.8 Command line dependency + --- 3.9 Dependency tracking + --- 3.10 Special Rules + + === 4 Host Program support + --- 4.1 Simple Host Program + --- 4.2 Composite Host Programs + --- 4.3 Defining shared libraries + --- 4.4 Using C++ for host programs + --- 4.5 Controlling compiler options for host programs + --- 4.6 When host programs are actually built + + === 5 Kbuild clean infrastructure + + === 6 Architecture Makefiles + --- 6.1 Set variables to tweak the build to the architecture + --- 6.2 Add prerequisites to prepare: + --- 6.3 List directories to visit when descending + --- 6.4 Architecture specific boot images + --- 6.5 Building non-kbuild targets + --- 6.6 Commands useful for building a boot image + --- 6.7 Custom kbuild commands + + === 7 Kbuild Variables + === 8 Makefile language + === 9 Credits + === 10 TODO === 1 Overview The Makefiles have five parts: - Makefile: the top Makefile. - .config: the kernel configuration file. - arch/*/Makefile: the arch Makefiles. - Subdirectory Makefiles: there are about 300 of these. - Rules.make: the common rules for all subdirectory Makefiles. + Makefile the top Makefile. + .config the kernel configuration file. + arch/$(ARCH)/Makefile the arch Makefile. + scripts/Makefile.* common rules etc. for all kbuild Makefiles. + kbuild Makefiles there are about 500 of these. -The top Makefile reads the .config file, which comes from the -kernel configuration process. +The top Makefile reads the .config file, which comes from the kernel +configuration process. The top Makefile is responsible for building two major products: vmlinux -(the resident kernel image) and modules (any module files). It builds -these goals by recursively descending into the subdirectories of the -kernel source tree. The list of subdirectories which are visited depends -upon the kernel configuration. - -The top Makefile textually includes an arch Makefile with the name -arch/$(ARCH)/Makefile. The arch Makefile supplies architecture-specific -information to the top Makefile. - -Each subdirectory has a Makefile which carries out the commands passed -down from above. The subdirectory Makefile uses information from the -.config file to construct various file lists, and then it textually -includes the common rules in Rules.make. - -Rules.make defines rules which are common to all the subdirectory -Makefiles. It has a public interface in the form of certain variable -lists. It then declares rules based on those lists. +(the resident kernel image) and modules (any module files). +It builds these goals by recursively descending into the subdirectories of +the kernel source tree. +The list of subdirectories which are visited depends upon the kernel +configuration. The top Makefile textually includes an arch Makefile +with the name arch/$(ARCH)/Makefile. The arch Makefile supplies +architecture-specific information to the top Makefile. + +Each subdirectory has a kbuild Makefile which carries out the commands +passed down from above. The kbuild Makefile uses information from the +.config file to construct various file lists used by kbuild to build +any built-in or modular targets. +scripts/Makefile.* contains all the definitions/rules etc. that +are used to build the kernel based on the kbuild makefiles. === 2 Who does what @@ -76,19 +78,19 @@ People have four different relationships with the kernel Makefiles. *Users* are people who build kernels. These people type commands such as -"make menuconfig" or "make bzImage". They usually do not read or edit +"make menuconfig" or "make". They usually do not read or edit any kernel Makefiles (or any other source files). *Normal developers* are people who work on features such as device drivers, file systems, and network protocols. These people need to -maintain the subdirectory Makefiles for the subsystem that they are +maintain the kbuild Makefiles for the subsystem that they are working on. In order to do this effectively, they need some overall knowledge about the kernel Makefiles, plus detailed knowledge about the -public interface for Rules.make. +public interface for kbuild. *Arch developers* are people who work on an entire architecture, such -as sparc or ia64. Arch developers need to know about the arch Makefiles -as well as subdirectory Makefiles. +as sparc or ia64. Arch developers need to know about the arch Makefile +as well as kbuild Makefiles. *Kbuild developers* are people who work on the kernel build system itself. These people need to know about all aspects of the kernel Makefiles. @@ -96,883 +98,895 @@ This document is aimed towards normal developers and arch developers. +=== 3 The kbuild Makefiles -=== 3 Makefile language - -The kernel Makefiles are designed to run with GNU Make. The Makefiles -use only the documented features of GNU Make, but they do use many -GNU extensions. - -GNU Make supports elementary list-processing functions. The kernel -Makefiles use a novel style of list building and manipulation with few -"if" statements. - -GNU Make has two assignment operators, ":=" and "=". ":=" performs -immediate evaluation of the right-hand side and stores an actual string -into the left-hand side. "=" is like a formula definition; it stores the -right-hand side in an unevaluated form and then evaluates this form each -time the left-hand side is used. - -There are some cases where "=" is appropriate. Usually, though, ":=" -is the right choice. - -All of the examples in this document were drawn from actual kernel -sources. The examples have been reformatted (white space changed, lines -split), but are otherwise exactly the same. - - - -=== 4 Variables passed down from the top - -The top Makefile exports the following variables: - - VERSION, PATCHLEVEL, SUBLEVEL, EXTRAVERSION - - These variables define the current kernel version. A few arch - Makefiles actually use these values directly; they should use - $(KERNELRELEASE) instead. - - $(VERSION), $(PATCHLEVEL), and $(SUBLEVEL) define the basic - three-part version number, such as "2", "4", and "0". These three - values are always numeric. - - $(EXTRAVERSION) defines an even tinier sublevel for pre-patches - or additional patches. It is usually some non-numeric string - such as "-pre4", and is often blank. - - KERNELRELEASE - - $(KERNELRELEASE) is a single string such as "2.4.0-pre4", suitable - for constructing installation directory names or showing in - version strings. Some arch Makefiles use it for this purpose. - - ARCH - - This variable defines the target architecture, such as "i386", - "arm", or "sparc". Many subdirectory Makefiles test $(ARCH) - to determine which files to compile. - - By default, the top Makefile sets $(ARCH) to be the same as the - host system system architecture. For a cross build, a user may - override the value of $(ARCH) on the command line: - - make ARCH=m68k ... - - TOPDIR, HPATH - - $(TOPDIR) is the path to the top of the kernel source tree. - Subdirectory Makefiles need this so that they can include - $(TOPDIR)/Rules.make. - - $(HPATH) is equal to $(TOPDIR)/include. A few arch Makefiles - need to use this to do special things using include files. - - SUBDIRS - - $(SUBDIRS) is a list of directories which the top Makefile - enters in order to build either vmlinux or modules. The actual - directories in $(SUBDIRS) depend on the kernel configuration. - The top Makefile defines this variable, and the arch Makefile - extends it. - - HEAD, CORE_FILES, NETWORKS, DRIVERS, LIBS - LINKFLAGS - - $(HEAD), $(CORE_FILES), $(NETWORKS), $(DRIVERS), and $(LIBS) - specify lists of object files and libraries to be linked into - vmlinux. - - The files in $(HEAD) are linked first in vmlinux. - - $(LINKFLAGS) specifies the flags to build vmlinux. - - The top Makefile and the arch Makefile jointly define these - variables. The top Makefile defines $(CORE_FILES), $(NETWORKS), - $(DRIVERS), and $(LIBS). The arch Makefile defines $(HEAD) - and $(LINKFLAGS), and extends $(CORE_FILES) and $(LIBS). - - Note: there are more variables here than necessary. $(NETWORKS), - $(DRIVERS), and even $(LIBS) could be subsumed into $(CORE_FILES). - - CPP, CC, AS, LD, AR, NM, STRIP, OBJCOPY, OBJDUMP - CPPFLAGS, CFLAGS, CFLAGS_KERNEL, MODFLAGS, AFLAGS, LDFLAGS - PERL - GENKSYMS - - These variables specify the commands and flags that Rules.make - uses to build goal files from source files. - - $(CFLAGS_KERNEL) contains extra C compiler flags used to compile - resident kernel code. - - $(MODFLAGS) contains extra C compiler flags used to compile code - for loadable kernel modules. In the future, this flag may be - renamed to the more regular name $(CFLAGS_MODULE). - - $(AFLAGS) contains assembler flags. - - $(GENKSYMS) contains the command used to generate kernel symbol - signatures when CONFIG_MODVERSIONS is enabled. The genksyms - command comes from the module-init-tools package. - - CROSS_COMPILE - - This variable is a prefix path for other variables such as $(CC), - $(AS), and $(LD). The arch Makefiles sometimes use and set this - variable explicitly. Subdirectory Makefiles don't need to worry - about it. - - The user may override $(CROSS_COMPILE) on the command line if - desired. - - HOSTCC, HOSTCFLAGS - - These variables define the C compiler and C compiler flags to - be used for compiling host side programs. These are separate - variables because the target architecture can be different from - the host architecture. - - If your Makefile compiles and runs a program that is executed - during the course of building the kernel, then it should use - $(HOSTCC) and $(HOSTCFLAGS). +Most Makefiles within the kernel are kbuild Makefiles that use the +kbuild infrastructure. This chapter introduce the syntax used in the +kbuild makefiles. - For example, the subdirectory drivers/pci has a helper program - named gen-devlist.c. This program reads a list of PCI ID's and - generates C code in the output files classlist.h and devlist.h. +Section 3.1 "Goal definitions" is a quick intro, further chapters provide +more details, with real examples. - Suppose that a user has an i386 computer and wants to build a - kernel for an ia64 machine. Then the user would use an ia64 - cross-compiler for most of the compilation, but would use a - native i386 host compiler to compile drivers/pci/gen-devlist.c. +--- 3.1 Goal definitions - For another example, kbuild helper programs such as - scripts/mkdep.c and scripts/lxdialog/*.c are compiled with - $(HOSTCC) rather than $(CC). + Goal definitions are the main part (heart) of the kbuild Makefile. + These lines define the files to be built, any special compilation + options, and any subdirectories to be entered recursively. - ROOT_DEV, SVGA_MODE, RAMDISK + The most simple kbuild makefile contains one line: - End users edit these variables to specify certain information - about the configuration of their kernel. These variables - are ancient! They are also specific to the i386 architecture. - They really should be replaced with CONFIG_* options. - - MAKEBOOT - - This variable is defined and used only inside the main arch - Makefiles. The top Makefile should not export it. - - INSTALL_PATH - - This variable defines a place for the arch Makefiles to install - the resident kernel image and System.map file. + Example: + obj-y += foo.o - INSTALL_MOD_PATH, MODLIB + This tell kbuild that there is one object in that directory named + foo.o. foo.o will be build from foo.c or foo.S. - $(INSTALL_MOD_PATH) specifies a prefix to $(MODLIB) for module - installation. This variable is not defined in the Makefile but - may be passed in by the user if desired. + If foo.o shall be built as a module, the variable obj-m is used. + Therefore the following pattern is often used: - $(MODLIB) specifies the directory for module installation. - The top Makefile defines $(MODLIB) to - $(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE). The user may - override this value on the command line if desired. + Example: + obj-$(CONFIG_FOO) += foo.o - CONFIG_SHELL + $(CONFIG_FOO) evaluates to either y (for built-in) or m (for module). + If CONFIG_FOO is neither y nor m, then the file will not be compiled + nor linked. - This variable is private between Makefile and Rules.make. - Arch makefiles and subdirectory Makefiles should never use this. +--- 3.2 Built-in object goals - obj-y - MODVERFILE + The kbuild Makefile specifies object files for vmlinux + in the lists $(obj-y). These lists depend on the kernel + configuration. - An internal variable. This doesn't need to be exported, as it - is never used outside of the top Makefile. + Kbuild compiles all the $(obj-y) files. It then calls + "$(LD) -r" to merge these files into one built-in.o file. + built-in.o is later linked into vmlinux by the parent Makefile. - MAKE, MAKEFILES + The order of files in $(obj-y) is significant. Duplicates in + the lists are allowed: the first instance will be linked into + built-in.o and succeeding instances will be ignored. - Some variables internal to GNU Make. + Link order is significant, because certain functions + (module_init() / __initcall) will be called during boot in the + order they appear. So keep in mind that changing the link + order may e.g. change the order in which your SCSI + controllers are detected, and thus you disks are renumbered. - $(MAKEFILES) in particular is used to force the arch Makefiles - and subdirectory Makefiles to read $(TOPDIR)/.config without - including it explicitly. (This was an implementational hack - and could be fixed). + Example: + #drivers/isdn/i4l/Makefile + # Makefile for the kernel ISDN subsystem and device drivers. + # Each configuration option enables a list of files. + obj-$(CONFIG_ISDN) += isdn.o + obj-$(CONFIG_ISDN_PPP_BSDCOMP) += isdn_bsdcomp.o +--- 3.3 Loadable module goals - obj-m + $(obj-m) specify object files which are built as loadable + kernel modules. -=== 5 The structure of an arch Makefile + A module may be built from one source file or several source + files. In the case of one source file, the kbuild makefile + simply adds the file to $(obj-m). + Example: + #drivers/isdn/i4l/Makefile + obj-$(CONFIG_ISDN_PPP_BSDCOMP) += isdn_bsdcomp.o + Note: In this example $(CONFIG_ISDN_PPP_BSDCOMP) evaluates to 'm' ---- 5.1 Architecture-specific variables + If a kernel module is built from several source files, you specify + that you want to build a module in the same way as above. -The top Makefile includes one arch Makefile file, arch/$(ARCH)/Makefile. -This section describes the functions of the arch Makefile. + Kbuild needs to know which the parts that you want to build your + module from, so you have to tell it by setting an + $(-objs) variable. -An arch Makefile extends some of the top Makefile's variables with -architecture-specific values. + Example: + #drivers/isdn/i4l/Makefile + obj-$(CONFIG_ISDN) += isdn.o + isdn-objs := isdn_net_lib.o isdn_v110.o isdn_common.o - SUBDIRS + In this example, the module name will be isdn.o. Kbuild will + compile the objects listed in $(isdn-objs) and then run + "$(LD) -r" on the list of these files to generate isdn.o. - The top Makefile defines $(SUBDIRS). The arch Makefile extends - $(SUBDIRS) with a list of architecture-specific directories. + Kbuild recognises objects used for composite objects by the suffix + -objs, and the suffix -y. This allows the Makefiles to use + the value of a CONFIG_ symbol to determine if an object is part + of a composite object. Example: + #fs/ext2/Makefile + obj-$(CONFIG_EXT2_FS) += ext2.o + ext2-y := balloc.o bitmap.o + ext2-$(CONFIG_EXT2_FS_XATTR) += xattr.o + + In this example xattr.o is only part of the composite object + ext2.o, if $(CONFIG_EXT2_FS_XATTR) evaluates to 'y'. - # arch/alpha/Makefile - - SUBDIRS := $(SUBDIRS) arch/alpha/kernel arch/alpha/mm \ - arch/alpha/lib arch/alpha/math-emu - - This list may depend on the configuration: + Note: Of course, when you are building objects into the kernel, + the syntax above will also work. So, if you have CONFIG_EXT2_FS=y, + kbuild will build an ext2.o file for you out of the individual + parts and then link this into built-in.o, as you would expect. - # arch/arm/Makefile +--- 3.4 Objects which export symbols - export-objs - ifeq ($(CONFIG_ARCH_ACORN),y) - SUBDIRS += drivers/acorn - ... - endif + When using loadable modules, not every global symbol in the + kernel / other modules is automatically available, only those + explicitly exported are available for your module. - CPP, CC, AS, LD, AR, NM, STRIP, OBJCOPY, OBJDUMP - CPPFLAGS, CFLAGS, CFLAGS_KERNEL, MODFLAGS, AFLAGS, LDFLAGS + To make a symbol available for use in modules, to "export" it, + use the EXPORT_SYMBOL() directive in your source. In + addition, you need to list all object files which export symbols + (i.e. their source contains an EXPORT_SYMBOL() directive) in the + Makefile variable $(export-objs). - The top Makefile defines these variables, and the arch Makefile - extends them. + Example: + #drivers/isdn/i4l/Makefile + # Objects that export symbols. + export-objs := isdn_common.o - Many arch Makefiles dynamically run the target C compiler to - probe supported options: + since isdn_common.c contains - # arch/i386/Makefile + EXPORT_SYMBOL(register_isdn); - # prevent gcc from keeping the stack 16 byte aligned - CFLAGS += $(shell if $(CC) -mpreferred-stack-boundary=2 \ - -S -o /dev/null -xc /dev/null >/dev/null 2>&1; \ - then echo "-mpreferred-stack-boundary=2"; fi) + which makes the function register_isdn available to + low-level ISDN drivers. + There exist a EXPORT_SYMBOL_GPL() variant with similar functionality, + but more restrictive with what may use that symbol. The requirement + to list the .o file in export-objs is the same. - And, of course, $(CFLAGS) can depend on the configuration: +--- 3.5 Library file goals - L_TARGET - # arch/i386/Makefile + Instead of building a built-in.o file, you may also + build an archive which again contains objects listed in $(obj-y). + This is normally not necessary and only used in lib/ and + arch/$(ARCH)/lib directories. + Only the name lib.a is allowed. - ifdef CONFIG_M386 - CFLAGS += -march=i386 - endif + Example: + #arch/i386/lib/Makefile + L_TARGET := lib.a + obj-y := checksum.o delay.o - ifdef CONFIG_M486 - CFLAGS += -march=i486 - endif + This will create a library lib.a based on checksum.o and delay.o. - ifdef CONFIG_M586 - CFLAGS += -march=i586 - endif +--- 3.6 Descending down in directories - Some arch Makefiles redefine the compilation commands in order - to add architecture-specific flags: + A Makefile is only responsible for building objects in its own + directory. Files in subdirectories should be taken care of by + Makefiles in these subdirs. The build system will automatically + invoke make recursively in subdirectories, provided you let it know of + them. - # arch/s390/Makefile + To do so obj-y and obj-m are used. + ext2 lives in a separate directory, and the Makefile present in fs/ + tells kbuild to descend down using the following assignment. - LD=$(CROSS_COMPILE)ld -m elf_s390 - OBJCOPY=$(CROSS_COMPILE)objcopy -O binary -R .note -R .comment -S + Example: + #fs/Makefile + obj-$(CONfIG_EXT2_FS) += ext2/ + If CONFIG_EXT2_FS is set to either 'y' (built-in) or 'm' (modular) + the corresponding obj- variable will be set, and kbuild will descend + down in the ext2 directory. + Kbuild only uses this information to decide that it needs to visit + the directory, it is the Makefile in the subdirectory that + specifies what is modules and what is built-in. + It is good practice to use a CONFIG_ variable when assigning directory + names. This allows kbuild to totally skip the directory if the + corresponding CONFIG_ option is neither 'y' nor 'm'. ---- 5.2 Vmlinux build variables +--- 3.7 Compilation flags -An arch Makefile cooperates with the top Makefile to define variables -which specify how to build the vmlinux file. Note that there is no -corresponding arch-specific section for modules; the module-building -machinery is all architecture-independent. + EXTRA_CFLAGS, EXTRA_AFLAGS, EXTRA_LDFLAGS, EXTRA_ARFLAGS - HEAD, CORE_FILES, LIBS - LINKFLAGS + All the EXTRA_ variables apply only to the kbuild makefile + where they are assigned. The EXTRA_ variables apply to all + commands executed in the kbuild makefile. - The top Makefile defines the architecture-independent core of - thse variables, and the arch Makefile extends them. Note that the - arch Makefile defines (not just extends) $(HEAD) and $(LINKFLAGS). + $(EXTRA_CFLAGS) specifies options for compiling C files with + $(CC). Example: - - # arch/m68k/Makefile - - ifndef CONFIG_SUN3 - LINKFLAGS = -T $(TOPDIR)/arch/m68k/vmlinux.lds - else - LINKFLAGS = -T $(TOPDIR)/arch/m68k/vmlinux-sun3.lds -N - endif - - ... - - ifndef CONFIG_SUN3 - HEAD := arch/m68k/kernel/head.o - else - HEAD := arch/m68k/kernel/sun3-head.o + # drivers/sound/emu10k1/Makefile + EXTRA_CFLAGS += -I$(obj) + ifdef DEBUG + EXTRA_CFLAGS += -DEMU10K1_DEBUG endif - SUBDIRS += arch/m68k/kernel arch/m68k/mm arch/m68k/lib - CORE_FILES := arch/m68k/kernel/kernel.o arch/m68k/mm/mm.o $(CORE_FILES) - LIBS += arch/m68k/lib/lib.a + This variable is necessary because the top Makefile owns the + variable $(CFLAGS) and uses it for compilation flags for the + entire tree. + $(EXTRA_AFLAGS) is a similar string for per-directory options + when compiling assembly language source. ---- 5.3 Post-vmlinux goals + Example: + #arch/x86_64/kernel/Makefile + EXTRA_AFLAGS := -traditional -An arch Makefile specifies goals that take the vmlinux file, compress -it, wrap it in bootstrapping code, and copy the resulting files somewhere. -This includes various kinds of installation commands. -These post-vmlinux goals are not standardized across different -architectures. Here is a list of these goals and the architectures -that support each of them (as of kernel version 2.4.0-test6-pre5): + $(EXTRA_LDFLAGS) and $(EXTRA_ARFLAGS) are similar strings for + per-directory options to $(LD) and $(AR). - balo mips - bootimage alpha - bootpfile alpha, ia64 - bzImage i386, m68k - bzdisk i386 - bzlilo i386 - compressed i386, m68k, mips, mips64, sh - dasdfmt s390 - Image arm - image s390 - install arm, i386 - lilo m68k - msb alpha, ia64 - my-special-boot alpha, ia64 - orionboot mips - rawboot alpha - silo s390 - srmboot alpha - tftpboot.img sparc, sparc64 - vmlinux.64 mips64 - vmlinux.aout sparc64 - zImage arm, i386, m68k, mips, mips64, ppc, sh - zImage.initrd ppc - zdisk i386, mips, mips64, sh - zinstall arm - zlilo i386 - znetboot.initrd ppc + Example: + #arch/m68k/fpsp040/Makefile + EXTRA_LDFLAGS := -x + CFLAGS_$@, AFLAGS_$@ + CFLAGS_$@ and AFLAGS_$@ only apply to commands in current + kbuild makefile. ---- 5.4 Mandatory arch-specific goals + $(CFLAGS_$@) specifies per-file options for $(CC). The $@ + part has a literal value which specifies the file that it is for. -An arch Makefile must define the following arch-specific goals. -These goals provide arch-specific actions for the corresponding goals -in the top Makefile: + Example: + # drivers/scsi/Makefile + CFLAGS_aha152x.o = -DAHA152X_STAT -DAUTOCONF + CFLAGS_gdth.o = # -DDEBUG_GDTH=2 -D__SERIAL__ -D__COM2__ \ + -DGDTH_STATISTICS + CFLAGS_seagate.o = -DARBITRATE -DPARITY -DSEAGATE_USE_ASM - archclean clean - archdep dep - archmrproper mrproper + These three lines specify compilation flags for aha152x.o, + gdth.o, and seagate.o + $(AFLAGS_$@) is a similar feature for source files in assembly + languages. + Example: + # arch/arm/kernel/Makefile + AFLAGS_head-armv.o := -DTEXTADDR=$(TEXTADDR) -traditional + AFLAGS_head-armo.o := -DTEXTADDR=$(TEXTADDR) -traditional -=== 6 The structure of a subdirectory Makefile +--- 3.9 Dependency tracking -A subdirectory Makefile has four sections. + Kbuild track dependencies on the following: + 1) All prerequisite files (both *.c and *.h) + 2) CONFIG_ options used in all prerequisite files + 3) Command-line used to compile target + Thus, if you change an option to $(CC) all affected files will + be re-compiled. +--- 3.10 Special Rules ---- 6.1 Comments + Special rules are used when the kbuild infrastructure does + not provide the required support. A typical example is + header files generated during the build process. + Another example is the architecture specific Makefiles which + needs special rules to prepare boot images etc. -The first section is a comment header. Historically, many anonymous -people have edited kernel Makefiles without leaving any change -histories in the header; comments from them would have been valuable. + Special rules are written as normal Make rules. + Kbuild is not executing in the directory where the Makefile is + located, so all special rules shall provide a relative + path to prerequisite files and target files. + Two variables are used when defining special rules: + $(src) + $(src) is a relative path which points to the directory + where the Makefile is located. Always use $(src) when + referring to files located in the src tree. ---- 6.2 Goal definitions + $(obj) + $(obj) is a relative path which points to the directory + where the target is saved. Always use $(obj) when + referring to generated files. -The second section is a bunch of definitions that are the heart of the -subdirectory Makefile. These lines define the files to be built, any -special compilation options, and any subdirectories to be recursively -entered. The declarations in these lines depend heavily on the kernel -configuration variables (CONFIG_* symbols). + Example: + #drivers/scsi/Makefile + $(obj)/53c8xx_d.h: $(src)/53c7,8xx.scr $(src)/script_asm.pl + $(CPP) -DCHIP=810 - < $< | ... $(src)/script_asm.pl -The second section looks like this: + This is a special rule, following the normal syntax + required by make. + The target file depends on two prerequisite files. References + to the target file are prefixed with $(obj), references + to prerequisites are referenced with $(src) (because they are not + generated files). - # drivers/block/Makefile - obj-$(CONFIG_MAC_FLOPPY) += swim3.o - obj-$(CONFIG_BLK_DEV_FD) += floppy.o - obj-$(CONFIG_AMIGA_FLOPPY) += amiflop.o - obj-$(CONFIG_ATARI_FLOPPY) += ataflop.o +=== 4 Host Program support ---- 6.4 Rules.make section +Kbuild supports building executables on the host for use during the +compilation stage. +Two steps are required in order to use a host executable. -The third section is the single line: +The first step is to tell kbuild that a host program exists. This is +done utilising the variable host-prog. - include $(TOPDIR)/Rules.make +The second step is to add an explicit dependency to the executable. +This can be done in two ways. Either add the dependency in a rule, +or utilise the variable build-targets. +Both possibilities are described in the following. +--- 4.1 Simple Host Program + In some cases there is a need to compile and run a program on the + computer where the build is running. + The following line tells kbuild that the program bin2hex shall be + built on the build host. ---- 6.5 Special rules + Example: + host-progs := bin2hex -The fourth section contains any special Makefile rules needed that are -not available through the common rules in Rules.make. + Kbuild assumes in the above example that bin2hex is made from a single + c-source file named bin2hex.c located in the same directory as + the Makefile. + +--- 4.2 Composite Host Programs + Host programs can be made up based on composite objects. + The syntax used to define composite objetcs for host programs is + similar to the syntax used for kernel objects. + $(-objs) list all objects used to link the final + executable. + Example: + #scripts/lxdialog/Makefile + host-progs := lxdialog + lxdialog-objs := checklist.o lxdialog.o -=== 7 Rules.make variables + Objects with extension .o are compiled from the corresponding .c + files. In the above example checklist.c is compiled to checklist.o + and lxdialog.c is compiled to lxdialog.o. + Finally the two .o files are linked to the executable, lxdialog. + Note: The syntax -y is not permitted for host-programs. -The public interface of Rules.make consists of the following variables: +--- 4.3 Defining shared libraries + + Objects with extension .so are considered shared libraries, and + will be compiled as position independent objects. + Kbuild provides support for shared libraries, but the usage + shall be restricted. + In the following example the libkconfig.so shared library is used + to link the executable conf. + Example: + #scripts/kconfig/Makefile + host-progs := conf + conf-objs := conf.o libkconfig.so + libkconfig-objs := expr.o type.o + + Shared libraries always require a corresponding -objs line, and + in the example above the shared library libkconfig is composed by + the two objects expr.o and type.o. + expr.o and type.o will be built as position independent code and + linked as a shared library libkconfig.so. C++ is not supported for + shared libraries. +--- 4.4 Using C++ for host programs ---- 7.1 Subdirectories + kbuild offers support for host programs written in C++. This was + introduced solely to support kconfig, and is not recommended + for general use. -A Makefile is only responsible for building objects in its own -directory. Files in subdirectories should be taken care of by -Makefiles in the these subdirs. The build system will automatically -invoke make recursively in subdirectories, provided you let it know of -them. + Example: + #scripts/kconfig/Makefile + host-progs := qconf + qconf-cxxobjs := qconf.o -To do so, use the subdir-{y,m,n,} variables: + In the example above the executable is composed of the C++ file + qconf.cc - identified by $(qconf-cxxobjs). + + If qconf is composed by a mixture of .c and .cc files, then an + additional line can be used to identify this. - subdir-$(CONFIG_ISDN) += i4l - subdir-$(CONFIG_ISDN_CAPI) += capi + Example: + #scripts/kconfig/Makefile + host-progs := qconf + qconf-cxxobjs := qconf.o + qconf-objs := check.o + +--- 4.5 Controlling compiler options for host programs -When building the actual kernel, i.e. vmlinux ("make -{vmlinux,bzImage,...}"), make will recursively descend into -directories listed in $(subdir-y). + When compiling host programs, it is possible to set specific flags. + The programs will always be compiled utilising $(HOSTCC) passed + the options specified in $(HOSTCFLAGS). + To set flags that will take effect for all host programs created + in that Makefile use the variable HOST_EXTRACFLAGS. -When building modules ("make modules"), make will recursively descend -into directories listed in $(subdir-m). + Example: + #scripts/lxdialog/Makefile + HOST_EXTRACFLAGS += -I/usr/include/ncurses + + To set specific flags for a single file the following construction + is used: -When building the dependencies ("make dep") make needs to visit every -subdir, so it'll descend into every directory listed in -$(subdir-y), $(subdir-m), $(subdir-n), $(subdir-). + Example: + #arch/ppc64/boot/Makefile + HOSTCFLAGS_piggyback.o := -DKERNELBASE=$(KERNELBASE) + + It is also possible to specify additional options to the linker. + + Example: + #scripts/kconfig/Makefile + HOSTLOADLIBES_qconf := -L$(QTDIR)/lib -You may encounter the case where a config option may be set to "y", but -you still want to possibly build modules in that subdirectory. + When linking qconf it will be passed the extra option "-L$(QTDIR)/lib". + +--- 4.6 When host programs are actually built -For example, drivers/isdn/capi/Makefile has + Kbuild will only build host-programs when they are referenced + as a prerequisite. + This is possible in two ways: - obj-$(CONFIG_ISDN_CAPI) += kernelcapi.o capiutil.o - obj-$(CONFIG_ISDN_CAPI_CAPI20) += capi.o + (1) List the prerequisite explicitly in a special rule. -where it's possible that CONFIG_ISDN_CAPI=y, but -CONFIG_ISDN_CAPI_CAPI20=m. + Example: + #drivers/pci/Makefile + host-progs := gen-devlist + $(obj)/devlist.h: $(src)/pci.ids $(obj)/gen-devlist + ( cd $(obj); ./gen-devlist ) < $< -This is expressed by the following construct in the parent Makefile -drivers/isdn/Makefile: + The target $(obj)/devlist.h will not be built before + $(obj)/gen-devlist is updated. Note that references to + the host programs in special rules must be prefixed with $(obj). - mod-subdirs := i4l hisax capi eicon - subdir-$(CONFIG_ISDN_CAPI) += capi + (2) Use $(build-targets) + When there is no suitable special rule, and the host program + shall be built when a makefile is entered, the $(build-targets) + variable shall be used. -Having a subdir ("capi") listed in the variable $(mod-subdirs) will -make the build system enter the specified subdirectory during "make -modules" also, even though the subdir ("capi") is listed only in -$(subdir-y), not $(subdir-m). + Example: + #scripts/lxdialog/Makefile + host-progs := lxdialog + build-targets := $(host-progs) + This will tell kbuild to build lxdialog even if not referenced in + any rule. ---- 7.2 Object file goals +=== 5 Kbuild clean infrastructure - O_TARGET, obj-y +"make clean" deletes most generated files in the src tree where the kernel +is compiled. This includes generated files such as host programs. +Kbuild knows targets listed in $(host-progs) and $(EXTRA_TARGETS) and +they are all deleted during "make clean". +Files matching the patterns "*.[oas]", "*.ko", plus some additional files +generated by kbuild are deleted all over the kernel src tree when +"make clean" is executed. - The subdirectory Makefile specifies object files for vmlinux - in the lists $(obj-y). These lists depend on the kernel - configuration. +Additional files can be specified by means of $(clean-files). - Rules.make compiles all the $(obj-y) files. It then calls - "$(LD) -r" to merge these files into one .o file with the name - $(O_TARGET). This $(O_TARGET) is later linked into vmlinux by - a parent Makefile. + Example: + #drivers/pci/Makefile + clean-files := devlist.h classlist.h - The order of files in $(obj-y) is significant. Duplicates in - the lists are allowed: the first instance will be linked into - $(O_TARGET) and succeeding instances will be ignored. +When executing "make clean", the two files "devlist.h classlist.h" will +be deleted. Kbuild knows that files specified by $(clean-files) are +located in the same directory as the makefile. - Link order is significant, because certain functions - (module_init() / __initcall) will be called during boot in the - order they appear. So keep in mind that changing the link - order may e.g. change the order in which your SCSI - controllers are detected, and thus you disks are renumbered. +Usually kbuild descends down in subdirectories due to "obj-* := dir/", +but in the architecture makefiles where the kbuild infrastructure +is not sufficent this sometimes needs to be explicit. Example: + #arch/i386/boot/Makefile + subdir- := compressed/ - # Makefile for the kernel ISDN subsystem and device drivers. - - # The target object and module list name. - - O_TARGET := vmlinux-obj.o +The above assignment instructs kbuild to descend down in the +directory compressed/ when "make clean" is executed. - # Each configuration option enables a list of files. +To support the clean infrastructure in the Makefiles that builds the +final bootimage there is an optional target named archclean: - obj-$(CONFIG_ISDN) += isdn.o - obj-$(CONFIG_ISDN_PPP_BSDCOMP) += isdn_bsdcomp.o + Example: + #arch/i386/Makefile + archclean: + $(Q)$(MAKE) $(clean)=arch/i386/boot - # The global Rules.make. +When "make clean" is executed, make will descend down in arch/i386/boot, +and clean as usual. The Makefile located in arch/i386/boot/ may use +the subdir- trick to descend further down. - include $(TOPDIR)/Rules.make +Note 1: arch/$(ARCH)/Makefile cannot use "subdir-", because that file is +included in the top level makefile, and the kbuild infrastructure +is not operational at that point. ---- 7.3 Library file goals +Note 2: All directories listed in core-y, libs-y, drivers-y and net-y will +be visited during "make clean". - L_TARGET +=== 6 Architecture Makefiles - Instead of building an O_TARGET object file, you may also - build an archive which again contains objects listed in - $(obj-y). This is normally not necessary and only used in - the lib, arch/$(ARCH)/lib directories. +The top level Makefile sets up the environment and does the preparation, +before starting to descend down in the individual directories. +The top level makefile contains the generic part, whereas the +arch/$(ARCH)/Makefile contains what is required to set-up kbuild +to the said architecture. +To do so arch/$(ARCH)/Makefile sets a number of variables, and defines +a few targets. +When kbuild executes the following steps are followed (roughly): +1) Configuration of the kernel => produced .config +2) Store kernel version in include/linux/version.h +3) Symlink include/asm to include/asm-$(ARCH) +4) Updating all other prerequisites to the target prepare: + - Additional prerequisites are specified in arch/$(ARCH)/Makefile +5) Recursively descend down in all directories listed in + init-* core* drivers-* net-* libs-* and build all targets. + - The value of the above variables are extended in arch/$(ARCH)/Makefile. +6) All object files are then linked and the resulting file vmlinux is + located at the root of the src tree. + The very first objects linked are listed in head-y, assigned by + arch/$(ARCH)/Makefile. +7) Finally the architecture specific part does any required post processing + and builds the final bootimage. + - This includes building boot records + - Preparing initrd images and the like ---- 7.4 Loadable module goals - obj-m +--- 6.1 Set variables to tweak the build to the architecture - $(obj-m) specify object files which are built as loadable - kernel modules. + LDFLAGS Generic $(LD) options - A module may be built from one source file or several source - files. In the case of one source file, the subdirectory - Makefile simply adds the file to $(obj-m) + Flags used for all invocations of the linker. + Often specifying the emulation is sufficient. Example: + #arch/s390/Makefile + LDFLAGS := -m elf_s390 + Note: EXTRA_LDFLAGS and LDFLAGS_$@ can be used to further customise + the flags used. See chapter 7. + + LDFLAGS_MODULE Options for $(LD) when linking modules - obj-$(CONFIG_ISDN_PPP_BSDCOMP) += isdn_bsdcomp.o + LDFLAGS_MODULE is used to set specific flags for $(LD) when + linking the .ko files used for modules. + Default is "-r", for relocatable output. - If a kernel module is built from several source files, you specify - that you want to build a module in the same way as above. + LDFLAGS_vmlinux Options for $(LD) when linking vmlinux - However, the build system of course needs to know which the parts - are that you want to build your module of, so you have to tell it - by setting an $(-objs) variable. + LDFLAGS_vmlinux is used to specify additional flags to pass to + the linker when linking the final vmlinux. + LDFLAGS_vmlinux uses the LDFLAGS_$@ support. Example: + #arch/i386/Makefile + LDFLAGS_vmlinux := -e stext - obj-$(CONFIG_ISDN) += isdn.o - - isdn-objs := isdn_net.o isdn_tty.o isdn_v110.o isdn_common.o - - In this example, the module name will be isdn.o. Rules.make - will compile the objects listed in $(isdn-objs) and then run - "$(LD) -r" on the list of these files to generate isdn.o - - Note: Of course, when you are building objects into the kernel, - the syntax above will also work. So, if you have CONFIG_ISDN=y, - the build system will build an isdn.o for you out of the individual - parts and then link this into the $(O_TARGET), as you'd expect. - + LDFLAGS_BLOB Options for $(LD) when linking the initramfs blob ---- 7.5 Objects which export symbols - - export-objs + The image used for initramfs is made during the build process. + LDFLAGS_BLOB is used to specify additional flags to be used when + creating the initramfs_data.o file. + Example: + #arch/i386/Makefile + LDFLAGS_BLOB := --format binary --oformat elf32-i386 - When using loadable modules, not every global symbol in the - kernel / other modules is automatically available, only those - explicitly exported are available for your module. + OBJCOPYFLAGS objcopy flags - To make a symbol available for use in modules, to "export" it, - use the EXPORT_SYMBOL() directive in your source. In - addition, you need to list all object files which export symbols - (i.e. their source contains an EXPORT_SYMBOL() directive) in the - Makefile variable $(export-objs). + When $(call if_changed,objcopy) is used to translate a .o file, + then the flags specified in OBJCOPYFLAGS will be used. + $(call if_changed,objcopy) is often used to generate raw binaries on + vmlinux. Example: + #arch/s390/Makefile + OBJCOPYFLAGS := -O binary - # Objects that export symbols. + #arch/s390/boot/Makefile + $(obj)/image: vmlinux FORCE + $(call if_changed,objcopy) - export-objs := isdn_common.o + In this example the binary $(obj)/image is a binary version of + vmlinux. The usage of $(call if_changed,xxx) will be described later. - since isdn_common.c contains + AFLAGS $(AS) assembler flags - EXPORT_SYMBOL(register_isdn); + Default value - see top level Makefile + Append or modify as required per architecture. - which makes the function register_isdn available to - low-level ISDN drivers. - + Example: + #arch/sparc64/Makefile + AFLAGS += -m64 -mcpu=ultrasparc ---- 7.6 Compilation flags + CFLAGS $(CC) compiler flags - EXTRA_CFLAGS, EXTRA_AFLAGS, EXTRA_LDFLAGS, EXTRA_ARFLAGS + Default value - see top level Makefile + Append or modify as required per architecture. - $(EXTRA_CFLAGS) specifies options for compiling C files with - $(CC). The options in this variable apply to all $(CC) commands - for files in the current directory. + Often the CFLAGS variable depends on the configuration. Example: + #arch/i386/Makefile + cflags-$(CONFIG_M386) += -march=i386 + CFLAGS += $(cflags-y) - # drivers/sound/emu10k1/Makefile - EXTRA_CFLAGS += -I. - ifdef DEBUG - EXTRA_CFLAGS += -DEMU10K1_DEBUG - endif + Many arch Makefiles dynamically run the target C compiler to + probe supported options: - $(EXTRA_CFLAGS) does not apply to subdirectories of the current - directory. Also, it does not apply to files compiled with - $(HOSTCC). + #arch/i386/Makefile + check_gcc = $(shell if $(CC) $(1) -S -o /dev/null -xc \ + /dev/null\ > /dev/null 2>&1; then echo "$(1)"; \ + else echo "$(2)"; fi) + cflags-$(CONFIG_MCYRIXIII) += $(call check_gcc,\ + -march=c3,-march=i486) - This variable is necessary because the top Makefile owns the - variable $(CFLAGS) and uses it for compilation flags for the - entire tree. + CFLAGS += $(cflags-y) - $(EXTRA_AFLAGS) is a similar string for per-directory options - when compiling assembly language source. + The above examples both utilise the trick that a config option expands + to 'y' when selected. - Example: at the time of writing, there were no examples of - $(EXTRA_AFLAGS) in the kernel corpus. + CFLAGS_KERNEL $(CC) options specific for built-in - $(EXTRA_LDFLAGS) and $(EXTRA_ARFLAGS) are similar strings for - per-directory options to $(LD) and $(AR). + $(CFLAGS_KERNEL) contains extra C compiler flags used to compile + resident kernel code. - Example: at the time of writing, there were no examples of - $(EXTRA_LDFLAGS) or $(EXTRA_ARFLAGS) in the kernel corpus. + CFLAGS_MODULE $(CC) options specific for modules - CFLAGS_$@, AFLAGS_$@ + $(CFLAGS_MODULE) contains extra C compiler flags used to compile code + for loadable kernel modules. - $(CFLAGS_$@) specifies per-file options for $(CC). The $@ - part has a literal value which specifies the file that it's for. + +--- 6.2 Add prerequisites to prepare: - Example: + The prepare: rule is used to list prerequisites that needs to be + built before starting to descend down in the subdirectories. + This is usual header files containing assembler constants. - # drivers/scsi/Makefile - CFLAGS_aha152x.o = -DAHA152X_STAT -DAUTOCONF - CFLAGS_gdth.o = # -DDEBUG_GDTH=2 -D__SERIAL__ -D__COM2__ \ - -DGDTH_STATISTICS - CFLAGS_seagate.o = -DARBITRATE -DPARITY -DSEAGATE_USE_ASM + Example: + #arch/s390/Makefile + prepare: include/asm-$(ARCH)/offsets.h - These three lines specify compilation flags for aha152x.o, - gdth.o, and seagate.o + In this example the file include/asm-$(ARCH)/offsets.h will + be built before descending down in the subdirectories. + See also chapter XXX-TODO that describe how kbuild supports + generating offset header files. - $(AFLAGS_$@) is a similar feature for source files in assembly - languages. - Example: +--- 6.3 List directories to visit when descending - # arch/arm/kernel/Makefile - AFLAGS_head-armv.o := -DTEXTADDR=$(TEXTADDR) -traditional - AFLAGS_head-armo.o := -DTEXTADDR=$(TEXTADDR) -traditional + An arch Makefile cooperates with the top Makefile to define variables + which specify how to build the vmlinux file. Note that there is no + corresponding arch-specific section for modules; the module-building + machinery is all architecture-independent. - Rules.make has a feature where an object file depends on the - value of $(CFLAGS_$@) that was used to compile it. (It also - depends on the values of $(CFLAGS) and $(EXTRA_CFLAGS)). Thus, - if you change the value of $(CFLAGS_$@) for a file, either by - editing the Makefile or overriding the value some other way, - Rules.make will do the right thing and re-compile your source - file with the new options. + + head-y, init-y, core-y, libs-y, drivers-y, net-y - Note: because of a deficiency in Rules.make, assembly language - files do not have flag dependencies. If you edit $(AFLAGS_$@) - for such a file, you will have to remove the object file in order - to re-build from source. + $(head-y) list objects to be linked first in vmlinux. + $(libs-y) list directories where a libs.a archive can be located. + The rest list directories where a built-in.o object file can be located. - LD_RFLAG + $(init-y) objects will be located after $(head-y). + Then the rest follows in this order: + $(core-y), $(libs-y), $(drivers-y) and $(net-y). - This variable is used, but never defined. It appears to be a - vestige of some abandoned experiment. + The top level Makefile define values for all generic directories, + and arch/$(ARCH)/Makefile only adds architecture specific directories. + Example: + #arch/sparc64/Makefile + core-y += arch/sparc64/kernel/ + libs-y += arch/sparc64/prom/ arch/sparc64/lib/ + drivers-$(CONFIG_OPROFILE) += arch/sparc64/oprofile/ ---- 7.7 Miscellaneous variables +--- 6.4 Architecture specific boot images - IGNORE_FLAGS_OBJS + An arch Makefile specifies goals that take the vmlinux file, compress + it, wrap it in bootstrapping code, and copy the resulting files + somewhere. This includes various kinds of installation commands. + The actual goals are not standardized across architectures. - $(IGNORE_FLAGS_OBJS) is a list of object files which will not have - their flag dependencies automatically tracked. This is a hackish - feature, used to kludge around a problem in the implementation - of flag dependencies. (The problem is that flag dependencies - assume that a %.o file is built from a matching %.S or %.c file. - This is sometimes not true). + It is common to locate any additional processing in a boot/ + directory below arch/$(ARCH)/. - USE_STANDARD_AS_RULE + Kbuild does not provide any smart way to support building a + target specified in boot/. Therefore arch/$(ARCH)/Makefile shall + call make manually to build a target in boot/. - This is a transition variable. If $(USE_STANDARD_AS_RULE) - is defined, then Rules.make will provide standard rules for - assembling %.S files into %.o files or %.s files (%.s files - are useful only to developers). + The recommended approach is to include shortcuts in + arch/$(ARCH)/Makefile, and use the full path when calling down + into the arch/$(ARCH)/boot/Makefile. - If $(USE_STANDARD_AS_RULE) is not defined, then Rules.make - will not provide these standard rules. In this case, the - subdirectory Makefile must provide its own private rules for - assembling %.S files. + Example: + #arch/i386/Makefile + boot := arch/i386/boot + bzImage: vmlinux + $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@ - In the past, all Makefiles provided private %.S rules. Newer - Makefiles should define USE_STANDARD_AS_RULE and use the standard - Rules.make rules. As soon as all the Makefiles across all - architectures have been converted to USE_STANDARD_AS_RULE, then - Rules.make can drop the conditional test on USE_STANDARD_AS_RULE. - After that, all the other Makefiles can drop the definition of - USE_STANDARD_AS_RULE. + "$(Q)$(MAKE) $(build)=" is the recommended way to invoke + make in a subdirectory. + There are no rules for naming of the architecture specific targets, + but executing "make help" will list all relevant targets. + To support this $(archhelp) must be defined. + Example: + #arch/i386/Makefile + define archhelp + echo '* bzImage - Image (arch/$(ARCH)/boot/bzImage)' + endef -=== 8 New-style variables + When make is executed without arguments, the first goal encountered + will be built. In the top level Makefile the first goal present + is all:. + An architecture shall always per default build a bootable image. + In "make help" the default goal is highlighted with a '*'. + Add a new prerequisite to all: to select a default goal different + from vmlinux. -[ This sections dates back from a time where the way to write Makefiles - described above was "new-style". I'm leaving it in as it describes the - same thing in other words, so it may be of some use ] + Example: + #arch/i386/Makefile + all: bzImage -The "new-style variables" are simpler and more powerful than the -"old-style variables". As a result, many subdirectory Makefiles shrank -more than 60%. This author hopes that, in time, all arch Makefiles and -subdirectory Makefiles will convert to the new style. + When "make" is executed without arguments, bzImage will be built. -Rules.make does not understand new-style variables. Thus, each new-style -Makefile has a section of boilerplate code that converts the new-style -variables into old-style variables. There is also some mixing, where -people define most variables using "new style" but then fall back to -"old style" for a few lines. +--- 6.5 Building non-kbuild targets ---- 8.1 New variables + EXTRA_TARGETS - obj-y obj-m obj-n obj- + EXTRA_TARGETS specify additional targets created in current + directory, in addition to any targets specified by obj-*. - These variables replace $(O_OBJS), $(OX_OBJS), $(M_OBJS), - and $(MX_OBJS). + Listing all targets in EXTRA_TARGETS is required for three purposes: + 1) Avoid that the target is linked in as part of built-in.o + 2) Enable kbuild to check changes in command lines + - When $(call if_changed,xxx) is used + 3) kbuild knows what file to delete during "make clean" Example: + #arch/i386/kernel/Makefile + EXTRA_TARGETS := head.o init_task.o - # drivers/block/Makefile - obj-$(CONFIG_MAC_FLOPPY) += swim3.o - obj-$(CONFIG_BLK_DEV_FD) += floppy.o - obj-$(CONFIG_AMIGA_FLOPPY) += amiflop.o - obj-$(CONFIG_ATARI_FLOPPY) += ataflop.o + In this example EXTRA_TARGETS is used to list object files that + shall be built, but shall not be linked as part of built-in.o. - Notice the use of $(CONFIG_...) substitutions on the left hand - side of an assignment operator. This gives GNU Make the power - of associative indexing! Each of these assignments replaces - eight lines of code in an old-style Makefile. - - After executing all of the assignments, the subdirectory - Makefile has built up four lists: $(obj-y), $(obj-m), $(obj-n), - and $(obj-). + Example: + #arch/i386/boot/Makefile + EXTRA_TARGETS := vmlinux.bin bootsect bootsect.o - $(obj-y) is a list of files to include in vmlinux. - $(obj-m) is a list of files to build as single-file modules. - $(obj-n) and $(obj-) are ignored. + In this example EXTRA_TARGETS is used to list all intermediate + targets, and all final targets. + The targets are added to EXTRA_TARGETS to enable 2) and 3) above. + +--- 6.6 Commands useful for building a boot image - Each list may contain duplicates items; duplicates are - automatically removed later. Duplicates in both $(obj-y) and - $(obj-m) will automatically be removed from the $(obj-m) list. + Kbuild provide a few macros that are useful when building a + boot image. - Example: + if_changed - # drivers/net/Makefile + if_changed is the infrastructure used for the following commands. - ... - obj-$(CONFIG_OAKNET) += oaknet.o 8390.o - ... - obj-$(CONFIG_NE2K_PCI) += ne2k-pci.o 8390.o - ... - obj-$(CONFIG_STNIC) += stnic.o 8390.o - ... - obj-$(CONFIG_MAC8390) += daynaport.o 8390.o - ... + Usage: + target: source(s) FORCE + $(call if_changed,ld/objcopy/gzip) + + When the rule is evaluated it is checked to see if any files + needs an update, or the commandline has changed since last + invocation. The latter will force a rebuild if any options + to the executable have changed. + Any target that utilises if_changed must be listed in EXTRA_TARGETS, + otherwise the command line check will fail, and the target will + always be built. + if_changed may be used in conjunction with custom commands as + defined in 6.7 "Custom kbuild commands". + Note: It is a typical mistake to forget the FORCE prerequisite. - In this example, four different drivers require the code in - 8390.o. If one or more of these four drivers are built into - vmlinux, then 8390.o will also be built into vmlinux, and will - *not* be built as a module -- even if another driver which needs - 8390.o is built as a module. (The modular driver is able to - use services of the 8390.o code in the resident vmlinux image). + ld + Link target. Often LDFLAGS_$@ is used to set specific options to ld. + + objcopy + Copy binary. Uses OBJCOPYFLAGS usually specified in + arch/$(ARCH)/Makefile. - export-objs + gzip + Compress target. Use maximum compression to compress target. - $(export-objs) is a list of all the files in the subdirectory - which potentially export symbols. The canonical way to construct - this list is: - grep -l EXPORT_SYMBOL *.c +--- 6.7 Custom kbuild commands - (but watch out for sneaky files that call EXPORT_SYMBOL from an - included header file!) + When kbuild is executing with KBUILD_VERBOSE=0 then only a shorthand + of a command is normally displayed. + To enable this behaviour for custom commands kbuild requires + two variables to be set: + quiet_cmd_ - what shall be echoed + cmd_ - the command to execute - This is a potential list, independent of the kernel configuration. - All files that export symbols go into $(export-objs). The - boilerplate code then uses the $(export-objs) list to separate - the real file lists into $(*_OBJS) and $(*X_OBJS). + Example: + # + quiet_cmd_image = BUILD $@ + cmd_image = $(obj)/tools/build $(BUILDFLAGS) \ + $(obj)/vmlinux.bin > $@ - Experience has shown that maintaining the proper X's in an - old-style Makefile is difficult and error-prone. Maintaining the - $(export-objs) list in a new-style Makefile is simpler and easier - to audit. + $(obj)/bzImage: $(obj)/vmlinux.bin $(obj)/tools/build FORCE + $(call if_changed,image) + @echo 'Kernel: $@ is ready' - $(foo)-objs + When updating the $(obj)/bzImage target the line: - Some kernel modules are composed of multiple object files linked - together. + BUILD arch/i386/boot/bzImage - For each multi-part kernel modul there is a list of all the - object files which make up that module. For a kernel module - named foo.o, its object file list is foo-objs. + will be displayed with "make KBUILD_VERBOSE=0". + - Example: +=== 7 Kbuild Variables - # drivers/scsi/Makefile - list-multi := scsi_mod.o sr_mod.o initio.o a100u2w.o +The top Makefile exports the following variables: - ... + VERSION, PATCHLEVEL, SUBLEVEL, EXTRAVERSION - scsi_mod-objs := hosts.o scsi.o scsi_ioctl.o constants.o \ - scsicam.o scsi_proc.o scsi_error.o \ - scsi_obsolete.o scsi_queue.o scsi_lib.o \ - scsi_merge.o scsi_dma.o scsi_scan.o \ - scsi_syms.o - sr_mod-objs := sr.o sr_ioctl.o sr_vendor.o - initio-objs := ini9100u.o i91uscsi.o - a100u2w-objs := inia100.o i60uscsi.o + These variables define the current kernel version. A few arch + Makefiles actually use these values directly; they should use + $(KERNELRELEASE) instead. - The subdirectory Makefile puts the modules onto obj-* lists in - the usual configuration-dependent way: + $(VERSION), $(PATCHLEVEL), and $(SUBLEVEL) define the basic + three-part version number, such as "2", "4", and "0". These three + values are always numeric. - obj-$(CONFIG_SCSI) += scsi_mod.o - obj-$(CONFIG_BLK_DEV_SR) += sr_mod.o - obj-$(CONFIG_SCSI_INITIO) += initio.o - obj-$(CONFIG_SCSI_INIA100) += a100u2w.o + $(EXTRAVERSION) defines an even tinier sublevel for pre-patches + or additional patches. It is usually some non-numeric string + such as "-pre4", and is often blank. - Suppose that CONFIG_SCSI=y. Then vmlinux needs to link in all - 14 components of scsi_mod.o. + KERNELRELEASE - Suppose that CONFIG_BLK_DEV_SR=m. Then the 3 components - of sr_mod.o will be linked together with "$(LD) -r" to make the - kernel module sr_mod.o. + $(KERNELRELEASE) is a single string such as "2.4.0-pre4", suitable + for constructing installation directory names or showing in + version strings. Some arch Makefiles use it for this purpose. - Also suppose CONFIG_SCSI_INITIO=n. Then initio.o goes onto - the $(obj-n) list and that's the end of it. Its component - files are not compiled, and the composite file is not created. + ARCH + This variable defines the target architecture, such as "i386", + "arm", or "sparc". Some kbuild Makefiles test $(ARCH) to + determine which files to compile. - subdir-y subdir-m subdir-n subdir- + By default, the top Makefile sets $(ARCH) to be the same as the + host system architecture. For a cross build, a user may + override the value of $(ARCH) on the command line: - These variables replace $(ALL_SUB_DIRS), $(SUB_DIRS) and - $(MOD_SUB_DIRS). + make ARCH=m68k ... - Example: - # drivers/Makefile - subdir-$(CONFIG_PCI) += pci - subdir-$(CONFIG_PCMCIA) += pcmcia - subdir-$(CONFIG_MTD) += mtd - subdir-$(CONFIG_SBUS) += sbus + INSTALL_PATH - These variables work similar to obj-*, but are used for - subdirectories instead of object files. + This variable defines a place for the arch Makefiles to install + the resident kernel image and System.map file. + Use this for architecture specific install targets. - After executing all assignments, the subdirectory Makefile has - built up four lists: $(subdir-y), $(subdir-m), $(subdir-n), - and $(subdir-). + INSTALL_MOD_PATH, MODLIB - $(subdir-y) is a list of directories that should be entered - for making vmlinux. - $(subdir-m) is a list of directories that should be entered - for making modules. - $(subdir-n) and $(subdir-) are only used for collecting a list - of all subdirectories of this directory. + $(INSTALL_MOD_PATH) specifies a prefix to $(MODLIB) for module + installation. This variable is not defined in the Makefile but + may be passed in by the user if desired. - Each list besides subdir-y may contain duplicates items; duplicates - are automatically removed later. + $(MODLIB) specifies the directory for module installation. + The top Makefile defines $(MODLIB) to + $(INSTALL_MOD_PATH)/lib/modules/$(KERNELRELEASE). The user may + override this value on the command line if desired. - mod-subdirs +=== 8 Makefile language - $(mod-subdirs) is a list of all the subdirectories that should - be added to $(subdir-m), too if they appear in $(subdir-y) +The kernel Makefiles are designed to run with GNU Make. The Makefiles +use only the documented features of GNU Make, but they do use many +GNU extensions. - Example: +GNU Make supports elementary list-processing functions. The kernel +Makefiles use a novel style of list building and manipulation with few +"if" statements. - # fs/Makefile - mod-subdirs := nls +GNU Make has two assignment operators, ":=" and "=". ":=" performs +immediate evaluation of the right-hand side and stores an actual string +into the left-hand side. "=" is like a formula definition; it stores the +right-hand side in an unevaluated form and then evaluates this form each +time the left-hand side is used. - This means nls should be added to (subdir-y) and $(subdir-m) if - CONFIG_NFS = y. +There are some cases where "=" is appropriate. Usually, though, ":=" +is the right choice. === 9 Credits -Thanks to the members of the linux-kbuild mailing list for reviewing -drafts of this document, with particular thanks to Peter Samuelson -and Thomas Molina. +Original version made by Michael Elizabeth Chastain, +Updates by Kai Germaschewski +Updates by Sam Ravnborg + +=== 10 TODO + +- Describe how kbuild support shipped files with _shipped. +- Generating offset header files. +- Add more variables to section 7? + diff -Nru a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt --- a/Documentation/kernel-parameters.txt Sun Feb 9 21:13:37 2003 +++ b/Documentation/kernel-parameters.txt Sun Feb 9 21:13:37 2003 @@ -1,4 +1,4 @@ -November 2002 Kernel Parameters v2.5.49 +February 2003 Kernel Parameters v2.5.59 ~~~~~~~~~~~~~~~~~ The following is a consolidated list of the kernel parameters as implemented @@ -60,6 +60,7 @@ V4L Video For Linux support is enabled. VGA The VGA console has been enabled. VT Virtual terminal support is enabled. + WDT Watchdog support is enabled. XT IBM PC/XT MFM hard disk support is enabled. In addition, the following text indicates that the option: @@ -98,6 +99,9 @@ advansys= [HW,SCSI] See header of drivers/scsi/advansys.c. + advwdt= [HW,WDT] Advantech WDT + Format: , + aedsp16= [HW,OSS] Audio Excel DSP 16 Format: ,,,,, See also header of sound/oss/aedsp16.c. @@ -111,6 +115,9 @@ aic7xxx= [HW,SCSI] See Documentation/scsi/aic7xxx.txt. + aic79xx= [HW,SCSI] + See Documentation/scsi/aic79xx.txt. + allowdma0 [ISAPNP] AM53C974= [HW,SCSI] @@ -230,20 +237,12 @@ cs89x0_media= [HW,NET] Format: { rj45 | aui | bnc } - - ctc= [HW,NET] - See drivers/s390/net/ctcmain.c, comment before function - ctc_setup(). cyclades= [HW,SERIAL] Cyclades multi-serial port adapter. dasd= [HW,NET] See header of drivers/s390/block/dasd_devmap.c. - dasd_discipline= - [HW,NET] - See header of drivers/s390/block/dasd.c. - db9= [HW,JOY] db9_2= db9_3= @@ -254,9 +253,6 @@ Format: [,] See also Documentation/networking/decnet.txt. - decr_overclock= [PPC] - decr_overclock_proc0= - devfs= [DEVFS] See Documentation/filesystems/devfs/boot-options. @@ -305,6 +301,9 @@ This option is obsoleted by the "netdev=" option, which has equivalent usage. See its documentation for details. + eurwdt= [HW,WDT] Eurotech CPU-1220/1410 onboard watchdog. + Format: [,] + fd_mcs= [HW,SCSI] See header of drivers/scsi/fd_mcs.c. @@ -350,7 +349,9 @@ hisax= [HW,ISDN] See Documentation/isdn/README.HiSax. - hugepages= [HW,IA-32] Maximal number of HugeTLB pages + hugepages= [HW,IA-32,IA-64] Maximal number of HugeTLB pages. + + noirqbalance [IA-32,SMP,KNL] Disable kernel irq balancing i8042_direct [HW] Non-translated mode i8042_dumbkbd @@ -394,6 +395,10 @@ inttest= [IA64] + io7= [HW] IO7 for Marvel based alpha systems + See comment before marvel_specify_io7 in + arch/alpha/kernel/core_marvel.c. + ip= [IP_PNP] See Documentation/nfsroot.txt. @@ -495,6 +500,7 @@ mdacon= [MDA] Format: , + Specifies range of consoles to be captured by the MDA. mem=exactmap [KNL,BOOT,IA-32] Enable setting of an exact E820 memory map, as specified by the user. @@ -576,6 +582,8 @@ nodisconnect [HW,SCSI,M68K] Disables SCSI disconnects. + noexec [IA-64] + nofxsr [BUGS=IA-32] nohighio [BUGS=IA-32] Disable highmem block I/O. @@ -599,7 +607,9 @@ noresume [SWSUSP] Disables resume and restore original swap space. - no-scroll [VGA] + no-scroll [VGA] Disables scrollback. + This is required for the Braillex ib80-piezo Braille + reader made by F.H. Papenmeier (Germany). nosbagart [IA-64] @@ -809,6 +819,9 @@ See a comment before function sbpcd_setup() in drivers/cdrom/sbpcd.c. + sc1200wdt= [HW,WDT] SC1200 WDT (watchdog) driver + Format: [,[,]] + scsi_debug_*= [SCSI] See drivers/scsi/scsi_debug.c. @@ -997,9 +1010,6 @@ spia_pedr= spia_peddr= - spread_lpevents= - [PPC] - sscape= [HW,OSS] Format: ,,,, @@ -1009,6 +1019,19 @@ st0x= [HW,SCSI] See header of drivers/scsi/seagate.c. + sti= [HW] + Format: + Set the STI (builtin display/keyboard on the HP-PARISC + machines) console (graphic card) which should be used + as the initial boot-console. + See also comment in drivers/video/console/sticore.c. + + sti_font= [HW] + See comment in drivers/video/console/sticore.c. + + stifb= [HW] + Format: bpp:[:[:...]] + stram_swap= [HW,M68k] swiotlb= [IA-64] Number of I/O TLB slabs @@ -1079,7 +1102,7 @@ wd7000= [HW,SCSI] See header of drivers/scsi/wd7000.c. - wdt= [HW] Watchdog + wdt= [WDT] Watchdog See Documentation/watchdog.txt. xd= [HW,XT] Original XT pre-IDE (RLL encoded) disks. diff -Nru a/Documentation/md.txt b/Documentation/md.txt --- a/Documentation/md.txt Sun Feb 9 21:13:34 2003 +++ b/Documentation/md.txt Sun Feb 9 21:13:34 2003 @@ -9,7 +9,7 @@ for old raid arrays without persistent superblocks: md=,,,,dev0,dev1,...,devn -for raid arrays with persistant superblocks +for raid arrays with persistent superblocks md=,dev0,dev1,...,devn md device no. = the number of the md device ... @@ -21,7 +21,7 @@ raid level = -1 linear mode 0 striped mode - other modes are only supported with persistant super blocks + other modes are only supported with persistent super blocks chunk size factor = (raid-0 and raid-1 only) Set the chunk size as 4k << n. diff -Nru a/Documentation/modules.txt b/Documentation/modules.txt --- a/Documentation/modules.txt Sun Feb 9 21:13:28 2003 +++ b/Documentation/modules.txt Sun Feb 9 21:13:28 2003 @@ -9,20 +9,13 @@ that the kernel now supports. The current required version is listed in the file linux/Documentation/Changes. -* * * NOTE * * * -The kernel has been changed to remove kerneld support and use -the new kmod support. Keep this in mind when reading this file. Kmod -does the exact same thing as kerneld, but doesn't require an external -program (see Documentation/kmod.txt) - In the beginning... ------------------- Anyway, your first step is to compile the kernel, as explained in the file linux/README. It generally goes like: - make config - make dep + make *config <= usually menuconfig or xconfig make clean make zImage or make zlilo @@ -39,15 +32,16 @@ plus those things that you just can't live without... The set of modules is constantly increasing, and you will be able to select -the option "m" in "make config" for those features that the current kernel +the option "m" in "make menuconfig" for those features that the current kernel can offer as loadable modules. You also have a possibility to create modules that are less dependent on -the kernel version. This option can be selected during "make config", by +the kernel version. This option can be selected during "make *config", by enabling CONFIG_MODVERSIONS, and is most useful on "stable" kernel versions, -such as the kernels from the 1.2 and 2.0 series. +such as the kernels from the 2. series. If you have modules that are based on sources that are not included in the official kernel sources, you will certainly like this option... +See below how to compile modules outside the official kernel. Here is a sample of the available modules included in the kernel sources: @@ -83,22 +77,45 @@ make modules -This will compile all modules and update the linux/modules directory. -In this directory you will then find a bunch of symbolic links, -pointing to the various object files in the kernel tree. +This will compile all modules. A module is identified by the +extension .ko, for kernel object. Now, after you have created all your modules, you should also do: make modules_install This will copy all newly made modules into subdirectories under "/lib/modules/kernel_release/", where "kernel_release" is something -like 2.0.1, or whatever the current kernel version is... +like 2.5.54, or whatever the current kernel version is. +Note: Installing modules may require root privileges. As soon as you have rebooted the newly made kernel, you can install and remove modules at will with the utilities: "insmod" and "rmmod". After reading the man-page for insmod, you will also know how easy it is to configure a module when you do "insmod" (hint: symbol=value). +Installing modules in a non-standard location +--------------------------------------------- +When the modules needs to be installed under another directory +the INSTALL_MOD_PATH can be used to prefix "/lib/modules" as seen +in the following example: + +make INSTALL_MOD_PATH=/frodo modules_install + +This will install the modules in the directory /frodo/lib/modules. +/frodo can be a NFS mounted filesystem on another machine, allowing +out-of-the-box support for installation on remote machines. + + +Compiling modules outside the official kernel +--------------------------------------------- +Often modules are developed outside the official kernel. +To keep up with changes in the build system the most portable way +to compile a module outside the kernel is to use the following command-line: + +make -C path/to/kernel/src SUBDIRS=$PWD modules + +This requires that a makefile exits made in accordance to +Documentation/kbuild/makefiles.txt. Nifty features: --------------- diff -Nru a/Documentation/networking/bonding.txt b/Documentation/networking/bonding.txt --- a/Documentation/networking/bonding.txt Sun Feb 9 21:13:30 2003 +++ b/Documentation/networking/bonding.txt Sun Feb 9 21:13:30 2003 @@ -258,7 +258,7 @@ Specifies the ip addresses to use when arp_interval is > 0. These are the targets of the ARP request sent to determine the health of the link to the targets. Specify these values in ddd.ddd.ddd.ddd format. - Multiple ip adresses must be seperated by a comma. At least one ip + Multiple ip adresses must be separated by a comma. At least one ip address needs to be given for ARP monitoring to work. The maximum number of targets that can be specified is set at 16. @@ -309,7 +309,7 @@ case of just one target, the target itself may go down or have a problem making it unresponsive to ARP requests. Having an additional target (or several) would increase the reliability of the ARP monitoring. -Multiple ARP targets must be seperated by commas as follows: +Multiple ARP targets must be separated by commas as follows: # example options for ARP monitoring with three targets alias bond0 bonding diff -Nru a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt --- a/Documentation/networking/ip-sysctl.txt Sun Feb 9 21:13:31 2003 +++ b/Documentation/networking/ip-sysctl.txt Sun Feb 9 21:13:31 2003 @@ -281,6 +281,14 @@ assassination. Default: 0 +tcp_low_latency - BOOLEAN + If set, the TCP stack makes decisions that prefer lower + latency as opposed to higher throughput. By default, this + option is not set meaning that higher throughput is preferred. + An example of an application where this default should be + changed would be a Beowulf compute cluster. + Default: 0 + ip_local_port_range - 2 INTEGERS Defines the local port range that is used by TCP and UDP to choose the local port. The first number is the first, the diff -Nru a/Documentation/s390/s390dbf.txt b/Documentation/s390/s390dbf.txt --- a/Documentation/s390/s390dbf.txt Sun Feb 9 21:13:34 2003 +++ b/Documentation/s390/s390dbf.txt Sun Feb 9 21:13:34 2003 @@ -8,7 +8,7 @@ ------------ The goal of this feature is to provide a kernel debug logging API where log records can be stored efficiently in memory, where each component -(e.g. device drivers) can have one seperate debug log. +(e.g. device drivers) can have one separate debug log. One purpose of this is to inspect the debug logs after a production system crash in order to analyze the reason for the crash. If the system still runs but only a subcomponent which uses dbf failes, diff -Nru a/Documentation/scsi/ChangeLog.sym53c8xx b/Documentation/scsi/ChangeLog.sym53c8xx --- a/Documentation/scsi/ChangeLog.sym53c8xx Sun Feb 9 21:13:35 2003 +++ b/Documentation/scsi/ChangeLog.sym53c8xx Sun Feb 9 21:13:35 2003 @@ -529,7 +529,7 @@ * version pre-sym53c8xx-0.13 - Some rewrite of the device detection code. This code had been patched too much and needed to be face-lifted a bit. - Remove all platform dependant fix-ups that was not needed or + Remove all platform dependent fix-ups that was not needed or conflicted with some other driver code as work-arounds. Reread the NVRAM before the calling of ncr_attach(). This spares stack space and so allows to handle more boards. diff -Nru a/Documentation/scsi/aic79xx.txt b/Documentation/scsi/aic79xx.txt --- a/Documentation/scsi/aic79xx.txt Sun Feb 9 21:13:34 2003 +++ b/Documentation/scsi/aic79xx.txt Sun Feb 9 21:13:34 2003 @@ -1,5 +1,5 @@ ==================================================================== -= Adaptec Ultra320 Family Manager Set v1.1.1 = += Adaptec Ultra320 Family Manager Set v1.3.0 = = = = README for = = The Linux Operating System = @@ -27,6 +27,10 @@ Adaptec SCSI Card 39320D Dual Channel 64-bit PCI-X 133MHz to Ultra320 SCSI Card (two external VHDC and one internal 68-pin) + Adaptec SCSI Card 39320D Dual Channel 64-bit PCI-X 133MHz to + Ultra320 SCSI Card (two external VHDC + and one internal 68-pin) based on the + AIC-7902B ASIC Adaptec SCSI Card 29320 Single Channel 64-bit PCI-X 133MHz to Ultra320 SCSI Card (one external 68-pin, two internal 68-pin, one @@ -39,12 +43,28 @@ Ultra320 SCSI ASIC AIC-7902A4 Dual Channel 64-bit PCI-X 133MHz to Ultra320 SCSI ASIC - + AIC-7902B Dual Channel 64-bit PCI-X 133MHz to + Ultra320 SCSI ASIC 2. Version History + (V1.3.0, January 2003) Full regression testing for all U320 products + completed. + + (V1.3.0 ALPHA, November 2002) Initial Alpha release. + Added abort and target/lun reset error recovery handler and + interrupt coalessing. + + (V1.2.0, November 2002) Added support for Domain Validation and + Hewlett-Packard version of the 39320D and AIC-7902 adapters. + Support for previous adapters has not been fully tested and should + only be used at the customer's own risk. + (V1.1.1, September 2002) Added support for the Linux 2.5.X kernel series + (V1.1.0, August 2002) Added support for four additional SCSI + products: ASC-39320, ASC-29320, ASC-29320LP, AIC-7901. + (V1.1, August 2002) Added support for four additional SCSI products: ASC-39320, ASC-29320, ASC-29320LP, AIC-7901. @@ -56,20 +76,21 @@ - 320MB/s transfer rates - Packetized SCSI Protocol at 160MB/s and 320MB/s - Quick Arbitration Selection (QAS) - - Initiator Mode (target mode not currently - supported) - - Support for the PCI-x standard up to 133MHz - - Support for the PCI v2.2 standard + - Retained Training Information (Rev B. ASIC only) + - Interrupt Coalessing + - Initiator Mode (target mode not currently + supported) + - Support for the PCI-X standard up to 133MHz + - Support for the PCI v2.2 standard 2.2. Operating System Support: - - Redhat Linux 7.2, 7.3, Advanced Server 2.1 - - SuSE Linux 7.3, 8.0, Enterprise Server 7 + - Redhat Linux 7.2, 7.3, 8.0, Advanced Server 2.1 + - SuSE Linux 7.3, 8.0, 8.1, Enterprise Server 7 - only Intel and AMD x86 supported at this time - - >4GB memory configurations supported. + - >4GB memory configurations supported. Refer to the User's Guide for more details on this. - 3. Command Line Options WARNING: ALTERING OR ADDING THESE DRIVER PARAMETERS @@ -77,7 +98,7 @@ USE THEM WITH CAUTION. Edit the file "modules.conf" in the directory /etc and add/edit a - line containing 'options aic79xx=[command[,command...]]' where + line containing 'options aic79xx aic79xx=[command[,command...]]' where 'command' is one or more of the following: ----------------------------------------------------------------- Option: verbose @@ -88,6 +109,9 @@ ----------------------------------------------------------------- Option: debug:[value] Definition: Enables various levels of debugging information + The bit definitions for the debugging mask can + be found in drivers/scsi/aic7xxx/aic79xx.h under + the "Debug" heading. Possible Values: 0x0000 = no debugging, 0xffff = full debugging Default Value: 0x0000 ----------------------------------------------------------------- @@ -114,120 +138,140 @@ Possible Values: This option is a flag Default Value: disabled ----------------------------------------------------------------- - Option: global_tag_depth + Option: global_tag_depth Definition: Global tag depth for all targets on all busses. - This option sets the default tag depth which - may be selectively overridden vi the tag_info - option. + This option sets the default tag depth which + may be selectively overridden vi the tag_info + option. Possible Values: 1 - 253 Default Value: 32 ----------------------------------------------------------------- Option: tag_info:{{value[,value...]}[,{value[,value...]}...]} Definition: Set the per-target tagged queue depth on a - per controller basis. Both controllers and targets - may be ommitted indicating that they should retain - the default tag depth. + per controller basis. Both controllers and targets + may be ommitted indicating that they should retain + the default tag depth. Examples: tag_info:{{16,32,32,64,8,8,,32,32,32,32,32,32,32,32,32} - On Controller 0 - specifies a tag depth of 16 for target 0 - specifies a tag depth of 64 for target 3 - specifies a tag depth of 8 for targets 4 and 5 - leaves target 6 at the default - specifies a tag depth of 32 for targets 1,2,7-15 - All other targets retain the default depth. - - tag_info:{{},{32,,32}} - On Controller 1 - specifies a tag depth of 32 for targets 0 and 2 - All other targets retain the default depth. - + On Controller 0 + specifies a tag depth of 16 for target 0 + specifies a tag depth of 64 for target 3 + specifies a tag depth of 8 for targets 4 and 5 + leaves target 6 at the default + specifies a tag depth of 32 for targets 1,2,7-15 + All other targets retain the default depth. + + tag_info:{{},{32,,32}} + On Controller 1 + specifies a tag depth of 32 for targets 0 and 2 + All other targets retain the default depth. + Possible Values: 1 - 253 Default Value: 32 ----------------------------------------------------------------- Option: rd_strm: {rd_strm_bitmask[,rd_strm_bitmask...]} Definition: Enable read streaming on a per target basis. The rd_strm_bitmask is a 16 bit hex value in which - each bit represents a target. Setting the target's + each bit represents a target. Setting the target's bit to '1' enables read streaming for that target. Controllers may be ommitted indicating that - they should retain the default read streaming setting. - Example: rd_strm:{0x0041} - On Controller 0 - enables read streaming for targets 0 and 6. - disables read streaming for targets 1-5,7-15. - All other targets retain the default read - streaming setting. - Example: rd_strm:{0x0023,,0xFFFF} - On Controller 0 - enables read streaming for targets 1,2, and 5. - disables read streaming for targets 3,4,6-15. - On Controller 2 - enables read streaming for all targets. - All other targets retain the default read - streaming setting. - + they should retain the default read streaming setting. + Example: rd_strm:{0x0041} + On Controller 0 + enables read streaming for targets 0 and 6. + disables read streaming for targets 1-5,7-15. + All other targets retain the default read + streaming setting. + Example: rd_strm:{0x0023,,0xFFFF} + On Controller 0 + enables read streaming for targets 1,2, and 5. + disables read streaming for targets 3,4,6-15. + On Controller 2 + enables read streaming for all targets. + All other targets retain the default read + streaming setting. + Possible Values: 0x0000 - 0xffff Default Value: 0x0000 ----------------------------------------------------------------- + Option: dv: {value[,value...]} + Definition: Set Domain Validation Policy on a per-controller basis. + Controllers may be ommitted indicating that + they should retain the default read streaming setting. + Example: dv:{-1,0,,1,1,0} + On Controller 0 leave DV at its default setting. + On Controller 1 disable DV. + Skip configuration on Controller 2. + On Controllers 3 and 4 enable DV. + On Controller 5 disable DV. + + Possible Values: < 0 Use setting from serial EEPROM. + 0 Disable DV + > 0 Enable DV + Default Value: DV Serial EEPROM configuration setting. + ----------------------------------------------------------------- + Option: seltime:[value] + Definition: Specifies the selection timeout value + Possible Values: 0 = 256ms, 1 = 128ms, 2 = 64ms, 3 = 32ms + Default Value: 0 + ----------------------------------------------------------------- + + *** The following three options should only be changed at *** + *** the direction of a technical support representative. *** + + ----------------------------------------------------------------- Option: precomp: {value[,value...]} Definition: Set IO Cell precompensation value on a per-controller - basis. + basis. Controllers may be ommitted indicating that - they should retain the default precompensation setting. - Example: precomp:{0x1} - On Controller 0 set precompensation to 1. - Example: precomp:{1,,7} - On Controller 0 set precompensation to 1. - On Controller 2 set precompensation to 8. - + they should retain the default precompensation setting. + Example: precomp:{0x1} + On Controller 0 set precompensation to 1. + Example: precomp:{1,,7} + On Controller 0 set precompensation to 1. + On Controller 2 set precompensation to 8. + Possible Values: 0 - 7 Default Value: Varies based on chip revision ----------------------------------------------------------------- Option: slewrate: {value[,value...]} Definition: Set IO Cell slew rate on a per-controller basis. Controllers may be ommitted indicating that - they should retain the default slew rate setting. - Example: slewrate:{0x1} - On Controller 0 set slew rate to 1. - Example: slewrate :{1,,8} - On Controller 0 set slew rate to 1. - On Controller 2 set slew rate to 8. - + they should retain the default slew rate setting. + Example: slewrate:{0x1} + On Controller 0 set slew rate to 1. + Example: slewrate :{1,,8} + On Controller 0 set slew rate to 1. + On Controller 2 set slew rate to 8. + Possible Values: 0 - 15 Default Value: Varies based on chip revision ----------------------------------------------------------------- Option: amplitude: {value[,value...]} Definition: Set IO Cell signal amplitude on a per-controller basis. Controllers may be ommitted indicating that - they should retain the default read streaming setting. - Example: amplitude:{0x1} - On Controller 0 set amplitude to 1. - Example: amplitude :{1,,7} - On Controller 0 set amplitude to 1. - On Controller 2 set amplitude to 7. - + they should retain the default read streaming setting. + Example: amplitude:{0x1} + On Controller 0 set amplitude to 1. + Example: amplitude :{1,,7} + On Controller 0 set amplitude to 1. + On Controller 2 set amplitude to 7. + Possible Values: 1 - 7 Default Value: Varies based on chip revision ----------------------------------------------------------------- - Option: seltime:[value] - Definition: Specifies the selection timeout value - Possible Values: 0 = 256ms, 1 = 128ms, 2 = 64ms, 3 = 32ms - Default Value: 0 - ----------------------------------------------------------------- - Example: 'options aic79xx=verbose,rd_strm:{{0x0041}}' - enables verbose output in the driver and turns read streaming on - for targets 0 and 6 of Controller 0. + Example: 'options aic79xx aic79xx=verbose,rd_strm:{{0x0041}}' + enables verbose output in the driver and turns read streaming on + for targets 0 and 6 of Controller 0. 4. Additional Notes 4.1. Known/Unresolved or FYI Issues - * Domain Validation is not implemented. - * Under SuSE Linux Enterprise 7, the driver may fail to operate - correctly due to a problem with PCI interrupt routing in the - Linux kernel. Please contact SuSE for an updated Linux - kernel. + * Under SuSE Linux Enterprise 7, the driver may fail to operate + correctly due to a problem with PCI interrupt routing in the + Linux kernel. Please contact SuSE for an updated Linux + kernel. 4.2. Third-Party Compatibility Issues @@ -240,6 +284,18 @@ * PCI Hot Plug is untested and may cause the operating system to stop responding. + * Luns that are not numbered contiguously starting with 0 might not + be automatically probed during system startup. This is a limitation + of the OS. Please contact your Linux vendor for instructions on + manually probing non-contiguous luns. + * Using the Driver Update Disk version of this package during OS + installation under RedHat might result in two versions of this + driver being installed into the system module directory. This + might cause problems with the /sbin/mkinitrd program and/or + other RPM packages that try to install system modules. The best + way to correct this once the system is running is to install + the latest RPM package version of this driver, available from + http://www.adaptec.com. 5. Contacting Adaptec @@ -316,7 +372,7 @@ ------------------------------------------------------------------- -(c) 2002 Adaptec, Inc. All Rights Reserved. No part of this +(c) 2003 Adaptec, Inc. All Rights Reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, electronic, mechanical, photocopying, recording or otherwise, without prior written consent diff -Nru a/Documentation/scsi/aic7xxx.txt b/Documentation/scsi/aic7xxx.txt --- a/Documentation/scsi/aic7xxx.txt Sun Feb 9 21:13:30 2003 +++ b/Documentation/scsi/aic7xxx.txt Sun Feb 9 21:13:30 2003 @@ -1,5 +1,5 @@ ==================================================================== -= Adaptec Aic7xxx Fast -> Ultra160 Family Manager Set v6.2.10 = += Adaptec Aic7xxx Fast -> Ultra160 Family Manager Set v6.2.28 = = README for = = The Linux Operating System = ==================================================================== @@ -7,8 +7,9 @@ The following information is available in this file: 1. Supported Hardware - 2. Command Line Options - 3. Contacting Adaptec + 2. Version History + 3. Command Line Options + 4. Contacting Adaptec 1. Supported Hardware @@ -44,52 +45,52 @@ 5. Block Move Instruction Support - Doubles the speed of certain sequencer operations. 6. `Bayonet' style Scatter Gather Engine - Improves S/G prefetch - performance. + performance. 7. Queuing Registers - Allows queuing of new transactions without - pausing the sequencer. + pausing the sequencer. 8. Multiple Target IDs - Allows the controller to respond to selection as a target on multiple SCSI IDs. Controller Chip Host-Bus Int-Connectors Ext-Connectors Notes -------------------------------------------------------------------------- - AHA-274X[A] aic7770 EISA SE-50M SE-HD50F - AHA-274X[A]W aic7770 EISA SE-HD68F SE-HD68F - SE-50M - AHA-274X[A]T aic7770 EISA 2 X SE-50M SE-HD50F - AHA-2842 aic7770 VL SE-50M SE-HD50F - AHA-2940AU aic7860 PCI/32 SE-50M SE-HD50F + AHA-274X[A] aic7770 EISA SE-50M SE-HD50F + AHA-274X[A]W aic7770 EISA SE-HD68F SE-HD68F + SE-50M + AHA-274X[A]T aic7770 EISA 2 X SE-50M SE-HD50F + AHA-2842 aic7770 VL SE-50M SE-HD50F + AHA-2940AU aic7860 PCI/32 SE-50M SE-HD50F AVA-2902I aic7860 PCI/32 SE-50M AVA-2902E aic7860 PCI/32 SE-50M - AVA-2906 aic7856 PCI/32 SE-50M SE-DB25F - APC-7850 aic7850 PCI/32 SE-50M 1 + AVA-2906 aic7856 PCI/32 SE-50M SE-DB25F + APC-7850 aic7850 PCI/32 SE-50M 1 AVA-2940 aic7860 PCI/32 SE-50M AHA-2920B aic7860 PCI/32 SE-50M AHA-2930B aic7860 PCI/32 SE-50M - AHA-2920C aic7856 PCI/32 SE-50M SE-HD50F + AHA-2920C aic7856 PCI/32 SE-50M SE-HD50F AHA-2930C aic7860 PCI/32 SE-50M AHA-2930C aic7860 PCI/32 SE-50M AHA-2910C aic7860 PCI/32 SE-50M AHA-2915C aic7860 PCI/32 SE-50M - AHA-2940AU/CN aic7860 PCI/32 SE-50M SE-HD50F - AHA-2944W aic7870 PCI/32 HVD-HD68F HVD-HD68F - HVD-50M - AHA-3940W aic7870 PCI/32 2 X SE-HD68F SE-HD68F 2 + AHA-2940AU/CN aic7860 PCI/32 SE-50M SE-HD50F + AHA-2944W aic7870 PCI/32 HVD-HD68F HVD-HD68F + HVD-50M + AHA-3940W aic7870 PCI/32 2 X SE-HD68F SE-HD68F 2 AHA-2940UW aic7880 PCI/32 SE-HD68F - SE-50M SE-HD68F - AHA-2940U aic7880 PCI/32 SE-50M SE-HD50F + SE-50M SE-HD68F + AHA-2940U aic7880 PCI/32 SE-50M SE-HD50F AHA-2940D aic7880 PCI/32 - AHA-2940 A/T aic7880 PCI/32 + aHA-2940 A/T aic7880 PCI/32 AHA-2940D A/T aic7880 PCI/32 - AHA-3940UW aic7880 PCI/32 2 X SE-HD68F SE-HD68F 3 + AHA-3940UW aic7880 PCI/32 2 X SE-HD68F SE-HD68F 3 AHA-3940UWD aic7880 PCI/32 2 X SE-HD68F 2 X SE-VHD68F 3 - AHA-3940U aic7880 PCI/32 2 X SE-50M SE-HD50F 3 - AHA-2944UW aic7880 PCI/32 HVD-HD68F HVD-HD68F - HVD-50M + AHA-3940U aic7880 PCI/32 2 X SE-50M SE-HD50F 3 + AHA-2944UW aic7880 PCI/32 HVD-HD68F HVD-HD68F + HVD-50M AHA-3944UWD aic7880 PCI/32 2 X HVD-HD68F 2 X HVD-VHD68F 3 AHA-4944UW aic7880 PCI/32 AHA-2930UW aic7880 PCI/32 - AHA-2940UW Pro aic7880 PCI/32 SE-HD68F SE-HD68F 4 - SE-50M + AHA-2940UW Pro aic7880 PCI/32 SE-HD68F SE-HD68F 4 + SE-50M AHA-2940UW/CN aic7880 PCI/32 AHA-2940UDual aic7895 PCI/32 AHA-2940UWDual aic7895 PCI/32 @@ -98,30 +99,30 @@ AHA-3940AUWD aic7895 PCI/32 AHA-3940AU aic7895 PCI/32 AHA-3944AUWD aic7895 PCI/32 2 X HVD-HD68F 2 X HVD-VHD68F - AHA-2940U2B aic7890 PCI/32 LVD-HD68F LVD-HD68F + AHA-2940U2B aic7890 PCI/32 LVD-HD68F LVD-HD68F AHA-2940U2 OEM aic7891 PCI/64 - AHA-2940U2W aic7890 PCI/32 LVD-HD68F LVD-HD68F - SE-HD68F - SE-50M - AHA-2950U2B aic7891 PCI/64 LVD-HD68F LVD-HD68F - AHA-2930U2 aic7890 PCI/32 LVD-HD68F SE-HD50F - SE-50M + AHA-2940U2W aic7890 PCI/32 LVD-HD68F LVD-HD68F + SE-HD68F + SE-50M + AHA-2950U2B aic7891 PCI/64 LVD-HD68F LVD-HD68F + AHA-2930U2 aic7890 PCI/32 LVD-HD68F SE-HD50F + SE-50M AHA-3950U2B aic7897 PCI/64 AHA-3950U2D aic7897 PCI/64 AHA-29160 aic7892 PCI/64-66 AHA-29160 CPQ aic7892 PCI/64-66 - AHA-29160N aic7892 PCI/32 LVD-HD68F SE-HD50F - SE-50M + AHA-29160N aic7892 PCI/32 LVD-HD68F SE-HD50F + SE-50M AHA-29160LP aic7892 PCI/64-66 AHA-19160 aic7892 PCI/64-66 AHA-29150LP aic7892 PCI/64-66 AHA-29130LP aic7892 PCI/64-66 AHA-3960D aic7899 PCI/64-66 2 X LVD-HD68F 2 X LVD-VHD68F - LVD-50M + LVD-50M AHA-3960D CPQ aic7899 PCI/64-66 2 X LVD-HD68F 2 X LVD-VHD68F - LVD-50M + LVD-50M AHA-39160 aic7899 PCI/64-66 2 X LVD-HD68F 2 X LVD-VHD68F - LVD-50M + LVD-50M 1. No BIOS support 2. DEC21050 PCI-PCI bridge with multiple controller chips on secondary bus @@ -129,14 +130,22 @@ 4. All three SCSI connectors may be used simultaneously without SCSI "stub" effects. -2. Command Line Options +2. Version History + + 6.2.28 - Domain Validation Fixes + PCI parity error disable + Enhanced Memory Mapped I/O probe + + 6.2.20 - Added Domain Validation + +3. Command Line Options WARNING: ALTERING OR ADDING THESE DRIVER PARAMETERS INCORRECTLY CAN RENDER YOUR SYSTEM INOPERABLE. USE THEM WITH CAUTION. Edit the file "modules.conf" in the directory /etc and add/edit a - line containing 'options aic7xxx=[command[,command...]]' where + line containing 'options aic7xxx aic7xxx=[command[,command...]]' where 'command' is one or more of the following: ----------------------------------------------------------------- Option: verbose @@ -150,6 +159,30 @@ Possible Values: 0x0000 = no debugging, 0xffff = full debugging Default Value: 0x0000 ----------------------------------------------------------------- + Option: no_probe + Definition: Do not probe for EISA/VLB controllers. + This is a toggle. If the driver is compiled + to not probe EISA/VLB controllers by default, + specifying "no_probe" will enable this probing. + If the driver is compiled to probe EISA/VLB + controllers by default, specifying "no_probe" + will disable this probing. + Possible Values: This option is a toggle + Default Value: EISA/VLB probing is disabled by default. + ----------------------------------------------------------------- + Option: pci_parity + Definition: Toggles the detection of PCI parity errors. + On many motherboards with VIA chipsets, + PCI parity is not generated correctly on the + PCI bus. It is impossible for the hardware to + differentiate between these "spurious" parity + errors and real parity errors. The symptom of + this problem is a stream of the message: + "scsi0: Data Parity Error Detected during address or write data phase" + output by the driver. + Possible Values: This option is a toggle + Default Value: PCI Parity Error reporting is disabled + ----------------------------------------------------------------- Option: no_reset Definition: Do not reset the bus during the initial probe phase @@ -173,33 +206,33 @@ Possible Values: This option is a flag Default Value: disabled ----------------------------------------------------------------- - Option: global_tag_depth + Option: global_tag_depth:[value] Definition: Global tag depth for all targets on all busses. - This option sets the default tag depth which - may be selectively overridden vi the tag_info - option. + This option sets the default tag depth which + may be selectively overridden vi the tag_info + option. Possible Values: 1 - 253 Default Value: 32 ----------------------------------------------------------------- Option: tag_info:{{value[,value...]}[,{value[,value...]}...]} Definition: Set the per-target tagged queue depth on a - per controller basis. Both controllers and targets - may be ommitted indicating that they should retain - the default tag depth. + per controller basis. Both controllers and targets + may be ommitted indicating that they should retain + the default tag depth. Examples: tag_info:{{16,32,32,64,8,8,,32,32,32,32,32,32,32,32,32} - On Controller 0 - specifies a tag depth of 16 for target 0 - specifies a tag depth of 64 for target 3 - specifies a tag depth of 8 for targets 4 and 5 - leaves target 6 at the default - specifies a tag depth of 32 for targets 1,2,7-15 - All other targets retain the default depth. - - tag_info:{{},{32,,32}} - On Controller 1 - specifies a tag depth of 32 for targets 0 and 2 - All other targets retain the default depth. - + On Controller 0 + specifies a tag depth of 16 for target 0 + specifies a tag depth of 64 for target 3 + specifies a tag depth of 8 for targets 4 and 5 + leaves target 6 at the default + specifies a tag depth of 32 for targets 1,2,7-15 + All other targets retain the default depth. + + tag_info:{{},{32,,32}} + On Controller 1 + specifies a tag depth of 32 for targets 0 and 2 + All other targets retain the default depth. + Possible Values: 1 - 253 Default Value: 32 ----------------------------------------------------------------- @@ -208,10 +241,30 @@ Possible Values: 0 = 256ms, 1 = 128ms, 2 = 64ms, 3 = 32ms Default Value: 0 ----------------------------------------------------------------- + Option: dv: {value[,value...]} + Definition: Set Domain Validation Policy on a per-controller basis. + Controllers may be ommitted indicating that + they should retain the default read streaming setting. + Example: dv:{-1,0,,1,1,0} + On Controller 0 leave DV at its default setting. + On Controller 1 disable DV. + Skip configuration on Controller 2. + On Controllers 3 and 4 enable DV. + On Controller 5 disable DV. + + Possible Values: < 0 Use setting from serial EEPROM. + 0 Disable DV + > 0 Enable DV + + Default Value: SCSI-Select setting on controllers with a SCSI Select + option for DV. Otherwise, on for controllers supporting + U160 speeds and off for all other controller types. + ----------------------------------------------------------------- - Example: 'options aic7xxx=verbose,no_probe,tag_info:{{},{,,10}},seltime:1" - enables verbose logging, Disable EISA/VLB probing, - and set tag depth on Controller 1/Target 2 to 10 tags. + Example: + 'options aic7xxx aic7xxx=verbose,no_probe,tag_info:{{},{,,10}},seltime:1" + enables verbose logging, Disable EISA/VLB probing, + and set tag depth on Controller 1/Target 2 to 10 tags. 3. Contacting Adaptec diff -Nru a/Documentation/scsi/ibmmca.txt b/Documentation/scsi/ibmmca.txt --- a/Documentation/scsi/ibmmca.txt Sun Feb 9 21:13:34 2003 +++ b/Documentation/scsi/ibmmca.txt Sun Feb 9 21:13:34 2003 @@ -346,7 +346,7 @@ This table is quite informative for interested users. It shows the load of commands on the subsystem and wether you are running the bypassed (software) or integrated (hardware) SCSI-command set (see below). The - amount of accesses is shown. Read, write, modeselect is shown seperately + amount of accesses is shown. Read, write, modeselect is shown separately in order to help debugging problems with CD-ROMs or tapedrives. The following table shows the list of 15 logical device numbers, that are @@ -906,7 +906,7 @@ to does not offer more space, invalid memory accesses destabilized the kernel. 3) version 4.0 is only valid for kernel 2.4.0 or later. This is necessary - to remove old kernel version dependant waste from the driver. 3.2d is + to remove old kernel version dependent waste from the driver. 3.2d is only distributed with older kernels but keeps compatibility with older kernel versions. 4.0 and higher versions cannot be used with older kernels anymore!! You must have at least kernel 2.4.0!! @@ -943,7 +943,7 @@ 4 To do ------- - - IBM SCSI-2 F/W external SCSI bus support in seperate mode! + - IBM SCSI-2 F/W external SCSI bus support in separate mode! - It seems that the handling of bad disks is really bad - non-existent, in fact. However, a low-level driver cannot help much, if such things happen. @@ -1382,7 +1382,7 @@ 9 Disclaimer ------------ - Beside the GNU General Public License and the dependant disclaimers and disclaimers + Beside the GNU General Public License and the dependent disclaimers and disclaimers concerning the Linux-kernel in special, this SCSI-driver comes without any warranty. Its functionality is tested as good as possible on certain machines and combinations of computer hardware, which does not exclude, diff -Nru a/Documentation/sound/alsa/ALSA-Configuration.txt b/Documentation/sound/alsa/ALSA-Configuration.txt --- a/Documentation/sound/alsa/ALSA-Configuration.txt Sun Feb 9 21:13:29 2003 +++ b/Documentation/sound/alsa/ALSA-Configuration.txt Sun Feb 9 21:13:29 2003 @@ -213,6 +213,8 @@ mpu_port - 0x300 (default),0x310,0x320,0x330, -1 (diable) fm_port - 0x388 (default), -1 (disable) + soft_ac3 - Sofware-conversion of raw SPDIF packets (model 033 only) + (default = 1) Module supports autoprobe and multiple chips (max 8). @@ -748,7 +750,8 @@ Module snd-rme32 ---------------- - Module for RME Digi32, Digi32/8 and Digi32 PRO soundcards. + Module for RME Digi32, Digi32 Pro and Digi32/8 (Sek'd Prodif32, + Prodif96 and Prodif Gold) soundcards. Module supports up to 8 cards. diff -Nru a/Documentation/sound/alsa/CMIPCI.txt b/Documentation/sound/alsa/CMIPCI.txt --- a/Documentation/sound/alsa/CMIPCI.txt Sun Feb 9 21:13:28 2003 +++ b/Documentation/sound/alsa/CMIPCI.txt Sun Feb 9 21:13:28 2003 @@ -20,7 +20,7 @@ - The first DAC supports U8 and S16LE formats, while the second DAC supports only S16LE. -- The second DAC supports only two channel stereo. +- The seconde DAC supports only two channel stereo. Please note that the CM8x38 DAC doesn't support continuous playback rate but only fixed rates: 5512, 8000, 11025, 16000, 22050, 32000, @@ -65,15 +65,20 @@ "-MC" such like "CMI8738-MC6". You can check this name from /proc/asound/cards. -When the 4/6-ch output is enabled, the front DAC accepts up to 6 (or -4) channels. This is different from the dual DACs described in the -previous section. While the dual DAC supports two different rates or +When the 4/6-ch output is enabled, the second DAC accepts up to 6 (or +4) channels. While the dual DAC supports two different rates or formats, the 4/6-ch playback supports only the same condition for all -channels. +channels. Since the multi-channel playback mode uses both DACs, you +cannot operate with full-duplex. -For using 4/6 channel playback, you need to specify the PCM channels -as you like and set the format S16LE. For example, for playback with -4 channels, +The 4.0 and 5.1 modes are defined as the pcm "surround40" and "surround51" +in alsa-lib. For example, you can play a WAV file with 6 channels like + + % aplay -Dsurround51 sixchannels.wav + +For programmin the 4/6 channel playback, you need to specify the PCM +channels as you like and set the format S16LE. For example, for playback +with 4 channels, snd_pcm_hw_params_set_access(pcm, hw, SND_PCM_ACCESS_RW_INTERLEAVED); // or mmap if you like @@ -82,9 +87,15 @@ and use the interleaved 4 channel data. -There is a control switch, "Line-In As Bass". As you can imagine from -its name, the line-in jack is used for the bass (5th and 6th channels) -output. +There are some control switchs affecting to the speaker connections: + +"Line-In As Rear" - As mentioned above, the line-in jack is used + for the rear (3th and 4th channels) output. +"Line-In As Bass" - The line-in jack is used for the bass (5th + and 6th channels) output. +"Mic As Center/LFE" - The mic jack is used for the bass output. + If this switch is on, you cannot use a microphone as a capture + source, of course. Digital I/O @@ -134,8 +145,7 @@ (see the next section). "IEC958 In Select" - Select SPDIF input, the internal CD-in (false) - and the external input (true). This switch appears only on - the chip models 039 or later. + and the external input (true). "IEC958 Loop" - SPDIF input data is loop back into SPDIF output (aka bypass) @@ -169,6 +179,11 @@ Similarly the following switches are off: "IEC958 Mix Analog" and "IEC958 Loop". The switches are resumed after closing the SPDIF PCM device automatically to the previous state. + +On the model 033, AC3 is implemented by the software conversion in +the driver. This prevents the mmap support. If you need mmap +support, pass the "soft_ac3=0" module option. This doesn't matter +on the newer models. ANALOG MIXER INTERFACE diff -Nru a/Documentation/sound/alsa/DocBook/alsa-driver-api.tmpl b/Documentation/sound/alsa/DocBook/alsa-driver-api.tmpl --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/Documentation/sound/alsa/DocBook/alsa-driver-api.tmpl Sun Feb 9 21:13:37 2003 @@ -0,0 +1,102 @@ + + + + + + + + + + The ALSA Driver API + + + + This document is free; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + + + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A + PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + + + You should have received a copy of the GNU General Public + License along with this program; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, + MA 02111-1307 USA + + + + + + Management of Cards and Devices + Card Managment +!Esound/core/init.c + + Device Components +!Esound/core/device.c + + KMOD and Device File Entries +!Esound/core/sound.c + + Memory Management Helpers +!Esound/core/memory.c +!Iinclude/sound/sndmagic.h + + + PCM API + PCM Core +!Esound/core/pcm.c +!Esound/core/pcm_lib.c +!Esound/core/pcm_native.c + + PCM Format Helpers +!Esound/core/pcm_misc.c + + PCM Memory Managment +!Esound/core/pcm_memory.c + + SG-Buffer Helpers +!Esound/core/pcm_sgbuf.c + + + Control/Mixer API + General Control Interface +!Esound/core/control.c + + AC97 Codec API +!Esound/pci/ac97/ac97_codec.c + + + MIDI API + Raw MIDI API +!Esound/core/rawmidi.c + + MPU401-UART API +!Esound/drivers/mpu401/mpu401_uart.c + + + Proc Info API + Proc Info Interface +!Esound/core/info.c + + + Miscellaneous Functions + Hardware-Dependent Devices API +!Esound/core/hwdep.c + + ISA DMA Helpers +!Esound/core/isadma.c + + Other Helper Macros +!Iinclude/sound/core.h + + + + diff -Nru a/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl b/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl --- /dev/null Wed Dec 31 16:00:00 1969 +++ b/Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl Sun Feb 9 21:13:37 2003 @@ -0,0 +1,5222 @@ + + + + + + + + + + Writing an ALSA Driver + + Takashi + Iwai + +
+ tiwai@suse.de +
+
+
+ + Dec. 27, 2002 + 0.2 (reborn at Christmas) + + + + This document describes how to write an ALSA (Advanced Linux + Sound Architecture) driver. + + + + + + Copyright (c) 2002 Takashi Iwai tiwai@suse.de + + + + This document is free; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + + + This document is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A + PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + + + You should have received a copy of the GNU General Public + License along with this program; if not, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, + MA 02111-1307 USA + + + +
+ + + + + + Preface + + This document describes how to write an + + ALSA (Advanced Linux Sound Architecture) + driver. The document focuses mainly on the PCI soundcard. + In the case of other device types, the API might + be different, too. However, at least the ALSA kernel API is + consistent, and therefore it would be still a bit help for + writing them. + + + + The target of this document is ones who already have enough + skill of C language and have the basic knowledge of linux + kernel programming. This document doesn't explain the general + topics of linux kernel codes and doesn't cover the detail of + implementation of each low-level driver. It describes only how is + the standard way to write a PCI sound driver on ALSA. + + + + If you are already familiar with the older ALSA ver.0.5.x, you + can check the drivers such as es1938.c or + maestro3.c which have also almost the same + code-base in the ALSA 0.5.x tree, so you can compare the differences. + + + + This document is still a draft version. Any feedbacks and + corrections, please!! + + + + + + + + + File Tree Structure + +
+ General + + The ALSA drivers are provided in the two ways. + + + + One is the the trees provided as a tarball or via cvs from the + ALSA's ftp site, and another is the 2.5 (or later) Linux kernel + tree. To synchronize both, the ALSA driver tree is split to + two different trees: alsa-kernel and alsa-driver. The former + contains purely the source codes for the Linux 2.5 (or later) + tree. This tree is designed only for compilation on 2.5 or + later environment. The latter, alsa-driver, contains many subtle + files for compiling the ALSA driver on the outside of Linux + kernel like configure script, the wrapper functions for older, + 2.2 and 2.4 kernels, to adapt the latest kernel API, + and additional drivers which are still in development or in + tests. The drivers in alsa-driver tree will be moved to + alsa-kernel (eventually 2.5 kernel tree) once when they are + finished and confirmed to work fine. + + + + The file tree structure of ALSA driver is depicted below. Both + alsa-kernel and alsa-driver have almost the same file + structure, except for core directory. It's + named as acore in alsa-driver tree. + + + ALSA File Tree Structure + + sound + /core + /oss + /seq + /oss + /instr + /ioctl32 + /include + /drivers + /mpu401 + /opl3 + /i2c + /l3 + /synth + /emux + /pci + /(cards) + /isa + /(cards) + /arm + /ppc + /sparc + /usb + /pcmcia /(cards) + /oss + + + +
+ +
+ core directory + + This directory contains the middle layer, that is, the heart + of ALSA drivers. In this directory, the native ALSA modules are + stored. The sub-directories contain different modules and are + dependent upon the kernel config. + + +
+ core/oss + + + The codes for PCM and mixer OSS emulation modules are stored + in this directory. The rawmidi OSS emulation is included in + the ALSA rawmidi code since it's quite small. The sequencer + code is stored in core/seq/oss directory (see + + below). + +
+ +
+ core/ioctl32 + + + This directory contains the 32bit-ioctl wrappers for 64bit + architectures such like x86-64, ppc64 and sparc64. For 32bit + and alpha architectures, these are not compiled. + +
+ +
+ core/seq + + This and its sub-directories are for the ALSA + sequencer. This directory contains the sequencer core and + primary sequencer modules such like snd-seq-midi, + snd-seq-virmidi, etc. They are compiled only when + CONFIG_SND_SEQUENCER is set in the kernel + config. + +
+ +
+ core/seq/oss + + This contains the OSS sequencer emulation codes. + +
+ +
+ core/seq/instr + + This directory contains the modules for the sequencer + instrument layer. + +
+
+ +
+ include directory + + This is the place for the public header files of ALSA drivers, + which are to be exported to the user-space, or included by + several files at different directories. Basically, the private + header files should not be placed in this directory, but you may + still find files there, due to historical reason :) + +
+ +
+ drivers directory + + This directory contains the non-architecture-specific + codes. For example, the dummy pcm driver and the serial MIDI + driver are found in this directory. In the sub-directories, + there are the codes for components which are independent from + bus and cpu architectures. + + +
+ drivers/mpu401 + + The MPU401 and MPU401-UART modules are stored here. + +
+ +
+ drivers/opl3 + + The OPL3 FM-synth stuff is found here. + +
+
+ +
+ i2c directory + + This contains the ALSA i2c components. + + + + Although there is a standard i2c layer on Linux, ALSA uses its + own i2c codes for some cards, because the soundcard needs only a + simple operation and the standard API is too complicated for + such a purpose. + + +
+ i2c/l3 + + This is a sub-directory for ARM L3 i2c. + +
+
+ +
+ synth directory + + This contains the synth middle-level modules. + + + + So far, there is only Emu8000/Emu10k1 synth driver under + synth/emux sub-directory. + +
+ +
+ pci directory + + This and its sub-directories hold the top-level card modules + for PCI soundcards. + + + + The drivers compiled from a single file is stored directly on + pci directory, while the drivers with several source files are + stored on its own sub-directory (e.g. emu10k1, ice1712). + +
+ +
+ isa directory + + This and its sub-directories hold the top-level card modules + for ISA soundcards. + +
+ +
+ arm, ppc, and sparc directories + + These are for the top-level card modules which are + architecture specific. + +
+ +
+ usb directory + + This contains the USB-audio driver. On the latest version, the + USB MIDI driver is integrated together with usb-audio driver. + +
+ +
+ pcmcia directory + + The PCMCIA, especially PCCard drivers will go here. CardBus + drivers will be on pci directory, because its API is identical + with the standard PCI cards. + + + + At this moment, only VX-pocket driver exists. + +
+ +
+ oss directory + + The OSS/Lite source files are stored here on Linux 2.5 (or + later) tree. (In the ALSA driver tarball, it's empty, of course :) + +
+
+ + + + + + + Basic Flow for PCI Drivers + +
+ Outline + + The minimum flow of PCI soundcard is like the following: + + + define the PCI ID table (see the section + PCI Entries + ). + create probe() callback. + create remove() callback. + create pci_driver table which contains the three pointers above. + create init() function just calling pci_module_init() to register the pci_driver table defined above. + create exit() function to call pci_unregister_driver() function. + + +
+ +
+ Full Code Example + + The code example is shown below. Some parts are kept + unimplemented at this moment but will be filled in the + succeeding sections. The numbers in comment lines of + snd_mychip_probe() function are the + markers. + + + Basic Flow for PCI Drivers Example + + + #include + #include + #include + #include + #define SNDRV_GET_ID + #include + + // module parameters (see "Module Parameters") + static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; + static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; + static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP; + + // definition of the chip-specific record + typedef struct snd_mychip mychip_t; + struct snd_mychip { + snd_card_t *card; + // rest of implementation will be in the section + // "PCI Resource Managements" + }; + + // this should be go into + // (see "Management of Cards and Components") + #define mychip_t_magic 0xa15a4501 + + // chip-specific destructor + // (see "PCI Resource Managements") + static int snd_mychip_free(mychip_t *chip) + { + // will be implemented later... + } + + // component-destructor + // (see "Management of Cards and Components") + static int snd_mychip_dev_free(snd_device_t *device) + { + mychip_t *chip = snd_magic_cast(mychip_t, + device->device_data, return -ENXIO); + return snd_mychip_free(chip); + } + + // chip-specific constructor + // (see "Management of Cards and Components") + static int __devinit snd_mychip_create(snd_card_t *card, + struct pci_device *pci, + mychip_t *rchip) + { + mychip_t *chip; + int err; + static snd_device_ops_t ops = { + .dev_free = snd_mychip_dev_free, + }; + + *rchip = NULL; + + // check PCI availability here + // (see "PCI Resource Managements") + + // allocate a chip-specific data with magic-alloc + chip = snd_magic_kcalloc(mychip_t, 0, GFP_KERNEL); + if (chip == NULL) + return -ENOMEM; + + chip->card = card; + + // rest of initialization here; will be implemented + // later, see "PCI Resource Managements" + + if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, + chip, &ops)) < 0) { + snd_mychip_free(chip); + return err; + } + *rchip = chip; + return 0; + } + + // constructor -- see "Constructor" sub-section + static int __devinit snd_mychip_probe(struct pci_dev *pci, + const struct pci_device_id *pci_id) + { + static int dev; + snd_card_t *card; + mychip_t *chip; + int err; + + // (1) + if (dev >= SNDRV_CARDS) + return -ENODEV; + if (!enable[dev]) { + dev++; + return -ENOENT; + } + + // (2) + card = snd_card_new(index[dev], id[dev], THIS_MODULE, 0); + if (card == NULL) + return -ENOMEM; + + // (3) + if ((err = snd_mychip_create(card, pci, &chip)) < 0) { + snd_card_free(card); + return err; + } + + // (4) + // implemented later + + // (5) + strcpy(card->driver, "My Chip"); + strcpy(card->shortname, "My Own Chip 123"); + sprintf(card->longname, "%s at 0x%lx irq %i", + card->shortname, chip->ioport, chip->irq); + + // (6) + if ((err = snd_card_register(card)) < 0) { + snd_card_free(card); + return err; + } + + // (7) + pci_set_drvdata(pci, chip); + dev++; + return 0; + } + + // destructor -- see "Destructor" sub-section + static void __devexit snd_mychip_remove(struct pci_dev *pci) + { + mychip_t *chip = snd_magic_cast(mychip_t, + pci_get_drvdata(pci), return); + if (chip) + snd_card_free(chip->card); + pci_set_drvdata(pci, NULL); + } +]]> + + + +
+ +
+ Constructor + + The real constructor of PCI drivers is probe callback. The + probe callback and other component-constructors which are called + from probe callback should be defined with + __devinit prefix. You + cannot use __init prefix for them, + because any PCI device could be a hotplug device. + + + + In the probe callback, the following scheme is often used. + + +
+ 1) Check and increment the device index. + + + += SNDRV_CARDS) + return -ENODEV; + if (!enable[dev]) { + dev++; + return -ENOENT; + } +]]> + + + + where enable[dev] is the module option. + + + + At each time probe callback is called, check the + availability of the device. If not available, simply increment + the device index and returns. dev will be incremented also + later (step + 7). + +
+ +
+ 2) Create a card instance + + + + + + + + + + The detail will be explained in the section + + Management of Cards and Components. + +
+ +
+ 3) Create a main component + + In this part, the PCI resources are allocated. + + + + + + + + The detail will be explained in the section PCI Resource + Managements. + +
+ +
+ 4) Create other components, such as mixer, MIDI, etc. + + Here you define the basic components such as + PCM, + mixer (e.g. AC97), + MIDI (e.g. MPU-401), + and other interfaces. + Also, if you want a proc + file, define it here, too. + +
+ +
+ 5) Set the driver ID and name strings. + + + +driver, "My Chip"); + strcpy(card->shortname, "My Own Chip 123"); + sprintf(card->longname, "%s at 0x%lx irq %i", + card->shortname, chip->ioport, chip->irq); +]]> + + + + The driver field holds the minimal ID string of the + chip. This is referred by alsa-lib's configurator, so keep it + simple but unique. + Even the same driver can have different driver IDs to + distinguish the functionality of each chip type. + + + + The shortname field is a string shown as more verbose + name. The longname field contains the information which is + shown in /proc/asound/cards. + +
+ +
+ 6) Register the card instance. + + + + + + + + + + Will be explained in the section Management + of Cards and Components, too. + +
+ +
+ 7) Set the PCI driver data and return zero. + + + + + + + + In the above, the chip record is stored. This pointer is + referred in the remove callback and power-management + callbacks, too. + If the card doesn't support the suspend/resume, you can store + the card pointer instead of the chip pointer, so that + snd_card_free can be called directly + without cast in the remove callback. But anyway, be sure + which pointer is used. + +
+
+ +
+ Destructor + + The destructor, remove callback, simply releases the card + instance. Then the ALSA middle layer will release all the + attached components automatically. + + + + It would be typically like the following: + + + +card); + pci_set_drvdata(pci, NULL); + } +]]> + + + + The above code assumes that the chip is allocated + with snd_magic stuff and + has the field to hold the card pointer (see the next + section). + +
+ +
+ Header Files + + For the above example, at least the following include files + are necessary. + + + + + #include + #include + #include + #include + #define SNDRV_GET_ID + #include +]]> + + + + where the last twos are necessary only when module options are + defined in the source file. If the codes are split to several + files, the file without module options don't need them. + + + + In addition to them, you'll need + <linux/interrupt.h> for the interrupt + handling, and <asm/io.h> for the i/o + access. If you use mdelay() or + udelay() functions, you'll need to include + <linux/delay.h>, too. + + + + The ALSA interfaces like PCM or control API are define in other + header files as <sound/xxx.h>. + They have to be included after + <sound/core.h>. + + +
+
+ + + + + + + Management of Cards and Components + +
+ Card Instance + + For each soundcard, a card record must be allocated. + + + + A card record is the headquarters of the soundcard. It manages + the list of whole devices (components) on the soundcard, such as + PCM, mixers, MIDI, synthesizer, and so on. Also, the card + record holds the ID and the name strings of the card, manages + the root of proc files, and controls the power-management states + and hotplug disconnections. The component list on the card + record is used to manage the proper releases of resources at + destruction. + + + + As mentioned above, to create a card instance, call + snd_card_new(). + + + + + + + + + + The function takes four arguments, the card-index number, the + id string, the module pointer (usually + THIS_MODULE), + and the size of extra-data space. The last argument is used to + allocate card->private_data for the + chip-specific data. Note that this data + is allocated by + snd_card_new(). + +
+ +
+ Components + + After the card is created, you can attach the components + (devices) to the card instance. On ALSA driver, a component is + represented as a snd_device_t object. + A component can be a PCM instance, a control interface, a raw + MIDI interface, etc. Each of such instances has one component + entry. + + + + A component can be created via + snd_device_new() function. + + + + + + + + + + This takes the card pointer, the device-level + (SNDRV_DEV_XXX), the data pointer, and the + callback pointers (&ops). The + device-level defines the type of components and the order of + registration and de-registration. For most of components, the + device-level is already defined. For a user-defined component, + you can use SNDRV_DEV_LOWLEVEL. + + + + This function itself doesn't allocate the data space. The data + must be allocated manually beforehand, and its pointer is passed + as the argument. This pointer is used as the identifier + (chip in the above example) for the + instance. + + + + Each ALSA pre-defined component such as ac97 or pcm calls + snd_device_new() inside its + constructor. The destructor for each component is defined in the + callback pointers. Hence, you don't need to take care of + calling a destructor for such a component. + + + + If you would like to create your own component, you need to + set the destructor function to dev_free callback in + ops, so that it can be released + automatically via snd_card_free(). The + example will be shown later as an implementation of a + chip-specific data. + +
+ +
+ Chip-Specific Data + + The chip-specific information, e.g. the i/o port address, its + resource pointer, or the irq number, is stored in the + chip-specific record. + Usually, the chip-specific record is typedef'ed as + xxx_t like the following: + + + + + + + + + + You might have objections against such a typedef, but this + typedef is necessary if you use a magic-cast + (explained later). + + + + In general, there are two ways to allocate the chip record. + + +
+ 1. Allocating via <function>snd_card_new()</function>. + + As mentioned above, you can pass the extra-data-length to the 4th argument of snd_card_new(), i.e. + + + + + + + + whether mychip_t is the type of the chip record. + + + + In return, the allocated record can be accessed as + + + +private_data; +]]> + + + + With this method, you don't have to allocate twice. But you + cannot use magic-cast for this record pointer, + instead. + +
+ +
+ 2. Allocating an extra device. + + + After allocating a card instance via + snd_card_new() (with + NULL on the 4th arg), call + snd_magic_kcalloc(). + + + + + + + + Once when the record is allocated via snd_magic stuff, you + can use magic-cast for the void pointer. + + + + The chip record should have the field to hold the card + pointer at least, + + + + + + + + + + Then, set the card pointer in the returned chip instance. + + + +card = card; +]]> + + + + + + Also, you need to define a magic-value for mychip_t. + + + + + + + (the detail will be described in the + + next subsection). + + + + Next, initialize the fields, and register this chip + record as a low-level device with a specified + ops, + + + + + + + + snd_mychip_dev_free() is the + device-destructor function, which will call the real + destructor. + + + + + +device_data, + return -ENXIO); + return snd_mychip_free(chip); + } +]]> + + + + where snd_mychip_free() is the real destructor. + +
+ +
+ Not a magic but a logic + + Now, you might have a question: What is the advantage of the + second method? Obviously, it looks far more complicated. + + As I wrote many times, the second method allows a + magic-cast for mychip_t. If you + have a void pointer (such as + pcm->private_data), the pointer type + is unknown at the compile time, and you cannot know even if a + wrong pointer type is passed. The compiler would accept + it. The magic-cast checks the pointer type at the runtime (and + whether it's a null pointer, too). Hence, the cast will be + much safer and good for debugging. + + + + As you have already seen, allocation with a magic-header can + be done via snd_magic_kmalloc() or + snd_magic_kcalloc(). + + + + + + + + The difference of these two functions is whether the area is + zero-cleared (kcalloc) or not + (kmalloc). + + + + The first argument of the allocator is the type of the + record. The magic-constant has to be defined for this type + beforehand. In this case, we'll need to define + mychip_t_magic, for example, as already + seen, + + + + + + + + The value is arbitrary but should be unique. + This is usually defined in + <include/sndmagic.h> or + <include/amagic.h> for alsa-driver tree, + but you may define it locally in the code at the early + development stage, since changing + sndmagic.h will lead to the recompilation + of the whole driver codes. + + + + The second argument is the extra-data length. It is usually + zero. The third argument is the flags to be passed to kernel + memory allocator, GFP_XXX. Normally, + GFP_KERNEL is passed. + + + + For casting a pointer, use + snd_magic_cast() macro: + + + + + + + + where source_pointer is the pointer to + be casted (e.g. pcm->private_data), and + action is the action to do if the cast + fails (e.g. return -EINVAL). + + + + For releasing the magic-allocated data, you need to call + snd_magic_kfree() function instead of + kfree(). + + + + + + + + + + If you call kfree() for the + magic-allocated value, it will lead to memory leaks. + When the ALSA drivers are compiled with + CONFIG_SND_DEBUG_MEMORY kernel config (or + configured with ), the + non-matching free will be checked and you'll see warning + messages. + + + + If you are 100% sure that your code is bug-free, you can + compile the driver without + CONFIG_SND_DEBUG_MEMORY kernel config, + so that the magic-allocator and the magic-cast will be + replaced to the normal kmalloc and cast. + +
+
+ +
+ Registration and Release + + After all components are assigned, register the card instance + by calling snd_card_register(). The access + to the device files are enabled at this point. That is, before + snd_card_register() is called, the + components are safely inaccessible from external side. If this + call fails, exit the probe function after releasing the card via + snd_card_free(). + + + + For releasing the card instance, you can call simply + snd_card_free(). As already mentioned, all + components are released automatically by this call. + + + + As further notes, the destructors (both + snd_mychip_dev_free and + snd_mychip_free) cannot be defined with + __devexit prefix, because they may be + called from the constructor, too, at the false path. + + + + For a device which allows hotplugging, you can use + snd_card_free_in_thread. This one will + postpone the destruction and wait in a kernel-thread until all + devices are closed. + + +
+ +
+ + + + + + + PCI Resource Managements + +
+ Full Code Example + + In this section, we'll finish the chip-specific constructor, + destructor and PCI entries. The example code is shown first, + below. + + + PCI Resource Managements Example + +res_port) { + release_resource(chip->res_port); + kfree_nocheck(chip->res_port); + } + // release the irq + if (chip->irq >= 0) + free_irq(chip->irq, (void *)chip); + // release the data + snd_magic_kfree(chip); + return 0; + } + + // chip-specific constructor + static int __devinit snd_mychip_create(snd_card_t *card, + struct pci_dev *pci, + mychip_t **rchip) + { + mychip_t *chip; + int err; + static snd_device_ops_t ops = { + .dev_free = snd_mychip_dev_free, + }; + + *rchip = NULL; + + // check PCI availability (28bit DMA) + if ((err = pci_enable_device(pci)) < 0) + return err; + if (!pci_dma_supported(pci, 0x0fffffff)) { + printk(KERN_ERR "error to set 28bit mask DMA\n"); + return -ENXIO; + } + pci_set_dma_mask(pci, 0x0fffffff); + + chip = snd_magic_kcalloc(mychip_t, 0, GFP_KERNEL); + if (chip == NULL) + return -ENOMEM; + + // initialize the stuff + chip->card = card; + chip->pci = pci; + chip->irq = -1; + + // (1) PCI resource allocation + chip->port = pci_resource_start(pci, 0); + if ((chip->res_port = request_region(chip->port, 8, + "My Chip")) == NULL) { + snd_mychip_free(chip); + printk(KERN_ERR "cannot allocate the port\n"); + return -EBUSY; + } + if (request_irq(pci->irq, snd_mychip_interrupt, + SA_INTERRUPT|SA_SHIRQ, "My Chip", + (void *)chip)) { + snd_mychip_free(chip); + printk(KERN_ERR "cannot grab irq\n"); + return -EBUSY; + } + chip->irq = pci->irq; + + // (2) initialization of the chip hardware + // (not implemented in this document) + + if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, + chip, &ops)) < 0) { + snd_mychip_free(chip); + return err; + } + *rchip = chip; + return 0; + } + + // PCI IDs + static struct pci_device_id snd_mychip_ids[] __devinitdata = { + { PCI_VENDOR_ID_FOO, PCI_DEVICE_ID_BAR, + PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0, }, + .... + { 0, } + }; + MODULE_DEVICE_TABLE(pci, snd_mychip_ids); + + // pci_driver definition + static struct pci_driver driver = { + .name = "My Own Chip", + .id_table = snd_mychip_ids, + .probe = snd_mychip_probe, + .remove = __devexit_p(snd_mychip_remove), + }; + + // initialization of the module + static int __init alsa_card_mychip_init(void) + { + int err; + + if ((err = pci_module_init(&driver)) < 0) { + #ifdef MODULE + printk(KERN_ERR "My chip soundcard not found " + "or device busy\n"); + #endif + return err; + } + return 0; + } + + // clean up the module + static void __exit alsa_card_mychip_exit(void) + { + pci_unregister_driver(&driver); + } + + module_init(alsa_card_mychip_init) + module_exit(alsa_card_mychip_exit) + + EXPORT_NO_SYMBOLS; /* for old kernels only */ +]]> + + + +
+ +
+ Some Hafta's + + The allocation of PCI resources is done in the + probe() function, and usually an extra + xxx_create() function is written for this + purpose. + + + + In the case of PCI devices, you have to call at first + pci_enable_device() function before + allocating resources. Also, you need to set the proper PCI DMA + mask to limit the accessed i/o range. In some cases, you might + need to call pci_set_master() function, + too. + + + + Suppose the 28bit mask, and the code to be added would be like: + + + + + + + +
+ +
+ Resource Allocation + + The allocation of ports and irqs are done via standard kernel + functions. Unlike ALSA ver.0.5.x., there are no helpers for + that. And these resources must be released in the destructor + function (see below). Also, on ALSA 0.9.x, you don't need + allocate (pseudo-)DMA for PCI like 0.5.x. + + + + Now assume that this PCI device has an I/O port with 8 bytes + and an interrupt. Then mychip_t will have the + following fields: + + + + + + + + + + For an i/o port (and also a memory region), you need to have + the resource pointer for the standard resource management. For + an irq, you have to keep only the irq number (integer). But you + need to initialize this number as -1 before actual allocation, + since irq 0 is valid. The port address and its resource pointer + can be initialized as null by + snd_magic_kcalloc() automatically, so you + don't have to take care of it. + + + + The allocation of an i/o port is done like this: + + + +port = pci_resource_start(pci, 0); + if ((chip->res_port = request_region(chip->port, 8, + "My Chip")) == NULL) { + printk(KERN_ERR "cannot allocate the port 0x%lx\n", + chip->port); + snd_mychip_free(chip); + return -EBUSY; + } +]]> + + + + + + It will reserve the i/o port region of 8 bytes of the given + PCI device. The returned value, chip->res_port, is allocated + via kmalloc() by + request_region(). The pointer must be + released via kfree(), but there is some + problem regarding this. This issue will be explained more below. + + + + The allocation of an interrupt source is done like this: + + + +irq, snd_mychip_interrupt, + SA_INTERRUPT|SA_SHIRQ, "My Chip", + (void *)chip)) { + snd_mychip_free(chip); + printk(KERN_ERR "cannot grab irq %d\n", pci->irq); + return -EBUSY; + } + chip->irq = pci->irq; +]]> + + + + where snd_mychip_interrupt() is the + interrupt handler defined later. + Note that chip->irq should be defined + only when request_irq() succeeded. + + + + On the PCI bus, the interrupts can be shared. Thus, + SA_SHIRQ is given as the interrupt flag of + request_irq(). + + + + The last argument of request_irq() is the + data pointer passed to the interrupt handler. Usually, the + chip-specific record is used for that, but you can use what you + like, too. + + + + I won't define the detail of the interrupt handler at this + point, but at least its appearance can be explained now. The + interrupt handler looks usually like the following: + + + + + + + + Again the magic-cast is used here to get the correct pointer + from the second argument. + + + + Now let's write the corresponding destructor for the resources + above. The role of destructor is simple: disable the hardware + (if already activated) and release the resources. So far, we + have no hardware part, so the disabling is not written here. + + + + For releasing the resources, check-and-release + method is a safer way. For the i/o port, do like this: + + + +res_port) { + release_resource(chip->res_port); + kfree_nocheck(chip->res_port); + } +]]> + + + + + + As you can see, the i/o resource pointer is also to be freed + via kfree_nocheck() after + release_resource() is called. You + cannot use kfree() here, because on ALSA, + kfree() may be a wrapper to its own + allocator with the memory debugging. Since the resource pointer + is allocated externally outside the ALSA, it must be released + via the native + kfree(). + kfree_nocheck() is used for that; it calls + the native kfree() without wrapper. + + + + For releasing the interrupt, do like this: + + + +irq >= 0) + free_irq(chip->irq, (void *)chip); +]]> + + + + And finally, release the chip-specific record. + + + + + + + + + + The chip instance is freed via + snd_magic_kfree(). Please use this function + for the object allocated by + snd_magic_kmalloc(). If you free it with + kfree(), it won't work properly and will + result in the memory leak. Also, again, remember that you cannot + set __devexit prefix for this destructor. + + + + We didn't implement the hardware-disabling part in the above. + If you need to do this, please note that the destructor may be + called even before the initialization of the chip is completed. + It would be better to have a flag to skip the hardware-disabling + if the hardware was not initialized yet. + + + + When the chip-data is assigned to the card using + snd_device_new() with + SNDRV_DEV_LOWLELVEL , its destructor is + called at the last. that is, it is assured that all other + components like PCMs and controls have been already released. + You don't have to call stopping PCMs, etc. explicitly, but just + stop the hardware in the low-level. + + + + The management of a memory-mapped region is almost as same as + the management of an i/o port. You'll need three fields like + the following: + + + + + + + + and the allocation would be (assuming its size is 512 bytes): + + + +iobase_phys = pci_resource_start(pci, 0); + chip->iobase_virt = (unsigned long) + ioremap_nocache(chip->iobase_phys, 512); + if ((chip->res_port = request_mem_region(chip->port, 512, + "My Chip")) == NULL) { + printk(KERN_ERR "cannot allocate the memory region\n"); + snd_mychip_free(chip); + return -EBUSY; + } +]]> + + + + and the corresponding destructor would be: + + + +iobase_virt) + iounmap((void *)chip->iobase_virt); + if (chip->res_iobase) { + release_resource(chip->res_iobase); + kfree_nocheck(chip->res_iobase); + } + .... + } +]]> + + + + +
+ +
+ PCI Entries + + So far, so good. Let's finish the rest of missing PCI + stuffs. At first, we need a + pci_device_id table for this + chipset. It's a table of PCI vendor/device ID number, and some + masks. + + + + For example, + + + + + + + + + + The first and second fields of + pci_device_id struct are the vendor and + device IDs. If you have nothing special to filter the matching + devices, you can use the rest of fields like above. The last + field of pci_device_id struct is a + private data for this entry. You can specify any value here, for + example, to tell the type of different operations per each + device IDs. Such an example is found in intel8x0 driver. + + + + The last entry of this list is the terminator. You must + specify this all-zero entry. + + + + Then, prepare the pci_driver record: + + + + + + + + + + The probe and + remove functions are what we already + defined in + the previous sections. The remove should + be defined with + __devexit_p() macro, so that it's not + defined for built-in (and non-hot-pluggable) case. The + name + field is the name string of this device. Note that you must not + use a slash / in this string. + + + + And at last, the module entries: + + + + + + + + + + Note that these module entries are tagged with + __init and + __exit prefixes, not + __devinit nor + __devexit. + + + + Oh, one thing was forgotten. If you have no exported symbols, + you need to declare it on 2.2 or 2.4 kernels (on 2.5 kernels + it's not necessary, though). + + + + + + + + That's all! + +
+
+ + + + + + + PCM Interface + +
+ General + + The PCM middle layer of ALSA is quite powerful and it is only + necessary for each driver to implement the low-level functions + to access its hardware. + + + + For accessing to the PCM layer, you need to include + <sound/pcm.h> above all. In addition, + <sound/pcm_params.h> might be needed + if you access to some functions related with hw_param. + + + + Each card device can have up to four pcm instances. A pcm + instance corresponds to a pcm device file. The limitation of + number of instances comes only from the available bit size of + the linux's device number. Once when 64bit device number is + used, we'll have more available pcm instances. + + + + A pcm instance consists of pcm playback and capture streams, + and each pcm stream consists of one or more pcm substreams. Some + soundcard supports the multiple-playback function. For example, + emu10k1 has a PCM playback of 32 stereo substreams. In this case, at + each open, a free substream is (usually) automatically chosen + and opened. Meanwhile, when only one substream exists and it was + already opened, the succeeding open will result in the blocking + or the error with EAGAIN according to the + file open mode. But you don't have to know the detail in your + driver. The PCM middle layer will take all such jobs. + +
+ +
+ Full Code Example + + The example code below does not include any hardware access + routines but shows only the skeleton, how to build up the PCM + interfaces. + + + PCM Example Code + + + .... + + #define chip_t mychip_t + .... + + /* hardware definition */ + static snd_pcm_hardware_t snd_mychip_playback_hw = { + .info = (SNDRV_PCM_INFO_MMAP | + SNDRV_PCM_INFO_INTERLEAVED | + SNDRV_PCM_INFO_BLOCK_TRANSFER | + SNDRV_PCM_INFO_MMAP_VALID), + .formats = SNDRV_PCM_FMTBIT_S16_LE, + .rates = SNDRV_PCM_RATE_8000_48000, + .rate_min = 8000, + .rate_max = 48000, + .channels_min = 2, + .channels_max = 2, + .buffer_bytes_max = 32768, + .period_bytes_min = 4096, + .period_bytes_max = 32768, + .periods_min = 1, + .periods_max = 1024, + }; + + /* open callback */ + static int snd_mychip_pcm_open(snd_pcm_substream_t *subs) + { + mychip_t *chip = snd_pcm_substream_chip(substream); + snd_pcm_runtime_t *runtime = substream->runtime; + + runtime->hw = snd_mychip_playback_hw; + // more hardware-initialization will be done here + return 0; + } + + /* close callback */ + static int snd_mychip_pcm_close(snd_pcm_substream_t *substream) + { + mychip_t *chip = snd_pcm_substream_chip(substream); + // the hardware-specific codes will be here + return 0; + + } + + /* hw_params callback */ + static int snd_mychip_pcm_hw_params(snd_pcm_substream_t *substream, + snd_pcm_hw_params_t * hw_params) + { + return snd_pcm_lib_malloc_pages(substream, + params_buffer_bytes(hw_params)); + } + + /* hw_free callback */ + static int snd_mychip_pcm_hw_free(snd_pcm_substream_t *substream) + { + return snd_pcm_lib_free_pages(substream); + } + + /* prepare callback */ + static int snd_mychip_pcm_prepare(snd_pcm_substream_t *substream) + { + mychip_t *chip = snd_pcm_substream_chip(substream); + snd_pcm_runtime_t *runtime = substream->runtime; + + // set up the hardware with the current configuration + // for example... + mychip_set_sample_format(chip, runtime->format); + mychip_set_sample_rate(chip, runtime->rate); + mychip_set_channels(chip, runtime->channels); + mychip_set_dma_setup(chip, runtime->dma_area, + chip->buffer_size, + chip->period_size); + return 0; + } + + /* trigger callback */ + static int snd_mychip_pcm_trigger(snd_pcm_substream_t *substream, + int cmd) + { + switch (cmd) { + case SNDRV_PCM_TRIGGER_START: + // do something to start the PCM engine + break; + case SNDRV_PCM_TRIGGER_STOP: + // do something to stop the PCM engine + break; + default: + return -EINVAL; + } + } + + /* pointer callback */ + static snd_pcm_uframes_t + snd_mychip_pcm_pointer(snd_pcm_substream_t *substream) + { + mychip_t *chip = snd_pcm_substream_chip(substream); + unsigned int current_ptr; + + // get the current hardware pointer + current_ptr = mychip_get_hw_pointer(chip); + return current_ptr; + } + + /* operators */ + static snd_pcm_ops_t snd_mychip_playback_ops = { + .open = snd_mychip_playback_open, + .close = snd_mychip_playback_close, + .ioctl = snd_pcm_lib_ioctl, + .hw_params = snd_mychip_pcm_hw_params, + .hw_free = snd_mychip_pcm_hw_free, + .prepare = snd_mychip_pcm_prepare, + .trigger = snd_mychip_pcm_trigger, + .pointer = snd_mychip_pcm_pointer, + }; + + /* + * definitions of capture are omitted here... + */ + + /* create a pcm device */ + static int __devinit snd_mychip_new_pcm(mychip_t *chip) + { + snd_pcm_t *pcm; + int err; + + if ((err = snd_pcm_new(chip->card, "My Chip", 0, 1, 1, + &pcm)) < 0) + return err; + pcm->private_data = chip; + strcpy(pcm->name, "My Chip"); + chip->pcm = pcm; + /* set operators */ + snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, + &snd_mychip_playback_ops); + snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, + &snd_mychip_capture_ops); + /* pre-allocation of buffers */ + snd_pcm_lib_preallocate_pci_pages_for_all(chip->pci, pcm, + 64*1024, 64*1024); + return 0; + } +]]> + + + +
+ +
+ Constructor + + A pcm instance is allocated snd_pcm_new() + function. It would be better to create a constructor for pcm, + namely, + + + +card, "My Chip", 0, 1, 1, + &pcm)) < 0) + return err; + pcm->private_data = chip; + strcpy(pcm->name, "My Chip"); + chip->pcm = pcm; + .... + return 0; + } +]]> + + + + + + The snd_pcm_new() function takes the four + arguments. The first argument is the card pointer to which this + pcm is assigned, and the second is the ID string. + + + + The third argument (index, 0 in the + above) is the index of this new pcm. It begins from zero. When + you will create more than one pcm instances, specify the + different numbers in this argument. For example, + index = 1 for the second PCM device. + + + + The fourth and fifth arguments are the number of substreams + for playback and capture, respectively. Here both 1 are given in + the above example. When no playback or no capture is available, + pass 0 to the corresponding argument. + + + + If a chip supports multiple playbacks or captures, you can + specify more numbers, but they must be handled properly in + open/close, etc. callbacks. When you need to know which + substream you are referring to, then it can be obtained from + snd_pcm_substream_t data passed to each callback + as follows: + + + +number; +]]> + + + + + + After the pcm is created, you need to set operators for each + pcm stream. + + + + + + + + + + The operators are defined typically like this: + + + + + + + + Each of callbacks is explained in the subsection + + Operators. + + + + After setting the operators, most likely you'd like to + pre-allocate the buffer. For the pre-allocation, simply call + the following: + + + +pci, pcm, + 64*1024, 64*1024); +]]> + + + + It will allocate up to 64kB buffer as default. The details of + buffer management will be described in the later section Buffer and Memory + Management. + + + + Additionally, you can set some extra information for this pcm + in pcm->info_flags. + The available values are defined as + SNDRV_PCM_INFO_XXX in + <sound/asound.h>, which is used for + the hardware definition (described later). When your soundchip + supports only half-duplex, specify like this: + + + +info_flags = SNDRV_PCM_INFO_HALF_DUPLEX; +]]> + + + +
+ +
+ ... And the Destructor? + + The destructor for a pcm instance is not always + necessary. Since the pcm device will be released by the middle + layer code automatically, you don't have to call destructor + explicitly. + + + + The destructor would be necessary when you created some + special records internally and need to release them. In such a + case, set the destructor function to + pcm->private_free: + + + PCM Instance with a Destructor + +private_data, return); + // free your own data + kfree(chip->my_private_pcm_data); + // do what you like else... + } + + static int __devinit snd_mychip_new_pcm(mychip_t *chip) + { + snd_pcm_t *pcm; + .... + // allocate your own data + chip->my_private_pcm_data = kmalloc(...); + // set the destructor + pcm->private_data = chip; + pcm->private_free = mychip_pcm_free; + .... + } +]]> + + + +
+ +
+ Operators + + OK, now let me explain the detail of each pcm callback + (ops). In general, every callback must + return 0 if successful, or a negative number with the error + number such as -EINVAL at any + error. + + + + The callback function takes at least the argument with + snd_pcm_substream_t pointer. For retrieving the + chip record from the given substream instance, you can use the + following macro. + + + + + + + + + + It's expanded with a magic-cast, so the cast-error is + automatically checked. You should define chip_t at + the beginning of the code, since this will be referred in many + places of pcm and control interfaces. + + +
+ open callback + + + + + + + + This is called when a pcm substream is opened. + + + + At least, here you have to initialize the runtime hardware + record. Typically, this is done by like this: + + + +runtime; + + runtime->hw = snd_mychip_playback_hw; + return 0; + } +]]> + + + + where snd_mychip_playback_hw is the + pre-defined hardware record. + + + + + + + + + + The similar struct exists on ALSA 0.5.x driver, so you can + guess the values if you already wrote a driver. + + + + The info field contains the type and + capabilities of this pcm. The bit flags are defined in + <sound/asound.h> as + SNDRV_PCM_INFO_XXX. Here, at least, you + have to specify whether the mmap is supported and which + interleaved format is supported. + When the mmap is supported, add + SNDRV_PCM_INFO_MMAP flag here. When the + hardware supports the interleaved or the non-interleaved + format, SNDRV_PCM_INFO_INTERLEAVED or + SNDRV_PCM_INFO_NONINTERLEAVED flag must + be set, respectively. If both are supported, you can set both, + too. + + + + In the above example, MMAP_VALID and + BLOCK_TRANSFER are specified for OSS mmap + mode. Usually both are set. Of course, + MMAP_VALID is set only if the mmap is + really supported. + + + + The other possible flags are + SNDRV_PCM_INFO_PAUSE and + SNDRV_PCM_INFO_RESUME. The + PAUSE bit means that the pcm supports the + pause operation, while the + RESUME bit means that the pcm supports + the suspend/resume operation. If these flags + are set, the trigger callback below + must handle the corresponding commands. + + + + formats field contains the bit-flags + of supported formats (SNDRV_PCM_FMTBIT_XXX). + If the hardware supports more than one format, give all or'ed + bits. In the example above, the signed 16bit little-endian + format is specified. + + + + rates field contains the bit-flags of + supported rates (SNDRV_PCM_RATE_XXX). + When the chip supports continuous rates, pass + CONTINUOUS bit additionally. + The pre-defined rate bits are only for typical rates. If your + chip supports unconventional rates, you need to add + KNOT bit and set up the + constraint manually (explained later). + + + + There have been many changes of terminology between + ALSA 0.5.x and 0.9.x. + On the ALSA 0.9.x world, period means what is + known as fragment in the OSS. It's the least + size of (a part of) the buffer to generate an interrupt. + + + + Now, taking the new terminology into account, the other fields + are self-explanatory (I hope). Please note that here, both + min/max buffer and period sizes are specified in bytes. + + + + Some drivers allocate the private instance for each pcm + substream. It can be stored in + substream->runtime->private_data. + Since it's a void pointer, you + should use magic-kmalloc and magic-cast for such an object. + + + +runtime->private_data = data; + .... + } +]]> + + + + + + The allocated object must be released in the close callback below. + +
+ +
+ close callback + + + + + + + + Obviously, this is called when a pcm substream is closed. + + + + Any private instance for a pcm substream allocated in the + open callback will be released here. + + + +runtime->private_data); + .... + } +]]> + + + +
+ +
+ ioctl callback + + This is used for any special action to pcm ioctls. But + usually you can pass a generic ioctl callback, + snd_pcm_lib_ioctl. + +
+ +
+ hw_params callback + + + + + + + + This and hw_free callbacks exist + only on ALSA 0.9.x. + + + + This is called when the hardware parameter + (hw_params) is set + up by the application, + that is, once when the buffer size, the period size, the + format, etc. are defined for the pcm substream. + + + + Many hardware set-up should be done in this callback, + including the allocation of buffers. + + + + Parameters to be initialized are retrieved by + params_xxx() macros. For allocating a + buffer, you can call a helper function, + + + + + + + + snd_pcm_lib_malloc_pages() is available + only when the DMA buffers have been pre-allocated. + See the section + Buffer Types for more details. + + + + Note that this and prepare callbacks + may be called multiple times per initialization. + For example, the OSS emulation may + call these callbacks at each change via its ioctl. + + + + Thus, you need to take care not to allocate the same buffers + many times, which will lead to memory leak! Calling the + helper function above many times is OK. It will release the + previous buffer automatically when it was already allocated. + + + + Another note is that this callback is non-atomic + (schedulable). This is important, because the + prepare callback + is atomic (non-schedulable). That is, mutex or any + schedule-related functions are available only in + hw_params callback. + Please see the subsection + + Atomicity for details. + +
+ +
+ hw_free callback + + + + + + + + + + This is called to release the resources allocated via + hw_params. For example, releasing the + buffer via + snd_pcm_lib_malloc_pages() is done by + calling the following: + + + + + + + + + + This callback may be called multiple times, too. + Keep track whether the resource was already released. + +
+ +
+ prepare callback + + + + + + + + + + This callback is called when the pcm is + prepared. You can set the format type, sample + rate, etc. here. The difference from + hw_params is that the + prepare callback will be called at each + time + snd_pcm_prepare() is called, i.e. when + recovered after underruns, etc. + + + + As mentioned above, this callback is atomic. + + + + In this and the following callbacks, you can refer to the + values via the runtime record, + substream->runtime. + For example, to get the current + rate, format or channels, access to + runtime->rate, + runtime->format or + runtime->channels, respectively. + The physical address of the allocated buffer is set to + runtime->dma_area. The buffer and period sizes are + in runtime->buffer_size and runtime->period_size, + respectively. + + + + Note that the period and the buffer sizes are stored in + frames. In the ALSA world, 1 frame = channels + * samples-size. For conversion between frames and bytes, you + can use the helper functions, + frames_to_bytes() and + bytes_to_frames(). + + + +period_size); +]]> + + + + + + Be careful that this callback will be called many times at + each set up, too. + +
+ +
+ trigger callback + + + + + + + + This is called when the pcm is started, stopped or paused. + + + + Which action is specified in the second argument, + SNDRV_PCM_TRIGGER_XXX in + <sound/pcm.h>. At least, + START and STOP + commands must be defined in this callback. + + + + + + + + + + When the pcm supports the pause operation (given in info + field of the hardware table), PAUSE_PUSE + and PAUSE_RELEASE commands must be + handled here, too. The former is the command to pause the pcm, + and the latter to restart the pcm again. + + + + When the pcm supports the suspend/resume operation, + SUSPEND and RESUME + commands must be handled, too. Obviously it does suspend and + resume of the pcm substream. Usually, the + SUSPEND is identical with + STOP command and the + RESUME is identical with + START command. + + + + This callback is also atomic. + +
+ +
+ pointer callback + + + + + + + + This callback is called when the PCM middle layer inquires + the current hardware position on the buffer. The position must + be returned in frames (which was in bytes on ALSA 0.5.x), + ranged from 0 to buffer_size - 1. + + + + This is called usually from the buffer-update routine in the + pcm middle layer, which is invoked when + snd_pcm_period_elapsed() is called in the + interrupt routine. Then the pcm middle layer updates the + position and calculates the available space, and wakes up the + sleeping poll threads, etc. + + + + This callback is also atomic. + +
+ +
+ copy and silence callbacks + + These callbacks are not mandatory, and can be omitted in + most cases. These callbacks are used when the hardware buffer + cannot be on the normal memory space. Some chips have their + own buffer on the hardware which is not mappable. In such a + case, you have to transfer the data manually from the memory + buffer to the hardware buffer. Or, if the buffer is + non-contiguous on both physical and virtual memory spaces, + these callbacks must be defined, too. + + + + If these two callbacks are defined, copy and set-silence + operations are done by them. The detailed will be described in + the later section Buffer and Memory + Management. + +
+ +
+ page callback + + + This callback is also not mandatory. This callback is used + mainly for the non-contiguous buffer. The mmap calls this + callback to get the page address. Some examples will be + explained in the later section Buffer and Memory + Management, too. + +
+
+ +
+ Interrupt Handler + + The rest of pcm stuff is the PCM interrupt handler. The + role of PCM interrupt handler in the sound driver is to update + the buffer position and to tell the PCM middle layer when the + buffer position goes across the prescribed period size. To + inform this, call snd_pcm_period_elapsed() + function. + + + + There are several types of sound chips to generate the interrupts. + + +
+ Interrupts at the period (fragment) boundary + + This is the most frequently found type: the hardware + generates an interrupt at each period boundary. + In this case, you can call + snd_pcm_period_elapsed() at each + interrupt. + + + + snd_pcm_period_elapsed() takes the + substream pointer as its argument. Thus, you need to keep the + substream pointer accessible from the chip instance. For + example, define substream field in the chip record to hold the + current running substream pointer, and set the pointer value + at open callback (and reset at close callback). + + + + If you aquire a spinlock in the interrupt handler, and the + lock is used in other pcm callbacks, too, then you have to + release the lock before calling + snd_pcm_period_elapsed(), because + snd_pcm_period_elapsed() calls other pcm + callbacks inside. + + + + A typical coding would be like: + + + Interrupt Handler Case #1 + +lock); + .... + if (pcm_irq_invoked(chip)) { + // call updater, unlock before it + spin_unlock(&chip->lock); + snd_pcm_period_elapsed(chip->substream); + spin_lock(&chip->lock); + } + .... + spin_unlock(&chip->lock); + } +]]> + + + +
+ +
+ High-frequent timer interrupts + + This is the case when the hardware doesn't generate interrupts + at the period boundary but do timer-interrupts at the fixed + timer rate (e.g. es1968 or ymfpci drivers). + In this case, you need to check the current hardware + position and accumulates the processed sample length at each + interrupt. When the accumulated size overcomes the period + size, call + snd_pcm_period_elapsed() and reset the + accumulator. + + + + A typical coding would be like the following. + + + Interrupt Handler Case #2 + +lock); + .... + if (pcm_irq_invoked(chip)) { + unsigned int last_ptr, size; + // get the current hardware pointer (in frames) + last_ptr = get_hw_ptr(chip); + // calculate the processed frames since the + // last update + if (last_ptr < chip->last_ptr) + size = runtime->buffer_size + last_ptr + - chip->last_ptr; + else + size = last_ptr - chip->last_ptr; + // remember the last updated point + chip->last_ptr = last_ptr; + // accumulate the size + chip->size += size; + // over the period boundary? + if (chip->size >= runtime->period_size) { + // reset the accumulator + chip->size %= runtime->period_size; + // call updater + spin_unlock(&chip->lock); + snd_pcm_period_elapsed(substream); + spin_lock(&chip->lock); + } + } + .... + spin_unlock(&chip->lock); + } +]]> + + + +
+ +
+ On calling <function>snd_pcm_period_elapsed()</function> + + In both cases, even if more than one period are elapsed, you + don't have to call + snd_pcm_period_elapsed() many times. Call + only once. And the pcm layer will check the current hardware + pointer and update to the latest status. + +
+
+ +
+ Atomicity + + One of the most important (and thus difficult to debug) problem + on the kernel programming is the race condition. + On linux kernel, usually it's solved via spin-locks or + semaphores. In general, if the race condition may + happen in the interrupt handler, it's handled as atomic, and you + have to use spinlock for protecting the critical session. If it + never happens in the interrupt and it may take relatively long + time, you should use semaphore. + + + + As already seen, some pcm callbacks are atomic and some are + not. For example, hw_params callback is + non-atomic, while prepare callback is + atomic. This means, the latter is called already in a spinlock + held by the PCM middle layer. Please take this atomicity into + account when you use a spinlock or a semaphore in the callbacks. + + + + In the atomic callbacks, you cannot use functions which may call + schedule or go to + sleep. The semaphore and mutex do sleep, + and hence they cannot be used inside the atomic callbacks + (e.g. prepare callback). + For taking a certain delay in such a callback, please use + udelay() or mdelay(). + + + + This atomicity problem appears also in the initialization of the + hardware when the power-management is supported. The functions + for suspending and resuming the chip must be atomic, i.e. no + mutex nor sleep can be used in them. + + +
+
+ Constraints + + If your chip supports unconventional sample rates, or only the + limited samples, you need to set a constraint for the + condition. + + + + For example, in order to restrict the sample rates in the some + supported values, use + snd_pcm_hw_constraint_list(). + You need to call this function in the open callback. + + + Example of Hardware Constraints + +runtime, 0, + SNDRV_PCM_HW_PARAM_RATE, + &constraints_rates); + if (err < 0) + return err; + .... + } +]]> + + + + + + There are many different constraints. You can even define your + own constraint rules. I won't explain the details here, rather I + would like to say, Luke, use the source. + +
+ +
+ + + + + + + Control Interface + +
+ General + + The control interface is used widely for many switches, + sliders, etc. which are accessed from the user-space. Its most + important use is the mixer interface. In other words, on ALSA + 0.9.x, all the mixer stuff is implemented on the control kernel + API (while there was an independent mixer kernel API on 0.5.x). + + + + ALSA has a well-defined AC97 control module. If your chip + supports only the AC97 and nothing else, you can skip this + section. + + + + The control API is defined in + <sound/control.h>. + Include this file if you add your own controls. + +
+ +
+ Definition of Controls + + For creating a new control, you need to define the three + callbacks: info, + get and + put. Then, define a + snd_kcontrol_new_t record, such as: + + + Definition of a Control + + + + + + + + Most likely the control is created via + snd_ctl_new1(), and in such a case, you can + add __devinitdata prefix to the + definition like above. + + + + The iface field specifies the type of + the control, + SNDRV_CTL_ELEM_IFACE_XXX. There are + MIXER, PCM, + CARD, etc. + + + + The name is the name identifier + string. On ALSA 0.9.x, the control name is very important, + because its role is classified from its name. There are + pre-defined standard control names. The details are described in + the subsection + + Control Names. + + + + The index field holds the index number + of this control. If there are several different controls with + the same name, they can be distinguished by the index + number. This is the case when + several codecs exist on the card. If the index is zero, you can + omit the definition above. + + + + The access field contains the access + type of this control. Give the combination of bit masks, + SNDRV_CTL_ELEM_ACCESS_XXX, there. + The detailed will be explained in the subsection + + Access Flags. + + + + The private_values field contains + an arbitrary long integer value for this record. When using + generic info, + get and + put callbacks, you can pass a value + through this field. If several small numbers are necessary, you can + combine them in bitwise. Or, it's possible to give a pointer + (casted to unsigned long) of some record to this field, too. + + + + The other three are