From 9e1bf581d67d87a1d7fc0ea500729e3a03643a26 Mon Sep 17 00:00:00 2001 From: Planet-Lab Support Date: Mon, 8 Aug 2005 21:12:09 +0000 Subject: [PATCH] This commit was manufactured by cvs2svn to create tag 'after-2_6_9-merge-fixes'. --- .cvsignore | 1 - CREDITS | 22 +- Documentation/00-INDEX | 54 +- Documentation/DMA-API.txt | 2 +- Documentation/DocBook/Makefile | 15 +- Documentation/DocBook/deviceiobook.tmpl | 103 +- Documentation/DocBook/kernel-api.tmpl | 5 - Documentation/DocBook/kernel-hacking.tmpl | 2 +- Documentation/DocBook/libata.tmpl | 192 +- Documentation/DocBook/librs.tmpl | 287 -- Documentation/DocBook/mousedrivers.tmpl | 1022 ++++ Documentation/DocBook/mtdnand.tmpl | 1318 ----- Documentation/DocBook/procfs-guide.tmpl | 4 +- Documentation/DocBook/videobook.tmpl | 14 +- Documentation/IO-mapping.txt | 7 +- Documentation/RCU/listRCU.txt | 2 +- Documentation/arm/Booting | 4 - Documentation/arm/IXP2000 | 10 +- Documentation/arm/IXP4xx | 11 +- Documentation/arm/README | 4 +- .../arm/Samsung-S3C24XX/EB2410ITX.txt | 24 +- .../arm/Samsung-S3C24XX/Overview.txt | 19 +- Documentation/arm/Samsung-S3C24XX/Suspend.txt | 106 - Documentation/arm/Sharp-LH/IOBarrier | 33 +- Documentation/block/as-iosched.txt | 2 +- Documentation/block/biodoc.txt | 3 +- Documentation/block/deadline-iosched.txt | 2 +- Documentation/cdrom/00-INDEX | 2 - Documentation/cdrom/packet-writing.txt | 86 - Documentation/ckrm/mem_rc.design | 122 +- Documentation/ckrm/mem_rc.usage | 54 +- Documentation/ckrm/numtasks | 122 - Documentation/computone.txt | 15 +- Documentation/cpqarray.txt | 54 +- Documentation/cpu-freq/cpufreq-nforce2.txt | 19 - Documentation/cpu-freq/user-guide.txt | 1 - Documentation/crypto/api-intro.txt | 3 - Documentation/devices.txt | 31 +- Documentation/digiboard.txt | 272 + Documentation/digiepca.txt | 26 +- Documentation/dnotify.txt | 6 - Documentation/dvb/README.dibusb | 247 - Documentation/dvb/avermedia.txt | 26 +- Documentation/dvb/cards.txt | 18 +- Documentation/dvb/contributors.txt | 2 - Documentation/dvb/firmware.txt | 120 + Documentation/dvb/get_dvb_firmware | 339 -- Documentation/dvb/readme.txt | 13 +- Documentation/dvb/ttusb-dec.txt | 40 +- Documentation/dvb/udev.txt | 46 - Documentation/fb/matroxfb.txt | 7 - Documentation/fb/vesafb.txt | 7 +- Documentation/filesystems/Locking | 12 +- Documentation/filesystems/devfs/ChangeLog | 2 +- Documentation/filesystems/devfs/README | 47 + Documentation/filesystems/ext2.txt | 60 +- Documentation/filesystems/ntfs.txt | 180 +- Documentation/filesystems/proc.txt | 84 +- Documentation/filesystems/ufs.txt | 15 +- Documentation/filesystems/vfs.txt | 197 +- Documentation/floppy.txt | 48 +- Documentation/ftape.txt | 96 +- Documentation/hw_random.txt | 69 + Documentation/i2c/dev-interface | 4 +- Documentation/i2c/i2c-stub | 33 - Documentation/i2c/sysfs-interface | 32 +- Documentation/i2c/writing-clients | 74 +- Documentation/ia64/serial.txt | 144 - Documentation/ibm-acpi.txt | 474 -- Documentation/ide.txt | 11 +- Documentation/ioctl/cdrom.txt | 966 ---- Documentation/ioctl/hdio.txt | 965 ---- Documentation/isdn/README.eicon | 118 + Documentation/kbuild/makefiles.txt | 38 +- Documentation/kbuild/modules.txt | 487 +- Documentation/kdump.txt | 105 - Documentation/kernel-parameters.txt | 113 +- Documentation/keys.txt | 836 --- Documentation/md.txt | 23 +- Documentation/memory.txt | 6 +- Documentation/mkdev.ida | 40 + Documentation/networking/e100.txt | 138 +- Documentation/networking/e1000.txt | 217 +- Documentation/networking/ip-sysctl.txt | 6 - Documentation/networking/ixgb.txt | 37 +- Documentation/networking/proc_net_tcp.txt | 47 - Documentation/nmi_watchdog.txt | 14 - Documentation/parisc/registers | 23 +- Documentation/pci.txt | 21 +- Documentation/pm.txt | 8 +- Documentation/power/kernel_threads.txt | 41 - Documentation/power/pci.txt | 51 +- Documentation/power/swsusp.txt | 82 +- Documentation/power/video.txt | 11 +- Documentation/power/video_extension.txt | 34 - Documentation/prio_tree.txt | 107 - Documentation/ramdisk.txt | 141 +- Documentation/rocket.txt | 108 +- Documentation/s390/monreader.txt | 197 - Documentation/s390/s390dbf.txt | 55 +- Documentation/scsi/ChangeLog.megaraid | 24 - Documentation/scsi/scsi_mid_low_api.txt | 56 +- Documentation/scsi/sym53c8xx_2.txt | 358 +- Documentation/seclvl.txt | 97 - Documentation/sonypi.txt | 62 +- .../sound/alsa/ALSA-Configuration.txt | 14 +- .../alsa/DocBook/writing-an-alsa-driver.tmpl | 45 +- Documentation/sound/alsa/Joystick.txt | 10 +- Documentation/sound/oss/ChangeLog.awe | 230 + Documentation/sound/oss/ChangeLog.multisound | 213 + Documentation/sound/oss/README.modules | 5 +- Documentation/stable_api_nonsense.txt | 193 - Documentation/sysctl/vm.txt | 2 +- Documentation/sysrq.txt | 8 - Documentation/time_interpolators.txt | 23 +- Documentation/tipar.txt | 26 +- Documentation/tty.txt | 12 +- Documentation/usb/error-codes.txt | 43 +- Documentation/usb/gadget_serial.txt | 332 -- Documentation/usb/silverlink.txt | 6 +- Documentation/usb/sn9c102.txt | 229 +- Documentation/usb/usb-serial.txt | 56 - Documentation/usb/w9968cf.txt | 51 +- Documentation/video4linux/meye.txt | 38 +- Documentation/vm/overcommit-accounting | 3 - Documentation/x86_64/boot-options.txt | 16 +- MAINTAINERS | 111 +- Makefile | 67 +- arch/alpha/Makefile | 2 +- arch/alpha/boot/bootloader.lds | 1 - arch/alpha/boot/bootp.c | 19 +- arch/alpha/boot/bootpz.c | 25 +- arch/alpha/boot/head.S | 21 - arch/alpha/boot/misc.c | 12 + arch/alpha/kernel/alpha_ksyms.c | 2 +- arch/alpha/kernel/console.c | 2 +- arch/alpha/kernel/irq.c | 2 +- arch/alpha/kernel/pci.c | 20 +- arch/alpha/kernel/pci_impl.h | 1 + arch/alpha/kernel/signal.c | 2 +- arch/alpha/kernel/smp.c | 2 +- arch/alpha/kernel/srmcons.c | 31 +- arch/alpha/kernel/sys_alcor.c | 2 +- arch/alpha/kernel/sys_cabriolet.c | 2 +- arch/alpha/kernel/sys_dp264.c | 2 +- arch/alpha/kernel/sys_eb64p.c | 2 +- arch/alpha/kernel/sys_eiger.c | 2 +- arch/alpha/kernel/sys_marvel.c | 2 +- arch/alpha/kernel/sys_mikasa.c | 2 +- arch/alpha/kernel/sys_nautilus.c | 2 +- arch/alpha/kernel/sys_noritake.c | 2 +- arch/alpha/kernel/sys_rx164.c | 2 +- arch/alpha/kernel/sys_sx164.c | 2 +- arch/alpha/kernel/sys_titan.c | 2 +- arch/alpha/kernel/sys_wildfire.c | 2 +- arch/alpha/kernel/time.c | 3 - arch/alpha/lib/csum_partial_copy.c | 6 +- arch/alpha/lib/dec_and_lock.c | 8 +- arch/arm/Kconfig | 144 +- arch/arm/Kconfig.debug | 5 +- arch/arm/Makefile | 49 +- arch/arm/boot/Makefile | 86 +- arch/arm/boot/compressed/Makefile | 3 + arch/arm/boot/compressed/head-sa1100.S | 36 +- arch/arm/boot/compressed/head.S | 8 - arch/arm/boot/compressed/hw-bse.c | 74 + arch/arm/common/Makefile | 2 - arch/arm/common/amba.c | 2 +- arch/arm/common/icst307.c | 161 - arch/arm/common/locomo.c | 23 +- arch/arm/common/rtctime.c | 502 -- arch/arm/common/sa1111.c | 25 +- arch/arm/common/time-acorn.c | 33 +- arch/arm/configs/adsbitsy_defconfig | 661 +++ arch/arm/configs/bast_defconfig | 179 +- arch/arm/configs/brutus_defconfig | 296 ++ arch/arm/configs/empeg_defconfig | 264 + arch/arm/configs/ep80219_defconfig | 88 +- arch/arm/configs/flexanet_defconfig | 895 ++++ arch/arm/configs/freebird_defconfig | 614 +++ arch/arm/configs/freebird_new_defconfig | 634 +++ arch/arm/configs/graphicsclient_defconfig | 729 +++ arch/arm/configs/graphicsmaster_defconfig | 742 +++ arch/arm/configs/huw_webpanel_defconfig | 434 ++ arch/arm/configs/integrator_defconfig | 768 ++- arch/arm/configs/iq31244_defconfig | 86 +- arch/arm/configs/iq80321_defconfig | 72 +- arch/arm/configs/iq80331_defconfig | 86 +- arch/arm/configs/pangolin_defconfig | 739 +++ arch/arm/configs/pfs168_mqtft_defconfig | 778 +++ arch/arm/configs/pfs168_mqvga_defconfig | 778 +++ arch/arm/configs/pfs168_sastn_defconfig | 770 +++ arch/arm/configs/pfs168_satft_defconfig | 778 +++ arch/arm/configs/pleb_defconfig | 676 +-- arch/arm/configs/s3c2410_defconfig | 133 +- arch/arm/configs/sherman_defconfig | 215 + arch/arm/configs/simpad_defconfig | 896 ---- arch/arm/configs/stork_defconfig | 961 ++++ arch/arm/configs/system3_defconfig | 962 ++++ arch/arm/configs/trizeps_defconfig | 843 +++ arch/arm/configs/versatile_defconfig | 12 +- arch/arm/defconfig | 510 ++ arch/arm/kernel/Makefile | 2 +- arch/arm/kernel/armksyms.c | 7 +- arch/arm/kernel/asm-offsets.c | 2 - arch/arm/kernel/bios32.c | 12 +- arch/arm/kernel/debug.S | 28 +- arch/arm/kernel/ecard.c | 41 +- arch/arm/kernel/entry-armv.S | 4 +- arch/arm/kernel/fiq.c | 33 +- arch/arm/kernel/head.S | 109 +- arch/arm/kernel/io.c | 6 +- arch/arm/kernel/irq.c | 48 +- arch/arm/kernel/module.c | 13 - arch/arm/kernel/process.c | 2 - arch/arm/kernel/setup.c | 31 +- arch/arm/kernel/signal.c | 211 +- arch/arm/kernel/sys_arm.c | 20 +- arch/arm/kernel/time.c | 68 +- arch/arm/kernel/traps.c | 23 +- arch/arm/kernel/vmlinux.lds.S | 35 +- arch/arm/lib/Makefile | 6 +- arch/arm/lib/csumpartial.S | 3 +- arch/arm/lib/csumpartialcopygeneric.S | 3 +- arch/arm/lib/delay.S | 13 +- arch/arm/lib/getuser.S | 22 +- arch/arm/lib/io-readsl-armv3.S | 78 + arch/arm/lib/io-readsl-armv4.S | 132 + arch/arm/lib/io-readsl.S | 78 - arch/arm/lib/io-writesl.S | 57 +- arch/arm/lib/longlong.h | 1 + arch/arm/lib/putuser.S | 16 +- arch/arm/mach-clps711x/Makefile.boot | 7 - arch/arm/mach-clps711x/autcpu12.c | 6 +- arch/arm/mach-clps711x/cdb89712.c | 14 +- arch/arm/mach-clps711x/ceiva.c | 5 +- arch/arm/mach-clps711x/clep7312.c | 6 +- arch/arm/mach-clps711x/common.h | 11 - arch/arm/mach-clps711x/edb7211-arch.c | 6 +- arch/arm/mach-clps711x/fortunet.c | 6 +- arch/arm/mach-clps711x/p720t.c | 6 +- arch/arm/mach-clps711x/time.c | 10 +- arch/arm/mach-clps7500/Makefile.boot | 2 - arch/arm/mach-clps7500/core.c | 65 +- arch/arm/mach-ebsa110/Makefile.boot | 4 - arch/arm/mach-ebsa110/core.c | 51 +- arch/arm/mach-ebsa110/io.c | 58 +- arch/arm/mach-epxa10db/Makefile.boot | 2 - arch/arm/mach-epxa10db/arch.c | 35 +- arch/arm/mach-epxa10db/time.c | 7 +- arch/arm/mach-footbridge/Kconfig | 23 - arch/arm/mach-footbridge/Makefile | 13 +- arch/arm/mach-footbridge/Makefile.boot | 4 - arch/arm/mach-footbridge/arch.c | 149 + arch/arm/mach-footbridge/cats-hw.c | 30 - arch/arm/mach-footbridge/co285.c | 38 - arch/arm/mach-footbridge/common.h | 9 - arch/arm/mach-footbridge/dc21285-timer.c | 68 - arch/arm/mach-footbridge/ebsa285.c | 24 - arch/arm/mach-footbridge/irq.c | 111 + arch/arm/mach-footbridge/isa-timer.c | 94 - arch/arm/mach-footbridge/isa.c | 48 - arch/arm/mach-footbridge/{common.c => mm.c} | 112 +- arch/arm/mach-footbridge/netwinder-hw.c | 48 +- arch/arm/mach-footbridge/personal.c | 23 - arch/arm/mach-footbridge/time.c | 122 +- arch/arm/mach-h720x/Kconfig | 4 - arch/arm/mach-h720x/Makefile.boot | 2 - arch/arm/mach-h720x/common.h | 29 - arch/arm/mach-h720x/cpu-h7201.c | 17 +- arch/arm/mach-h720x/cpu-h7202.c | 59 +- arch/arm/mach-h720x/h7201-eval.c | 7 +- arch/arm/mach-h720x/h7202-eval.c | 8 +- arch/arm/mach-imx/Makefile.boot | 2 - arch/arm/mach-imx/generic.h | 4 +- arch/arm/mach-imx/mx1ads.c | 2 +- arch/arm/mach-imx/time.c | 16 +- arch/arm/mach-integrator/Makefile.boot | 4 - arch/arm/mach-integrator/common.h | 2 - arch/arm/mach-integrator/core.c | 11 +- arch/arm/mach-integrator/integrator_ap.c | 11 +- arch/arm/mach-integrator/integrator_cp.c | 11 +- arch/arm/mach-iop3xx/Makefile | 2 +- arch/arm/mach-iop3xx/Makefile.boot | 9 - arch/arm/mach-iop3xx/arch.c | 50 + arch/arm/mach-iop3xx/common.c | 1 + arch/arm/mach-iop3xx/iop321-mm.c | 43 + arch/arm/mach-iop3xx/iop321-setup.c | 75 +- arch/arm/mach-iop3xx/iop321-time.c | 62 +- arch/arm/mach-iop3xx/iop331-mm.c | 43 + arch/arm/mach-iop3xx/iop331-setup.c | 5 +- arch/arm/mach-iop3xx/iop331-time.c | 62 +- arch/arm/mach-iop3xx/mm-321.c | 63 + arch/arm/mach-ixp2000/Makefile.boot | 3 - arch/arm/mach-ixp2000/core.c | 58 +- arch/arm/mach-ixp2000/enp2611.c | 12 +- arch/arm/mach-ixp2000/ixdp2400.c | 12 +- arch/arm/mach-ixp2000/ixdp2800.c | 12 +- arch/arm/mach-ixp2000/ixdp2x00.c | 9 +- arch/arm/mach-ixp2000/ixdp2x01.c | 49 +- arch/arm/mach-ixp2000/pci.c | 8 +- arch/arm/mach-ixp4xx/Kconfig | 7 - arch/arm/mach-ixp4xx/Makefile | 1 - arch/arm/mach-ixp4xx/Makefile.boot | 3 - arch/arm/mach-ixp4xx/common-pci.c | 31 +- arch/arm/mach-ixp4xx/common.c | 17 +- arch/arm/mach-ixp4xx/coyote-setup.c | 37 +- arch/arm/mach-ixp4xx/ixdp425-setup.c | 6 +- arch/arm/mach-ixp4xx/ixdpg425-pci.c | 65 - arch/arm/mach-ixp4xx/prpmc1100-setup.c | 2 +- arch/arm/mach-l7200/Makefile.boot | 2 - arch/arm/mach-lh7a40x/Makefile.boot | 4 - arch/arm/mach-lh7a40x/arch-kev7a400.c | 8 +- arch/arm/mach-lh7a40x/arch-lpd7a40x.c | 14 +- arch/arm/mach-lh7a40x/common.h | 14 - arch/arm/mach-lh7a40x/time.c | 10 +- arch/arm/mach-omap/Kconfig | 65 +- arch/arm/mach-omap/Makefile | 6 +- arch/arm/mach-omap/Makefile.boot | 4 - arch/arm/mach-omap/board-generic.c | 35 +- arch/arm/mach-omap/board-h2.c | 22 +- arch/arm/mach-omap/board-h3.c | 15 +- arch/arm/mach-omap/board-innovator.c | 42 +- arch/arm/mach-omap/board-osk.c | 24 +- arch/arm/mach-omap/board-perseus2.c | 8 +- arch/arm/mach-omap/clock.c | 955 ---- arch/arm/mach-omap/clock.h | 106 - arch/arm/mach-omap/clocks.c | 705 +++ arch/arm/mach-omap/common.c | 409 +- arch/arm/mach-omap/common.h | 6 +- arch/arm/mach-omap/dma.c | 388 +- arch/arm/mach-omap/gpio.c | 22 +- arch/arm/mach-omap/irq.c | 10 +- arch/arm/mach-omap/mcbsp.c | 32 +- arch/arm/mach-omap/mux.c | 60 +- arch/arm/mach-omap/ocpi.c | 14 +- arch/arm/mach-omap/pm.c | 621 --- arch/arm/mach-omap/sleep.S | 314 -- arch/arm/mach-omap/time.c | 229 +- arch/arm/mach-omap/usb.c | 116 +- arch/arm/mach-pxa/Makefile.boot | 2 - arch/arm/mach-pxa/generic.c | 7 +- arch/arm/mach-pxa/generic.h | 4 +- arch/arm/mach-pxa/idp.c | 2 +- arch/arm/mach-pxa/lubbock.c | 20 +- arch/arm/mach-pxa/mainstone.c | 60 +- arch/arm/mach-pxa/pm.c | 25 +- arch/arm/mach-pxa/pxa27x.c | 46 +- arch/arm/mach-pxa/ssp.c | 319 -- arch/arm/mach-pxa/time.c | 43 +- arch/arm/mach-rpc/Makefile.boot | 4 - arch/arm/mach-rpc/riscpc.c | 101 +- arch/arm/mach-s3c2410/Kconfig | 48 - arch/arm/mach-s3c2410/Makefile | 6 +- arch/arm/mach-s3c2410/Makefile.boot | 3 - arch/arm/mach-s3c2410/clock.c | 193 +- arch/arm/mach-s3c2410/clock.h | 29 +- arch/arm/mach-s3c2410/cpu.c | 50 +- arch/arm/mach-s3c2410/cpu.h | 18 - arch/arm/mach-s3c2410/devs.c | 6 - arch/arm/mach-s3c2410/dma.c | 99 +- arch/arm/mach-s3c2410/gpio.c | 17 - arch/arm/mach-s3c2410/irq.c | 84 +- arch/arm/mach-s3c2410/mach-bast.c | 94 +- arch/arm/mach-s3c2410/mach-h1940.c | 20 +- arch/arm/mach-s3c2410/mach-rx3715.c | 124 - arch/arm/mach-s3c2410/mach-smdk2410.c | 17 +- arch/arm/mach-s3c2410/mach-vr1000.c | 67 +- arch/arm/mach-s3c2410/pm.c | 667 --- arch/arm/mach-s3c2410/pm.h | 59 - arch/arm/mach-s3c2410/s3c2410.c | 96 +- arch/arm/mach-s3c2410/s3c2410.h | 22 +- arch/arm/mach-s3c2410/s3c2440-dsc.c | 7 +- arch/arm/mach-s3c2410/s3c2440.c | 145 +- arch/arm/mach-s3c2410/s3c2440.h | 7 +- arch/arm/mach-s3c2410/sleep.S | 180 - arch/arm/mach-s3c2410/time.c | 138 +- arch/arm/mach-s3c2410/usb-simtec.c | 20 +- arch/arm/mach-sa1100/Kconfig | 174 +- arch/arm/mach-sa1100/Makefile | 46 +- arch/arm/mach-sa1100/Makefile.boot | 7 - arch/arm/mach-sa1100/adsbitsy.c | 151 + arch/arm/mach-sa1100/assabet.c | 120 +- arch/arm/mach-sa1100/badge4.c | 47 +- arch/arm/mach-sa1100/brutus.c | 41 + arch/arm/mach-sa1100/cerf.c | 64 +- arch/arm/mach-sa1100/collie.c | 52 +- arch/arm/mach-sa1100/empeg.c | 39 + arch/arm/mach-sa1100/flexanet.c | 188 + arch/arm/mach-sa1100/freebird.c | 81 + arch/arm/mach-sa1100/generic.c | 59 +- arch/arm/mach-sa1100/generic.h | 13 +- arch/arm/mach-sa1100/graphicsclient.c | 202 + arch/arm/mach-sa1100/graphicsmaster.c | 291 ++ arch/arm/mach-sa1100/h3600.c | 107 +- arch/arm/mach-sa1100/hackkit.c | 70 +- arch/arm/mach-sa1100/huw_webpanel.c | 85 + arch/arm/mach-sa1100/itsy.c | 41 + arch/arm/mach-sa1100/jornada720.c | 2 +- arch/arm/mach-sa1100/lart.c | 4 +- arch/arm/mach-sa1100/leds-adsbitsy.c | 96 + arch/arm/mach-sa1100/leds-brutus.c | 111 + arch/arm/mach-sa1100/leds-flexanet.c | 129 + arch/arm/mach-sa1100/leds-graphicsclient.c | 104 + arch/arm/mach-sa1100/leds-graphicsmaster.c | 104 + arch/arm/mach-sa1100/leds-pfs168.c | 99 + arch/arm/mach-sa1100/leds-simpad.c | 7 +- arch/arm/mach-sa1100/leds-system3.c | 48 + arch/arm/mach-sa1100/nanoengine.c | 53 + arch/arm/mach-sa1100/neponset.c | 23 +- arch/arm/mach-sa1100/omnimeter.c | 63 + arch/arm/mach-sa1100/pangolin.c | 44 + arch/arm/mach-sa1100/pfs168.c | 116 + arch/arm/mach-sa1100/pleb.c | 121 +- arch/arm/mach-sa1100/pm.c | 24 +- arch/arm/mach-sa1100/shannon.c | 40 +- arch/arm/mach-sa1100/sherman.c | 31 + arch/arm/mach-sa1100/simpad.c | 151 +- arch/arm/mach-sa1100/sleep.S | 4 +- arch/arm/mach-sa1100/stork.c | 348 ++ arch/arm/mach-sa1100/system3.c | 474 ++ arch/arm/mach-sa1100/time.c | 44 +- arch/arm/mach-sa1100/trizeps.c | 232 + arch/arm/mach-sa1100/xp860.c | 93 + arch/arm/mach-sa1100/yopy.c | 95 + arch/arm/mach-shark/Makefile.boot | 2 - arch/arm/mach-shark/core.c | 51 +- arch/arm/mach-versatile/Kconfig | 16 - arch/arm/mach-versatile/Makefile | 2 - arch/arm/mach-versatile/Makefile.boot | 4 - arch/arm/mach-versatile/clock.c | 11 +- arch/arm/mach-versatile/clock.h | 6 +- arch/arm/mach-versatile/core.c | 210 +- arch/arm/mach-versatile/core.h | 50 - arch/arm/mach-versatile/versatile_pb.c | 109 - arch/arm/mm/Kconfig | 25 +- arch/arm/mm/copypage-v6.c | 1 - arch/arm/mm/init.c | 8 +- arch/arm/mm/ioremap.c | 6 +- arch/arm/mm/mm-armv.c | 69 +- arch/arm/mm/proc-arm720.S | 4 +- arch/arm/mm/proc-v6.S | 9 +- arch/arm/mm/proc-xscale.S | 21 - arch/arm/nwfpe/double_cpdo.c | 8 - arch/arm/tools/mach-types | 25 +- arch/arm/vfp/vfp.h | 11 - arch/arm/vfp/vfpdouble.c | 10 +- arch/arm/vfp/vfphw.S | 5 - arch/arm/vfp/vfpsingle.c | 6 +- arch/arm26/kernel/time.c | 3 - arch/arm26/machine/dma.c | 2 +- arch/arm26/machine/small_page.c | 2 +- arch/cris/Kconfig.debug | 27 +- arch/cris/Makefile | 4 +- arch/cris/arch-v10/drivers/Kconfig | 39 +- arch/cris/arch-v10/drivers/Makefile | 4 + arch/cris/arch-v10/drivers/axisflashmap.c | 61 +- arch/cris/arch-v10/drivers/ds1302.c | 5 +- .../cris/arch-v10/drivers/ethernet.c | 405 +- arch/cris/arch-v10/drivers/gpio.c | 5 +- arch/cris/arch-v10/drivers/i2c.c | 18 +- .../cris/arch-v10/drivers/ide.c | 192 +- arch/cris/arch-v10/drivers/pcf8563.c | 4 +- .../cris/arch-v10/drivers/serial.c | 481 +- .../cris/arch-v10/drivers/serial.h | 4 +- arch/cris/arch-v10/kernel/Makefile | 3 +- arch/cris/arch-v10/kernel/crisksyms.c | 17 - arch/cris/arch-v10/kernel/debugport.c | 468 +- arch/cris/arch-v10/kernel/entry.S | 139 +- arch/cris/arch-v10/kernel/irq.c | 33 +- arch/cris/arch-v10/kernel/kgdb.c | 7 +- arch/cris/arch-v10/kernel/process.c | 24 +- arch/cris/arch-v10/kernel/ptrace.c | 44 +- arch/cris/arch-v10/kernel/signal.c | 28 +- arch/cris/arch-v10/kernel/time.c | 6 +- arch/cris/arch-v10/mm/fault.c | 104 +- arch/cris/arch-v10/mm/tlb.c | 20 +- arch/cris/arch-v10/vmlinux.lds.S | 1 - arch/cris/kernel/irq.c | 2 +- arch/h8300/kernel/ints.c | 2 +- arch/h8300/kernel/setup.c | 2 +- arch/h8300/kernel/signal.c | 420 +- arch/h8300/kernel/time.c | 3 - arch/h8300/kernel/vmlinux.lds.S | 146 +- arch/h8300/platform/h8300h/aki3068net/ram.ld | 11 + arch/h8300/platform/h8300h/entry.S | 6 +- arch/h8300/platform/h8300h/generic/ram.ld | 11 + arch/h8300/platform/h8300h/generic/rom.ld | 12 + arch/h8300/platform/h8300h/h8max/ram.ld | 11 + arch/h8300/platform/h8s/edosk2674/crt0_rom.S | 2 +- arch/h8300/platform/h8s/edosk2674/ram.ld | 10 + arch/h8300/platform/h8s/edosk2674/rom.ld | 11 + arch/h8300/platform/h8s/entry.S | 6 +- arch/h8300/platform/h8s/generic/ram.ld | 8 + arch/h8300/platform/h8s/generic/rom.ld | 11 + arch/h8300/platform/h8s/ints.c | 2 +- arch/i386/Kconfig | 82 +- arch/i386/Kconfig.debug | 89 +- arch/i386/Makefile | 13 +- arch/i386/boot/compressed/head.S | 6 +- arch/i386/boot/compressed/misc.c | 7 +- arch/i386/crypto/aes-i586-asm.S | 325 +- arch/i386/defconfig | 1 - arch/i386/kernel/.cvsignore | 2 - arch/i386/kernel/Makefile | 5 +- arch/i386/kernel/acpi/Makefile | 1 - arch/i386/kernel/acpi/boot.c | 67 +- arch/i386/kernel/acpi/earlyquirk.c | 51 - arch/i386/kernel/acpi/sleep.c | 2 +- arch/i386/kernel/acpi/wakeup.S | 25 - arch/i386/kernel/apic.c | 95 +- arch/i386/kernel/apm.c | 18 +- arch/i386/kernel/cpu/cpufreq/Kconfig | 109 +- arch/i386/kernel/cpu/cpufreq/Makefile | 33 +- .../cpu/cpufreq/{acpi-cpufreq.c => acpi.c} | 107 +- .../i386/kernel/cpu/cpufreq/cpufreq-nforce2.c | 466 -- arch/i386/kernel/cpu/cpufreq/gx-suspmod.c | 19 +- arch/i386/kernel/cpu/cpufreq/longhaul.c | 34 +- arch/i386/kernel/cpu/cpufreq/longrun.c | 13 +- arch/i386/kernel/cpu/cpufreq/p4-clockmod.c | 53 +- arch/i386/kernel/cpu/cpufreq/powernow-k7.c | 72 +- arch/i386/kernel/cpu/cpufreq/powernow-k8.c | 122 +- arch/i386/kernel/cpu/cpufreq/powernow-k8.h | 6 +- .../kernel/cpu/cpufreq/speedstep-centrino.c | 93 +- arch/i386/kernel/cpu/cpufreq/speedstep-ich.c | 107 +- arch/i386/kernel/cpu/cpufreq/speedstep-lib.c | 51 +- arch/i386/kernel/cpu/cpufreq/speedstep-smi.c | 77 +- arch/i386/kernel/cpu/cyrix.c | 11 +- arch/i386/kernel/cpu/mcheck/k7.c | 2 +- arch/i386/kernel/cpu/mcheck/mce.c | 4 +- arch/i386/kernel/cpu/mcheck/mce.h | 2 +- arch/i386/kernel/cpu/mcheck/p4.c | 6 +- arch/i386/kernel/cpu/mcheck/p5.c | 2 +- arch/i386/kernel/cpu/mcheck/p6.c | 2 +- arch/i386/kernel/cpu/mcheck/winchip.c | 2 +- arch/i386/kernel/cpu/mtrr/main.c | 32 +- arch/i386/kernel/cpu/nexgen.c | 2 +- arch/i386/kernel/cpu/proc.c | 2 +- arch/i386/kernel/cpu/transmeta.c | 23 +- arch/i386/kernel/crash_dump.c | 105 - arch/i386/kernel/dmi_scan.c | 71 + arch/i386/kernel/entry.S | 85 +- arch/i386/kernel/i386_ksyms.c | 12 +- arch/i386/kernel/i387.c | 5 +- arch/i386/kernel/i8259.c | 2 +- arch/i386/kernel/io_apic.c | 47 +- arch/i386/kernel/irq.c | 1273 ++++- arch/i386/kernel/kprobes.c | 37 +- arch/i386/kernel/machine_kexec.c | 25 - arch/i386/kernel/microcode.c | 33 +- arch/i386/kernel/mpparse.c | 24 +- arch/i386/kernel/nmi.c | 1 - arch/i386/kernel/numaq.c | 1 - arch/i386/kernel/process.c | 18 +- arch/i386/kernel/ptrace.c | 93 +- arch/i386/kernel/quirks.c | 50 - arch/i386/kernel/reboot.c | 20 +- arch/i386/kernel/scx200.c | 67 +- arch/i386/kernel/semaphore.c | 18 +- arch/i386/kernel/setup.c | 13 - arch/i386/kernel/signal.c | 41 +- arch/i386/kernel/smp.c | 72 +- arch/i386/kernel/srat.c | 1 - arch/i386/kernel/sys_i386.c | 2 +- arch/i386/kernel/time.c | 42 +- arch/i386/kernel/time_hpet.c | 68 +- arch/i386/kernel/timers/common.c | 1 - arch/i386/kernel/timers/timer.c | 16 +- arch/i386/kernel/timers/timer_cyclone.c | 8 +- arch/i386/kernel/timers/timer_hpet.c | 8 +- arch/i386/kernel/timers/timer_none.c | 6 + arch/i386/kernel/timers/timer_pit.c | 14 +- arch/i386/kernel/timers/timer_pm.c | 7 +- arch/i386/kernel/timers/timer_tsc.c | 18 +- arch/i386/kernel/traps.c | 73 +- arch/i386/kernel/vm86.c | 11 +- arch/i386/kernel/vmlinux.lds.S | 59 +- arch/i386/kernel/vsyscall-sysenter.S | 2 +- arch/i386/lib/dec_and_lock.c | 2 +- arch/i386/mach-default/topology.c | 1 - arch/i386/mach-es7000/es7000.h | 7 + arch/i386/mach-es7000/es7000plat.c | 65 +- arch/i386/mach-voyager/voyager_basic.c | 2 +- arch/i386/mach-voyager/voyager_smp.c | 50 +- arch/i386/mm/discontig.c | 7 +- arch/i386/mm/fault.c | 4 +- arch/i386/mm/highmem.c | 19 +- arch/i386/mm/hugetlbpage.c | 1 - arch/i386/mm/init.c | 53 +- arch/i386/mm/mmap.c | 13 +- arch/i386/mm/pageattr.c | 1 + arch/i386/mm/pgtable.c | 11 +- arch/i386/pci/acpi.c | 30 +- arch/i386/pci/changelog | 62 + arch/i386/pci/common.c | 4 - arch/i386/pci/fixup.c | 52 +- arch/i386/pci/i386.c | 10 +- arch/i386/pci/irq.c | 49 +- arch/i386/pci/mmconfig.c | 7 - arch/i386/power/cpu.c | 2 +- arch/ia64/Makefile | 7 +- arch/ia64/configs/bigsur_defconfig | 73 +- arch/ia64/configs/generic_defconfig | 1123 ++++ arch/ia64/configs/sn2_defconfig | 58 +- arch/ia64/configs/tiger_defconfig | 59 +- arch/ia64/defconfig | 655 ++- arch/ia64/hp/common/sba_iommu.c | 3 +- arch/ia64/hp/sim/simeth.c | 2 +- arch/ia64/hp/sim/simserial.c | 66 +- arch/ia64/ia32/elfcore32.h | 1 - arch/ia64/ia32/ia32_entry.S | 16 +- arch/ia64/ia32/ia32priv.h | 4 - arch/ia64/kernel/Makefile | 2 +- arch/ia64/kernel/acpi.c | 1 - arch/ia64/kernel/domain.c | 382 -- arch/ia64/kernel/efi.c | 35 +- arch/ia64/kernel/entry.S | 8 +- arch/ia64/kernel/ia64_ksyms.c | 4 +- arch/ia64/kernel/irq.c | 7 +- arch/ia64/kernel/irq_ia64.c | 2 +- arch/ia64/kernel/ivt.S | 31 +- arch/ia64/kernel/mca.c | 5 +- arch/ia64/kernel/mca_asm.S | 3 +- arch/ia64/kernel/perfmon.c | 117 +- arch/ia64/kernel/process.c | 34 +- arch/ia64/kernel/ptrace.c | 31 +- arch/ia64/kernel/setup.c | 54 +- arch/ia64/kernel/signal.c | 8 +- arch/ia64/kernel/smp.c | 62 +- arch/ia64/kernel/smpboot.c | 2 +- arch/ia64/kernel/sys_ia64.c | 4 +- arch/ia64/kernel/time.c | 25 +- arch/ia64/kernel/traps.c | 6 - arch/ia64/kernel/unwind.c | 81 +- arch/ia64/lib/bitop.c | 2 +- arch/ia64/lib/dec_and_lock.c | 4 +- arch/ia64/lib/io.c | 7 - arch/ia64/lib/swiotlb.c | 18 +- arch/ia64/mm/contig.c | 3 - arch/ia64/mm/discontig.c | 10 +- arch/ia64/mm/fault.c | 7 +- arch/ia64/mm/init.c | 94 +- arch/ia64/mm/numa.c | 2 +- arch/ia64/pci/pci.c | 131 +- arch/ia64/sn/kernel/sn2/sn_hwperf.c | 119 +- arch/m32r/Kconfig | 98 +- arch/m32r/Kconfig.debug | 34 - arch/m32r/Makefile | 5 +- arch/m32r/boot/compressed/Makefile | 7 +- arch/m32r/boot/compressed/head.S | 96 +- arch/m32r/boot/compressed/m32r_sio.c | 24 +- arch/m32r/boot/compressed/misc.c | 53 +- arch/m32r/boot/compressed/vmlinux.lds.S | 16 +- arch/m32r/boot/compressed/vmlinux.scr | 6 +- arch/m32r/boot/setup.S | 2 +- arch/m32r/defconfig | 152 +- arch/m32r/kernel/io_m32700ut.c | 149 +- arch/m32r/kernel/io_mappi.c | 194 +- arch/m32r/kernel/io_mappi2.c | 233 +- arch/m32r/kernel/io_oaks32r.c | 66 +- arch/m32r/kernel/io_opsput.c | 131 +- arch/m32r/kernel/io_usrv.c | 6 +- arch/m32r/kernel/irq.c | 2 +- arch/m32r/kernel/process.c | 7 +- arch/m32r/kernel/ptrace.c | 2 +- arch/m32r/kernel/setup_m32700ut.c | 4 +- arch/m32r/kernel/setup_mappi.c | 2 +- arch/m32r/kernel/setup_mappi2.c | 2 +- arch/m32r/kernel/setup_opsput.c | 4 +- arch/m32r/kernel/smpboot.c | 4 +- arch/m32r/kernel/sys_m32r.c | 4 +- arch/m32r/kernel/time.c | 21 +- arch/m32r/lib/delay.c | 2 +- arch/m32r/lib/memset.S | 17 +- arch/m32r/m32700ut/defconfig.m32700ut.smp | 130 +- arch/m32r/m32700ut/defconfig.m32700ut.up | 130 +- arch/m32r/m32700ut/dot.gdbinit_200MHz_16MB | 14 +- arch/m32r/m32700ut/dot.gdbinit_300MHz_32MB | 24 +- arch/m32r/m32700ut/dot.gdbinit_400MHz_32MB | 249 - arch/m32r/mappi/defconfig.nommu | 109 +- arch/m32r/mappi/defconfig.smp | 104 +- arch/m32r/mappi/defconfig.up | 104 +- arch/m32r/mappi/dot.gdbinit | 16 +- arch/m32r/mappi/dot.gdbinit.nommu | 6 +- arch/m32r/mappi/dot.gdbinit.smp | 12 +- arch/m32r/mappi2/dot.gdbinit.vdec2 | 233 - arch/m32r/mm/init.c | 2 +- arch/m32r/oaks32r/defconfig.nommu | 93 +- arch/m32r/oaks32r/dot.gdbinit.nommu | 15 +- arch/m32r/opsput/defconfig.opsput | 114 +- arch/m32r/opsput/dot.gdbinit | 76 +- arch/m68k/Kconfig | 21 +- arch/m68k/Makefile | 2 +- arch/m68k/atari/hades-pci.c | 2 +- arch/m68k/configs/amiga_defconfig | 964 ---- arch/m68k/configs/apollo_defconfig | 821 --- arch/m68k/configs/atari_defconfig | 876 ---- arch/m68k/configs/bvme6000_defconfig | 820 --- arch/m68k/configs/hp300_defconfig | 820 --- arch/m68k/configs/mac_defconfig | 899 ---- arch/m68k/configs/mvme147_defconfig | 839 --- arch/m68k/configs/mvme16x_defconfig | 838 --- arch/m68k/configs/q40_defconfig | 911 ---- arch/m68k/configs/sun3_defconfig | 826 --- arch/m68k/configs/sun3x_defconfig | 836 --- arch/m68k/defconfig | 580 +-- arch/m68k/hp300/config.c | 265 +- arch/m68k/hp300/ints.c | 9 +- arch/m68k/hp300/reboot.S | 21 +- arch/m68k/hp300/time.c | 13 +- arch/m68k/kernel/bios32.c | 6 +- arch/m68k/kernel/entry.S | 47 - arch/m68k/kernel/head.S | 194 +- arch/m68k/kernel/setup.c | 25 +- arch/m68k/kernel/time.c | 3 - arch/m68k/kernel/vmlinux-std.lds | 4 +- arch/m68k/kernel/vmlinux-sun3.lds | 4 +- arch/m68k/kernel/vmlinux.lds.S | 6 +- arch/m68k/mm/memory.c | 2 +- arch/m68k/mm/motorola.c | 2 +- arch/m68k/mm/sun3mmu.c | 1 + arch/m68k/q40/config.c | 1 + arch/m68k/q40/q40ints.c | 1 + arch/m68k/sun3/Makefile | 3 +- arch/m68k/sun3/mmu_emu.c | 5 +- arch/m68k/sun3/sun3dvma.c | 1 - arch/m68k/sun3/sun3ints.c | 4 - arch/m68k/sun3x/config.c | 3 +- arch/m68knommu/Kconfig | 118 +- arch/m68knommu/Makefile | 17 +- arch/m68knommu/defconfig | 6 +- arch/m68knommu/kernel/module.c | 35 +- arch/m68knommu/kernel/setup.c | 9 +- arch/m68knommu/kernel/signal.c | 151 +- arch/m68knommu/kernel/syscalltable.S | 70 +- arch/m68knommu/kernel/time.c | 3 - arch/m68knommu/kernel/vmlinux.lds.S | 29 +- arch/m68knommu/lib/Makefile | 2 +- arch/m68knommu/lib/delay.c | 18 - arch/m68knommu/mm/init.c | 1 + arch/m68knommu/mm/memory.c | 1 + .../platform/5206e/MOTOROLA/crt0_ram.S | 30 +- arch/m68knommu/platform/5206e/config.c | 1 + arch/m68knommu/platform/5249/config.c | 1 + .../m68knommu/platform/5272/CANCam/crt0_ram.S | 154 - .../m68knommu/platform/5272/SCALES/crt0_ram.S | 154 - arch/m68knommu/platform/5272/config.c | 7 +- .../platform/527x/M5271EVB/crt0_ram.S | 166 - .../platform/527x/M5275EVB/crt0_ram.S | 166 - arch/m68knommu/platform/527x/Makefile | 21 - arch/m68knommu/platform/527x/config.c | 82 - .../M5282EVB => 5282/MOTOROLA}/crt0_ram.S | 4 +- .../platform/{528x => 5282}/Makefile | 2 +- .../platform/{528x => 5282}/config.c | 4 +- arch/m68knommu/platform/{5307 => 5282}/pit.c | 19 +- .../platform/{528x => 5282}/senTec/crt0_ram.S | 2 +- arch/m68knommu/platform/5307/Makefile | 2 - arch/m68knommu/platform/5307/config.c | 1 + arch/m68knommu/platform/5307/vectors.c | 2 +- arch/m68knommu/platform/5407/config.c | 1 + arch/mips/Kconfig | 142 +- arch/mips/Makefile | 290 +- arch/mips/arc/identify.c | 2 +- arch/mips/arc/misc.c | 2 +- arch/mips/au1000/common/Makefile | 9 +- arch/mips/au1000/common/au1xxx_irqmap.c | 48 +- arch/mips/au1000/common/cputable.c | 1 - arch/mips/au1000/common/dbdma.c | 145 +- arch/mips/au1000/common/dma.c | 6 - arch/mips/au1000/common/irq.c | 18 +- arch/mips/au1000/common/pci.c | 8 +- arch/mips/au1000/common/platform.c | 54 - arch/mips/au1000/common/puts.c | 2 +- arch/mips/au1000/common/reset.c | 15 +- arch/mips/au1000/common/setup.c | 83 +- arch/mips/au1000/common/time.c | 16 +- arch/mips/au1000/common/usbdev.c | 7 +- arch/mips/au1000/csb250/irqmap.c | 2 +- arch/mips/au1000/db1x00/board_setup.c | 6 - arch/mips/au1000/db1x00/irqmap.c | 2 +- arch/mips/au1000/db1x00/mirage_ts.c | 2 +- arch/mips/au1000/hydrogen3/board_setup.c | 4 - arch/mips/au1000/hydrogen3/irqmap.c | 2 +- arch/mips/au1000/mtx-1/irqmap.c | 2 +- arch/mips/au1000/pb1000/board_setup.c | 4 - arch/mips/au1000/pb1000/irqmap.c | 2 +- arch/mips/au1000/pb1100/board_setup.c | 10 +- arch/mips/au1000/pb1100/irqmap.c | 4 +- arch/mips/au1000/pb1500/board_setup.c | 6 - arch/mips/au1000/pb1500/irqmap.c | 2 +- arch/mips/au1000/pb1550/board_setup.c | 6 - arch/mips/au1000/pb1550/irqmap.c | 2 +- arch/mips/au1000/xxs1500/board_setup.c | 6 - arch/mips/au1000/xxs1500/irqmap.c | 2 +- arch/mips/baget/Makefile | 53 + arch/mips/baget/baget.c | 96 + arch/mips/baget/bagetIRQ.S | 96 + arch/mips/baget/balo.c | 190 + arch/mips/baget/balo_supp.S | 142 + arch/mips/baget/irq.c | 407 ++ arch/mips/baget/ld.script.balo | 125 + arch/mips/baget/print.c | 116 + arch/mips/baget/prom/Makefile | 5 + arch/mips/baget/prom/init.c | 32 + arch/mips/baget/reset.c | 32 + arch/mips/baget/setup.c | 489 ++ arch/mips/baget/time.c | 105 + arch/mips/boot/Makefile | 18 +- arch/mips/boot/addinitrd.c | 9 +- arch/mips/cobalt/irq.c | 2 +- arch/mips/cobalt/setup.c | 3 +- arch/mips/configs/atlas_defconfig | 68 +- .../{db1550_defconfig => bosporus_defconfig} | 319 +- arch/mips/configs/capcella_defconfig | 64 +- arch/mips/configs/cobalt_defconfig | 63 +- arch/mips/configs/db1000_defconfig | 101 +- arch/mips/configs/db1100_defconfig | 101 +- arch/mips/configs/db1500_defconfig | 290 +- arch/mips/configs/ddb5476_defconfig | 65 +- arch/mips/configs/ddb5477_defconfig | 64 +- arch/mips/configs/decstation_defconfig | 67 +- arch/mips/configs/e55_defconfig | 65 +- arch/mips/configs/ev64120_defconfig | 64 +- arch/mips/configs/ev96100_defconfig | 66 +- arch/mips/configs/ip22_defconfig | 148 +- arch/mips/configs/ip27_defconfig | 149 +- arch/mips/configs/ip32_defconfig | 68 +- arch/mips/configs/it8172_defconfig | 83 +- arch/mips/configs/ivr_defconfig | 64 +- arch/mips/configs/jaguar-atx_defconfig | 60 +- arch/mips/configs/jmr3927_defconfig | 66 +- arch/mips/configs/lasat200_defconfig | 79 +- arch/mips/configs/malta_defconfig | 65 +- .../{ocelot_3_defconfig => mirage_defconfig} | 395 +- arch/mips/configs/mpc30x_defconfig | 69 +- .../configs/mtx1_defconfig} | 457 +- arch/mips/configs/ocelot_c_defconfig | 61 +- arch/mips/configs/ocelot_defconfig | 65 +- arch/mips/configs/ocelot_g_defconfig | 61 +- arch/mips/configs/osprey_defconfig | 65 +- arch/mips/configs/pb1000_defconfig | 671 +++ arch/mips/configs/pb1100_defconfig | 196 +- arch/mips/configs/pb1500_defconfig | 105 +- arch/mips/configs/pb1550_defconfig | 102 +- arch/mips/configs/rm200_defconfig | 158 +- arch/mips/configs/sb1250-swarm_defconfig | 77 +- arch/mips/configs/sead_defconfig | 62 +- arch/mips/configs/tb0226_defconfig | 70 +- arch/mips/configs/tb0229_defconfig | 62 +- arch/mips/configs/workpad_defconfig | 65 +- .../configs/xxs1500_defconfig} | 435 +- arch/mips/configs/yosemite_defconfig | 79 +- arch/mips/ddb5xxx/common/Makefile | 2 +- arch/mips/ddb5xxx/common/irq.c | 47 + arch/mips/ddb5xxx/ddb5074/irq.c | 10 +- arch/mips/ddb5xxx/ddb5074/nile4_pic.c | 2 + arch/mips/ddb5xxx/ddb5074/setup.c | 7 + arch/mips/ddb5xxx/ddb5476/irq.c | 2 +- arch/mips/ddb5xxx/ddb5476/setup.c | 8 + arch/mips/ddb5xxx/ddb5476/vrc5476_irq.c | 5 +- arch/mips/ddb5xxx/ddb5477/irq.c | 5 +- arch/mips/ddb5xxx/ddb5477/irq_5477.c | 4 +- arch/mips/ddb5xxx/ddb5477/setup.c | 6 +- arch/mips/dec/boot/decstation.c | 7 + arch/mips/dec/setup.c | 12 +- arch/mips/defconfig | 148 +- arch/mips/galileo-boards/ev96100/irq.c | 3 +- arch/mips/galileo-boards/ev96100/time.c | 3 - arch/mips/gt64120/common/time.c | 4 +- arch/mips/gt64120/ev64120/irq.c | 4 +- arch/mips/gt64120/momenco_ocelot/dbg_io.c | 2 +- arch/mips/gt64120/momenco_ocelot/irq.c | 11 +- arch/mips/hp-lj/Makefile | 26 + arch/mips/hp-lj/asic.c | 28 + arch/mips/hp-lj/gdb_hook.c | 99 + arch/mips/hp-lj/init.c | 50 + arch/mips/hp-lj/int-handler.S | 70 + arch/mips/hp-lj/irq.c | 37 + arch/mips/hp-lj/setup.c | 150 + arch/mips/hp-lj/utils.c | 69 + arch/mips/hp-lj/utils.h | 19 + arch/mips/ite-boards/generic/irq.c | 17 +- arch/mips/jazz/irq.c | 9 +- arch/mips/jazz/jazzdma.c | 12 - arch/mips/jazz/reset.c | 2 + arch/mips/jmr3927/rbhma3100/irq.c | 24 +- arch/mips/jmr3927/rbhma3100/setup.c | 6 + arch/mips/kernel/cpu-bugs64.c | 5 +- arch/mips/kernel/cpu-probe.c | 1 - arch/mips/kernel/entry.S | 5 - arch/mips/kernel/gdb-stub.c | 2 - arch/mips/kernel/genex.S | 20 +- arch/mips/kernel/head.S | 54 +- arch/mips/kernel/i8259.c | 4 +- arch/mips/kernel/ioctl32.c | 6 - arch/mips/kernel/irixelf.c | 47 +- arch/mips/kernel/irixsig.c | 27 +- arch/mips/kernel/irq-msc01.c | 189 - arch/mips/kernel/irq-mv6434x.c | 2 +- arch/mips/kernel/irq.c | 851 ++- arch/mips/kernel/process.c | 57 +- arch/mips/kernel/r4k_switch.S | 37 +- arch/mips/kernel/scall32-o32.S | 19 +- arch/mips/kernel/scall64-64.S | 43 +- arch/mips/kernel/scall64-n32.S | 29 +- arch/mips/kernel/scall64-o32.S | 680 +-- arch/mips/kernel/semaphore.c | 72 +- arch/mips/kernel/setup.c | 142 +- arch/mips/kernel/signal.c | 48 +- arch/mips/kernel/signal32.c | 93 +- arch/mips/kernel/signal_n32.c | 2 +- arch/mips/kernel/smp.c | 2 +- arch/mips/kernel/syscall.c | 10 +- arch/mips/kernel/sysirix.c | 43 +- arch/mips/kernel/time.c | 36 +- arch/mips/kernel/traps.c | 37 +- arch/mips/kernel/vmlinux.lds.S | 12 +- arch/mips/lasat/interrupt.c | 6 +- arch/mips/lasat/setup.c | 2 +- arch/mips/lib-64/dump_tlb.c | 2 +- arch/mips/lib/csum_partial_copy.c | 4 +- arch/mips/lib/dec_and_lock.c | 4 +- arch/mips/lib/strlen_user.S | 3 +- arch/mips/lib/strnlen_user.S | 3 +- arch/mips/math-emu/cp1emu.c | 6 +- arch/mips/mips-boards/atlas/atlas_int.c | 14 +- arch/mips/mips-boards/atlas/atlas_setup.c | 2 +- arch/mips/mips-boards/generic/init.c | 4 +- arch/mips/mips-boards/generic/memory.c | 2 +- arch/mips/mips-boards/generic/pci.c | 3 +- arch/mips/mips-boards/malta/malta_int.c | 18 +- arch/mips/mips-boards/malta/malta_setup.c | 44 +- arch/mips/mips-boards/sead/sead_int.c | 3 +- arch/mips/mips-boards/sead/sead_setup.c | 2 +- arch/mips/mm/Makefile | 25 +- arch/mips/mm/c-r3k.c | 4 +- arch/mips/mm/c-r4k.c | 151 +- arch/mips/mm/c-sb1.c | 40 +- arch/mips/mm/c-tx39.c | 4 +- arch/mips/mm/ioremap.c | 18 +- arch/mips/mm/pg-r4k.c | 4 +- arch/mips/mm/pgtable-64.c | 21 + arch/mips/mm/tlb-andes.c | 24 +- arch/mips/mm/tlb-r3k.c | 6 +- arch/mips/mm/tlb-r4k.c | 33 +- arch/mips/mm/tlb-r8k.c | 7 +- arch/mips/mm/tlb-sb1.c | 29 +- arch/mips/mm/tlbex.c | 1177 ----- arch/mips/mm/tlbex32-mips32.S | 253 - arch/mips/mm/tlbex32-r3k.S | 30 + arch/mips/mm/tlbex32-r4k.S | 268 +- arch/mips/mm/tlbex64-r4k.S | 203 + arch/mips/momentum/jaguar_atx/irq.c | 3 +- arch/mips/momentum/jaguar_atx/setup.c | 3 +- arch/mips/momentum/ocelot_3/Makefile | 8 - arch/mips/momentum/ocelot_3/int-handler.S | 137 - arch/mips/momentum/ocelot_3/irq.c | 81 - arch/mips/momentum/ocelot_3/ocelot_3_fpga.h | 57 - arch/mips/momentum/ocelot_3/prom.c | 248 - arch/mips/momentum/ocelot_3/reset.c | 60 - arch/mips/momentum/ocelot_3/setup.c | 399 -- arch/mips/momentum/ocelot_c/dbg_io.c | 2 +- arch/mips/momentum/ocelot_c/irq.c | 11 +- arch/mips/momentum/ocelot_g/dbg_io.c | 2 +- arch/mips/momentum/ocelot_g/gt-irq.c | 4 +- arch/mips/momentum/ocelot_g/irq.c | 11 +- arch/mips/pci/Makefile | 4 +- arch/mips/pci/fixup-atlas.c | 8 +- arch/mips/pci/fixup-au1000.c | 8 +- arch/mips/pci/fixup-capcella.c | 6 - arch/mips/pci/fixup-cobalt.c | 8 +- arch/mips/pci/fixup-ddb5074.c | 2 +- arch/mips/pci/fixup-ddb5477.c | 2 +- arch/mips/pci/fixup-ev96100.c | 6 - arch/mips/pci/fixup-ip32.c | 7 +- arch/mips/pci/fixup-ite8172g.c | 6 - arch/mips/pci/fixup-ivr.c | 6 - arch/mips/pci/fixup-jaguar.c | 9 +- arch/mips/pci/fixup-jmr3927.c | 6 - arch/mips/pci/fixup-lasat.c | 6 + arch/mips/pci/fixup-malta.c | 7 +- arch/mips/pci/fixup-mpc30x.c | 6 - arch/mips/pci/fixup-ocelot-c.c | 6 - arch/mips/pci/fixup-ocelot-g.c | 6 - arch/mips/pci/fixup-ocelot3.c | 41 - arch/mips/pci/fixup-rbtx4927.c | 113 +- arch/mips/pci/fixup-sni.c | 9 +- arch/mips/pci/fixup-tb0219.c | 6 - arch/mips/pci/fixup-tb0226.c | 6 - arch/mips/pci/fixup-yosemite.c | 6 - arch/mips/pci/ops-au1000.c | 16 +- arch/mips/pci/ops-it8172.c | 3 +- arch/mips/pci/ops-titan.c | 23 +- arch/mips/pci/ops-tx3927.c | 2 +- arch/mips/pci/ops-tx4927.c | 265 +- arch/mips/pci/pci-ddb5074.c | 7 +- arch/mips/pci/pci-ddb5476.c | 7 +- arch/mips/pci/pci-ddb5477.c | 9 +- arch/mips/pci/pci-ev96100.c | 4 +- arch/mips/pci/pci-hplj.c | 204 + arch/mips/pci/pci-ip27.c | 322 +- arch/mips/pci/pci-ip32.c | 2 +- arch/mips/pci/pci-jmr3927.c | 2 +- arch/mips/pci/pci-lasat.c | 10 +- arch/mips/pci/pci-ocelot-c.c | 3 +- arch/mips/pci/pci-ocelot-g.c | 3 +- arch/mips/pci/pci-sb1250.c | 25 +- arch/mips/pci/pci-vr41xx.c | 2 +- arch/mips/pci/pci-yosemite.c | 31 +- arch/mips/pci/pci.c | 6 +- arch/mips/pmc-sierra/yosemite/Makefile | 1 - arch/mips/pmc-sierra/yosemite/dbg_io.c | 2 +- arch/mips/pmc-sierra/yosemite/irq-handler.S | 26 +- arch/mips/pmc-sierra/yosemite/irq.c | 11 +- arch/mips/pmc-sierra/yosemite/prom.c | 18 +- arch/mips/pmc-sierra/yosemite/py-console.c | 7 + arch/mips/pmc-sierra/yosemite/setup.c | 4 +- arch/mips/pmc-sierra/yosemite/smp.c | 288 +- arch/mips/ramdisk/Makefile | 20 + arch/mips/ramdisk/ld.script | 9 + arch/mips/sgi-ip22/ip22-berr.c | 2 +- arch/mips/sgi-ip22/ip22-int.c | 3 +- arch/mips/sgi-ip22/ip22-setup.c | 24 +- arch/mips/sgi-ip27/ip27-hubio.c | 5 +- arch/mips/sgi-ip27/ip27-init.c | 372 +- arch/mips/sgi-ip27/ip27-irq.c | 104 +- arch/mips/sgi-ip27/ip27-klnuma.c | 4 +- arch/mips/sgi-ip27/ip27-memory.c | 347 +- arch/mips/sgi-ip27/ip27-smp.c | 7 + arch/mips/sgi-ip27/ip27-timer.c | 2 + arch/mips/sgi-ip32/crime.c | 34 +- arch/mips/sgi-ip32/ip32-irq.c | 69 +- arch/mips/sgi-ip32/ip32-reset.c | 16 +- arch/mips/sgi-ip32/ip32-setup.c | 8 +- arch/mips/sibyte/cfe/setup.c | 63 +- arch/mips/sibyte/cfe/smp.c | 11 +- arch/mips/sibyte/sb1250/irq.c | 25 +- arch/mips/sibyte/sb1250/irq_handler.S | 4 +- arch/mips/sibyte/sb1250/prom.c | 18 +- arch/mips/sibyte/swarm/setup.c | 4 +- arch/mips/sni/irq.c | 3 +- arch/mips/sni/setup.c | 3 +- arch/mips/tx4927/common/Makefile | 1 - arch/mips/tx4927/common/tx4927_irq.c | 124 +- arch/mips/tx4927/common/tx4927_setup.c | 11 +- .../toshiba_rbtx4927/toshiba_rbtx4927_irq.c | 13 +- .../toshiba_rbtx4927/toshiba_rbtx4927_prom.c | 9 - .../toshiba_rbtx4927/toshiba_rbtx4927_setup.c | 237 +- arch/mips/vr4181/common/irq.c | 12 +- arch/mips/vr41xx/common/icu.c | 5 +- arch/mips/vr41xx/common/vrc4173.c | 5 +- arch/parisc/Makefile | 17 +- arch/parisc/configs/a500_defconfig | 38 +- arch/parisc/hpux/fs.c | 5 +- arch/parisc/install.sh | 38 - arch/parisc/kernel/Makefile | 7 +- arch/parisc/kernel/asm-offsets.c | 4 - arch/parisc/kernel/cache.c | 21 - arch/parisc/kernel/entry.S | 122 +- arch/parisc/kernel/firmware.c | 2 +- arch/parisc/kernel/head.S | 220 +- arch/parisc/kernel/head64.S | 327 ++ arch/parisc/kernel/pacache.S | 6 +- arch/parisc/kernel/parisc_ksyms.c | 14 +- arch/parisc/kernel/pci-dma.c | 4 - arch/parisc/kernel/pdc_cons.c | 13 - arch/parisc/kernel/perf_asm.S | 854 +-- arch/parisc/kernel/perf_images.h | 1 - arch/parisc/kernel/process.c | 5 +- arch/parisc/kernel/ptrace.c | 4 - arch/parisc/kernel/real2.S | 4 +- arch/parisc/kernel/signal.c | 31 +- arch/parisc/kernel/smp.c | 14 +- arch/parisc/kernel/sys_parisc.c | 8 - arch/parisc/kernel/sys_parisc32.c | 5 +- arch/parisc/kernel/syscall.S | 373 +- arch/parisc/kernel/syscall_table.S | 63 +- arch/parisc/kernel/time.c | 2 - arch/parisc/kernel/topology.c | 37 - arch/parisc/kernel/traps.c | 123 +- arch/parisc/kernel/unaligned.c | 185 +- arch/parisc/kernel/unwind.c | 118 +- arch/parisc/lib/Makefile | 2 +- arch/parisc/lib/bitops.c | 24 +- arch/parisc/lib/checksum.c | 40 +- arch/parisc/lib/debuglocks.c | 73 +- arch/parisc/lib/fixup.S | 89 - arch/parisc/lib/lusercopy.S | 161 +- arch/parisc/lib/memcpy.c | 530 -- arch/parisc/mm/fault.c | 15 +- arch/parisc/mm/init.c | 21 +- arch/ppc/4xx_io/serial_sicc.c | 71 +- arch/ppc/8260_io/enet.c | 2 +- arch/ppc/8260_io/fcc_enet.c | 2 +- arch/ppc/8xx_io/Kconfig | 66 +- arch/ppc/8xx_io/Makefile | 2 +- arch/ppc/8xx_io/commproc.c | 267 +- arch/ppc/8xx_io/enet.c | 12 +- arch/ppc/8xx_io/fec.c | 6 +- arch/ppc/8xx_io/micropatch.c | 145 +- arch/ppc/8xx_io/uart.c | 3012 +++++++++++ arch/ppc/Kconfig | 59 +- arch/ppc/Kconfig.debug | 14 +- arch/ppc/boot/common/util.S | 2 - arch/ppc/boot/lib/Makefile | 21 +- arch/ppc/boot/simple/Makefile | 2 +- arch/ppc/boot/simple/embed_config.c | 33 +- arch/ppc/boot/simple/misc-embedded.c | 2 +- arch/ppc/boot/simple/mpc52xx_tty.c | 1 - arch/ppc/boot/utils/mkbugboot.c | 2 +- arch/ppc/configs/FADS_defconfig | 24 +- arch/ppc/configs/IVMS8_defconfig | 21 +- arch/ppc/configs/SM850_defconfig | 27 +- arch/ppc/configs/SPD823TS_defconfig | 24 +- arch/ppc/configs/TQM823L_defconfig | 24 +- arch/ppc/configs/TQM850L_defconfig | 24 +- arch/ppc/configs/TQM860L_defconfig | 23 +- arch/ppc/configs/bseip_defconfig | 23 +- arch/ppc/configs/mbx_defconfig | 24 +- arch/ppc/configs/rpxcllf_defconfig | 295 +- arch/ppc/configs/rpxlite_defconfig | 291 +- arch/ppc/kernel/Makefile | 2 +- arch/ppc/kernel/bitops.c | 2 +- arch/ppc/kernel/cputable.c | 1342 ++--- arch/ppc/kernel/head_44x.S | 58 +- arch/ppc/kernel/head_4xx.S | 46 +- arch/ppc/kernel/head_8xx.S | 546 +- arch/ppc/kernel/head_booke.h | 66 - arch/ppc/kernel/head_e500.S | 58 +- arch/ppc/kernel/irq.c | 529 +- arch/ppc/kernel/machine_kexec.c | 110 +- arch/ppc/kernel/misc.S | 9 +- arch/ppc/kernel/pci.c | 30 +- arch/ppc/kernel/ppc-stub.c | 20 +- arch/ppc/kernel/ppc_htab.c | 2 +- arch/ppc/kernel/ppc_ksyms.c | 12 +- arch/ppc/kernel/process.c | 21 +- arch/ppc/kernel/ptrace.c | 9 +- arch/ppc/kernel/relocate_kernel.S | 16 +- arch/ppc/kernel/setup.c | 4 - arch/ppc/kernel/signal.c | 14 +- arch/ppc/kernel/softemu8xx.c | 2 +- arch/ppc/kernel/time.c | 3 - arch/ppc/kernel/traps.c | 24 +- arch/ppc/lib/dec_and_lock.c | 4 +- arch/ppc/lib/rheap.c | 1 - arch/ppc/mm/44x_mmu.c | 12 + arch/ppc/mm/pgtable.c | 12 +- arch/ppc/platforms/4xx/Kconfig | 22 +- arch/ppc/platforms/4xx/Makefile | 2 - arch/ppc/platforms/4xx/ebony.c | 32 +- arch/ppc/platforms/4xx/ocotea.c | 65 +- arch/ppc/platforms/4xx/virtex-ii_pro.c | 60 - arch/ppc/platforms/4xx/virtex-ii_pro.h | 99 - arch/ppc/platforms/4xx/xilinx_ml300.c | 164 - arch/ppc/platforms/4xx/xilinx_ml300.h | 47 - .../4xx/xparameters/xparameters_ml300.h | 310 -- arch/ppc/platforms/85xx/mpc8555.c | 7 - arch/ppc/platforms/85xx/mpc8560_ads.c | 14 +- arch/ppc/platforms/85xx/mpc85xx_ads_common.c | 3 +- arch/ppc/platforms/85xx/mpc85xx_cds_common.c | 16 +- arch/ppc/platforms/85xx/sbc85xx.c | 3 +- arch/ppc/platforms/adir_pic.c | 20 +- arch/ppc/platforms/chrp_pci.c | 2 +- arch/ppc/platforms/chrp_setup.c | 10 +- arch/ppc/platforms/gemini_pci.c | 2 +- arch/ppc/platforms/k2.c | 3 +- arch/ppc/platforms/lopec.c | 3 +- arch/ppc/platforms/mcpn765.c | 7 +- arch/ppc/platforms/mvme5100.c | 2 +- arch/ppc/platforms/pcore.c | 3 +- arch/ppc/platforms/pmac_cpufreq.c | 29 +- arch/ppc/platforms/pmac_feature.c | 16 +- arch/ppc/platforms/pmac_pci.c | 4 +- arch/ppc/platforms/pmac_pic.c | 40 +- arch/ppc/platforms/pmac_setup.c | 2 +- arch/ppc/platforms/pmac_smp.c | 9 +- arch/ppc/platforms/pplus.c | 9 +- arch/ppc/platforms/prep_pci.c | 21 +- arch/ppc/platforms/prpmc750.c | 3 +- arch/ppc/platforms/rpxclassic.h | 1 + arch/ppc/platforms/rpxlite.h | 1 + arch/ppc/platforms/sandpoint.c | 135 +- arch/ppc/platforms/sbc82xx.c | 12 +- arch/ppc/platforms/tqm8xx.h | 2 + arch/ppc/syslib/Makefile | 11 +- arch/ppc/syslib/gen550.h | 16 - arch/ppc/syslib/gen550_dbg.c | 4 +- arch/ppc/syslib/gen550_kgdb.c | 6 +- arch/ppc/syslib/i8259.c | 10 +- arch/ppc/syslib/ibm440gx_common.c | 72 +- arch/ppc/syslib/ibm440gx_common.h | 5 +- arch/ppc/syslib/ibm44x_common.c | 64 +- arch/ppc/syslib/indirect_pci.c | 15 +- arch/ppc/syslib/m8260_setup.c | 7 +- arch/ppc/syslib/m8xx_setup.c | 65 +- arch/ppc/syslib/mpc10x_common.c | 13 +- arch/ppc/syslib/mpc52xx_setup.c | 1 - arch/ppc/syslib/open_pic.c | 26 +- arch/ppc/syslib/ppc405_pci.c | 4 +- arch/ppc/syslib/ppc4xx_dma.c | 2 +- arch/ppc/syslib/ppc4xx_setup.c | 46 +- arch/ppc/syslib/ppc8xx_pic.c | 121 +- arch/ppc/syslib/prom.c | 2 +- arch/ppc/syslib/prom_init.c | 2 +- arch/ppc/syslib/todc_time.c | 7 +- arch/ppc/syslib/xilinx_pic.c | 142 - arch/ppc/xmon/start.c | 6 +- arch/ppc/xmon/xmon.c | 2 +- arch/ppc64/Kconfig | 32 - arch/ppc64/Kconfig.debug | 12 + arch/ppc64/Makefile | 7 +- arch/ppc64/boot/Makefile | 2 +- arch/ppc64/boot/main.c | 2 +- arch/ppc64/configs/maple_defconfig | 921 ---- arch/ppc64/kernel/LparData.c | 7 +- arch/ppc64/kernel/Makefile | 19 +- arch/ppc64/kernel/asm-offsets.c | 1 - arch/ppc64/kernel/bitops.c | 2 +- arch/ppc64/kernel/cpu_setup_power4.S | 9 - arch/ppc64/kernel/dma.c | 20 - arch/ppc64/kernel/eeh.c | 276 +- arch/ppc64/kernel/entry.S | 2 +- arch/ppc64/kernel/head.S | 76 +- arch/ppc64/kernel/i8259.c | 20 +- arch/ppc64/kernel/i8259.h | 4 +- arch/ppc64/kernel/iSeries_IoMmTable.c | 169 + arch/ppc64/kernel/iSeries_IoMmTable.h | 85 + arch/ppc64/kernel/iSeries_iommu.c | 89 +- arch/ppc64/kernel/iSeries_irq.c | 1 - arch/ppc64/kernel/iSeries_pci.c | 206 +- arch/ppc64/kernel/iSeries_proc.c | 1 - arch/ppc64/kernel/iSeries_setup.c | 9 +- arch/ppc64/kernel/iSeries_smp.c | 152 - arch/ppc64/kernel/idle.c | 8 +- arch/ppc64/kernel/iomap.c | 7 - arch/ppc64/kernel/iommu.c | 35 +- arch/ppc64/kernel/irq.c | 506 +- arch/ppc64/kernel/lmb.c | 2 +- arch/ppc64/kernel/lparcfg.c | 14 +- arch/ppc64/kernel/maple_pci.c | 527 -- arch/ppc64/kernel/maple_setup.c | 241 - arch/ppc64/kernel/maple_time.c | 226 - arch/ppc64/kernel/mf.c | 1120 ++-- arch/ppc64/kernel/mf_proc.c | 250 + arch/ppc64/kernel/misc.S | 36 +- arch/ppc64/kernel/mpic.c | 861 ---- arch/ppc64/kernel/mpic.h | 267 - arch/ppc64/kernel/nvram.c | 14 +- arch/ppc64/kernel/open_pic.c | 886 ++++ arch/ppc64/kernel/open_pic.h | 42 + arch/ppc64/kernel/open_pic_defs.h | 283 + arch/ppc64/kernel/open_pic_u3.c | 348 ++ arch/ppc64/kernel/pSeries_iommu.c | 32 +- arch/ppc64/kernel/pSeries_lpar.c | 16 - arch/ppc64/kernel/pSeries_pci.c | 379 +- arch/ppc64/kernel/pSeries_setup.c | 220 +- arch/ppc64/kernel/pSeries_smp.c | 382 -- arch/ppc64/kernel/pacaData.c | 6 +- arch/ppc64/kernel/pci.c | 351 +- arch/ppc64/kernel/pci.h | 13 +- arch/ppc64/kernel/pci_dn.c | 91 +- arch/ppc64/kernel/pci_iommu.c | 7 - arch/ppc64/kernel/pmac.h | 1 + arch/ppc64/kernel/pmac_low_i2c.c | 46 +- arch/ppc64/kernel/pmac_pci.c | 141 +- arch/ppc64/kernel/pmac_setup.c | 82 +- arch/ppc64/kernel/pmac_smp.c | 200 +- arch/ppc64/kernel/ppc_ksyms.c | 2 +- arch/ppc64/kernel/proc_ppc64.c | 36 +- arch/ppc64/kernel/process.c | 8 +- arch/ppc64/kernel/prom.c | 45 +- arch/ppc64/kernel/prom_init.c | 118 +- arch/ppc64/kernel/ras.c | 2 +- arch/ppc64/kernel/rtas-proc.c | 2 +- arch/ppc64/kernel/rtas.c | 61 +- arch/ppc64/kernel/rtas_flash.c | 4 +- arch/ppc64/kernel/rtasd.c | 19 +- arch/ppc64/kernel/rtc.c | 25 +- arch/ppc64/kernel/setup.c | 270 +- arch/ppc64/kernel/signal.c | 39 +- arch/ppc64/kernel/signal32.c | 52 +- arch/ppc64/kernel/smp.c | 550 +- arch/ppc64/kernel/sys_ppc32.c | 23 +- arch/ppc64/kernel/sysfs.c | 26 +- arch/ppc64/kernel/time.c | 20 +- arch/ppc64/kernel/traps.c | 3 - arch/ppc64/kernel/u3_iommu.c | 8 +- arch/ppc64/kernel/udbg.c | 120 +- arch/ppc64/kernel/vecemu.c | 2 +- arch/ppc64/kernel/vio.c | 19 +- arch/ppc64/kernel/viopath.c | 4 +- arch/ppc64/kernel/xics.c | 54 +- arch/ppc64/lib/Makefile | 1 - arch/ppc64/lib/dec_and_lock.c | 4 +- arch/ppc64/lib/sstep.c | 141 - arch/ppc64/mm/hash_native.c | 46 +- arch/ppc64/mm/hash_utils.c | 12 +- arch/ppc64/mm/hugetlbpage.c | 427 +- arch/ppc64/mm/init.c | 56 +- arch/ppc64/mm/mmap.c | 4 +- arch/ppc64/mm/numa.c | 36 +- arch/ppc64/oprofile/common.c | 5 - arch/ppc64/oprofile/op_impl.h | 1 - arch/ppc64/oprofile/op_model_power4.c | 44 +- arch/ppc64/xmon/start.c | 4 +- arch/ppc64/xmon/xmon.c | 150 +- arch/s390/Makefile | 12 - arch/s390/boot/Makefile | 4 +- arch/s390/defconfig | 43 +- arch/s390/kernel/asm-offsets.c | 2 - arch/s390/kernel/binfmt_elf32.c | 2 +- arch/s390/kernel/compat_linux.c | 2 - arch/s390/kernel/compat_wrapper.S | 16 +- arch/s390/kernel/cpcmd.c | 23 +- arch/s390/kernel/debug.c | 77 +- arch/s390/kernel/entry.S | 3 - arch/s390/kernel/entry64.S | 3 - arch/s390/kernel/irq.c | 2 +- arch/s390/kernel/process.c | 3 +- arch/s390/kernel/ptrace.c | 5 +- arch/s390/kernel/syscalls.S | 3 +- arch/s390/kernel/time.c | 11 +- arch/s390/kernel/traps.c | 81 +- arch/s390/mm/extmem.c | 904 ++-- arch/s390/mm/mmap.c | 4 +- arch/sh/Kconfig | 95 +- arch/sh/Makefile | 63 +- arch/sh/boards/bigsur/irq.c | 2 +- arch/sh/boards/bigsur/setup.c | 2 +- arch/sh/boards/dreamcast/setup.c | 16 +- arch/sh/boards/harp/setup.c | 35 - arch/sh/boards/overdrive/pcidma.c | 2 +- arch/sh/boards/renesas/edosk7705/Makefile | 10 - arch/sh/boards/renesas/edosk7705/io.c | 94 - arch/sh/boards/renesas/edosk7705/setup.c | 60 - arch/sh/boards/renesas/rts7751r2d/mach.c | 4 +- arch/sh/boards/se/73180/Makefile | 7 - arch/sh/boards/se/73180/io.c | 265 - arch/sh/boards/se/73180/irq.c | 137 - arch/sh/boards/se/73180/led.c | 67 - arch/sh/boards/se/73180/setup.c | 68 - arch/sh/boards/se/770x/irq.c | 31 +- arch/sh/boards/se/770x/mach.c | 2 - arch/sh/boards/se/7751/io.c | 2 +- arch/sh/boards/se/7751/pci.c | 2 +- arch/sh/boards/sh03/Makefile | 6 - arch/sh/boards/sh03/led.c | 49 - arch/sh/boards/sh03/rtc.c | 146 - arch/sh/boards/sh03/setup.c | 72 - arch/sh/boards/superh/microdev/Makefile | 8 - arch/sh/boards/superh/microdev/io.c | 370 -- arch/sh/boards/superh/microdev/irq.c | 200 - arch/sh/boards/superh/microdev/led.c | 102 - arch/sh/boards/superh/microdev/setup.c | 278 - arch/sh/cchips/voyagergx/consistent.c | 18 +- arch/sh/configs/rts7751r2d_defconfig | 445 +- arch/sh/configs/se73180_defconfig | 430 -- arch/sh/configs/se7705_defconfig | 645 --- arch/sh/configs/se7751_defconfig | 1 - arch/sh/configs/sh03_defconfig | 936 ---- arch/sh/drivers/dma/dma-api.c | 6 +- arch/sh/drivers/dma/dma-g2.c | 88 +- arch/sh/drivers/dma/dma-pvr2.c | 34 +- arch/sh/drivers/pci/Makefile | 2 +- arch/sh/drivers/pci/dma-dreamcast.c | 22 +- arch/sh/drivers/pci/fixups-dreamcast.c | 2 +- arch/sh/drivers/pci/fixups-rts7751r2d.c | 21 +- arch/sh/drivers/pci/fixups-sh03.c | 61 - arch/sh/drivers/pci/ops-rts7751r2d.c | 7 +- arch/sh/drivers/pci/ops-sh03.c | 45 - arch/sh/drivers/pci/pci-auto.c | 2 - arch/sh/drivers/pci/pci-sh7751.c | 7 +- arch/sh/drivers/pci/pci-st40.c | 276 +- arch/sh/drivers/pci/pci-st40.h | 70 - arch/sh/drivers/pci/pci.c | 2 - arch/sh/kernel/asm-offsets.c | 32 - arch/sh/kernel/cpu/init.c | 10 +- arch/sh/kernel/cpu/irq_imask.c | 2 +- arch/sh/kernel/cpu/irq_ipr.c | 10 +- arch/sh/kernel/cpu/sh2/Makefile | 2 - arch/sh/kernel/cpu/sh2/probe.c | 39 - arch/sh/kernel/cpu/sh3/Makefile | 2 +- arch/sh/kernel/cpu/sh3/probe.c | 97 - arch/sh/kernel/cpu/sh4/Makefile | 3 +- arch/sh/kernel/cpu/sh4/ex.S | 70 +- arch/sh/kernel/cpu/sh4/irq_intc2.c | 153 +- arch/sh/kernel/cpu/sh4/probe.c | 138 - arch/sh/kernel/cpu/sh4/sq.c | 31 +- arch/sh/kernel/early_printk.c | 4 +- arch/sh/kernel/entry.S | 6 - arch/sh/kernel/irq.c | 2 +- arch/sh/kernel/process.c | 16 +- arch/sh/kernel/setup.c | 3 +- arch/sh/kernel/sh_bios.c | 3 +- arch/sh/kernel/sh_ksyms.c | 18 +- arch/sh/kernel/signal.c | 23 +- arch/sh/kernel/time.c | 253 +- arch/sh/kernel/traps.c | 4 +- arch/sh/lib/Makefile | 8 +- arch/sh/lib/memcpy-sh4.S | 800 --- arch/sh/mm/Makefile | 2 - arch/sh/mm/cache-sh2.c | 24 +- arch/sh/mm/cache-sh3.c | 75 +- arch/sh/mm/cache-sh4.c | 129 +- arch/sh/mm/cache-sh7705.c | 222 - arch/sh/mm/consistent.c | 4 - arch/sh/mm/extable.c | 3 +- arch/sh/mm/ioremap.c | 3 +- arch/sh/mm/pg-sh7705.c | 137 - arch/sh/mm/tlb-sh3.c | 10 - arch/sh/oprofile/Makefile | 2 +- arch/sh/oprofile/op_model_sh7750.c | 286 -- arch/sh/ramdisk/Makefile | 5 +- arch/sh/tools/Makefile | 5 +- arch/sh/tools/gen-mach-types | 49 - arch/sh/tools/mach-types | 4 - arch/sh/tools/machgen.sh | 71 + arch/sh64/kernel/irq.c | 2 +- arch/sh64/kernel/irq_intc.c | 6 +- arch/sh64/kernel/pci_sh5.c | 2 +- arch/sh64/kernel/process.c | 8 +- arch/sh64/kernel/time.c | 3 - arch/sh64/mm/hugetlbpage.c | 10 +- arch/sparc/Kconfig | 29 +- arch/sparc/kernel/apc.c | 8 +- arch/sparc/kernel/auxio.c | 4 +- arch/sparc/kernel/ebus.c | 6 +- arch/sparc/kernel/entry.S | 8 +- arch/sparc/kernel/ioport.c | 24 +- arch/sparc/kernel/pcic.c | 9 +- arch/sparc/kernel/pmc.c | 8 +- arch/sparc/kernel/process.c | 11 +- arch/sparc/kernel/signal.c | 2 +- arch/sparc/kernel/sys_sunos.c | 4 +- arch/sparc/kernel/systbls.S | 3 +- arch/sparc/kernel/time.c | 8 +- arch/sparc/lib/bitext.c | 2 +- arch/sparc/mm/generic.c | 2 +- arch/sparc/mm/io-unit.c | 2 +- arch/sparc/mm/iommu.c | 1 - arch/sparc/mm/srmmu.c | 1 - arch/sparc64/Kconfig | 13 +- arch/sparc64/Makefile | 2 +- arch/sparc64/defconfig | 170 +- arch/sparc64/kernel/binfmt_aout32.c | 6 +- arch/sparc64/kernel/binfmt_elf32.c | 2 +- arch/sparc64/kernel/entry.S | 4 +- arch/sparc64/kernel/isa.c | 2 +- arch/sparc64/kernel/kprobes.c | 29 +- arch/sparc64/kernel/pci.c | 2 +- arch/sparc64/kernel/pci_iommu.c | 3 +- arch/sparc64/kernel/process.c | 4 +- arch/sparc64/kernel/signal.c | 2 +- arch/sparc64/kernel/signal32.c | 2 +- arch/sparc64/kernel/smp.c | 9 + arch/sparc64/kernel/sparc64_ksyms.c | 2 +- arch/sparc64/kernel/sys32.S | 6 +- arch/sparc64/kernel/sys_sparc32.c | 2 - arch/sparc64/kernel/sys_sunos32.c | 4 +- arch/sparc64/kernel/systbls.S | 16 +- arch/sparc64/kernel/time.c | 12 +- arch/sparc64/kernel/trampoline.S | 85 +- arch/sparc64/kernel/unaligned.c | 2 +- arch/sparc64/lib/Makefile | 4 +- arch/sparc64/lib/dec_and_lock.S | 4 +- arch/sparc64/lib/find_bit.c | 2 +- arch/sparc64/mm/fault.c | 22 +- arch/sparc64/mm/generic.c | 17 +- arch/sparc64/mm/init.c | 1 - arch/sparc64/solaris/entry64.S | 2 +- arch/sparc64/solaris/fs.c | 16 +- arch/sparc64/solaris/systbl.S | 16 - arch/um/Kconfig | 67 +- arch/um/Kconfig_block | 34 +- arch/um/Makefile | 31 +- arch/um/Makefile-i386 | 11 +- arch/um/Makefile-x86_64 | 1 - arch/um/defconfig | 194 +- arch/um/drivers/chan_kern.c | 48 + arch/um/drivers/chan_user.c | 18 +- arch/um/drivers/cow.h | 16 +- arch/um/drivers/cow_kern.c | 630 +++ arch/um/drivers/cow_user.c | 44 +- arch/um/drivers/hostaudio_kern.c | 4 +- arch/um/drivers/hostaudio_user.c | 63 +- arch/um/drivers/line.c | 29 +- arch/um/drivers/mconsole_kern.c | 66 - arch/um/drivers/mmapper_kern.c | 4 +- arch/um/drivers/net_kern.c | 1 - arch/um/drivers/net_user.c | 1 - arch/um/drivers/port_kern.c | 1 - arch/um/drivers/ssl.c | 6 +- arch/um/drivers/stdio_console.c | 4 +- arch/um/drivers/ubd_kern.c | 1 + arch/um/drivers/xterm_kern.c | 1 - arch/um/dyn.lds.S | 18 +- arch/um/include/.cvsignore | 4 - .../skas/include/mmu-skas.h => include/aio.h} | 24 +- arch/um/include/filehandle.h | 51 + arch/um/include/frame_kern.h | 6 +- arch/um/include/init.h | 10 + arch/um/include/irq_kern.h | 4 +- arch/um/include/irq_user.h | 2 +- arch/um/include/kern_util.h | 5 +- arch/um/include/line.h | 3 +- arch/um/include/mem_kern.h | 4 +- arch/um/include/mem_user.h | 1 - arch/um/include/mode.h | 4 +- arch/um/include/mode_kern.h | 4 +- arch/um/include/os.h | 15 +- arch/um/include/ptrace_user.h | 11 - arch/um/include/skas_ptregs.h | 26 + arch/um/include/syscall_user.h | 2 +- arch/um/include/sysdep-i386/.cvsignore | 2 - arch/um/include/um_mmu.h | 4 +- arch/um/include/um_uaccess.h | 4 +- arch/um/include/user_util.h | 2 +- arch/um/kernel/.cvsignore | 3 - arch/um/kernel/dyn.lds.S | 2 - arch/um/kernel/exec_kern.c | 16 +- arch/um/kernel/filehandle.c | 250 + arch/um/kernel/frame.c | 8 +- arch/um/kernel/frame_kern.c | 23 +- arch/um/kernel/helper.c | 7 +- arch/um/kernel/irq.c | 648 ++- arch/um/kernel/irq_user.c | 2 +- arch/um/kernel/main.c | 7 +- arch/um/kernel/mem_user.c | 55 +- arch/um/kernel/physmem.c | 151 +- arch/um/kernel/process.c | 109 +- arch/um/kernel/process_kern.c | 77 +- arch/um/kernel/ptrace.c | 28 +- arch/um/kernel/sigio_kern.c | 4 +- arch/um/kernel/signal_kern.c | 148 +- arch/um/kernel/signal_user.c | 5 +- arch/um/kernel/skas/Makefile | 8 +- arch/um/kernel/skas/exec_kern.c | 2 +- arch/um/kernel/skas/include/mode-skas.h | 39 - arch/um/kernel/skas/include/mode.h | 2 + arch/um/kernel/skas/include/mode_kern-skas.h | 53 - arch/um/kernel/skas/include/ptrace-skas.h | 10 + arch/um/kernel/skas/include/skas.h | 1 + arch/um/kernel/skas/include/uaccess-skas.h | 40 - arch/um/kernel/skas/process.c | 24 +- arch/um/kernel/skas/process_kern.c | 63 + arch/um/kernel/skas/syscall_kern.c | 1 - arch/um/kernel/skas/syscall_user.c | 11 +- arch/um/kernel/skas/uaccess.c | 16 +- arch/um/kernel/skas/util/.cvsignore | 1 - arch/um/kernel/syscall_kern.c | 50 +- arch/um/kernel/syscall_user.c | 4 +- arch/um/kernel/sysrq.c | 25 +- arch/um/kernel/time_kern.c | 2 + arch/um/kernel/tt/Makefile | 8 +- arch/um/kernel/tt/include/mmu-tt.h | 23 - arch/um/kernel/tt/include/mode-tt.h | 38 - arch/um/kernel/tt/include/mode_kern-tt.h | 53 - arch/um/kernel/tt/include/tt.h | 4 +- arch/um/kernel/tt/include/uaccess-tt.h | 71 - arch/um/kernel/tt/process_kern.c | 19 +- arch/um/kernel/tt/syscall_kern.c | 6 + arch/um/kernel/tt/syscall_user.c | 19 +- arch/um/kernel/tt/tracer.c | 12 +- arch/um/kernel/tt/trap_user.c | 7 - arch/um/kernel/tt/uaccess.c | 10 +- arch/um/kernel/um_arch.c | 11 +- arch/um/kernel/umid.c | 1 - arch/um/kernel/uml.lds.S | 2 - arch/um/kernel/user_syms.c | 113 - arch/um/kernel/vmlinux.lds.S | 11 + arch/um/main.c | 67 +- arch/um/os-Linux/aio.c | 404 ++ arch/um/os-Linux/file.c | 5 +- arch/um/os-Linux/process.c | 12 - arch/um/os-Linux/user_syms.c | 4 +- arch/um/sys-i386/bitops.c | 70 + arch/um/sys-i386/extable.c | 30 - arch/um/sys-i386/ptrace.c | 6 +- arch/um/sys-i386/semaphore.c | 301 ++ arch/um/sys-i386/sysrq.c | 5 - arch/um/sys-i386/util/.cvsignore | 2 - arch/um/sys-i386/util/Makefile | 2 + arch/um/uml.lds.S | 10 +- arch/um/util/.cvsignore | 2 - arch/v850/kernel/fpga85e2c.c | 2 +- arch/v850/kernel/memcons.c | 3 +- arch/v850/kernel/ptrace.c | 8 +- arch/v850/kernel/rte_mb_a_pci.c | 2 +- arch/v850/kernel/signal.c | 14 +- arch/v850/kernel/simcons.c | 2 +- arch/v850/kernel/time.c | 3 - arch/v850/kernel/vmlinux.lds.S | 5 - arch/x86_64/Kconfig | 29 +- arch/x86_64/Kconfig.debug | 22 +- arch/x86_64/boot/Makefile | 1 - arch/x86_64/boot/compressed/Makefile | 2 +- arch/x86_64/defconfig | 57 +- arch/x86_64/ia32/fpu32.c | 5 +- arch/x86_64/ia32/ia32_aout.c | 7 +- arch/x86_64/ia32/ia32_binfmt.c | 10 +- arch/x86_64/ia32/ia32_signal.c | 6 - arch/x86_64/ia32/ia32entry.S | 32 +- arch/x86_64/ia32/ptrace32.c | 3 +- arch/x86_64/ia32/sys_ia32.c | 256 +- arch/x86_64/ia32/syscall32.c | 4 +- arch/x86_64/kernel/Makefile | 11 +- arch/x86_64/kernel/apic.c | 70 +- arch/x86_64/kernel/cpufreq/Kconfig | 56 +- arch/x86_64/kernel/cpufreq/Makefile | 8 +- arch/x86_64/kernel/early_printk.c | 2 +- arch/x86_64/kernel/entry.S | 2 - arch/x86_64/kernel/genapic.c | 82 - arch/x86_64/kernel/genapic_cluster.c | 130 - arch/x86_64/kernel/genapic_flat.c | 127 - arch/x86_64/kernel/head.S | 12 - arch/x86_64/kernel/head64.c | 6 - arch/x86_64/kernel/i8259.c | 2 +- arch/x86_64/kernel/io_apic.c | 135 +- arch/x86_64/kernel/irq.c | 839 ++- arch/x86_64/kernel/kprobes.c | 481 -- arch/x86_64/kernel/machine_kexec.c | 2 +- arch/x86_64/kernel/mce.c | 3 +- arch/x86_64/kernel/mpparse.c | 14 +- arch/x86_64/kernel/nmi.c | 64 +- arch/x86_64/kernel/pci-gart.c | 23 +- arch/x86_64/kernel/process.c | 12 +- arch/x86_64/kernel/ptrace.c | 2 - arch/x86_64/kernel/reboot.c | 42 +- arch/x86_64/kernel/setup.c | 17 +- arch/x86_64/kernel/setup64.c | 67 +- arch/x86_64/kernel/signal.c | 12 +- arch/x86_64/kernel/smp.c | 153 +- arch/x86_64/kernel/smpboot.c | 9 +- arch/x86_64/kernel/time.c | 165 +- arch/x86_64/kernel/traps.c | 66 +- arch/x86_64/kernel/vmlinux.lds.S | 35 +- arch/x86_64/kernel/vsyscall.c | 15 +- arch/x86_64/kernel/x8664_ksyms.c | 4 +- arch/x86_64/lib/bitops.c | 2 +- arch/x86_64/lib/bitstr.c | 2 +- arch/x86_64/lib/dec_and_lock.c | 2 +- arch/x86_64/mm/fault.c | 8 +- arch/x86_64/mm/init.c | 40 +- arch/x86_64/mm/ioremap.c | 2 +- arch/x86_64/mm/k8topology.c | 1 - arch/x86_64/mm/mmap.c | 4 +- arch/x86_64/mm/numa.c | 12 +- arch/x86_64/pci/mmconfig.c | 7 - configs/kernel-2.6.10-i686-planetlab.config | 2406 --------- .../kernel-2.6.10-i686-uml-planetlab.config | 537 -- ...mp.config => kernel-2.6.9-i586-smp.config} | 284 +- ...0-i586.config => kernel-2.6.9-i586.config} | 273 +- configs/kernel-2.6.9-i686-planetlab.config | 3 +- ...mp.config => kernel-2.6.9-i686-smp.config} | 285 +- ...0-i686.config => kernel-2.6.9-i686.config} | 273 +- crypto/Kconfig | 47 +- crypto/Makefile | 1 - crypto/anubis.c | 719 --- crypto/blowfish.c | 2 +- crypto/serpent.c | 105 +- crypto/sha256.c | 10 +- crypto/sha512.c | 31 +- crypto/tcrypt.c | 25 +- crypto/tcrypt.h | 302 -- drivers/Kconfig | 2 - drivers/Makefile | 5 +- drivers/acorn/block/fd1772.c | 2 +- drivers/acpi/Kconfig | 31 +- drivers/acpi/Makefile | 4 +- drivers/acpi/ac.c | 8 +- drivers/acpi/acpi_ksyms.c | 159 + drivers/acpi/battery.c | 205 +- drivers/acpi/bus.c | 66 +- drivers/acpi/button.c | 8 +- drivers/acpi/dispatcher/dsmthdat.c | 24 +- drivers/acpi/dispatcher/dsutils.c | 2 +- drivers/acpi/dispatcher/dswexec.c | 45 +- drivers/acpi/dispatcher/dswload.c | 22 +- drivers/acpi/dispatcher/dswstate.c | 11 +- drivers/acpi/ec.c | 63 +- drivers/acpi/events/evgpe.c | 9 +- drivers/acpi/events/evgpeblk.c | 4 +- drivers/acpi/events/evxface.c | 56 +- drivers/acpi/events/evxfevnt.c | 15 +- drivers/acpi/events/evxfregn.c | 4 +- drivers/acpi/executer/exconvrt.c | 359 +- drivers/acpi/executer/exdump.c | 225 +- drivers/acpi/executer/exfldio.c | 2 +- drivers/acpi/executer/exmisc.c | 467 +- drivers/acpi/executer/exoparg1.c | 211 +- drivers/acpi/executer/exoparg2.c | 171 +- drivers/acpi/executer/exprep.c | 1 - drivers/acpi/executer/exregion.c | 2 +- drivers/acpi/executer/exresolv.c | 60 - drivers/acpi/executer/exresop.c | 16 +- drivers/acpi/executer/exstore.c | 37 +- drivers/acpi/executer/exsystem.c | 5 +- drivers/acpi/executer/exutils.c | 18 +- drivers/acpi/fan.c | 50 +- drivers/acpi/hardware/Makefile | 4 +- drivers/acpi/hardware/hwgpe.c | 3 +- drivers/acpi/hardware/hwregs.c | 38 +- drivers/acpi/hardware/hwsleep.c | 7 +- drivers/acpi/hardware/hwtimer.c | 24 +- drivers/acpi/ibm_acpi.c | 1242 ----- drivers/acpi/motherboard.c | 4 +- drivers/acpi/namespace/Makefile | 4 +- drivers/acpi/namespace/nsaccess.c | 16 +- drivers/acpi/namespace/nsalloc.c | 8 +- drivers/acpi/namespace/nsdump.c | 65 +- drivers/acpi/namespace/nsdumpdv.c | 11 +- drivers/acpi/namespace/nseval.c | 92 +- drivers/acpi/namespace/nsinit.c | 27 +- drivers/acpi/namespace/nsload.c | 15 +- drivers/acpi/namespace/nsnames.c | 9 +- drivers/acpi/namespace/nssearch.c | 49 +- drivers/acpi/namespace/nsutils.c | 56 +- drivers/acpi/namespace/nswalk.c | 4 +- drivers/acpi/namespace/nsxfeval.c | 7 +- drivers/acpi/namespace/nsxfname.c | 4 - drivers/acpi/namespace/nsxfobj.c | 5 +- drivers/acpi/osl.c | 61 +- drivers/acpi/parser/psopcode.c | 27 +- drivers/acpi/parser/psparse.c | 189 +- drivers/acpi/parser/pstree.c | 4 +- drivers/acpi/parser/psutils.c | 27 +- drivers/acpi/pci_bind.c | 2 - drivers/acpi/pci_irq.c | 47 +- drivers/acpi/pci_link.c | 49 +- drivers/acpi/pci_root.c | 2 - drivers/acpi/power.c | 16 +- drivers/acpi/processor.c | 228 +- drivers/acpi/resources/Makefile | 4 +- drivers/acpi/resources/rscalc.c | 112 +- drivers/acpi/resources/rsutils.c | 3 +- drivers/acpi/resources/rsxface.c | 10 +- drivers/acpi/scan.c | 19 +- drivers/acpi/sleep/Makefile | 4 +- drivers/acpi/sleep/main.c | 11 +- drivers/acpi/sleep/poweroff.c | 2 - drivers/acpi/sleep/proc.c | 2 +- drivers/acpi/sleep/sleep.h | 1 - drivers/acpi/sleep/wakeup.c | 32 +- drivers/acpi/system.c | 45 +- drivers/acpi/tables/tbconvrt.c | 58 +- drivers/acpi/tables/tbget.c | 3 - drivers/acpi/tables/tbinstal.c | 3 +- drivers/acpi/tables/tbutils.c | 3 +- drivers/acpi/tables/tbxface.c | 7 +- drivers/acpi/tables/tbxfroot.c | 29 +- drivers/acpi/thermal.c | 22 +- drivers/acpi/utilities/utalloc.c | 23 +- drivers/acpi/utilities/utcopy.c | 27 +- drivers/acpi/utilities/utdebug.c | 7 - drivers/acpi/utilities/utdelete.c | 9 +- drivers/acpi/utilities/utglobal.c | 5 - drivers/acpi/utilities/utmath.c | 43 +- drivers/acpi/utilities/utmisc.c | 105 +- drivers/acpi/utilities/utobject.c | 60 +- drivers/acpi/utilities/utxface.c | 6 - drivers/acpi/utils.c | 6 +- drivers/acpi/video.c | 1988 ------- drivers/atm/Makefile | 2 +- drivers/atm/ambassador.c | 179 +- drivers/atm/ambassador.h | 2 +- drivers/atm/atmtcp.c | 42 +- drivers/atm/eni.c | 21 +- drivers/atm/firestream.c | 69 +- drivers/atm/fore200e.c | 87 +- drivers/atm/fore200e.h | 32 +- drivers/atm/he.c | 22 +- drivers/atm/horizon.c | 342 +- drivers/atm/horizon.h | 2 +- drivers/atm/idt77252.c | 33 +- drivers/atm/iphase.c | 94 +- drivers/atm/iphase.h | 24 +- drivers/atm/lanai.c | 8 +- drivers/atm/nicstar.c | 2 +- drivers/atm/zatm.c | 102 +- drivers/base/Kconfig | 2 +- drivers/base/bus.c | 172 +- drivers/base/class.c | 36 +- drivers/base/class_simple.c | 2 +- drivers/base/core.c | 32 +- drivers/base/cpu.c | 2 - drivers/base/firmware_class.c | 15 +- drivers/base/power/main.c | 13 +- drivers/base/power/power.h | 5 - drivers/base/power/resume.c | 20 +- drivers/base/power/suspend.c | 48 +- drivers/block/DAC960.c | 3 +- drivers/block/Kconfig | 76 - drivers/block/Kconfig.iosched | 13 +- drivers/block/Makefile | 2 - drivers/block/amiflop.c | 4 +- drivers/block/as-iosched.c | 122 +- drivers/block/cciss.c | 3 +- drivers/block/cciss_scsi.c | 53 +- drivers/block/cfq-iosched.c | 1510 +----- drivers/block/cpqarray.c | 18 +- drivers/block/deadline-iosched.c | 136 +- drivers/block/diskdump.c | 1121 ---- drivers/block/elevator.c | 385 +- drivers/block/floppy.c | 30 +- drivers/block/genhd.c | 46 +- drivers/block/ll_rw_blk.c | 470 +- drivers/block/loop.c | 4 +- drivers/block/noop-iosched.c | 33 +- drivers/block/paride/pg.c | 2 +- drivers/block/pktcdvd.c | 2679 ---------- drivers/block/rd.c | 23 +- drivers/block/scsi_ioctl.c | 16 +- drivers/block/swim3.c | 50 +- drivers/block/ub.c | 234 +- drivers/block/umem.c | 6 +- drivers/block/viodasd.c | 2 +- drivers/block/xd.c | 20 +- drivers/block/z2ram.c | 2 +- drivers/bluetooth/bcm203x.c | 3 +- drivers/bluetooth/bfusb.c | 4 +- drivers/bluetooth/bluecard_cs.c | 34 +- drivers/bluetooth/bt3c_cs.c | 48 +- drivers/bluetooth/btuart_cs.c | 33 +- drivers/bluetooth/dtl1_cs.c | 33 +- drivers/bluetooth/hci_ldisc.c | 4 +- drivers/bluetooth/hci_usb.c | 41 +- drivers/bluetooth/hci_usb.h | 7 + drivers/bluetooth/hci_vhci.c | 4 +- drivers/cdrom/Makefile | 1 - drivers/cdrom/cdrom.c | 105 +- drivers/cdrom/cdu31a.c | 4 +- drivers/cdrom/sbpcd.c | 9 +- drivers/char/Kconfig | 24 +- drivers/char/Makefile | 2 - drivers/char/README.computone | 10 + drivers/char/README.cyclomY | 23 + drivers/char/README.epca | 532 ++ drivers/char/README.scc | 5 + drivers/char/agp/ali-agp.c | 11 - drivers/char/agp/alpha-agp.c | 2 - drivers/char/agp/amd-k7-agp.c | 2 - drivers/char/agp/amd64-agp.c | 11 +- drivers/char/agp/ati-agp.c | 3 - drivers/char/agp/efficeon-agp.c | 7 +- drivers/char/agp/frontend.c | 8 +- drivers/char/agp/generic.c | 16 +- drivers/char/agp/hp-agp.c | 2 - drivers/char/agp/i460-agp.c | 8 +- drivers/char/agp/intel-agp.c | 80 +- drivers/char/agp/intel-mch-agp.c | 45 +- drivers/char/agp/isoch.c | 2 +- drivers/char/agp/nvidia-agp.c | 2 - drivers/char/agp/sis-agp.c | 8 +- drivers/char/agp/sworks-agp.c | 2 - drivers/char/agp/uninorth-agp.c | 2 - drivers/char/agp/via-agp.c | 6 +- drivers/char/amiserial.c | 91 +- drivers/char/applicom.c | 2 +- drivers/char/cyclades.c | 82 +- drivers/char/drm/drm_drv.h | 3 +- drivers/char/drm/drm_fops.h | 7 +- drivers/char/drm/drm_vm.h | 4 +- drivers/char/drm/i810_dma.c | 4 +- drivers/char/drm/i830_dma.c | 4 +- drivers/char/drm/radeon_mem.c | 8 +- drivers/char/ds1302.c | 354 -- drivers/char/dtlk.c | 19 +- drivers/char/ec3104_keyb.c | 2 +- drivers/char/epca.c | 178 +- drivers/char/epca.h | 2 +- drivers/char/esp.c | 95 +- drivers/char/ftape/lowlevel/fdc-io.c | 2 +- drivers/char/ftape/lowlevel/ftape-ctl.c | 7 +- drivers/char/ftape/lowlevel/ftape-init.c | 31 +- drivers/char/ftape/lowlevel/ftape-io.c | 20 +- drivers/char/ftape/zftape/zftape-buffers.c | 4 +- drivers/char/generic_serial.c | 120 +- drivers/char/hpet.c | 100 +- drivers/char/hvc_console.c | 98 +- drivers/char/hvcs.c | 28 +- drivers/char/hvsi.c | 17 +- drivers/char/hw_random.c | 4 +- drivers/char/i8k.c | 16 +- drivers/char/ip2.c | 6 +- drivers/char/ip2main.c | 5 +- drivers/char/ipmi/ipmi_si_intf.c | 31 +- drivers/char/isicom.c | 868 ++-- drivers/char/istallion.c | 66 +- drivers/char/lcd.c | 4 +- drivers/char/lp.c | 4 +- drivers/char/mem.c | 93 +- drivers/char/mmtimer.c | 543 +- drivers/char/moxa.c | 134 +- drivers/char/mwave/3780i.c | 2 +- drivers/char/mxser.c | 2758 ++++------ drivers/char/mxser.h | 450 -- drivers/char/n_hdlc.c | 24 +- drivers/char/n_r3964.c | 15 +- drivers/char/n_tty.c | 36 +- drivers/char/nwflash.c | 2 +- drivers/char/pcmcia/synclink_cs.c | 33 +- drivers/char/pcxx.c | 55 +- drivers/char/pty.c | 49 +- drivers/char/qtronix.c | 2 +- drivers/char/random.c | 51 +- drivers/char/rio/rio_linux.c | 12 +- drivers/char/riscom8.c | 66 +- drivers/char/rocket.c | 84 +- drivers/char/s3c2410-rtc.c | 587 --- drivers/char/serial167.c | 92 +- drivers/char/snsc.c | 26 +- drivers/char/sonypi.c | 898 ++-- drivers/char/sonypi.h | 134 +- drivers/char/specialix.c | 68 +- drivers/char/stallion.c | 170 +- drivers/char/sx.c | 81 +- drivers/char/sx.h | 4 +- drivers/char/synclink.c | 115 +- drivers/char/synclinkmp.c | 46 +- drivers/char/sysrq.c | 72 +- drivers/char/tipar.c | 2 +- drivers/char/tpqic02.c | 3 +- drivers/char/tty_io.c | 132 +- drivers/char/tty_ioctl.c | 4 +- drivers/char/viocons.c | 184 +- drivers/char/viotape.c | 2 +- drivers/char/vt.c | 54 +- drivers/char/watchdog/Kconfig | 30 - drivers/char/watchdog/Makefile | 1 - drivers/char/watchdog/alim7101_wdt.c | 46 +- drivers/char/watchdog/i8xx_tco.c | 13 +- drivers/char/watchdog/ixp2000_wdt.c | 2 +- drivers/char/watchdog/ixp4xx_wdt.c | 4 +- drivers/char/watchdog/s3c2410_wdt.c | 516 -- drivers/char/watchdog/sc520_wdt.c | 2 +- drivers/char/watchdog/scx200_wdt.c | 12 +- drivers/cpufreq/Kconfig | 68 +- drivers/cpufreq/cpufreq.c | 295 +- drivers/cpufreq/cpufreq_ondemand.c | 52 +- drivers/cpufreq/cpufreq_performance.c | 4 - drivers/cpufreq/cpufreq_powersave.c | 3 - drivers/cpufreq/cpufreq_userspace.c | 73 +- drivers/cpufreq/freq_table.c | 23 +- drivers/dio/Makefile | 2 +- drivers/dio/dio-driver.c | 163 - drivers/dio/dio-sysfs.c | 77 - drivers/dio/dio.c | 321 +- drivers/dump/dump_fmt.c | 4 +- drivers/dump/dump_i386.c | 4 +- drivers/dump/dump_memdev.c | 18 +- drivers/dump/dump_overlay.c | 6 +- drivers/dump/dump_setup.c | 9 +- drivers/eisa/eisa-bus.c | 4 +- drivers/fc4/soc.c | 10 +- drivers/fc4/soc.h | 2 +- drivers/fc4/socal.c | 12 +- drivers/fc4/socal.h | 2 +- drivers/firmware/Kconfig | 6 +- drivers/firmware/efivars.c | 2 +- drivers/firmware/pcdp.c | 138 +- drivers/i2c/algos/i2c-algo-ite.c | 8 + drivers/i2c/algos/i2c-algo-pca.c | 4 +- drivers/i2c/busses/Kconfig | 51 +- drivers/i2c/busses/Makefile | 3 - drivers/i2c/busses/i2c-ali1535.c | 8 +- drivers/i2c/busses/i2c-ali1563.c | 4 +- drivers/i2c/busses/i2c-ali15x3.c | 4 +- drivers/i2c/busses/i2c-amd756-s4882.c | 264 - drivers/i2c/busses/i2c-amd756.c | 60 +- drivers/i2c/busses/i2c-amd8111.c | 16 +- drivers/i2c/busses/i2c-elektor.c | 36 +- drivers/i2c/busses/i2c-hydra.c | 4 +- drivers/i2c/busses/i2c-i801.c | 11 +- drivers/i2c/busses/i2c-i810.c | 6 +- drivers/i2c/busses/i2c-ibm_iic.c | 52 +- drivers/i2c/busses/i2c-ibm_iic.h | 2 +- drivers/i2c/busses/i2c-ite.c | 31 +- drivers/i2c/busses/i2c-keywest.c | 8 +- drivers/i2c/busses/i2c-keywest.h | 6 +- drivers/i2c/busses/i2c-mpc.c | 7 +- drivers/i2c/busses/i2c-nforce2.c | 21 +- drivers/i2c/busses/i2c-piix4.c | 4 +- drivers/i2c/busses/i2c-prosavage.c | 14 +- drivers/i2c/busses/i2c-s3c2410.c | 926 ---- drivers/i2c/busses/i2c-savage4.c | 6 +- drivers/i2c/busses/i2c-sis5595.c | 4 +- drivers/i2c/busses/i2c-sis630.c | 4 +- drivers/i2c/busses/i2c-sis96x.c | 4 +- drivers/i2c/busses/i2c-stub.c | 125 - drivers/i2c/busses/i2c-via.c | 4 +- drivers/i2c/busses/i2c-viapro.c | 4 +- drivers/i2c/busses/i2c-voodoo3.c | 6 +- drivers/i2c/busses/scx200_acb.c | 20 +- drivers/i2c/busses/scx200_i2c.c | 4 +- drivers/i2c/chips/Kconfig | 48 - drivers/i2c/chips/Makefile | 4 - drivers/i2c/chips/adm1021.c | 11 +- drivers/i2c/chips/adm1025.c | 20 +- drivers/i2c/chips/adm1026.c | 1779 ------- drivers/i2c/chips/adm1031.c | 52 +- drivers/i2c/chips/asb100.c | 23 +- drivers/i2c/chips/ds1621.c | 7 +- drivers/i2c/chips/eeprom.c | 7 +- drivers/i2c/chips/fscher.c | 4 +- drivers/i2c/chips/gl518sm.c | 10 +- drivers/i2c/chips/it87.c | 64 +- drivers/i2c/chips/lm63.c | 567 -- drivers/i2c/chips/lm75.c | 7 +- drivers/i2c/chips/lm77.c | 6 +- drivers/i2c/chips/lm78.c | 47 +- drivers/i2c/chips/lm80.c | 12 +- drivers/i2c/chips/lm83.c | 30 +- drivers/i2c/chips/lm85.c | 504 +- drivers/i2c/chips/lm87.c | 812 --- drivers/i2c/chips/lm90.c | 47 +- drivers/i2c/chips/max1619.c | 13 +- drivers/i2c/chips/pc87360.c | 1298 ----- drivers/i2c/chips/pcf8574.c | 8 +- drivers/i2c/chips/pcf8591.c | 7 +- drivers/i2c/chips/smsc47m1.c | 87 +- drivers/i2c/chips/via686a.c | 34 +- drivers/i2c/chips/w83627hf.c | 24 +- drivers/i2c/chips/w83781d.c | 82 +- drivers/i2c/chips/w83l785ts.c | 11 +- drivers/i2c/i2c-core.c | 106 +- drivers/i2c/i2c-dev.c | 2 +- drivers/i2c/i2c-sensor-detect.c | 79 +- drivers/ide/Kconfig | 43 +- drivers/ide/Makefile | 1 - drivers/ide/arm/icside.c | 438 +- drivers/ide/arm/rapide.c | 85 +- drivers/ide/cris/Makefile | 3 - drivers/ide/ide-cd.c | 94 +- drivers/ide/ide-cd.h | 6 +- drivers/ide/ide-default.c | 2 +- drivers/ide/ide-disk.c | 470 +- drivers/ide/ide-dma.c | 238 +- drivers/ide/ide-floppy.c | 14 +- drivers/ide/ide-io.c | 115 +- drivers/ide/ide-iops.c | 112 +- drivers/ide/ide-lib.c | 18 +- drivers/ide/ide-pnp.c | 7 +- drivers/ide/ide-probe.c | 63 +- drivers/ide/ide-proc.c | 342 +- drivers/ide/ide-tape.c | 12 +- drivers/ide/ide-taskfile.c | 189 +- drivers/ide/ide.c | 82 +- drivers/ide/legacy/Makefile | 1 + drivers/ide/legacy/ali14xx.c | 2 - drivers/ide/legacy/dtc2278.c | 2 - drivers/ide/legacy/hd.c | 8 +- drivers/ide/legacy/ht6560b.c | 2 - drivers/ide/legacy/ide-cs.c | 12 +- drivers/ide/legacy/pdc4030.c | 679 +++ drivers/ide/legacy/pdc4030.h | 70 + drivers/ide/legacy/qd65xx.c | 9 +- drivers/ide/legacy/qd65xx.h | 2 +- drivers/ide/legacy/umc8672.c | 2 - drivers/ide/pci/Makefile | 2 +- drivers/ide/pci/aec62xx.c | 144 +- drivers/ide/pci/aec62xx.h | 6 +- drivers/ide/pci/alim15x3.c | 25 +- drivers/ide/pci/amd74xx.c | 4 +- drivers/ide/pci/atiixp.c | 172 +- drivers/ide/pci/cmd64x.c | 34 +- drivers/ide/pci/cs5520.c | 87 +- drivers/ide/pci/cs5530.c | 59 + drivers/ide/pci/cy82c693.c | 2 +- drivers/ide/pci/generic.c | 4 +- drivers/ide/pci/hpt34x.c | 55 +- drivers/ide/pci/hpt34x.h | 29 + drivers/ide/pci/hpt366.c | 553 +- drivers/ide/pci/hpt366.h | 47 +- drivers/ide/pci/it8172.c | 34 +- drivers/ide/pci/{it821x.c => it8212.c} | 425 +- drivers/ide/pci/ns87415.c | 101 +- drivers/ide/pci/pdc202xx_new.c | 161 +- drivers/ide/pci/pdc202xx_new.h | 2 + drivers/ide/pci/pdc202xx_old.c | 175 +- drivers/ide/pci/pdc202xx_old.h | 37 + drivers/ide/pci/piix.c | 186 +- drivers/ide/pci/piix.h | 7 +- drivers/ide/pci/rz1000.c | 2 +- drivers/ide/pci/sc1200.c | 69 +- drivers/ide/pci/serverworks.c | 204 +- drivers/ide/pci/serverworks.h | 4 +- drivers/ide/pci/sgiioc4.c | 86 +- drivers/ide/pci/siimage.c | 87 +- drivers/ide/pci/sis5513.c | 34 +- drivers/ide/pci/sl82c105.c | 8 +- drivers/ide/pci/slc90e66.c | 146 +- drivers/ide/pci/triflex.c | 25 +- drivers/ide/pci/trm290.c | 99 +- drivers/ide/ppc/pmac.c | 212 +- drivers/ide/setup-pci.c | 134 +- drivers/ieee1394/.cvsignore | 2 - drivers/ieee1394/eth1394.c | 96 +- drivers/ieee1394/nodemgr.c | 13 +- drivers/ieee1394/ohci1394.c | 12 +- drivers/ieee1394/pcilynx.c | 2 +- drivers/ieee1394/pcilynx.h | 8 +- drivers/ieee1394/sbp2.c | 11 +- drivers/ieee1394/sbp2.h | 18 +- drivers/ieee1394/video1394.c | 2 +- drivers/input/evdev.c | 4 +- drivers/input/gameport/Kconfig | 2 +- drivers/input/gameport/fm801-gp.c | 2 +- drivers/input/input.c | 2 +- drivers/input/joydev.c | 4 +- drivers/input/joystick/amijoy.c | 3 +- drivers/input/joystick/analog.c | 2 +- drivers/input/joystick/db9.c | 6 +- drivers/input/joystick/gamecon.c | 6 +- drivers/input/joystick/sidewinder.c | 2 +- drivers/input/joystick/turbografx.c | 6 +- drivers/input/mouse/Kconfig | 6 +- drivers/input/mouse/pc110pad.c | 15 - drivers/input/mousedev.c | 4 +- drivers/input/serio/Kconfig | 2 +- drivers/input/serio/i8042-io.h | 11 +- drivers/input/serio/i8042.c | 77 +- drivers/input/serio/maceps2.c | 2 +- drivers/input/serio/q40kbd.c | 2 +- drivers/input/serio/rpckbd.c | 58 +- drivers/input/serio/serio.c | 7 +- drivers/input/serio/serport.c | 2 +- drivers/input/tsdev.c | 10 +- drivers/isdn/act2000/act2000_isa.c | 11 +- drivers/isdn/capi/capi.c | 26 +- drivers/isdn/capi/capidrv.c | 15 +- drivers/isdn/capi/kcapi.c | 35 +- drivers/isdn/divert/divert_init.c | 19 +- drivers/isdn/divert/divert_procfs.c | 20 +- drivers/isdn/divert/isdn_divert.c | 101 +- drivers/isdn/divert/isdn_divert.h | 2 - drivers/isdn/hardware/avm/Kconfig | 12 +- drivers/isdn/hardware/avm/b1pcmcia.c | 1 + drivers/isdn/hardware/avm/c4.c | 9 +- drivers/isdn/hardware/eicon/capifunc.c | 42 +- drivers/isdn/hardware/eicon/di.c | 22 +- drivers/isdn/hardware/eicon/diva_pci.h | 4 +- drivers/isdn/hardware/eicon/divasmain.c | 22 +- drivers/isdn/hardware/eicon/io.c | 68 +- drivers/isdn/hardware/eicon/io.h | 24 +- drivers/isdn/hardware/eicon/maintidi.c | 10 +- drivers/isdn/hardware/eicon/message.c | 788 +-- drivers/isdn/hardware/eicon/os_4bri.c | 34 +- drivers/isdn/hardware/eicon/os_bri.c | 23 +- drivers/isdn/hardware/eicon/os_pri.c | 61 +- drivers/isdn/hardware/eicon/platform.h | 34 +- drivers/isdn/hardware/eicon/s_4bri.c | 66 +- drivers/isdn/hardware/eicon/s_bri.c | 22 +- drivers/isdn/hardware/eicon/s_pri.c | 34 +- drivers/isdn/hardware/eicon/xdi_adapter.h | 2 +- drivers/isdn/hisax/amd7930_fn.c | 4 +- drivers/isdn/hisax/avm_pci.c | 4 +- drivers/isdn/hisax/config.c | 3 +- drivers/isdn/hisax/elsa.c | 3 +- drivers/isdn/hisax/hfc_pci.c | 3 +- drivers/isdn/hisax/hfc_sx.c | 6 +- drivers/isdn/hisax/hfcscard.c | 3 +- drivers/isdn/hisax/hisax.h | 6 +- drivers/isdn/hisax/hisax_fcpcipnp.c | 14 +- drivers/isdn/hisax/isurf.c | 5 +- drivers/isdn/hisax/teles0.c | 31 +- drivers/isdn/hisax/telespci.c | 22 +- drivers/isdn/hysdn/boardergo.c | 7 +- drivers/isdn/hysdn/hycapi.c | 3 + drivers/isdn/hysdn/hysdn_sched.c | 7 +- drivers/isdn/i4l/Kconfig | 2 +- drivers/isdn/i4l/isdn_bsdcomp.c | 4 +- drivers/isdn/i4l/isdn_tty.c | 49 +- drivers/isdn/i4l/isdn_x25iface.c | 16 +- drivers/isdn/icn/icn.c | 15 +- drivers/isdn/icn/icn.h | 3 +- drivers/isdn/isdnloop/isdnloop.c | 3 - drivers/isdn/pcbit/drv.c | 2 +- drivers/isdn/sc/card.h | 7 +- drivers/isdn/sc/hardware.h | 3 + drivers/isdn/sc/init.c | 10 +- drivers/isdn/tpam/tpam.h | 25 +- drivers/isdn/tpam/tpam_commands.c | 78 +- drivers/isdn/tpam/tpam_main.c | 22 +- drivers/isdn/tpam/tpam_memory.c | 38 +- drivers/isdn/tpam/tpam_nco.c | 34 +- drivers/isdn/tpam/tpam_queues.c | 49 +- drivers/macintosh/ans-lcd.c | 8 +- drivers/macintosh/macio-adb.c | 7 +- drivers/macintosh/macserial.c | 61 +- drivers/macintosh/mediabay.c | 25 +- drivers/macintosh/therm_adt746x.c | 282 +- drivers/macintosh/therm_pm72.c | 577 +-- drivers/macintosh/therm_pm72.h | 50 +- drivers/macintosh/therm_windtunnel.c | 8 +- drivers/macintosh/via-cuda.c | 4 +- drivers/macintosh/via-pmu.c | 28 +- drivers/md/.cvsignore | 9 - drivers/md/Kconfig | 9 - drivers/md/Makefile | 1 - drivers/md/dm-crypt.c | 322 +- drivers/md/dm-ioctl.c | 95 +- drivers/md/dm-table.c | 11 +- drivers/md/dm.c | 82 +- drivers/md/dm.h | 5 - drivers/md/faulty.c | 343 -- drivers/md/linear.c | 33 +- drivers/md/md.c | 197 +- drivers/md/multipath.c | 93 +- drivers/md/raid0.c | 13 +- drivers/md/raid1.c | 92 +- drivers/md/raid10.c | 79 +- drivers/md/raid5.c | 78 +- drivers/md/raid6main.c | 96 +- drivers/media/Kconfig | 15 +- drivers/media/common/ir-common.c | 12 +- drivers/media/common/saa7146_core.c | 193 +- drivers/media/common/saa7146_fops.c | 68 +- drivers/media/common/saa7146_hlp.c | 38 +- drivers/media/common/saa7146_i2c.c | 10 +- drivers/media/common/saa7146_vbi.c | 29 +- drivers/media/common/saa7146_video.c | 46 +- drivers/media/dvb/Kconfig | 20 +- drivers/media/dvb/Makefile | 3 +- drivers/media/dvb/b2c2/Kconfig | 18 +- drivers/media/dvb/b2c2/Makefile | 5 +- drivers/media/dvb/b2c2/b2c2-common.c | 214 - drivers/media/dvb/b2c2/b2c2-usb-core.c | 538 -- drivers/media/dvb/b2c2/skystar2.c | 417 +- drivers/media/dvb/bt8xx/Kconfig | 9 +- drivers/media/dvb/bt8xx/Makefile | 2 +- drivers/media/dvb/bt8xx/bt878.c | 55 +- drivers/media/dvb/bt8xx/bt878.h | 13 +- drivers/media/dvb/bt8xx/dst.c | 1089 ---- drivers/media/dvb/bt8xx/dst.h | 40 - drivers/media/dvb/bt8xx/dvb-bt8xx.c | 655 +-- drivers/media/dvb/bt8xx/dvb-bt8xx.h | 11 +- drivers/media/dvb/cinergyT2/Kconfig | 85 - drivers/media/dvb/cinergyT2/Makefile | 3 - drivers/media/dvb/cinergyT2/cinergyT2.c | 973 ---- drivers/media/dvb/dibusb/Kconfig | 57 - drivers/media/dvb/dibusb/Makefile | 3 - drivers/media/dvb/dibusb/dvb-dibusb.c | 1032 ---- drivers/media/dvb/dibusb/dvb-dibusb.h | 351 -- drivers/media/dvb/dvb-core/Makefile | 4 +- drivers/media/dvb/dvb-core/Makefile.lib | 1 + drivers/media/dvb/dvb-core/dmxdev.c | 21 +- drivers/media/dvb/dvb-core/dvb_ca_en50221.c | 535 +- drivers/media/dvb/dvb-core/dvb_ca_en50221.h | 8 +- drivers/media/dvb/dvb-core/dvb_demux.c | 23 +- drivers/media/dvb/dvb-core/dvb_filter.c | 14 +- drivers/media/dvb/dvb-core/dvb_frontend.c | 888 +++- drivers/media/dvb/dvb-core/dvb_frontend.h | 178 +- drivers/media/dvb/dvb-core/dvb_functions.c | 89 + drivers/media/dvb/dvb-core/dvb_functions.h | 50 + drivers/media/dvb/dvb-core/dvb_i2c.c | 290 ++ drivers/media/dvb/dvb-core/dvb_i2c.h | 63 + drivers/media/dvb/dvb-core/dvb_ksyms.c | 57 + drivers/media/dvb/dvb-core/dvb_net.c | 516 +- drivers/media/dvb/dvb-core/dvbdev.c | 111 +- drivers/media/dvb/dvb-core/dvbdev.h | 12 - drivers/media/dvb/frontends/Kconfig | 228 +- drivers/media/dvb/frontends/Makefile | 16 +- drivers/media/dvb/frontends/alps_tdlb7.c | 724 +++ drivers/media/dvb/frontends/alps_tdmb7.c | 458 ++ drivers/media/dvb/frontends/at76c651.c | 498 +- drivers/media/dvb/frontends/at76c651.h | 47 - drivers/media/dvb/frontends/cx22700.c | 445 -- drivers/media/dvb/frontends/cx22700.h | 41 - drivers/media/dvb/frontends/cx22702.c | 532 -- drivers/media/dvb/frontends/cx22702.h | 46 - drivers/media/dvb/frontends/cx24110.c | 625 +-- drivers/media/dvb/frontends/cx24110.h | 45 - drivers/media/dvb/frontends/dib3000-common.c | 145 - drivers/media/dvb/frontends/dib3000-common.h | 153 - drivers/media/dvb/frontends/dib3000.h | 55 - drivers/media/dvb/frontends/dib3000mb.c | 833 --- drivers/media/dvb/frontends/dib3000mb_priv.h | 467 -- drivers/media/dvb/frontends/dib3000mc.c | 860 ---- drivers/media/dvb/frontends/dib3000mc_priv.h | 439 -- .../dst_priv.h => frontends/dst-bt878.h} | 7 +- drivers/media/dvb/frontends/dst.c | 1187 +++++ drivers/media/dvb/frontends/dvb_dummy_fe.c | 322 +- drivers/media/dvb/frontends/dvb_dummy_fe.h | 32 - .../media/dvb/frontends/grundig_29504-401.c | 664 +++ .../media/dvb/frontends/grundig_29504-491.c | 465 ++ drivers/media/dvb/frontends/l64781.c | 607 --- drivers/media/dvb/frontends/l64781.h | 43 - drivers/media/dvb/frontends/mt312.c | 699 +-- drivers/media/dvb/frontends/mt312.h | 159 +- drivers/media/dvb/frontends/mt312_priv.h | 162 - drivers/media/dvb/frontends/mt352.c | 558 -- drivers/media/dvb/frontends/mt352.h | 58 - drivers/media/dvb/frontends/mt352_priv.h | 127 - drivers/media/dvb/frontends/nxt6000.c | 628 ++- drivers/media/dvb/frontends/nxt6000.h | 285 +- drivers/media/dvb/frontends/nxt6000_priv.h | 265 - drivers/media/dvb/frontends/sp8870.c | 613 --- drivers/media/dvb/frontends/sp8870.h | 45 - drivers/media/dvb/frontends/sp887x.c | 616 ++- drivers/media/dvb/frontends/sp887x.h | 29 - drivers/media/dvb/frontends/sp887x_firm.h | 1375 +++++ drivers/media/dvb/frontends/stv0297.c | 783 --- drivers/media/dvb/frontends/stv0297.h | 41 - drivers/media/dvb/frontends/stv0299.c | 1365 +++-- drivers/media/dvb/frontends/stv0299.h | 104 - drivers/media/dvb/frontends/tda10021.c | 483 -- drivers/media/dvb/frontends/tda10021.h | 43 - drivers/media/dvb/frontends/tda1004x.c | 1746 ++++--- drivers/media/dvb/frontends/tda1004x.h | 56 - drivers/media/dvb/frontends/tda8083.c | 490 -- drivers/media/dvb/frontends/tda8083.h | 45 - drivers/media/dvb/frontends/tda80xx.c | 749 --- drivers/media/dvb/frontends/tda80xx.h | 51 - drivers/media/dvb/frontends/ves1820.c | 672 ++- drivers/media/dvb/frontends/ves1820.h | 52 - drivers/media/dvb/frontends/ves1x93.c | 592 ++- drivers/media/dvb/frontends/ves1x93.h | 50 - drivers/media/dvb/ttpci/Kconfig | 26 +- drivers/media/dvb/ttpci/Makefile | 2 +- drivers/media/dvb/ttpci/av7110.c | 1081 +--- drivers/media/dvb/ttpci/av7110.h | 49 +- drivers/media/dvb/ttpci/av7110_av.c | 73 +- drivers/media/dvb/ttpci/av7110_ca.c | 34 +- drivers/media/dvb/ttpci/av7110_hw.c | 459 +- drivers/media/dvb/ttpci/av7110_hw.h | 31 +- drivers/media/dvb/ttpci/av7110_ir.c | 17 +- drivers/media/dvb/ttpci/av7110_v4l.c | 210 +- drivers/media/dvb/ttpci/budget-av.c | 764 +-- drivers/media/dvb/ttpci/budget-ci.c | 641 +-- drivers/media/dvb/ttpci/budget-core.c | 173 +- drivers/media/dvb/ttpci/budget-patch.c | 262 +- drivers/media/dvb/ttpci/budget.c | 411 +- drivers/media/dvb/ttpci/budget.h | 36 +- drivers/media/dvb/ttpci/ttpci-eeprom.c | 23 +- drivers/media/dvb/ttpci/ttpci-eeprom.h | 5 +- drivers/media/dvb/ttusb-budget/Kconfig | 4 - drivers/media/dvb/ttusb-budget/Makefile | 2 +- .../media/dvb/ttusb-budget/dvb-ttusb-budget.c | 469 +- .../dvb/ttusb-budget/dvb-ttusb-dspbootcode.h | 2 +- drivers/media/dvb/ttusb-dec/Kconfig | 8 +- drivers/media/dvb/ttusb-dec/Makefile | 2 +- drivers/media/dvb/ttusb-dec/ttusb_dec.c | 362 +- drivers/media/dvb/ttusb-dec/ttusbdecfe.c | 255 - drivers/media/video/Kconfig | 52 +- drivers/media/video/Makefile | 5 - drivers/media/video/arv.c | 916 ---- drivers/media/video/bt848.h | 10 +- drivers/media/video/btcx-risc.c | 8 +- drivers/media/video/btcx-risc.h | 4 +- drivers/media/video/bttv-cards.c | 513 +- drivers/media/video/bttv-driver.c | 346 +- drivers/media/video/bttv-gpio.c | 14 +- drivers/media/video/bttv-i2c.c | 84 +- drivers/media/video/bttv-if.c | 14 +- drivers/media/video/bttv-risc.c | 58 +- drivers/media/video/bttv-vbi.c | 47 +- drivers/media/video/bttv.h | 22 +- drivers/media/video/bttvp.h | 21 +- drivers/media/video/bw-qcam.c | 17 +- drivers/media/video/c-qcam.c | 6 +- drivers/media/video/cpia.c | 35 +- drivers/media/video/cx88/Makefile | 12 +- drivers/media/video/cx88/cx88-blackbird.c | 904 ---- drivers/media/video/cx88/cx88-cards.c | 389 +- drivers/media/video/cx88/cx88-core.c | 743 +-- drivers/media/video/cx88/cx88-dvb.c | 338 -- drivers/media/video/cx88/cx88-i2c.c | 169 +- drivers/media/video/cx88/cx88-mpeg.c | 468 -- drivers/media/video/cx88/cx88-reg.h | 80 +- drivers/media/video/cx88/cx88-tvaudio.c | 196 +- drivers/media/video/cx88/cx88-vbi.c | 64 +- drivers/media/video/cx88/cx88-video.c | 990 ++-- drivers/media/video/cx88/cx88.h | 297 +- drivers/media/video/dpc7146.c | 10 +- drivers/media/video/hexium_gemini.c | 9 +- drivers/media/video/hexium_orion.c | 9 +- drivers/media/video/ir-kbd-gpio.c | 107 +- drivers/media/video/ir-kbd-i2c.c | 47 +- drivers/media/video/meye.c | 1629 ++---- drivers/media/video/meye.h | 57 +- drivers/media/video/msp3400.c | 1051 ++-- drivers/media/video/msp3400.h | 22 - drivers/media/video/mxb.c | 19 +- .../media/video/ovcamchip/ovcamchip_core.c | 7 +- drivers/media/video/planb.c | 9 +- drivers/media/video/pms.c | 16 +- drivers/media/video/saa5249.c | 3 +- drivers/media/video/saa7111.c | 4 +- drivers/media/video/saa7134/Makefile | 6 +- drivers/media/video/saa7134/saa6752hs.c | 100 +- drivers/media/video/saa7134/saa7134-cards.c | 271 +- drivers/media/video/saa7134/saa7134-core.c | 264 +- drivers/media/video/saa7134/saa7134-dvb.c | 91 - drivers/media/video/saa7134/saa7134-empress.c | 394 -- drivers/media/video/saa7134/saa7134-i2c.c | 43 +- drivers/media/video/saa7134/saa7134-input.c | 69 +- drivers/media/video/saa7134/saa7134-oss.c | 26 +- drivers/media/video/saa7134/saa7134-reg.h | 2 - drivers/media/video/saa7134/saa7134-ts.c | 362 +- drivers/media/video/saa7134/saa7134-tvaudio.c | 78 +- drivers/media/video/saa7134/saa7134-vbi.c | 37 +- drivers/media/video/saa7134/saa7134-video.c | 158 +- drivers/media/video/saa7134/saa7134.h | 96 +- drivers/media/video/saa7146.h | 6 +- drivers/media/video/tda7432.c | 84 +- drivers/media/video/tda9840.c | 305 +- drivers/media/video/tda9875.c | 36 +- drivers/media/video/tda9887.c | 54 +- drivers/media/video/tea6415c.c | 227 +- drivers/media/video/tea6420.c | 171 +- drivers/media/video/tuner.c | 227 +- drivers/media/video/tvaudio.c | 104 +- drivers/media/video/tvmixer.c | 12 +- drivers/media/video/v4l1-compat.c | 38 +- drivers/media/video/v4l2-common.c | 16 +- drivers/media/video/video-buf-dvb.c | 248 - drivers/media/video/video-buf.c | 178 +- drivers/media/video/videocodec.c | 5 + drivers/media/video/zoran.h | 6 +- drivers/media/video/zoran_driver.c | 42 +- drivers/media/video/zr36120.c | 17 +- drivers/message/fusion/Kconfig | 2 +- drivers/message/fusion/mptbase.c | 239 +- drivers/message/fusion/mptbase.h | 192 +- drivers/message/fusion/mptctl.c | 8 +- drivers/message/fusion/mptscsih.c | 751 ++- drivers/message/fusion/mptscsih.h | 11 +- drivers/message/i2o/debug.c | 292 +- drivers/message/i2o/device.c | 54 +- drivers/message/i2o/driver.c | 37 +- drivers/message/i2o/exec-osm.c | 71 +- drivers/message/i2o/i2o_block.c | 218 +- drivers/message/i2o/i2o_config.c | 145 +- drivers/message/i2o/i2o_proc.c | 47 +- drivers/message/i2o/i2o_scsi.c | 113 +- drivers/message/i2o/iop.c | 111 +- drivers/message/i2o/pci.c | 21 +- drivers/misc/ibmasm/ibmasm.h | 2 +- drivers/misc/ibmasm/ibmasmfs.c | 17 +- drivers/misc/ibmasm/lowlevel.c | 2 +- drivers/misc/ibmasm/lowlevel.h | 30 +- drivers/misc/ibmasm/module.c | 12 +- drivers/misc/ibmasm/uart.c | 2 +- drivers/mmc/Kconfig | 11 - drivers/mmc/Makefile | 1 - drivers/mmc/mmc.c | 7 +- drivers/mmc/mmc_block.c | 3 - drivers/mmc/mmc_queue.c | 24 +- drivers/mmc/mmc_queue.h | 1 - drivers/mmc/mmci.c | 14 +- drivers/mmc/mmci.h | 10 +- drivers/mmc/pxamci.c | 112 +- drivers/mmc/pxamci.h | 30 - drivers/mmc/wbsd.c | 1596 ------ drivers/mmc/wbsd.h | 177 - drivers/mtd/chips/cfi_cmdset_0001.c | 484 +- drivers/mtd/chips/cfi_cmdset_0002.c | 506 +- drivers/mtd/chips/cfi_cmdset_0020.c | 4 +- drivers/mtd/chips/cfi_probe.c | 46 +- drivers/mtd/chips/cfi_util.c | 102 +- drivers/mtd/chips/chipreg.c | 4 +- drivers/mtd/chips/fwh_lock.h | 107 - drivers/mtd/chips/gen_probe.c | 12 +- drivers/mtd/chips/jedec_probe.c | 184 +- drivers/mtd/chips/map_absent.c | 4 +- drivers/mtd/chips/map_ram.c | 4 +- drivers/mtd/chips/map_rom.c | 8 +- drivers/mtd/cmdlinepart.c | 4 +- drivers/mtd/devices/Kconfig | 6 +- drivers/mtd/devices/blkmtd.c | 12 +- drivers/mtd/devices/doc2000.c | 44 +- drivers/mtd/devices/doc2001.c | 28 +- drivers/mtd/devices/doc2001plus.c | 40 +- drivers/mtd/devices/docprobe.c | 6 +- drivers/mtd/devices/mtdram.c | 8 +- drivers/mtd/devices/phram.c | 14 +- drivers/mtd/devices/pmc551.c | 4 +- drivers/mtd/devices/slram.c | 32 +- drivers/mtd/ftl.c | 16 +- drivers/mtd/inftlcore.c | 10 +- drivers/mtd/inftlmount.c | 8 +- drivers/mtd/maps/Kconfig | 64 +- drivers/mtd/maps/Makefile | 6 +- drivers/mtd/maps/amd76xrom.c | 384 +- drivers/mtd/maps/arctic-mtd.c | 4 +- drivers/mtd/maps/autcpu12-nvram.c | 6 +- drivers/mtd/maps/bast-flash.c | 227 - drivers/mtd/maps/beech-mtd.c | 4 +- drivers/mtd/maps/cdb89712.c | 8 +- drivers/mtd/maps/ceiva.c | 6 +- drivers/mtd/maps/cfi_flagadm.c | 4 +- drivers/mtd/maps/cstm_mips_ixx.c | 4 +- drivers/mtd/maps/db1550-flash.c | 13 +- drivers/mtd/maps/db1x00-flash.c | 21 +- drivers/mtd/maps/dbox2-flash.c | 4 +- drivers/mtd/maps/dc21285.c | 54 +- drivers/mtd/maps/dilnetpc.c | 12 +- drivers/mtd/maps/dmv182.c | 5 +- drivers/mtd/maps/ebony.c | 27 +- drivers/mtd/maps/edb7312.c | 13 +- drivers/mtd/maps/elan-104nc.c | 10 +- drivers/mtd/maps/epxa10db-flash.c | 4 +- drivers/mtd/maps/fortunet.c | 6 +- drivers/mtd/maps/h720x-flash.c | 4 +- drivers/mtd/maps/ichxrom.c | 496 +- drivers/mtd/maps/impa7.c | 9 +- drivers/mtd/maps/integrator-flash-v24.c | 258 + drivers/mtd/maps/integrator-flash.c | 8 +- drivers/mtd/maps/ipaq-flash.c | 464 -- drivers/mtd/maps/iq80310.c | 4 +- drivers/mtd/maps/ixp2000.c | 53 +- drivers/mtd/maps/ixp4xx.c | 13 +- drivers/mtd/maps/l440gx.c | 14 +- drivers/mtd/maps/lasat.c | 4 +- drivers/mtd/maps/lubbock-flash.c | 4 +- drivers/mtd/maps/mbx860.c | 4 +- drivers/mtd/maps/mpc1211.c | 4 +- drivers/mtd/maps/netsc520.c | 10 +- drivers/mtd/maps/nettel.c | 9 +- drivers/mtd/maps/ocelot.c | 6 +- drivers/mtd/maps/ocotea.c | 154 - drivers/mtd/maps/omap-toto-flash.c | 4 +- drivers/mtd/maps/pb1550-flash.c | 5 +- drivers/mtd/maps/pb1xxx-flash.c | 5 +- drivers/mtd/maps/pci.c | 6 +- drivers/mtd/maps/physmap.c | 10 +- drivers/mtd/maps/pnc2000.c | 8 +- drivers/mtd/maps/redwood.c | 5 +- drivers/mtd/maps/rpxlite.c | 4 +- drivers/mtd/maps/sa1100-flash.c | 1508 ++++-- drivers/mtd/maps/sbc_gxx.c | 12 +- drivers/mtd/maps/sc520cdp.c | 16 +- drivers/mtd/maps/scb2_flash.c | 8 +- drivers/mtd/maps/scx200_docflash.c | 10 +- drivers/mtd/maps/solutionengine.c | 6 +- drivers/mtd/maps/sun_uflash.c | 5 +- drivers/mtd/maps/tqm8xxl.c | 2 +- drivers/mtd/maps/ts5500_flash.c | 141 - drivers/mtd/maps/uclinux.c | 6 +- drivers/mtd/maps/wr_sbc82xx_flash.c | 4 +- drivers/mtd/mtd_blkdevs.c | 12 +- drivers/mtd/mtdblock.c | 6 +- drivers/mtd/mtdblock.h | 35 + drivers/mtd/mtdblock_ro.c | 4 +- drivers/mtd/mtdchar.c | 12 +- drivers/mtd/mtdcore.c | 4 +- drivers/mtd/mtdpart.c | 4 +- drivers/mtd/nand/Kconfig | 49 +- drivers/mtd/nand/Makefile | 5 +- drivers/mtd/nand/au1550nd.c | 423 +- drivers/mtd/nand/autcpu12.c | 16 +- drivers/mtd/nand/diskonchip.c | 260 +- drivers/mtd/nand/edb7312.c | 37 +- drivers/mtd/nand/h1910.c | 208 - drivers/mtd/nand/nand_base.c | 147 +- drivers/mtd/nand/nand_bbt.c | 5 +- drivers/mtd/nand/ppchameleonevb.c | 60 +- drivers/mtd/nand/rtc_from4.c | 559 -- drivers/mtd/nand/s3c2410.c | 704 --- drivers/mtd/nand/spia.c | 31 +- drivers/mtd/nand/toto.c | 24 +- drivers/mtd/nand/tx4925ndfmc.c | 30 +- drivers/mtd/nand/tx4938ndfmc.c | 22 +- drivers/mtd/nftlcore.c | 10 +- drivers/mtd/nftlmount.c | 7 +- drivers/net/3c501.c | 2 +- drivers/net/3c505.c | 2 +- drivers/net/3c507.c | 2 +- drivers/net/3c509.c | 153 +- drivers/net/3c515.c | 2 +- drivers/net/3c523.c | 2 +- drivers/net/3c527.c | 2 +- drivers/net/3c59x.c | 18 +- drivers/net/7990.c | 164 +- drivers/net/7990.h | 12 +- drivers/net/8139cp.c | 14 +- drivers/net/8139too.c | 15 +- drivers/net/82596.c | 4 +- drivers/net/8390.c | 4 +- drivers/net/Kconfig | 131 +- drivers/net/Makefile | 2 - drivers/net/Space.c | 3 + drivers/net/a2065.c | 2 +- drivers/net/acenic.c | 189 +- drivers/net/acenic.h | 23 +- drivers/net/acenic_firmware.h | 2 +- drivers/net/amd8111e.c | 502 +- drivers/net/amd8111e.h | 6 +- drivers/net/appletalk/cops.c | 2 +- drivers/net/appletalk/ltpc.c | 2 +- drivers/net/ariadne.c | 2 +- drivers/net/arm/am79c961a.c | 15 +- drivers/net/arm/ether1.c | 2 +- drivers/net/arm/ether3.c | 2 +- drivers/net/arm/etherh.c | 167 +- drivers/net/at1700.c | 2 +- drivers/net/atari_bionet.c | 2 +- drivers/net/atari_pamsnet.c | 2 +- drivers/net/atarilance.c | 4 +- drivers/net/atp.c | 2 +- drivers/net/au1000_eth.c | 2 +- drivers/net/b44.c | 5 +- drivers/net/b44.h | 1 + drivers/net/bagetlance.c | 2 +- drivers/net/bonding/bond_main.c | 17 +- drivers/net/bonding/bonding.h | 4 +- drivers/net/bsd_comp.c | 4 +- drivers/net/cris/Makefile | 1 - drivers/net/cs89x0.c | 2 +- drivers/net/declance.c | 9 + drivers/net/defxx.c | 146 +- drivers/net/defxx.h | 2 +- drivers/net/depca.c | 12 +- drivers/net/dgrs.c | 6 +- drivers/net/dl2k.c | 267 +- drivers/net/dl2k.h | 2 +- drivers/net/dummy.c | 4 +- drivers/net/e100.c | 52 +- drivers/net/e1000/e1000.h | 5 +- drivers/net/e1000/e1000_ethtool.c | 12 +- drivers/net/e1000/e1000_hw.c | 128 +- drivers/net/e1000/e1000_hw.h | 2 +- drivers/net/e1000/e1000_main.c | 49 +- drivers/net/e1000/e1000_osdep.h | 6 - drivers/net/e1000/e1000_param.c | 167 +- drivers/net/eepro.c | 2 +- drivers/net/eepro100.c | 146 +- drivers/net/eexpress.c | 2 +- drivers/net/epic100.c | 2 +- drivers/net/eql.c | 26 +- drivers/net/eth16i.c | 2 +- drivers/net/ethertap.c | 2 +- drivers/net/ewrk3.c | 326 +- drivers/net/fealnx.c | 2 +- drivers/net/fec.c | 501 +- drivers/net/fec.h | 6 +- drivers/net/fec_8xx/fec_8xx-netta.c | 2 +- drivers/net/fec_8xx/fec_main.c | 2 +- drivers/net/fec_8xx/fec_mii.c | 2 +- drivers/net/fmv18x.c | 2 +- drivers/net/forcedeth.c | 160 +- drivers/net/gt96100eth.c | 2 +- drivers/net/hamachi.c | 164 +- drivers/net/hamradio/6pack.c | 32 +- drivers/net/hamradio/baycom_par.c | 2 +- drivers/net/hamradio/dmascc.c | 1 + drivers/net/hamradio/hdlcdrv.c | 2 +- drivers/net/hamradio/mkiss.c | 8 +- drivers/net/hamradio/scc.c | 2 +- drivers/net/hamradio/yam.c | 2 +- drivers/net/hp100.c | 6 +- drivers/net/hplance.c | 185 +- drivers/net/hplance.h | 15 +- drivers/net/hydra.c | 2 +- drivers/net/ibm_emac/ibm_emac_core.c | 23 +- drivers/net/ibm_emac/ibm_emac_mal.h | 1 - drivers/net/ibmlana.c | 11 +- drivers/net/ibmveth.c | 21 +- drivers/net/irda/au1k_ir.c | 2 +- drivers/net/irda/irda-usb.c | 20 +- drivers/net/irda/irport.c | 2 +- drivers/net/irda/irtty-sir.c | 2 +- drivers/net/irda/nsc-ircc.c | 5 +- drivers/net/irda/sa1100_ir.c | 129 +- drivers/net/irda/stir4200.c | 48 +- drivers/net/irda/via-ircc.c | 536 +- drivers/net/irda/via-ircc.h | 19 +- drivers/net/irda/vlsi_ir.c | 4 +- drivers/net/irda/vlsi_ir.h | 1 + drivers/net/isa-skeleton.c | 2 +- drivers/net/iseries_veth.c | 87 +- drivers/net/ixgb/ixgb.h | 3 +- drivers/net/ixgb/ixgb_ethtool.c | 500 +- drivers/net/ixgb/ixgb_hw.h | 2 +- drivers/net/ixgb/ixgb_main.c | 39 +- drivers/net/jazzsonic.c | 2 +- drivers/net/lance.c | 2 +- drivers/net/lasi_82596.c | 4 +- drivers/net/lp486e.c | 2 +- drivers/net/mac8390.c | 6 +- drivers/net/mac89x0.c | 4 +- drivers/net/macsonic.c | 2 +- drivers/net/meth.c | 26 + drivers/net/mv643xx_eth.c | 2 +- drivers/net/mvme147.c | 22 +- drivers/net/myri_sbus.c | 2 +- drivers/net/natsemi.c | 273 +- drivers/net/ne2.c | 2 +- drivers/net/ne2k-pci.c | 31 - drivers/net/net_init.c | 341 ++ drivers/net/netconsole.c | 120 +- drivers/net/netdump.c | 94 +- drivers/net/netdump.h | 9 - drivers/net/ni5010.c | 2 +- drivers/net/ni52.c | 2 +- drivers/net/ni65.c | 2 +- drivers/net/ns83820.c | 190 +- drivers/net/pci-skeleton.c | 7 +- drivers/net/pcmcia/3c574_cs.c | 2 +- drivers/net/pcmcia/3c589_cs.c | 2 +- drivers/net/pcmcia/axnet_cs.c | 2 +- drivers/net/pcmcia/nmclan_cs.c | 2 +- drivers/net/pcmcia/smc91c92_cs.c | 179 +- drivers/net/pcmcia/xirc2ps_cs.c | 2 +- drivers/net/pcnet32.c | 66 +- drivers/net/plip.c | 2 +- drivers/net/ppp_async.c | 8 +- drivers/net/ppp_deflate.c | 4 +- drivers/net/ppp_generic.c | 26 +- drivers/net/ppp_synctty.c | 4 +- drivers/net/r8169.c | 2 +- drivers/net/rrunner.c | 32 +- drivers/net/rrunner.h | 6 +- drivers/net/s2io.c | 20 +- drivers/net/s2io.h | 1 + drivers/net/sb1000.c | 2 +- drivers/net/sb1250-mac.c | 2 +- drivers/net/seeq8005.c | 2 +- drivers/net/sgiseeq.c | 2 +- drivers/net/sis900.c | 284 +- drivers/net/sk98lin/h/skdrv1st.h | 4 +- drivers/net/sk98lin/h/skdrv2nd.h | 4 +- drivers/net/sk98lin/skge.c | 4 +- drivers/net/sk_g16.c | 2 +- drivers/net/sk_mca.c | 11 +- drivers/net/skfp/hwmtm.c | 3 +- drivers/net/skfp/skfddi.c | 2 +- drivers/net/slip.c | 47 +- drivers/net/smc9194.c | 2 +- drivers/net/smc91x.c | 513 +- drivers/net/smc91x.h | 112 +- drivers/net/starfire.c | 211 +- drivers/net/sun3_82586.c | 2 +- drivers/net/sun3lance.c | 2 +- drivers/net/sunbmac.c | 2 +- drivers/net/sundance.c | 191 +- drivers/net/sungem.c | 8 +- drivers/net/sunhme.c | 12 +- drivers/net/sunlance.c | 2 +- drivers/net/sunqe.c | 2 +- drivers/net/tc35815.c | 2 +- drivers/net/tg3.c | 133 +- drivers/net/tg3.h | 2 +- drivers/net/tokenring/3c359.c | 2 +- drivers/net/tokenring/abyss.c | 9 +- drivers/net/tokenring/ibmtr.c | 2 +- drivers/net/tokenring/lanstreamer.c | 4 +- drivers/net/tokenring/olympic.c | 3 +- drivers/net/tokenring/smctr.c | 2 +- drivers/net/tokenring/tms380tr.c | 2 +- drivers/net/tokenring/tmspci.c | 9 +- drivers/net/tulip/21142.c | 62 +- drivers/net/tulip/de2104x.c | 12 +- drivers/net/tulip/de4x5.c | 12 +- drivers/net/tulip/dmfe.c | 4 +- drivers/net/tulip/eeprom.c | 24 +- drivers/net/tulip/interrupt.c | 74 +- drivers/net/tulip/media.c | 153 +- drivers/net/tulip/pnic.c | 52 +- drivers/net/tulip/pnic2.c | 46 +- drivers/net/tulip/timer.c | 17 +- drivers/net/tulip/tulip.h | 45 +- drivers/net/tulip/tulip_core.c | 310 +- drivers/net/tulip/winbond-840.c | 257 +- drivers/net/tulip/xircom_cb.c | 18 +- drivers/net/tulip/xircom_tulip_cb.c | 208 +- drivers/net/typhoon.c | 269 +- drivers/net/via-rhine.c | 10 +- drivers/net/via-velocity.c | 68 +- drivers/net/via-velocity.h | 18 +- drivers/net/wan/c101.c | 2 +- drivers/net/wan/cosa.c | 4 +- drivers/net/wan/cycx_drv.c | 37 +- drivers/net/wan/cycx_main.c | 5 +- drivers/net/wan/cycx_x25.c | 12 +- drivers/net/wan/dlci.c | 2 +- drivers/net/wan/dscc4.c | 69 +- drivers/net/wan/farsync.c | 50 +- drivers/net/wan/hd6457x.c | 22 +- drivers/net/wan/hdlc_x25.c | 14 +- drivers/net/wan/hostess_sv11.c | 2 +- drivers/net/wan/lapbether.c | 20 +- drivers/net/wan/lmc/lmc_main.c | 11 +- drivers/net/wan/lmc/lmc_media.c | 2 +- drivers/net/wan/lmc/lmc_proto.c | 2 +- drivers/net/wan/n2.c | 2 +- drivers/net/wan/pc300.h | 12 +- drivers/net/wan/pc300_drv.c | 53 +- drivers/net/wan/pc300_tty.c | 58 +- drivers/net/wan/pci200syn.c | 10 +- drivers/net/wan/sbni.c | 6 +- drivers/net/wan/sdla.c | 4 +- drivers/net/wan/sdla_chdlc.c | 63 +- drivers/net/wan/wanxl.c | 8 +- drivers/net/wan/x25_asy.c | 24 +- drivers/net/wireless/airo.c | 96 +- drivers/net/wireless/arlan.h | 2 +- drivers/net/wireless/atmel.c | 4 +- drivers/net/wireless/atmel_cs.c | 5 +- drivers/net/wireless/netwave_cs.c | 14 +- drivers/net/wireless/prism54/isl_38xx.c | 15 +- drivers/net/wireless/prism54/isl_38xx.h | 4 - drivers/net/wireless/prism54/isl_ioctl.c | 639 +-- drivers/net/wireless/prism54/isl_ioctl.h | 2 - drivers/net/wireless/prism54/isl_oid.h | 9 - drivers/net/wireless/prism54/islpci_dev.c | 49 +- drivers/net/wireless/prism54/islpci_dev.h | 5 +- drivers/net/wireless/prism54/islpci_eth.c | 5 +- drivers/net/wireless/prism54/islpci_hotplug.c | 7 +- drivers/net/wireless/prism54/islpci_mgt.c | 5 +- drivers/net/wireless/prism54/islpci_mgt.h | 2 + drivers/net/wireless/prism54/oid_mgt.c | 126 +- drivers/net/wireless/prism54/oid_mgt.h | 5 +- drivers/net/wireless/strip.c | 6 +- drivers/net/wireless/wavelan.c | 19 +- drivers/net/wireless/wavelan.p.h | 5 +- drivers/net/wireless/wavelan_cs.c | 181 +- drivers/net/wireless/wavelan_cs.p.h | 5 +- drivers/net/wireless/wl3501_cs.c | 53 +- drivers/net/yellowfin.c | 257 +- drivers/net/znet.c | 4 +- drivers/oprofile/oprofilefs.c | 14 +- drivers/oprofile/timer_int.c | 13 +- drivers/parisc/lba_pci.c | 362 +- drivers/parisc/power.c | 8 +- drivers/parisc/sba_iommu.c | 155 +- drivers/parisc/superio.c | 79 +- drivers/parport/Kconfig | 2 +- drivers/parport/parport_pc.c | 272 +- drivers/parport/parport_sunbpp.c | 30 +- drivers/parport/probe.c | 13 +- drivers/pci/Makefile | 3 +- drivers/pci/bus.c | 31 +- drivers/pci/hotplug/Makefile | 1 + drivers/pci/hotplug/acpiphp_glue.c | 4 +- drivers/pci/hotplug/acpiphp_ibm.c | 101 +- drivers/pci/hotplug/cpcihp_generic.c | 14 +- drivers/pci/hotplug/cpcihp_zt5550.c | 15 +- drivers/pci/hotplug/cpqphp.h | 9 +- drivers/pci/hotplug/cpqphp_core.c | 38 +- drivers/pci/hotplug/cpqphp_ctrl.c | 4 +- drivers/pci/hotplug/cpqphp_nvram.c | 14 +- drivers/pci/hotplug/cpqphp_nvram.h | 12 +- drivers/pci/hotplug/cpqphp_pci.c | 14 +- drivers/pci/hotplug/fakephp.c | 128 +- drivers/pci/hotplug/ibmphp_core.c | 10 +- drivers/pci/hotplug/ibmphp_ebda.c | 4 +- drivers/pci/hotplug/ibmphp_hpc.c | 28 +- drivers/pci/hotplug/pci_hotplug_core.c | 2 +- drivers/pci/hotplug/pciehp.h | 14 +- drivers/pci/hotplug/pciehp_core.c | 4 +- drivers/pci/hotplug/pciehp_ctrl.c | 34 +- drivers/pci/hotplug/pciehp_hpc.c | 3 - drivers/pci/hotplug/pciehp_sysfs.c | 143 + drivers/pci/hotplug/pciehprm_acpi.c | 62 +- drivers/pci/hotplug/rpadlpar_core.c | 2 +- drivers/pci/hotplug/rpaphp.h | 2 +- drivers/pci/hotplug/rpaphp_pci.c | 11 +- drivers/pci/hotplug/shpchp.h | 9 +- drivers/pci/hotplug/shpchp_core.c | 4 +- drivers/pci/hotplug/shpchp_ctrl.c | 2 +- drivers/pci/hotplug/shpchp_hpc.c | 6 +- drivers/pci/msi.c | 20 +- drivers/pci/msi.h | 2 +- drivers/pci/pci-driver.c | 68 +- drivers/pci/pci-sysfs.c | 130 +- drivers/pci/pci.c | 52 +- drivers/pci/pci.h | 25 +- drivers/pci/pci.ids | 12 +- drivers/pci/probe.c | 67 +- drivers/pci/proc.c | 5 +- drivers/pci/quirks.c | 336 +- drivers/pci/remove.c | 2 - drivers/pci/rom.c | 225 - drivers/pci/search.c | 77 +- drivers/pci/setup-bus.c | 12 +- drivers/pci/setup-irq.c | 2 +- drivers/pci/setup-res.c | 2 +- drivers/pci/syscall.c | 7 +- drivers/pcmcia/Kconfig | 111 +- drivers/pcmcia/Makefile | 28 +- drivers/pcmcia/bulkmem.c | 534 +- drivers/pcmcia/cistpl.c | 86 +- drivers/pcmcia/cs.c | 168 +- drivers/pcmcia/cs_internal.h | 38 +- drivers/pcmcia/ds.c | 70 +- drivers/pcmcia/i82365.c | 4 +- drivers/pcmcia/m32r_cfc.c | 879 ---- drivers/pcmcia/m32r_cfc.h | 83 - drivers/pcmcia/m32r_pcc.c | 816 --- drivers/pcmcia/m32r_pcc.h | 65 - drivers/pcmcia/o2micro.h | 19 +- drivers/pcmcia/pcmcia_compat.c | 145 - drivers/pcmcia/pxa2xx_base.c | 6 - drivers/pcmcia/pxa2xx_lubbock.c | 2 - drivers/pcmcia/rsrc_mgr.c | 8 +- drivers/pcmcia/sa1100_adsbitsy.c | 103 + drivers/pcmcia/sa1100_flexanet.c | 168 + drivers/pcmcia/sa1100_freebird.c | 135 + drivers/pcmcia/sa1100_generic.c | 21 + drivers/pcmcia/sa1100_graphicsclient.c | 154 + drivers/pcmcia/sa1100_graphicsmaster.c | 106 + drivers/pcmcia/sa1100_pangolin.c | 147 + drivers/pcmcia/sa1100_pfs168.c | 141 + drivers/pcmcia/sa1100_simpad.c | 4 +- drivers/pcmcia/sa1100_stork.c | 198 + drivers/pcmcia/sa1100_system3.c | 115 + drivers/pcmcia/sa1100_trizeps.c | 165 + drivers/pcmcia/sa1100_xp860.c | 154 + drivers/pcmcia/sa1100_yopy.c | 125 + drivers/pcmcia/sa1111_generic.c | 15 + drivers/pcmcia/tcic.c | 4 +- drivers/pcmcia/yenta_socket.c | 27 +- drivers/pcmcia/yenta_socket.h | 2 +- drivers/pnp/Kconfig | 4 +- drivers/pnp/Makefile | 1 - drivers/pnp/interface.c | 6 +- drivers/pnp/isapnp/Kconfig | 2 +- drivers/pnp/isapnp/core.c | 4 +- drivers/pnp/manager.c | 10 +- drivers/pnp/pnpacpi/Kconfig | 18 - drivers/pnp/pnpacpi/Makefile | 5 - drivers/pnp/pnpacpi/core.c | 258 - drivers/pnp/pnpacpi/pnpacpi.h | 13 - drivers/pnp/pnpacpi/rsparser.c | 820 --- drivers/pnp/pnpbios/Kconfig | 3 +- drivers/pnp/pnpbios/core.c | 10 +- drivers/pnp/pnpbios/rsparser.c | 7 +- drivers/pnp/quirks.c | 7 +- drivers/pnp/resource.c | 9 +- drivers/s390/Kconfig | 33 - drivers/s390/block/dasd.c | 12 +- drivers/s390/block/dasd_3990_erp.c | 19 +- drivers/s390/block/dasd_devmap.c | 4 +- drivers/s390/block/dasd_eckd.c | 6 +- drivers/s390/block/dasd_fba.c | 4 +- drivers/s390/block/dcssblk.c | 168 +- drivers/s390/block/xpram.c | 3 +- drivers/s390/char/Makefile | 4 - drivers/s390/char/con3215.c | 25 +- drivers/s390/char/con3270.c | 9 +- drivers/s390/char/monreader.c | 662 --- drivers/s390/char/raw3270.c | 38 +- drivers/s390/char/sclp_tty.c | 30 +- drivers/s390/char/sclp_vt220.c | 28 +- drivers/s390/char/tape_block.c | 4 +- drivers/s390/char/tty3270.c | 35 +- drivers/s390/char/vmlogrdr.c | 920 ---- drivers/s390/char/vmwatchdog.c | 292 -- drivers/s390/cio/css.c | 8 +- drivers/s390/cio/css.h | 4 - drivers/s390/cio/device.c | 103 +- drivers/s390/cio/device_fsm.c | 37 +- drivers/s390/cio/qdio.c | 22 +- drivers/s390/crypto/Makefile | 2 +- drivers/s390/crypto/z90common.h | 75 +- drivers/s390/crypto/z90crypt.h | 81 +- drivers/s390/crypto/z90hardware.c | 289 +- drivers/s390/crypto/z90main.c | 668 +-- drivers/s390/net/ctcdbug.h | 6 +- drivers/s390/net/ctcmain.c | 24 +- drivers/s390/net/ctctty.c | 12 +- drivers/s390/net/iucv.c | 8 +- drivers/s390/net/iucv.h | 7 +- drivers/s390/net/lcs.c | 6 +- drivers/s390/net/lcs.h | 3 +- drivers/s390/net/netiucv.c | 2 +- drivers/s390/net/qeth.h | 68 +- drivers/s390/net/qeth_main.c | 671 +-- drivers/s390/net/qeth_mpc.h | 39 +- drivers/s390/net/qeth_sys.c | 137 +- drivers/s390/scsi/zfcp_aux.c | 93 +- drivers/s390/scsi/zfcp_ccw.c | 5 +- drivers/s390/scsi/zfcp_def.h | 129 +- drivers/s390/scsi/zfcp_erp.c | 536 +- drivers/s390/scsi/zfcp_ext.h | 11 +- drivers/s390/scsi/zfcp_fsf.c | 398 +- drivers/s390/scsi/zfcp_fsf.h | 17 +- drivers/s390/scsi/zfcp_qdio.c | 3 +- drivers/s390/scsi/zfcp_scsi.c | 31 +- drivers/s390/scsi/zfcp_sysfs_adapter.c | 3 +- drivers/s390/scsi/zfcp_sysfs_driver.c | 5 +- drivers/s390/scsi/zfcp_sysfs_port.c | 7 +- drivers/s390/scsi/zfcp_sysfs_unit.c | 13 +- drivers/sbus/char/aurora.c | 67 +- drivers/sbus/char/bbc_i2c.c | 4 +- drivers/sbus/char/bpp.c | 16 +- drivers/sbus/char/cpwatchdog.c | 8 +- drivers/sbus/char/display7seg.c | 4 +- drivers/sbus/char/flash.c | 4 +- drivers/sbus/char/jsflash.c | 2 +- drivers/sbus/char/riowatchdog.c | 6 +- drivers/scsi/3w-9xxx.h | 10 +- drivers/scsi/3w-xxxx.c | 4428 ++++++++++------ drivers/scsi/3w-xxxx.h | 151 +- drivers/scsi/53c700.c | 31 +- drivers/scsi/53c700.h | 3 +- drivers/scsi/BusLogic.c | 177 +- drivers/scsi/BusLogic.h | 44 +- drivers/scsi/Kconfig | 62 +- drivers/scsi/Makefile | 4 +- drivers/scsi/NCR5380.c | 65 +- drivers/scsi/NCR53c406a.c | 2 +- drivers/scsi/NCR_D700.c | 22 +- drivers/scsi/NCR_Q720.c | 20 +- drivers/scsi/aacraid/aachba.c | 492 +- drivers/scsi/aacraid/aacraid.h | 194 +- drivers/scsi/aacraid/linit.c | 196 +- drivers/scsi/aacraid/rkt.c | 131 +- drivers/scsi/aacraid/rx.c | 98 +- drivers/scsi/aacraid/sa.c | 66 +- drivers/scsi/advansys.c | 3 +- drivers/scsi/aha152x.c | 9 +- drivers/scsi/aha1542.c | 6 +- drivers/scsi/ahci.c | 28 +- drivers/scsi/aic7xxx/aic7770_osm.c | 4 +- drivers/scsi/aic7xxx/aic79xx.h | 8 +- drivers/scsi/aic7xxx/aic79xx.reg | 2 +- drivers/scsi/aic7xxx/aic79xx_core.c | 14 +- drivers/scsi/aic7xxx/aic79xx_inline.h | 10 +- drivers/scsi/aic7xxx/aic79xx_osm.c | 95 +- drivers/scsi/aic7xxx/aic79xx_osm.h | 84 +- drivers/scsi/aic7xxx/aic79xx_osm_pci.c | 157 +- drivers/scsi/aic7xxx/aic79xx_pci.c | 26 +- drivers/scsi/aic7xxx/aic79xx_pci.h | 70 - drivers/scsi/aic7xxx/aic7xxx.h | 12 +- drivers/scsi/aic7xxx/aic7xxx_core.c | 8 +- drivers/scsi/aic7xxx/aic7xxx_osm.c | 105 +- drivers/scsi/aic7xxx/aic7xxx_osm.h | 83 +- drivers/scsi/aic7xxx/aic7xxx_osm_pci.c | 118 +- drivers/scsi/aic7xxx/aic7xxx_pci.c | 83 +- drivers/scsi/aic7xxx/aic7xxx_pci.h | 124 - drivers/scsi/aic7xxx/aiclib.h | 39 - drivers/scsi/aic7xxx/cam.h | 6 + drivers/scsi/aic7xxx_old.c | 20 +- drivers/scsi/arm/acornscsi.c | 2 +- drivers/scsi/arm/arxescsi.c | 19 +- drivers/scsi/arm/cumana_2.c | 19 +- drivers/scsi/arm/eesox.c | 19 +- drivers/scsi/arm/fas216.c | 2 +- drivers/scsi/arm/powertec.c | 19 +- drivers/scsi/ata_piix.c | 30 +- drivers/scsi/atari_scsi.c | 2 +- drivers/scsi/atp870u.c | 2557 +++------ drivers/scsi/atp870u.h | 92 +- drivers/scsi/cpqfcTSinit.c | 2 +- drivers/scsi/dc395x.c | 63 +- drivers/scsi/dec_esp.c | 2 +- drivers/scsi/dmx3191d.c | 216 +- drivers/scsi/dmx3191d.h | 48 + drivers/scsi/dpt_i2o.c | 52 +- drivers/scsi/dpti.h | 20 +- drivers/scsi/dtc.c | 49 +- drivers/scsi/dtc.h | 34 +- drivers/scsi/eata.c | 240 +- drivers/scsi/fdomain.c | 182 +- drivers/scsi/hosts.c | 7 +- drivers/scsi/{a100u2w.c => i60uscsi.c} | 661 +-- drivers/scsi/{initio.c => i91uscsi.c} | 620 +-- drivers/scsi/{initio.h => i91uscsi.h} | 150 +- drivers/scsi/ibmvscsi/rpa_vscsi.c | 2 +- drivers/scsi/ide-scsi.c | 173 +- drivers/scsi/imm.c | 4 - drivers/scsi/ini9100u.c | 727 +++ drivers/scsi/ini9100u.h | 251 + drivers/scsi/inia100.c | 580 +++ drivers/scsi/{a100u2w.h => inia100.h} | 145 +- drivers/scsi/ipr.c | 40 +- drivers/scsi/ipr.h | 22 +- drivers/scsi/jazz_esp.c | 2 +- drivers/scsi/lasi700.c | 17 +- drivers/scsi/libata-core.c | 131 +- drivers/scsi/libata-scsi.c | 11 +- drivers/scsi/libata.h | 3 +- drivers/scsi/lpfc/Makefile | 7 + drivers/scsi/lpfc/lpfc.h | 449 ++ drivers/scsi/lpfc/lpfc_compat.h | 120 + drivers/scsi/lpfc/lpfc_crtn.h | 265 + drivers/scsi/lpfc/lpfc_ct.c | 1288 +++++ drivers/scsi/lpfc/lpfc_disc.h | 270 + drivers/scsi/lpfc/lpfc_els.c | 3235 ++++++++++++ drivers/scsi/lpfc/lpfc_fcp.c | 3419 ++++++++++++ drivers/scsi/lpfc/lpfc_fcp.h | 108 + drivers/scsi/lpfc/lpfc_hbadisc.c | 2703 ++++++++++ drivers/scsi/lpfc/lpfc_hw.h | 2688 ++++++++++ drivers/scsi/lpfc/lpfc_init.c | 1345 +++++ drivers/scsi/lpfc/lpfc_logmsg.h | 46 + drivers/scsi/lpfc/lpfc_mbox.c | 672 +++ drivers/scsi/lpfc/lpfc_mem.c | 192 + drivers/scsi/lpfc/lpfc_mem.h | 56 + drivers/scsi/lpfc/lpfc_nportdisc.c | 2145 ++++++++ drivers/scsi/lpfc/lpfc_scsi.h | 92 + drivers/scsi/lpfc/lpfc_scsiport.c | 1300 +++++ drivers/scsi/lpfc/lpfc_sli.c | 3349 ++++++++++++ drivers/scsi/lpfc/lpfc_sli.h | 218 + drivers/scsi/lpfc/lpfc_version.h | 37 + drivers/scsi/mac53c94.c | 24 +- drivers/scsi/mac_esp.c | 2 +- drivers/scsi/mca_53c9x.c | 2 +- drivers/scsi/megaraid.c | 32 +- drivers/scsi/megaraid/megaraid_ioctl.h | 8 +- drivers/scsi/megaraid/megaraid_mbox.c | 26 +- drivers/scsi/megaraid/megaraid_mbox.h | 6 +- drivers/scsi/megaraid/megaraid_mm.c | 102 +- drivers/scsi/megaraid/megaraid_mm.h | 5 +- drivers/scsi/mesh.c | 122 +- drivers/scsi/ncr53c8xx.c | 1356 ++++- drivers/scsi/ncr53c8xx.h | 10 +- drivers/scsi/nsp32.c | 129 +- drivers/scsi/nsp32.h | 9 +- drivers/scsi/osst.c | 80 +- drivers/scsi/osst.h | 4 +- drivers/scsi/pas16.c | 4 +- drivers/scsi/pcmcia/aha152x_stub.c | 2 +- drivers/scsi/pcmcia/nsp_cs.c | 4 +- drivers/scsi/pcmcia/qlogic_stub.c | 2 +- drivers/scsi/pcmcia/sym53c500_cs.c | 9 +- drivers/scsi/psi240i.c | 37 + drivers/scsi/ql1040_fw.h | 2099 -------- drivers/scsi/ql12160_fw.h | 22 +- drivers/scsi/ql1280_fw.h | 22 +- drivers/scsi/qla1280.c | 98 +- drivers/scsi/qla1280.h | 4 +- drivers/scsi/qla2xxx/qla_rscn.c | 26 + drivers/scsi/qlogicfc.c | 8 +- drivers/scsi/qlogicfc_asm.c | 10 +- drivers/scsi/qlogicisp.c | 17 +- drivers/scsi/sata_nv.c | 22 +- drivers/scsi/sata_promise.c | 12 +- drivers/scsi/sata_sil.c | 6 +- drivers/scsi/sata_sis.c | 8 +- drivers/scsi/sata_svw.c | 6 +- drivers/scsi/sata_sx4.c | 12 +- drivers/scsi/sata_uli.c | 57 +- drivers/scsi/sata_via.c | 2 +- drivers/scsi/sata_vsc.c | 4 +- drivers/scsi/scsi.c | 1 + drivers/scsi/scsi_debug.c | 125 +- drivers/scsi/scsi_devinfo.c | 54 +- drivers/scsi/scsi_error.c | 76 - drivers/scsi/scsi_lib.c | 73 +- drivers/scsi/scsi_module.c | 1 + drivers/scsi/scsi_priv.h | 2 +- drivers/scsi/scsi_scan.c | 200 +- drivers/scsi/scsi_sysfs.c | 7 +- drivers/scsi/scsi_transport_fc.c | 50 +- drivers/scsi/scsi_transport_spi.c | 9 +- drivers/scsi/scsiiom.c | 1654 ++++++ drivers/scsi/sd.c | 13 +- drivers/scsi/seagate.c | 86 +- drivers/scsi/sg.c | 20 +- drivers/scsi/sim710.c | 16 +- drivers/scsi/sr.c | 7 +- drivers/scsi/st.c | 455 +- drivers/scsi/st.h | 30 +- drivers/scsi/sun3_scsi.c | 10 +- drivers/scsi/sun3_scsi_vme.c | 10 +- drivers/scsi/sun3x_esp.c | 2 +- drivers/scsi/sym53c416.c | 8 +- drivers/scsi/sym53c8xx_2/sym53c8xx.h | 82 +- drivers/scsi/sym53c8xx_2/sym_conf.h | 35 +- drivers/scsi/sym53c8xx_2/sym_defs.h | 139 +- drivers/scsi/sym53c8xx_2/sym_fw.c | 37 +- drivers/scsi/sym53c8xx_2/sym_fw.h | 35 +- drivers/scsi/sym53c8xx_2/sym_fw1.h | 35 +- drivers/scsi/sym53c8xx_2/sym_fw2.h | 35 +- drivers/scsi/sym53c8xx_2/sym_glue.c | 616 ++- drivers/scsi/sym53c8xx_2/sym_glue.h | 42 +- drivers/scsi/sym53c8xx_2/sym_hipd.c | 154 +- drivers/scsi/sym53c8xx_2/sym_hipd.h | 41 +- drivers/scsi/sym53c8xx_2/sym_malloc.c | 35 +- drivers/scsi/sym53c8xx_2/sym_misc.c | 39 +- drivers/scsi/sym53c8xx_2/sym_misc.h | 35 +- drivers/scsi/sym53c8xx_2/sym_nvram.c | 35 +- drivers/scsi/sym53c8xx_2/sym_nvram.h | 35 +- drivers/scsi/sym53c8xx_comm.h | 358 +- drivers/scsi/sym53c8xx_defs.h | 39 +- drivers/scsi/t128.c | 71 +- drivers/scsi/t128.h | 14 +- drivers/scsi/tmscsim.c | 2724 +++------- drivers/scsi/tmscsim.h | 102 +- drivers/scsi/u14-34f.c | 70 +- drivers/scsi/ultrastor.c | 2 +- drivers/scsi/wd33c93.c | 2 +- drivers/scsi/wd7000.c | 13 +- drivers/scsi/zalon.c | 7 +- drivers/serial/21285.c | 33 +- drivers/serial/68328serial.c | 20 +- drivers/serial/68360serial.c | 22 +- drivers/serial/8250.c | 931 +--- drivers/serial/8250.h | 20 +- drivers/serial/8250_acorn.c | 60 +- drivers/serial/8250_acpi.c | 74 +- drivers/serial/8250_early.c | 255 - drivers/serial/8250_gsc.c | 47 +- drivers/serial/8250_hp300.c | 329 -- drivers/serial/8250_pci.c | 102 +- drivers/serial/8250_pnp.c | 35 +- drivers/serial/Kconfig | 54 +- drivers/serial/Makefile | 5 - drivers/serial/amba-pl010.c | 66 +- drivers/serial/amba-pl011.c | 51 +- drivers/serial/au1x00_uart.c | 15 + drivers/serial/clps711x.c | 28 +- drivers/serial/cpm_uart/cpm_uart.h | 9 +- drivers/serial/cpm_uart/cpm_uart_core.c | 15 - drivers/serial/cpm_uart/cpm_uart_cpm1.c | 23 +- drivers/serial/dz.c | 27 +- drivers/serial/icom.c | 10 +- drivers/serial/imx.c | 902 ---- drivers/serial/m32r_sio.c | 1373 ----- drivers/serial/m32r_sio.h | 56 - drivers/serial/m32r_sio_reg.h | 343 -- drivers/serial/mcfserial.c | 31 +- drivers/serial/pmac_zilog.c | 82 +- drivers/serial/pmac_zilog.h | 9 +- drivers/serial/pxa.c | 47 +- drivers/serial/s3c2410.c | 1464 ++---- drivers/serial/sa1100.c | 27 +- drivers/serial/serial_core.c | 138 +- drivers/serial/serial_cs.c | 29 +- drivers/serial/serial_lh7a40x.c | 59 +- drivers/serial/sh-sci.c | 72 +- drivers/serial/sh-sci.h | 76 +- drivers/serial/sunsab.c | 24 +- drivers/serial/sunsu.c | 19 +- drivers/serial/sunzilog.c | 74 +- drivers/serial/uart00.c | 27 +- drivers/tc/zs.c | 14 +- drivers/telephony/ixj_pcmcia.c | 2 +- drivers/usb/Kconfig | 2 +- drivers/usb/Makefile | 2 - drivers/usb/atm/speedtch.c | 3 - drivers/usb/atm/usb_atm.c | 30 +- drivers/usb/atm/usb_atm.h | 1 + drivers/usb/class/Kconfig | 3 +- drivers/usb/class/audio.c | 55 +- drivers/usb/class/bluetty.c | 32 +- drivers/usb/class/cdc-acm.c | 47 +- drivers/usb/class/cdc-acm.h | 1 - drivers/usb/class/usb-midi.c | 19 +- drivers/usb/class/usblp.c | 20 +- drivers/usb/core/devices.c | 18 +- drivers/usb/core/devio.c | 78 +- drivers/usb/core/hcd-pci.c | 157 +- drivers/usb/core/hcd.c | 132 +- drivers/usb/core/hcd.h | 15 +- drivers/usb/core/hub.c | 636 +-- drivers/usb/core/inode.c | 124 +- drivers/usb/core/message.c | 94 +- drivers/usb/core/sysfs.c | 64 +- drivers/usb/core/urb.c | 16 +- drivers/usb/core/usb.c | 272 +- drivers/usb/core/usb.h | 25 +- drivers/usb/gadget/Kconfig | 15 +- drivers/usb/gadget/Makefile | 2 +- drivers/usb/gadget/dummy_hcd.c | 449 +- drivers/usb/gadget/ether.c | 137 +- drivers/usb/gadget/file_storage.c | 83 +- drivers/usb/gadget/gadget_chips.h | 12 - drivers/usb/gadget/goku_udc.c | 165 +- drivers/usb/gadget/goku_udc.h | 8 +- drivers/usb/gadget/inode.c | 6 +- drivers/usb/gadget/lh7a40x_udc.c | 7 +- drivers/usb/gadget/net2280.c | 21 +- drivers/usb/gadget/net2280.h | 8 +- drivers/usb/gadget/omap_udc.c | 469 +- drivers/usb/gadget/omap_udc.h | 17 +- drivers/usb/gadget/pxa2xx_udc.c | 17 +- drivers/usb/gadget/rndis.c | 57 +- drivers/usb/gadget/serial.c | 904 +--- drivers/usb/gadget/zero.c | 6 +- drivers/usb/host/Kconfig | 42 +- drivers/usb/host/Makefile | 4 +- drivers/usb/host/ehci-dbg.c | 17 +- drivers/usb/host/ehci-hcd.c | 267 +- drivers/usb/host/ehci-hub.c | 83 +- drivers/usb/host/ehci-mem.c | 5 + drivers/usb/host/ehci-q.c | 138 +- drivers/usb/host/ehci-sched.c | 25 +- drivers/usb/host/ehci.h | 13 +- drivers/usb/host/hc_crisv10.c | 4574 ----------------- drivers/usb/host/hc_crisv10.h | 289 -- drivers/usb/host/hc_simple.c | 1039 ++++ drivers/usb/host/hc_simple.h | 231 + drivers/usb/host/hc_sl811.c | 1361 +++++ drivers/usb/host/hc_sl811.h | 385 ++ drivers/usb/host/hc_sl811_rh.c | 583 +++ drivers/usb/host/ohci-dbg.c | 132 +- drivers/usb/host/ohci-hcd.c | 345 +- drivers/usb/host/ohci-hub.c | 228 +- drivers/usb/host/ohci-lh7a404.c | 40 +- drivers/usb/host/ohci-mem.c | 9 +- drivers/usb/host/ohci-omap.c | 64 +- drivers/usb/host/ohci-pci.c | 62 +- drivers/usb/host/ohci-pxa27x.c | 455 -- drivers/usb/host/ohci-q.c | 159 +- drivers/usb/host/ohci-sa1111.c | 35 +- drivers/usb/host/ohci.h | 280 +- drivers/usb/host/sl811-hcd.c | 1905 ------- drivers/usb/host/sl811.h | 270 - drivers/usb/host/uhci-debug.c | 11 + drivers/usb/host/uhci-hcd.c | 312 +- drivers/usb/host/uhci-hcd.h | 20 +- drivers/usb/host/uhci-hub.c | 142 +- drivers/usb/image/Kconfig | 7 +- drivers/usb/image/hpusbscsi.c | 12 +- drivers/usb/image/mdc800.c | 18 +- drivers/usb/image/microtek.c | 17 +- drivers/usb/image/microtek.h | 1 - drivers/usb/input/Kconfig | 14 +- drivers/usb/input/aiptek.c | 4 +- drivers/usb/input/ati_remote.c | 12 +- drivers/usb/input/hid-core.c | 61 +- drivers/usb/input/kbtab.c | 4 +- drivers/usb/input/mtouchusb.c | 4 +- drivers/usb/input/pid.c | 2 +- drivers/usb/input/powermate.c | 4 +- drivers/usb/input/touchkitusb.c | 23 +- drivers/usb/input/usbkbd.c | 4 +- drivers/usb/input/usbmouse.c | 4 +- drivers/usb/input/wacom.c | 4 +- drivers/usb/input/xpad.c | 4 +- drivers/usb/media/Kconfig | 6 +- drivers/usb/media/dabusb.c | 7 +- drivers/usb/media/konicawc.c | 9 +- drivers/usb/media/ov511.c | 24 +- drivers/usb/media/pwc/Makefile | 2 +- drivers/usb/media/pwc/pwc-if.c | 6 +- drivers/usb/media/se401.c | 24 +- drivers/usb/media/sn9c102.h | 29 +- drivers/usb/media/sn9c102_core.c | 489 +- drivers/usb/media/sn9c102_pas106b.c | 123 +- drivers/usb/media/sn9c102_pas202bcb.c | 110 +- drivers/usb/media/sn9c102_sensor.h | 84 +- drivers/usb/media/sn9c102_tas5110c1b.c | 47 +- drivers/usb/media/sn9c102_tas5130d1b.c | 66 +- drivers/usb/media/stv680.c | 28 +- drivers/usb/media/usbvideo.c | 102 +- drivers/usb/media/vicam.c | 14 +- drivers/usb/media/w9968cf.c | 69 +- drivers/usb/media/w9968cf.h | 2 +- drivers/usb/misc/Kconfig | 10 - drivers/usb/misc/Makefile | 3 +- drivers/usb/misc/auerswald.c | 14 +- drivers/usb/misc/legousbtower.c | 4 +- drivers/usb/misc/phidgetkit.c | 581 --- drivers/usb/misc/rio500.c | 14 +- drivers/usb/misc/speedtch.c | 0 drivers/usb/misc/tiglusb.c | 60 +- drivers/usb/misc/tiglusb.h | 8 +- drivers/usb/misc/uss720.c | 4 +- drivers/usb/net/Kconfig | 33 +- drivers/usb/net/catc.c | 132 +- drivers/usb/net/kaweth.c | 184 +- drivers/usb/net/pegasus.c | 401 +- drivers/usb/net/pegasus.h | 3 - drivers/usb/net/rtl8150.c | 194 +- drivers/usb/net/usbnet.c | 111 +- drivers/usb/serial/Kconfig | 25 - drivers/usb/serial/Makefile | 2 - drivers/usb/serial/belkin_sa.c | 9 +- drivers/usb/serial/bus.c | 1 - drivers/usb/serial/console.c | 4 +- drivers/usb/serial/cyberjack.c | 22 +- drivers/usb/serial/cypress_m8.c | 1222 ----- drivers/usb/serial/cypress_m8.h | 55 - drivers/usb/serial/digi_acceleport.c | 25 +- drivers/usb/serial/empeg.c | 20 +- drivers/usb/serial/ftdi_sio.c | 52 +- drivers/usb/serial/ftdi_sio.h | 15 - drivers/usb/serial/generic.c | 14 +- drivers/usb/serial/io_edgeport.c | 285 +- drivers/usb/serial/io_fw_boot.h | 6 +- drivers/usb/serial/io_fw_boot2.h | 6 +- drivers/usb/serial/io_fw_down.h | 6 +- drivers/usb/serial/io_fw_down2.h | 6 +- drivers/usb/serial/io_tables.h | 9 - drivers/usb/serial/io_ti.c | 825 +-- drivers/usb/serial/io_usbvend.h | 2 +- drivers/usb/serial/ipaq.c | 523 +- drivers/usb/serial/ipaq.h | 75 + drivers/usb/serial/ipw.c | 491 -- drivers/usb/serial/ir-usb.c | 13 +- drivers/usb/serial/keyspan.c | 11 +- drivers/usb/serial/keyspan.h | 1 + drivers/usb/serial/keyspan_pda.c | 19 +- drivers/usb/serial/kl5kusb105.c | 25 +- drivers/usb/serial/kobil_sct.c | 26 +- drivers/usb/serial/mct_u232.c | 20 +- drivers/usb/serial/omninet.c | 19 +- drivers/usb/serial/pl2303.c | 424 +- drivers/usb/serial/pl2303.h | 11 +- drivers/usb/serial/safe_serial.c | 9 +- drivers/usb/serial/usb-serial.c | 317 +- drivers/usb/serial/usb-serial.h | 21 +- drivers/usb/serial/visor.c | 22 +- drivers/usb/serial/whiteheat.c | 19 +- drivers/usb/storage/Kconfig | 15 +- drivers/usb/storage/freecom.c | 2 +- drivers/usb/storage/isd200.c | 10 +- drivers/usb/storage/protocol.c | 49 + drivers/usb/storage/scsiglue.c | 84 +- drivers/usb/storage/transport.c | 29 +- drivers/usb/storage/unusual_devs.h | 150 +- drivers/usb/storage/usb.c | 92 +- drivers/usb/storage/usb.h | 11 +- drivers/video/Kconfig | 92 +- drivers/video/Makefile | 9 +- drivers/video/acornfb.c | 22 +- drivers/video/amifb.c | 48 +- drivers/video/asiliantfb.c | 3 + drivers/video/aty/Makefile | 4 +- drivers/video/aty/ati_ids.h | 1 - drivers/video/aty/aty128fb.c | 44 +- drivers/video/aty/atyfb.h | 209 +- drivers/video/aty/atyfb_base.c | 3617 +++++-------- drivers/video/aty/mach64_accel.c | 212 +- drivers/video/aty/mach64_ct.c | 733 +-- drivers/video/aty/mach64_cursor.c | 297 +- drivers/video/aty/mach64_gx.c | 20 +- drivers/video/aty/radeon_base.c | 318 +- drivers/video/aty/radeon_monitor.c | 80 +- drivers/video/aty/radeon_pm.c | 10 +- drivers/video/aty/radeonfb.h | 2 + drivers/video/aty/xlinit.c | 68 +- drivers/video/bw2.c | 26 +- drivers/video/cg14.c | 60 +- drivers/video/cg3.c | 40 +- drivers/video/cg6.c | 56 +- drivers/video/chipsfb.c | 2 +- drivers/video/cirrusfb.c | 43 +- drivers/video/console/Kconfig | 1 - drivers/video/console/Makefile | 3 +- drivers/video/console/bitblit.c | 395 -- drivers/video/console/fbcon.c | 1332 ++--- drivers/video/console/fbcon.h | 33 +- drivers/video/console/font_6x11.c | 2264 ++++---- drivers/video/console/tileblit.c | 147 - drivers/video/console/vgacon.c | 4 +- drivers/video/controlfb.c | 20 +- drivers/video/cyber2000fb.c | 16 +- drivers/video/cyber2000fb.h | 4 +- drivers/video/epson1355fb.c | 13 +- drivers/video/fbmem.c | 204 +- drivers/video/fbsysfs.c | 2 - drivers/video/ffb.c | 11 +- drivers/video/fm2fb.c | 25 +- drivers/video/gbefb.c | 13 +- drivers/video/hgafb.c | 54 +- drivers/video/hpfb.c | 398 +- drivers/video/i810/i810.h | 7 +- drivers/video/i810/i810_accel.c | 14 +- drivers/video/i810/i810_gtf.c | 3 +- drivers/video/i810/i810_main.c | 293 +- drivers/video/igafb.c | 5 +- drivers/video/imsttfb.c | 23 +- drivers/video/intelfb/Makefile | 8 - drivers/video/intelfb/intelfb.h | 278 - drivers/video/intelfb/intelfbdrv.c | 1557 ------ drivers/video/intelfb/intelfbdrv.h | 69 - drivers/video/intelfb/intelfbhw.c | 1753 ------- drivers/video/intelfb/intelfbhw.h | 567 -- drivers/video/kyro/STG4000InitDevice.c | 4 +- drivers/video/kyro/STG4000Interface.h | 26 +- drivers/video/kyro/STG4000OverlayDevice.c | 10 +- drivers/video/kyro/STG4000Ramdac.c | 8 +- drivers/video/kyro/STG4000Reg.h | 4 +- drivers/video/kyro/STG4000VTG.c | 8 +- drivers/video/kyro/fbdev.c | 3 +- drivers/video/leo.c | 45 +- drivers/video/logo/.cvsignore | 13 - drivers/video/matrox/matroxfb_accel.c | 22 +- drivers/video/matrox/matroxfb_base.c | 49 +- drivers/video/matrox/matroxfb_base.h | 141 +- drivers/video/matrox/matroxfb_crtc2.c | 7 +- drivers/video/matrox/matroxfb_crtc2.h | 1 - drivers/video/modedb.c | 43 +- drivers/video/neofb.c | 103 +- drivers/video/offb.c | 78 +- drivers/video/p9100.c | 25 +- drivers/video/platinumfb.c | 28 +- drivers/video/pm2fb.c | 54 +- drivers/video/pvr2fb.c | 1 - drivers/video/pxafb.c | 51 +- drivers/video/radeonfb.c | 15 +- drivers/video/riva/fbdev.c | 410 +- drivers/video/riva/nv_driver.c | 161 +- drivers/video/riva/riva_hw.c | 569 +- drivers/video/riva/riva_hw.h | 83 +- drivers/video/riva/rivafb.h | 3 +- drivers/video/sa1100fb.c | 319 +- drivers/video/savage/Makefile | 8 - drivers/video/savage/savagefb-i2c.c | 277 - drivers/video/savage/savagefb.c | 2276 -------- drivers/video/savage/savagefb.h | 354 -- drivers/video/savage/savagefb_accel.c | 140 - drivers/video/sbuslib.c | 2 +- drivers/video/sgivwfb.c | 4 +- drivers/video/sis/sis_main.c | 5 +- drivers/video/skeletonfb.c | 44 +- drivers/video/softcursor.c | 73 +- drivers/video/sstfb.c | 36 +- drivers/video/stifb.c | 24 +- drivers/video/tcx.c | 42 +- drivers/video/tdfxfb.c | 19 +- drivers/video/tgafb.c | 45 +- drivers/video/tridentfb.c | 21 +- drivers/video/valkyriefb.c | 48 +- drivers/video/vesafb.c | 83 +- drivers/video/vfb.c | 2 +- drivers/video/vga16fb.c | 40 +- drivers/w1/Kconfig | 2 +- drivers/w1/Makefile | 4 - drivers/w1/dscore.c | 53 +- drivers/w1/dscore.h | 34 +- drivers/w1/matrox_w1.c | 13 +- drivers/w1/w1.c | 27 +- drivers/w1/w1.h | 2 - drivers/w1/w1_family.c | 10 +- drivers/w1/w1_int.c | 27 +- drivers/w1/w1_int.h | 2 +- drivers/w1/w1_netlink.c | 11 - drivers/w1/w1_therm.c | 71 +- drivers/zorro/zorro.c | 2 +- fs/Kconfig | 29 +- fs/Makefile | 14 +- fs/adfs/super.c | 2 +- fs/afs/main.c | 6 +- fs/aio.c | 5 +- fs/attr.c | 11 +- fs/autofs/inode.c | 2 +- fs/autofs4/inode.c | 2 +- fs/binfmt_aout.c | 10 +- fs/binfmt_elf.c | 46 +- fs/binfmt_flat.c | 2 +- fs/bio.c | 38 +- fs/buffer.c | 127 +- fs/char_dev.c | 10 +- fs/cifs/CHANGES | 54 +- fs/cifs/Makefile | 2 +- fs/cifs/README | 82 +- fs/cifs/TODO | 34 +- fs/cifs/cifs_debug.c | 17 +- fs/cifs/cifs_fs_sb.h | 6 +- fs/cifs/cifsfs.c | 123 +- fs/cifs/cifsfs.h | 8 +- fs/cifs/cifsglob.h | 33 +- fs/cifs/cifspdu.h | 415 +- fs/cifs/cifsproto.h | 15 +- fs/cifs/cifssmb.c | 1127 +--- fs/cifs/connect.c | 94 +- fs/cifs/dir.c | 3 + fs/cifs/fcntl.c | 54 +- fs/cifs/file.c | 347 +- fs/cifs/inode.c | 40 +- fs/cifs/misc.c | 80 +- fs/cifs/netmisc.c | 7 +- fs/cifs/readdir.c | 648 --- fs/cifs/smberr.h | 1 - fs/cifs/transport.c | 150 +- fs/cifs/xattr.c | 109 +- fs/coda/sysctl.c | 2 +- fs/coda/upcall.c | 26 +- fs/compat.c | 62 +- fs/compat_ioctl.c | 10 - fs/dcache.c | 61 +- fs/dcookies.c | 1 - fs/devfs/base.c | 2 +- fs/devfs/util.c | 2 +- fs/devpts/inode.c | 39 +- fs/direct-io.c | 51 +- fs/dquot.c | 16 +- fs/efs/namei.c | 33 - fs/efs/super.c | 5 - fs/eventpoll.c | 2 +- fs/exec.c | 250 +- fs/ext2/acl.c | 70 +- fs/ext2/balloc.c | 1 + fs/ext2/dir.c | 3 +- fs/ext2/ext2.h | 1 + fs/ext2/ialloc.c | 4 +- fs/ext2/inode.c | 15 +- fs/ext2/ioctl.c | 10 +- fs/ext2/namei.c | 5 +- fs/ext2/super.c | 66 +- fs/ext3/acl.c | 70 +- fs/ext3/balloc.c | 164 +- fs/ext3/ialloc.c | 5 +- fs/ext3/inode.c | 26 +- fs/ext3/ioctl.c | 83 +- fs/ext3/namei.c | 4 +- fs/ext3/super.c | 34 +- fs/fat/cache.c | 377 +- fs/fat/dir.c | 146 +- fs/fat/fatfs_syms.c | 9 +- fs/fat/inode.c | 165 +- fs/fat/misc.c | 5 +- fs/fcntl.c | 15 +- fs/file.c | 7 +- fs/file_table.c | 2 +- fs/filesystems.c | 1 - fs/fs-writeback.c | 22 +- fs/hfs/Makefile | 2 +- fs/hfs/attr.c | 121 - fs/hfs/btree.c | 8 +- fs/hfs/dir.c | 3 - fs/hfs/extent.c | 10 +- fs/hfs/hfs_fs.h | 8 - fs/hfs/inode.c | 41 +- fs/hfs/mdb.c | 8 +- fs/hfs/super.c | 3 +- fs/hfsplus/btree.c | 8 +- fs/hfsplus/extents.c | 10 +- fs/hfsplus/hfsplus_fs.h | 6 - fs/hfsplus/inode.c | 38 +- fs/hfsplus/ioctl.c | 106 - fs/hfsplus/super.c | 6 +- fs/hostfs/externfs.c | 1317 +++++ fs/hostfs/host_file.c | 442 ++ fs/hostfs/host_fs.c | 467 ++ fs/hostfs/hostfs_kern.c | 2 +- fs/hostfs/humfs.c | 1026 ++++ fs/hostfs/meta_fs.c | 520 ++ fs/hostfs/metadata.h | 79 + fs/inode.c | 71 +- fs/ioctl.c | 1 - fs/jbd/checkpoint.c | 1 + fs/jbd/commit.c | 29 +- fs/jbd/journal.c | 12 +- fs/jbd/transaction.c | 47 +- fs/jffs2/compr.c | 9 +- fs/jffs2/dir.c | 3 +- fs/jffs2/erase.c | 2 +- fs/jffs2/gc.c | 19 +- fs/jffs2/nodelist.c | 11 +- fs/jffs2/nodelist.h | 15 +- fs/jffs2/nodemgmt.c | 55 +- fs/jffs2/readinode.c | 4 +- fs/jffs2/scan.c | 8 +- fs/jffs2/super.c | 13 +- fs/jffs2/wbuf.c | 8 +- fs/jffs2/write.c | 6 +- fs/jfs/acl.c | 89 +- fs/jfs/jfs_dinode.h | 28 +- fs/jfs/jfs_dmap.c | 10 +- fs/jfs/jfs_dmap.h | 75 +- fs/jfs/jfs_dtree.c | 26 +- fs/jfs/jfs_dtree.h | 18 +- fs/jfs/jfs_imap.c | 66 +- fs/jfs/jfs_imap.h | 74 +- fs/jfs/jfs_incore.h | 2 +- fs/jfs/jfs_logmgr.c | 10 +- fs/jfs/jfs_logmgr.h | 96 +- fs/jfs/jfs_metapage.c | 10 +- fs/jfs/jfs_mount.c | 2 +- fs/jfs/jfs_superblock.h | 32 +- fs/jfs/jfs_txnmgr.c | 4 +- fs/jfs/jfs_types.h | 16 +- fs/jfs/jfs_unicode.c | 2 +- fs/jfs/jfs_unicode.h | 32 +- fs/jfs/jfs_xattr.h | 4 +- fs/jfs/jfs_xtree.c | 62 +- fs/jfs/jfs_xtree.h | 14 +- fs/jfs/super.c | 4 - fs/libfs.c | 7 +- fs/lockd/Makefile | 2 +- fs/lockd/clntproc.c | 11 +- fs/lockd/host.c | 4 +- fs/lockd/lockd_syms.c | 36 + fs/lockd/svc.c | 48 +- fs/lockd/svc4proc.c | 7 +- fs/lockd/svcsubs.c | 7 +- fs/locks.c | 224 +- fs/minix/bitmap.c | 25 +- fs/msdos/namei.c | 4 +- fs/namei.c | 102 +- fs/namespace.c | 50 +- fs/ncpfs/file.c | 3 +- fs/nfs/dir.c | 4 +- fs/nfs/direct.c | 6 +- fs/nfs/inode.c | 2 +- fs/nfsctl.c | 1 - fs/nfsd/export.c | 7 +- fs/nfsd/lockd.c | 7 +- fs/nfsd/nfs4proc.c | 51 +- fs/nfsd/nfs4state.c | 295 +- fs/nfsd/nfs4xdr.c | 26 +- fs/nfsd/nfsfh.c | 76 +- fs/nfsd/nfssvc.c | 1 + fs/nfsd/vfs.c | 36 +- fs/nls/nls_ascii.c | 12 +- fs/ntfs/ChangeLog | 192 +- fs/ntfs/Makefile | 6 +- fs/ntfs/aops.c | 1228 ++--- fs/ntfs/aops.h | 109 - fs/ntfs/attrib.c | 1326 +++-- fs/ntfs/attrib.h | 34 +- fs/ntfs/bitmap.c | 1 - fs/ntfs/collate.c | 3 +- fs/ntfs/compress.c | 10 +- fs/ntfs/debug.c | 19 +- fs/ntfs/debug.h | 6 +- fs/ntfs/dir.c | 62 +- fs/ntfs/dir.h | 2 - fs/ntfs/file.c | 7 +- fs/ntfs/index.c | 81 +- fs/ntfs/index.h | 6 +- fs/ntfs/inode.c | 466 +- fs/ntfs/inode.h | 24 +- fs/ntfs/layout.h | 87 +- fs/ntfs/lcnalloc.c | 11 +- fs/ntfs/lcnalloc.h | 29 - fs/ntfs/logfile.c | 65 +- fs/ntfs/malloc.h | 1 - fs/ntfs/mft.c | 2582 ++-------- fs/ntfs/mft.h | 15 +- fs/ntfs/namei.c | 27 +- fs/ntfs/ntfs.h | 81 +- fs/ntfs/quota.c | 8 +- fs/ntfs/runlist.c | 1438 ------ fs/ntfs/runlist.h | 89 - fs/ntfs/super.c | 69 +- fs/ntfs/types.h | 28 + fs/ntfs/unistr.c | 2 - fs/ntfs/upcase.c | 1 - fs/ntfs/volume.h | 4 - fs/open.c | 6 +- fs/openpromfs/inode.c | 4 +- fs/partitions/Kconfig | 33 +- fs/partitions/check.c | 21 +- fs/partitions/devfs.c | 2 +- fs/partitions/efi.c | 258 +- fs/partitions/msdos.c | 1 - fs/pipe.c | 4 +- fs/posix_acl.c | 4 - fs/proc/Makefile | 1 - fs/proc/array.c | 112 +- fs/proc/base.c | 38 +- fs/proc/generic.c | 8 +- fs/proc/kcore.c | 10 +- fs/proc/proc_misc.c | 15 +- fs/proc/proc_tty.c | 2 +- fs/proc/root.c | 2 +- fs/proc/task_mmu.c | 29 +- fs/proc/vmcore.c | 239 - fs/qnx4/bitmap.c | 3 +- fs/quota.c | 1 - fs/rcfs/dir.c | 45 +- fs/rcfs/inode.c | 44 +- fs/rcfs/magic.c | 133 +- fs/rcfs/rootdir.c | 54 +- fs/rcfs/socket_fs.c | 14 +- fs/rcfs/super.c | 98 +- fs/rcfs/tc_magic.c | 11 +- fs/read_write.c | 1 - fs/readdir.c | 1 - fs/reiserfs/bitmap.c | 30 +- fs/reiserfs/dir.c | 11 +- fs/reiserfs/do_balan.c | 2 +- fs/reiserfs/file.c | 150 +- fs/reiserfs/fix_node.c | 6 +- fs/reiserfs/ibalance.c | 8 +- fs/reiserfs/inode.c | 198 +- fs/reiserfs/item_ops.c | 10 +- fs/reiserfs/journal.c | 1141 ++-- fs/reiserfs/namei.c | 163 +- fs/reiserfs/objectid.c | 2 - fs/reiserfs/prints.c | 53 +- fs/reiserfs/procfs.c | 2 +- fs/reiserfs/resize.c | 26 +- fs/reiserfs/stree.c | 85 +- fs/reiserfs/super.c | 169 +- fs/reiserfs/tail_conversion.c | 3 - fs/reiserfs/xattr.c | 1 - fs/select.c | 2 +- fs/smbfs/inode.c | 23 +- fs/smbfs/proc.c | 31 +- fs/smbfs/proto.h | 2 +- fs/smbfs/request.c | 1 + fs/stat.c | 1 - fs/super.c | 20 +- fs/sysfs/dir.c | 5 +- fs/sysfs/mount.c | 4 +- fs/sysv/CHANGES | 2 +- fs/sysv/ChangeLog | 12 +- fs/udf/balloc.c | 2 +- fs/udf/file.c | 22 +- fs/udf/lowlevel.c | 6 + fs/ufs/balloc.c | 2 +- fs/ufs/cylinder.c | 2 +- fs/ufs/ialloc.c | 2 +- fs/ufs/inode.c | 4 +- fs/ufs/namei.c | 4 +- fs/ufs/super.c | 2 +- fs/ufs/util.c | 53 - fs/ufs/util.h | 2 - fs/xattr.c | 1 - fs/xfs/linux-2.6/kmem.c | 15 +- fs/xfs/linux-2.6/kmem.h | 2 +- fs/xfs/linux-2.6/xfs_buf.c | 124 +- fs/xfs/linux-2.6/xfs_buf.h | 39 +- fs/xfs/linux-2.6/xfs_file.c | 4 +- fs/xfs/linux-2.6/xfs_globals.c | 1 - fs/xfs/linux-2.6/xfs_ioctl.c | 11 +- fs/xfs/linux-2.6/xfs_linux.h | 1 - fs/xfs/linux-2.6/xfs_lrw.c | 19 +- fs/xfs/linux-2.6/xfs_super.c | 6 +- fs/xfs/linux-2.6/xfs_sysctl.c | 5 - fs/xfs/linux-2.6/xfs_sysctl.h | 2 - fs/xfs/quota/xfs_qm.c | 47 +- fs/xfs/quota/xfs_qm.h | 7 +- fs/xfs/quota/xfs_qm_bhv.c | 20 +- fs/xfs/quota/xfs_qm_syscalls.c | 12 +- fs/xfs/xfs_alloc.c | 18 +- fs/xfs/xfs_dinode.h | 9 +- fs/xfs/xfs_fs.h | 2 +- fs/xfs/xfs_iget.c | 47 +- fs/xfs/xfs_inode.c | 3 +- fs/xfs/xfs_inode.h | 6 +- fs/xfs/xfs_itable.c | 2 +- fs/xfs/xfs_log.c | 55 +- fs/xfs/xfs_log_priv.h | 5 +- fs/xfs/xfs_log_recover.c | 7 +- fs/xfs/xfs_mount.c | 16 +- fs/xfs/xfs_mount.h | 8 +- fs/xfs/xfs_rtalloc.c | 18 +- fs/xfs/xfs_trans.h | 2 +- fs/xfs/xfs_trans_inode.c | 9 +- fs/xfs/xfs_utils.c | 2 +- fs/xfs/xfs_vfsops.c | 2 +- include/acpi/acconfig.h | 2 +- include/acpi/acdebug.h | 5 + include/acpi/acdispat.h | 8 - include/acpi/acglobal.h | 6 +- include/acpi/achware.h | 5 +- include/acpi/acinterp.h | 46 +- include/acpi/aclocal.h | 2 +- include/acpi/acmacros.h | 10 +- include/acpi/acnamesp.h | 10 - include/acpi/acobject.h | 5 +- include/acpi/acparser.h | 4 - include/acpi/acpi_bus.h | 4 - include/acpi/acpiosxf.h | 15 +- include/acpi/acpixf.h | 29 - include/acpi/acresrc.h | 4 - include/acpi/actables.h | 2 - include/acpi/actbl.h | 2 - include/acpi/actbl2.h | 92 +- include/acpi/actypes.h | 17 +- include/acpi/acutils.h | 26 +- include/acpi/amlcode.h | 50 +- include/acpi/amlresrc.h | 4 +- include/acpi/platform/acenv.h | 10 - include/acpi/processor.h | 10 +- include/asm-alpha/core_cia.h | 12 +- include/asm-alpha/errno.h | 5 - include/asm-alpha/hardirq.h | 21 + include/asm-alpha/io.h | 28 +- include/asm-alpha/mmzone.h | 4 +- include/asm-alpha/pgtable.h | 8 +- include/asm-alpha/topology.h | 3 + include/asm-arm/arch-cl7500/serial.h | 47 + include/asm-arm/arch-clps711x/io.h | 6 +- include/asm-arm/arch-clps711x/time.h | 3 - include/asm-arm/arch-ebsa110/io.h | 14 +- include/asm-arm/arch-ebsa110/serial.h | 35 + include/asm-arm/arch-ebsa285/io.h | 20 +- include/asm-arm/arch-ebsa285/serial.h | 40 + include/asm-arm/arch-epxa10db/io.h | 2 +- include/asm-arm/arch-epxa10db/serial.h | 48 + include/asm-arm/arch-h720x/io.h | 4 +- include/asm-arm/arch-h720x/serial.h | 101 + include/asm-arm/arch-imx/io.h | 4 +- .../asm-arm/arch-imx/serial.h | 28 +- include/asm-arm/arch-integrator/io.h | 6 +- include/asm-arm/arch-integrator/platform.h | 4 + include/asm-arm/arch-integrator/serial.h | 47 + include/asm-arm/arch-integrator/time.h | 156 + include/asm-arm/arch-iop3xx/io.h | 6 +- include/asm-arm/arch-iop3xx/serial.h | 76 + include/asm-arm/arch-ixp2000/dma.h | 2 +- include/asm-arm/arch-ixp2000/io.h | 4 +- include/asm-arm/arch-ixp2000/irqs.h | 30 +- include/asm-arm/arch-ixp2000/ixdp2x00.h | 2 +- include/asm-arm/arch-ixp2000/ixdp2x01.h | 4 - include/asm-arm/arch-ixp2000/ixp2000-regs.h | 10 +- include/asm-arm/arch-ixp2000/platform.h | 7 +- include/asm-arm/arch-ixp2000/serial.h | 27 + include/asm-arm/arch-ixp2000/system.h | 2 +- include/asm-arm/arch-ixp4xx/io.h | 16 +- include/asm-arm/arch-ixp4xx/ixp4xx-regs.h | 2 +- include/asm-arm/arch-ixp4xx/platform.h | 4 +- include/asm-arm/arch-ixp4xx/serial.h | 27 + include/asm-arm/arch-l7200/io.h | 6 +- include/asm-arm/arch-l7200/time.h | 3 - include/asm-arm/arch-lh7a40x/io.h | 6 +- include/asm-arm/arch-lh7a40x/serial.h | 25 + include/asm-arm/arch-lh7a40x/timex.h | 1 + include/asm-arm/arch-omap/board-h2.h | 12 +- include/asm-arm/arch-omap/board-h3.h | 72 +- include/asm-arm/arch-omap/board-innovator.h | 12 +- include/asm-arm/arch-omap/board.h | 51 +- include/asm-arm/arch-omap/cpu.h | 183 - include/asm-arm/arch-omap/dma.h | 28 +- include/asm-arm/arch-omap/hardware.h | 114 +- include/asm-arm/arch-omap/io.h | 6 +- include/asm-arm/arch-omap/irqs.h | 22 +- include/asm-arm/arch-omap/mcbsp.h | 2 +- include/asm-arm/arch-omap/memory.h | 4 +- include/asm-arm/arch-omap/mux.h | 39 +- .../arch-omap/{omap16xx.h => omap1610.h} | 92 +- include/asm-arm/arch-omap/omap5912.h | 112 + include/asm-arm/arch-omap/pm.h | 259 +- include/asm-arm/arch-omap/serial.h | 52 + include/asm-arm/arch-omap/tc.h | 64 - include/asm-arm/arch-omap/timex.h | 4 +- include/asm-arm/arch-omap/uncompress.h | 27 +- include/asm-arm/arch-pxa/io.h | 6 +- include/asm-arm/arch-pxa/pxa-regs.h | 189 +- include/asm-arm/arch-pxa/serial.h | 50 + include/asm-arm/arch-pxa/ssp.h | 47 - include/asm-arm/arch-rpc/io.h | 2 +- include/asm-arm/arch-rpc/serial.h | 46 + include/asm-arm/arch-s3c2410/bast-pmu.h | 43 - include/asm-arm/arch-s3c2410/dma.h | 62 +- include/asm-arm/arch-s3c2410/hardware.h | 6 +- include/asm-arm/arch-s3c2410/idle.h | 28 - include/asm-arm/arch-s3c2410/iic.h | 36 - include/asm-arm/arch-s3c2410/regs-dsc.h | 32 +- include/asm-arm/arch-s3c2410/regs-gpio.h | 23 +- include/asm-arm/arch-s3c2410/regs-iic.h | 16 +- include/asm-arm/arch-s3c2410/regs-lcd.h | 14 +- include/asm-arm/arch-s3c2410/regs-rtc.h | 2 - include/asm-arm/arch-s3c2410/regs-sdi.h | 20 +- include/asm-arm/arch-s3c2410/regs-serial.h | 99 +- include/asm-arm/arch-s3c2410/regs-udc.h | 7 +- include/asm-arm/arch-s3c2410/regs-watchdog.h | 1 - include/asm-arm/arch-s3c2410/serial.h | 28 + include/asm-arm/arch-s3c2410/system.h | 32 +- include/asm-arm/arch-s3c2410/timex.h | 7 +- include/asm-arm/arch-s3c2410/uncompress.h | 31 +- include/asm-arm/arch-sa1100/adsbitsy.h | 14 + include/asm-arm/arch-sa1100/flexanet.h | 100 + include/asm-arm/arch-sa1100/freebird.h | 69 + include/asm-arm/arch-sa1100/graphicsclient.h | 100 + include/asm-arm/arch-sa1100/graphicsmaster.h | 64 + include/asm-arm/arch-sa1100/huw_webpanel.h | 49 + include/asm-arm/arch-sa1100/ide.h | 75 +- include/asm-arm/arch-sa1100/io.h | 6 +- include/asm-arm/arch-sa1100/irqs.h | 9 +- include/asm-arm/arch-sa1100/itsy.h | 5 + include/asm-arm/arch-sa1100/mftb2.h | 210 + include/asm-arm/arch-sa1100/omnimeter.h | 84 + include/asm-arm/arch-sa1100/pangolin.h | 62 + include/asm-arm/arch-sa1100/pfs168.h | 75 + include/asm-arm/arch-sa1100/pleb.h | 21 + include/asm-arm/arch-sa1100/serial.h | 47 + include/asm-arm/arch-sa1100/stork.h | 164 + include/asm-arm/arch-sa1100/system.h | 9 + include/asm-arm/arch-sa1100/system3.h | 113 + include/asm-arm/arch-sa1100/timex.h | 1 + include/asm-arm/arch-sa1100/trizeps.h | 22 + include/asm-arm/arch-sa1100/yopy.h | 127 + include/asm-arm/arch-shark/io.h | 2 +- include/asm-arm/arch-shark/serial.h | 31 + include/asm-arm/arch-versatile/hardware.h | 2 +- include/asm-arm/arch-versatile/io.h | 6 +- include/asm-arm/arch-versatile/platform.h | 28 +- .../asm-arm/arch-versatile/serial.h | 40 +- include/asm-arm/arch-versatile/timex.h | 2 +- include/asm-arm/bitops.h | 2 +- include/asm-arm/cacheflush.h | 65 +- include/asm-arm/delay.h | 30 +- include/asm-arm/ecard.h | 1 - include/asm-arm/hardirq.h | 25 + include/asm-arm/hardware/amba_clcd.h | 4 +- include/asm-arm/hardware/icst307.h | 38 - include/asm-arm/ide.h | 4 + include/asm-arm/io.h | 70 +- include/asm-arm/irq.h | 3 +- include/asm-arm/mach/arch.h | 6 +- include/asm-arm/mach/flash.h | 19 +- include/asm-arm/mach/irda.h | 20 - include/asm-arm/mach/irq.h | 17 + include/asm-arm/mach/map.h | 6 +- include/asm-arm/mach/mmc.h | 1 + include/asm-arm/mach/time.h | 37 +- include/asm-arm/mmu_context.h | 11 +- include/asm-arm/page.h | 8 +- include/asm-arm/pgtable.h | 2 +- include/asm-arm/posix_types.h | 8 +- include/asm-arm/procinfo.h | 6 +- include/asm-arm/rtc.h | 45 - include/asm-arm/serial.h | 6 +- include/asm-arm/setup.h | 2 + include/asm-arm/system.h | 58 +- include/asm-arm/thread_info.h | 6 +- include/asm-arm/tlbflush.h | 4 +- include/asm-arm/uaccess.h | 34 +- include/asm-arm26/hardirq.h | 15 + include/asm-arm26/io.h | 2 - include/asm-arm26/linux_logo.h | 19 + include/asm-arm26/pgtable.h | 2 +- include/asm-cris/hardirq.h | 21 + include/asm-cris/io.h | 2 - include/asm-generic/crashdump.h | 47 - include/asm-generic/diskdump.h | 13 - include/asm-generic/dma-mapping-broken.h | 2 +- include/asm-generic/errno.h | 5 - include/asm-generic/netdump.h | 31 +- include/asm-generic/pci.h | 7 - include/asm-generic/topology.h | 5 + include/asm-generic/vmlinux.lds.h | 8 +- include/asm-h8300/bitops.h | 8 +- include/asm-h8300/delay.h | 7 +- include/asm-h8300/hardirq.h | 21 + include/asm-h8300/io.h | 25 +- include/asm-h8300/linux_logo.h | 11 + include/asm-h8300/pgtable.h | 3 +- include/asm-h8300/sigcontext.h | 2 - include/asm-h8300/signal.h | 2 - include/asm-h8300/system.h | 3 +- include/asm-h8300/timex.h | 4 + include/asm-h8300/ucontext.h | 13 +- include/asm-h8300/unistd.h | 1 - include/asm-i386/acpi.h | 7 +- include/asm-i386/apic.h | 9 +- include/asm-i386/cpu.h | 1 - include/asm-i386/crash_dump.h | 82 - include/asm-i386/crashdump.h | 123 - include/asm-i386/diskdump.h | 55 - include/asm-i386/hardirq.h | 44 +- include/asm-i386/highmem.h | 1 - include/asm-i386/hpet.h | 1 - include/asm-i386/hw_irq.h | 16 +- include/asm-i386/ide.h | 14 +- include/asm-i386/io.h | 34 +- include/asm-i386/io_apic.h | 6 +- include/asm-i386/irq.h | 32 +- include/asm-i386/kmap_types.h | 4 +- include/asm-i386/kprobes.h | 7 - include/asm-i386/mach-default/do_timer.h | 3 - include/asm-i386/mach-default/irq_vectors.h | 2 +- include/asm-i386/mach-summit/mach_mpparse.h | 3 - include/asm-i386/mach-visws/do_timer.h | 3 - include/asm-i386/mach-voyager/do_timer.h | 3 - include/asm-i386/module.h | 2 - include/asm-i386/mpspec.h | 2 +- include/asm-i386/netdump.h | 95 +- include/asm-i386/node.h | 1 - include/asm-i386/page.h | 3 +- include/asm-i386/param.h | 18 +- include/asm-i386/pci-direct.h | 1 - include/asm-i386/pgtable.h | 3 +- include/asm-i386/processor.h | 2 - include/asm-i386/semaphore.h | 40 +- include/asm-i386/smp.h | 1 - include/asm-i386/suspend.h | 3 - include/asm-i386/system.h | 4 +- include/asm-i386/thread_info.h | 10 +- include/asm-i386/timer.h | 20 +- include/asm-i386/timex.h | 4 + include/asm-i386/topology.h | 21 +- include/asm-i386/unistd.h | 20 +- include/asm-ia64/crashdump.h | 72 - include/asm-ia64/delay.h | 2 +- include/asm-ia64/diskdump.h | 63 - include/asm-ia64/hardirq.h | 28 + include/asm-ia64/io.h | 34 +- include/asm-ia64/machvec.h | 23 +- include/asm-ia64/machvec_init.h | 1 - include/asm-ia64/machvec_sn2.h | 4 - include/asm-ia64/netdump.h | 80 +- include/asm-ia64/pci.h | 9 +- include/asm-ia64/pgtable.h | 12 +- include/asm-ia64/processor.h | 25 +- include/asm-ia64/ptrace.h | 8 +- include/asm-ia64/sn/intr.h | 10 +- include/asm-ia64/sn/pda.h | 2 +- include/asm-ia64/sn/shub_mmr.h | 205 - include/asm-ia64/topology.h | 42 +- include/asm-ia64/unistd.h | 6 +- include/asm-m32r/elf.h | 41 +- include/asm-m32r/hardirq.h | 22 + include/asm-m32r/ide.h | 2 +- include/asm-m32r/io.h | 13 +- include/asm-m32r/m32102.h | 112 +- include/asm-m32r/pgtable.h | 3 +- include/asm-m32r/processor.h | 30 +- include/asm-m32r/rtc.h | 2 +- include/asm-m32r/termbits.h | 1 - include/asm-m32r/topology.h | 5 + include/asm-m68k/atomic.h | 2 - include/asm-m68k/blinken.h | 15 +- include/asm-m68k/bootinfo.h | 7 - include/asm-m68k/hardirq.h | 21 + include/asm-m68k/hp300hw.h | 25 - include/asm-m68k/io.h | 19 - include/asm-m68k/mc146818rtc.h | 2 - include/asm-m68k/pgtable.h | 3 +- include/asm-m68k/setup.h | 2 +- include/asm-m68k/timex.h | 4 + include/asm-m68k/tlbflush.h | 2 - include/asm-m68k/unistd.h | 52 +- include/asm-m68knommu/checksum.h | 2 - include/asm-m68knommu/coldfire.h | 10 +- include/asm-m68knommu/delay.h | 55 +- include/asm-m68knommu/hardirq.h | 21 + include/asm-m68knommu/io.h | 2 - include/asm-m68knommu/m527xsim.h | 38 - .../asm-m68knommu/{m528xsim.h => m5282sim.h} | 11 +- include/asm-m68knommu/mcfdma.h | 2 +- include/asm-m68knommu/mcfpit.h | 2 +- include/asm-m68knommu/mcfsim.h | 9 +- include/asm-m68knommu/mcfuart.h | 2 +- include/asm-m68knommu/page_offset.h | 4 + include/asm-m68knommu/param.h | 33 +- include/asm-m68knommu/pgtable.h | 3 +- include/asm-m68knommu/shglcore.h | 65 + include/asm-m68knommu/shglports.h | 76 + include/asm-m68knommu/system.h | 13 - include/asm-m68knommu/thread_info.h | 12 +- include/asm-m68knommu/unistd.h | 73 +- include/asm-mips/addrspace.h | 61 +- include/asm-mips/asmmacro-32.h | 6 +- include/asm-mips/asmmacro-64.h | 18 - include/asm-mips/atomic.h | 631 ++- include/asm-mips/baget/baget.h | 69 + include/asm-mips/baget/vac.h | 208 + include/asm-mips/baget/vic.h | 192 + include/asm-mips/bitops.h | 568 +- include/asm-mips/bootinfo.h | 2 - include/asm-mips/checksum.h | 1 - include/asm-mips/compat.h | 6 +- include/asm-mips/compiler.h | 17 - include/asm-mips/cpu-features.h | 15 +- include/asm-mips/cpu-info.h | 81 - include/asm-mips/debug.h | 3 +- include/asm-mips/dec/serial.h | 36 - include/asm-mips/delay.h | 8 +- include/asm-mips/div64.h | 7 +- include/asm-mips/dma-mapping.h | 8 - include/asm-mips/errno.h | 4 - include/asm-mips/fixmap.h | 1 + include/asm-mips/gdb-stub.h | 1 - include/asm-mips/hardirq.h | 41 +- include/asm-mips/hazards.h | 2 +- include/asm-mips/hw_irq.h | 2 + include/asm-mips/ide.h | 12 + include/asm-mips/interrupt.h | 134 - include/asm-mips/io.h | 76 +- include/asm-mips/ip32/crime.h | 214 +- include/asm-mips/ip32/mace.h | 153 +- include/asm-mips/irq.h | 30 +- include/asm-mips/jazz.h | 2 - include/asm-mips/mach-atlas/mc146818rtc.h | 2 +- include/asm-mips/mach-au1x00/au1000.h | 322 +- include/asm-mips/mach-db1x00/db1x00.h | 34 +- include/asm-mips/mach-generic/floppy.h | 1 + include/asm-mips/mach-generic/ide.h | 21 +- include/asm-mips/mach-generic/mangle-port.h | 3 +- include/asm-mips/mach-generic/spaces.h | 4 +- include/asm-mips/mach-ip22/spaces.h | 55 - include/asm-mips/mach-ip27/mangle-port.h | 3 +- include/asm-mips/mach-ip27/mmzone.h | 27 - include/asm-mips/mach-ip27/spaces.h | 6 +- include/asm-mips/mach-ip27/topology.h | 30 +- include/asm-mips/mach-ip32/mangle-port.h | 2 - include/asm-mips/mach-ip32/spaces.h | 42 - .../asm-mips/mach-ja/cpu-feature-overrides.h | 6 - .../mach-mips/cpu-feature-overrides.h | 64 - .../mach-ocelot3/cpu-feature-overrides.h | 47 - .../mach-sibyte/cpu-feature-overrides.h | 38 - .../mach-yosemite/cpu-feature-overrides.h | 6 - include/asm-mips/marvell.h | 1 + include/asm-mips/mipsregs.h | 7 - include/asm-mips/mmu_context.h | 10 +- include/asm-mips/mmzone.h | 3 + include/asm-mips/msc01_ic.h | 151 - include/asm-mips/numnodes.h | 2 +- include/asm-mips/page.h | 17 +- include/asm-mips/pci.h | 65 - include/asm-mips/pci/bridge.h | 7 +- include/asm-mips/pci_channel.h | 46 + include/asm-mips/pgtable-32.h | 22 - include/asm-mips/pgtable-64.h | 19 +- include/asm-mips/pgtable-bits.h | 33 +- include/asm-mips/pgtable.h | 133 +- include/asm-mips/posix_types.h | 8 +- include/asm-mips/processor.h | 72 +- include/asm-mips/ptrace.h | 2 - include/asm-mips/r4kcache.h | 2 +- include/asm-mips/serial.h | 105 +- include/asm-mips/sgi/ioc.h | 2 +- include/asm-mips/sgiarcs.h | 4 +- include/asm-mips/siginfo.h | 122 +- include/asm-mips/sim.h | 5 +- include/asm-mips/smp.h | 7 +- include/asm-mips/sn/hub.h | 19 + include/asm-mips/sn/mapped_kernel.h | 2 + include/asm-mips/sn/sn_private.h | 2 + include/asm-mips/socket.h | 6 +- include/asm-mips/spinlock.h | 259 +- include/asm-mips/stackframe.h | 2 +- include/asm-mips/statfs.h | 32 +- include/asm-mips/system.h | 362 +- include/asm-mips/thread_info.h | 2 +- include/asm-mips/titan_dep.h | 40 +- include/asm-mips/tx4927/smsc_fdc37m81x.h | 69 - include/asm-mips/tx4927/tx4927.h | 18 +- include/asm-mips/uaccess.h | 217 +- include/asm-mips/unistd.h | 92 +- include/asm-mips/war.h | 11 - include/asm-parisc/assembly.h | 17 +- include/asm-parisc/atomic.h | 54 +- include/asm-parisc/bitops.h | 24 +- include/asm-parisc/bug.h | 8 - include/asm-parisc/errno.h | 4 - include/asm-parisc/hardirq.h | 21 + include/asm-parisc/io.h | 2 - include/asm-parisc/pci.h | 36 +- include/asm-parisc/pdc.h | 1 - include/asm-parisc/pgtable.h | 3 +- include/asm-parisc/posix_types.h | 2 +- include/asm-parisc/ptrace.h | 3 +- include/asm-parisc/som.h | 8 + include/asm-parisc/spinlock.h | 42 +- include/asm-parisc/string.h | 10 - include/asm-parisc/superio.h | 1 + include/asm-parisc/system.h | 24 +- include/asm-parisc/thread_info.h | 15 +- include/asm-parisc/tlbflush.h | 8 - include/asm-parisc/uaccess.h | 178 +- include/asm-parisc/unistd.h | 38 +- include/asm-ppc/8xx_immap.h | 234 +- include/asm-ppc/commproc.h | 69 +- include/asm-ppc/cputable.h | 6 - include/asm-ppc/diskdump.h | 6 - include/asm-ppc/hardirq.h | 45 +- include/asm-ppc/hw_irq.h | 1 + include/asm-ppc/ibm4xx.h | 4 - include/asm-ppc/immap_cpm2.h | 2 +- include/asm-ppc/io.h | 340 +- include/asm-ppc/irq.h | 26 +- include/asm-ppc/kexec.h | 10 - include/asm-ppc/machdep.h | 26 - include/asm-ppc/mpc85xx.h | 3 - include/asm-ppc/mpc8xx.h | 6 +- include/asm-ppc/ocp_ids.h | 1 - include/asm-ppc/open_pic.h | 2 - include/asm-ppc/pci-bridge.h | 2 - include/asm-ppc/pgtable.h | 3 +- include/asm-ppc/pmac_feature.h | 6 +- include/asm-ppc/reg_booke.h | 4 +- include/asm-ppc/thread_info.h | 2 +- include/asm-ppc/time.h | 3 +- include/asm-ppc/timex.h | 4 + include/asm-ppc/unistd.h | 8 +- include/asm-ppc/xparameters.h | 18 - include/asm-ppc64/crashdump.h | 61 - include/asm-ppc64/diskdump.h | 55 - include/asm-ppc64/eeh.h | 179 +- include/asm-ppc64/floppy.h | 1 - include/asm-ppc64/hardirq.h | 45 +- include/asm-ppc64/iSeries/mf.h | 41 +- include/asm-ppc64/ide.h | 2 +- include/asm-ppc64/io.h | 38 +- include/asm-ppc64/iommu.h | 13 +- include/asm-ppc64/irq.h | 20 +- include/asm-ppc64/machdep.h | 8 - include/asm-ppc64/mmu.h | 1 - include/asm-ppc64/netdump.h | 75 +- include/asm-ppc64/paca.h | 14 +- include/asm-ppc64/page.h | 1 + include/asm-ppc64/pci-bridge.h | 34 +- include/asm-ppc64/pci.h | 11 +- include/asm-ppc64/pgtable.h | 31 +- include/asm-ppc64/plpar_wrappers.h | 8 +- include/asm-ppc64/processor.h | 1 - include/asm-ppc64/prom.h | 29 +- include/asm-ppc64/rtas.h | 2 +- include/asm-ppc64/serial.h | 111 +- include/asm-ppc64/smp.h | 19 +- include/asm-ppc64/sstep.h | 13 - include/asm-ppc64/thread_info.h | 2 +- include/asm-ppc64/timex.h | 4 + include/asm-ppc64/topology.h | 21 +- include/asm-ppc64/udbg.h | 4 +- include/asm-ppc64/unistd.h | 23 +- include/asm-s390/debug.h | 2 - include/asm-s390/diskdump.h | 6 - include/asm-s390/extmem.h | 23 +- include/asm-s390/hardirq.h | 21 + include/asm-s390/io.h | 2 - include/asm-s390/siginfo.h | 71 + include/asm-s390/timex.h | 4 + include/asm-s390/unistd.h | 3 +- include/asm-sh/adc.h | 3 +- include/asm-sh/addrspace.h | 2 - include/asm-sh/bitops.h | 4 +- include/asm-sh/bugs.h | 4 +- include/asm-sh/cache.h | 5 +- include/asm-sh/checksum.h | 3 +- include/asm-sh/cpu-sh3/cache.h | 7 - include/asm-sh/cpu-sh3/cacheflush.h | 42 - include/asm-sh/cpu-sh4/freq.h | 4 - include/asm-sh/dma-mapping.h | 46 +- include/asm-sh/dma.h | 2 - include/asm-sh/edosk7705/io.h | 30 - include/asm-sh/freq.h | 3 +- include/asm-sh/hardirq.h | 21 + include/asm-sh/io.h | 2 - include/asm-sh/irq-sh73180.h | 350 -- include/asm-sh/irq.h | 25 +- include/asm-sh/machvec.h | 2 +- include/asm-sh/microdev/io.h | 53 - include/asm-sh/microdev/irq.h | 72 - include/asm-sh/mmu_context.h | 2 - include/asm-sh/mpc1211/keyboard.h | 2 +- include/asm-sh/page.h | 8 +- include/asm-sh/pgtable.h | 7 +- include/asm-sh/processor.h | 4 - include/asm-sh/rtc.h | 3 +- include/asm-sh/se/se.h | 8 - include/asm-sh/se73180/io.h | 32 - include/asm-sh/se73180/se73180.h | 62 - include/asm-sh/sh03/io.h | 46 - include/asm-sh/sh03/sh03.h | 18 - include/asm-sh/shmparam.h | 2 - include/asm-sh/system.h | 1 + include/asm-sh/thread_info.h | 10 + include/asm-sh/timex.h | 4 + include/asm-sh/ubc.h | 3 +- include/asm-sh/unistd.h | 8 +- include/asm-sh/user.h | 2 + include/asm-sh/watchdog.h | 3 +- include/asm-sh64/io.h | 5 - include/asm-sh64/keyboard.h | 2 +- include/asm-sh64/pgtable.h | 3 +- include/asm-sparc/atomic.h | 1 - include/asm-sparc/dma.h | 2 +- include/asm-sparc/elf.h | 2 +- include/asm-sparc/errno.h | 5 - include/asm-sparc/fbio.h | 6 +- include/asm-sparc/hardirq.h | 21 + include/asm-sparc/io.h | 182 +- include/asm-sparc/mostek.h | 7 +- include/asm-sparc/processor.h | 2 - include/asm-sparc/sigcontext.h | 3 +- include/asm-sparc/signal.h | 8 +- include/asm-sparc/timex.h | 4 + include/asm-sparc/unistd.h | 6 +- include/asm-sparc64/errno.h | 5 - include/asm-sparc64/hardirq.h | 21 + include/asm-sparc64/io.h | 70 +- include/asm-sparc64/kprobes.h | 6 - include/asm-sparc64/pci.h | 5 - include/asm-sparc64/timex.h | 4 + include/asm-sparc64/tlb.h | 3 +- include/asm-sparc64/uaccess.h | 34 +- include/asm-sparc64/unistd.h | 6 +- include/asm-um/atomic.h | 5 - include/asm-um/cpumask.h | 6 - include/asm-um/current.h | 13 +- include/asm-um/diskdump.h | 6 - include/asm-um/hardirq.h | 28 +- include/asm-um/init.h | 11 - include/asm-um/irq.h | 5 +- include/asm-um/module.h | 13 + include/asm-um/pgalloc.h | 4 - include/asm-um/pgtable.h | 9 +- include/asm-um/processor-generic.h | 5 +- include/asm-um/ptrace-generic.h | 2 + include/asm-um/smplock.h | 6 - include/asm-um/spinlock.h | 6 - include/asm-um/thread_info.h | 1 - include/asm-um/unistd.h | 10 +- include/asm-v850/hardirq.h | 21 + include/asm-v850/io.h | 9 +- include/asm-v850/posix_types.h | 4 +- include/asm-v850/timex.h | 4 + include/asm-x86_64/apic.h | 2 +- include/asm-x86_64/apicdef.h | 33 +- include/asm-x86_64/compat.h | 2 +- include/asm-x86_64/cpufeature.h | 4 +- include/asm-x86_64/crashdump.h | 86 - include/asm-x86_64/desc.h | 2 - include/asm-x86_64/diskdump.h | 44 - include/asm-x86_64/elf.h | 5 - include/asm-x86_64/genapic.h | 35 - include/asm-x86_64/hardirq.h | 60 +- include/asm-x86_64/hpet.h | 4 - include/asm-x86_64/io.h | 113 +- include/asm-x86_64/io_apic.h | 2 +- include/asm-x86_64/ipi.h | 113 - include/asm-x86_64/irq.h | 9 +- include/asm-x86_64/kdebug.h | 3 +- include/asm-x86_64/kprobes.h | 61 - include/asm-x86_64/mach_apic.h | 29 - include/asm-x86_64/mpspec.h | 6 +- include/asm-x86_64/msi.h | 1 - include/asm-x86_64/netdump.h | 77 +- include/asm-x86_64/nmi.h | 6 - include/asm-x86_64/numa.h | 2 - include/asm-x86_64/page.h | 12 +- include/asm-x86_64/pgtable.h | 4 +- include/asm-x86_64/processor.h | 2 - include/asm-x86_64/proto.h | 2 - include/asm-x86_64/smp.h | 49 +- include/asm-x86_64/swiotlb.h | 4 - include/asm-x86_64/system.h | 4 +- include/asm-x86_64/thread_info.h | 2 +- include/asm-x86_64/timex.h | 4 + include/asm-x86_64/topology.h | 22 +- include/asm-x86_64/uaccess.h | 2 +- include/asm-x86_64/vsyscall.h | 6 +- include/linux/acpi.h | 27 - include/linux/atm.h | 3 - include/linux/atmdev.h | 4 - include/linux/atmsvc.h | 7 +- include/linux/bio.h | 7 - include/linux/bitops.h | 4 +- include/linux/blkdev.h | 67 +- include/linux/bootmem.h | 1 - include/linux/buffer_head.h | 14 +- include/linux/byteorder/big_endian.h | 12 +- include/linux/byteorder/little_endian.h | 12 +- include/linux/cdrom.h | 3 - include/linux/{ckrm_events.h => ckrm.h} | 72 +- include/linux/ckrm_ce.h | 42 +- include/linux/ckrm_mem.h | 118 +- include/linux/ckrm_mem_inline.h | 417 +- include/linux/ckrm_rc.h | 209 +- include/linux/ckrm_tc.h | 39 +- include/linux/ckrm_tsk.h | 23 +- include/linux/coda.h | 4 +- include/linux/compat.h | 2 - include/linux/compat_ioctl.h | 9 - include/linux/compiler.h | 11 - include/linux/cpufreq.h | 27 +- include/linux/crash_dump.h | 34 - include/linux/crbce.h | 3 +- include/linux/crc-ccitt.h | 2 - include/linux/cyclomx.h | 2 +- include/linux/cycx_drv.h | 6 +- include/linux/dcache.h | 3 +- include/linux/device-mapper.h | 4 - include/linux/device.h | 11 +- include/linux/devpts_fs.h | 3 +- include/linux/dio.h | 188 +- include/linux/diskdump.h | 186 - include/linux/divert.h | 2 - include/linux/dm-ioctl.h | 21 +- include/linux/dnotify.h | 46 +- include/linux/dump.h | 2 +- include/linux/dvb/frontend.h | 11 +- include/linux/dvb/osd.h | 32 - include/linux/eeprom.h | 4 +- include/linux/efi.h | 2 +- include/linux/efs_fs.h | 1 - include/linux/elevator.h | 64 +- include/linux/ext2_fs.h | 6 +- include/linux/ext3_fs.h | 15 +- include/linux/ext3_fs_i.h | 8 +- include/linux/ext3_fs_sb.h | 4 +- include/linux/fb.h | 125 +- include/linux/filter.h | 8 - include/linux/fs.h | 37 +- include/linux/gen_stats.h | 5 - include/linux/generic_serial.h | 2 +- include/linux/genhd.h | 28 +- include/linux/gfp.h | 7 +- include/linux/ghash.h | 236 + include/linux/hardirq.h | 42 - include/linux/hdlc.h | 8 +- include/linux/hdreg.h | 26 +- include/linux/highmem.h | 1 - include/linux/hpet.h | 1 - include/linux/i2c-sensor.h | 36 + include/linux/i2c-vid.h | 36 +- include/linux/i2c.h | 18 +- include/linux/i2o.h | 68 +- include/linux/icmp.h | 2 - include/linux/ide.h | 158 +- include/linux/idr.h | 2 +- include/linux/if_ppp.h | 2 +- include/linux/if_vlan.h | 4 +- include/linux/inet.h | 2 - include/linux/inetdevice.h | 3 - include/linux/init_task.h | 2 +- include/linux/input.h | 22 - include/linux/interrupt.h | 33 +- include/linux/ioport.h | 5 - include/linux/ipmi.h | 2 +- include/linux/ipmi_msgdefs.h | 2 +- include/linux/ipv6_route.h | 3 +- include/linux/irq.h | 18 +- include/linux/isicom.h | 173 + include/linux/jbd.h | 45 +- include/linux/jffs2_fs_i.h | 3 +- include/linux/jiffies.h | 384 +- include/linux/kallsyms.h | 10 - include/linux/kernel.h | 35 +- include/linux/kexec.h | 1 - include/linux/key-ui.h | 97 - include/linux/key.h | 286 -- include/linux/keyctl.h | 39 - include/linux/kfifo.h | 157 - include/linux/kmod.h | 4 + include/linux/kobject.h | 22 +- include/linux/kobject_uevent.h | 57 - include/linux/kprobes.h | 5 +- include/linux/libata.h | 46 +- include/linux/list.h | 2 + include/linux/lockd/lockd.h | 1 + include/linux/lockd/xdr.h | 5 + include/linux/mc146818rtc.h | 4 +- include/linux/mempolicy.h | 6 +- include/linux/meye.h | 17 +- include/linux/mm.h | 31 +- include/linux/mm_inline.h | 10 - include/linux/mmc/mmc.h | 5 +- include/linux/mmzone.h | 68 +- include/linux/module.h | 63 +- include/linux/moduleparam.h | 21 +- include/linux/mount.h | 4 - include/linux/msdos_fs.h | 7 +- include/linux/msdos_fs_i.h | 12 +- include/linux/msdos_fs_sb.h | 15 +- include/linux/mtd/cfi.h | 58 +- include/linux/mtd/doc2000.h | 8 +- include/linux/mtd/gen_probe.h | 2 +- include/linux/mtd/map.h | 20 +- include/linux/mtd/nand.h | 20 +- include/linux/mtd/partitions.h | 3 +- include/linux/net.h | 2 +- include/linux/netdevice.h | 34 +- include/linux/netfilter.h | 2 - include/linux/netfilter_ipv4/ip_conntrack.h | 6 - .../linux/netfilter_ipv4/ip_conntrack_tcp.h | 2 +- .../linux/netfilter_ipv4/ip_nat_protocol.h | 2 +- include/linux/netfilter_ipv4/ip_tables.h | 4 - include/linux/netfilter_ipv4/ipt_CLUSTERIP.h | 32 - include/linux/netfilter_ipv4/ipt_CONNMARK.h | 25 - include/linux/netfilter_ipv4/ipt_connmark.h | 18 - include/linux/netfilter_ipv4/ipt_hashlimit.h | 40 - include/linux/netfilter_ipv6/ip6_tables.h | 12 +- include/linux/netlink.h | 1 - include/linux/netpoll.h | 4 +- include/linux/nfs4.h | 1 - include/linux/nfsd/state.h | 16 - include/linux/nfsd/xdr4.h | 1 - include/linux/nodemask.h | 326 -- include/linux/page-flags.h | 10 +- include/linux/parport_pc.h | 17 - include/linux/pci.h | 96 +- include/linux/pci_ids.h | 78 +- include/linux/pid.h | 2 + include/linux/pkt_cls.h | 8 +- include/linux/pkt_sched.h | 34 +- include/linux/pktcdvd.h | 275 - include/linux/pm.h | 38 +- include/linux/pnp.h | 4 +- include/linux/posix-timers.h | 38 +- include/linux/prctl.h | 1 + include/linux/proc_fs.h | 3 +- include/linux/proc_mm.h | 48 + include/linux/profile.h | 18 +- include/linux/ptrace.h | 2 - include/linux/raid/md.h | 2 +- include/linux/raid/md_k.h | 7 +- include/linux/raid/md_p.h | 4 +- include/linux/raid/multipath.h | 3 +- include/linux/raid/raid1.h | 1 - include/linux/random.h | 2 + include/linux/rbtree.h | 3 +- include/linux/rcfs.h | 30 +- include/linux/rcupdate.h | 18 - include/linux/reboot.h | 14 + include/linux/reiserfs_fs.h | 112 +- include/linux/reiserfs_fs_sb.h | 43 +- include/linux/rmap.h | 1 - include/linux/rslib.h | 105 - include/linux/rtnetlink.h | 2 - include/linux/scatterlist.h | 14 - include/linux/sched.h | 201 +- include/linux/sctp.h | 6 +- include/linux/security.h | 70 +- include/linux/serial.h | 2 - include/linux/serial_8250.h | 28 - include/linux/serial_core.h | 26 +- include/linux/serial_reg.h | 279 +- include/linux/skbuff.h | 3 +- include/linux/slab.h | 7 - include/linux/smb_fs.h | 2 +- include/linux/smb_mount.h | 5 +- include/linux/smp_lock.h | 64 +- include/linux/socket.h | 2 - include/linux/sonypi.h | 41 +- include/linux/spinlock.h | 124 +- include/linux/stallion.h | 2 +- include/linux/swap.h | 2 - include/linux/swapops.h | 3 +- include/linux/syscalls.h | 15 - include/linux/sysctl.h | 5 +- include/linux/sysfs.h | 2 - include/linux/sysrq.h | 46 +- include/linux/taskdelays.h | 25 - include/linux/tc_act/tc_ipt.h | 21 - include/linux/tc_act/tc_mirred.h | 28 - include/linux/tc_act/tc_pedit.h | 36 - include/linux/tcp.h | 4 - include/linux/threads.h | 2 +- include/linux/ticable.h | 2 - include/linux/time.h | 282 +- include/linux/timer.h | 3 - include/linux/times.h | 74 +- include/linux/timex.h | 62 +- include/linux/topology.h | 72 - include/linux/tty.h | 2 - include/linux/tty_driver.h | 6 +- include/linux/tty_ldisc.h | 2 +- include/linux/types.h | 16 +- include/linux/usb.h | 29 +- include/linux/usb_sl811.h | 26 - include/linux/usbdevice_fs.h | 35 + include/linux/via.h | 22 - include/linux/videodev.h | 15 +- include/linux/videodev2.h | 18 +- include/linux/vs_base.h | 17 +- include/linux/vs_context.h | 20 +- include/linux/vs_cvirt.h | 23 +- include/linux/vs_dlimit.h | 6 +- include/linux/vs_limit.h | 6 +- include/linux/vs_memory.h | 4 + include/linux/vs_network.h | 10 + include/linux/vs_sched.h | 73 - include/linux/vs_socket.h | 8 + include/linux/vserver.h | 9 + include/linux/vserver/context.h | 178 +- include/linux/vserver/context_cmd.h | 73 - include/linux/vserver/cvirt.h | 193 +- include/linux/vserver/cvirt_cmd.h | 7 - include/linux/vserver/cvirt_def.h | 59 - include/linux/vserver/debug.h | 211 +- include/linux/vserver/debug_cmd.h | 14 - include/linux/vserver/dlimit.h | 4 +- include/linux/vserver/inode.h | 2 - include/linux/vserver/legacy.h | 1 + include/linux/vserver/limit.h | 136 +- include/linux/vserver/limit_cmd.h | 36 - include/linux/vserver/limit_def.h | 21 - include/linux/vserver/namespace.h | 2 - include/linux/vserver/network.h | 95 +- include/linux/vserver/network_cmd.h | 81 - include/linux/vserver/sched.h | 210 +- include/linux/vserver/sched_cmd.h | 47 - include/linux/vserver/sched_def.h | 36 - include/linux/vserver/switch.h | 5 +- include/linux/vserver/xid.h | 3 - include/linux/wait.h | 90 +- include/linux/wireless.h | 64 +- include/linux/workqueue.h | 3 - include/linux/writeback.h | 8 +- include/media/audiochip.h | 2 +- include/media/ir-common.h | 2 - include/media/saa6752hs.h | 6 +- include/media/saa7146.h | 12 +- include/media/saa7146_vv.h | 7 +- include/media/tuner.h | 8 +- include/media/video-buf-dvb.h | 34 - include/media/video-buf.h | 64 +- include/mtd/mtd-abi.h | 7 +- include/net/act_api.h | 119 - include/net/addrconf.h | 3 +- include/net/bluetooth/bluetooth.h | 1 - include/net/bluetooth/hci.h | 42 +- include/net/bluetooth/hci_core.h | 78 +- include/net/bluetooth/l2cap.h | 2 - include/net/dn_nsp.h | 2 +- include/net/dst.h | 10 +- include/net/gen_stats.h | 3 - include/net/ip.h | 4 +- include/net/ip6_route.h | 4 +- include/net/ip_vs.h | 4 +- include/net/ipv6.h | 11 +- include/net/irda/ircomm_tty_attach.h | 1 + include/net/irda/irias_object.h | 3 +- include/net/irda/irlmp.h | 3 +- include/net/irda/timer.h | 10 +- include/net/iw_handler.h | 57 +- include/net/ndisc.h | 5 - include/net/neighbour.h | 6 +- include/net/pkt_act.h | 9 +- include/net/pkt_cls.h | 278 +- include/net/pkt_sched.h | 265 +- include/net/route.h | 72 +- include/net/sch_generic.h | 175 - include/net/sctp/sctp.h | 8 +- include/net/sctp/structs.h | 6 - include/net/sctp/ulpevent.h | 3 - include/net/sctp/user.h | 6 +- include/net/sock.h | 29 +- include/net/tc_act/tc_gact.h | 2 +- include/net/tc_act/tc_ipt.h | 16 - include/net/tc_act/tc_mirred.h | 15 - include/net/tc_act/tc_pedit.h | 14 - include/net/tcp.h | 77 +- include/net/tux.h | 2 +- include/net/udp.h | 2 - include/net/x25device.h | 17 - include/net/xfrm.h | 4 +- include/pcmcia/bulkmem.h | 148 + include/pcmcia/cistpl.h | 10 +- include/pcmcia/cs.h | 15 +- include/pcmcia/cs_types.h | 3 + include/pcmcia/ftl.h | 73 + include/pcmcia/memory.h | 41 + include/pcmcia/ss.h | 8 + include/scsi/scsi.h | 19 +- include/scsi/scsi_device.h | 3 - include/scsi/scsi_devinfo.h | 2 - include/scsi/scsi_eh.h | 35 +- include/scsi/scsi_host.h | 9 + include/scsi/scsi_transport.h | 5 + include/scsi/scsi_transport_fc.h | 12 +- include/sound/ac97_codec.h | 17 +- include/sound/control.h | 4 - include/sound/core.h | 8 +- include/sound/cs46xx.h | 2 +- include/sound/emu10k1.h | 61 +- include/sound/hdsp.h | 14 +- include/sound/opl3.h | 5 - include/sound/pcm.h | 5 - include/sound/seq_kernel.h | 8 - include/sound/ymfpci.h | 2 +- include/video/kyro.h | 2 +- include/video/mach64.h | 351 +- include/video/neomagic.h | 4 +- include/video/radeon.h | 3 +- include/video/sstfb.h | 11 +- include/video/tdfx.h | 2 +- include/video/tgafb.h | 6 +- init/Kconfig | 200 +- init/do_mounts.c | 5 +- init/do_mounts_devfs.c | 1 + init/do_mounts_rd.c | 17 +- init/initramfs.c | 12 +- init/main.c | 30 +- ipc/mqueue.c | 12 +- ipc/msg.c | 5 +- ipc/sem.c | 5 +- ipc/shm.c | 18 +- ipc/util.c | 82 +- ipc/util.h | 13 +- kernel/Makefile | 8 +- kernel/acct.c | 25 +- kernel/audit.c | 2 +- kernel/auditsc.c | 2 +- kernel/capability.c | 3 - kernel/ckrm/Makefile | 16 +- kernel/ckrm/ckrm.c | 282 +- kernel/ckrm/ckrm_cpu_class.c | 13 +- kernel/ckrm/ckrm_cpu_monitor.c | 13 +- kernel/ckrm/ckrm_events.c | 97 - kernel/ckrm/ckrm_mem.c | 829 ++- kernel/ckrm/ckrm_memcore.c | 628 --- kernel/ckrm/ckrm_memctlr.c | 439 -- kernel/ckrm/ckrm_null_class.c | 308 -- kernel/ckrm/ckrm_numtasks.c | 245 +- kernel/ckrm/ckrm_numtasks_stub.c | 10 +- kernel/ckrm/ckrm_tc.c | 3 - kernel/ckrm/ckrmutils.c | 60 +- kernel/ckrm/rbce/rbce_fs.c | 2 +- kernel/ckrm/rbce/rbcemod.c | 27 +- kernel/ckrm/rbce/rbcemod_ext.c | 4 +- kernel/compat.c | 12 +- kernel/cpu.c | 36 + kernel/crash.c | 117 - kernel/dump.c | 246 - kernel/exec_domain.c | 1 - kernel/exit.c | 45 +- kernel/fork.c | 263 +- kernel/futex.c | 23 +- kernel/irq/Makefile | 5 - kernel/irq/autoprobe.c | 188 - kernel/irq/handle.c | 204 - kernel/irq/internals.h | 18 - kernel/irq/manage.c | 347 -- kernel/irq/proc.c | 155 - kernel/irq/spurious.c | 195 - kernel/itimer.c | 1 - kernel/kallsyms.c | 194 +- kernel/kexec.c | 13 +- kernel/kfifo.c | 168 - kernel/kmod.c | 23 + kernel/kprobes.c | 6 +- kernel/ksysfs.c | 56 - kernel/module.c | 176 +- kernel/panic.c | 34 +- kernel/params.c | 395 +- kernel/pid.c | 148 +- kernel/posix-timers.c | 138 +- kernel/power/Kconfig | 19 +- kernel/power/disk.c | 42 +- kernel/power/main.c | 14 +- kernel/power/poweroff.c | 2 +- kernel/power/swsusp.c | 34 +- kernel/printk.c | 51 +- kernel/profile.c | 307 +- kernel/ptrace.c | 51 +- kernel/rcupdate.c | 2 +- kernel/resource.c | 2 - kernel/sched.c | 771 +-- kernel/signal.c | 104 +- kernel/softirq.c | 46 +- kernel/stop_machine.c | 7 +- kernel/sys.c | 153 +- kernel/sys_ni.c | 85 - kernel/sysctl.c | 26 +- kernel/time.c | 21 +- kernel/timer.c | 69 +- kernel/user.c | 16 - kernel/vserver/Kconfig | 27 - kernel/vserver/Makefile | 1 - kernel/vserver/context.c | 107 +- kernel/vserver/cvirt.c | 35 +- kernel/vserver/cvirt_init.h | 66 - kernel/vserver/cvirt_proc.h | 90 - kernel/vserver/dlimit.c | 3 +- kernel/vserver/helper.c | 34 +- kernel/vserver/init.c | 1 + kernel/vserver/inode.c | 98 +- kernel/vserver/legacy.c | 22 +- kernel/vserver/limit.c | 7 +- kernel/vserver/limit_init.h | 28 - kernel/vserver/limit_proc.h | 48 - kernel/vserver/namespace.c | 6 +- kernel/vserver/network.c | 65 +- kernel/vserver/proc.c | 14 +- kernel/vserver/sched.c | 6 +- kernel/vserver/sched_init.h | 29 - kernel/vserver/sched_proc.h | 38 - kernel/vserver/signal.c | 1 + kernel/vserver/switch.c | 42 +- kernel/vserver/sysctl.c | 5 + kernel/wait.c | 246 - kernel/workqueue.c | 34 - lib/Kconfig | 18 - lib/Kconfig.debug | 37 +- lib/Makefile | 10 +- lib/bitmap.c | 2 +- lib/dec_and_lock.c | 4 +- lib/idr.c | 25 +- lib/inflate.c | 40 +- lib/iomap.c | 8 +- lib/kernel_lock.c | 126 - lib/kobject.c | 148 +- lib/kobject_uevent.c | 369 -- lib/parser.c | 1 - lib/radix-tree.c | 6 +- lib/reed_solomon/Makefile | 6 - lib/reed_solomon/decode_rs.c | 272 - lib/reed_solomon/encode_rs.c | 54 - lib/reed_solomon/reed_solomon.c | 335 -- mm/Makefile | 1 + mm/bootmem.c | 15 +- mm/fadvise.c | 1 - mm/filemap.c | 167 +- mm/fremap.c | 2 - mm/madvise.c | 1 - mm/memory.c | 62 +- mm/mempolicy.c | 63 +- mm/mincore.c | 1 - mm/mlock.c | 14 +- mm/mmap.c | 83 +- mm/mprotect.c | 18 +- mm/mremap.c | 6 +- mm/msync.c | 1 - mm/nommu.c | 33 +- mm/oom_kill.c | 2 +- mm/page-writeback.c | 7 +- mm/page_alloc.c | 85 +- mm/prio_tree.c | 6 +- mm/rmap.c | 9 - mm/shmem.c | 194 +- mm/slab.c | 218 +- mm/swap.c | 13 +- mm/swap_state.c | 2 +- mm/swapfile.c | 53 +- mm/thrash.c | 10 +- mm/tiny-shmem.c | 2 + mm/truncate.c | 12 +- mm/vmscan.c | 441 +- net/802/fc.c | 32 - net/802/fddi.c | 41 - net/802/hippi.c | 89 - net/802/tr.c | 38 - net/8021q/vlan.c | 80 +- net/8021q/vlan.h | 2 - net/8021q/vlan_dev.c | 40 +- net/Kconfig | 19 - net/Makefile | 3 +- net/appletalk/Makefile | 2 +- net/appletalk/ddp.c | 7 + net/appletalk/dev.c | 43 - net/atm/common.c | 2 - net/atm/mpc.c | 11 +- net/atm/signaling.c | 23 +- net/atm/svc.c | 142 +- net/ax25/ax25_route.c | 16 + net/bluetooth/af_bluetooth.c | 8 +- net/bluetooth/cmtp/capi.c | 1 + net/bluetooth/hci_conn.c | 31 +- net/bluetooth/hci_core.c | 50 +- net/bluetooth/hci_event.c | 97 +- net/bluetooth/hci_sock.c | 14 +- net/bluetooth/hci_sysfs.c | 15 +- net/bluetooth/l2cap.c | 205 +- net/bluetooth/lib.c | 6 +- net/bluetooth/rfcomm/sock.c | 15 +- net/bluetooth/rfcomm/tty.c | 14 +- net/bridge/br_if.c | 4 +- net/bridge/br_ioctl.c | 2 - net/bridge/br_netfilter.c | 2 +- net/bridge/netfilter/ebtables.c | 10 +- net/compat.c | 5 +- net/core/dev.c | 111 +- net/core/dev_mcast.c | 2 +- net/core/dst.c | 4 +- net/core/ethtool.c | 31 +- net/core/gen_estimator.c | 46 - net/core/gen_stats.c | 91 +- net/core/link_watch.c | 2 +- net/core/neighbour.c | 9 +- net/core/net-sysfs.c | 11 - net/core/netfilter.c | 23 +- net/core/netpoll.c | 66 +- net/core/pktgen.c | 15 +- net/core/rtnetlink.c | 6 - net/core/skbuff.c | 8 +- net/core/sock.c | 13 +- net/core/wireless.c | 215 +- net/decnet/Kconfig | 11 + net/decnet/af_decnet.c | 8 +- net/decnet/dn_dev.c | 63 +- net/decnet/dn_neigh.c | 1 - net/decnet/dn_nsp_in.c | 1 - net/decnet/dn_nsp_out.c | 4 +- net/decnet/dn_route.c | 27 +- net/econet/af_econet.c | 2 +- net/ethernet/eth.c | 61 - net/ipv4/Kconfig | 21 +- net/ipv4/Makefile | 3 +- net/ipv4/af_inet.c | 49 +- net/ipv4/devinet.c | 5 +- net/ipv4/fib_frontend.c | 2 +- net/ipv4/fib_hash.c | 2 +- net/ipv4/fib_rules.c | 2 +- net/ipv4/fib_semantics.c | 2 +- net/ipv4/icmp.c | 19 - net/ipv4/igmp.c | 4 +- net/ipv4/ip_fragment.c | 2 +- net/ipv4/ip_output.c | 7 +- net/ipv4/ipconfig.c | 15 +- net/ipv4/ipvs/ip_vs_conn.c | 8 +- net/ipv4/ipvs/ip_vs_ctl.c | 41 +- net/ipv4/ipvs/ip_vs_ftp.c | 3 +- net/ipv4/ipvs/ip_vs_lblc.c | 2 +- net/ipv4/ipvs/ip_vs_lblcr.c | 4 +- net/ipv4/netfilter/Kconfig | 55 - net/ipv4/netfilter/Makefile | 4 - net/ipv4/netfilter/arp_tables.c | 2 +- net/ipv4/netfilter/ip_conntrack_amanda.c | 12 +- net/ipv4/netfilter/ip_conntrack_core.c | 30 +- net/ipv4/netfilter/ip_conntrack_ftp.c | 2 +- net/ipv4/netfilter/ip_conntrack_irc.c | 6 +- net/ipv4/netfilter/ip_conntrack_proto_tcp.c | 36 +- net/ipv4/netfilter/ip_conntrack_standalone.c | 15 +- net/ipv4/netfilter/ip_conntrack_tftp.c | 2 +- net/ipv4/netfilter/ip_fw_compat.c | 2 +- net/ipv4/netfilter/ip_nat_core.c | 57 +- net/ipv4/netfilter/ip_nat_ftp.c | 2 +- net/ipv4/netfilter/ip_nat_irc.c | 2 +- net/ipv4/netfilter/ip_nat_proto_icmp.c | 4 +- net/ipv4/netfilter/ip_nat_proto_tcp.c | 8 +- net/ipv4/netfilter/ip_nat_proto_udp.c | 8 +- net/ipv4/netfilter/ip_nat_proto_unknown.c | 2 +- net/ipv4/netfilter/ip_nat_rule.c | 4 +- net/ipv4/netfilter/ip_nat_standalone.c | 2 +- net/ipv4/netfilter/ip_nat_tftp.c | 2 +- net/ipv4/netfilter/ip_queue.c | 11 +- net/ipv4/netfilter/ip_tables.c | 18 +- net/ipv4/netfilter/ipt_CLUSTERIP.c | 760 --- net/ipv4/netfilter/ipt_CONNMARK.c | 118 - net/ipv4/netfilter/ipt_ECN.c | 2 +- net/ipv4/netfilter/ipt_MARK.c | 2 + net/ipv4/netfilter/ipt_MASQUERADE.c | 89 +- net/ipv4/netfilter/ipt_REJECT.c | 58 +- net/ipv4/netfilter/ipt_ULOG.c | 6 +- net/ipv4/netfilter/ipt_connmark.c | 81 - net/ipv4/netfilter/ipt_hashlimit.c | 713 --- net/ipv4/netfilter/ipt_recent.c | 2 +- net/ipv4/netfilter/ipt_tcpmss.c | 12 + net/ipv4/netfilter/iptable_filter.c | 4 +- net/ipv4/raw.c | 6 +- net/ipv4/route.c | 15 +- net/ipv4/tcp.c | 69 +- net/ipv4/tcp_diag.c | 367 +- net/ipv4/tcp_input.c | 6 +- net/ipv4/tcp_ipv4.c | 43 +- net/ipv4/tcp_minisocks.c | 8 +- net/ipv4/tcp_output.c | 7 +- net/ipv4/tcp_timer.c | 7 +- net/ipv4/udp.c | 63 +- net/ipv4/xfrm4_input.c | 3 - net/ipv4/xfrm4_output.c | 6 +- net/ipv6/Kconfig | 4 +- net/ipv6/addrconf.c | 174 +- net/ipv6/af_inet6.c | 30 +- net/ipv6/anycast.c | 12 +- net/ipv6/datagram.c | 2 +- net/ipv6/ip6_fib.c | 6 +- net/ipv6/ip6_flowlabel.c | 2 +- net/ipv6/ip6_output.c | 31 +- net/ipv6/ip6_tunnel.c | 10 +- net/ipv6/mcast.c | 46 +- net/ipv6/ndisc.c | 73 +- net/ipv6/netfilter/ip6_queue.c | 15 +- net/ipv6/netfilter/ip6_tables.c | 257 +- net/ipv6/netfilter/ip6t_LOG.c | 279 +- net/ipv6/netfilter/ip6t_MARK.c | 2 +- net/ipv6/netfilter/ip6t_ah.c | 269 +- net/ipv6/netfilter/ip6t_dst.c | 103 +- net/ipv6/netfilter/ip6t_esp.c | 91 +- net/ipv6/netfilter/ip6t_eui64.c | 5 +- net/ipv6/netfilter/ip6t_frag.c | 111 +- net/ipv6/netfilter/ip6t_hbh.c | 101 +- net/ipv6/netfilter/ip6t_hl.c | 2 +- net/ipv6/netfilter/ip6t_ipv6header.c | 33 +- net/ipv6/netfilter/ip6t_length.c | 3 +- net/ipv6/netfilter/ip6t_limit.c | 3 +- net/ipv6/netfilter/ip6t_mac.c | 3 +- net/ipv6/netfilter/ip6t_mark.c | 3 +- net/ipv6/netfilter/ip6t_multiport.c | 39 +- net/ipv6/netfilter/ip6t_owner.c | 3 +- net/ipv6/netfilter/ip6t_physdev.c | 3 +- net/ipv6/netfilter/ip6t_rt.c | 124 +- net/ipv6/raw.c | 11 +- net/ipv6/reassembly.c | 10 +- net/ipv6/route.c | 67 +- net/ipv6/tcp_ipv6.c | 25 +- net/ipv6/udp.c | 15 +- net/ipv6/xfrm6_output.c | 6 +- net/ipv6/xfrm6_policy.c | 6 +- net/ipv6/xfrm6_state.c | 6 +- net/irda/af_irda.c | 2 +- net/irda/ircomm/ircomm_tty.c | 28 +- net/irda/ircomm/ircomm_tty_attach.c | 186 +- net/irda/irias_object.c | 18 +- net/irda/irlan/irlan_client.c | 4 +- net/irda/irlan/irlan_common.c | 2 +- net/irda/irlan/irlan_provider.c | 2 +- net/irda/irlap_event.c | 38 +- net/irda/irlmp.c | 108 +- net/irda/irmod.c | 2 +- net/irda/irnet/irnet_ppp.c | 1 - net/irda/qos.c | 11 + net/irda/timer.c | 21 +- net/netlink/netlink_dev.c | 2 +- net/netrom/nr_in.c | 11 +- net/netrom/nr_route.c | 2 +- net/packet/af_packet.c | 17 +- net/rose/rose_route.c | 3 +- net/sched/Kconfig | 29 +- net/sched/Makefile | 4 +- net/sched/act_api.c | 68 +- net/sched/cls_api.c | 29 +- net/sched/cls_fw.c | 372 +- net/sched/cls_route.c | 60 +- net/sched/cls_rsvp.c | 5 +- net/sched/cls_rsvp.h | 54 +- net/sched/cls_rsvp6.c | 5 +- net/sched/cls_tcindex.c | 56 +- net/sched/cls_u32.c | 164 +- net/sched/estimator.c | 2 +- net/sched/gact.c | 42 +- net/sched/ipt.c | 378 -- net/sched/mirred.c | 306 -- net/sched/pedit.c | 290 -- net/sched/police.c | 67 +- net/sched/sch_api.c | 138 +- net/sched/sch_atm.c | 40 +- net/sched/sch_cbq.c | 130 +- net/sched/sch_dsmark.c | 9 +- net/sched/sch_fifo.c | 28 +- net/sched/sch_generic.c | 49 +- net/sched/sch_gred.c | 29 +- net/sched/sch_hfsc.c | 107 +- net/sched/sch_htb.c | 77 +- net/sched/sch_ingress.c | 16 +- net/sched/sch_netem.c | 74 +- net/sched/sch_prio.c | 13 +- net/sched/sch_red.c | 54 +- net/sched/sch_sfq.c | 16 +- net/sched/sch_tbf.c | 20 +- net/sched/sch_teql.c | 9 +- net/sctp/associola.c | 15 +- net/sctp/endpointola.c | 2 +- net/sctp/ipv6.c | 11 +- net/sctp/outqueue.c | 25 +- net/sctp/protocol.c | 16 +- net/sctp/sm_make_chunk.c | 31 - net/sctp/sm_statefuns.c | 59 - net/sctp/socket.c | 55 +- net/sctp/transport.c | 27 +- net/sctp/ulpevent.c | 42 +- net/socket.c | 6 +- net/sunrpc/auth.c | 4 +- net/sunrpc/auth_unix.c | 6 +- net/sunrpc/rpc_pipe.c | 6 +- net/tux/cachemiss.c | 2 +- net/tux/input.c | 3 +- net/tux/logger.c | 2 +- net/unix/af_unix.c | 13 +- net/x25/af_x25.c | 1 - net/x25/x25_dev.c | 4 +- net/x25/x25_proc.c | 7 +- net/xfrm/Kconfig | 4 + net/xfrm/xfrm_export.c | 1 + net/xfrm/xfrm_policy.c | 2 +- net/xfrm/xfrm_state.c | 2 +- net/xfrm/xfrm_user.c | 12 +- scripts/Makefile.build | 3 +- scripts/Makefile.clean | 2 +- scripts/Makefile.lib | 27 - scripts/Makefile.modinst | 5 +- scripts/Makefile.modpost | 1 - scripts/basic/docproc.c | 33 +- scripts/basic/fixdep.c | 18 +- scripts/basic/split-include.c | 2 +- scripts/checkstack.pl | 3 - scripts/conmakehash.c | 2 +- scripts/gen_initramfs_list.sh | 118 - scripts/kallsyms.c | 577 +-- scripts/kconfig/Makefile | 26 +- scripts/kconfig/conf.c | 6 +- scripts/kconfig/confdata.c | 22 +- scripts/kconfig/mconf.c | 4 +- scripts/kconfig/symbol.c | 2 +- scripts/kernel-2.6-planetlab.spec | 10 +- scripts/kernel-doc | 188 +- scripts/lxdialog/Makefile | 4 - scripts/lxdialog/dialog.h | 3 - scripts/mksysmap | 2 +- scripts/mod/file2alias.c | 19 +- scripts/mod/modpost.c | 81 +- scripts/mod/modpost.h | 10 +- scripts/mod/sumversion.c | 94 +- scripts/reference_init.pl | 3 - security/Kconfig | 40 - security/Makefile | 2 - security/capability.c | 1 - security/commoncap.c | 33 +- security/dummy.c | 8 - security/keys/Makefile | 14 - security/keys/compat.c | 78 - security/keys/internal.h | 123 - security/keys/key.c | 1039 ---- security/keys/keyctl.c | 987 ---- security/keys/keyring.c | 895 ---- security/keys/proc.c | 251 - security/keys/process_keys.c | 640 --- security/keys/request_key.c | 337 -- security/keys/user_defined.c | 191 - security/seclvl.c | 747 --- security/security.c | 95 +- security/selinux/hooks.c | 10 +- security/selinux/selinuxfs.c | 17 +- sound/Kconfig | 2 +- sound/arm/Kconfig | 9 +- sound/core/Kconfig | 75 +- sound/core/control.c | 62 +- sound/core/info.c | 7 +- sound/core/init.c | 7 +- sound/core/ioctl32/hwdep32.c | 34 +- sound/core/ioctl32/ioctl32.c | 318 +- sound/core/ioctl32/ioctl32.h | 91 +- sound/core/ioctl32/pcm32.c | 340 +- sound/core/ioctl32/rawmidi32.c | 16 +- sound/core/ioctl32/seq32.c | 6 +- sound/core/ioctl32/timer32.c | 10 +- sound/core/memalloc.c | 9 +- sound/core/memory.c | 8 +- sound/core/oss/pcm_oss.c | 17 +- sound/core/pcm.c | 3 +- sound/core/pcm_lib.c | 3 +- sound/core/pcm_misc.c | 11 +- sound/core/pcm_native.c | 644 ++- sound/core/rawmidi.c | 5 +- sound/core/seq/oss/seq_oss.c | 14 +- sound/core/seq/seq.c | 21 +- sound/core/seq/seq_clientmgr.c | 5 +- sound/core/seq/seq_device.c | 32 +- sound/core/seq/seq_dummy.c | 6 +- sound/core/seq/seq_midi.c | 4 +- sound/core/sound.c | 4 - sound/drivers/Kconfig | 48 +- sound/drivers/dummy.c | 15 +- sound/drivers/mpu401/mpu401.c | 13 +- sound/drivers/mpu401/mpu401_uart.c | 4 +- sound/drivers/opl3/Makefile | 1 - sound/drivers/opl3/opl3_lib.c | 138 +- sound/drivers/serial-u16550.c | 23 +- sound/drivers/virmidi.c | 9 +- sound/drivers/vx/vx_core.c | 2 +- sound/isa/Kconfig | 189 +- sound/isa/ad1816a/ad1816a.c | 21 +- sound/isa/ad1848/ad1848.c | 15 +- sound/isa/als100.c | 21 +- sound/isa/azt2320.c | 23 +- sound/isa/cmi8330.c | 23 +- sound/isa/cs423x/cs4231.c | 19 +- sound/isa/cs423x/cs4236.c | 27 +- sound/isa/dt019x.c | 19 +- sound/isa/es1688/es1688.c | 17 +- sound/isa/es18xx.c | 26 +- sound/isa/gus/gusclassic.c | 21 +- sound/isa/gus/gusextreme.c | 29 +- sound/isa/gus/gusmax.c | 21 +- sound/isa/gus/interwave.c | 27 +- sound/isa/opl3sa2.c | 29 +- sound/isa/sb/es968.c | 13 +- sound/isa/sb/sb16.c | 29 +- sound/isa/sb/sb8.c | 13 +- sound/isa/sgalaxy.c | 15 +- sound/isa/sscape.c | 13 +- sound/isa/wavefront/wavefront.c | 29 +- sound/oss/ad1889.c | 45 +- sound/oss/ad1889.h | 2 +- sound/oss/ali5455.c | 17 +- sound/oss/au1000.c | 5 +- sound/oss/btaudio.c | 2 +- sound/oss/cmpci.c | 6 +- sound/oss/cs4281/cs4281m.c | 14 +- sound/oss/cs46xx.c | 21 +- sound/oss/dmabuf.c | 2 +- sound/oss/dmasound/dmasound_awacs.c | 35 +- sound/oss/es1370.c | 10 +- sound/oss/es1371.c | 14 +- sound/oss/esssolo1.c | 12 +- sound/oss/forte.c | 10 +- sound/oss/i810_audio.c | 24 +- sound/oss/ite8172.c | 5 +- sound/oss/kahlua.c | 2 +- sound/oss/maestro.c | 6 +- sound/oss/maestro3.c | 7 +- sound/oss/msnd.c | 80 +- sound/oss/msnd.h | 14 +- sound/oss/msnd_pinnacle.c | 168 +- sound/oss/nm256.h | 10 +- sound/oss/nm256_audio.c | 2 +- sound/oss/rme96xx.c | 6 +- sound/oss/sonicvibes.c | 6 +- sound/oss/soundcard.c | 8 +- sound/oss/trident.c | 11 +- sound/oss/via82cxxx_audio.c | 8 +- sound/oss/ymfpci.c | 5 +- sound/oss/ymfpci.h | 2 +- sound/parisc/Kconfig | 9 +- sound/parisc/harmony.c | 22 +- sound/pci/Kconfig | 280 +- sound/pci/ac97/Makefile | 7 +- sound/pci/ac97/ac97_codec.c | 127 +- sound/pci/ac97/ac97_id.h | 3 - sound/pci/ac97/ac97_local.h | 7 - sound/pci/ac97/ac97_patch.c | 157 +- sound/pci/ac97/ac97_patch.h | 1 - sound/pci/ac97/ac97_pcm.c | 158 +- sound/pci/ac97/ac97_proc.c | 6 +- sound/pci/ali5451/ali5451.c | 18 +- sound/pci/als4000.c | 16 +- sound/pci/atiixp.c | 26 +- sound/pci/atiixp_modem.c | 18 +- sound/pci/au88x0/au88x0.c | 13 +- sound/pci/au88x0/au88x0.h | 2 +- sound/pci/au88x0/au88x0_core.c | 28 +- sound/pci/au88x0/au88x0_eq.c | 76 +- sound/pci/au88x0/au88x0_pcm.c | 9 - sound/pci/azt3328.c | 24 +- sound/pci/bt87x.c | 39 +- sound/pci/cmipci.c | 53 +- sound/pci/cs4281.c | 70 +- sound/pci/cs46xx/cs46xx.c | 13 +- sound/pci/cs46xx/cs46xx_lib.c | 157 +- sound/pci/cs46xx/dsp_spos.c | 14 +- sound/pci/cs46xx/dsp_spos_scb_lib.c | 4 +- sound/pci/emu10k1/emu10k1.c | 19 +- sound/pci/emu10k1/emu10k1_main.c | 7 +- sound/pci/emu10k1/emufx.c | 42 +- sound/pci/emu10k1/emupcm.c | 11 +- sound/pci/emu10k1/emuproc.c | 30 +- sound/pci/ens1370.c | 57 +- sound/pci/es1938.c | 15 +- sound/pci/es1968.c | 97 +- sound/pci/fm801.c | 30 +- sound/pci/ice1712/Makefile | 2 +- sound/pci/ice1712/aureon.c | 762 +-- sound/pci/ice1712/aureon.h | 5 - sound/pci/ice1712/delta.c | 13 - sound/pci/ice1712/delta.h | 4 +- sound/pci/ice1712/ews.c | 59 +- sound/pci/ice1712/hoontech.c | 164 +- sound/pci/ice1712/ice1712.c | 78 +- sound/pci/ice1712/ice1712.h | 24 +- sound/pci/ice1712/ice1724.c | 18 +- sound/pci/ice1712/prodigy192.c | 524 -- sound/pci/ice1712/prodigy192.h | 11 - sound/pci/ice1712/stac946x.h | 25 - sound/pci/intel8x0.c | 343 +- sound/pci/intel8x0m.c | 57 +- sound/pci/korg1212/korg1212.c | 166 +- sound/pci/maestro3.c | 53 +- sound/pci/mixart/mixart.c | 20 +- sound/pci/mixart/mixart.h | 2 +- sound/pci/nm256/nm256.c | 121 +- sound/pci/rme32.c | 44 +- sound/pci/rme96.c | 22 +- sound/pci/rme9652/hdsp.c | 262 +- sound/pci/rme9652/rme9652.c | 20 +- sound/pci/sonicvibes.c | 21 +- sound/pci/trident/trident.c | 11 +- sound/pci/trident/trident_main.c | 20 +- sound/pci/via82xx.c | 55 +- sound/pci/vx222/vx222.c | 20 +- sound/pci/ymfpci/ymfpci.c | 15 +- sound/pci/ymfpci/ymfpci_main.c | 14 +- sound/pcmcia/Kconfig | 18 +- sound/pcmcia/pdaudiocf/pdaudiocf.c | 9 +- sound/pcmcia/vx/vxpocket.c | 11 +- sound/ppc/Kconfig | 5 - sound/ppc/daca.c | 24 +- sound/ppc/pmac.c | 40 +- sound/ppc/pmac.h | 12 +- sound/ppc/tumbler.c | 47 +- sound/sparc/amd7930.c | 7 +- sound/sparc/cs4231.c | 11 +- sound/usb/Kconfig | 13 +- sound/usb/usbaudio.c | 120 +- sound/usb/usbaudio.h | 5 +- sound/usb/usbmidi.c | 6 +- sound/usb/usbmixer_maps.c | 9 - sound/usb/usbquirks.h | 67 +- sound/usb/usx2y/usbusx2y.c | 17 +- sound/usb/usx2y/usbusx2yaudio.c | 36 +- usr/Makefile | 18 +- usr/gen_init_cpio.c | 242 +- usr/initramfs_list | 5 - 5360 files changed, 195201 insertions(+), 279078 deletions(-) delete mode 100644 Documentation/DocBook/librs.tmpl create mode 100644 Documentation/DocBook/mousedrivers.tmpl delete mode 100644 Documentation/DocBook/mtdnand.tmpl delete mode 100644 Documentation/arm/Samsung-S3C24XX/Suspend.txt delete mode 100644 Documentation/cdrom/packet-writing.txt delete mode 100644 Documentation/ckrm/numtasks delete mode 100644 Documentation/cpu-freq/cpufreq-nforce2.txt create mode 100644 Documentation/digiboard.txt delete mode 100644 Documentation/dvb/README.dibusb create mode 100644 Documentation/dvb/firmware.txt delete mode 100644 Documentation/dvb/get_dvb_firmware delete mode 100644 Documentation/dvb/udev.txt delete mode 100644 Documentation/i2c/i2c-stub delete mode 100644 Documentation/ia64/serial.txt delete mode 100644 Documentation/ibm-acpi.txt delete mode 100644 Documentation/ioctl/cdrom.txt delete mode 100644 Documentation/ioctl/hdio.txt create mode 100644 Documentation/isdn/README.eicon delete mode 100644 Documentation/kdump.txt delete mode 100644 Documentation/keys.txt create mode 100644 Documentation/mkdev.ida delete mode 100644 Documentation/networking/proc_net_tcp.txt delete mode 100644 Documentation/power/kernel_threads.txt delete mode 100644 Documentation/power/video_extension.txt delete mode 100644 Documentation/prio_tree.txt delete mode 100644 Documentation/s390/monreader.txt delete mode 100644 Documentation/seclvl.txt create mode 100644 Documentation/sound/oss/ChangeLog.awe create mode 100644 Documentation/sound/oss/ChangeLog.multisound delete mode 100644 Documentation/stable_api_nonsense.txt delete mode 100644 Documentation/usb/gadget_serial.txt create mode 100644 arch/arm/boot/compressed/hw-bse.c delete mode 100644 arch/arm/common/icst307.c delete mode 100644 arch/arm/common/rtctime.c create mode 100644 arch/arm/configs/adsbitsy_defconfig create mode 100644 arch/arm/configs/brutus_defconfig create mode 100644 arch/arm/configs/empeg_defconfig create mode 100644 arch/arm/configs/flexanet_defconfig create mode 100644 arch/arm/configs/freebird_defconfig create mode 100644 arch/arm/configs/freebird_new_defconfig create mode 100644 arch/arm/configs/graphicsclient_defconfig create mode 100644 arch/arm/configs/graphicsmaster_defconfig create mode 100644 arch/arm/configs/huw_webpanel_defconfig create mode 100644 arch/arm/configs/pangolin_defconfig create mode 100644 arch/arm/configs/pfs168_mqtft_defconfig create mode 100644 arch/arm/configs/pfs168_mqvga_defconfig create mode 100644 arch/arm/configs/pfs168_sastn_defconfig create mode 100644 arch/arm/configs/pfs168_satft_defconfig create mode 100644 arch/arm/configs/sherman_defconfig delete mode 100644 arch/arm/configs/simpad_defconfig create mode 100644 arch/arm/configs/stork_defconfig create mode 100644 arch/arm/configs/system3_defconfig create mode 100644 arch/arm/configs/trizeps_defconfig create mode 100644 arch/arm/defconfig create mode 100644 arch/arm/lib/io-readsl-armv3.S create mode 100644 arch/arm/lib/io-readsl-armv4.S delete mode 100644 arch/arm/lib/io-readsl.S delete mode 100644 arch/arm/mach-clps711x/Makefile.boot delete mode 100644 arch/arm/mach-clps711x/common.h delete mode 100644 arch/arm/mach-clps7500/Makefile.boot delete mode 100644 arch/arm/mach-ebsa110/Makefile.boot delete mode 100644 arch/arm/mach-epxa10db/Makefile.boot delete mode 100644 arch/arm/mach-footbridge/Makefile.boot create mode 100644 arch/arm/mach-footbridge/arch.c delete mode 100644 arch/arm/mach-footbridge/co285.c delete mode 100644 arch/arm/mach-footbridge/common.h delete mode 100644 arch/arm/mach-footbridge/dc21285-timer.c delete mode 100644 arch/arm/mach-footbridge/ebsa285.c create mode 100644 arch/arm/mach-footbridge/irq.c delete mode 100644 arch/arm/mach-footbridge/isa-timer.c delete mode 100644 arch/arm/mach-footbridge/isa.c rename arch/arm/mach-footbridge/{common.c => mm.c} (56%) delete mode 100644 arch/arm/mach-footbridge/personal.c delete mode 100644 arch/arm/mach-h720x/Makefile.boot delete mode 100644 arch/arm/mach-h720x/common.h delete mode 100644 arch/arm/mach-imx/Makefile.boot delete mode 100644 arch/arm/mach-integrator/Makefile.boot delete mode 100644 arch/arm/mach-integrator/common.h delete mode 100644 arch/arm/mach-iop3xx/Makefile.boot create mode 100644 arch/arm/mach-iop3xx/arch.c create mode 100644 arch/arm/mach-iop3xx/iop321-mm.c create mode 100644 arch/arm/mach-iop3xx/iop331-mm.c create mode 100644 arch/arm/mach-iop3xx/mm-321.c delete mode 100644 arch/arm/mach-ixp2000/Makefile.boot delete mode 100644 arch/arm/mach-ixp4xx/Makefile.boot delete mode 100644 arch/arm/mach-ixp4xx/ixdpg425-pci.c delete mode 100644 arch/arm/mach-l7200/Makefile.boot delete mode 100644 arch/arm/mach-lh7a40x/Makefile.boot delete mode 100644 arch/arm/mach-lh7a40x/common.h delete mode 100644 arch/arm/mach-omap/Makefile.boot delete mode 100644 arch/arm/mach-omap/clock.c delete mode 100644 arch/arm/mach-omap/clock.h create mode 100644 arch/arm/mach-omap/clocks.c delete mode 100644 arch/arm/mach-omap/pm.c delete mode 100644 arch/arm/mach-omap/sleep.S delete mode 100644 arch/arm/mach-pxa/Makefile.boot delete mode 100644 arch/arm/mach-pxa/ssp.c delete mode 100644 arch/arm/mach-rpc/Makefile.boot delete mode 100644 arch/arm/mach-s3c2410/Makefile.boot delete mode 100644 arch/arm/mach-s3c2410/mach-rx3715.c delete mode 100644 arch/arm/mach-s3c2410/pm.c delete mode 100644 arch/arm/mach-s3c2410/pm.h delete mode 100644 arch/arm/mach-s3c2410/sleep.S delete mode 100644 arch/arm/mach-sa1100/Makefile.boot create mode 100644 arch/arm/mach-sa1100/adsbitsy.c create mode 100644 arch/arm/mach-sa1100/brutus.c create mode 100644 arch/arm/mach-sa1100/empeg.c create mode 100644 arch/arm/mach-sa1100/flexanet.c create mode 100644 arch/arm/mach-sa1100/freebird.c create mode 100644 arch/arm/mach-sa1100/graphicsclient.c create mode 100644 arch/arm/mach-sa1100/graphicsmaster.c create mode 100644 arch/arm/mach-sa1100/huw_webpanel.c create mode 100644 arch/arm/mach-sa1100/itsy.c create mode 100644 arch/arm/mach-sa1100/leds-adsbitsy.c create mode 100644 arch/arm/mach-sa1100/leds-brutus.c create mode 100644 arch/arm/mach-sa1100/leds-flexanet.c create mode 100644 arch/arm/mach-sa1100/leds-graphicsclient.c create mode 100644 arch/arm/mach-sa1100/leds-graphicsmaster.c create mode 100644 arch/arm/mach-sa1100/leds-pfs168.c create mode 100644 arch/arm/mach-sa1100/leds-system3.c create mode 100644 arch/arm/mach-sa1100/nanoengine.c create mode 100644 arch/arm/mach-sa1100/omnimeter.c create mode 100644 arch/arm/mach-sa1100/pangolin.c create mode 100644 arch/arm/mach-sa1100/pfs168.c create mode 100644 arch/arm/mach-sa1100/sherman.c create mode 100644 arch/arm/mach-sa1100/stork.c create mode 100644 arch/arm/mach-sa1100/system3.c create mode 100644 arch/arm/mach-sa1100/trizeps.c create mode 100644 arch/arm/mach-sa1100/xp860.c create mode 100644 arch/arm/mach-sa1100/yopy.c delete mode 100644 arch/arm/mach-shark/Makefile.boot delete mode 100644 arch/arm/mach-versatile/Kconfig delete mode 100644 arch/arm/mach-versatile/Makefile.boot delete mode 100644 arch/arm/mach-versatile/core.h delete mode 100644 arch/arm/mach-versatile/versatile_pb.c rename drivers/net/cris/eth_v10.c => arch/cris/arch-v10/drivers/ethernet.c (85%) rename drivers/ide/cris/ide-v10.c => arch/cris/arch-v10/drivers/ide.c (85%) rename drivers/serial/crisv10.c => arch/cris/arch-v10/drivers/serial.c (97%) rename drivers/serial/crisv10.h => arch/cris/arch-v10/drivers/serial.h (99%) delete mode 100644 arch/cris/arch-v10/kernel/crisksyms.c create mode 100644 arch/h8300/platform/h8300h/aki3068net/ram.ld create mode 100644 arch/h8300/platform/h8300h/generic/ram.ld create mode 100644 arch/h8300/platform/h8300h/generic/rom.ld create mode 100644 arch/h8300/platform/h8300h/h8max/ram.ld create mode 100644 arch/h8300/platform/h8s/edosk2674/ram.ld create mode 100644 arch/h8300/platform/h8s/edosk2674/rom.ld create mode 100644 arch/h8300/platform/h8s/generic/ram.ld create mode 100644 arch/h8300/platform/h8s/generic/rom.ld delete mode 100644 arch/i386/kernel/acpi/earlyquirk.c rename arch/i386/kernel/cpu/cpufreq/{acpi-cpufreq.c => acpi.c} (83%) delete mode 100644 arch/i386/kernel/cpu/cpufreq/cpufreq-nforce2.c delete mode 100644 arch/i386/kernel/crash_dump.c delete mode 100644 arch/i386/kernel/quirks.c create mode 100644 arch/i386/pci/changelog create mode 100644 arch/ia64/configs/generic_defconfig delete mode 100644 arch/ia64/kernel/domain.c delete mode 100644 arch/m32r/Kconfig.debug delete mode 100644 arch/m32r/m32700ut/dot.gdbinit_400MHz_32MB delete mode 100644 arch/m32r/mappi2/dot.gdbinit.vdec2 delete mode 100644 arch/m68k/configs/amiga_defconfig delete mode 100644 arch/m68k/configs/apollo_defconfig delete mode 100644 arch/m68k/configs/atari_defconfig delete mode 100644 arch/m68k/configs/bvme6000_defconfig delete mode 100644 arch/m68k/configs/hp300_defconfig delete mode 100644 arch/m68k/configs/mac_defconfig delete mode 100644 arch/m68k/configs/mvme147_defconfig delete mode 100644 arch/m68k/configs/mvme16x_defconfig delete mode 100644 arch/m68k/configs/q40_defconfig delete mode 100644 arch/m68k/configs/sun3_defconfig delete mode 100644 arch/m68k/configs/sun3x_defconfig delete mode 100644 arch/m68knommu/lib/delay.c delete mode 100644 arch/m68knommu/platform/5272/CANCam/crt0_ram.S delete mode 100644 arch/m68knommu/platform/5272/SCALES/crt0_ram.S delete mode 100644 arch/m68knommu/platform/527x/M5271EVB/crt0_ram.S delete mode 100644 arch/m68knommu/platform/527x/M5275EVB/crt0_ram.S delete mode 100644 arch/m68knommu/platform/527x/Makefile delete mode 100644 arch/m68knommu/platform/527x/config.c rename arch/m68knommu/platform/{528x/M5282EVB => 5282/MOTOROLA}/crt0_ram.S (96%) rename arch/m68knommu/platform/{528x => 5282}/Makefile (95%) rename arch/m68knommu/platform/{528x => 5282}/config.c (96%) rename arch/m68knommu/platform/{5307 => 5282}/pit.c (82%) rename arch/m68knommu/platform/{528x => 5282}/senTec/crt0_ram.S (98%) delete mode 100644 arch/mips/au1000/common/platform.c create mode 100644 arch/mips/baget/Makefile create mode 100644 arch/mips/baget/baget.c create mode 100644 arch/mips/baget/bagetIRQ.S create mode 100644 arch/mips/baget/balo.c create mode 100644 arch/mips/baget/balo_supp.S create mode 100644 arch/mips/baget/irq.c create mode 100644 arch/mips/baget/ld.script.balo create mode 100644 arch/mips/baget/print.c create mode 100644 arch/mips/baget/prom/Makefile create mode 100644 arch/mips/baget/prom/init.c create mode 100644 arch/mips/baget/reset.c create mode 100644 arch/mips/baget/setup.c create mode 100644 arch/mips/baget/time.c rename arch/mips/configs/{db1550_defconfig => bosporus_defconfig} (64%) rename arch/mips/configs/{ocelot_3_defconfig => mirage_defconfig} (59%) rename arch/{sh/configs/microdev_defconfig => mips/configs/mtx1_defconfig} (56%) create mode 100644 arch/mips/configs/pb1000_defconfig rename arch/{m32r/mappi2/defconfig.vdec2 => mips/configs/xxs1500_defconfig} (59%) create mode 100644 arch/mips/ddb5xxx/common/irq.c create mode 100644 arch/mips/hp-lj/Makefile create mode 100644 arch/mips/hp-lj/asic.c create mode 100644 arch/mips/hp-lj/gdb_hook.c create mode 100644 arch/mips/hp-lj/init.c create mode 100644 arch/mips/hp-lj/int-handler.S create mode 100644 arch/mips/hp-lj/irq.c create mode 100644 arch/mips/hp-lj/setup.c create mode 100644 arch/mips/hp-lj/utils.c create mode 100644 arch/mips/hp-lj/utils.h delete mode 100644 arch/mips/kernel/irq-msc01.c delete mode 100644 arch/mips/mm/tlbex.c delete mode 100644 arch/mips/mm/tlbex32-mips32.S create mode 100644 arch/mips/mm/tlbex64-r4k.S delete mode 100644 arch/mips/momentum/ocelot_3/Makefile delete mode 100644 arch/mips/momentum/ocelot_3/int-handler.S delete mode 100644 arch/mips/momentum/ocelot_3/irq.c delete mode 100644 arch/mips/momentum/ocelot_3/ocelot_3_fpga.h delete mode 100644 arch/mips/momentum/ocelot_3/prom.c delete mode 100644 arch/mips/momentum/ocelot_3/reset.c delete mode 100644 arch/mips/momentum/ocelot_3/setup.c create mode 100644 arch/mips/pci/fixup-lasat.c delete mode 100644 arch/mips/pci/fixup-ocelot3.c create mode 100644 arch/mips/pci/pci-hplj.c create mode 100644 arch/mips/ramdisk/Makefile create mode 100644 arch/mips/ramdisk/ld.script delete mode 100644 arch/parisc/install.sh create mode 100644 arch/parisc/kernel/head64.S delete mode 100644 arch/parisc/kernel/topology.c delete mode 100644 arch/parisc/lib/fixup.S delete mode 100644 arch/parisc/lib/memcpy.c create mode 100644 arch/ppc/8xx_io/uart.c delete mode 100644 arch/ppc/platforms/4xx/virtex-ii_pro.c delete mode 100644 arch/ppc/platforms/4xx/virtex-ii_pro.h delete mode 100644 arch/ppc/platforms/4xx/xilinx_ml300.c delete mode 100644 arch/ppc/platforms/4xx/xilinx_ml300.h delete mode 100644 arch/ppc/platforms/4xx/xparameters/xparameters_ml300.h delete mode 100644 arch/ppc/syslib/gen550.h delete mode 100644 arch/ppc/syslib/xilinx_pic.c delete mode 100644 arch/ppc64/configs/maple_defconfig create mode 100644 arch/ppc64/kernel/iSeries_IoMmTable.c create mode 100644 arch/ppc64/kernel/iSeries_IoMmTable.h delete mode 100644 arch/ppc64/kernel/iSeries_smp.c delete mode 100644 arch/ppc64/kernel/maple_pci.c delete mode 100644 arch/ppc64/kernel/maple_setup.c delete mode 100644 arch/ppc64/kernel/maple_time.c create mode 100644 arch/ppc64/kernel/mf_proc.c delete mode 100644 arch/ppc64/kernel/mpic.c delete mode 100644 arch/ppc64/kernel/mpic.h create mode 100644 arch/ppc64/kernel/open_pic.c create mode 100644 arch/ppc64/kernel/open_pic.h create mode 100644 arch/ppc64/kernel/open_pic_defs.h create mode 100644 arch/ppc64/kernel/open_pic_u3.c delete mode 100644 arch/ppc64/kernel/pSeries_smp.c delete mode 100644 arch/ppc64/lib/sstep.c delete mode 100644 arch/sh/boards/renesas/edosk7705/Makefile delete mode 100644 arch/sh/boards/renesas/edosk7705/io.c delete mode 100644 arch/sh/boards/renesas/edosk7705/setup.c delete mode 100644 arch/sh/boards/se/73180/Makefile delete mode 100644 arch/sh/boards/se/73180/io.c delete mode 100644 arch/sh/boards/se/73180/irq.c delete mode 100644 arch/sh/boards/se/73180/led.c delete mode 100644 arch/sh/boards/se/73180/setup.c delete mode 100644 arch/sh/boards/sh03/Makefile delete mode 100644 arch/sh/boards/sh03/led.c delete mode 100644 arch/sh/boards/sh03/rtc.c delete mode 100644 arch/sh/boards/sh03/setup.c delete mode 100644 arch/sh/boards/superh/microdev/Makefile delete mode 100644 arch/sh/boards/superh/microdev/io.c delete mode 100644 arch/sh/boards/superh/microdev/irq.c delete mode 100644 arch/sh/boards/superh/microdev/led.c delete mode 100644 arch/sh/boards/superh/microdev/setup.c delete mode 100644 arch/sh/configs/se73180_defconfig delete mode 100644 arch/sh/configs/se7705_defconfig delete mode 100644 arch/sh/configs/sh03_defconfig delete mode 100644 arch/sh/drivers/pci/fixups-sh03.c delete mode 100644 arch/sh/drivers/pci/ops-sh03.c delete mode 100644 arch/sh/kernel/asm-offsets.c delete mode 100644 arch/sh/kernel/cpu/sh2/probe.c delete mode 100644 arch/sh/kernel/cpu/sh3/probe.c delete mode 100644 arch/sh/kernel/cpu/sh4/probe.c delete mode 100644 arch/sh/lib/memcpy-sh4.S delete mode 100644 arch/sh/mm/cache-sh7705.c delete mode 100644 arch/sh/mm/pg-sh7705.c delete mode 100644 arch/sh/oprofile/op_model_sh7750.c delete mode 100644 arch/sh/tools/gen-mach-types create mode 100644 arch/sh/tools/machgen.sh delete mode 100644 arch/um/Makefile-x86_64 create mode 100644 arch/um/drivers/cow_kern.c delete mode 100644 arch/um/include/.cvsignore rename arch/um/{kernel/skas/include/mmu-skas.h => include/aio.h} (50%) create mode 100644 arch/um/include/filehandle.h create mode 100644 arch/um/include/skas_ptregs.h delete mode 100644 arch/um/include/sysdep-i386/.cvsignore delete mode 100644 arch/um/kernel/.cvsignore create mode 100644 arch/um/kernel/filehandle.c delete mode 100644 arch/um/kernel/skas/include/mode-skas.h delete mode 100644 arch/um/kernel/skas/include/mode_kern-skas.h delete mode 100644 arch/um/kernel/skas/include/uaccess-skas.h delete mode 100644 arch/um/kernel/skas/util/.cvsignore delete mode 100644 arch/um/kernel/tt/include/mmu-tt.h delete mode 100644 arch/um/kernel/tt/include/mode-tt.h delete mode 100644 arch/um/kernel/tt/include/mode_kern-tt.h delete mode 100644 arch/um/kernel/tt/include/uaccess-tt.h delete mode 100644 arch/um/kernel/user_syms.c create mode 100644 arch/um/kernel/vmlinux.lds.S create mode 100644 arch/um/os-Linux/aio.c create mode 100644 arch/um/sys-i386/bitops.c delete mode 100644 arch/um/sys-i386/extable.c create mode 100644 arch/um/sys-i386/semaphore.c delete mode 100644 arch/um/sys-i386/util/.cvsignore delete mode 100644 arch/um/util/.cvsignore delete mode 100644 arch/x86_64/kernel/genapic.c delete mode 100644 arch/x86_64/kernel/genapic_cluster.c delete mode 100644 arch/x86_64/kernel/genapic_flat.c delete mode 100644 arch/x86_64/kernel/kprobes.c delete mode 100644 configs/kernel-2.6.10-i686-planetlab.config delete mode 100644 configs/kernel-2.6.10-i686-uml-planetlab.config rename configs/{kernel-2.6.10-i586-smp.config => kernel-2.6.9-i586-smp.config} (91%) rename configs/{kernel-2.6.10-i586.config => kernel-2.6.9-i586.config} (92%) rename configs/{kernel-2.6.10-i686-smp.config => kernel-2.6.9-i686-smp.config} (91%) rename configs/{kernel-2.6.10-i686.config => kernel-2.6.9-i686.config} (92%) delete mode 100644 crypto/anubis.c create mode 100644 drivers/acpi/acpi_ksyms.c delete mode 100644 drivers/acpi/ibm_acpi.c delete mode 100644 drivers/acpi/video.c delete mode 100644 drivers/block/diskdump.c delete mode 100644 drivers/block/pktcdvd.c create mode 100644 drivers/char/README.computone create mode 100644 drivers/char/README.cyclomY create mode 100644 drivers/char/README.epca create mode 100644 drivers/char/README.scc delete mode 100644 drivers/char/ds1302.c delete mode 100644 drivers/char/mxser.h delete mode 100644 drivers/char/s3c2410-rtc.c delete mode 100644 drivers/char/watchdog/s3c2410_wdt.c delete mode 100644 drivers/dio/dio-driver.c delete mode 100644 drivers/dio/dio-sysfs.c delete mode 100644 drivers/i2c/busses/i2c-amd756-s4882.c delete mode 100644 drivers/i2c/busses/i2c-s3c2410.c delete mode 100644 drivers/i2c/busses/i2c-stub.c delete mode 100644 drivers/i2c/chips/adm1026.c delete mode 100644 drivers/i2c/chips/lm63.c delete mode 100644 drivers/i2c/chips/lm87.c delete mode 100644 drivers/i2c/chips/pc87360.c delete mode 100644 drivers/ide/cris/Makefile create mode 100644 drivers/ide/legacy/pdc4030.c create mode 100644 drivers/ide/legacy/pdc4030.h create mode 100644 drivers/ide/pci/hpt34x.h rename drivers/ide/pci/{it821x.c => it8212.c} (66%) delete mode 100644 drivers/ieee1394/.cvsignore delete mode 100644 drivers/md/.cvsignore delete mode 100644 drivers/md/faulty.c delete mode 100644 drivers/media/dvb/b2c2/b2c2-common.c delete mode 100644 drivers/media/dvb/b2c2/b2c2-usb-core.c delete mode 100644 drivers/media/dvb/bt8xx/dst.c delete mode 100644 drivers/media/dvb/bt8xx/dst.h delete mode 100644 drivers/media/dvb/cinergyT2/Kconfig delete mode 100644 drivers/media/dvb/cinergyT2/Makefile delete mode 100644 drivers/media/dvb/cinergyT2/cinergyT2.c delete mode 100644 drivers/media/dvb/dibusb/Kconfig delete mode 100644 drivers/media/dvb/dibusb/Makefile delete mode 100644 drivers/media/dvb/dibusb/dvb-dibusb.c delete mode 100644 drivers/media/dvb/dibusb/dvb-dibusb.h create mode 100644 drivers/media/dvb/dvb-core/Makefile.lib create mode 100644 drivers/media/dvb/dvb-core/dvb_functions.c create mode 100644 drivers/media/dvb/dvb-core/dvb_functions.h create mode 100644 drivers/media/dvb/dvb-core/dvb_i2c.c create mode 100644 drivers/media/dvb/dvb-core/dvb_i2c.h create mode 100644 drivers/media/dvb/dvb-core/dvb_ksyms.c create mode 100644 drivers/media/dvb/frontends/alps_tdlb7.c create mode 100644 drivers/media/dvb/frontends/alps_tdmb7.c delete mode 100644 drivers/media/dvb/frontends/at76c651.h delete mode 100644 drivers/media/dvb/frontends/cx22700.c delete mode 100644 drivers/media/dvb/frontends/cx22700.h delete mode 100644 drivers/media/dvb/frontends/cx22702.c delete mode 100644 drivers/media/dvb/frontends/cx22702.h delete mode 100644 drivers/media/dvb/frontends/cx24110.h delete mode 100644 drivers/media/dvb/frontends/dib3000-common.c delete mode 100644 drivers/media/dvb/frontends/dib3000-common.h delete mode 100644 drivers/media/dvb/frontends/dib3000.h delete mode 100644 drivers/media/dvb/frontends/dib3000mb.c delete mode 100644 drivers/media/dvb/frontends/dib3000mb_priv.h delete mode 100644 drivers/media/dvb/frontends/dib3000mc.c delete mode 100644 drivers/media/dvb/frontends/dib3000mc_priv.h rename drivers/media/dvb/{bt8xx/dst_priv.h => frontends/dst-bt878.h} (74%) create mode 100644 drivers/media/dvb/frontends/dst.c delete mode 100644 drivers/media/dvb/frontends/dvb_dummy_fe.h create mode 100644 drivers/media/dvb/frontends/grundig_29504-401.c create mode 100644 drivers/media/dvb/frontends/grundig_29504-491.c delete mode 100644 drivers/media/dvb/frontends/l64781.c delete mode 100644 drivers/media/dvb/frontends/l64781.h delete mode 100644 drivers/media/dvb/frontends/mt312_priv.h delete mode 100644 drivers/media/dvb/frontends/mt352.c delete mode 100644 drivers/media/dvb/frontends/mt352.h delete mode 100644 drivers/media/dvb/frontends/mt352_priv.h delete mode 100644 drivers/media/dvb/frontends/nxt6000_priv.h delete mode 100644 drivers/media/dvb/frontends/sp8870.c delete mode 100644 drivers/media/dvb/frontends/sp8870.h delete mode 100644 drivers/media/dvb/frontends/sp887x.h create mode 100644 drivers/media/dvb/frontends/sp887x_firm.h delete mode 100644 drivers/media/dvb/frontends/stv0297.c delete mode 100644 drivers/media/dvb/frontends/stv0297.h delete mode 100644 drivers/media/dvb/frontends/stv0299.h delete mode 100644 drivers/media/dvb/frontends/tda10021.c delete mode 100644 drivers/media/dvb/frontends/tda10021.h delete mode 100644 drivers/media/dvb/frontends/tda1004x.h delete mode 100644 drivers/media/dvb/frontends/tda8083.c delete mode 100644 drivers/media/dvb/frontends/tda8083.h delete mode 100644 drivers/media/dvb/frontends/tda80xx.c delete mode 100644 drivers/media/dvb/frontends/tda80xx.h delete mode 100644 drivers/media/dvb/frontends/ves1820.h delete mode 100644 drivers/media/dvb/frontends/ves1x93.h delete mode 100644 drivers/media/dvb/ttusb-dec/ttusbdecfe.c delete mode 100644 drivers/media/video/arv.c delete mode 100644 drivers/media/video/cx88/cx88-blackbird.c delete mode 100644 drivers/media/video/cx88/cx88-dvb.c delete mode 100644 drivers/media/video/cx88/cx88-mpeg.c delete mode 100644 drivers/media/video/saa7134/saa7134-dvb.c delete mode 100644 drivers/media/video/saa7134/saa7134-empress.c delete mode 100644 drivers/media/video/video-buf-dvb.c delete mode 100644 drivers/mmc/wbsd.c delete mode 100644 drivers/mmc/wbsd.h delete mode 100644 drivers/mtd/chips/fwh_lock.h delete mode 100644 drivers/mtd/maps/bast-flash.c create mode 100644 drivers/mtd/maps/integrator-flash-v24.c delete mode 100644 drivers/mtd/maps/ipaq-flash.c delete mode 100644 drivers/mtd/maps/ocotea.c delete mode 100644 drivers/mtd/maps/ts5500_flash.c create mode 100644 drivers/mtd/mtdblock.h delete mode 100644 drivers/mtd/nand/h1910.c delete mode 100644 drivers/mtd/nand/rtc_from4.c delete mode 100644 drivers/mtd/nand/s3c2410.c delete mode 100644 drivers/net/cris/Makefile create mode 100644 drivers/pci/hotplug/pciehp_sysfs.c delete mode 100644 drivers/pci/rom.c delete mode 100644 drivers/pcmcia/m32r_cfc.c delete mode 100644 drivers/pcmcia/m32r_cfc.h delete mode 100644 drivers/pcmcia/m32r_pcc.c delete mode 100644 drivers/pcmcia/m32r_pcc.h delete mode 100644 drivers/pcmcia/pcmcia_compat.c create mode 100644 drivers/pcmcia/sa1100_adsbitsy.c create mode 100644 drivers/pcmcia/sa1100_flexanet.c create mode 100644 drivers/pcmcia/sa1100_freebird.c create mode 100644 drivers/pcmcia/sa1100_graphicsclient.c create mode 100644 drivers/pcmcia/sa1100_graphicsmaster.c create mode 100644 drivers/pcmcia/sa1100_pangolin.c create mode 100644 drivers/pcmcia/sa1100_pfs168.c create mode 100644 drivers/pcmcia/sa1100_stork.c create mode 100644 drivers/pcmcia/sa1100_system3.c create mode 100644 drivers/pcmcia/sa1100_trizeps.c create mode 100644 drivers/pcmcia/sa1100_xp860.c create mode 100644 drivers/pcmcia/sa1100_yopy.c delete mode 100644 drivers/pnp/pnpacpi/Kconfig delete mode 100644 drivers/pnp/pnpacpi/Makefile delete mode 100644 drivers/pnp/pnpacpi/core.c delete mode 100644 drivers/pnp/pnpacpi/pnpacpi.h delete mode 100644 drivers/pnp/pnpacpi/rsparser.c delete mode 100644 drivers/s390/char/monreader.c delete mode 100644 drivers/s390/char/vmlogrdr.c delete mode 100644 drivers/s390/char/vmwatchdog.c delete mode 100644 drivers/scsi/aic7xxx/aic79xx_pci.h delete mode 100644 drivers/scsi/aic7xxx/aic7xxx_pci.h create mode 100644 drivers/scsi/dmx3191d.h rename drivers/scsi/{a100u2w.c => i60uscsi.c} (58%) rename drivers/scsi/{initio.c => i91uscsi.c} (82%) rename drivers/scsi/{initio.h => i91uscsi.h} (91%) create mode 100644 drivers/scsi/ini9100u.c create mode 100644 drivers/scsi/ini9100u.h create mode 100644 drivers/scsi/inia100.c rename drivers/scsi/{a100u2w.h => inia100.h} (81%) create mode 100644 drivers/scsi/lpfc/Makefile create mode 100644 drivers/scsi/lpfc/lpfc.h create mode 100644 drivers/scsi/lpfc/lpfc_compat.h create mode 100644 drivers/scsi/lpfc/lpfc_crtn.h create mode 100644 drivers/scsi/lpfc/lpfc_ct.c create mode 100644 drivers/scsi/lpfc/lpfc_disc.h create mode 100644 drivers/scsi/lpfc/lpfc_els.c create mode 100644 drivers/scsi/lpfc/lpfc_fcp.c create mode 100644 drivers/scsi/lpfc/lpfc_fcp.h create mode 100644 drivers/scsi/lpfc/lpfc_hbadisc.c create mode 100644 drivers/scsi/lpfc/lpfc_hw.h create mode 100644 drivers/scsi/lpfc/lpfc_init.c create mode 100644 drivers/scsi/lpfc/lpfc_logmsg.h create mode 100644 drivers/scsi/lpfc/lpfc_mbox.c create mode 100644 drivers/scsi/lpfc/lpfc_mem.c create mode 100644 drivers/scsi/lpfc/lpfc_mem.h create mode 100644 drivers/scsi/lpfc/lpfc_nportdisc.c create mode 100644 drivers/scsi/lpfc/lpfc_scsi.h create mode 100644 drivers/scsi/lpfc/lpfc_scsiport.c create mode 100644 drivers/scsi/lpfc/lpfc_sli.c create mode 100644 drivers/scsi/lpfc/lpfc_sli.h create mode 100644 drivers/scsi/lpfc/lpfc_version.h delete mode 100644 drivers/scsi/ql1040_fw.h create mode 100644 drivers/scsi/scsiiom.c delete mode 100644 drivers/serial/8250_early.c delete mode 100644 drivers/serial/8250_hp300.c delete mode 100644 drivers/serial/imx.c delete mode 100644 drivers/serial/m32r_sio.c delete mode 100644 drivers/serial/m32r_sio.h delete mode 100644 drivers/serial/m32r_sio_reg.h delete mode 100644 drivers/usb/host/hc_crisv10.c delete mode 100644 drivers/usb/host/hc_crisv10.h create mode 100644 drivers/usb/host/hc_simple.c create mode 100644 drivers/usb/host/hc_simple.h create mode 100644 drivers/usb/host/hc_sl811.c create mode 100644 drivers/usb/host/hc_sl811.h create mode 100644 drivers/usb/host/hc_sl811_rh.c delete mode 100644 drivers/usb/host/ohci-pxa27x.c delete mode 100644 drivers/usb/host/sl811-hcd.c delete mode 100644 drivers/usb/host/sl811.h delete mode 100644 drivers/usb/misc/phidgetkit.c create mode 100644 drivers/usb/misc/speedtch.c delete mode 100644 drivers/usb/serial/cypress_m8.c delete mode 100644 drivers/usb/serial/cypress_m8.h delete mode 100644 drivers/usb/serial/ipw.c delete mode 100644 drivers/video/console/bitblit.c delete mode 100644 drivers/video/console/tileblit.c delete mode 100644 drivers/video/intelfb/Makefile delete mode 100644 drivers/video/intelfb/intelfb.h delete mode 100644 drivers/video/intelfb/intelfbdrv.c delete mode 100644 drivers/video/intelfb/intelfbdrv.h delete mode 100644 drivers/video/intelfb/intelfbhw.c delete mode 100644 drivers/video/intelfb/intelfbhw.h delete mode 100644 drivers/video/logo/.cvsignore delete mode 100644 drivers/video/savage/Makefile delete mode 100644 drivers/video/savage/savagefb-i2c.c delete mode 100644 drivers/video/savage/savagefb.c delete mode 100644 drivers/video/savage/savagefb.h delete mode 100644 drivers/video/savage/savagefb_accel.c delete mode 100644 fs/cifs/readdir.c delete mode 100644 fs/hfs/attr.c create mode 100644 fs/hostfs/externfs.c create mode 100644 fs/hostfs/host_file.c create mode 100644 fs/hostfs/host_fs.c create mode 100644 fs/hostfs/humfs.c create mode 100644 fs/hostfs/meta_fs.c create mode 100644 fs/hostfs/metadata.h create mode 100644 fs/lockd/lockd_syms.c delete mode 100644 fs/ntfs/aops.h delete mode 100644 fs/ntfs/runlist.c delete mode 100644 fs/ntfs/runlist.h delete mode 100644 fs/proc/vmcore.c create mode 100644 include/asm-arm/arch-cl7500/serial.h create mode 100644 include/asm-arm/arch-ebsa110/serial.h create mode 100644 include/asm-arm/arch-ebsa285/serial.h create mode 100644 include/asm-arm/arch-epxa10db/serial.h create mode 100644 include/asm-arm/arch-h720x/serial.h rename drivers/media/dvb/ttusb-dec/ttusbdecfe.h => include/asm-arm/arch-imx/serial.h (51%) create mode 100644 include/asm-arm/arch-integrator/serial.h create mode 100644 include/asm-arm/arch-integrator/time.h create mode 100644 include/asm-arm/arch-iop3xx/serial.h create mode 100644 include/asm-arm/arch-ixp2000/serial.h create mode 100644 include/asm-arm/arch-ixp4xx/serial.h create mode 100644 include/asm-arm/arch-lh7a40x/serial.h delete mode 100644 include/asm-arm/arch-omap/cpu.h rename include/asm-arm/arch-omap/{omap16xx.h => omap1610.h} (54%) create mode 100644 include/asm-arm/arch-omap/omap5912.h create mode 100644 include/asm-arm/arch-omap/serial.h delete mode 100644 include/asm-arm/arch-omap/tc.h create mode 100644 include/asm-arm/arch-pxa/serial.h delete mode 100644 include/asm-arm/arch-pxa/ssp.h create mode 100644 include/asm-arm/arch-rpc/serial.h delete mode 100644 include/asm-arm/arch-s3c2410/bast-pmu.h delete mode 100644 include/asm-arm/arch-s3c2410/idle.h delete mode 100644 include/asm-arm/arch-s3c2410/iic.h create mode 100644 include/asm-arm/arch-s3c2410/serial.h create mode 100644 include/asm-arm/arch-sa1100/adsbitsy.h create mode 100644 include/asm-arm/arch-sa1100/flexanet.h create mode 100644 include/asm-arm/arch-sa1100/freebird.h create mode 100644 include/asm-arm/arch-sa1100/graphicsclient.h create mode 100644 include/asm-arm/arch-sa1100/graphicsmaster.h create mode 100644 include/asm-arm/arch-sa1100/huw_webpanel.h create mode 100644 include/asm-arm/arch-sa1100/itsy.h create mode 100644 include/asm-arm/arch-sa1100/mftb2.h create mode 100644 include/asm-arm/arch-sa1100/omnimeter.h create mode 100644 include/asm-arm/arch-sa1100/pangolin.h create mode 100644 include/asm-arm/arch-sa1100/pfs168.h create mode 100644 include/asm-arm/arch-sa1100/pleb.h create mode 100644 include/asm-arm/arch-sa1100/serial.h create mode 100644 include/asm-arm/arch-sa1100/stork.h create mode 100644 include/asm-arm/arch-sa1100/system3.h create mode 100644 include/asm-arm/arch-sa1100/trizeps.h create mode 100644 include/asm-arm/arch-sa1100/yopy.h create mode 100644 include/asm-arm/arch-shark/serial.h rename arch/arm/mach-versatile/versatile_ab.c => include/asm-arm/arch-versatile/serial.h (51%) delete mode 100644 include/asm-arm/hardware/icst307.h delete mode 100644 include/asm-arm/mach/irda.h delete mode 100644 include/asm-arm/rtc.h create mode 100644 include/asm-arm26/linux_logo.h delete mode 100644 include/asm-generic/crashdump.h delete mode 100644 include/asm-generic/diskdump.h create mode 100644 include/asm-h8300/linux_logo.h delete mode 100644 include/asm-i386/crash_dump.h delete mode 100644 include/asm-i386/crashdump.h delete mode 100644 include/asm-i386/diskdump.h delete mode 100644 include/asm-i386/pci-direct.h delete mode 100644 include/asm-ia64/crashdump.h delete mode 100644 include/asm-ia64/diskdump.h delete mode 100644 include/asm-m68k/hp300hw.h delete mode 100644 include/asm-m68knommu/m527xsim.h rename include/asm-m68knommu/{m528xsim.h => m5282sim.h} (82%) create mode 100644 include/asm-m68knommu/shglcore.h create mode 100644 include/asm-m68knommu/shglports.h create mode 100644 include/asm-mips/baget/baget.h create mode 100644 include/asm-mips/baget/vac.h create mode 100644 include/asm-mips/baget/vic.h delete mode 100644 include/asm-mips/compiler.h delete mode 100644 include/asm-mips/cpu-info.h delete mode 100644 include/asm-mips/dec/serial.h delete mode 100644 include/asm-mips/interrupt.h delete mode 100644 include/asm-mips/mach-ip22/spaces.h delete mode 100644 include/asm-mips/mach-ip32/spaces.h delete mode 100644 include/asm-mips/mach-mips/cpu-feature-overrides.h delete mode 100644 include/asm-mips/mach-ocelot3/cpu-feature-overrides.h delete mode 100644 include/asm-mips/mach-sibyte/cpu-feature-overrides.h delete mode 100644 include/asm-mips/msc01_ic.h create mode 100644 include/asm-mips/pci_channel.h delete mode 100644 include/asm-mips/tx4927/smsc_fdc37m81x.h create mode 100644 include/asm-parisc/som.h delete mode 100644 include/asm-ppc/diskdump.h delete mode 100644 include/asm-ppc/xparameters.h delete mode 100644 include/asm-ppc64/crashdump.h delete mode 100644 include/asm-ppc64/diskdump.h delete mode 100644 include/asm-ppc64/sstep.h delete mode 100644 include/asm-s390/diskdump.h delete mode 100644 include/asm-sh/edosk7705/io.h delete mode 100644 include/asm-sh/irq-sh73180.h delete mode 100644 include/asm-sh/microdev/io.h delete mode 100644 include/asm-sh/microdev/irq.h delete mode 100644 include/asm-sh/se73180/io.h delete mode 100644 include/asm-sh/se73180/se73180.h delete mode 100644 include/asm-sh/sh03/io.h delete mode 100644 include/asm-sh/sh03/sh03.h delete mode 100644 include/asm-um/cpumask.h delete mode 100644 include/asm-um/diskdump.h delete mode 100644 include/asm-um/init.h create mode 100644 include/asm-um/module.h delete mode 100644 include/asm-um/smplock.h delete mode 100644 include/asm-um/spinlock.h delete mode 100644 include/asm-x86_64/crashdump.h delete mode 100644 include/asm-x86_64/diskdump.h delete mode 100644 include/asm-x86_64/genapic.h delete mode 100644 include/asm-x86_64/ipi.h delete mode 100644 include/asm-x86_64/kprobes.h delete mode 100644 include/asm-x86_64/mach_apic.h rename include/linux/{ckrm_events.h => ckrm.h} (70%) delete mode 100644 include/linux/crash_dump.h delete mode 100644 include/linux/diskdump.h create mode 100644 include/linux/ghash.h delete mode 100644 include/linux/key-ui.h delete mode 100644 include/linux/key.h delete mode 100644 include/linux/keyctl.h delete mode 100644 include/linux/kfifo.h delete mode 100644 include/linux/kobject_uevent.h delete mode 100644 include/linux/netfilter_ipv4/ipt_CLUSTERIP.h delete mode 100644 include/linux/netfilter_ipv4/ipt_CONNMARK.h delete mode 100644 include/linux/netfilter_ipv4/ipt_connmark.h delete mode 100644 include/linux/netfilter_ipv4/ipt_hashlimit.h delete mode 100644 include/linux/nodemask.h delete mode 100644 include/linux/pktcdvd.h create mode 100644 include/linux/proc_mm.h delete mode 100644 include/linux/rslib.h delete mode 100644 include/linux/scatterlist.h delete mode 100644 include/linux/serial_8250.h delete mode 100644 include/linux/tc_act/tc_ipt.h delete mode 100644 include/linux/tc_act/tc_mirred.h delete mode 100644 include/linux/tc_act/tc_pedit.h delete mode 100644 include/linux/usb_sl811.h delete mode 100644 include/linux/via.h delete mode 100644 include/linux/vs_sched.h create mode 100644 include/linux/vserver.h delete mode 100644 include/linux/vserver/context_cmd.h delete mode 100644 include/linux/vserver/cvirt_cmd.h delete mode 100644 include/linux/vserver/cvirt_def.h delete mode 100644 include/linux/vserver/debug_cmd.h delete mode 100644 include/linux/vserver/limit_cmd.h delete mode 100644 include/linux/vserver/limit_def.h delete mode 100644 include/linux/vserver/network_cmd.h delete mode 100644 include/linux/vserver/sched_cmd.h delete mode 100644 include/linux/vserver/sched_def.h delete mode 100644 include/media/video-buf-dvb.h delete mode 100644 include/net/act_api.h delete mode 100644 include/net/sch_generic.h delete mode 100644 include/net/tc_act/tc_ipt.h delete mode 100644 include/net/tc_act/tc_mirred.h delete mode 100644 include/net/tc_act/tc_pedit.h delete mode 100644 include/net/x25device.h create mode 100644 include/pcmcia/ftl.h create mode 100644 include/pcmcia/memory.h delete mode 100644 kernel/ckrm/ckrm_events.c delete mode 100644 kernel/ckrm/ckrm_memcore.c delete mode 100644 kernel/ckrm/ckrm_memctlr.c delete mode 100644 kernel/ckrm/ckrm_null_class.c delete mode 100644 kernel/crash.c delete mode 100644 kernel/dump.c delete mode 100644 kernel/irq/Makefile delete mode 100644 kernel/irq/autoprobe.c delete mode 100644 kernel/irq/handle.c delete mode 100644 kernel/irq/internals.h delete mode 100644 kernel/irq/manage.c delete mode 100644 kernel/irq/proc.c delete mode 100644 kernel/irq/spurious.c delete mode 100644 kernel/kfifo.c delete mode 100644 kernel/ksysfs.c delete mode 100644 kernel/sys_ni.c delete mode 100644 kernel/vserver/cvirt_init.h delete mode 100644 kernel/vserver/cvirt_proc.h delete mode 100644 kernel/vserver/limit_init.h delete mode 100644 kernel/vserver/limit_proc.h delete mode 100644 kernel/vserver/sched_init.h delete mode 100644 kernel/vserver/sched_proc.h delete mode 100644 kernel/wait.c delete mode 100644 lib/kernel_lock.c delete mode 100644 lib/kobject_uevent.c delete mode 100644 lib/reed_solomon/Makefile delete mode 100644 lib/reed_solomon/decode_rs.c delete mode 100644 lib/reed_solomon/encode_rs.c delete mode 100644 lib/reed_solomon/reed_solomon.c delete mode 100644 net/appletalk/dev.c delete mode 100644 net/ipv4/netfilter/ipt_CLUSTERIP.c delete mode 100644 net/ipv4/netfilter/ipt_CONNMARK.c delete mode 100644 net/ipv4/netfilter/ipt_connmark.c delete mode 100644 net/ipv4/netfilter/ipt_hashlimit.c delete mode 100644 net/sched/ipt.c delete mode 100644 net/sched/mirred.c delete mode 100644 net/sched/pedit.c delete mode 100644 scripts/gen_initramfs_list.sh delete mode 100644 security/keys/Makefile delete mode 100644 security/keys/compat.c delete mode 100644 security/keys/internal.h delete mode 100644 security/keys/key.c delete mode 100644 security/keys/keyctl.c delete mode 100644 security/keys/keyring.c delete mode 100644 security/keys/proc.c delete mode 100644 security/keys/process_keys.c delete mode 100644 security/keys/request_key.c delete mode 100644 security/keys/user_defined.c delete mode 100644 security/seclvl.c delete mode 100644 sound/pci/ice1712/prodigy192.c delete mode 100644 sound/pci/ice1712/prodigy192.h delete mode 100644 sound/pci/ice1712/stac946x.h delete mode 100644 usr/initramfs_list diff --git a/.cvsignore b/.cvsignore index c150355e6..5e7d07457 100644 --- a/.cvsignore +++ b/.cvsignore @@ -11,4 +11,3 @@ Module.symvers System.map vmlinux -linux diff --git a/CREDITS b/CREDITS index c0bdfc51a..22252bdf5 100644 --- a/CREDITS +++ b/CREDITS @@ -46,11 +46,13 @@ D: Various kernel patches S: United Kingdom N: Werner Almesberger -E: werner@almesberger.net -W: http://www.almesberger.net/ +E: werner.almesberger@epfl.ch D: dosfs, LILO, some fd features, ATM, various other hacks here and there -S: Buenos Aires -S: Argentina +S: Ecole Polytechnique Federale de Lausanne +S: DSC ICA +S: INN (Ecublens) +S: CH-1015 Lausanne +S: Switzerland N: Tim Alpaerts E: tim_alpaerts@toyota-motor-europe.com @@ -495,14 +497,6 @@ E: m@mbsks.franken.de D: REINER SCT cyberJack pinpad/e-com USB chipcard reader driver S: Germany -N: Adrian Bunk -E: bunk@stusta.de -P: 1024D/4F12B400 B29C E71E FE19 6755 5C8A 84D4 99FC EA98 4F12 B400 -D: misc kernel hacking and testing -S: Grasmeierstrasse 11 -S: 80805 Muenchen -S: Germany - N: Ray Burr E: ryb@nightmare.com D: Original author of Amiga FFS filesystem @@ -1893,7 +1887,7 @@ D: Early protocol filter for bridging code D: Bug fixes N: Paul Laufer -E: paul@laufernet.com +E: pelaufer@csupomona.edu D: Soundblaster driver fixes, ISAPnP quirk S: California, USA @@ -2770,7 +2764,7 @@ N: Luca Risolia E: luca.risolia@studio.unibo.it P: 1024D/FCE635A4 88E8 F32F 7244 68BA 3958 5D40 99DA 5D2A FCE6 35A4 D: V4L driver for W996[87]CF JPEG USB Dual Mode Camera Chips -D: V4L2 driver for SN9C10x PC Camera Controllers +D: V4L2 driver for SN9C10[12] PC Camera Controllers S: Via Liberta' 41/A S: Osio Sotto, 24046, Bergamo S: Italy diff --git a/Documentation/00-INDEX b/Documentation/00-INDEX index a8c19aa34..008c5471f 100644 --- a/Documentation/00-INDEX +++ b/Documentation/00-INDEX @@ -20,8 +20,6 @@ Changes - list of changes that break older software packages. CodingStyle - how the boss likes the C code in the kernel to look. -DMA-API.txt - - DMA API, pci_ API & extensions for non-consistent memory machines. DMA-mapping.txt - info for PCI drivers using DMA portably across all platforms. DocBook/ @@ -32,12 +30,8 @@ IPMI.txt - info on Linux Intelligent Platform Management Interface (IPMI) Driver. IRQ-affinity.txt - how to select which CPU(s) handle which interrupt events on SMP. -ManagementStyle - - how to (attempt to) manage kernel hackers. MSI-HOWTO.txt - the Message Signaled Interrupts (MSI) Driver Guide HOWTO and FAQ. -RCU/ - - directory with info on RCU (read-copy update). README.DAC960 - info on Mylex DAC960/DAC1100 PCI RAID Controller Driver for Linux. README.moxa @@ -52,6 +46,8 @@ VGA-softcursor.txt - how to change your VGA cursor from a blinking underscore. arm/ - directory with info about Linux on the ARM architecture. +as-iosched.txt + - info on anticipatory IO scheduler. basic_profiling.txt - basic instructions for those who wants to profile Linux kernel. binfmt_misc.txt @@ -64,24 +60,20 @@ cciss.txt - info, major/minor #'s for Compaq's SMART Array Controllers. cdrom/ - directory with information on the CD-ROM drivers that Linux has. -cli-sti-removal.txt - - cli()/sti() removal guide. computone.txt - info on Computone Intelliport II/Plus Multiport Serial Driver. cpqarray.txt - info on using Compaq's SMART2 Intelligent Disk Array Controllers. -cpu-freq/ +cpufreq/ - info on CPU frequency and voltage scaling. cris/ - directory with info about Linux on CRIS architecture. -crypto/ - - directory with info on the Crypto API. debugging-modules.txt - some notes on debugging modules after Linux 2.6.3. -device-mapper/ - - directory with info on Device Mapper. devices.txt - plain ASCII listing of all the nodes in /dev/ with major minor #'s. +digiboard.txt + - info on the Digiboard PC/X{i,e,eve} multiport boards. digiepca.txt - info on Digi Intl. {PC,PCI,EISA}Xx and Xem series cards. dnotify.txt @@ -100,8 +92,6 @@ fb/ - directory with info on the frame buffer graphics abstraction layer. filesystems/ - directory with info on the various filesystems that Linux supports. -firmware_class/ - - request_firmware() hotplug interface info. floppy.txt - notes and driver options for the floppy disk driver. ftape.txt @@ -110,14 +100,10 @@ hayes-esp.txt - info on using the Hayes ESP serial driver. highuid.txt - notes on the change from 16 bit to 32 bit user/group IDs. -hpet.txt - - High Precision Event Timer Driver for Linux. hw_random.txt - info on Linux support for random number generator in i8xx chipsets. i2c/ - directory with info about the I2C bus/protocol (2 wire, kHz speed). -i2o/ - - directory with info about the Linux I2O subsystem. i386/ - directory with info about Linux on Intel 32 bit architecture. ia64/ @@ -128,8 +114,6 @@ initrd.txt - how to use the RAM disk as an initial/temporary root filesystem. input/ - info on Linux input device support. -io_ordering.txt - - info on ordering I/O writes to memory-mapped addresses. ioctl-number.txt - how to implement and register device/driver ioctl calls. iostats.txt @@ -150,8 +134,6 @@ kernel-parameters.txt - summary listing of command line / boot prompt args for the kernel. kobject.txt - info of the kobject infrastructure of the Linux kernel. -laptop-mode.txt - - How to conserve battery power using laptop-mode. ldm.txt - a brief description of LDM (Windows Dynamic Disks). locks.txt @@ -176,8 +158,8 @@ mips/ - directory with info about Linux on MIPS architecture. mkdev.cciss - script to make /dev entries for SMART controllers (see cciss.txt). -mono.txt - - how to execute Mono-based .NET binaries with the help of BINFMT_MISC. +mkdev.ida + - script to make /dev entries for Intelligent Disk Array Controllers. moxa-smartio - info on installing/using Moxa multiport serial driver. mtrr.txt @@ -190,8 +172,6 @@ nfsroot.txt - short guide on setting up a diskless box with NFS root filesystem. nmi_watchdog.txt - info on NMI watchdog for SMP systems. -numastat.txt - - info on how to read Numa policy hit/miss statistics in sysfs. oops-tracing.txt - how to decode those nasty internal kernel error dump messages. paride.txt @@ -219,25 +199,17 @@ ramdisk.txt riscom8.txt - notes on using the RISCom/8 multi-port serial driver. rocket.txt - - info on the Comtrol RocketPort multiport serial driver. + - info on installing/using the Comtrol RocketPort multiport serial driver. rpc-cache.txt - introduction to the caching mechanisms in the sunrpc layer. rtc.txt - notes on how to use the Real Time Clock (aka CMOS clock) driver. s390/ - directory with info on using Linux on the IBM S390. -sched-coding.txt - - reference for various scheduler-related methods in the O(1) scheduler. sched-design.txt - goals, design and implementation of the Linux O(1) scheduler. -sched-domains.txt - - information on scheduling domains. -sched-stats.txt - - information on schedstats (Linux Scheduler Statistics). scsi/ - directory with info on Linux scsi support. -serial/ - - directory with info on the low level serial API. serial-console.txt - how to set up Linux with a serial line console as the default. sgi-visws.txt @@ -270,24 +242,14 @@ sysrq.txt - info on the magic SysRq key. telephony/ - directory with info on telephony (e.g. voice over IP) support. -time_interpolators.txt - - info on time interpolators. -tipar.txt - - information about Parallel link cable for Texas Instruments handhelds. -tty.txt - - guide to the locking policies of the tty layer. unicode.txt - info on the Unicode character/font mapping used in Linux. -uml/ - - directory with infomation about User Mode Linux. usb/ - directory with info regarding the Universal Serial Bus. video4linux/ - directory with info regarding video/TV/radio cards and linux. vm/ - directory with info on the Linux vm code. -voyager.txt - - guide to running Linux on the Voyager architecture. watchdog/ - how to auto-reboot Linux if it has "fallen and can't get up". ;-) x86_64/ diff --git a/Documentation/DMA-API.txt b/Documentation/DMA-API.txt index 6ee3cd613..8787c4d09 100644 --- a/Documentation/DMA-API.txt +++ b/Documentation/DMA-API.txt @@ -160,7 +160,7 @@ pci_set_dma_mask(struct pci_device *dev, u64 mask) Checks to see if the mask is possible and updates the device parameters if it is. -Returns: 0 if successful and a negative error if not. +Returns: 1 if successful and 0 if not u64 dma_get_required_mask(struct device *dev) diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile index fc50b1073..9a23eab00 100644 --- a/Documentation/DocBook/Makefile +++ b/Documentation/DocBook/Makefile @@ -8,10 +8,10 @@ DOCBOOKS := wanbook.sgml z8530book.sgml mcabook.sgml videobook.sgml \ kernel-hacking.sgml kernel-locking.sgml via-audio.sgml \ - deviceiobook.sgml procfs-guide.sgml tulip-user.sgml \ - writing_usb_driver.sgml scsidrivers.sgml sis900.sgml \ - kernel-api.sgml journal-api.sgml lsm.sgml usb.sgml \ - gadget.sgml libata.sgml mtdnand.sgml librs.sgml + mousedrivers.sgml deviceiobook.sgml procfs-guide.sgml \ + tulip-user.sgml writing_usb_driver.sgml scsidrivers.sgml \ + sis900.sgml kernel-api.sgml journal-api.sgml lsm.sgml usb.sgml \ + gadget.sgml libata.sgml ### # The build process is as follows (targets): @@ -58,14 +58,14 @@ MAKEMAN = $(PERL) $(srctree)/scripts/makeman # The following rules are used to generate the .sgml documentation # required to generate the final targets. (ps, pdf, html). quiet_cmd_docproc = DOCPROC $@ - cmd_docproc = SRCTREE=$(srctree)/ $(DOCPROC) doc $< >$@ + cmd_docproc = $(DOCPROC) doc $< >$@ define rule_docproc set -e; \ $(if $($(quiet)cmd_$(1)),echo ' $($(quiet)cmd_$(1))';) \ $(cmd_$(1)); \ ( \ echo 'cmd_$@ := $(cmd_$(1))'; \ - echo $@: `SRCTREE=$(srctree) $(DOCPROC) depend $<`; \ + echo $@: `$(DOCPROC) depend $<`; \ ) > $(dir $@).$(notdir $@).cmd endef @@ -129,9 +129,6 @@ quiet_cmd_db2html = DB2HTML $@ # Rule to generate man files - output is placed in the man subdirectory %.9: %.sgml -ifneq ($(KBUILD_SRC),) - $(Q)mkdir -p $(objtree)/Documentation/DocBook/man -endif $(SPLITMAN) $< $(objtree)/Documentation/DocBook/man "$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)" $(MAKEMAN) convert $(objtree)/Documentation/DocBook/man $< diff --git a/Documentation/DocBook/deviceiobook.tmpl b/Documentation/DocBook/deviceiobook.tmpl index 0d1da8cbd..d3f418384 100644 --- a/Documentation/DocBook/deviceiobook.tmpl +++ b/Documentation/DocBook/deviceiobook.tmpl @@ -147,7 +147,8 @@ compiler is not permitted to reorder the I/O sequence. When the ordering can be compiler optimised, you can use __readb and friends to indicate the relaxed ordering. Use - this with care. + this with care. The rmb provides a read memory + barrier. The wmb provides a write memory barrier. @@ -158,113 +159,19 @@ asynchronously. A driver author must issue a read from the same device to ensure that writes have occurred in the specific cases the author cares. This kind of property cannot be hidden from driver - writers in the API. In some cases, the read used to flush the device - may be expected to fail (if the card is resetting, for example). In - that case, the read should be done from config space, which is - guaranteed to soft-fail if the card doesn't respond. - - - - The following is an example of flushing a write to a device when - the driver would like to ensure the write's effects are visible prior - to continuing execution. - - - -static inline void -qla1280_disable_intrs(struct scsi_qla_host *ha) -{ - struct device_reg *reg; - - reg = ha->iobase; - /* disable risc and host interrupts */ - WRT_REG_WORD(&reg->ictrl, 0); - /* - * The following read will ensure that the above write - * has been received by the device before we return from this - * function. - */ - RD_REG_WORD(&reg->ictrl); - ha->flags.ints_enabled = 0; -} - - - - In addition to write posting, on some large multiprocessing systems - (e.g. SGI Challenge, Origin and Altix machines) posted writes won't - be strongly ordered coming from different CPUs. Thus it's important - to properly protect parts of your driver that do memory-mapped writes - with locks and use the mmiowb to make sure they - arrive in the order intended. Issuing a regular readX - will also ensure write ordering, but should only be used - when the driver has to be sure that the write has actually arrived - at the device (not that it's simply ordered with respect to other - writes), since a full readX is a relatively - expensive operation. - - - - Generally, one should use mmiowb prior to - releasing a spinlock that protects regions using writeb - or similar functions that aren't surrounded by - readb calls, which will ensure ordering and flushing. The - following pseudocode illustrates what might occur if write ordering - isn't guaranteed via mmiowb or one of the - readX functions. - - - -CPU A: spin_lock_irqsave(&dev_lock, flags) -CPU A: ... -CPU A: writel(newval, ring_ptr); -CPU A: spin_unlock_irqrestore(&dev_lock, flags) - ... -CPU B: spin_lock_irqsave(&dev_lock, flags) -CPU B: writel(newval2, ring_ptr); -CPU B: ... -CPU B: spin_unlock_irqrestore(&dev_lock, flags) - - - - In the case above, newval2 could be written to ring_ptr before - newval. Fixing it is easy though: - - - -CPU A: spin_lock_irqsave(&dev_lock, flags) -CPU A: ... -CPU A: writel(newval, ring_ptr); -CPU A: mmiowb(); /* ensure no other writes beat us to the device */ -CPU A: spin_unlock_irqrestore(&dev_lock, flags) - ... -CPU B: spin_lock_irqsave(&dev_lock, flags) -CPU B: writel(newval2, ring_ptr); -CPU B: ... -CPU B: mmiowb(); -CPU B: spin_unlock_irqrestore(&dev_lock, flags) - - - - See tg3.c for a real world example of how to use mmiowb - + writers in the API. PCI ordering rules also guarantee that PIO read responses arrive - after any outstanding DMA writes from that bus, since for some devices + after any outstanding DMA writes on that bus, since for some devices the result of a readb call may signal to the driver that a DMA transaction is complete. In many cases, however, the driver may want to indicate that the next readb call has no relation to any previous DMA writes performed by the device. The driver can use readb_relaxed for these cases, although only - some platforms will honor the relaxed semantics. Using the relaxed - read functions will provide significant performance benefits on - platforms that support it. The qla2xxx driver provides examples - of how to use readX_relaxed. In many cases, - a majority of the driver's readX calls can - safely be converted to readX_relaxed calls, since - only a few will indicate or depend on DMA completion. + some platforms will honor the relaxed semantics. diff --git a/Documentation/DocBook/kernel-api.tmpl b/Documentation/DocBook/kernel-api.tmpl index ef66fdda1..5f11984a0 100644 --- a/Documentation/DocBook/kernel-api.tmpl +++ b/Documentation/DocBook/kernel-api.tmpl @@ -133,11 +133,6 @@ KAO --> Socket Filter !Enet/core/filter.c - Generic Network Statistics -!Iinclude/linux/gen_stats.h -!Enet/core/gen_stats.c -!Enet/core/gen_estimator.c - diff --git a/Documentation/DocBook/kernel-hacking.tmpl b/Documentation/DocBook/kernel-hacking.tmpl index 1e8219d85..cd1bc1574 100644 --- a/Documentation/DocBook/kernel-hacking.tmpl +++ b/Documentation/DocBook/kernel-hacking.tmpl @@ -888,7 +888,7 @@ printk(KERN_INFO "my ip: %d.%d.%d.%d\n", NIPQUAD(ipaddress)); The second class of atomic operations is atomic bit operations on a long, defined in - include/linux/bitops.h. These + include/asm/bitops.h. These operations generally take a pointer to the bit pattern, and a bit number: 0 is the least significant bit. set_bit(), clear_bit() diff --git a/Documentation/DocBook/libata.tmpl b/Documentation/DocBook/libata.tmpl index 92a405a0e..ac0d5fc0a 100644 --- a/Documentation/DocBook/libata.tmpl +++ b/Documentation/DocBook/libata.tmpl @@ -61,196 +61,6 @@ - - libata Driver API - - struct ata_port_operations - - -void (*port_disable) (struct ata_port *); - - - - Called from ata_bus_probe() and ata_bus_reset() error paths, - as well as when unregistering from the SCSI module (rmmod, hot - unplug). - - - -void (*dev_config) (struct ata_port *, struct ata_device *); - - - - Called after IDENTIFY [PACKET] DEVICE is issued to each device - found. Typically used to apply device-specific fixups prior to - issue of SET FEATURES - XFER MODE, and prior to operation. - - - -void (*set_piomode) (struct ata_port *, struct ata_device *); -void (*set_dmamode) (struct ata_port *, struct ata_device *); -void (*post_set_mode) (struct ata_port *ap); - - - - Hooks called prior to the issue of SET FEATURES - XFER MODE - command. dev->pio_mode is guaranteed to be valid when - ->set_piomode() is called, and dev->dma_mode is guaranteed to be - valid when ->set_dmamode() is called. ->post_set_mode() is - called unconditionally, after the SET FEATURES - XFER MODE - command completes successfully. - - - - ->set_piomode() is always called (if present), but - ->set_dma_mode() is only called if DMA is possible. - - - -void (*tf_load) (struct ata_port *ap, struct ata_taskfile *tf); -void (*tf_read) (struct ata_port *ap, struct ata_taskfile *tf); - - - - ->tf_load() is called to load the given taskfile into hardware - registers / DMA buffers. ->tf_read() is called to read the - hardware registers / DMA buffers, to obtain the current set of - taskfile register values. - - - -void (*exec_command)(struct ata_port *ap, struct ata_taskfile *tf); - - - - causes an ATA command, previously loaded with - ->tf_load(), to be initiated in hardware. - - - -u8 (*check_status)(struct ata_port *ap); -void (*dev_select)(struct ata_port *ap, unsigned int device); - - - - Reads the Status ATA shadow register from hardware. On some - hardware, this has the side effect of clearing the interrupt - condition. - - - -void (*dev_select)(struct ata_port *ap, unsigned int device); - - - - Issues the low-level hardware command(s) that causes one of N - hardware devices to be considered 'selected' (active and - available for use) on the ATA bus. - - - -void (*phy_reset) (struct ata_port *ap); - - - - The very first step in the probe phase. Actions vary depending - on the bus type, typically. After waking up the device and probing - for device presence (PATA and SATA), typically a soft reset - (SRST) will be performed. Drivers typically use the helper - functions ata_bus_reset() or sata_phy_reset() for this hook. - - - -void (*bmdma_setup) (struct ata_queued_cmd *qc); -void (*bmdma_start) (struct ata_queued_cmd *qc); - - - - When setting up an IDE BMDMA transaction, these hooks arm - (->bmdma_setup) and fire (->bmdma_start) the hardware's DMA - engine. - - - -void (*qc_prep) (struct ata_queued_cmd *qc); -int (*qc_issue) (struct ata_queued_cmd *qc); - - - - Higher-level hooks, these two hooks can potentially supercede - several of the above taskfile/DMA engine hooks. ->qc_prep is - called after the buffers have been DMA-mapped, and is typically - used to populate the hardware's DMA scatter-gather table. - Most drivers use the standard ata_qc_prep() helper function, but - more advanced drivers roll their own. - - - ->qc_issue is used to make a command active, once the hardware - and S/G tables have been prepared. IDE BMDMA drivers use the - helper function ata_qc_issue_prot() for taskfile protocol-based - dispatch. More advanced drivers roll their own ->qc_issue - implementation, using this as the "issue new ATA command to - hardware" hook. - - - -void (*eng_timeout) (struct ata_port *ap); - - - - This is a high level error handling function, called from the - error handling thread, when a command times out. - - - -irqreturn_t (*irq_handler)(int, void *, struct pt_regs *); -void (*irq_clear) (struct ata_port *); - - - - ->irq_handler is the interrupt handling routine registered with - the system, by libata. ->irq_clear is called during probe just - before the interrupt handler is registered, to be sure hardware - is quiet. - - - -u32 (*scr_read) (struct ata_port *ap, unsigned int sc_reg); -void (*scr_write) (struct ata_port *ap, unsigned int sc_reg, - u32 val); - - - - Read and write standard SATA phy registers. Currently only used - if ->phy_reset hook called the sata_phy_reset() helper function. - - - -int (*port_start) (struct ata_port *ap); -void (*port_stop) (struct ata_port *ap); -void (*host_stop) (struct ata_host_set *host_set); - - - - ->port_start() is called just after the data structures for each - port are initialized. Typically this is used to alloc per-port - DMA buffers / tables / rings, enable DMA engines, and similar - tasks. - - - ->host_stop() is called when the rmmod or hot unplug process - begins. The hook must stop all hardware interrupts, DMA - engines, etc. - - - ->port_stop() is called after ->host_stop(). It's sole function - is to release DMA/memory resources, now that they are no longer - actively being used. - - - - - libata Library !Edrivers/scsi/libata-core.c @@ -273,7 +83,7 @@ void (*host_stop) (struct ata_host_set *host_set); - sata_sil Internals + ata_sil Internals !Idrivers/scsi/sata_sil.c diff --git a/Documentation/DocBook/librs.tmpl b/Documentation/DocBook/librs.tmpl deleted file mode 100644 index be482c030..000000000 --- a/Documentation/DocBook/librs.tmpl +++ /dev/null @@ -1,287 +0,0 @@ - - - - - Reed-Solomon Library Programming Interface - - - - Thomas - Gleixner - -
- tglx@linutronix.de -
-
-
-
- - - 2004 - Thomas Gleixner - - - - - This documentation is free software; you can redistribute - it and/or modify it under the terms of the GNU General Public - License version 2 as published by the Free Software Foundation. - - - - This program 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 - - - - For more details see the file COPYING in the source - distribution of Linux. - - -
- - - - - Introduction - - The generic Reed-Solomon Library provides encoding, decoding - and error correction functions. - - - Reed-Solomon codes are used in communication and storage - applications to ensure data integrity. - - - This documentation is provided for developers who want to utilize - the functions provided by the library. - - - - - Known Bugs And Assumptions - - None. - - - - - Usage - - This chapter provides examples how to use the library. - - - Initializing - - The init function init_rs returns a pointer to a - rs decoder structure, which holds the necessary - information for encoding, decoding and error correction - with the given polynomial. It either uses an existing - matching decoder or creates a new one. On creation all - the lookup tables for fast en/decoding are created. - The function may take a while, so make sure not to - call it in critical code paths. - - -/* the Reed Solomon control structure */ -static struct rs_control *rs_decoder; - -/* Symbolsize is 10 (bits) - * Primitve polynomial is x^10+x^3+1 - * first consecutive root is 0 - * primitve element to generate roots = 1 - * generator polinomial degree (number of roots) = 6 - */ -rs_decoder = init_rs (10, 0x409, 0, 1, 6); - - - - Encoding - - The encoder calculates the Reed-Solomon code over - the given data length and stores the result in - the parity buffer. Note that the parity buffer must - be initialized before calling the encoder. - - - The expanded data can be inverted on the fly by - providing a non zero inversion mask. The expanded data is - XOR'ed with the mask. This is used e.g. for FLASH - ECC, where the all 0xFF is inverted to an all 0x00. - The Reed-Solomon code for all 0x00 is all 0x00. The - code is inverted before storing to FLASH so it is 0xFF - too. This prevent's that reading from an erased FLASH - results in ECC errors. - - - The databytes are expanded to the given symbol size - on the fly. There is no support for encoding continuous - bitstreams with a symbol size != 8 at the moment. If - it is necessary it should be not a big deal to implement - such functionality. - - -/* Parity buffer. Size = number of roots */ -uint16_t par[6]; -/* Initialize the parity buffer */ -memset(par, 0, sizeof(par)); -/* Encode 512 byte in data8. Store parity in buffer par */ -encode_rs8 (rs_decoder, data8, 512, par, 0); - - - - Decoding - - The decoder calculates the syndrome over - the given data length and the received parity symbols - and corrects errors in the data. - - - If a syndrome is available from a hardware decoder - then the syndrome calculation is skipped. - - - The correction of the data buffer can be suppressed - by providing a correction pattern buffer and an error - location buffer to the decoder. The decoder stores the - calculated error location and the correction bitmask - in the given buffers. This is useful for hardware - decoders which use a weird bit ordering scheme. - - - The databytes are expanded to the given symbol size - on the fly. There is no support for decoding continuous - bitstreams with a symbolsize != 8 at the moment. If - it is necessary it should be not a big deal to implement - such functionality. - - - - - Decoding with syndrome calculation, direct data correction - - -/* Parity buffer. Size = number of roots */ -uint16_t par[6]; -uint8_t data[512]; -int numerr; -/* Receive data */ -..... -/* Receive parity */ -..... -/* Decode 512 byte in data8.*/ -numerr = decode_rs8 (rs_decoder, data8, par, 512, NULL, 0, NULL, 0, NULL); - - - - - - Decoding with syndrome given by hardware decoder, direct data correction - - -/* Parity buffer. Size = number of roots */ -uint16_t par[6], syn[6]; -uint8_t data[512]; -int numerr; -/* Receive data */ -..... -/* Receive parity */ -..... -/* Get syndrome from hardware decoder */ -..... -/* Decode 512 byte in data8.*/ -numerr = decode_rs8 (rs_decoder, data8, par, 512, syn, 0, NULL, 0, NULL); - - - - - - Decoding with syndrome given by hardware decoder, no direct data correction. - - - Note: It's not necessary to give data and received parity to the decoder. - - -/* Parity buffer. Size = number of roots */ -uint16_t par[6], syn[6], corr[8]; -uint8_t data[512]; -int numerr, errpos[8]; -/* Receive data */ -..... -/* Receive parity */ -..... -/* Get syndrome from hardware decoder */ -..... -/* Decode 512 byte in data8.*/ -numerr = decode_rs8 (rs_decoder, NULL, NULL, 512, syn, 0, errpos, 0, corr); -for (i = 0; i < numerr; i++) { - do_error_correction_in_your_buffer(errpos[i], corr[i]); -} - - - - - Cleanup - - The function free_rs frees the allocated resources, - if the caller is the last user of the decoder. - - -/* Release resources */ -free_rs(rs_decoder); - - - - - - - Structures - - This chapter contains the autogenerated documentation of the structures which are - used in the Reed-Solomon Library and are relevant for a developer. - -!Iinclude/linux/rslib.h - - - - Public Functions Provided - - This chapter contains the autogenerated documentation of the Reed-Solomon functions - which are exported. - -!Elib/reed_solomon/reed_solomon.c - - - - Credits - - The library code for encoding and decoding was written by Phil Karn. - - - Copyright 2002, Phil Karn, KA9Q - May be used under the terms of the GNU General Public License (GPL) - - - The wrapper functions and interfaces are written by Thomas Gleixner - - - Many users have provided bugfixes, improvements and helping hands for testing. - Thanks a lot. - - - The following people have contributed to this document: - - - Thomas Gleixnertglx@linutronix.de - - -
diff --git a/Documentation/DocBook/mousedrivers.tmpl b/Documentation/DocBook/mousedrivers.tmpl new file mode 100644 index 000000000..8491969e6 --- /dev/null +++ b/Documentation/DocBook/mousedrivers.tmpl @@ -0,0 +1,1022 @@ + + + + + Mouse Drivers + + + + Alan + Cox + +
+ alan@redhat.com +
+
+
+
+ + + 2000 + Alan Cox + + + + + This documentation is free software; 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 program 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 + + + + For more details see the file COPYING in the source + distribution of Linux. + + +
+ + + + + Introduction + + Earlier publication + + Parts of this document first appeared in Linux Magazine under a + ninety day exclusivity. + + + + + Mice are conceptually one of the simplest device interfaces in the + Linux operating system. Not all mice are handled by the kernel. + Instead there is a two layer abstraction. + + + + The kernel mouse drivers and userspace drivers for the serial mice are + all managed by a system daemon called gpm + - the general purpose mouse driver. gpm + handles cutting and pasting on the text consoles. It provides a + general library for mouse-aware applications and it handles the + sharing of mouse services with the + X Window System user interface. + + + Sometimes a mouse speaks a sufficiently convoluted protocol that the + protocol is handled by Gpm itself. Most + of the mouse drivers follow a common interface called the bus mouse + protocol. + + + Each read from a bus mouse interface device returns a block of data. + The first three bytes of each read are defined as follows: + + + Mouse Data Encoding + + + + Byte 0 + 0x80 + the buttons currently down. + + + Byte 1 + A signed value for the shift in X position + + + Byte 2 + A signed value for the shift in Y position + + + +
+ + An application can choose to read more than 3 bytes. The rest of the + bytes will be zero, or may optionally return some additional + device-specific information. +
+ + The position values are truncated if they exceed the 8bit range (that + is -127 <= delta <= 127). While the value -128 does fit into a + byte is not allowed. + + + The buttons are numbered left to right as + 0, 1, 2, 3.. and each button sets the relevant bit. So a user pressing + the left and right button of a three button mouse will set bits 0 and 2. + + + All mice are required to support the poll + operation. Indeed pretty much every user of a mouse device uses + poll to wait for mouse events to occur. + + + Finally the mice support asynchronous I/O. This is a topic we have not + yet covered but which I will explain after looking at a simple mouse + driver. + +
+ + + A simple mouse driver + + First we will need the set up functions for our mouse device. To keep + this simple our imaginary mouse device has three I/O ports fixed at I/O + address 0x300 and always lives on interrupt 5. The ports will be the X + position, the Y position and the buttons in that order. + + + +#define OURMOUSE_BASE 0x300 + +static struct miscdevice our_mouse = { + OURMOUSE_MINOR, "ourmouse", &our_mouse_fops +}; + +__init ourmouse_init(void) +{ + + if (request_region(OURMOUSE_BASE, 3, "ourmouse") < 0) { + printk(KERN_ERR "ourmouse: request_region failed.\n"); + return -ENODEV; + } + + if (misc_register(&our_mouse) < 0) { + printk(KERN_ERR "ourmouse: cannot register misc device.\n"); + release_region(OURMOUSE_BASE, 3); + return -EBUSY; + } + + return 0; +} + + + + The miscdevice is new here. Linux normally + parcels devices out by major number, and each device has 256 units. + For things like mice this is extremely wasteful so a device exists + which is used to accumulate all the odd individual devices that + computers tend to have. + + + Minor numbers in this space are allocated by a central source, although + you can look in the kernel Documentation/devices.txt + file and pick a free one for development use. This kernel file also + carries instructions for registering a device. This may change over time + so it is a good idea to obtain a current copy of this file first. + + + Our code then is fairly simple. We reserve our I/O address space with + request_region, checking to make sure that it succeeded (i.e. the + space wasn't reserved by anyone else). + + + Then we ask the misc driver to allocate our minor device number. We also + hand it our name (which is used in + /proc/misc) and a set of file + operations that are to be used. The file operations work exactly like the + file operations you would register for a normal character device. The misc + device itself is simply acting as a redirector for requests. + Since misc_register can fail, it is important to check for failure + and act accordingly (which in the case of a mouse driver is to abort, + since you can't use the mouse without a working device node). + + + Next, in order to be able to use and test our code we need to add some + module code to support it. This too is fairly simple: + + +#ifdef MODULE + +int init_module(void) +{ + if(ourmouse_init()<0) + return -ENODEV: + return 0; +} + +void cleanup_module(void) +{ + misc_deregister(&our_mouse); + free_region(OURMOUSE_BASE, 3); +} + + +#endif + + + + The module code provides the normal two functions. The + init_module function is called when the module is + loaded. In our case it simply calls the initialising function we wrote + and returns an error if this fails. This ensures the module will only + be loaded if it was successfully set up. + + + The cleanup_module function is called when the + module is unloaded. We give the miscellaneous device entry back, and + then free our I/O resources. If we didn't free the I/O resources then + the next time the module loaded it would think someone else had its I/O + space. + + + Once the misc_deregister has been called any + attempts to open the mouse device will fail with the error + ENODEV (No such device). + + + Next we need to fill in our file operations. A mouse doesn't need many + of these. We need to provide open, release, read and poll. That makes + for a nice simple structure: + + + +struct file_operations our_mouse_fops = { + owner: THIS_MODULE, /* Automatic usage management */ + read: read_mouse, /* You can read a mouse */ + write: write_mouse, /* This won't do a lot */ + poll: poll_mouse, /* Poll */ + open: open_mouse, /* Called on open */ + release: close_mouse, /* Called on close */ +}; + + + + There is nothing particularly special needed here. We provide functions + for all the relevant or required operations and little else. There is + nothing stopping us providing an ioctl function for this mouse. Indeed + if you have a configurable mouse it may be very appropriate to provide + configuration interfaces via ioctl calls. + + + The syntax we use is not standard C as such. GCC provides the ability + to initialise fields by name, and this generally makes the method table + much easier to read than counting through NULL pointers and remembering + the order by hand. + + + The owner field is used to manage the locking of module load an + unloading. It is obviously important that a module is not unloaded while + in use. When your device is opened the module specified by "owner" is + locked. When it is finally released the module is unlocked. + + + The open and close routines need to manage enabling and disabling the + interrupts for the mouse as well as stopping the mouse being unloaded + when it is no longer required. + + + +static int mouse_users = 0; /* User count */ +static int mouse_dx = 0; /* Position changes */ +static int mouse_dy = 0; +static int mouse_event = 0; /* Mouse has moved */ + +static int open_mouse(struct inode *inode, struct file *file) +{ + if(mouse_users++) + return 0; + + if(request_irq(mouse_intr, OURMOUSE_IRQ, 0, "ourmouse", NULL)) + { + mouse_users--; + return -EBUSY; + } + mouse_dx = 0; + mouse_dy = 0; + mouse_event = 0; + mouse_buttons = 0; + return 0; +} + + + The open function has to do a small amount of housework. We keep a count + of the number of times the mouse is open. This is because we do not want + to request the interrupt multiple times. If the mouse has at least one + user then it is set up and we simply add to the user count and return + 0 for success. + + + We grab the interrupt and thus start mouse interrupts. If the interrupt + has been borrowed by some other driver then request_irq + will fail and we will return an error. If we were capable of sharing an + interrupt line we would specify SA_SHIRQ instead of + zero. Provided that everyone claiming an interrupt + sets this flag, they get to share the line. PCI can + share interrupts, ISA normally however cannot. + + + We do the housekeeping. We make the current mouse position the starting + point for accumulated changes and declare that nothing has happened + since the mouse driver was opened. + + + The release function needs to unwind all these: + + +static int close_mouse(struct inode *inode, struct file *file) +{ + if(--mouse_users) + return 0; + free_irq(OURMOUSE_IRQ, NULL); + return 0; +} + + + We count off a user and provided that there are still other users need + take no further action. The last person closing the mouse causes us to + free up the interrupt. This stops interrupts from the mouse from using + our CPU time, and ensures that the mouse can now be unloaded. + + + We can fill in the write handler at this point as the write function for + our mouse simply declines to allow writes: + + + +static ssize_t write_mouse(struct file *file, const char *buffer, size_t + count, loff_t *ppos) +{ + return -EINVAL; +} + + + + This is pretty much self-explanatory. Whenever you write you get told + it was an invalid function. + + + To make the poll and read functions work we have to consider how we + handle the mouse interrupt. + + + +static struct wait_queue *mouse_wait; +static spinlock_t mouse_lock = SPIN_LOCK_UNLOCKED; + +static void ourmouse_interrupt(int irq, void *dev_id, struct pt_regs *regs) +{ + char delta_x; + char delta_y; + unsigned char new_buttons; + + delta_x = inb(OURMOUSE_BASE); + delta_y = inb(OURMOUSE_BASE+1); + new_buttons = inb(OURMOUSE_BASE+2); + + if(delta_x || delta_y || new_buttons != mouse_buttons) + { + /* Something happened */ + + spin_lock(&mouse_lock); + mouse_event = 1; + mouse_dx += delta_x; + mouse_dy += delta_y; + mouse_buttons = new_buttons; + spin_unlock(&mouse_lock); + + wake_up_interruptible(&mouse_wait); + } +} + + + + The interrupt handler reads the mouse status. The next thing we do is + to check whether something has changed. If the mouse was smart it would + only interrupt us if something had changed, but let's assume our mouse + is stupid as most mice actually tend to be. + + + If the mouse has changed we need to update the status variables. What we + don't want is the mouse functions reading these variables to read them + during a change. We add a spinlock that protects these variables while we + play with them. + + + If a change has occurred we also need to wake sleeping processes, so we + add a wakeup call and a wait_queue to use when + we wish to await a mouse event. + + + Now we have the wait queue we can implement the poll function for the + mouse relatively easily: + + + +static unsigned int mouse_poll(struct file *file, poll_table *wait) +{ + poll_wait(file, &mouse_wait, wait); + if(mouse_event) + return POLLIN | POLLRDNORM; + return 0; +} + + + + This is fairly standard poll code. First we add the wait queue to the + list of queues we want to monitor for an event. Secondly we check if an + event has occurred. We only have one kind of event - the + mouse_event flag tells us that something happened. + We know that this something can only be mouse data. We return the flags + indicating input and normal reading will succeed. + + + You may be wondering what happens if the function returns saying 'no + event yet'. In this case the wake up from the wait queue we added to + the poll table will cause the function to be called again. Eventually + we will be woken up and have an event ready. At this point the + poll call will exit back to the user. + + + After the poll completes the user will want to read the data. We now + need to think about how our mouse_read function + will work: + + +static ssize_t mouse_read(struct file *file, char *buffer, + size_t count, loff_t *pos) +{ + int dx, dy; + unsigned char button; + unsigned long flags; + int n; + + if(count<3) + return -EINVAL; + + /* + * Wait for an event + */ + + while(!mouse_event) + { + if(file->f_flags&O_NDELAY) + return -EAGAIN; + interruptible_sleep_on(&mouse_wait); + if(signal_pending(current)) + return -ERESTARTSYS; + } + + + + We start by validating that the user is reading enough data. We could + handle partial reads if we wanted but it isn't terribly useful and the + mouse drivers don't bother to try. + + + Next we wait for an event to occur. The loop is fairly standard event + waiting in Linux. Having checked that the event has not yet occurred, we + then check if an event is pending and if not we need to sleep. + + + A user process can set the O_NDELAY flag on a file + to indicate that it wishes to be told immediately if no event is + pending. We check this and give the appropriate error if so. + + + Next we sleep until the mouse or a signal awakens us. A signal will + awaken us as we have used wakeup_interruptible. + This is important as it means a user can kill processes waiting for + the mouse - clearly a desirable property. If we are interrupted we + exit the call and the kernel will then process signals and maybe + restart the call again - from the beginning. + + + This code contains a classic Linux bug. All will be revealed later in this + article as well as explanations for how to avoid it. + + + /* Grab the event */ + + spinlock_irqsave(&mouse_lock, flags); + + dx = mouse_dx; + dy = mouse_dy; + button = mouse_buttons; + + if(dx<=-127) + dx=-127; + if(dx>=127) + dx=127; + if(dy<=-127) + dy=-127; + if(dy>=127) + dy=127; + + mouse_dx -= dx; + mouse_dy -= dy; + + if(mouse_dx == 0 && mouse_dy == 0) + mouse_event = 0; + + spin_unlock_irqrestore(&mouse_lock, flags); + + + This is the next stage. Having established that there is an event + going, we capture it. To be sure that the event is not being updated + as we capture it we also take the spinlock and thus prevent parallel + updates. Note here we use spinlock_irqsave. We + need to disable interrupts on the local processor otherwise bad things + will happen. + + + What will occur is that we take the spinlock. While we hold the lock + an interrupt will occur. At this point our interrupt handler will try + and take the spinlock. It will sit in a loop waiting for the read + routine to release the lock. However because we are sitting in a loop + in the interrupt handler we will never release the lock. The machine + hangs and the user gets upset. + + + By blocking the interrupt on this processor we ensure that the lock + holder will always give the lock back without deadlocking. + + + There is a little cleverness in the reporting mechanism too. We can + only report a move of 127 per read. We don't however want to lose + information by throwing away further movement. Instead we keep + returning as much information as possible. Each time we return a + report we remove the amount from the pending movement in + mouse_dx and mouse_dy. Eventually + when these counts hit zero we clear the mouse_event + flag as there is nothing else left to report. + + + + if(put_user(button|0x80, buffer)) + return -EFAULT; + if(put_user((char)dx, buffer+1)) + return -EFAULT; + if(put_user((char)dy, buffer+2)) + return -EFAULT; + + for(n=3; n < count; n++) + if(put_user(0x00, buffer+n)) + return -EFAULT; + + return count; +} + + + + Finally we must put the results in the user supplied buffer. We cannot + do this while holding the lock as a write to user memory may sleep. + For example the user memory may be residing on disk at this instant. + Thus we did our computation beforehand and now copy the data. Each + put_user call is filling in one byte of the buffer. + If it returns an error we inform the program that it passed us an + invalid buffer and abort. + + + Having written the data we blank the rest of the buffer that was read + and report the read as being successful. + + + + + Debugging the mouse driver + + + We now have an almost perfectly usable mouse driver. If you were to + actually try and use it however you would eventually find a couple of + problems with it. A few programs will also not work with as it does not + yet support asynchronous I/O. + + + First let us look at the bugs. The most obvious one isn't really a driver + bug but a failure to consider the consequences. Imagine you bumped the + mouse hard by accident and sent it skittering across the desk. The mouse + interrupt routine will add up all that movement and report it in steps of + 127 until it has reported all of it. Clearly there is a point beyond + which mouse movement isn't worth reporting. We need to add this as a + limit to the interrupt handler: + + + +static void ourmouse_interrupt(int irq, void *dev_id, struct pt_regs *regs) +{ + char delta_x; + char delta_y; + unsigned char new_buttons; + + delta_x = inb(OURMOUSE_BASE); + delta_y = inb(OURMOUSE_BASE+1); + new_buttons = inb(OURMOUSE_BASE+2); + + if(delta_x || delta_y || new_buttons != mouse_buttons) + { + /* Something happened */ + + spin_lock(&mouse_lock); + mouse_event = 1; + mouse_dx += delta_x; + mouse_dy += delta_y; + + if(mouse_dx < -4096) + mouse_dx = -4096; + if(mouse_dx > 4096) + mouse_dx = 4096; + + if(mouse_dy < -4096) + mouse_dy = -4096; + if(mouse_dy > 4096) + mouse_dy = 4096; + + mouse_buttons = new_buttons; + spin_unlock(&mouse_lock); + + wake_up_interruptible(&mouse_wait); + } +} + + + + By adding these checks we limit the range of accumulated movement to + something sensible. + + + The second bug is a bit more subtle, and that is perhaps why this is + such a common mistake. Remember, I said the waiting loop for the read + handler had a bug in it. Think about what happens when we execute: + + + + while(!mouse_event) + { + + + + and an interrupt occurs at this point here. This causes a mouse movement + and wakes up the queue. + + + + interruptible_sleep_on(&mouse_wait); + + + + Now we sleep on the queue. We missed the wake up and the application + will not see an event until the next mouse event occurs. This will + lead to just the odd instance when a mouse button gets delayed. The + consequences to the user will probably be almost undetectable with a + mouse driver. With other drivers this bug could be a lot more severe. + + + There are two ways to solve this. The first is to disable interrupts + during the testing and the sleep. This works because when a task sleeps + it ceases to disable interrupts, and when it resumes it disables them + again. Our code thus becomes: + + + + save_flags(flags); + cli(); + + while(!mouse_event) + { + if(file->f_flags&O_NDELAY) + { + restore_flags(flags); + return -EAGAIN; + } + interruptible_sleep_on(&mouse_wait); + if(signal_pending(current)) + { + restore_flags(flags); + return -ERESTARTSYS; + } + } + restore_flags(flags); + + + + This is the sledgehammer approach. It works but it means we spend a + lot more time turning interrupts on and off. It also affects + interrupts globally and has bad properties on multiprocessor machines + where turning interrupts off globally is not a simple operation, but + instead involves kicking each processor, waiting for them to disable + interrupts and reply. + + + The real problem is the race between the event testing and the sleeping. + We can avoid that by using the scheduling functions more directly. + Indeed this is the way they generally should be used for an interrupt. + + + + struct wait_queue wait = { current, NULL }; + + add_wait_queue(&mouse_wait, &wait); + set_current_state(TASK_INTERRUPTIBLE); + + while(!mouse_event) + { + if(file->f_flags&O_NDELAY) + { + remove_wait_queue(&mouse_wait, &wait); + set_current_state(TASK_RUNNING); + return -EWOULDBLOCK; + } + if(signal_pending(current)) + { + remove_wait_queue(&mouse_wait, &wait); + current->state = TASK_RUNNING; + return -ERESTARTSYS; + } + schedule(); + set_current_state(TASK_INTERRUPTIBLE); + } + + remove_wait_wait(&mouse_wait, &wait); + set_current_state(TASK_RUNNING); + + + + At first sight this probably looks like deep magic. To understand how + this works you need to understand how scheduling and events work on + Linux. Having a good grasp of this is one of the keys to writing clean + efficient device drivers. + + + add_wait_queue does what its name suggests. It adds + an entry to the mouse_wait list. The entry in this + case is the entry for our current process (current + is the current task pointer). + + + So we start by adding an entry for ourself onto the + mouse_wait list. This does not put us to sleep + however. We are merely tagged onto the list. + + + Next we set our status to TASK_INTERRUPTIBLE. Again + this does not mean we are now asleep. This flag says what should happen + next time the process sleeps. TASK_INTERRUPTIBLE says + that the process should not be rescheduled. It will run from now until it + sleeps and then will need to be woken up. + + + The wakeup_interruptible call in the interrupt + handler can now be explained in more detail. This function is also very + simple. It goes along the list of processes on the queue it is given and + any that are marked as TASK_INTERRUPTIBLE it changes + to TASK_RUNNING and tells the kernel that new + processes are runnable. + + + Behind all the wrappers in the original code what is happening is this + + + + + + We add ourself to the mouse wait queue + + + + + We mark ourself as sleeping + + + + + We ask the kernel to schedule tasks again + + + + + The kernel sees we are asleep and schedules someone else. + + + + + The mouse interrupt sets our state to TASK_RUNNING + and makes a note that the kernel should reschedule tasks + + + + + The kernel sees we are running again and continues our execution + + + + + This is why the apparent magic works. Because we mark ourself as + TASK_INTERRUPTIBLE and as we add ourselves + to the queue before we check if there are events pending, the race + condition is removed. + + + Now if an interrupt occurs after we check the queue status and before + we call the schedule function in order to sleep, + things work out. Instead of missing an event, we are set back to + TASK_RUNNING by the mouse interrupt. We still call + schedule but it will continue running our task. + We go back around the loop and this time there may be an event. + + + There will not always be an event. Thus we set ourselves back to + TASK_INTERRUPTIBLE before resuming the loop. + Another process doing a read may already have cleared the event flag, + and if so we will need to go back to sleep again. Eventually we will + get our event and escape. + + + Finally when we exit the loop we remove ourselves from the + mouse_wait queue as we are no longer interested + in mouse events, and we set ourself back to + TASK_RUNNABLE as we do not wish to go to sleep + again just yet. + + + Note + + This isn't an easy topic. Don't be afraid to reread the description a + few times and also look at other device drivers to see how it works. + Finally if you can't grasp it just yet, you can use the code as + boilerplate to write other drivers and trust me instead. + + + + + + Asynchronous I/O + + This leaves the missing feature - Asynchronous I/O. Normally UNIX + programs use the poll call (or its variant form + select) to wait for an event to occur on one of + multiple input or output devices. This model works well for most tasks + but because poll and select + wait for an event isn't suitable for tasks that are also continually + doing computation work. Such programs really want the kernel to kick + them when something happens rather than watch for events. + + + Poll is akin to having a row of lights in front of you. You can see at a + glance which ones if any are lit. You cannot however get anything useful + done while watching them. Asynchronous I/O uses signals which work more + like a door bell. Instead of you watching, it tells you that something + is up. + + + Asynchronous I/O sends the signal SIGIO to a user process when the I/O + events occur. In this case that means when people move the mouse. The + SIGIO signal causes the user process to jump to its signal handler and + execute code in that handler before returning to whatever was going on + previously. It is the application equivalent of an interrupt handler. + + + Most of the code needed for this operation is common to all its users. + The kernel provides a simple set of functions for managing asynchronous + I/O. + + + Our first job is to allow users to set asynchronous I/O on file handles. + To do that we need to add a new function to the file operations table for + our mouse: + + + +struct file_operations our_mouse_fops = { + owner: THIS_MODULE + read: read_mouse, /* You can read a mouse */ + write: write_mouse, /* This won't do a lot */ + poll: poll_mouse, /* Poll */ + open: open_mouse, /* Called on open */ + release: close_mouse, /* Called on close */ + fasync: fasync_mouse, /* Asynchronous I/O */ +}; + + + + Once we have installed this entry the kernel knows we support + asynchronous I/O and will allow all the relevant operations on the + device. Whenever a user adds or removes asynchronous I/O notification + on a file handle it calls our fasync_mouse routine + we just added. This routine uses the helper functions to keep the queue + of handles up to date: + + + +static struct fasync_struct *mouse_fasync = NULL; + +static int fasync_mouse(int fd, struct file *filp, int on) +{ + int retval = fasync_helper(fd, filp, on, &mouse_fasync); + + if (retval < 0) + return retval; + return 0; +} + + + + The fasync helper adds and deletes entries by managing the supplied + list. We also need to remove entries from this list when the file is + closed. This requires we add one line to our close function: + + + +static int close_mouse(struct inode *inode, struct file *file) +{ + fasync_mouse(-1, file, 0) + if(--mouse_users) + return 0; + free_irq(OURMOUSE_IRQ, NULL); + return 0; +} + + + + When we close the file we now call our own fasync handler as if the + user had requested that this file cease to be used for asynchronous + I/O. This rather neatly cleans up any loose ends. We certainly don't + wait to deliver a signal for a file that no longer exists. + + + At this point the mouse driver supports all the asynchronous I/O + operations, and applications using them will not error. They won't + however work yet. We need to actually send the signals. Again the + kernel provides a function for handling this. + + + We update our interrupt handler a little: + + + +static void ourmouse_interrupt(int irq, void *dev_id, struct pt_regs *regs) +{ + char delta_x; + char delta_y; + unsigned char new_buttons; + + delta_x = inb(OURMOUSE_BASE); + delta_y = inb(OURMOUSE_BASE+1); + new_buttons = inb(OURMOUSE_BASE+2); + + if(delta_x || delta_y || new_buttons != mouse_buttons) + { + /* Something happened */ + + spin_lock(&mouse_lock); + mouse_event = 1; + mouse_dx += delta_x; + mouse_dy += delta_y; + + if(mouse_dx < -4096) + mouse_dx = -4096; + if(mouse_dx > 4096) + mouse_dx = 4096; + + if(mouse_dy < -4096) + mouse_dy = -4096; + if(mouse_dy > 4096) + mouse_dy = 4096; + + mouse_buttons = new_buttons; + spin_unlock(&mouse_lock); + + /* Now we do asynchronous I/O */ + kill_fasync(&mouse_fasync, SIGIO); + + wake_up_interruptible(&mouse_wait); + } +} + + + + The new code simply calls the kill_fasync routine + provided by the kernel if the queue is non-empty. This sends the + required signal (SIGIO in this case) to the process each file handle + says should be informed about the exciting new mouse movement that + just happened. + + + With this in place and the bugs in the original version fixed, you now + have a fully functional mouse driver using the bus mouse protocol. It + will work with the X window system, will work + with GPM and should work with every other + application you need. Doom is of course the + ideal way to test your new mouse driver is functioning properly. Be sure + to test it thoroughly. + + +
+ diff --git a/Documentation/DocBook/mtdnand.tmpl b/Documentation/DocBook/mtdnand.tmpl deleted file mode 100644 index 435bb5245..000000000 --- a/Documentation/DocBook/mtdnand.tmpl +++ /dev/null @@ -1,1318 +0,0 @@ - - - - - MTD NAND Driver Programming Interface - - - - Thomas - Gleixner - -
- tglx@linutronix.de -
-
-
-
- - - 2004 - Thomas Gleixner - - - - - This documentation is free software; you can redistribute - it and/or modify it under the terms of the GNU General Public - License version 2 as published by the Free Software Foundation. - - - - This program 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 - - - - For more details see the file COPYING in the source - distribution of Linux. - - -
- - - - - Introduction - - The generic NAND driver supports almost all NAND and AG-AND based - chips and connects them to the Memory Technology Devices (MTD) - subsystem of the Linux Kernel. - - - This documentation is provided for developers who want to implement - board drivers or filesystem drivers suitable for NAND devices. - - - - - Known Bugs And Assumptions - - None. - - - - - Documentation hints - - The function and structure docs are autogenerated. Each function and - struct member has a short description which is marked with an [XXX] identifier. - The following chapters explain the meaning of those identifiers. - - - Function identifiers [XXX] - - The functions are marked with [XXX] identifiers in the short - comment. The identifiers explain the usage and scope of the - functions. Following identifiers are used: - - - - [MTD Interface] - These functions provide the interface to the MTD kernel API. - They are not replacable and provide functionality - which is complete hardware independent. - - - [NAND Interface] - These functions are exported and provide the interface to the NAND kernel API. - - - [GENERIC] - Generic functions are not replacable and provide functionality - which is complete hardware independent. - - - [DEFAULT] - Default functions provide hardware related functionality which is suitable - for most of the implementations. These functions can be replaced by the - board driver if neccecary. Those functions are called via pointers in the - NAND chip description structure. The board driver can set the functions which - should be replaced by board dependend functions before calling nand_scan(). - If the function pointer is NULL on entry to nand_scan() then the pointer - is set to the default function which is suitable for the detected chip type. - - - - - Struct member identifiers [XXX] - - The struct members are marked with [XXX] identifiers in the - comment. The identifiers explain the usage and scope of the - members. Following identifiers are used: - - - - [INTERN] - These members are for NAND driver internal use only and must not be - modified. Most of these values are calculated from the chip geometry - information which is evaluated during nand_scan(). - - - [REPLACEABLE] - Replaceable members hold hardware related functions which can be - provided by the board driver. The board driver can set the functions which - should be replaced by board dependend functions before calling nand_scan(). - If the function pointer is NULL on entry to nand_scan() then the pointer - is set to the default function which is suitable for the detected chip type. - - - [BOARDSPECIFIC] - Board specific members hold hardware related information which must - be provided by the board driver. The board driver must set the function - pointers and datafields before calling nand_scan(). - - - [OPTIONAL] - Optional members can hold information relevant for the board driver. The - generic NAND driver code does not use this information. - - - - - - - Basic board driver - - For most boards it will be sufficient to provide just the - basic functions and fill out some really board dependend - members in the nand chip description structure. - See drivers/mtd/nand/skeleton for reference. - - - Basic defines - - At least you have to provide a mtd structure and - a storage for the ioremap'ed chip address. - You can allocate the mtd structure using kmalloc - or you can allocate it statically. - In case of static allocation you have to allocate - a nand_chip structure too. - - - Kmalloc based example - - -static struct mtd_info *board_mtd; -static unsigned long baseaddr; - - - Static example - - -static struct mtd_info board_mtd; -static struct nand_chip board_chip; -static unsigned long baseaddr; - - - - Partition defines - - If you want to divide your device into parititions, then - enable the configuration switch CONFIG_MTD_PARITIONS and define - a paritioning scheme suitable to your board. - - -#define NUM_PARTITIONS 2 -static struct mtd_partition partition_info[] = { - { .name = "Flash partition 1", - .offset = 0, - .size = 8 * 1024 * 1024 }, - { .name = "Flash partition 2", - .offset = MTDPART_OFS_NEXT, - .size = MTDPART_SIZ_FULL }, -}; - - - - Hardware control function - - The hardware control function provides access to the - control pins of the NAND chip(s). - The access can be done by GPIO pins or by address lines. - If you use address lines, make sure that the timing - requirements are met. - - - GPIO based example - - -static void board_hwcontrol(struct mtd_info *mtd, int cmd) -{ - switch(cmd){ - case NAND_CTL_SETCLE: /* Set CLE pin high */ break; - case NAND_CTL_CLRCLE: /* Set CLE pin low */ break; - case NAND_CTL_SETALE: /* Set ALE pin high */ break; - case NAND_CTL_CLRALE: /* Set ALE pin low */ break; - case NAND_CTL_SETNCE: /* Set nCE pin low */ break; - case NAND_CTL_CLRNCE: /* Set nCE pin high */ break; - } -} - - - Address lines based example. It's assumed that the - nCE pin is driven by a chip select decoder. - - -static void board_hwcontrol(struct mtd_info *mtd, int cmd) -{ - struct nand_chip *this = (struct nand_chip *) mtd->priv; - switch(cmd){ - case NAND_CTL_SETCLE: this->IO_ADDR_W |= CLE_ADRR_BIT; break; - case NAND_CTL_CLRCLE: this->IO_ADDR_W &= ~CLE_ADRR_BIT; break; - case NAND_CTL_SETALE: this->IO_ADDR_W |= ALE_ADRR_BIT; break; - case NAND_CTL_CLRALE: this->IO_ADDR_W &= ~ALE_ADRR_BIT; break; - } -} - - - - Device ready function - - If the hardware interface has the ready busy pin of the NAND chip connected to a - GPIO or other accesible I/O pin, this function is used to read back the state of the - pin. The function has no arguments and should return 0, if the device is busy (R/B pin - is low) and 1, if the device is ready (R/B pin is high). - If the hardware interface does not give access to the ready busy pin, then - the function must not be defined and the function pointer this->dev_ready is set to NULL. - - - - Init function - - The init function allocates memory and sets up all the board - specific parameters and function pointers. When everything - is set up nand_scan() is called. This function tries to - detect and identify then chip. If a chip is found all the - internal data fields are initialized accordingly. - The structure(s) have to be zeroed out first and then filled with the neccecary - information about the device. - - -int __init board_init (void) -{ - struct nand_chip *this; - int err = 0; - - /* Allocate memory for MTD device structure and private data */ - board_mtd = kmalloc (sizeof(struct mtd_info) + sizeof (struct nand_chip), GFP_KERNEL); - if (!board_mtd) { - printk ("Unable to allocate NAND MTD device structure.\n"); - err = -ENOMEM; - goto out; - } - - /* Initialize structures */ - memset ((char *) board_mtd, 0, sizeof(struct mtd_info) + sizeof(struct nand_chip)); - - /* map physical adress */ - baseaddr = (unsigned long)ioremap(CHIP_PHYSICAL_ADDRESS, 1024); - if(!baseaddr){ - printk("Ioremap to access NAND chip failed\n"); - err = -EIO; - goto out_mtd; - } - - /* Get pointer to private data */ - this = (struct nand_chip *) (); - /* Link the private data with the MTD structure */ - board_mtd->priv = this; - - /* Set address of NAND IO lines */ - this->IO_ADDR_R = baseaddr; - this->IO_ADDR_W = baseaddr; - /* Reference hardware control function */ - this->hwcontrol = board_hwcontrol; - /* Set command delay time, see datasheet for correct value */ - this->chip_delay = CHIP_DEPENDEND_COMMAND_DELAY; - /* Assign the device ready function, if available */ - this->dev_ready = board_dev_ready; - this->eccmode = NAND_ECC_SOFT; - - /* Scan to find existance of the device */ - if (nand_scan (board_mtd, 1)) { - err = -ENXIO; - goto out_ior; - } - - add_mtd_partitions(board_mtd, partition_info, NUM_PARTITIONS); - goto out; - -out_ior: - iounmap((void *)baseaddr); -out_mtd: - kfree (board_mtd); -out: - return err; -} -module_init(board_init); - - - - Exit function - - The exit function is only neccecary if the driver is - compiled as a module. It releases all resources which - are held by the chip driver and unregisters the partitions - in the MTD layer. - - -#ifdef MODULE -static void __exit board_cleanup (void) -{ - /* Release resources, unregister device */ - nand_release (board_mtd); - - /* unmap physical adress */ - iounmap((void *)baseaddr); - - /* Free the MTD device structure */ - kfree (board_mtd); -} -module_exit(board_cleanup); -#endif - - - - - - Advanced board driver functions - - This chapter describes the advanced functionality of the NAND - driver. For a list of functions which can be overridden by the board - driver see the documentation of the nand_chip structure. - - - Multiple chip control - - The nand driver can control chip arrays. Therefor the - board driver must provide an own select_chip function. This - function must (de)select the requested chip. - The function pointer in the nand_chip structure must - be set before calling nand_scan(). The maxchip parameter - of nand_scan() defines the maximum number of chips to - scan for. Make sure that the select_chip function can - handle the requested number of chips. - - - The nand driver concatenates the chips to one virtual - chip and provides this virtual chip to the MTD layer. - - - Note: The driver can only handle linear chip arrays - of equally sized chips. There is no support for - parallel arrays which extend the buswidth. - - - GPIO based example - - -static void board_select_chip (struct mtd_info *mtd, int chip) -{ - /* Deselect all chips, set all nCE pins high */ - GPIO(BOARD_NAND_NCE) |= 0xff; - if (chip >= 0) - GPIO(BOARD_NAND_NCE) &= ~ (1 << chip); -} - - - Address lines based example. - Its assumed that the nCE pins are connected to an - address decoder. - - -static void board_select_chip (struct mtd_info *mtd, int chip) -{ - struct nand_chip *this = (struct nand_chip *) mtd->priv; - - /* Deselect all chips */ - this->IO_ADDR_R &= ~BOARD_NAND_ADDR_MASK; - this->IO_ADDR_W &= ~BOARD_NAND_ADDR_MASK; - switch (chip) { - case 0: - this->IO_ADDR_R |= BOARD_NAND_ADDR_CHIP0; - this->IO_ADDR_W |= BOARD_NAND_ADDR_CHIP0; - break; - .... - case n: - this->IO_ADDR_R |= BOARD_NAND_ADDR_CHIPn; - this->IO_ADDR_W |= BOARD_NAND_ADDR_CHIPn; - break; - } -} - - - - Hardware ECC support - - Functions and constants - - The nand driver supports three different types of - hardware ECC. - - NAND_ECC_HW3_256 - Hardware ECC generator providing 3 bytes ECC per - 256 byte. - - NAND_ECC_HW3_512 - Hardware ECC generator providing 3 bytes ECC per - 512 byte. - - NAND_ECC_HW6_512 - Hardware ECC generator providing 6 bytes ECC per - 512 byte. - - NAND_ECC_HW8_512 - Hardware ECC generator providing 6 bytes ECC per - 512 byte. - - - If your hardware generator has a different functionality - add it at the appropriate place in nand_base.c - - - The board driver must provide following functions: - - enable_hwecc - This function is called before reading / writing to - the chip. Reset or initialize the hardware generator - in this function. The function is called with an - argument which let you distinguish between read - and write operations. - - calculate_ecc - This function is called after read / write from / to - the chip. Transfer the ECC from the hardware to - the buffer. If the option NAND_HWECC_SYNDROME is set - then the function is only called on write. See below. - - correct_data - In case of an ECC error this function is called for - error detection and correction. Return 1 respectively 2 - in case the error can be corrected. If the error is - not correctable return -1. If your hardware generator - matches the default algorithm of the nand_ecc software - generator then use the correction function provided - by nand_ecc instead of implementing duplicated code. - - - - - - Hardware ECC with syndrome calculation - - Many hardware ECC implementations provide Reed-Solomon - codes and calculate an error syndrome on read. The syndrome - must be converted to a standard Reed-Solomon syndrome - before calling the error correction code in the generic - Reed-Solomon library. - - - The ECC bytes must be placed immidiately after the data - bytes in order to make the syndrome generator work. This - is contrary to the usual layout used by software ECC. The - seperation of data and out of band area is not longer - possible. The nand driver code handles this layout and - the remaining free bytes in the oob area are managed by - the autoplacement code. Provide a matching oob-layout - in this case. See rts_from4.c and diskonchip.c for - implementation reference. In those cases we must also - use bad block tables on FLASH, because the ECC layout is - interferring with the bad block marker positions. - See bad block table support for details. - - - - - Bad block table support - - Most NAND chips mark the bad blocks at a defined - position in the spare area. Those blocks must - not be erased under any circumstances as the bad - block information would be lost. - It is possible to check the bad block mark each - time when the blocks are accessed by reading the - spare area of the first page in the block. This - is time consuming so a bad block table is used. - - - The nand driver supports various types of bad block - tables. - - Per device - The bad block table contains all bad block information - of the device which can consist of multiple chips. - - Per chip - A bad block table is used per chip and contains the - bad block information for this particular chip. - - Fixed offset - The bad block table is located at a fixed offset - in the chip (device). This applies to various - DiskOnChip devices. - - Automatic placed - The bad block table is automatically placed and - detected either at the end or at the beginning - of a chip (device) - - Mirrored tables - The bad block table is mirrored on the chip (device) to - allow updates of the bad block table without data loss. - - - - - nand_scan() calls the function nand_default_bbt(). - nand_default_bbt() selects appropriate default - bad block table desriptors depending on the chip information - which was retrieved by nand_scan(). - - - The standard policy is scanning the device for bad - blocks and build a ram based bad block table which - allows faster access than always checking the - bad block information on the flash chip itself. - - - Flash based tables - - It may be desired or neccecary to keep a bad block table in FLASH. - For AG-AND chips this is mandatory, as they have no factory marked - bad blocks. They have factory marked good blocks. The marker pattern - is erased when the block is erased to be reused. So in case of - powerloss before writing the pattern back to the chip this block - would be lost and added to the bad blocks. Therefor we scan the - chip(s) when we detect them the first time for good blocks and - store this information in a bad block table before erasing any - of the blocks. - - - The blocks in which the tables are stored are procteted against - accidental access by marking them bad in the memory bad block - table. The bad block table managment functions are allowed - to circumvernt this protection. - - - The simplest way to activate the FLASH based bad block table support - is to set the option NAND_USE_FLASH_BBT in the option field of - the nand chip structure before calling nand_scan(). For AG-AND - chips is this done by default. - This activates the default FLASH based bad block table functionality - of the NAND driver. The default bad block table options are - - Store bad block table per chip - Use 2 bits per block - Automatic placement at the end of the chip - Use mirrored tables with version numbers - Reserve 4 blocks at the end of the chip - - - - - User defined tables - - User defined tables are created by filling out a - nand_bbt_descr structure and storing the pointer in the - nand_chip structure member bbt_td before calling nand_scan(). - If a mirror table is neccecary a second structure must be - created and a pointer to this structure must be stored - in bbt_md inside the nand_chip structure. If the bbt_md - member is set to NULL then only the main table is used - and no scan for the mirrored table is performed. - - - The most important field in the nand_bbt_descr structure - is the options field. The options define most of the - table properties. Use the predefined constants from - nand.h to define the options. - - Number of bits per block - The supported number of bits is 1, 2, 4, 8. - Table per chip - Setting the constant NAND_BBT_PERCHIP selects that - a bad block table is managed for each chip in a chip array. - If this option is not set then a per device bad block table - is used. - Table location is absolute - Use the option constant NAND_BBT_ABSPAGE and - define the absolute page number where the bad block - table starts in the field pages. If you have selected bad block - tables per chip and you have a multi chip array then the start page - must be given for each chip in the chip array. Note: there is no scan - for a table ident pattern performed, so the fields - pattern, veroffs, offs, len can be left uninitialized - Table location is automatically detected - The table can either be located in the first or the last good - blocks of the chip (device). Set NAND_BBT_LASTBLOCK to place - the bad block table at the end of the chip (device). The - bad block tables are marked and identified by a pattern which - is stored in the spare area of the first page in the block which - holds the bad block table. Store a pointer to the pattern - in the pattern field. Further the length of the pattern has to be - stored in len and the offset in the spare area must be given - in the offs member of the nand_bbt_descr stucture. For mirrored - bad block tables different patterns are mandatory. - Table creation - Set the option NAND_BBT_CREATE to enable the table creation - if no table can be found during the scan. Usually this is done only - once if a new chip is found. - Table write support - Set the option NAND_BBT_WRITE to enable the table write support. - This allows the update of the bad block table(s) in case a block has - to be marked bad due to wear. The MTD interface function block_markbad - is calling the update function of the bad block table. If the write - support is enabled then the table is updated on FLASH. - - Note: Write support should only be enabled for mirrored tables with - version control. - - Table version control - Set the option NAND_BBT_VERSION to enable the table version control. - It's highly recommended to enable this for mirrored tables with write - support. It makes sure that the risk of loosing the bad block - table information is reduced to the loss of the information about the - one worn out block which should be marked bad. The version is stored in - 4 consecutive bytes in the spare area of the device. The position of - the version number is defined by the member veroffs in the bad block table - descriptor. - Save block contents on write - - In case that the block which holds the bad block table does contain - other useful information, set the option NAND_BBT_SAVECONTENT. When - the bad block table is written then the whole block is read the bad - block table is updated and the block is erased and everything is - written back. If this option is not set only the bad block table - is written and everything else in the block is ignored and erased. - - Number of reserved blocks - - For automatic placement some blocks must be reserved for - bad block table storage. The number of reserved blocks is defined - in the maxblocks member of the babd block table description structure. - Reserving 4 blocks for mirrored tables should be a reasonable number. - This also limits the number of blocks which are scanned for the bad - block table ident pattern. - - - - - - - Spare area (auto)placement - - The nand driver implements different possibilities for - placement of filesystem data in the spare area, - - Placement defined by fs driver - Automatic placement - - The default placement function is automatic placement. The - nand driver has built in default placement schemes for the - various chiptypes. If due to hardware ECC functionality the - default placement does not fit then the board driver can - provide a own placement scheme. - - - File system drivers can provide a own placement scheme which - is used instead of the default placement scheme. - - - Placement schemes are defined by a nand_oobinfo structure - -struct nand_oobinfo { - int useecc; - int eccbytes; - int eccpos[24]; - int oobfree[8][2]; -}; - - - useecc - The useecc member controls the ecc and placement function. The header - file include/mtd/mtd-abi.h contains constants to select ecc and - placement. MTD_NANDECC_OFF switches off the ecc complete. This is - not recommended and available for testing and diagnosis only. - MTD_NANDECC_PLACE selects caller defined placement, MTD_NANDECC_AUTOPLACE - selects automatic placement. - - eccbytes - The eccbytes member defines the number of ecc bytes per page. - - eccpos - The eccpos array holds the byte offsets in the spare area where - the ecc codes are placed. - - oobfree - The oobfree array defines the areas in the spare area which can be - used for automatic placement. The information is given in the format - {offset, size}. offset defines the start of the usable area, size the - length in bytes. More than one area can be defined. The list is terminated - by an {0, 0} entry. - - - - - Placement defined by fs driver - - The calling function provides a pointer to a nand_oobinfo - structure which defines the ecc placement. For writes the - caller must provide a spare area buffer along with the - data buffer. The spare area buffer size is (number of pages) * - (size of spare area). For reads the buffer size is - (number of pages) * ((size of spare area) + (number of ecc - steps per page) * sizeof (int)). The driver stores the - result of the ecc check for each tuple in the spare buffer. - The storage sequence is - - - <spare data page 0><ecc result 0>...<ecc result n> - - - ... - - - <spare data page n><ecc result 0>...<ecc result n> - - - This is a legacy mode used by YAFFS1. - - - If the spare area buffer is NULL then only the ECC placement is - done according to the given scheme in the nand_oobinfo structure. - - - - Automatic placement - - Automatic placement uses the built in defaults to place the - ecc bytes in the spare area. If filesystem data have to be stored / - read into the spare area then the calling function must provide a - buffer. The buffer size per page is determined by the oobfree array in - the nand_oobinfo structure. - - - If the spare area buffer is NULL then only the ECC placement is - done according to the default builtin scheme. - - - - User space placement selection - - All non ecc functions like mtd->read and mtd->write use an internal - structure, which can be set by an ioctl. This structure is preset - to the autoplacement default. - - ioctl (fd, MEMSETOOBSEL, oobsel); - - oobsel is a pointer to a user supplied structure of type - nand_oobconfig. The contents of this structure must match the - criteria of the filesystem, which will be used. See an example in utils/nandwrite.c. - - - - - Spare area autoplacement default schemes - - 256 byte pagesize - - -Offset -Content -Comment - - -0x00 -ECC byte 0 -Error correction code byte 0 - - -0x01 -ECC byte 1 -Error correction code byte 1 - - -0x02 -ECC byte 2 -Error correction code byte 2 - - -0x03 -Autoplace 0 - - - -0x04 -Autoplace 1 - - - -0x05 -Bad block marker -If any bit in this byte is zero, then this block is bad. -This applies only to the first page in a block. In the remaining -pages this byte is reserved - - -0x06 -Autoplace 2 - - - -0x07 -Autoplace 3 - - - - - - 512 byte pagesize - - -Offset -Content -Comment - - -0x00 -ECC byte 0 -Error correction code byte 0 of the lower 256 Byte data in -this page - - -0x01 -ECC byte 1 -Error correction code byte 1 of the lower 256 Bytes of data -in this page - - -0x02 -ECC byte 2 -Error correction code byte 2 of the lower 256 Bytes of data -in this page - - -0x03 -ECC byte 3 -Error correction code byte 0 of the upper 256 Bytes of data -in this page - - -0x04 -reserved -reserved - - -0x05 -Bad block marker -If any bit in this byte is zero, then this block is bad. -This applies only to the first page in a block. In the remaining -pages this byte is reserved - - -0x06 -ECC byte 4 -Error correction code byte 1 of the upper 256 Bytes of data -in this page - - -0x07 -ECC byte 5 -Error correction code byte 2 of the upper 256 Bytes of data -in this page - - -0x08 - 0x0F -Autoplace 0 - 7 - - - - - - 2048 byte pagesize - - -Offset -Content -Comment - - -0x00 -Bad block marker -If any bit in this byte is zero, then this block is bad. -This applies only to the first page in a block. In the remaining -pages this byte is reserved - - -0x01 -Reserved -Reserved - - -0x02-0x27 -Autoplace 0 - 37 - - - -0x28 -ECC byte 0 -Error correction code byte 0 of the first 256 Byte data in -this page - - -0x29 -ECC byte 1 -Error correction code byte 1 of the first 256 Bytes of data -in this page - - -0x2A -ECC byte 2 -Error correction code byte 2 of the first 256 Bytes data in -this page - - -0x2B -ECC byte 3 -Error correction code byte 0 of the second 256 Bytes of data -in this page - - -0x2C -ECC byte 4 -Error correction code byte 1 of the second 256 Bytes of data -in this page - - -0x2D -ECC byte 5 -Error correction code byte 2 of the second 256 Bytes of data -in this page - - -0x2E -ECC byte 6 -Error correction code byte 0 of the third 256 Bytes of data -in this page - - -0x2F -ECC byte 7 -Error correction code byte 1 of the third 256 Bytes of data -in this page - - -0x30 -ECC byte 8 -Error correction code byte 2 of the third 256 Bytes of data -in this page - - -0x31 -ECC byte 9 -Error correction code byte 0 of the fourth 256 Bytes of data -in this page - - -0x32 -ECC byte 10 -Error correction code byte 1 of the fourth 256 Bytes of data -in this page - - -0x33 -ECC byte 11 -Error correction code byte 2 of the fourth 256 Bytes of data -in this page - - -0x34 -ECC byte 12 -Error correction code byte 0 of the fifth 256 Bytes of data -in this page - - -0x35 -ECC byte 13 -Error correction code byte 1 of the fifth 256 Bytes of data -in this page - - -0x36 -ECC byte 14 -Error correction code byte 2 of the fifth 256 Bytes of data -in this page - - -0x37 -ECC byte 15 -Error correction code byte 0 of the sixt 256 Bytes of data -in this page - - -0x38 -ECC byte 16 -Error correction code byte 1 of the sixt 256 Bytes of data -in this page - - -0x39 -ECC byte 17 -Error correction code byte 2 of the sixt 256 Bytes of data -in this page - - -0x3A -ECC byte 18 -Error correction code byte 0 of the seventh 256 Bytes of -data in this page - - -0x3B -ECC byte 19 -Error correction code byte 1 of the seventh 256 Bytes of -data in this page - - -0x3C -ECC byte 20 -Error correction code byte 2 of the seventh 256 Bytes of -data in this page - - -0x3D -ECC byte 21 -Error correction code byte 0 of the eigth 256 Bytes of data -in this page - - -0x3E -ECC byte 22 -Error correction code byte 1 of the eigth 256 Bytes of data -in this page - - -0x3F -ECC byte 23 -Error correction code byte 2 of the eigth 256 Bytes of data -in this page - - - - - - - - Filesystem support - - The NAND driver provides all neccecary functions for a - filesystem via the MTD interface. - - - Filesystems must be aware of the NAND pecularities and - restrictions. One major restrictions of NAND Flash is, that you cannot - write as often as you want to a page. The consecutive writes to a page, - before erasing it again, are restricted to 1-3 writes, depending on the - manufacturers specifications. This applies similar to the spare area. - - - Therefor NAND aware filesystems must either write in page size chunks - or hold a writebuffer to collect smaller writes until they sum up to - pagesize. Available NAND aware filesystems: JFFS2, YAFFS. - - - The spare area usage to store filesystem data is controlled by - the spare area placement functionality which is described in one - of the earlier chapters. - - - - Tools - - The MTD project provides a couple of helpful tools to handle NAND Flash. - - flasherase, flasheraseall: Erase and format FLASH partitions - nandwrite: write filesystem images to NAND FLASH - nanddump: dump the contents of a NAND FLASH partitions - - - - These tools are aware of the NAND restrictions. Please use those tools - instead of complaining about errors which are caused by non NAND aware - access methods. - - - - - Constants - - This chapter describes the constants which might be relevant for a driver developer. - - - Chip option constants - - Constants for chip id table - - These constants are defined in nand.h. They are ored together to describe - the chip functionality. - -/* Chip can not auto increment pages */ -#define NAND_NO_AUTOINCR 0x00000001 -/* Buswitdh is 16 bit */ -#define NAND_BUSWIDTH_16 0x00000002 -/* Device supports partial programming without padding */ -#define NAND_NO_PADDING 0x00000004 -/* Chip has cache program function */ -#define NAND_CACHEPRG 0x00000008 -/* Chip has copy back function */ -#define NAND_COPYBACK 0x00000010 -/* AND Chip which has 4 banks and a confusing page / block - * assignment. See Renesas datasheet for further information */ -#define NAND_IS_AND 0x00000020 -/* Chip has a array of 4 pages which can be read without - * additional ready /busy waits */ -#define NAND_4PAGE_ARRAY 0x00000040 - - - - - Constants for runtime options - - These constants are defined in nand.h. They are ored together to describe - the functionality. - -/* Use a flash based bad block table. This option is parsed by the - * default bad block table function (nand_default_bbt). */ -#define NAND_USE_FLASH_BBT 0x00010000 -/* The hw ecc generator provides a syndrome instead a ecc value on read - * This can only work if we have the ecc bytes directly behind the - * data bytes. Applies for DOC and AG-AND Renesas HW Reed Solomon generators */ -#define NAND_HWECC_SYNDROME 0x00020000 - - - - - - - ECC selection constants - - Use these constants to select the ECC algorithm. - -/* No ECC. Usage is not recommended ! */ -#define NAND_ECC_NONE 0 -/* Software ECC 3 byte ECC per 256 Byte data */ -#define NAND_ECC_SOFT 1 -/* Hardware ECC 3 byte ECC per 256 Byte data */ -#define NAND_ECC_HW3_256 2 -/* Hardware ECC 3 byte ECC per 512 Byte data */ -#define NAND_ECC_HW3_512 3 -/* Hardware ECC 6 byte ECC per 512 Byte data */ -#define NAND_ECC_HW6_512 4 -/* Hardware ECC 6 byte ECC per 512 Byte data */ -#define NAND_ECC_HW8_512 6 - - - - - - Hardware control related constants - - These constants describe the requested hardware access function when - the boardspecific hardware control function is called - -/* Select the chip by setting nCE to low */ -#define NAND_CTL_SETNCE 1 -/* Deselect the chip by setting nCE to high */ -#define NAND_CTL_CLRNCE 2 -/* Select the command latch by setting CLE to high */ -#define NAND_CTL_SETCLE 3 -/* Deselect the command latch by setting CLE to low */ -#define NAND_CTL_CLRCLE 4 -/* Select the address latch by setting ALE to high */ -#define NAND_CTL_SETALE 5 -/* Deselect the address latch by setting ALE to low */ -#define NAND_CTL_CLRALE 6 -/* Set write protection by setting WP to high. Not used! */ -#define NAND_CTL_SETWP 7 -/* Clear write protection by setting WP to low. Not used! */ -#define NAND_CTL_CLRWP 8 - - - - - - Bad block table related constants - - These constants describe the options used for bad block - table descriptors. - -/* Options for the bad block table descriptors */ - -/* The number of bits used per block in the bbt on the device */ -#define NAND_BBT_NRBITS_MSK 0x0000000F -#define NAND_BBT_1BIT 0x00000001 -#define NAND_BBT_2BIT 0x00000002 -#define NAND_BBT_4BIT 0x00000004 -#define NAND_BBT_8BIT 0x00000008 -/* The bad block table is in the last good block of the device */ -#define NAND_BBT_LASTBLOCK 0x00000010 -/* The bbt is at the given page, else we must scan for the bbt */ -#define NAND_BBT_ABSPAGE 0x00000020 -/* The bbt is at the given page, else we must scan for the bbt */ -#define NAND_BBT_SEARCH 0x00000040 -/* bbt is stored per chip on multichip devices */ -#define NAND_BBT_PERCHIP 0x00000080 -/* bbt has a version counter at offset veroffs */ -#define NAND_BBT_VERSION 0x00000100 -/* Create a bbt if none axists */ -#define NAND_BBT_CREATE 0x00000200 -/* Search good / bad pattern through all pages of a block */ -#define NAND_BBT_SCANALLPAGES 0x00000400 -/* Scan block empty during good / bad block scan */ -#define NAND_BBT_SCANEMPTY 0x00000800 -/* Write bbt if neccecary */ -#define NAND_BBT_WRITE 0x00001000 -/* Read and write back block contents when writing bbt */ -#define NAND_BBT_SAVECONTENT 0x00002000 - - - - - - - - Structures - - This chapter contains the autogenerated documentation of the structures which are - used in the NAND driver and might be relevant for a driver developer. Each - struct member has a short description which is marked with an [XXX] identifier. - See the chapter "Documentation hints" for an explanation. - -!Iinclude/linux/mtd/nand.h - - - - Public Functions Provided - - This chapter contains the autogenerated documentation of the NAND kernel API functions - which are exported. Each function has a short description which is marked with an [XXX] identifier. - See the chapter "Documentation hints" for an explanation. - -!Edrivers/mtd/nand/nand_base.c -!Edrivers/mtd/nand/nand_bbt.c -!Edrivers/mtd/nand/nand_ecc.c - - - - Internal Functions Provided - - This chapter contains the autogenerated documentation of the NAND driver internal functions. - Each function has a short description which is marked with an [XXX] identifier. - See the chapter "Documentation hints" for an explanation. - The functions marked with [DEFAULT] might be relevant for a board driver developer. - -!Idrivers/mtd/nand/nand_base.c -!Idrivers/mtd/nand/nand_bbt.c -!Idrivers/mtd/nand/nand_ecc.c - - - - Credits - - The following people have contributed to the NAND driver: - - Steven J. Hillsjhill@realitydiluted.com - David Woodhousedwmw2@infradead.org - Thomas Gleixnertglx@linutronix.de - - A lot of users have provided bugfixes, improvements and helping hands for testing. - Thanks a lot. - - - The following people have contributed to this document: - - Thomas Gleixnertglx@linutronix.de - - - -
diff --git a/Documentation/DocBook/procfs-guide.tmpl b/Documentation/DocBook/procfs-guide.tmpl index 34206230c..669b0466a 100644 --- a/Documentation/DocBook/procfs-guide.tmpl +++ b/Documentation/DocBook/procfs-guide.tmpl @@ -100,8 +100,8 @@ I'd like to thank Jeff Garzik jgarzik@pobox.com and Alexander Viro - viro@parcelfarce.linux.theplanet.co.uk for their input, - Tim Waugh twaugh@redhat.com for his viro@math.psu.edu for their input, Tim Waugh + twaugh@redhat.com for his Selfdocbook, and Marc Joosen marcj@historia.et.tudelft.nl for proofreading. diff --git a/Documentation/DocBook/videobook.tmpl b/Documentation/DocBook/videobook.tmpl index 2c92b1836..45243eeb2 100644 --- a/Documentation/DocBook/videobook.tmpl +++ b/Documentation/DocBook/videobook.tmpl @@ -731,14 +731,13 @@ static int io = 0x300; static int io = -1; -#endif MODULE_AUTHOR("Alan Cox"); MODULE_DESCRIPTION("A driver for an imaginary radio card."); -module_param(io, int, 0444); +MODULE_PARM(io, "i"); MODULE_PARM_DESC(io, "I/O address of the card."); -static int __init init(void) +int init_module(void) { if(io==-1) { @@ -749,26 +748,25 @@ static int __init init(void) return myradio_init(NULL); } -static void __exit cleanup(void) +void cleanup_module(void) { video_unregister_device(&my_radio); release_region(io, MY_IO_SIZE); } -module_init(init); -module_exit(cleanup); +#endif In this example we set the IO base by default if the driver is compiled into - the kernel: you can still set it using "my_radio.irq" if this file is called my_radio.c. For the module we require the + the kernel where you cannot pass a parameter. For the module we require the user sets the parameter. We set io to a nonsense port (-1) so that we can tell if the user supplied an io parameter or not. We use MODULE_ defines to give an author for the card driver and a description. We also use them to declare that io is an integer and it is the - address of the card, and can be read by anyone from sysfs. + address of the card. The clean-up routine unregisters the video_device we registered, and frees diff --git a/Documentation/IO-mapping.txt b/Documentation/IO-mapping.txt index 86edb61bd..ddc817346 100644 --- a/Documentation/IO-mapping.txt +++ b/Documentation/IO-mapping.txt @@ -119,10 +119,9 @@ you can't use it from the bus master. So why do we care about the physical address at all? We do need the physical address in some cases, it's just not very often in normal code. The physical address is needed if you use memory mappings, for example, because the -"remap_pfn_range()" mm function wants the physical address of the memory to -be remapped as measured in units of pages, a.k.a. the pfn (the memory -management layer doesn't know about devices outside the CPU, so it -shouldn't need to know about "bus addresses" etc). +"remap_page_range()" mm function wants the physical address of the memory to +be remapped (the memory management layer doesn't know about devices outside +the CPU, so it shouldn't need to know about "bus addresses" etc). NOTE NOTE NOTE! The above is only one part of the whole equation. The above only talks about "real memory", that is, CPU memory (RAM). diff --git a/Documentation/RCU/listRCU.txt b/Documentation/RCU/listRCU.txt index bda6ead69..46950afda 100644 --- a/Documentation/RCU/listRCU.txt +++ b/Documentation/RCU/listRCU.txt @@ -82,7 +82,7 @@ lock might be used as follows for deletion and insertion: list_for_each_entry(e, list, list) { if (!audit_compare_rule(rule, &e->rule)) { list_del(&e->list); - write_unlock(&auditsc_lock); + call_rcu(&e->rcu, audit_free_rule, e); return 0; } } diff --git a/Documentation/arm/Booting b/Documentation/arm/Booting index fad566bb0..a851d039a 100644 --- a/Documentation/arm/Booting +++ b/Documentation/arm/Booting @@ -118,10 +118,6 @@ to store page tables. The recommended placement is 32KiB into RAM. In either case, the following conditions must be met: -- Quiesce all DMA capable devicess so that memory does not get - corrupted by bogus network packets or disk data. This will save - you many hours of debug. - - CPU register settings r0 = 0, r1 = machine type number discovered in (3) above. diff --git a/Documentation/arm/IXP2000 b/Documentation/arm/IXP2000 index 969f16593..48ba502fa 100644 --- a/Documentation/arm/IXP2000 +++ b/Documentation/arm/IXP2000 @@ -18,7 +18,7 @@ http://developer.intel.com/design/network/products/npfamily/ixp2xxx.htm 2. Linux Support -Linux currently supports the following features on the IXP2000 NPUs: +Linux currently supports the following features on the IXP2000 NPUS: - On-chip serial - PCI @@ -30,10 +30,10 @@ That is about all we can support under Linux ATM b/c the core networking components of the chip are accessed via Intel's closed source SDK. Please contact Intel directly on issues with using those. There is also a mailing list run by some folks at Princeton University that might -be of help: https://lists.cs.princeton.edu/mailman/listinfo/ixp2xxx +be of helpful: https://lists.cs.princeton.edu/mailman/listinfo/ixp2xxx WHATEVER YOU DO, DO NOT POST EMAIL TO THE LINUX-ARM OR LINUX-ARM-KERNEL -MAILING LISTS REGARDING THE INTEL SDK. +MAILINNG LISTS REGARDING THE INTEL SDK. 3. Supported Platforms @@ -47,12 +47,12 @@ MAILING LISTS REGARDING THE INTEL SDK. - The IXP2000 platforms ususally have rather complex PCI bus topologies with large memory space requirements. In addition, b/c of the way the - Intel SDK is designed, devices are enumerated in a very specific + Intel SDK is designed, devices are enumerated in a vert specific way. B/c of this this, we use "pci=firmware" option in the kernel command line so that we do not re-enumerate the bus. - IXDP2x01 systems have variable clock tick rates that we cannot determine - via HW registers. The "ixdp2x01_clk=XXX" cmd line options allow you + via HW registers. The "ixdp2x01_clk=XXX" cmd line options allows you to pass the clock rate to the board port. 5. Thanks diff --git a/Documentation/arm/IXP4xx b/Documentation/arm/IXP4xx index 2e1590b42..d86d818a4 100644 --- a/Documentation/arm/IXP4xx +++ b/Documentation/arm/IXP4xx @@ -122,15 +122,6 @@ http://developer.intel.com/design/network/products/npfamily/ixdp425.htm also known as the Richfield board. It contains 4 PCI slots, 16MB of flash, two 10/100 ports and one ADSL port. -Intel IXDPG425 Development Platform - - This is basically and ADI Coyote board with a NEC EHCI controller - added. One issue with this board is that the mini-PCI slots only - have the 3.3v line connected, so you can't use a PCI to mini-PCI - adapter with an E100 card. So to NFS root you need to use either - the CSR or a WiFi card and a ramdisk that BOOTPs and then does - a pivot_root to NFS. - Motorola PrPMC1100 Processor Mezanine Card http://www.fountainsys.com/datasheet/PrPMC1100.pdf @@ -161,4 +152,4 @@ Robert E. Ranslam ------------------------------------------------------------------------- -Last Update: 11/16/2004 +Last Update: 5/13/2004 diff --git a/Documentation/arm/README b/Documentation/arm/README index a6f718e90..1dd5d6cb7 100644 --- a/Documentation/arm/README +++ b/Documentation/arm/README @@ -163,9 +163,9 @@ CONFIG_MACH_ and CONFIG_ARCH_ -Kernel entry (head.S) +Kernel entry (head-armv.S) -------------------------- - The initial entry into the kernel is via head.S, which uses machine + The initial entry into the kernel is via head-armv.S, which uses machine independent code. The machine is selected by the value of 'r1' on entry, which must be kept unique. diff --git a/Documentation/arm/Samsung-S3C24XX/EB2410ITX.txt b/Documentation/arm/Samsung-S3C24XX/EB2410ITX.txt index 000e3d7a7..831b98c73 100644 --- a/Documentation/arm/Samsung-S3C24XX/EB2410ITX.txt +++ b/Documentation/arm/Samsung-S3C24XX/EB2410ITX.txt @@ -15,7 +15,7 @@ Configuration ------------- To set the default configuration, use `make bast_defconfig` which - supports the commonly used features of this board. + supports the commonly used features of this board Support @@ -23,23 +23,15 @@ Support Official support information can be found on the Simtec Electronics website, at the product page http://www.simtec.co.uk/products/EB2410ITX/ - - Useful links: - - - Resources Page http://www.simtec.co.uk/products/EB2410ITX/resources.html - - - Board FAQ at http://www.simtec.co.uk/products/EB2410ITX/faq.html - - - Bootloader info http://www.simtec.co.uk/products/SWABLE/resources.html - and FAQ http://www.simtec.co.uk/products/SWABLE/faq.html + and http://www.simtec.co.uk/products/EB2410ITX/resources.html MTD --- - The NAND and NOR support has been merged from the linux-mtd project. - Any prolbems, see http://www.linux-mtd.infradead.org/ for more - information or up-to-date versions of linux-mtd. + The NAND and NOR onboard are currently supported in the linux-mtd cvs, + and are awaiting merge in the mainline. see the linux-mtd project at + http://www.linux-mtd.infradead.org/ for more information. IDE @@ -49,10 +41,4 @@ IDE changing speed of devices, PIO Mode 4 capable drives should be used. -Maintainers ------------ - - This board is maintained by Simtec Electronics. - - (c) 2004 Ben Dooks, Simtec Electronics diff --git a/Documentation/arm/Samsung-S3C24XX/Overview.txt b/Documentation/arm/Samsung-S3C24XX/Overview.txt index b8ba49250..aa3f83aa2 100644 --- a/Documentation/arm/Samsung-S3C24XX/Overview.txt +++ b/Documentation/arm/Samsung-S3C24XX/Overview.txt @@ -48,9 +48,9 @@ Machines NAND ---- - The current kernels now have support for the s3c2410 NAND - controller. If there are any problems the latest linux-mtd - CVS can be found from http://www.linux-mtd.infradead.org/ + The current kernels do not have direct support for the NAND + controller, the latest linux-mtd CVS has support for this. + See http://www.linux-mtd.infradead.org/ Serial @@ -84,21 +84,12 @@ Clock Management Port Contributors ----------------- - Ben Dooks (BJD) + Ben Dooks Vincent Sanders Herbert Potzl - Arnaud Patard (RTP) + Arnaud Patard Roc Wu - Klaus Fetscher - Dimitry Andric -Document Changes ----------------- - - 05 Sep 2004 - BJD - Added Document Changes section - 05 Sep 2004 - BJD - Added Klaus Fetscher to list of contributors - 25 Oct 2004 - BJD - Added Dimitry Andric to list of contributors - 25 Oct 2004 - BJD - Updated the MTD from the 2.6.9 merge Document Author --------------- diff --git a/Documentation/arm/Samsung-S3C24XX/Suspend.txt b/Documentation/arm/Samsung-S3C24XX/Suspend.txt deleted file mode 100644 index e12bc3284..000000000 --- a/Documentation/arm/Samsung-S3C24XX/Suspend.txt +++ /dev/null @@ -1,106 +0,0 @@ - S3C24XX Suspend Support - ======================= - - -Introduction ------------- - - The S3C2410 supports a low-power suspend mode, where the SDRAM is kept - in Self-Refresh mode, and all but the essential peripheral blocks are - powered down. For more information on how this works, please look - at the S3C2410 datasheets from Samsung. - - -Requirements ------------- - - 1) A bootloader that can support the necessary resume operation - - 2) Support for at least 1 source for resume - - 3) CONFIG_PM enabled in the kernel - - 4) Any peripherals that are going to be powered down at the same - time require suspend/resume support. - - -Resuming --------- - - The S3C2410 user manual defines the process of sending the CPU to - sleep and how it resumes. The default behaviour of the Linux code - is to set the GSTATUS3 register to the physical address of the - code to resume Linux operation. - - GSTATUS4 is currently left alone by the sleep code, and is free to - use for any other purposes (for example, the EB2410ITX uses this to - save memory configuration in). - - -Machine Support ---------------- - - The machine specific functions must call the s3c2410_pm_init() function - to say that its bootloader is capable of resuming. This can be as - simple as adding the following to the machine's definition: - - INITMACHINE(s3c2410_pm_init) - - A board can do its own setup before calling s3c2410_pm_init, if it - needs to setup anything else for power management support. - - There is currently no support for over-riding the default method of - saving the resume address, if your board requires it, then contact - the maintainer and discuss what is required. - - Note, the original method of adding an late_initcall() is wrong, - and will end up initialising all compiled machines' pm init! - - -Debugging ---------- - - There are several important things to remember when using PM suspend: - - 1) The uart drivers will disable the clocks to the UART blocks when - suspending, which means that use of printascii() or similar direct - access to the UARTs will cause the debug to stop. - - 2) Whilst the pm code itself will attempt to re-enable the UART clocks, - care should be taken that any external clock sources that the UARTs - rely on are still enabled at that point. - - -Configuration -------------- - - The S3C2410 specific configuration in `System Type` defines various - aspects of how the S3C2410 suspend and resume support is configured - - `S3C2410 PM Suspend debug` - - This option prints messages to the serial console before and after - the actual suspend, giving detailed information on what is - happening - - - `S3C2410 PM Suspend Memory CRC` - - Allows the entire memory to be checksummed before and after the - suspend to see if there has been any corruption of the contents. - - This support requires the CRC32 function to be enabled. - - - `S3C2410 PM Suspend CRC Chunksize (KiB)` - - Defines the size of memory each CRC chunk covers. A smaller value - will mean that the CRC data block will take more memory, but will - identify any faults with better precision - - -Document Author ---------------- - -Ben Dooks, (c) 2004 Simtec Electronics - diff --git a/Documentation/arm/Sharp-LH/IOBarrier b/Documentation/arm/Sharp-LH/IOBarrier index c0d885367..bf34e046e 100644 --- a/Documentation/arm/Sharp-LH/IOBarrier +++ b/Documentation/arm/Sharp-LH/IOBarrier @@ -5,7 +5,7 @@ Due to an unfortunate oversight when the Card Engines were designed, the signals that control access to some peripherals, most notably the SMC91C9111 ethernet controller, are not properly handled. -The symptom is that some back to back IO with the peripheral returns +The symptom is that back to back IO with the peripheral returns unreliable data. With the SMC chip, you'll see errors about the bank register being 'screwed'. @@ -13,33 +13,20 @@ The cause is that the AEN signal to the SMC chip does not transition for every memory access. It is driven through the CPLD from the CS7 line of the CPU's static memory controller which is optimized to eliminate unnecessary transitions. Yet, the SMC requires a transition -for every write access. The Sharp website has more information about -the effect this power-conserving feature has on peripheral -interfacing. +for every access. The Sharp website has more information on the +effect of this power conservation feature on peripheral interfacing. -The solution is to follow every write access to the SMC chip with an -access to another memory region that will force the CPU to release the -chip select line. It is important to guarantee that this access -forces the CPU off-chip. We map a page of SDRAM as if it were an -uncacheable IO device and read from it after every SMC IO write -operation. +The solution is to follow every access to the SMC chip with an access +to another memory region that will force the CPU to release the chip +select line. Note that it is important to guarantee that the access +will force the CPU off-chip. We map a page of SDRAM as if it were an +uncacheable IO device and read from it after every SMC IO operation. SMC IO BARRIER IO -Only this sequence is important. It does not matter that there is no -BARRIER IO before the access to the SMC chip because the AEN latch -only needs occurs after the SMC IO write cycle. The routines that -implement this work-around make an additional concession which is to -disable interrupts during the IO sequence. Other hardware devices -(the LogicPD CPLD) have registers in the same the physical memory -region as the SMC chip. An interrupt might allow an access to one of -those registers while SMC IO is being performed. - -You might be tempted to think that we have to access another device +You might be tempted to believe that we must access another device attached to the static memory controller, but the empirical evidence indicates that this is not so. Mapping 0x00000000 (flash) and 0xc0000000 (SDRAM) appear to have the same effect. Using SDRAM seems -to be faster. Choosing to access an undecoded memory region is not -desirable as there is no way to know how that chip select will be used -in the future. +to be faster. diff --git a/Documentation/block/as-iosched.txt b/Documentation/block/as-iosched.txt index 6f47332c8..fd763cc48 100644 --- a/Documentation/block/as-iosched.txt +++ b/Documentation/block/as-iosched.txt @@ -132,7 +132,7 @@ a combination of IO behavior from all those devices. Tuning the anticipatory IO scheduler ------------------------------------ When using 'as', the anticipatory IO scheduler there are 5 parameters under -/sys/block/*/queue/iosched/. All are units of milliseconds. +/sys/block/*/iosched/. All are units of milliseconds. The parameters are: * read_expire diff --git a/Documentation/block/biodoc.txt b/Documentation/block/biodoc.txt index 6dd274d7e..f24dbcaca 100644 --- a/Documentation/block/biodoc.txt +++ b/Documentation/block/biodoc.txt @@ -1172,7 +1172,8 @@ PIO drivers (or drivers that need to revert to PIO transfer once in a while (IDE for example)), where the CPU is doing the actual data transfer a virtual mapping is needed. If the driver supports highmem I/O, (Sec 1.1, (ii) ) it needs to use __bio_kmap_atomic and bio_kmap_irq to -temporarily map a bio into the virtual address space. +temporarily map a bio into the virtual address space. See how IDE handles +this with ide_map_buffer. 8. Prior/Related/Impacted patches diff --git a/Documentation/block/deadline-iosched.txt b/Documentation/block/deadline-iosched.txt index c918b3a60..2b1318600 100644 --- a/Documentation/block/deadline-iosched.txt +++ b/Documentation/block/deadline-iosched.txt @@ -9,7 +9,7 @@ Each io queue has a set of io scheduler tunables associated with it. These tunables control how the io scheduler works. You can find these entries in: -/sys/block//queue/iosched +/sys/block//iosched assuming that you have sysfs mounted on /sys. If you don't have sysfs mounted, you can do so by typing: diff --git a/Documentation/cdrom/00-INDEX b/Documentation/cdrom/00-INDEX index 916dafe29..eae689667 100644 --- a/Documentation/cdrom/00-INDEX +++ b/Documentation/cdrom/00-INDEX @@ -22,8 +22,6 @@ mcdx - info on improved Mitsumi CD-ROM driver. optcd - info on the Optics Storage 8000 AT CD-ROM driver -packet-writing.txt - - Info on the CDRW packet writing module sbpcd - info on the SoundBlaster/Panasonic CD-ROM interface driver. sjcd diff --git a/Documentation/cdrom/packet-writing.txt b/Documentation/cdrom/packet-writing.txt deleted file mode 100644 index d34fcbca9..000000000 --- a/Documentation/cdrom/packet-writing.txt +++ /dev/null @@ -1,86 +0,0 @@ -Getting started quick ---------------------- - -- Select packet support in the block device section and UDF support in - the file system section. - -- Compile and install kernel and modules, reboot. - -- You need the udftools package (pktsetup, mkudffs, cdrwtool). - Download from http://sourceforge.net/projects/linux-udf/ - -- Grab a new CD-RW disc and format it (assuming CD-RW is hdc, substitute - as appropriate): - # cdrwtool -d /dev/hdc -q - -- Setup your writer - # pktsetup dev_name /dev/hdc - -- Now you can mount /dev/pktcdvd/dev_name and copy files to it. Enjoy! - # mount /dev/pktcdvd/dev_name /cdrom -t udf -o rw,noatime - - -Packet writing for DVD-RW media -------------------------------- - -DVD-RW discs can be written to much like CD-RW discs if they are in -the so called "restricted overwrite" mode. To put a disc in restricted -overwrite mode, run: - - # dvd+rw-format /dev/hdc - -You can then use the disc the same way you would use a CD-RW disc: - - # pktsetup dev_name /dev/hdc - # mount /dev/pktcdvd/dev_name /cdrom -t udf -o rw,noatime - - -Packet writing for DVD+RW media -------------------------------- - -According to the DVD+RW specification, a drive supporting DVD+RW discs -shall implement "true random writes with 2KB granularity", which means -that it should be possible to put any filesystem with a block size >= -2KB on such a disc. For example, it should be possible to do: - - # mkudffs /dev/hdc - # mount /dev/hdc /cdrom -t udf -o rw,noatime - -However, some drives don't follow the specification and expect the -host to perform aligned writes at 32KB boundaries. Other drives do -follow the specification, but suffer bad performance problems if the -writes are not 32KB aligned. - -Both problems can be solved by using the pktcdvd driver, which always -generates aligned writes. - - # pktsetup dev_name /dev/hdc - # mkudffs /dev/pktcdvd/dev_name - # mount /dev/pktcdvd/dev_name /cdrom -t udf -o rw,noatime - - -Notes ------ - -- CD-RW media can usually not be overwritten more than about 1000 - times, so to avoid unnecessary wear on the media, you should always - use the noatime mount option. - -- Defect management (ie automatic remapping of bad sectors) has not - been implemented yet, so you are likely to get at least some - filesystem corruption if the disc wears out. - -- Since the pktcdvd driver makes the disc appear as a regular block - device with a 2KB block size, you can put any filesystem you like on - the disc. For example, run: - - # /sbin/mke2fs /dev/pktcdvd/dev_name - - to create an ext2 filesystem on the disc. - - -Links ------ - -See http://fy.chalmers.se/~appro/linux/DVD+RW/ for more information -about DVD writing. diff --git a/Documentation/ckrm/mem_rc.design b/Documentation/ckrm/mem_rc.design index 1c020ff5a..bc565c6a0 100644 --- a/Documentation/ckrm/mem_rc.design +++ b/Documentation/ckrm/mem_rc.design @@ -12,13 +12,9 @@ These are the events in a page's lifecycle: When the memory subsystem runs low on LRU pages, pages are reclaimed by - moving pages from active list to inactive list (refill_inactive_zone()) - - freeing pages from the inactive list (shrink_zone) + - freeing pages from the inactive list (shrink_zone) depending on the recent usage of the page(approximately). -In the process of the life cycle a page can move from the lru list to swap -and back. For this document's purpose, we treat it same as freeing and -allocating the page, respectfully. - 1. Introduction --------------- Memory resource controller controls the number of lru physical pages @@ -44,26 +40,26 @@ memory allocation logic. Note that the numbers that are specified in the shares file, doesn't directly correspond to the number of pages. But, the user can make it so by making the total_guarantee and max_limit of the default class -(/rcfs/taskclass) to be the total number of pages(given in stats file) +(/rcfs/taskclass) to be the total number of pages(given in config file) available in the system. for example: # cd /rcfs/taskclass - # grep System stats - System: tot_pages=257512,active=5897,inactive=2931,free=243991 + # cat config + res=mem;tot_pages=239778,active=60473,inactive=135285,free=44555 # cat shares res=mem,guarantee=-2,limit=-2,total_guarantee=100,max_limit=100 - "tot_pages=257512" above mean there are 257512 lru pages in + "tot_pages=239778" above mean there are 239778 lru pages in the system. By making total_guarantee and max_limit to be same as this number at this level (/rcfs/taskclass), one can make guarantee and limit in all classes refer to the number of pages. - # echo 'res=mem,total_guarantee=257512,max_limit=257512' > shares + # echo 'res=mem,total_guarantee=239778,max_limit=239778' > shares # cat shares - res=mem,guarantee=-2,limit=-2,total_guarantee=257512,max_limit=257512 + res=mem,guarantee=-2,limit=-2,total_guarantee=239778,max_limit=239778 The number of pages a class can use be anywhere between its guarantee and @@ -72,100 +68,60 @@ to choose a victim page to swap out. While the number of pages a class can have allocated may be anywhere between its guarantee and limit, victim pages will be choosen from classes that are above their guarantee. -Victim class will be chosen by the number pages a class is using over its -guarantee. i.e a class that is using 10000 pages over its guarantee will be -chosen against a class that is using 1000 pages over its guarantee. -Pages belonging to classes that are below their guarantee will not be -chosen as a victim. - -2. Configuaration parameters ---------------------------- - -Memory controller provides the following configuration parameters. Usage of -these parameters will be made clear in the following section. - -fail_over: When pages are being allocated, if the class is over fail_over % of - its limit, then fail the memory allocation. Default is 110. - ex: If limit of a class is 30000 and fail_over is 110, then memory - allocations would start failing once the class is using more than 33000 - pages. - -shrink_at: When a class is using shrink_at % of its limit, then start - shrinking the class, i.e start freeing the page to make more free pages - available for this class. Default is 90. - ex: If limit of a class is 30000 and shrink_at is 90, then pages from this - class will start to get freed when the class's usage is above 27000 +Pages will be freed from classes that are close to their "limit" before +freeing pages from the classes that are close to their guarantee. Pages +belonging to classes that are below their guarantee will not be chosen as +a victim. -shrink_to: When a class reached shrink_at % of its limit, ckrm will try to - shrink the class's usage to shrink_to %. Defalut is 80. - ex: If limit of a class is 30000 with shrink_at being 90 and shrink_to - being 80, then ckrm will try to free pages from the class when its - usage reaches 27000 and will try to bring it down to 24000. - -num_shrinks: Number of shrink attempts ckrm will do within shrink_interval - seconds. After this many attempts in a period, ckrm will not attempt a - shrink even if the class's usage goes over shrink_at %. Default is 10. - -shrink_interval: Number of seconds in a shrink period. Default is 10. - -3. Design +2. Core Design -------------------------- CKRM memory resource controller taps at appropriate low level memory management functions to associate a page with a class and to charge a class that brings the page to the LRU list. -CKRM maintains lru lists per-class instead of keeping it system-wide, so -that reducing a class's usage doesn't involve going through the system-wide -lru lists. - -3.1 Changes in page allocation function(__alloc_pages()) +2.1 Changes in page allocation function(__alloc_pages()) -------------------------------------------------------- -- If the class that the current task belong to is over 'fail_over' % of its - 'limit', allocation of page(s) fail. Otherwise, the page allocation will - proceed as before. +- If the class that the current task belong to is over 110% of its 'limit', + allocation of page(s) fail. +- After succesful allocation of a page, the page is attached with the class + to which the current task belongs to. - Note that the class is _not_ charged for the page(s) here. -3.2 Changes in page free(free_pages_bulk()) +2.2 Changes in page free(free_pages_bulk()) ------------------------------------------- -- If the page still belong to a class, the class will be credited for this - page. +- page is freed from the class it belongs to. -3.3 Adding/Deleting page to active/inactive list +2.3 Adding/Deleting page to active/inactive list ------------------------------------------------- When a page is added to the active or inactive list, the class that the -task belongs to is charged for the page usage. +page belongs to is charged for the page usage. When a page is deleted from the active or inactive list, the class that the page belongs to is credited back. -If a class uses 'shrink_at' % of its limit, attempt is made to shrink -the class's usage to 'shrink_to' % of its limit, in order to help the class -stay within its limit. +If a class uses upto its limit, attempt is made to shrink the class's usage +to 90% of its limit, in order to help the class stay within its limit. But, if the class is aggressive, and keep getting over the class's limit -often(more than such 'num_shrinks' events in 'shrink_interval' seconds), -then the memory resource controller gives up on the class and doesn't try -to shrink the class, which will eventually lead the class to reach -fail_over % and then the page allocations will start failing. +often(more than 10 shrink events in 10 seconds), then the memory resource +controller gives up on the class and doesn't try to shrink the class, which +will eventually lead the class to reach its 110% of its limit and then the +page allocations will start failing. -3.4 Changes in the page reclaimation path (refill_inactive_zone and shrink_zone) +2.4 Chages in the page reclaimation path (refill_inactive_zone and shrink_zone) ------------------------------------------------------------------------------- Pages will be moved from active to inactive list(refill_inactive_zone) and -pages from inactive list by choosing victim classes. Victim classes are -chosen depending on their usage over their guarantee. - -Classes with DONT_CARE guarantee are assumed an implicit guarantee which is -based on the number of children(with DONT_CARE guarantee) its parent has -(including the default class) and the unused pages its parent still has. -ex1: If a default root class /rcfs/taskclass has 3 children c1, c2 and c3 -and has 200000 pages, and all the classes have DONT_CARE guarantees, then -all the classes (c1, c2, c3 and the default class of /rcfs/taskclass) will -get 50000 (200000 / 4) pages each. -ex2: If, in the above example c1 is set with a guarantee of 80000 pages, -then the other classes (c2, c3 and the default class of /rcfs/taskclass) -will get 40000 ((200000 - 80000) / 3) pages each. - -3.5 Handling of Shared pages +pages from inactive list will be freed in the following order: +(range is calculated by subtracting 'guarantee' from 'limit') + - Classes that are over 110% of their range + - Classes that are over 100% of their range + - Classes that are over 75% of their range + - Classes that are over 50% of their range + - Classes that are over 25% of their range + - Classes whose parent is over 110% of its range + - Classes that are over their guarantee + +2.5 Handling of Shared pages ---------------------------- Even if a mm is shared by tasks, the pages that belong to the mm will be charged against the individual tasks that bring the page into LRU. diff --git a/Documentation/ckrm/mem_rc.usage b/Documentation/ckrm/mem_rc.usage index 3d2f2f04f..faddbf84e 100644 --- a/Documentation/ckrm/mem_rc.usage +++ b/Documentation/ckrm/mem_rc.usage @@ -16,21 +16,20 @@ For brevity, unless otherwise specified all the following commands are executed in the default class (/rcfs/taskclass). Initially, the systemwide default class gets 100% of the LRU pages, and the -stats file at the /rcfs/taskclass level displays the total number of -physical pages. +config file displays the total number of physical pages. # cd /rcfs/taskclass - # grep System stats - System: tot_pages=239778,active=60473,inactive=135285,free=44555 + # cat config + res=mem;tot_pages=239778,active=60473,inactive=135285,free=44555 # cat shares res=mem,guarantee=-2,limit=-2,total_guarantee=100,max_limit=100 tot_pages - total number of pages active - number of pages in the active list ( sum of all zones) - inactive - number of pages in the inactive list ( sum of all zones) - free - number of free pages (sum of all zones) + inactive - number of pages in the inactive list ( sum of all zones ) + free - number of free pages (sum of all pages) - By making total_guarantee and max_limit to be same as tot_pages, one can + By making total_guarantee and max_limit to be same as tot_pages, one make make the numbers in shares file be same as the number of pages for a class. @@ -38,51 +37,13 @@ physical pages. # cat shares res=mem,guarantee=-2,limit=-2,total_guarantee=239778,max_limit=239778 -Changing configuration parameters: ----------------------------------- -For description of the paramters read the file mem_rc.design in this same directory. - -Following is the default values for the configuration parameters: - - localhost:~ # cd /rcfs/taskclass - localhost:/rcfs/taskclass # cat config - res=mem,fail_over=110,shrink_at=90,shrink_to=80,num_shrinks=10,shrink_interval=10 - -Here is how to change a specific configuration parameter. Note that more than one -configuration parameter can be changed in a single echo command though for simplicity -we show one per echo. - -ex: Changing fail_over: - localhost:/rcfs/taskclass # echo "res=mem,fail_over=120" > config - localhost:/rcfs/taskclass # cat config - res=mem,fail_over=120,shrink_at=90,shrink_to=80,num_shrinks=10,shrink_interval=10 - -ex: Changing shrink_at: - localhost:/rcfs/taskclass # echo "res=mem,shrink_at=85" > config - localhost:/rcfs/taskclass # cat config - res=mem,fail_over=120,shrink_at=85,shrink_to=80,num_shrinks=10,shrink_interval=10 - -ex: Changing shrink_to: - localhost:/rcfs/taskclass # echo "res=mem,shrink_to=75" > config - localhost:/rcfs/taskclass # cat config - res=mem,fail_over=120,shrink_at=85,shrink_to=75,num_shrinks=10,shrink_interval=10 - -ex: Changing num_shrinks: - localhost:/rcfs/taskclass # echo "res=mem,num_shrinks=20" > config - localhost:/rcfs/taskclass # cat config - res=mem,fail_over=120,shrink_at=85,shrink_to=75,num_shrinks=20,shrink_interval=10 - -ex: Changing shrink_interval: - localhost:/rcfs/taskclass # echo "res=mem,shrink_interval=15" > config - localhost:/rcfs/taskclass # cat config - res=mem,fail_over=120,shrink_at=85,shrink_to=75,num_shrinks=20,shrink_interval=15 Class creation -------------- # mkdir c1 -Its initial share is DONT_CARE. The parent's share values will be unchanged. +Its initial share is don't care. The parent's share values will be unchanged. Setting a new class share ------------------------- @@ -101,7 +62,6 @@ Monitoring stats file shows statistics of the page usage of a class # cat stats ----------- Memory Resource stats start ----------- - System: tot_pages=239778,active=60473,inactive=135285,free=44555 Number of pages used(including pages lent to children): 196654 Number of pages guaranteed: 239778 Maximum limit of pages: 239778 diff --git a/Documentation/ckrm/numtasks b/Documentation/ckrm/numtasks deleted file mode 100644 index 94b4b09ef..000000000 --- a/Documentation/ckrm/numtasks +++ /dev/null @@ -1,122 +0,0 @@ -Introduction -------------- - -Numtasks is a resource controller under the CKRM framework that allows the -user/sysadmin to manage the number of tasks a class can create. It also allows -one to limit the fork rate across the system. - -As with any other resource under the CKRM framework, numtasks also assigns -all the resources to the detault class(/rcfs/taskclass). Since , the number -of tasks in a system is not limited, this resource controller provides a -way to set the total number of tasks available in the system through the config -file. By default this value is 128k(131072). In other words, if not changed, -the total number of tasks allowed in a system is 131072. - -The config variable that affect this is sys_total_tasks. - -This resource controller also allows the sysadmin to limit the number of forks -that are allowed in the system within the specified number of seconds. This -can be acheived by changing the attributes forkrate and forkrate_interval in -the config file. Through this feature one can protect the system from being -attacked by fork bomb type applications. - -Installation -------------- - -1. Configure "Number of Tasks Resource Manager" under CKRM (see - Documentation/ckrm/installation). This can be configured as a module - also. But, when inserted as a module it cannot be removed. - -2. Reboot the system with the new kernel. Insert the module, if compiled - as a module. - -3. Verify that the memory controller is present by reading the file - /rcfs/taskclass/config (should show a line with res=numtasks) - -Usage ------ - -For brevity, unless otherwise specified all the following commands are -executed in the default class (/rcfs/taskclass). - -As explained above the config file shows sys_total_tasks and forkrate -info. - - # cd /rcfs/taskclass - # cat config - res=numtasks,sys_total_tasks=131072,forkrate=1000000,forkrate_interval=3600 - -By default, the sys_total_tasks is set to 131072(128k), and forkrate is set -to 1 million and forkrate_interval is set to 3600 seconds. Which means the -total number of tasks in a system is limited to 131072 and the forks are -limited to 1 million per hour. - -sysadmin can change these values by just writing the attribute/value pair -to the config file. - - # echo res=numtasks,forkrate=100,forkrate_interval=10 > config - # cat config - res=numtasks,sys_total_tasks=1000,forkrate=100,forkrate_interval=10 - - # echo res=numtasks,forkrate=100,forkrate_interval=10 > config - # cat config - res=numtasks,sys_total_tasks=1000,forkrate=100,forkrate_interval=10 - -By making total_guarantee and max_limit to be same as sys_total_tasks, -sysadmin can make the numbers in shares file be same as the number of tasks -for a class. - - # echo res=numtasks,total_guarantee=131072,max_limit=131072 > shares - # cat shares - res=numtasks,guarantee=-2,limit=-2,total_guarantee=131072,max_limit=131072 - - -Class creation --------------- - - # mkdir c1 - -Its initial share is don't care. The parent's share values will be unchanged. - -Setting a new class share -------------------------- - -'guarantee' specifies the number of tasks this class is entitled to get -'limit' is the maximum number of tasks this class can get. - -Following command will set the guarantee of class c1 to be 25000 and the limit -to be 50000 - - # echo 'res=numtasks,guarantee=25000,limit=50000' > c1/shares - # cat c1/shares - res=numtasks,guarantee=25000,limit=50000,total_guarantee=100,max_limit=100 - -Limiting forks in a time period -------------------------------- -By default, this resource controller allows forking of 1 million tasks in -an hour. - -Folowing command would change it to allow only 100 forks per 10 seconds - - # echo res=numtasks,forkrate=100,forkrate_interval=10 > config - # cat config - res=numtasks,sys_total_tasks=1000,forkrate=100,forkrate_interval=10 - -Note that the same set of values is used across the system. In other words, -each individual class will be allowed 'forkrate' forks in 'forkrate_interval' -seconds. - -Monitoring ----------- - -stats file shows statistics of the number of tasks usage of a class -[root@localhost taskclass]# cat stats -Number of tasks resource: -Total Over limit failures: 0 -Total Over guarantee sucesses: 0 -Total Over guarantee failures: 0 -Maximum Over limit failures: 0 -Maximum Over guarantee sucesses: 0 -Maximum Over guarantee failures: 0 -cur_alloc 38; borrowed 0; cnt_guar 131072; cnt_limit 131072 cnt_unused 131072, unused_guarantee 100, cur_max_limit 0 - diff --git a/Documentation/computone.txt b/Documentation/computone.txt index b1cf59b84..ea2b5d3e3 100644 --- a/Documentation/computone.txt +++ b/Documentation/computone.txt @@ -1,13 +1,3 @@ -NOTE: This is an unmaintained driver. It is not guaranteed to work due to -changes made in the tty layer in 2.6. If you wish to take over maintenance of -this driver, contact Michael Warfield . - -Changelog: ----------- -11-01-2001: Original Document - -10-29-2004: Minor misspelling & format fix, update status of driver. - James Nelson Computone Intelliport II/Plus Multiport Serial Driver ----------------------------------------------------- @@ -156,7 +146,7 @@ selects polled mode). If no base addresses are specified the defaults in ip2.c are used. If you are autoloading the driver module with kerneld or kmod the base addresses and interrupt number must also be set in ip2.c and recompile or just insert and options line in /etc/modprobe.conf or both. -The options line is equivalent to the command line and takes precedence over +The options line is equivalent to the command line and takes precidence over what is in ip2.c. /etc/modprobe.conf sample: @@ -176,8 +166,7 @@ The equivalent for the kernel command line (in lilo.conf): Note: Both io and irq should be updated to reflect YOUR system. An "io" - address of 1 or 2 indicates a PCI or EISA card in the board table. - The PCI or EISA irq will be assigned automatically. + address of 1 or 2 indicates a PCI or EISA card in the board table. The PCI or EISA irq will be assigned automatically. Specifying an invalid or in-use irq will default the driver into running in polled mode for that card. If all irq entries are 0 then diff --git a/Documentation/cpqarray.txt b/Documentation/cpqarray.txt index c7154e20e..d0e185f7c 100644 --- a/Documentation/cpqarray.txt +++ b/Documentation/cpqarray.txt @@ -26,13 +26,31 @@ unable to test against these cards: * IDA-2 * IAES +Installing: +----------- + +You need to build a new kernel to use this device, even if you want to +use a loadable module. + +Apply the patch to a 2.2.x kernel: + +# cd linux +# patch -p1 - - -1999 : Original Document diff --git a/Documentation/cpu-freq/cpufreq-nforce2.txt b/Documentation/cpu-freq/cpufreq-nforce2.txt deleted file mode 100644 index 9188337d8..000000000 --- a/Documentation/cpu-freq/cpufreq-nforce2.txt +++ /dev/null @@ -1,19 +0,0 @@ - -The cpufreq-nforce2 driver changes the FSB on nVidia nForce2 plattforms. - -This works better than on other plattforms, because the FSB of the CPU -can be controlled independently from the PCI/AGP clock. - -The module has two options: - - fid: multiplier * 10 (for example 8.5 = 85) - min_fsb: minimum FSB - -If not set, fid is calculated from the current CPU speed and the FSB. -min_fsb defaults to FSB at boot time - 50 MHz. - -IMPORTANT: The available range is limited downwards! - Also the minimum available FSB can differ, for systems - booting with 200 MHz, 150 should always work. - - diff --git a/Documentation/cpu-freq/user-guide.txt b/Documentation/cpu-freq/user-guide.txt index 7fedc00c3..5e6391ca9 100644 --- a/Documentation/cpu-freq/user-guide.txt +++ b/Documentation/cpu-freq/user-guide.txt @@ -65,7 +65,6 @@ Intel Pentium 4, Intel Xeon Intel Pentium M (Centrino) National Semiconductors Geode GX Transmeta Crusoe -Transmeta Efficeon VIA Cyrix 3 / C3 various processors on some ACPI 2.0-compatible systems [*] diff --git a/Documentation/crypto/api-intro.txt b/Documentation/crypto/api-intro.txt index fa0c8b974..62778c57f 100644 --- a/Documentation/crypto/api-intro.txt +++ b/Documentation/crypto/api-intro.txt @@ -231,9 +231,6 @@ Whirlpool algorithm contributors: Aaron Grothe Jean-Luc Cooke -Anubis algorithm contributors: - Aaron Grothe - Generic scatterwalk code by Adam J. Richter Please send any credits updates or corrections to: diff --git a/Documentation/devices.txt b/Documentation/devices.txt index 60ce4ae9d..c46f5961a 100644 --- a/Documentation/devices.txt +++ b/Documentation/devices.txt @@ -100,7 +100,6 @@ Your cooperation is appreciated. 9 = /dev/urandom Faster, less secure random number gen. 10 = /dev/aio Asyncronous I/O notification interface 11 = /dev/kmsg Writes to this come out as printk's - 12 = /dev/oldmem Access to kexec-ed crash dump 1 block RAM disk 0 = /dev/ram0 First RAM disk 1 = /dev/ram1 Second RAM disk @@ -2547,7 +2546,12 @@ Your cooperation is appreciated. 0 = /dev/usb/lp0 First USB printer ... 15 = /dev/usb/lp15 16th USB printer - 32 = /dev/usb/mdc800 MDC800 USB camera + 16 = /dev/usb/mouse0 First USB mouse + ... + 31 = /dev/usb/mouse15 16th USB mouse + 32 = /dev/usb/ez0 First USB firmware loader + ... + 47 = /dev/usb/ez15 16th USB firmware loader 48 = /dev/usb/scanner0 First USB scanner ... 63 = /dev/usb/scanner15 16th USB scanner @@ -2555,22 +2559,6 @@ Your cooperation is appreciated. 65 = /dev/usb/usblcd USBLCD Interface (info@usblcd.de) 66 = /dev/usb/cpad0 Synaptics cPad (mouse/LCD) - 96 = /dev/usb/hiddev0 1st USB HID device - ... - 111 = /dev/usb/hiddev15 16th USB HID device - 112 = /dev/usb/auer0 1st auerswald ISDN device - ... - 127 = /dev/usb/auer15 16th auerswald ISDN device - 128 = /dev/usb/brlvgr0 First Braille Voyager device - ... - 131 = /dev/usb/brlvgr3 Fourth Braille Voyager device - 144 = /dev/usb/lcd USB LCD device - 160 = /dev/usb/legousbtower0 1st USB Legotower device - ... - 175 = /dev/usb/legousbtower15 16th USB Legotower device - 240 = /dev/usb/dabusb0 First daubusb device - ... - 243 = /dev/usb/dabusb3 Fourth dabusb device 181 char Conrad Electronic parallel port radio clocks 0 = /dev/pcfclock0 First Conrad radio clock @@ -2759,10 +2747,6 @@ Your cooperation is appreciated. 43 = /dev/ttySMX2 Motorola i.MX - port 2 44 = /dev/ttyMM0 Marvell MPSC - port 0 45 = /dev/ttyMM1 Marvell MPSC - port 1 - 46 = /dev/ttyCPM0 PPC CPM (SCC or SMC) - port 0 - ... - 49 = /dev/ttyCPM5 PPC CPM (SCC or SMC) - port 5 - 205 char Low-density serial ports (alternate device) 0 = /dev/culu0 Callout device for ttyLU0 @@ -2791,9 +2775,6 @@ Your cooperation is appreciated. 41 = /dev/ttySMX0 Callout device for ttySMX0 42 = /dev/ttySMX1 Callout device for ttySMX1 43 = /dev/ttySMX2 Callout device for ttySMX2 - 46 = /dev/cucpm0 Callout device for ttyCPM0 - ... - 49 = /dev/cucpm5 Callout device for ttyCPM5 206 char OnStream SC-x0 tape devices 0 = /dev/osst0 First OnStream SCSI tape, mode 0 diff --git a/Documentation/digiboard.txt b/Documentation/digiboard.txt new file mode 100644 index 000000000..9ccd612b0 --- /dev/null +++ b/Documentation/digiboard.txt @@ -0,0 +1,272 @@ +The Linux Digiboard Driver +-------------------------- + +The Digiboard Driver for Linux supports the following boards: + + DigiBoard PC/Xi, PC/Xe, PC/Xeve(which is the newer, smaller Xe with + a 8K window which is also known as PC/Xe(8K) and has no memory/irq + switches) You can use up to 4 cards with this driver and it should work + on other architectures than intel also. + +A version of this driver has been taken by Digiboard to make a driver +software package which supports also PC/Xem cards and newer PCI cards +but it doesn't support the old PC/Xi cards and it isn't yet ported to +linux-2.1.x and may not be usable on other architectures than intel now. +It is available from ftp.digi.com/ftp.digiboard.com. You can write me if +you need an patch for this driver. + +Bernhard Kaindl (bkaindl@netway.at) 6. April 1997. + +Configuring the Driver +---------------------- + +The driver can be built direct into the kernel or as a module. +The pcxx driver can be configured using the command line feature while +loading the kernel with LILO or LOADLIN or, if built as a module, +with arguments to insmod and modprobe or with parameters in +/etc/modprobe.conf for modprobe and kerneld. + +After configuring the driver you need to create the device special files +as described in "Device file creation:" below and set the appropriate +permissions for your application. + +As Module +--------- + +modprobe pcxx io= \ + membase= \ + memsize= \ + numports= \ + altpin= \ + verbose= + +or, if several cards are installed + +modprobe pcxx io=,,... \ + membase=,,... \ + memsize=,,... \ + numports=,,... \ + altpin=,,... \ + verbose= + +where is the io address of the Nth card and is the +memory base address of the Nth card, etc. + +The parameters can be specified in any order. For example, the numports +parameter can precede the membase parameter, or vice versa. If several +cards are installed the ordering within the comma separated parameter +lists must be consistent, of course. + +io - I/O port address of that card. +membase - Memory start address of that card. +memsize - Memory size of that card, in kilobytes. If given, this value + is compared against the card to verify configuration and + hinder the driver from using a misconfigured card. If the parameter + does not match the board it is disabled with a memory size error. +numports - Number of ports on this card. This is the number of devices to + assign to this card or reserve if disabled. +altpin - 1: swap DCD and DSR for 8-pin RJ-45 with modems. + 0: don't swap DCD and DSR. + other values count as 1. +verbose - 1: give nice verbose output during initialisation of the driver, + possibly helpful during board configuration. + 0: normal terse output. + +Only the parameters which differ from the defaults need to be specified. +If the io= parameter is not given, the default config is used. This is + + io=0x200 membase=0xD0000 numports=16 altpin=0 + +Only applicable parameters need be specified. For example to configure +2 boards, first one at 0x200 with 8 ports, rest defaults, second one at +0x120, memory at 0xD80000, altpin enabled, rest defaults, you can do this +by using these parameters: + + modprobe pcxx io=0x200,0x120 numports=8,8 membase=,0xD80000 altpin=,1 + +To disable a temporary unusable board without changing the mapping of the +devices following that board, you can empty the io-value for that board: + + modprobe pcxx io=,0x120 numports=8,8 membase=,0xD80000 altpin=,1 + +The remaining board still uses ttyD8-ttyD15 and cud8-cud15. + +Example line for /etc/modprobe.conf for use with kerneld and as default +parameters for modprobe: + +options pcxx io=0x200 numports=8 + +For kmod to work you will likely need to add these two lines to your +/etc/modprobe.conf: + +alias char-major-22 pcxx +alias char-major-23 pcxx + + +Boot-time configuration when linked into the kernel +--------------------------------------------------- + +Per board to be configured, pass a digi= command-line parameter to the +kernel using lilo or loadlin. It consists of a string of comma separated +identifiers or integers. The 6 values in order are: + +Card status: Enable - use that board + Disable - don't actually use that board. + +Card type: PC/Xi - the old ones with 64/128/256/512K RAM. + PC/Xe - PC/Xe(old ones with 64k mem range). + PC/Xeve - PC/Xe(new ones with 8k mem range). + +Note: This is for documentation only, the type is detected from the board. + +Altpin setting: Enable - swap DCD and DSR for 8-pin RJ-45 with modems. + Disable - don't swap DCD and DSR. + +Number of ports: 1 ... 16 - Number of ports on this card. This is the + number of devices to assign to this card. + +I/O port address: eg. 200 - I/O Port address where the card is configured. + +Memory base addr: eg. 80000 - Memory address where the board's memory starts. + +This is an example for a line which you can insert into you lilo.conf: + + append="digi=Enable,PC/Xi,Disable,4,120,D0000" + +there is an alternate form, in which you must use decimal values only: + + append="digi=1,0,0,16,512,851968" + +If you don't give a digi= command line, the compiled-in defaults of +board 1: io=0x200, membase=0xd0000, altpin=off and numports=16 are used. + +If you have the resources (io&mem) free for use, configure your board to +these settings and you should be set up fine even if yours has not got 16 +ports. + + +Sources of Information +---------------------- + +Please contact digi directly digilnux@dgii.com. Forward any information of +general interest to me so that I can include it on the webpage. + +Web page: http://lameter.com/digi + +Christoph Lameter (christoph@lameter.com) Aug 14, 2000. + +Device file creation +-------------------- + +Currently the Linux MAKEDEV command does not support generating the Digiboard +Devices. + +The /dev/cud devices behave like the /dev/cua devices +and the ttyD devices are like the /dev/ttyS devices. + +Use the following script to generate the devices: + +------------------ mkdigidev begin +#!/bin/sh +# +# Script to create Digiboard Devices +# Christoph Lameter, April 16, 1996 +# +# Usage: +# mkdigidev [] +# + +DIGI_MAJOR=23 +DIGICU_MAJOR=22 + +BOARDS=$1 + +if [ "$BOARDS" = "" ]; then +BOARDS=1 +fi + +boardnum=0 +while [ $boardnum -lt $BOARDS ]; +do + for c in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15; + do + name=`expr $boardnum \* 16 + $c` + mknod /dev/cud$name c $DIGICU_MAJOR $name + mknod /dev/ttyD$name c $DIGI_MAJOR $name + done + boardnum=`expr $boardnum + 1` +done +------------------ mkdigidev end + +or apply the following patch to /dev/MAKEDEV and do a +sh /dev/MAKEDEV digi + +----- MAKEDEV Patch +--- /dev/MAKEDEV Sun Aug 13 15:48:23 1995 ++++ MAKEDEV Tue Apr 16 17:53:27 1996 +@@ -120,7 +120,7 @@ + while [ $# -ne 0 ] + do + case "$1" in +- mem|tty|ttyp|cua|cub) ;; ++ mem|tty|ttyp|cua|cub|cud) ;; + hd) echo hda hdb hdc hdd ;; + xd) echo xda xdb ;; + fd) echo fd0 fd1 ;; +@@ -140,6 +140,7 @@ + dcf) echo dcf ;; + pcmcia) ;; # taken care of by its own driver + ttyC) echo cyclades ;; ++ ttyD) echo digi ;; + *) echo "$0: don't know what \"$1\" is" >&2 ;; + esac + shift +@@ -208,6 +209,15 @@ + do + makedev ttyC$i c $major1 `expr 32 + $i` $tty + makedev cub$i c $major2 `expr 32 + $i` $dialout ++ done ++ ;; ++ digi) ++ major1=`Major ttyD` || continue ++ major2=`Major cud` || continue ++ for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ++ do ++ makedev ttyD$i c $major1 `expr 32 + $i` $tty ++ makedev cud$i c $major2 `expr 32 + $i` $dialout + done + ;; + par[0-2]) +----- End Makedev patch + +----------------------------------------------------------------------------- + +Changes v1.5.5: + +The ability to use the kernel's command line to pass in the configuration for +boards. Using LILO's APPEND command, a string of comma separated identifiers +or integers can be used. The 6 values in order are: + + Enable/Disable this card, + Type of card: PC/Xi(0), PC/Xe(1), PC/Xeve(2), PC/Xem(3) + Enable/Disable alternate pin arrangement, + Number of ports on this card, + I/O Port where card is configured (in HEX if using string identifiers), + Base of memory window (in HEX if using string identifiers), + +Samples: + append="digi=E,PC/Xi,D,16,200,D0000" + append="digi=1,0,0,16,512,(whatever D0000 is in base 10 :) + +Drivers' minor device numbers are conserved. This means that instead of +each board getting a block of 16 minors pre-assigned, it gets however +many it should, with the next card following directly behind it. A +system with 4 2-port PC/Xi boards will use minor numbers 0-7. +This conserves some memory, and removes a few hard coded constants. + +NOTE!! NOTE!! NOTE!! +The definition of PC/Xem as a valid board type is the BEGINNING of support +for this device. The driver does not currently recognise the board, nor +does it want to initialize it. At least not the EISA version. + +Mike McLagan 5, April 1996. diff --git a/Documentation/digiepca.txt b/Documentation/digiepca.txt index 88820fe38..01c4adc59 100644 --- a/Documentation/digiepca.txt +++ b/Documentation/digiepca.txt @@ -1,11 +1,3 @@ -NOTE: This driver is obsolete. Digi provides a 2.6 driver (dgdm) at -http://www.digi.com for PCI cards. They no longer maintain this driver, -and have no 2.6 driver for ISA cards. - -This driver requires a number of user-space tools. They can be aquired from -http://www.digi.com, but only works with 2.4 kernels. - - The Digi Intl. epca driver. ---------------------------- The Digi Intl. epca driver for Linux supports the following boards: @@ -72,6 +64,9 @@ drivers/char/README.epca for more details. Note, this driver REQUIRES that digiDload be executed prior to it being used. Failure to do this will result in an ENODEV error. +The latest version of the tool package is available at: +ftp://ftp.dgii.com/drivers/linux/released/async/ + Documentation: -------------- Complete documentation for this product may be found in the tool package. @@ -79,8 +74,14 @@ Complete documentation for this product may be found in the tool package. Sources of information and support: ----------------------------------- Digi Intl. support site for this product: +-> digilnux@dgii.com --> http://www.digi.com +Related information and information concerning other drivers supporting +Digi Intl. products: + +-> FTP: ftp://dgii.com +-> Webpage: http://www.dgii.com +-> Webpage: http://lameter.com/digi Acknowledgments: ---------------- @@ -89,10 +90,3 @@ supporting the original public domain DigiBoard driver Copyright (C) 1994,1995 Troy De Jongh. Many thanks to Christoph Lameter (christoph@lameter.com) and Mike McLagan (mike.mclagan@linux.org) who authored and contributed to the original document. - -Changelog: ----------- -10-29-04: Update status of driver, remove dead links in document - James Nelson - -2000 (?) Original Document diff --git a/Documentation/dnotify.txt b/Documentation/dnotify.txt index 6984fca60..3434cb3d1 100644 --- a/Documentation/dnotify.txt +++ b/Documentation/dnotify.txt @@ -54,12 +54,6 @@ directory "b". Also, files that are unlinked, will still cause notifications in the last directory that they were linked to. -Configuration -------------- - -Dnotify is controlled via the CONFIG_DNOTIFY configuration option. When -disabled, fcntl(fd, F_NOTIFY, ...) will return -EINVAL. - Example ------- diff --git a/Documentation/dvb/README.dibusb b/Documentation/dvb/README.dibusb deleted file mode 100644 index e3d650b81..000000000 --- a/Documentation/dvb/README.dibusb +++ /dev/null @@ -1,247 +0,0 @@ -Documentation for dib3000mb frontend driver and dibusb device driver -==================================================================== - -Copyright (C) 2004 Patrick Boettcher (patrick.boettcher@desy.de), - -dibusb and dib3000mb/mc drivers based on GPL code, which has - -Copyright (C) 2004 Amaury Demol for DiBcom (ademol@dibcom.fr) - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU General Public License as -published by the Free Software Foundation, version 2. - - -Supported devices USB1.1 -======================== - -Produced and reselled by Twinhan: ---------------------------------- -- TwinhanDTV USB-Ter DVB-T Device (VP7041) - http://www.twinhan.com/product_terrestrial_3.asp - -- TwinhanDTV Magic Box (VP7041e) - http://www.twinhan.com/product_terrestrial_4.asp - -- HAMA DVB-T USB device - http://www.hama.de/portal/articleId*110620/action*2598 - -- CTS Portable (Chinese Television System) - http://www.2cts.tv/ctsportable/ - -- Unknown USB DVB-T device with vendor ID Hyper-Paltek - - -Produced and reselled by KWorld: --------------------------------- -- KWorld V-Stream XPERT DTV DVB-T USB - http://www.kworld.com.tw/en/product/DVBT-USB/DVBT-USB.html - -- JetWay DTV DVB-T USB - http://www.jetway.com.tw/evisn/product/lcd-tv/DVT-USB/dtv-usb.htm - -- ADSTech Instant TV DVB-T USB - http://www.adstech.com/products/PTV-333/intro/PTV-333_intro.asp?pid=PTV-333 - - -Others: -------- -- Ultima Electronic/Artec T1 USB TVBOX (AN2135 and AN2235) - http://82.161.246.249/products-tvbox.html - -- Compro Videomate DVB-U2000 - DVB-T USB - http://www.comprousa.com/products/vmu2000.htm - -- Grandtec USB DVB-T - http://www.grand.com.tw/ - -- Avermedia AverTV DVBT USB - http://www.avermedia.com/ - -- DiBcom USB DVB-T reference device (non-public) - - -Supported devices USB2.0 -======================== -- Twinhan MagicBox II - http://www.twinhan.com/product_terrestrial_7.asp - -- Yakumo DVB-T mobile - http://www.yakumo.de/produkte/index.php?pid=1&ag=DVB-T - -- DiBcom USB2.0 DVB-T reference device (non-public) - - -0. NEWS: - 2004-12-06 - possibility for demod i2c-address probing - - new usb IDs (Compro,Artec) - 2004-11-23 - merged changes from DiB3000MC_ver2.1 - - revised the debugging - - possibility to deliver the complete TS for USB2.0 - 2004-11-21 - first working version of the dib3000mc/p frontend driver. - 2004-11-12 - added additional remote control keys. Thanks to Uwe Hanke. - 2004-11-07 - added remote control support. Thanks to David Matthews. - 2004-11-05 - added support for a new devices (Grandtec/Avermedia/Artec) - - merged my changes (for dib3000mb/dibusb) to the FE_REFACTORING, because it became HEAD - - moved transfer control (pid filter, fifo control) from usb driver to frontend, it seems - better settled there (added xfer_ops-struct) - - created a common files for frontends (mc/p/mb) - 2004-09-28 - added support for a new device (Unkown, vendor ID is Hyper-Paltek) - 2004-09-20 - added support for a new device (Compro DVB-U2000), thanks - to Amaury Demol for reporting - - changed usb TS transfer method (several urbs, stopping transfer - before setting a new pid) - 2004-09-13 - added support for a new device (Artec T1 USB TVBOX), thanks - to Christian Motschke for reporting - 2004-09-05 - released the dibusb device and dib3000mb-frontend driver - - (old news for vp7041.c) - 2004-07-15 - found out, by accident, that the device has a TUA6010XS for - PLL - 2004-07-12 - figured out, that the driver should also work with the - CTS Portable (Chinese Television System) - 2004-07-08 - firmware-extraction-2.422-problem solved, driver is now working - properly with firmware extracted from 2.422 - - #if for 2.6.4 (dvb), compile issue - - changed firmware handling, see vp7041.txt sec 1.1 - 2004-07-02 - some tuner modifications, v0.1, cleanups, first public - 2004-06-28 - now using the dvb_dmx_swfilter_packets, everything - runs fine now - 2004-06-27 - able to watch and switching channels (pre-alpha) - - no section filtering yet - 2004-06-06 - first TS received, but kernel oops :/ - 2004-05-14 - firmware loader is working - 2004-05-11 - start writing the driver - -1. How to use? -NOTE: This driver was developed using Linux 2.6.6., -it is working with 2.6.7, 2.6.8.1, 2.6.9 . - -Linux 2.4.x support is not planned, but patches are very welcome. - -NOTE: I'm using Debian testing, so the following explaination (especially -the hotplug-path) needn't match your system, but probably it will :). - -1.1. Firmware - -The USB driver needs to download a firmware to start working. - -You can either use "get_dvb_firmware dibusb" to download the firmware or you -can get it directly via - -for USB1.1 (AN2135) -http://linuxtv.org/cgi-bin/cvsweb.cgi/dvb-kernel/firmware/dvb-dibusb-5.0.0.11.fw?rev=1.1&content-type=text/plain - -for USB1.1 (AN2235) (a few Artec T1 devices) -http://linuxtv.org/cgi-bin/cvsweb.cgi/dvb-kernel/firmware/dvb-dibusb-an2235-1.fw?rev=1.1&content-type=text/plain - -for USB2.0 (FX2) -http://linuxtv.org/cgi-bin/cvsweb.cgi/dvb-kernel/firmware/dvb-dibusb-6.0.0.5.fw?rev=1.1&content-type=text/plain - -1.2. Compiling - -Since the driver is in the linux kernel, activating the driver in -your favorite config-environment should sufficient. I recommend -to compile the driver as module. Hotplug does the rest. - -1.3. Loading the drivers - -Hotplug is able to load the driver, when it is needed (because you plugged -in the device). - -If you want to enable debug output, you have to load the driver manually and -from withing the dvb-kernel cvs repository. - -first have a look, which debug level are available: - -modinfo dib3000mb -modinfo dvb-dibusb - -modprobe dib3000mb debug= -modprobe dvb-dibusb debug= - -should do the trick. - -When the driver is loaded successfully, the firmware file was in -the right place and the device is connected, the "Power"-LED should be -turned on. - -At this point you should be able to start a dvb-capable application. For myself -I used mplayer, dvbscan, tzap and kaxtv, they are working. Using the device -as a slave device in vdr, was not working for me. Some work has to be done -(patches and comments are very welcome). - -2. Known problems and bugs - -TODO: -- signal-quality and strength calculations - -2.1. Adding support for devices - -It is not possible to determine the range of devices based on the DiBcom -reference designs. This is because the reference design of DiBcom can be sold -to thirds, without telling DiBcom (so done with the Twinhan VP7041 and -the HAMA device). - -When you think you have a device like this and the driver does not recognizes it, -please send the ****load*.inf and the ****cap*.inf of the Windows driver to me. - -Sometimes the Vendor or Product ID is identical to the ones of Twinhan, even -though it is not a Twinhan device (e.g. HAMA), then please send me the name -of the device. I will add it to this list in order to make this clear to -others. - -If you are familar with C you can also add the VID and PID of the device to -the dvb-dibusb.h-file and create a patch and send it over to me or to -the linux-dvb mailing list, _after_ you have tried compiling and modprobing -it. - -2.2. USB1.1 Bandwidth limitation - -Most of the current supported devices are USB1.1 and thus they have a -maximum bandwidth of about 5-6 MBit/s when connected to a USB2.0 hub. -This is not enough for receiving the complete transport stream of a -DVB-T channel (which can be about 16 MBit/s). Normally this is not a -problem, if you only want to watch TV, but watching a channel while -recording another channel on the same frequency simply does not work. -This applies to all USB1.1 DVB-T devices. - -A special problem of the dibusb for the USB1.1 is, that the USB control -IC has a problem with write accesses while having MPEG2-streaming -enabled. When you set another pid while receiving MPEG2-TS it happens, that -the stream is disturbed and probably data is lost (results in distortions of -the video or strange beeps within the audio stream). DiBcom is preparing a -firmware especially for Linux which perhaps solves the problem. - -Especially VDR users are victoms of this bug. VDR frequently requests new PIDs -due the automatic scanning (introduced in 1.3.x, afaik) and epg-scan. Disabling -these features is maybe a solution. Additionally this behaviour of VDR exceeds -the USB1.1 bandwidth. - -2.3. Comments - -Patches, comments and suggestions are very very welcome - -3. Acknowledgements - Amaury Demol (ademol@dibcom.fr) and Francois Kanounnikoff from DiBcom for - providing specs, code and help, on which the dvb-dibusb and dib3000mb are - based. - - David Matthews for identifying a new device type (Artec T1 with AN2235) - and for extending dibusb with remote control event handling. Thank you. - - Alex Woods for frequently answering question about usb and dvb - stuff, a big thank you - - Bernd Wagner for helping with huge bug reports and discussions. - - Some guys on the linux-dvb mailing list for encouraging me - - Peter Schildmann >peter.schildmann-nospam-at-web.de< for his - user-level firmware loader, which saves a lot of time - (when writing the vp7041 driver) - - Ulf Hermenau for helping me out with traditional chinese. - - André Smoktun and Christian Frömmel for supporting me with - hardware and listening to my problems very patient diff --git a/Documentation/dvb/avermedia.txt b/Documentation/dvb/avermedia.txt index 09020ebd2..5d8dbdada 100644 --- a/Documentation/dvb/avermedia.txt +++ b/Documentation/dvb/avermedia.txt @@ -6,6 +6,7 @@ HOWTO: Get An Avermedia DVB-T working under Linux Assumptions and Introduction The Avermedia DVB-T Getting the card going + Getting the Firmware Receiving DVB-T in Australia Known Limitations Further Update @@ -148,9 +149,28 @@ Getting the card going to start accessing the card with utilities such as scan, tzap, dvbstream etc. - The frontend module sp887x.o, requires an external firmware. - Please use the command "get_dvb_firmware sp887x" to download - it. Then copy it to /usr/lib/hotplug/firmware. + The current version of the frontend module sp887x.o, contains + no firmware drivers?, so the first time you open it with a DVB + utility the driver will try to download some initial firmware + to the card. You will need to download this firmware from the + web, or copy it from an installation of the Windows drivers + that probably came with your card, before you can use it. + + The default Linux filesystem location for this firmware is + /usr/lib/hotplug/firmware/sc_main.mc . + _________________________________________________________ + +Getting the Firmware + + As the firmware for the card is no longer contained within the + driver, it is necessary to extract it from the windows + drivers. + + The Windows drivers for the Avermedia DVB-T can be obtained + from: http://babyurl.com/H3U970 and you can get an application + to extract the firmware from: + http://www.kyz.uklinux.net/cabextract.php. + _________________________________________________________ Receiving DVB-T in Australia diff --git a/Documentation/dvb/cards.txt b/Documentation/dvb/cards.txt index efdc4ee9d..695f174d8 100644 --- a/Documentation/dvb/cards.txt +++ b/Documentation/dvb/cards.txt @@ -38,7 +38,6 @@ o Frontends drivers: Comtech DVBT-6k07 (SP5730 PLL) (NxtWave Communications NXT6000 demodulator) - sp887x : Microtune 7202D - - dib3000mb : DiBcom 3000-MB demodulator DVB-S/C/T: - dst : TwinHan DST Frontend @@ -50,7 +49,7 @@ o Cards based on the Phillips saa7146 multimedia PCI bridge chip: - "budget" cards (i.e. without hardware MPEG decoder): - Technotrend Budget / Hauppauge WinTV-Nova PCI Cards - SATELCO Multimedia PCI - - KNC1 DVB-S, Typhoon DVB-S, Terratec Cinergy 1200 DVB-S (no CI support) + - KNC1 DVB-S - Typhoon DVB-S budget - Fujitsu-Siemens Activy DVB-S budget card @@ -67,19 +66,4 @@ o Technotrend / Hauppauge DVB USB devices: - Nova USB - DEC 2000-T, 3000-S, 2540-T -o DiBcom DVB-T USB based devices: - - Twinhan VisionPlus VisionDTV USB-Ter DVB-T Device - - HAMA DVB-T USB device - - CTS Portable (Chinese Television System) - - KWorld V-Stream XPERT DTV DVB-T USB - - JetWay DTV DVB-T USB - - ADSTech Instant TV DVB-T USB - - Ultima Electronic/Artec T1 USB TVBOX (AN2135 and AN2235) - - Compro Videomate DVB-U2000 - DVB-T USB - - Grandtec USB DVB-T - - Avermedia AverTV DVBT USB - - DiBcom USB DVB-T reference device (non-public) - - Yakumo DVB-T mobile USB2.0 - - DiBcom USB2.0 DVB-T reference device (non-public) - o Experimental support for the analog module of the Siemens DVB-C PCI card diff --git a/Documentation/dvb/contributors.txt b/Documentation/dvb/contributors.txt index dd40ad665..12026e933 100644 --- a/Documentation/dvb/contributors.txt +++ b/Documentation/dvb/contributors.txt @@ -69,8 +69,6 @@ Andreas 'randy' Weinberger Kenneth Aafløy for adding support for Typhoon DVB-S budget card -Ernst Peinlich - for tuning/DiSEqC support for the DEC 3000-s (If you think you should be in this list, but you are not, drop a line to the DVB mailing list) diff --git a/Documentation/dvb/firmware.txt b/Documentation/dvb/firmware.txt new file mode 100644 index 000000000..37d880794 --- /dev/null +++ b/Documentation/dvb/firmware.txt @@ -0,0 +1,120 @@ +Some DVB cards and many newer frontends require proprietary, +binary-only firmware. + +The DVB drivers will be converted to use the request_firmware() +hotplug interface (see Documentation/firmware_class/). +(CONFIG_FW_LOADER) + +The firmware can be loaded automatically via the hotplug manager +or manually with the steps described below. + +Currently the drivers still use various different methods +to load their firmwares, so here's just a short list of the +current state: + +- dvb-ttpci: driver uses firmware hotplug interface +- ttusb-budget: firmware is compiled in (dvb-ttusb-dspbootcode.h) +- sp887x: firmware is compiled in (sp887x_firm.h) +- alps_tdlb7: firmware is loaded from path specified by + "mcfile" module parameter; the binary must be + extracted from the Windows driver (Sc_main.mc). +- tda1004x: firmware is loaded from path specified in + DVB_TDA1004X_FIRMWARE_FILE kernel config + variable (default /usr/lib/hotplug/firmware/tda1004x.bin); the + firmware binary must be extracted from the windows + driver +- ttusb-dec: see "ttusb-dec.txt" for details + +1) Automatic firmware loading + +You need to install recent hotplug scripts if your distribution did not do it +for you already, especially the /etc/hotplug/firmware.agent. +http://linux-hotplug.sourceforge.net/ (Call /sbin/hotplug without arguments +to find out if the firmware agent is installed.) + +The firmware.agent script expects firmware binaries in +/usr/lib/hotplug/firmware/. To avoid naming and versioning +conflicts we propose the following naming scheme: + + /usr/lib/hotplug/firmware/dvb-{driver}-{ver}.fw for MPEG decoders etc. + /usr/lib/hotplug/firmware/dvb-fe-{driver}-{ver}.fw for frontends + + {driver} name is the basename of the driver kernel module (e.g. dvb-ttpci) + {ver} is a version number/name that should change only when the + driver/firmware internal API changes (so users are free to install the + latest firmware compatible with the driver). + +2) Manually loading the firmware into a driver + (currently only the dvb-ttpci / av7110 driver supports this) + +Step a) Mount sysfs-filesystem. + +Sysfs provides a means to export kernel data structures, their attributes, +and the linkages between them to userspace. + +For detailed informations have a look at Documentation/filesystems/sysfs.txt +All you need to know at the moment is that firmware loading only works through +sysfs. + +> mkdir /sys +> mount -t sysfs sysfs /sys + +Step b) Exploring the firmware loading facilities + +Firmware_class support is located in +/sys/class/firmware + +> dir /sys/class/firmware + +The "timeout" values specifies the amount of time that is waited before the +firmware upload process is cancelled. The default values is 10 seconds. If +you use a hotplug script for the firmware upload, this is sufficient. If +you want to upload the firmware by hand, however, this might be too fast. + +> echo "180" > /sys/class/firmware/timeout + +Step c) Getting a usable firmware file for the dvb-ttpci driver/av7110 card. + +You can download the firmware files from +http://linuxtv.org/download/dvb/ + +Please note that in case of the dvb-ttpci driver this is *not* the "Root" +file you probably know from the 2.4 DVB releases driver. + +The ttpci-firmware utility from linuxtv.org CVS can be used to +convert Dpram and Root files into a usable firmware image. +See dvb-kerrnel/scripts/ in http://linuxtv.org/cvs/. + +> wget http://www.linuxtv.org/download/dvb/dvb-ttpci-01.fw +gets you the version 01 of the firmware fot the ttpci driver. + +Step d) Loading the dvb-ttpci driver and loading the firmware + +"modprobe" will take care that every needed module will be loaded +automatically (except the frontend driver) + +> modprobe dvb-ttpci + +The "modprobe" process will hang until +a) you upload the firmware or +b) the timeout occurs. + +Change to another terminal and have a look at + +> dir /sys/class/firmware/ + +total 0 +drwxr-xr-x 2 root root 0 Jul 29 11:00 0000:03:05.0 +-rw-r--r-- 1 root root 0 Jul 29 10:41 timeout + +"0000:03:05.0" is the id for my dvb-c card. It depends on the pci slot, +so it changes if you plug the card to different slots. + +You can upload the firmware like that: + +> export DEVDIR=/sys/class/firmware/0000\:03\:05.0 +> echo 1 > $DEVDIR/loading +> cat dvb-ttpci-01.fw > $DEVDIR/data +> echo 0 > $DEVDIR/loading + +That's it. The driver should be up and running now. diff --git a/Documentation/dvb/get_dvb_firmware b/Documentation/dvb/get_dvb_firmware deleted file mode 100644 index e9964b71e..000000000 --- a/Documentation/dvb/get_dvb_firmware +++ /dev/null @@ -1,339 +0,0 @@ -#!/usr/bin/perl -# DVB firmware extractor -# -# (c) 2004 Andrew de Quincey -# -# This program is free software; 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 program 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., 675 Mass Ave, Cambridge, MA 02139, USA. - -use File::Temp qw/ tempdir /; -use IO::Handle; - -@components = ( "sp8870", "sp887x", "tda10045", "tda10046", "av7110", "dec2000t", "dec2540t", "dec3000s", "vp7041", "dibusb" ); - -# Check args -syntax() if (scalar(@ARGV) != 1); -$cid = $ARGV[0]; - -# Do it! -for($i=0; $i < scalar(@components); $i++) { - if ($cid eq $components[$i]) { - $outfile = eval($cid); - die $@ if $@; - print STDERR "Firmware $outfile extracted successfully. Now copy it to either /lib/firmware or /usr/lib/hotplug/firmware/ (depending on your hotplug version).\n"; - exit(0); - } -} - -# If we get here, it wasn't found -print STDERR "Unknown component \"$cid\"\n"; -syntax(); - - - - -# --------------------------------------------------------------- -# Firmware-specific extraction subroutines - -sub sp8870 { - my $sourcefile = "tt_Premium_217g.zip"; - my $url = "http://www.technotrend.de/new/217g/$sourcefile"; - my $hash = "53970ec17a538945a6d8cb608a7b3899"; - my $outfile = "dvb-fe-sp8870.fw"; - my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); - - checkstandard(); - - wgetfile($sourcefile, $url); - unzip($sourcefile, $tmpdir); - verify("$tmpdir/software/OEM/HE/App/boot/SC_MAIN.MC", $hash); - copy("$tmpdir/software/OEM/HE/App/boot/SC_MAIN.MC", $outfile); - - $outfile; -} - -sub sp887x { - my $sourcefile = "Dvbt1.3.57.6.zip"; - my $url = "http://www.avermedia.com/software/$sourcefile"; - my $cabfile = "DVBT Net Ver1.3.57.6/disk1/data1.cab"; - my $hash = "237938d53a7f834c05c42b894ca68ac3"; - my $outfile = "dvb-fe-sp887x.fw"; - my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); - - checkstandard(); - checkunshield(); - - wgetfile($sourcefile, $url); - unzip($sourcefile, $tmpdir); - unshield("$tmpdir/$cabfile", $tmpdir); - verify("$tmpdir/sc_main.mc", $hash); - copy("$tmpdir/sc_main.mc", $outfile); - - $outfile; -} - -sub tda10045 { - my $sourcefile = "tt_budget_217g.zip"; - my $url = "http://www.technotrend.de/new/217g/$sourcefile"; - my $hash = "2105fd5bf37842fbcdfa4bfd58f3594a"; - my $outfile = "dvb-fe-tda10045.fw"; - my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); - - checkstandard(); - - wgetfile($sourcefile, $url); - unzip($sourcefile, $tmpdir); - extract("$tmpdir/software/OEM/PCI/App/ttlcdacc.dll", 0x37ef9, 30555, "$tmpdir/fwtmp"); - verify("$tmpdir/fwtmp", $hash); - copy("$tmpdir/fwtmp", $outfile); - - $outfile; -} - -sub tda10046 { - my $sourcefile = "tt_budget_217g.zip"; - my $url = "http://www.technotrend.de/new/217g/$sourcefile"; - my $hash = "a25b579e37109af60f4a36c37893957c"; - my $outfile = "dvb-fe-tda10046.fw"; - my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); - - checkstandard(); - - wgetfile($sourcefile, $url); - unzip($sourcefile, $tmpdir); - extract("$tmpdir/software/OEM/PCI/App/ttlcdacc.dll", 0x3f731, 24479, "$tmpdir/fwtmp"); - verify("$tmpdir/fwtmp", $hash); - copy("$tmpdir/fwtmp", $outfile); - - $outfile; -} - -sub av7110 { - my $sourcefile = "dvb-ttpci-01.fw-261c"; - my $url = "http://www.linuxtv.org/download/dvb/firmware/$sourcefile"; - my $hash = "7b263de6b0b92d2347319c65adc7d4fb"; - my $outfile = "dvb-ttpci-01.fw"; - - checkstandard(); - - wgetfile($sourcefile, $url); - verify($sourcefile, $hash); - copy($sourcefile, $outfile); - - $outfile; -} - -sub dec2000t { - my $sourcefile = "dec217g.exe"; - my $url = "http://hauppauge.lightpath.net/de/$sourcefile"; - my $hash = "bd86f458cee4a8f0a8ce2d20c66215a9"; - my $outfile = "dvb-ttusb-dec-2000t.fw"; - my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); - - checkstandard(); - - wgetfile($sourcefile, $url); - unzip($sourcefile, $tmpdir); - verify("$tmpdir/software/OEM/STB/App/Boot/STB_PC_T.bin", $hash); - copy("$tmpdir/software/OEM/STB/App/Boot/STB_PC_T.bin", $outfile); - - $outfile; -} - -sub dec2540t { - my $sourcefile = "dec217g.exe"; - my $url = "http://hauppauge.lightpath.net/de/$sourcefile"; - my $hash = "53e58f4f5b5c2930beee74a7681fed92"; - my $outfile = "dvb-ttusb-dec-2540t.fw"; - my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); - - checkstandard(); - - wgetfile($sourcefile, $url); - unzip($sourcefile, $tmpdir); - verify("$tmpdir/software/OEM/STB/App/Boot/STB_PC_X.bin", $hash); - copy("$tmpdir/software/OEM/STB/App/Boot/STB_PC_X.bin", $outfile); - - $outfile; -} - -sub dec3000s { - my $sourcefile = "dec217g.exe"; - my $url = "http://hauppauge.lightpath.net/de/$sourcefile"; - my $hash = "b013ececea83f4d6d8d2a29ac7c1b448"; - my $outfile = "dvb-ttusb-dec-3000s.fw"; - my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); - - checkstandard(); - - wgetfile($sourcefile, $url); - unzip($sourcefile, $tmpdir); - verify("$tmpdir/software/OEM/STB/App/Boot/STB_PC_S.bin", $hash); - copy("$tmpdir/software/OEM/STB/App/Boot/STB_PC_S.bin", $outfile); - - $outfile; -} - -sub vp7041 { - my $sourcefile = "2.422.zip"; - my $url = "http://www.twinhan.com/files/driver/USB-Ter/$sourcefile"; - my $hash = "e88c9372d1f66609a3e7b072c53fbcfe"; - my $outfile = "dvb-vp7041-2.422.fw"; - my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1); - - checkstandard(); - - wgetfile($sourcefile, $url); - unzip($sourcefile, $tmpdir); - extract("$tmpdir/VisionDTV/Drivers/Win2K&XP/UDTTload.sys", 12503, 3036, "$tmpdir/fwtmp1"); - extract("$tmpdir/VisionDTV/Drivers/Win2K&XP/UDTTload.sys", 2207, 10274, "$tmpdir/fwtmp2"); - - my $CMD = "\000\001\000\222\177\000"; - my $PAD = "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"; - my ($FW); - open $FW, ">$tmpdir/fwtmp3"; - print $FW "$CMD\001$PAD"; - print $FW "$CMD\001$PAD"; - appendfile($FW, "$tmpdir/fwtmp1"); - print $FW "$CMD\000$PAD"; - print $FW "$CMD\001$PAD"; - appendfile($FW, "$tmpdir/fwtmp2"); - print $FW "$CMD\001$PAD"; - print $FW "$CMD\000$PAD"; - close($FW); - - verify("$tmpdir/fwtmp3", $hash); - copy("$tmpdir/fwtmp3", $outfile); - - $outfile; -} - -sub dibusb { - my $url = "http://linuxtv.org/cgi-bin/cvsweb.cgi/dvb-kernel/firmware/dvb-dibusb-5.0.0.11.fw?rev=1.1&content-type=text/plain"; - my $outfile = "dvb-dibusb-5.0.0.11.fw"; - my $hash = "fa490295a527360ca16dcdf3224ca243"; - - checkstandard(); - - wgetfile($outfile, $url); - verify($outfile,$hash); - - $outfile; -} - -# --------------------------------------------------------------- -# Utilities - -sub checkstandard { - if (system("which unzip > /dev/null 2>&1")) { - die "This firmware requires the unzip command - see ftp://ftp.info-zip.org/pub/infozip/UnZip.html\n"; - } - if (system("which md5sum > /dev/null 2>&1")) { - die "This firmware requires the md5sum command - see http://www.gnu.org/software/coreutils/\n"; - } - if (system("which wget > /dev/null 2>&1")) { - die "This firmware requires the wget command - see http://wget.sunsite.dk/\n"; - } -} - -sub checkunshield { - if (system("which unshield > /dev/null 2>&1")) { - die "This firmware requires the unshield command - see http://sourceforge.net/projects/synce/\n"; - } -} - -sub wgetfile { - my ($sourcefile, $url) = @_; - - if (! -f $sourcefile) { - system("wget -O \"$sourcefile\" \"$url\"") and die "wget failed - unable to download firmware"; - } -} - -sub unzip { - my ($sourcefile, $todir) = @_; - - $status = system("unzip -q -o -d \"$todir\" \"$sourcefile\" 2>/dev/null" ); - if ((($status >> 8) > 2) || (($status & 0xff) != 0)) { - die ("unzip failed - unable to extract firmware"); - } -} - -sub unshield { - my ($sourcefile, $todir) = @_; - - system("unshield -d \"$todir\" \"$sourcefile\" > /dev/null" ) and die ("unshield failed - unable to extract firmware"); -} - -sub verify { - my ($filename, $hash) = @_; - my ($testhash); - - open(CMD, "md5sum \"$filename\"|"); - $testhash = ; - $testhash =~ /([a-zA-Z0-9]*)/; - $testhash = $1; - close CMD; - die "Hash of extracted file does not match!\n" if ($testhash ne $hash); -} - -sub copy { - my ($from, $to) = @_; - - system("cp -f \"$from\" \"$to\"") and die ("cp failed"); -} - -sub extract { - my ($infile, $offset, $length, $outfile) = @_; - my ($chunklength, $buf, $rcount); - - open INFILE, "<$infile"; - open OUTFILE, ">$outfile"; - sysseek(INFILE, $offset, SEEK_SET); - while($length > 0) { - # Calc chunk size - $chunklength = 2048; - $chunklength = $length if ($chunklength > $length); - - $rcount = sysread(INFILE, $buf, $chunklength); - die "Ran out of data\n" if ($rcount != $chunklength); - syswrite(OUTFILE, $buf); - $length -= $rcount; - } - close INFILE; - close OUTFILE; -} - -sub appendfile { - my ($FH, $infile) = @_; - my ($buf); - - open INFILE, "<$infile"; - while(1) { - $rcount = sysread(INFILE, $buf, 2048); - last if ($rcount == 0); - print $FH $buf; - } - close(INFILE); -} - -sub syntax() { - print STDERR "syntax: get_dvb_firmware \n"; - print STDERR "Supported components:\n"; - for($i=0; $i < scalar(@components); $i++) { - print STDERR "\t" . $components[$i] . "\n"; - } - exit(1); -} diff --git a/Documentation/dvb/readme.txt b/Documentation/dvb/readme.txt index a60c27d43..720aa8ce0 100644 --- a/Documentation/dvb/readme.txt +++ b/Documentation/dvb/readme.txt @@ -28,9 +28,9 @@ is the who-is-who of DVB development "faq.txt" contains frequently asked questions and their answers. -"get_dvb_firmware" -script to download and extract firmware for those devices -that require it. +"firmware.txt" +contains informations for required external firmware +files and where to get them. "ttusb-dec.txt" contains detailed informations about the @@ -41,11 +41,4 @@ contains detailed installation instructions for the various bt8xx based "budget" DVB cards (Nebula, Pinnacle PCTV, Twinhan DST) -"README.dibusb" -contains detailed information about adapters -based on DiBcom reference design. - -"udev.txt" -how to get DVB and udev up and running. - Good luck and have fun! diff --git a/Documentation/dvb/ttusb-dec.txt b/Documentation/dvb/ttusb-dec.txt index 5c1e984c2..4a547fba7 100644 --- a/Documentation/dvb/ttusb-dec.txt +++ b/Documentation/dvb/ttusb-dec.txt @@ -6,8 +6,6 @@ Driver Status Supported: DEC2000-t - DEC2450-t - DEC3000-s Linux Kernels 2.4 and 2.6 Video Streaming Audio Streaming @@ -15,30 +13,52 @@ Supported: Channel Zapping Hotplug firmware loader under 2.6 kernels +In Progress: + DEC2540-t + DEC3000-s + To Do: Tuner status information DVB network interface Streaming video PC->DEC - Conax support for 2450-t Getting the Firmware -------------------- -To download the firmware, use the following commands: -"get_dvb_firmware dec2000t" -"get_dvb_firmware dec2540t" -"get_dvb_firmware dec3000s" +The firmware can be found in the software update zip files on this page: +http://www.hauppauge.de/sw_dec.htm + +The firmwares are named as follows: +DEC2000-t: STB_PC_T.bin +DEC2540-t: STB_PC_X.bin +DEC3000-s: STB_PC_S.bin + +Note that firmwares since version 2.16 beta2 for the DEC2000-t give the device +the USB ID of the DEC3000-s. The driver copes with this. + +Instructions follow for retrieving version 2.16 of the firmware: + +wget http://hauppauge.lightpath.net/de/dec216.exe +unzip -j dec216.exe software/OEM/STB/App/Boot/STB_PC_T.bin +unzip -j dec216.exe software/OEM/STB/App/Boot/STB_PC_X.bin +unzip -j dec216.exe software/OEM/STB/App/Boot/STB_PC_S.bin Compilation Notes for 2.4 kernels --------------------------------- For 2.4 kernels the firmware for the DECs is compiled into the driver itself. +The firmwares are expected to be in the build-2.4 directory at compilation +time. -Copy the three files downloaded above into the build-2.4 directory. +mv STB_PC_T.bin build-2.4/dvb-ttusb-dec-2000t.fw +mv STB_PC_X.bin build-2.4/dvb-ttusb-dec-2540t.fw +mv STB_PC_S.bin build-2.4/dvb-ttusb-dec-3000s.fw Hotplug Firmware Loading for 2.6 kernels ---------------------------------------- For 2.6 kernels the firmware is loaded at the point that the driver module is -loaded. See linux/Documentation/dvb/firmware.txt for more information. +loaded. See Documentation/dvb/firmware.txt for more information. -Copy the three files downloaded above into the /usr/lib/hotplug/firmware directory. +mv STB_PC_T.bin /usr/lib/hotplug/firmware/dvb-ttusb-dec-2000t.fw +mv STB_PC_X.bin /usr/lib/hotplug/firmware/dvb-ttusb-dec-2540t.fw +mv STB_PC_S.bin /usr/lib/hotplug/firmware/dvb-ttusb-dec-3000s.fw diff --git a/Documentation/dvb/udev.txt b/Documentation/dvb/udev.txt deleted file mode 100644 index 68ee224b6..000000000 --- a/Documentation/dvb/udev.txt +++ /dev/null @@ -1,46 +0,0 @@ -The DVB subsystem currently registers to the sysfs subsystem using the -"class_simple" interface. - -This means that only the basic informations like module loading parameters -are presented through sysfs. Other things that might be interesting are -currently *not* available. - -Nevertheless it's now possible to add proper udev rules so that the -DVB device nodes are created automatically. - -We assume that you have udev already up and running and that have been -creating the DVB device nodes manually up to now due to the missing sysfs -support. - -0. Don't forget to disable your current method of creating the -device nodes manually. - -1. Unfortunately, you'll need a helper script to transform the kernel -sysfs device name into the well known dvb adapter / device naming scheme. -The script should be called "dvb.sh" and should be placed into a script -dir where udev can execute it, most likely /etc/udev/scripts/ - -So, create a new file /etc/udev/scripts/dvb.sh and add the following: -------------------------------schnipp------------------------------------------------ -#!/bin/sh -/bin/echo $1 | /bin/sed -e 's,dvb\([0-9]\)\.\([^0-9]*\)\([0-9]\),dvb/adapter\1/\2\3,' -------------------------------schnipp------------------------------------------------ - -Don't forget to make the script executable with "chmod". - -1. You need to create a proper udev rule that will create the device nodes -like you know them. All real distributions out there scan the /etc/udev/rules.d -directory for rule files. The main udev configuration file /etc/udev/udev.conf -will tell you the directory where the rules are, most likely it's /etc/udev/rules.d/ - -Create a new rule file in that directory called "dvb.rule" and add the following line: -------------------------------schnipp------------------------------------------------ -KERNEL="dvb*", PROGRAM="/etc/udev/scripts/dvb.sh %k", NAME="%c" -------------------------------schnipp------------------------------------------------ - -If you want more control over the device nodes (for example a special group membership) -have a look at "man udev". - -For every device that registers to the sysfs subsystem with a "dvb" prefix, -the helper script /etc/udev/scripts/dvb.sh is invoked, which will then -create the proper device node in your /dev/ directory. diff --git a/Documentation/fb/matroxfb.txt b/Documentation/fb/matroxfb.txt index ad7a67707..621e3b3e4 100644 --- a/Documentation/fb/matroxfb.txt +++ b/Documentation/fb/matroxfb.txt @@ -223,13 +223,6 @@ dfp:X - use settings X for digital flat panel interface. X is number from selects who is source of display clocks, whether G400, or panel. Default value is now read back from hardware - so you should specify this value only if you are also using `init' parameter. -outputs:XYZ - set mapping between CRTC and outputs. Each letter can have value - of 0 (for no CRTC), 1 (CRTC1) or 2 (CRTC2), and first letter corresponds - to primary analog output, second letter to the secondary analog output - and third letter to the DVI output. Default setting is 100 for - cards below G400 or G400 without DFP, 101 for G400 with DFP, and - 111 for G450 and G550. You can set mapping only on first card, - use matroxset for setting up other devices. vesa:X - selects startup videomode. X is number from 0 to 0x1FF, see table above for detailed explanation. Default is 640x480x8bpp if driver has 8bpp support. Otherwise first available of 640x350x4bpp, diff --git a/Documentation/fb/vesafb.txt b/Documentation/fb/vesafb.txt index 814e2f56a..36beb54f1 100644 --- a/Documentation/fb/vesafb.txt +++ b/Documentation/fb/vesafb.txt @@ -146,16 +146,11 @@ pmipal Use the protected mode interface for palette changes. mtrr setup memory type range registers for the vesafb framebuffer. -vremap:n - remap 'n' MiB of video RAM. If 0 or not specified, remap memory +vram:n remap 'n' MiB of video RAM. If 0 or not specified, remap memory according to video mode. (2.5.66 patch/idea by Antonino Daplas reversed to give override possibility (allocate more fb memory than the kernel would) to 2.4 by tmb@iki.fi) -vtotal:n - if the video BIOS of your card incorrectly determines the total - amount of video RAM, use this option to override the BIOS (in MiB). - Have fun! Gerd diff --git a/Documentation/filesystems/Locking b/Documentation/filesystems/Locking index 570ef5db0..f1c2cee13 100644 --- a/Documentation/filesystems/Locking +++ b/Documentation/filesystems/Locking @@ -295,19 +295,13 @@ fl_release_private: yes yes prototypes: int (*fl_compare_owner)(struct file_lock *, struct file_lock *); void (*fl_notify)(struct file_lock *); /* unblock callback */ - void (*fl_copy_lock)(struct file_lock *, struct file_lock *); - void (*fl_release_private)(struct file_lock *); - void (*fl_break)(struct file_lock *); /* break_lease callback */ locking rules: BKL may block fl_compare_owner: yes no fl_notify: yes no -fl_copy_lock: yes no -fl_release_private: yes yes -fl_break: yes no - Currently only NFSD and NLM provide instances of this class. None of the + Currently only NLM provides instances of this class. None of the them block. If you have out-of-tree instances - please, show up. Locking in that area will change. --------------------------- buffer_head ----------------------------------- @@ -317,8 +311,8 @@ prototypes: locking rules: called from interrupts. In other words, extreme care is needed here. bh is locked, but that's all warranties we have here. Currently only RAID1, -highmem, fs/buffer.c, and fs/ntfs/aops.c are providing these. Block devices -call this method upon the IO completion. +highmem and fs/buffer.c are providing these. Block devices call this method +upon the IO completion. --------------------------- block_device_operations ----------------------- prototypes: diff --git a/Documentation/filesystems/devfs/ChangeLog b/Documentation/filesystems/devfs/ChangeLog index e5aba5246..12583144e 100644 --- a/Documentation/filesystems/devfs/ChangeLog +++ b/Documentation/filesystems/devfs/ChangeLog @@ -1632,7 +1632,7 @@ Changes for patch v177 - Fixed bugs in handling symlinks: could leak or cause Oops - Cleaned up directory handling by separating fops - Thanks to Alexander Viro + Thanks to Alexander Viro =============================================================================== Changes for patch v178 diff --git a/Documentation/filesystems/devfs/README b/Documentation/filesystems/devfs/README index 54366ecc2..3ef858266 100644 --- a/Documentation/filesystems/devfs/README +++ b/Documentation/filesystems/devfs/README @@ -1349,6 +1349,47 @@ This will cause devfsd to create (and destroy) symbolic links which point to the kernel-supplied names. +SCSI Host Probing Issues + +Devfs allows you to identify SCSI discs based in part on SCSI host +numbers. If you have only one SCSI host (card) in your computer, then +clearly it will be given host number 0. Life is not always that easy +is you have multiple SCSI hosts. Unfortunately, it can sometimes be +difficult to guess what the probing order of SCSI hosts is. You need +to know the probe order before you can use device names. To make this +easy, there is a kernel boot parameter called "scsihosts". This allows +you to specify the probe order for different types of SCSI hosts. The +syntax of this parameter is: + +scsihosts=:::...: + +where ,,..., are the names +of drivers used in the /proc filesystem. For example: + + scsihosts=aha1542:ppa:aha1542::ncr53c7xx + + +means that devices connected to + +- first aha1542 controller - will be /dev/scsi/host0/bus#/target#/lun# +- first parallel port ZIP - will be /dev/scsi/host1/bus#/target#/lun# +- second aha1542 controller - will be /dev/scsi/host2/bus#/target#/lun# +- first NCR53C7xx controller - will be /dev/scsi/host4/bus#/target#/lun# +- any extra controller - will be /dev/scsi/host5/bus#/target#/lun#, + /dev/scsi/host6/bus#/target#/lun#, etc +- if any of above controllers will not be found - the reserved names will + not be used by any other device. +- /dev/scsi/host3/bus#/target#/lun# names will never be used + + +You can use ',' instead of ':' as the separator character if you +wish. I have used the devfsd naming scheme +here. + +Note that this scheme does not address the SCSI host order if you have +multiple cards of the same type (such as NCR53c8xx). In this case you +need to use the driver-specific boot parameters to control this. + ----------------------------------------------------------------------------- @@ -1911,6 +1952,12 @@ explores the SCSI subsystem and how it interacts with devfs Douglas Gilbert has written another useful document at +http://www.torque.net/scsi/scsihosts.html which +discusses the scsihosts= boot option + + +Douglas Gilbert has written yet another useful document at + http://www.torque.net/scsi/SCSI-2.4-HOWTO/ which discusses the Linux SCSI subsystem in 2.4. diff --git a/Documentation/filesystems/ext2.txt b/Documentation/filesystems/ext2.txt index b5cb9110c..23a4d98f9 100644 --- a/Documentation/filesystems/ext2.txt +++ b/Documentation/filesystems/ext2.txt @@ -11,53 +11,57 @@ for NetBSD, FreeBSD, the GNU HURD, Windows 95/98/NT, OS/2 and RISC OS. Options ======= -Most defaults are determined by the filesystem superblock, and can be -set using tune2fs(8). Kernel-determined defaults are indicated by (*). +When mounting an ext2 filesystem, the following options are accepted. +Defaults are marked with (*). bsddf (*) Makes `df' act like BSD. minixdf Makes `df' act like Minix. -check Check block and inode bitmaps at mount time - (requires CONFIG_EXT2_CHECK). +barrier=1 This enables/disables barriers. barrier=0 disables it, + barrier=1 enables it. + +orlov (*) This enables the new Orlov block allocator. It's + enabled by default. + +oldalloc This disables the Orlov block allocator and + enables the old block allocator. Orlov should + have better performance, we'd like to get some + feedback if it's the contrary for you. + +user_xattr (*) Enables POSIX Extended Attributes. It's enabled by + default, however you need to confifure its support + (CONFIG_EXT2_FS_XATTR). This is neccesary if you want + to use POSIX Acces Control Lists support. You can visit + http://acl.bestbits.at to know more about POSIX Extended + attributes. + +nouser_xattr Disables POSIX Extended Attributes. + +acl (*) Enables POSIX Access Control Lists support. This is + enabled by default, however you need to configure + its support (CONFIG_EXT2_FS_POSIX_ACL). If you want + to know more about ACLs visit http://acl.bestbits.at + +noacl This option disables POSIX Access Control List support. + check=none, nocheck (*) Don't do extra checking of bitmaps on mount (check=normal and check=strict options removed) debug Extra debugging information is sent to the kernel syslog. Useful for developers. -errors=continue Keep going on a filesystem error. +errors=continue (*) Keep going on a filesystem error. errors=remount-ro Remount the filesystem read-only on an error. errors=panic Panic and halt the machine if an error occurs. grpid, bsdgroups Give objects the same group ID as their parent. -nogrpid, sysvgroups New objects have the group ID of their creator. - -nouid32 Use 16-bit UIDs and GIDs. - -oldalloc Enable the old block allocator. Orlov should - have better performance, we'd like to get some - feedback if it's the contrary for you. -orlov (*) Use the Orlov block allocator. - (See http://lwn.net/Articles/14633/ and - http://lwn.net/Articles/14446/.) +nogrpid, sysvgroups (*) New objects have the group ID of their creator. resuid=n The user ID which may use the reserved blocks. -resgid=n The group ID which may use the reserved blocks. +resgid=n The group ID which may use the reserved blocks. sb=n Use alternate superblock at this location. -user_xattr Enable "user." POSIX Extended Attributes - (requires CONFIG_EXT2_FS_XATTR). - See also http://acl.bestbits.at -nouser_xattr Don't support "user." extended attributes. - -acl Enable POSIX Access Control Lists support - (requires CONFIG_EXT2_FS_POSIX_ACL). - See also http://acl.bestbits.at -noacl Don't support POSIX ACLs. - -nobh Do not attach buffer_heads to file pagecache. - grpquota,noquota,quota,usrquota Quota options are silently ignored by ext2. diff --git a/Documentation/filesystems/ntfs.txt b/Documentation/filesystems/ntfs.txt index f89b440fa..7d600c0f4 100644 --- a/Documentation/filesystems/ntfs.txt +++ b/Documentation/filesystems/ntfs.txt @@ -10,10 +10,8 @@ Table of contents - Features - Supported mount options - Known bugs and (mis-)features -- Using NTFS volume and stripe sets - - The Device-Mapper driver - - The Software RAID / MD driver - - Limitiations when using the MD driver +- Using Software RAID with NTFS +- Limitiations when using the MD driver - ChangeLog @@ -201,161 +199,11 @@ Please send bug reports/comments/feedback/abuse to the Linux-NTFS development list at sourceforge: linux-ntfs-dev@lists.sourceforge.net -Using NTFS volume and stripe sets -================================= - -For support of volume and stripe sets, you can either use the kernel's -Device-Mapper driver or the kernel's Software RAID / MD driver. The former is -the recommended one to use for linear raid. But the latter is required for -raid level 5. For striping and mirroring, either driver should work fine. - - -The Device-Mapper driver ------------------------- - -You will need to create a table of the components of the volume/stripe set and -how they fit together and load this into the kernel using the dmsetup utility -(see man 8 dmsetup). - -Linear volume sets, i.e. linear raid, has been tested and works fine. Even -though untested, there is no reason why stripe sets, i.e. raid level 0, and -mirrors, i.e. raid level 1 should not work, too. Stripes with parity, i.e. -raid level 5, unfortunately cannot work yet because the current version of the -Device-Mapper driver does not support raid level 5. You may be able to use the -Software RAID / MD driver for raid level 5, see the next section for details. - -To create the table describing your volume you will need to know each of its -components and their sizes in sectors, i.e. multiples of 512-byte blocks. - -For NT4 fault tolerant volumes you can obtain the sizes using fdisk. So for -example if one of your partitions is /dev/hda2 you would do: - -$ fdisk -ul /dev/hda - -Disk /dev/hda: 81.9 GB, 81964302336 bytes -255 heads, 63 sectors/track, 9964 cylinders, total 160086528 sectors -Units = sectors of 1 * 512 = 512 bytes - - Device Boot Start End Blocks Id System - /dev/hda1 * 63 4209029 2104483+ 83 Linux - /dev/hda2 4209030 37768814 16779892+ 86 NTFS - /dev/hda3 37768815 46170809 4200997+ 83 Linux - -And you would know that /dev/hda2 has a size of 37768814 - 4209030 + 1 = -33559785 sectors. - -For Win2k and later dynamic disks, you can for example use the ldminfo utility -which is part of the Linux LDM tools (the latest version at the time of -writing is linux-ldm-0.0.8.tar.bz2). You can download it from: - http://linux-ntfs.sourceforge.net/downloads.html -Simply extract the downloaded archive (tar xvjf linux-ldm-0.0.8.tar.bz2), go -into it (cd linux-ldm-0.0.8) and change to the test directory (cd test). You -will find the precompiled (i386) ldminfo utility there. NOTE: You will not be -able to compile this yourself easily so use the binary version! - -Then you would use ldminfo in dump mode to obtain the necessary information: - -$ ./ldminfo --dump /dev/hda - -This would dump the LDM database found on /dev/hda which describes all of your -dynamic disks and all the volumes on them. At the bottom you will see the -VOLUME DEFINITIONS section which is all you really need. You may need to look -further above to determine which of the disks in the volume definitions is -which device in Linux. Hint: Run ldminfo on each of your dynamic disks and -look at the Disk Id close to the top of the output for each (the PRIVATE HEADER -section). You can then find these Disk Ids in the VBLK DATABASE section in the - components where you will get the LDM Name for the disk that is found in -the VOLUME DEFINITIONS section. - -Note you will also need to enable the LDM driver in the Linux kernel. If your -distribution did not enable it, you will need to recompile the kernel with it -enabled. This will create the LDM partitions on each device at boot time. You -would then use those devices (for /dev/hda they would be /dev/hda1, 2, 3, etc) -in the Device-Mapper table. - -You can also bypass using the LDM driver by using the main device (e.g. -/dev/hda) and then using the offsets of the LDM partitions into this device as -the "Start sector of device" when creating the table. Once again ldminfo would -give you the correct information to do this. - -Assuming you know all your devices and their sizes things are easy. - -For a linear raid the table would look like this (note all values are in -512-byte sectors): - ---- cut here --- -# Offset into Size of this Raid type Device Start sector -# volume device of device -0 1028161 linear /dev/hda1 0 -1028161 3903762 linear /dev/hdb2 0 -4931923 2103211 linear /dev/hdc1 0 ---- cut here --- - -For a striped volume, i.e. raid level 0, you will need to know the chunk size -you used when creating the volume. Windows uses 64kiB as the default, so it -will probably be this unless you changes the defaults when creating the array. - -For a raid level 0 the table would look like this (note all values are in -512-byte sectors): - ---- cut here --- -# Offset Size Raid Number Chunk 1st Start 2nd Start -# into of the type of size Device in Device in -# volume volume stripes device device -0 2056320 striped 2 128 /dev/hda1 0 /dev/hdb1 0 ---- cut here --- - -If there are more than two devices, just add each of them to the end of the -line. - -Finally, for a mirrored volume, i.e. raid level 1, the table would look like -this (note all values are in 512-byte sectors): - ---- cut here --- -# Ofs Size Raid Log Number Region Should Number Source Start Taget Start -# in of the type type of log size sync? of Device in Device in -# vol volume params mirrors Device Device -0 2056320 mirror core 2 16 nosync 2 /dev/hda1 0 /dev/hdb1 0 ---- cut here --- - -If you are mirroring to multiple devices you can specify further targets at the -end of the line. - -Note the "Should sync?" parameter "nosync" means that the two mirrors are -already in sync which will be the case on a clean shutdown of Windows. If the -mirrors are not clean, you can specify the "sync" option instead of "nosync" -and the Device-Mapper driver will then copy the entirey of the "Source Device" -to the "Target Device" or if you specified multipled target devices to all of -them. - -Once you have your table, save it in a file somewhere (e.g. /etc/ntfsvolume1), -and hand it over to dmsetup to work with, like so: - -$ dmsetup create myvolume1 /etc/ntfsvolume1 - -You can obviously replace "myvolume1" with whatever name you like. - -If it all worked, you will now have the device /dev/device-mapper/myvolume1 -which you can then just use as an argument to the mount command as usual to -mount the ntfs volume. For example: - -$ mount -t ntfs -o ro /dev/device-mapper/myvolume1 /mnt/myvol1 - -(You need to create the directory /mnt/myvol1 first and of course you can use -anything you like instead of /mnt/myvol1 as long as it is an existing -directory.) - -It is advisable to do the mount read-only to see if the volume has been setup -correctly to avoid the possibility of causing damage to the data on the ntfs -volume. - - -The Software RAID / MD driver ------------------------------ +Using Software RAID with NTFS +============================= -An alternative to using the Device-Mapper driver is to use the kernel's -Software RAID / MD driver. For which you need to set up your /etc/raidtab -appropriately (see man 5 raidtab). +For support of volume and stripe sets, use the kernel's Software RAID / MD +driver and set up your /etc/raidtab appropriately (see man 5 raidtab). Linear volume sets, i.e. linear raid, as well as stripe sets, i.e. raid level 0, have been tested and work fine (though see section "Limitiations when using @@ -410,8 +258,8 @@ setup correctly to avoid the possibility of causing damage to the data on the ntfs volume. -Limitiations when using the Software RAID / MD driver ------------------------------------------------------ +Limitiations when using the MD driver +===================================== Using the md driver will not work properly if any of your NTFS partitions have an odd number of sectors. This is especially important for linear raid as all @@ -423,24 +271,12 @@ apparent when you try to use the volume again under Windows. So when using linear raid, make sure that all your partitions have an even number of sectors BEFORE attempting to use it. You have been warned! -Even better is to simply use the Device-Mapper for linear raid and then you do -not have this problem with odd numbers of sectors. - ChangeLog ========= Note, a technical ChangeLog aimed at kernel hackers is in fs/ntfs/ChangeLog. -2.1.22: - - Improve handling of ntfs volumes with errors. - - Fix various bugs and race conditions. -2.1.21: - - Fix several race conditions and various other bugs. - - Many internal cleanups, code reorganization, optimizations, and mft - and index record writing code rewritten to fit in with the changes. - - Update Documentation/filesystems/ntfs.txt with instructions on how to - use the Device-Mapper driver with NTFS ftdisk/LDM raid. 2.1.20: - Fix two stupid bugs introduced in 2.1.18 release. 2.1.19: diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt index 2c3fc3a27..0dad0f2b0 100644 --- a/Documentation/filesystems/proc.txt +++ b/Documentation/filesystems/proc.txt @@ -350,6 +350,22 @@ available. In this case, there are 0 chunks of 2^0*PAGE_SIZE available in ZONE_DMA, 4 chunks of 2^1*PAGE_SIZE in ZONE_DMA, 101 chunks of 2^4*PAGE_SIZE available in ZONE_NORMAL, etc... + +1.3 IDE devices in /proc/ide +---------------------------- + +The subdirectory /proc/ide contains information about all IDE devices of which +the kernel is aware. There is one subdirectory for each IDE controller, the +file drivers and a link for each IDE device, pointing to the device directory +in the controller specific subtree. + +The file drivers contains general information about the drivers used for the +IDE devices: + + > cat /proc/ide/drivers + ide-cdrom version 4.53 + ide-disk version 1.08 + .............................................................................. meminfo: @@ -378,9 +394,9 @@ Dirty: 968 kB Writeback: 0 kB Mapped: 280372 kB Slab: 684068 kB -CommitLimit: 7669796 kB -Committed_AS: 100056 kB +Committed_AS: 1576424 kB PageTables: 24448 kB +ReverseMaps: 1080904 VmallocTotal: 112216 kB VmallocUsed: 428 kB VmallocChunk: 111088 kB @@ -418,54 +434,26 @@ VmallocChunk: 111088 kB Writeback: Memory which is actively being written back to the disk Mapped: files which have been mmaped, such as libraries Slab: in-kernel data structures cache - CommitLimit: Based on the overcommit ratio ('vm.overcommit_ratio'), - this is the total amount of memory currently available to - be allocated on the system. This limit is only adhered to - if strict overcommit accounting is enabled (mode 2 in - 'vm.overcommit_memory'). - The CommitLimit is calculated with the following formula: - CommitLimit = ('vm.overcommit_ratio' * Physical RAM) + Swap - For example, on a system with 1G of physical RAM and 7G - of swap with a `vm.overcommit_ratio` of 30 it would - yield a CommitLimit of 7.3G. - For more details, see the memory overcommit documentation - in vm/overcommit-accounting. -Committed_AS: The amount of memory presently allocated on the system. - The committed memory is a sum of all of the memory which - has been allocated by processes, even if it has not been - "used" by them as of yet. A process which malloc()'s 1G - of memory, but only touches 300M of it will only show up - as using 300M of memory even if it has the address space - allocated for the entire 1G. This 1G is memory which has - been "committed" to by the VM and can be used at any time - by the allocating application. With strict overcommit - enabled on the system (mode 2 in 'vm.overcommit_memory'), - allocations which would exceed the CommitLimit (detailed - above) will not be permitted. This is useful if one needs - to guarantee that processes will not fail due to lack of - memory once that memory has been successfully allocated. +Committed_AS: An estimate of how much RAM you would need to make a + 99.99% guarantee that there never is OOM (out of memory) + for this workload. Normally the kernel will overcommit + memory. That means, say you do a 1GB malloc, nothing + happens, really. Only when you start USING that malloc + memory you will get real memory on demand, and just as + much as you use. So you sort of take a mortgage and hope + the bank doesn't go bust. Other cases might include when + you mmap a file that's shared only when you write to it + and you get a private copy of that data. While it normally + is shared between processes. The Committed_AS is a + guesstimate of how much RAM/swap you would need + worst-case. PageTables: amount of memory dedicated to the lowest level of page tables. + ReverseMaps: number of reverse mappings performed VmallocTotal: total size of vmalloc memory area VmallocUsed: amount of vmalloc area which is used VmallocChunk: largest contigious block of vmalloc area which is free - -1.3 IDE devices in /proc/ide ----------------------------- - -The subdirectory /proc/ide contains information about all IDE devices of which -the kernel is aware. There is one subdirectory for each IDE controller, the -file drivers and a link for each IDE device, pointing to the device directory -in the controller specific subtree. - -The file drivers contains general information about the drivers used for the -IDE devices: - - > cat /proc/ide/drivers - ide-cdrom version 4.53 - ide-disk version 1.08 - More detailed information can be found in the controller specific subdirectories. These are named ide0, ide1 and so on. Each of these directories contains the files shown in table 1-4. @@ -1281,14 +1269,6 @@ block_dump block_dump enables block I/O debugging when set to a nonzero value. More information on block I/O debugging is in Documentation/laptop-mode.txt. -swap_token_timeout ------------------- - -This file contains valid hold time of swap out protection token. The Linux -VM has token based thrashing control mechanism and uses the token to prevent -unnecessary page faults in thrashing situation. The unit of the value is -second. The value would be useful to tune thrashing behavior. - 2.5 /proc/sys/dev - Device specific parameters ---------------------------------------------- diff --git a/Documentation/filesystems/ufs.txt b/Documentation/filesystems/ufs.txt index 2b5a56a6a..bdedb9fff 100644 --- a/Documentation/filesystems/ufs.txt +++ b/Documentation/filesystems/ufs.txt @@ -15,15 +15,13 @@ ufstype=type_of_ufs ufs manually by mount option ufstype. Possible values are: old old format of ufs - default value, supported as read-only + default value, supported os read-only 44bsd used in FreeBSD, NetBSD, OpenBSD - supported as read-write - - ufs2 used in FreeBSD 5.x - supported as read-only + supported os read-write - 5xbsd synonym for ufs2 + ufs2 used in FreeBSD 5.x + supported os read-only sun used in SunOS (Solaris) supported as read-write @@ -31,9 +29,6 @@ ufstype=type_of_ufs sunx86 used in SunOS for Intel (Solarisx86) supported as read-write - hp used in HP-UX - supported as read-only - nextstep used in NextStep supported as read-only @@ -51,7 +46,7 @@ POSSIBLE PROBLEMS ================= There is still bug in reallocation of fragment, in file fs/ufs/balloc.c, -line 364. But it seems working on current buffer cache configuration. +line 364. But it seem working on current buffer cache configuration. BUG REPORTS diff --git a/Documentation/filesystems/vfs.txt b/Documentation/filesystems/vfs.txt index 3f318dd44..5be10c915 100644 --- a/Documentation/filesystems/vfs.txt +++ b/Documentation/filesystems/vfs.txt @@ -44,7 +44,7 @@ Opening a File The VFS implements the open(2), stat(2), chmod(2) and similar system calls. The pathname argument is used by the VFS to search through the directory entry cache (dentry cache or "dcache"). This provides a very -fast look-up mechanism to translate a pathname (filename) into a +fast lookup mechanism to translate a pathname (filename) into a specific dentry. An individual dentry usually has a pointer to an inode. Inodes are the @@ -64,7 +64,7 @@ resolve your pathname into a dentry, the VFS may have to resort to creating dentries along the way, and then loading the inode. This is done by looking up the inode. -To look up an inode (usually read from disc) requires that the VFS +To lookup an inode (usually read from disc) requires that the VFS calls the lookup() method of the parent directory inode. This method is installed by the specific filesystem implementation that the inode lives in. There will be more on this later. @@ -286,7 +286,7 @@ otherwise noted. dentry). Here you will probably call d_instantiate() with the dentry and the newly created inode - lookup: called when the VFS needs to look up an inode in a parent + lookup: called when the VFS needs to lookup an inode in a parent directory. The name to look for is found in the dentry. This method must call d_add() to insert the found inode into the dentry. The "i_count" field in the inode structure should be @@ -405,10 +405,7 @@ from device node to device driver (this is an unofficial kernel patch). -Directory Entry Cache (dcache)
------------------------------- - -struct dentry_operations +struct dentry_operations
======================== This describes how a filesystem can overload the standard dentry @@ -428,7 +425,7 @@ struct dentry_operations { }; d_revalidate: called when the VFS needs to revalidate a dentry. This - is called whenever a name look-up finds a dentry in the + is called whenever a name lookup finds a dentry in the dcache. Most filesystems leave this as NULL, because all their dentries in the dcache are valid @@ -451,9 +448,6 @@ Each dentry has a pointer to its parent dentry, as well as a hash list of child dentries. Child dentries are basically like files in a directory. -Directory Entry Cache APIs --------------------------- - There are a number of functions defined which permit a filesystem to manipulate dentries: @@ -488,184 +482,3 @@ manipulate dentries: pointer is NULL, the dentry is called a "negative dentry". This function is commonly called when an inode is created for an existing negative dentry - - d_lookup: look up a dentry given its parent and path name component - It looks up the child of that given name from the dcache - hash table. If it is found, the reference count is incremented - and the dentry is returned. The caller must use d_put() - to free the dentry when it finishes using it. - - -RCU-based dcache locking model ------------------------------- - -On many workloads, the most common operation on dcache is -to look up a dentry, given a parent dentry and the name -of the child. Typically, for every open(), stat() etc., -the dentry corresponding to the pathname will be looked -up by walking the tree starting with the first component -of the pathname and using that dentry along with the next -component to look up the next level and so on. Since it -is a frequent operation for workloads like multiuser -environments and webservers, it is important to optimize -this path. - -Prior to 2.5.10, dcache_lock was acquired in d_lookup and thus -in every component during path look-up. Since 2.5.10 onwards, -fastwalk algorithm changed this by holding the dcache_lock -at the beginning and walking as many cached path component -dentries as possible. This signficantly decreases the number -of acquisition of dcache_lock. However it also increases the -lock hold time signficantly and affects performance in large -SMP machines. Since 2.5.62 kernel, dcache has been using -a new locking model that uses RCU to make dcache look-up -lock-free. - -The current dcache locking model is not very different from the existing -dcache locking model. Prior to 2.5.62 kernel, dcache_lock -protected the hash chain, d_child, d_alias, d_lru lists as well -as d_inode and several other things like mount look-up. RCU-based -changes affect only the way the hash chain is protected. For everything -else the dcache_lock must be taken for both traversing as well as -updating. The hash chain updations too take the dcache_lock. -The significant change is the way d_lookup traverses the hash chain, -it doesn't acquire the dcache_lock for this and rely on RCU to -ensure that the dentry has not been *freed*. - - -Dcache locking details ----------------------- -For many multi-user workloads, open() and stat() on files are -very frequently occurring operations. Both involve walking -of path names to find the dentry corresponding to the -concerned file. In 2.4 kernel, dcache_lock was held -during look-up of each path component. Contention and -cacheline bouncing of this global lock caused significant -scalability problems. With the introduction of RCU -in linux kernel, this was worked around by making -the look-up of path components during path walking lock-free. - - -Safe lock-free look-up of dcache hash table -=========================================== - -Dcache is a complex data structure with the hash table entries -also linked together in other lists. In 2.4 kernel, dcache_lock -protected all the lists. We applied RCU only on hash chain -walking. The rest of the lists are still protected by dcache_lock. -Some of the important changes are : - -1. The deletion from hash chain is done using hlist_del_rcu() macro which - doesn't initialize next pointer of the deleted dentry and this - allows us to walk safely lock-free while a deletion is happening. - -2. Insertion of a dentry into the hash table is done using - hlist_add_head_rcu() which take care of ordering the writes - - the writes to the dentry must be visible before the dentry - is inserted. This works in conjuction with hlist_for_each_rcu() - while walking the hash chain. The only requirement is that - all initialization to the dentry must be done before hlist_add_head_rcu() - since we don't have dcache_lock protection while traversing - the hash chain. This isn't different from the existing code. - -3. The dentry looked up without holding dcache_lock by cannot be - returned for walking if it is unhashed. It then may have a NULL - d_inode or other bogosity since RCU doesn't protect the other - fields in the dentry. We therefore use a flag DCACHE_UNHASHED to - indicate unhashed dentries and use this in conjunction with a - per-dentry lock (d_lock). Once looked up without the dcache_lock, - we acquire the per-dentry lock (d_lock) and check if the - dentry is unhashed. If so, the look-up is failed. If not, the - reference count of the dentry is increased and the dentry is returned. - -4. Once a dentry is looked up, it must be ensured during the path - walk for that component it doesn't go away. In pre-2.5.10 code, - this was done holding a reference to the dentry. dcache_rcu does - the same. In some sense, dcache_rcu path walking looks like - the pre-2.5.10 version. - -5. All dentry hash chain updations must take the dcache_lock as well as - the per-dentry lock in that order. dput() does this to ensure - that a dentry that has just been looked up in another CPU - doesn't get deleted before dget() can be done on it. - -6. There are several ways to do reference counting of RCU protected - objects. One such example is in ipv4 route cache where - deferred freeing (using call_rcu()) is done as soon as - the reference count goes to zero. This cannot be done in - the case of dentries because tearing down of dentries - require blocking (dentry_iput()) which isn't supported from - RCU callbacks. Instead, tearing down of dentries happen - synchronously in dput(), but actual freeing happens later - when RCU grace period is over. This allows safe lock-free - walking of the hash chains, but a matched dentry may have - been partially torn down. The checking of DCACHE_UNHASHED - flag with d_lock held detects such dentries and prevents - them from being returned from look-up. - - -Maintaining POSIX rename semantics -================================== - -Since look-up of dentries is lock-free, it can race against -a concurrent rename operation. For example, during rename -of file A to B, look-up of either A or B must succeed. -So, if look-up of B happens after A has been removed from the -hash chain but not added to the new hash chain, it may fail. -Also, a comparison while the name is being written concurrently -by a rename may result in false positive matches violating -rename semantics. Issues related to race with rename are -handled as described below : - -1. Look-up can be done in two ways - d_lookup() which is safe - from simultaneous renames and __d_lookup() which is not. - If __d_lookup() fails, it must be followed up by a d_lookup() - to correctly determine whether a dentry is in the hash table - or not. d_lookup() protects look-ups using a sequence - lock (rename_lock). - -2. The name associated with a dentry (d_name) may be changed if - a rename is allowed to happen simultaneously. To avoid memcmp() - in __d_lookup() go out of bounds due to a rename and false - positive comparison, the name comparison is done while holding the - per-dentry lock. This prevents concurrent renames during this - operation. - -3. Hash table walking during look-up may move to a different bucket as - the current dentry is moved to a different bucket due to rename. - But we use hlists in dcache hash table and they are null-terminated. - So, even if a dentry moves to a different bucket, hash chain - walk will terminate. [with a list_head list, it may not since - termination is when the list_head in the original bucket is reached]. - Since we redo the d_parent check and compare name while holding - d_lock, lock-free look-up will not race against d_move(). - -4. There can be a theoritical race when a dentry keeps coming back - to original bucket due to double moves. Due to this look-up may - consider that it has never moved and can end up in a infinite loop. - But this is not any worse that theoritical livelocks we already - have in the kernel. - - -Important guidelines for filesystem developers related to dcache_rcu -==================================================================== - -1. Existing dcache interfaces (pre-2.5.62) exported to filesystem - don't change. Only dcache internal implementation changes. However - filesystems *must not* delete from the dentry hash chains directly - using the list macros like allowed earlier. They must use dcache - APIs like d_drop() or __d_drop() depending on the situation. - -2. d_flags is now protected by a per-dentry lock (d_lock). All - access to d_flags must be protected by it. - -3. For a hashed dentry, checking of d_count needs to be protected - by d_lock. - - -Papers and other documentation on dcache locking -================================================ - -1. Scaling dcache with RCU (http://linuxjournal.com/article.php?sid=7124). - -2. http://lse.sourceforge.net/locking/dcache/dcache.html diff --git a/Documentation/floppy.txt b/Documentation/floppy.txt index 6fb10fcd8..99d3ad3b3 100644 --- a/Documentation/floppy.txt +++ b/Documentation/floppy.txt @@ -13,20 +13,15 @@ LILO configuration options (Thinkpad users, read this) The floppy driver is configured using the 'floppy=' option in lilo. This option can be typed at the boot prompt, or entered in the lilo configuration file. - - Example: If your kernel is called linux-2.6.9, type the following line + Example: If your kernel is called linux-2.2.13, type the following line at the lilo boot prompt (if you have a thinkpad): - - linux-2.6.9 floppy=thinkpad - + linux-2.2.13 floppy=thinkpad You may also enter the following line in /etc/lilo.conf, in the description -of linux-2.6.9: - +of linux-2.2.13: append = "floppy=thinkpad" Several floppy related options may be given, example: - - linux-2.6.9 floppy=daring floppy=two_fdc + linux-2.2.13 floppy=daring floppy=two_fdc append = "floppy=daring floppy=two_fdc" If you give options both in the lilo config file and on the boot @@ -34,25 +29,17 @@ prompt, the option strings of both places are concatenated, the boot prompt options coming last. That's why there are also options to restore the default behavior. - -Module configuration options -============================ - If you use the floppy driver as a module, use the following syntax: -modprobe floppy + insmod floppy Example: - modprobe floppy omnibook messages - - If you need certain options enabled every time you load the floppy driver, -you can put: - - options floppy omnibook messages - -in /etc/modprobe.conf. + insmod floppy daring two_fdc + Some versions of insmod are buggy in one way or another. If you have +any problems (options not being passed correctly, segfaults during +insmod), first check whether there is a more recent version. - The floppy driver related options are: + The floppy related options include: floppy=asus_pci Sets the bit mask to allow only units 0 and 1. (default) @@ -112,7 +99,7 @@ in /etc/modprobe.conf. master arbitration error" messages from your Ethernet card (or from other devices) while accessing the floppy. - floppy=usefifo + floppy=fifo Enables the FIFO. (default) floppy=,fifo_depth @@ -123,7 +110,6 @@ in /etc/modprobe.conf. lower, the interrupt latency should be lower too (faster processor). The benefit of a lower threshold is less interrupts. - To tune the fifo threshold, switch on over/underrun messages using 'floppycontrol --messages'. Then access a floppy disk. If you get a huge amount of "Over/Underrun - retrying" @@ -134,7 +120,6 @@ in /etc/modprobe.conf. fifo values without rebooting the machine for each test. Note that you need to do 'floppycontrol --messages' every time you re-insert the module. - Usually, tuning the fifo threshold should not be needed, as the default (0xa) is reasonable. @@ -143,7 +128,6 @@ in /etc/modprobe.conf. you have more than two floppy drives (only two can be described in the physical CMOS), or if your BIOS uses non-standard CMOS types. The CMOS types are: - 0 - Use the value of the physical CMOS 1 - 5 1/4 DD 2 - 5 1/4 HD @@ -152,7 +136,6 @@ in /etc/modprobe.conf. 5 - 3 1/2 ED 6 - 3 1/2 ED 16 - unknown or not installed - (Note: there are two valid types for ED drives. This is because 5 was initially chosen to represent floppy *tapes*, and 6 for ED drives. AMI ignored this, and used 5 for ED drives. That's why the floppy @@ -205,6 +188,7 @@ in /etc/modprobe.conf. in some more extreme cases." + Supporting utilities and additional documentation: ================================================== @@ -235,11 +219,3 @@ sure to mention also the type of the filesystem in the subject line. Be sure to read the FAQ before mailing/posting any bug reports! Alain - -Changelog -========= - -10-30-2004 : Cleanup, updating, add reference to module configuration. - James Nelson - -6-3-2000 : Original Document diff --git a/Documentation/ftape.txt b/Documentation/ftape.txt index 7d8bb3384..9cc814a55 100644 --- a/Documentation/ftape.txt +++ b/Documentation/ftape.txt @@ -2,21 +2,26 @@ Intro ===== This file describes some issues involved when using the "ftape" -floppy tape device driver that comes with the Linux kernel. +floppy tape device driver that comes with the Linux kernel. This +document deals with ftape-3.04 and later. Please read the section +"Changes" for the most striking differences between version 3.04 and +2.08; the latter was the version of ftape delivered with the kernel +until kernel version 2.0.30 and 2.1.57. ftape-3.x developed as the +re-unification of ftape-2.x and zftape. zftape was developed in +parallel with the stock ftape-2.x driver sharing the same hardware +support but providing an enhanced file system interface. zftape also +provided user transparent block-wise on-the-fly compression (regard it +as a feature or bug of zftape). ftape has a home page at -http://ftape.dot-heine.de/ +http://www-math.math.rwth-aachen.de/~LBFM/claus/ftape which contains further information about ftape. Please cross check this WWW address against the address given (if any) in the MAINTAINERS file located in the top level directory of the Linux kernel source tree. -NOTE: This is an unmaintained set of drivers, and it is not guaranteed to work. -If you are interested in taking over maintenance, contact Claus-Justus Heine -, the former maintainer. - Contents ======== @@ -26,8 +31,9 @@ A. Changes 1. Goal 2. I/O Block Size 3. Write Access when not at EOD (End Of Data) or BOT (Begin Of Tape) - 4. Formatting - 5. Interchanging cartridges with other operating systems + 4. MTBSF - backspace over file mark and position at its EOT side + 5. Formatting + 6. Interchanging cartridges with other operating systems B. Debugging Output 1. Introduction @@ -52,7 +58,7 @@ changed. Up to date documentation as well as recent development versions of ftape and useful links to related topics can be found at the ftape home page at -http://ftape.dot-heine.de/ +http://www-math.math.rwth-aachen.de/~LBFM/claus/ftape ******************************************************************************* @@ -64,7 +70,7 @@ A. Changes The goal of all that incompatibilities was to give ftape an interface that resembles the interface provided by SCSI tape drives as close as possible. Thus any Unix backup program that is known to work - with SCSI tape drives should also work. + with SCSI tape drives should also work with ftape-3.04 and above. The concept of a fixed block size for read/write transfers is rather unrelated to this SCSI tape compatibility at the file system @@ -75,8 +81,14 @@ A. Changes 2. I/O Block Size ~~~~~~~~~~~~~~ - The block size defaults to 10k which is the default block size of - GNU tar. + The probably most striking difference between ftape-2.x and + ftape-3.x with the zftape file system interface is the concept of a + fixed block size: data must be written to or read from the tape in + multiples of a fixed block size. The block size defaults to 10k + which is the default block size of GNU tar. While this is quite + usual for SCSI tapes (block size of 32k?) and the QIC-150 driver + `./drivers/char/tpqic02.c' ftape-2.x allowed data to be written in + arbitrary portions to the tape. The block size can be tuned either during kernel configuration or at runtime with the MTIOCTOP ioctl using the MTSETBLK operation @@ -97,41 +109,53 @@ A. Changes ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ zftape (the file system interface of ftape-3.x) denies write access to the tape cartridge when it isn't positioned either at BOT or - EOD. - -4. Formatting + EOD. This inconvenience has been introduced as it was reported that + the former behavior of ftape-2.x which allowed write access at + arbitrary locations already has caused data loss with some backup + programs. + +4. MTBSF - backspace over file mark and position at its EOT side + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ftape-2.x didn't handle the MTBSF tape operation correctly. A MTBSF + call (i.e. "mt -f /dev/nqft0 bsf #COUNT") should space over #COUNT + file marks and then position at the EOT tape side of the file + mark. This has to be taken literally, i.e. "mt -f /dev/nqft0 bsf 1" + should simply position at the start of the current volume. + +5. Formatting ~~~~~~~~~~ - ftape DOES support formatting of floppy tape cartridges. You need the - `ftformat' program that is shipped with the modules version of ftape. - Please get the latest version of ftape from + ftape-3.x DOES support formatting of floppy tape cartridges. You + need the `ftformat' program that is shipped with the modules version + of ftape-3.x. Please get the latest version of ftape from ftp://sunsite.unc.edu/pub/Linux/kernel/tapes or from the ftape home page at - http://ftape.dot-heine.de/ + http://www-math.math.rwth-aachen.de/~LBFM/claus/ftape `ftformat' is contained in the `./contrib/' subdirectory of that separate ftape package. -5. Interchanging cartridges with other operating systems +6. Interchanging cartridges with other operating systems ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The internal emulation of Unix tape device file marks has changed - completely. ftape now uses the volume table segment as specified + completely. ftape-3.x now uses the volume table segment as specified by the QIC-40/80/3010/3020/113 standards to emulate file marks. As a consequence there is limited support to interchange cartridges with other operating systems. To be more precise: ftape will detect volumes written by other OS's programs and other OS's programs will detect volumes written by - ftape. + ftape-3.x. However, it isn't possible to extract the data dumped to the tape - by some MSDOS program with ftape. This exceeds the scope of a + by some MSDOG program with ftape-3.x. This exceeds the scope of a kernel device driver. If you need such functionality, then go ahead - and write a user space utility that is able to do that. ftape already - provides all kernel level support necessary to do that. + and write a user space utility that is able to do + that. ftape-3.x/zftape already provides all kernel level support + necessary to do that. ******************************************************************************* @@ -176,7 +200,7 @@ B. Debugging Output ii) trim the debugging output at module load time with - modprobe ftape ft_tracing=#DBGLVL + insmod ftape.o ft_tracing=#DBGLVL Of course, this applies only if you have configured ftape to be compiled as a module. @@ -216,7 +240,7 @@ C. Boot and load time configuration 2. Module load time parameters ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Module parameters can be specified either directly when invoking - the program 'modprobe' at the shell prompt: + the program 'insmod' at the shell prompt: modprobe ftape ft_tracing=4 @@ -253,12 +277,6 @@ C. Boot and load time configuration line documentation provided during that kernel configuration process. - ft_probe_fc10 is set to a non-zero value if you wish for ftape to - probe for a Colorado FC-10 or FC-20 controller. - - ft_mach2 is set to a non-zero value if you wish for ftape to probe - for a Mountain MACH-2 controller. - module | kernel command line -----------------------|---------------------- ft_fdc_base=BASE | ftape=BASE,ioport @@ -298,10 +316,10 @@ D. Support and contacts page to query for the most recent documentation, related work and development versions of ftape. - Changelog: - ========== - -~1996: Original Document -10-24-2004: General cleanup and updating, noting additional module options. - James Nelson + LocalWords: ftape Linux zftape http www rwth aachen LBFM claus EOD config + LocalWords: datarate LocalWords BOT MTBSF EOT HOWTO QIC tpqic menuconfig + LocalWords: MTIOCTOP MTSETBLK mt dev qft setblk BLKSZ bsf zftape's xconfig + LocalWords: nqft ftformat ftp sunsite unc edu contrib ft MSDOG fdc + LocalWords: dma setdensity DBGLVL insmod lilo LI nux ader conf txt + LocalWords: modprobe IRQ BOOL ioport irq fc mach THR diff --git a/Documentation/hw_random.txt b/Documentation/hw_random.txt index bb58c36b5..20be482b6 100644 --- a/Documentation/hw_random.txt +++ b/Documentation/hw_random.txt @@ -67,3 +67,72 @@ Driver details: Special thanks to Matt Sottek. I did the "guts", he did the "brains" and all the testing. + +Change history: + + Version 1.0.0: + * Merge Intel, AMD, VIA RNG drivers into one. + Further changelog in BitKeeper. + + Version 0.9.8: + * Support other i8xx chipsets by adding 82801E detection + * 82801DB detection is the same as for 82801CA. + + Version 0.9.7: + * Support other i8xx chipsets too (by adding 82801BA(M) and + 82801CA(M) detection) + + Version 0.9.6: + * Internal driver cleanups, prep for 1.0.0 release. + + Version 0.9.5: + * Rip out entropy injection via timer. It never ever worked, + and a better solution (rngd) is now available. + + Version 0.9.4: + * Fix: Remove request_mem_region + * Fix: Horrible bugs in FIPS calculation and test execution + + Version 0.9.3: + * Clean up rng_read a bit. + * Update i810_rng driver Web site URL. + * Increase default timer interval to 4 samples per second. + * Abort if mem region is not available. + * BSS zero-initialization cleanup. + * Call misc_register() from rng_init_one. + * Fix O_NONBLOCK to occur before we schedule. + + Version 0.9.2: + * Simplify open blocking logic + + Version 0.9.1: + * Support i815 chipsets too (Matt Sottek) + * Fix reference counting when statically compiled (prumpf) + * Rewrite rng_dev_read (prumpf) + * Make module races less likely (prumpf) + * Small miscellaneous bug fixes (prumpf) + * Use pci table for PCI id list + + Version 0.9.0: + * Don't register a pci_driver, because we are really + using PCI bridge vendor/device ids, and someone + may want to register a driver for the bridge. (bug fix) + * Don't let the usage count go negative (bug fix) + * Clean up spinlocks (bug fix) + * Enable PCI device, if necessary (bug fix) + * iounmap on module unload (bug fix) + * If RNG chrdev is already in use when open(2) is called, + sleep until it is available. + * Remove redundant globals rng_allocated, rng_use_count + * Convert numeric globals to unsigned + * Module unload cleanup + + Version 0.6.2: + * Clean up spinlocks. Since we don't have any interrupts + to worry about, but we do have a timer to worry about, + we use spin_lock_bh everywhere except the timer function + itself. + * Fix module load/unload. + * Fix timer function and h/w enable/disable logic + * New timer interval sysctl + * Clean up sysctl names diff --git a/Documentation/i2c/dev-interface b/Documentation/i2c/dev-interface index 09d6cda2a..4fe882cb4 100644 --- a/Documentation/i2c/dev-interface +++ b/Documentation/i2c/dev-interface @@ -3,7 +3,7 @@ possible to access all devices on an adapter from userspace, through the /dev interface. You need to load module i2c-dev for this. Each registered i2c adapter gets a number, counting from 0. You can -examine /sys/class/i2c-dev/ to see what number corresponds to which adapter. +examine /proc/bus/i2c to see what number corresponds to which adapter. I2C device files are character device files with major device number 89 and a minor device number corresponding to the number assigned as explained above. They should be called "i2c-%d" (i2c-0, i2c-1, ..., @@ -19,7 +19,7 @@ Yes, I know, you should never include kernel header files, but until glibc knows about i2c, there is not much choice. Now, you have to decide which adapter you want to access. You should -inspect /sys/class/i2c-dev/ to decide this. Adapter numbers are assigned +inspect /proc/bus/i2c to decide this. Adapter numbers are assigned somewhat dynamically, so you can not even assume /dev/i2c-0 is the first adapter. diff --git a/Documentation/i2c/i2c-stub b/Documentation/i2c/i2c-stub deleted file mode 100644 index 2626ba926..000000000 --- a/Documentation/i2c/i2c-stub +++ /dev/null @@ -1,33 +0,0 @@ -MODULE: i2c-stub - -DESCRIPTION: - -This module is a very simple fake I2C/SMBus driver. It implements three -types of SMBus commands: write quick, (r/w) byte data, and (r/w) word data. - -No hardware is needed nor associated with this module. It will accept write -quick commands to all addresses; it will respond to the other commands (also -to all addresses) by reading from or writing to an array in memory. It will -also spam the kernel logs for every command it handles. - -The typical use-case is like this: - 1. load this module - 2. use i2cset (from lm_sensors project) to pre-load some data - 3. load the target sensors chip driver module - 4. observe its behavior in the kernel log - -CAVEATS: - -There are independent arrays for byte/data and word/data commands. Depending -on if/how a target driver mixes them, you'll need to be careful. - -If your target driver polls some byte or word waiting for it to change, the -stub could lock it up. Use i2cset to unlock it. - -If the hardware for your driver has banked registers (e.g. Winbond sensors -chips) this module will not work well - although it could be extended to -support that pretty easily. - -If you spam it hard enough, printk can be lossy. This module really wants -something like relayfs. - diff --git a/Documentation/i2c/sysfs-interface b/Documentation/i2c/sysfs-interface index 346400519..3e74daeb9 100644 --- a/Documentation/i2c/sysfs-interface +++ b/Documentation/i2c/sysfs-interface @@ -135,44 +135,18 @@ fan[1-3]_div Fan divisor. Note that this is actually an internal clock divisor, which affects the measurable speed range, not the read value. -******* -* PWM * -******* - -pwm[1-3] Pulse width modulation fan control. +fan[1-3]_pwm Pulse width modulation fan control. Integer value in the range 0 to 255 Read/Write 255 is max or 100%. -pwm[1-3]_enable +fan[1-3]_pwm_enable Switch PWM on and off. Not always present even if fan*_pwm is. 0 to turn off - 1 to turn on in manual mode - 2 to turn on in automatic mode + 1 to turn on Read/Write -pwm[1-*]_auto_channels_temp - Select which temperature channels affect this PWM output in - auto mode. Bitfield, 1 is temp1, 2 is temp2, 4 is temp3 etc... - Which values are possible depend on the chip used. - -pwm[1-*]_auto_point[1-*]_pwm -pwm[1-*]_auto_point[1-*]_temp -pwm[1-*]_auto_point[1-*]_temp_hyst - Define the PWM vs temperature curve. Number of trip points is - chip-dependent. Use this for chips which associate trip points - to PWM output channels. - -OR - -temp[1-*]_auto_point[1-*]_pwm -temp[1-*]_auto_point[1-*]_temp -temp[1-*]_auto_point[1-*]_temp_hyst - Define the PWM vs temperature curve. Number of trip points is - chip-dependent. Use this for chips which associate trip points - to temperature channels. - **************** * Temperatures * diff --git a/Documentation/i2c/writing-clients b/Documentation/i2c/writing-clients index 011e92094..a45421284 100644 --- a/Documentation/i2c/writing-clients +++ b/Documentation/i2c/writing-clients @@ -24,24 +24,22 @@ all clients from it. Remember, a driver structure contains general access routines, a client structure specific information like the actual I2C address. -static struct i2c_driver foo_driver = { - .owner = THIS_MODULE, - .name = "Foo version 2.3 driver", - .id = I2C_DRIVERID_FOO, /* from i2c-id.h, optional */ - .flags = I2C_DF_NOTIFY, - .attach_adapter = &foo_attach_adapter, - .detach_client = &foo_detach_client, - .command = &foo_command /* may be NULL */ -} + static struct i2c_driver foo_driver = { + .owner = THIS_MODULE, + .name = "Foo version 2.3 driver", + .id = I2C_DRIVERID_FOO, /* usually from i2c-id.h */ + .flags = I2C_DF_NOTIFY, + .attach_adapter = &foo_attach_adapter, + .detach_client = &foo_detach_client, + .command = &foo_command /* may be NULL */ + } The name can be chosen freely, and may be upto 40 characters long. Please use something descriptive here. -If used, the id should be a unique ID. The range 0xf000 to 0xffff is -reserved for local use, and you can use one of those until you start -distributing the driver, at which time you should contact the i2c authors -to get your own ID(s). Note that most of the time you don't need an ID -at all so you can just omit it. +The id should be a unique ID. The range 0xf000 to 0xffff is reserved for +local use, and you can use one of those until you start distributing the +driver. Before you do that, contact the i2c authors to get your own ID(s). Don't worry about the flags field; just put I2C_DF_NOTIFY into it. This means that your driver will be notified when new adapters are found. @@ -571,7 +569,7 @@ the driver module is usually enough. have to be cleaned up! */ static int __initdata foo_initialized = 0; - static int __init foo_init(void) + int __init foo_init(void) { int res; printk("foo version %s (%s)\n",FOO_VERSION,FOO_DATE); @@ -585,27 +583,41 @@ the driver module is usually enough. return 0; } - void foo_cleanup(void) + int __init foo_cleanup(void) { + int res; if (foo_initialized == 1) { if ((res = i2c_del_driver(&foo_driver))) { printk("foo: Driver registration failed, module not removed.\n"); - return; + return res; } foo_initialized --; } + return 0; } + #ifdef MODULE + /* Substitute your own name and email address */ MODULE_AUTHOR("Frodo Looijaard " MODULE_DESCRIPTION("Driver for Barf Inc. Foo I2C devices"); - module_init(foo_init); - module_exit(foo_cleanup); + int init_module(void) + { + return foo_init(); + } + + int cleanup_module(void) + { + return foo_cleanup(); + } + + #endif /* def MODULE */ Note that some functions are marked by `__init', and some data structures -by `__init_data'. Hose functions and structures can be removed after -kernel booting (or module loading) is completed. +by `__init_data'. If this driver is compiled as part of the kernel (instead +of as a module), those functions and structures can be removed after +kernel booting is completed. Command function ================ @@ -676,26 +688,14 @@ SMBus communication extern s32 i2c_smbus_read_word_data(struct i2c_client * client, u8 command); extern s32 i2c_smbus_write_word_data(struct i2c_client * client, u8 command, u16 value); + extern s32 i2c_smbus_process_call(struct i2c_client * client, + u8 command, u16 value); + extern s32 i2c_smbus_read_block_data(struct i2c_client * client, + u8 command, u8 *values); extern s32 i2c_smbus_write_block_data(struct i2c_client * client, u8 command, u8 length, u8 *values); -These ones were removed in Linux 2.6.10 because they had no users, but could -be added back later if needed: - - extern s32 i2c_smbus_read_i2c_block_data(struct i2c_client * client, - u8 command, u8 *values); - extern s32 i2c_smbus_read_block_data(struct i2c_client * client, - u8 command, u8 *values); - extern s32 i2c_smbus_write_i2c_block_data(struct i2c_client * client, - u8 command, u8 length, - u8 *values); - extern s32 i2c_smbus_process_call(struct i2c_client * client, - u8 command, u16 value); - extern s32 i2c_smbus_block_process_call(struct i2c_client *client, - u8 command, u8 length, - u8 *values) - All these transactions return -1 on failure. The 'write' transactions return 0 on success; the 'read' transactions return the read value, except for read_block, which returns the number of values read. The block buffers diff --git a/Documentation/ia64/serial.txt b/Documentation/ia64/serial.txt deleted file mode 100644 index f51eb4bc2..000000000 --- a/Documentation/ia64/serial.txt +++ /dev/null @@ -1,144 +0,0 @@ -SERIAL DEVICE NAMING - - As of 2.6.10, serial devices on ia64 are named based on the - order of ACPI and PCI enumeration. The first device in the - ACPI namespace (if any) becomes /dev/ttyS0, the second becomes - /dev/ttyS1, etc., and PCI devices are named sequentially - starting after the ACPI devices. - - Prior to 2.6.10, there were confusing exceptions to this: - - - Firmware on some machines (mostly from HP) provides an HCDP - table[1] that tells the kernel about devices that can be used - as a serial console. If the user specified "console=ttyS0" - or the EFI ConOut path contained only UART devices, the - kernel registered the device described by the HCDP as - /dev/ttyS0. - - - If there was no HCDP, we assumed there were UARTs at the - legacy COM port addresses (I/O ports 0x3f8 and 0x2f8), so - the kernel registered those as /dev/ttyS0 and /dev/ttyS1. - - Any additional ACPI or PCI devices were registered sequentially - after /dev/ttyS0 as they were discovered. - - With an HCDP, device names changed depending on EFI configuration - and "console=" arguments. Without an HCDP, device names didn't - change, but we registered devices that might not really exist. - - For example, an HP rx1600 with a single built-in serial port - (described in the ACPI namespace) plus an MP[2] (a PCI device) has - these ports: - - pre-2.6.10 pre-2.6.10 - MMIO (EFI console (EFI console - address on builtin) on MP port) 2.6.10 - ========== ========== ========== ====== - builtin 0xff5e0000 ttyS0 ttyS1 ttyS0 - MP UPS 0xf8031000 ttyS1 ttyS2 ttyS1 - MP Console 0xf8030000 ttyS2 ttyS0 ttyS2 - MP 2 0xf8030010 ttyS3 ttyS3 ttyS3 - MP 3 0xf8030038 ttyS4 ttyS4 ttyS4 - -CONSOLE SELECTION - - EFI knows what your console devices are, but it doesn't tell the - kernel quite enough to actually locate them. The DIG64 HCDP - table[1] does tell the kernel where potential serial console - devices are, but not all firmware supplies it. Also, EFI supports - multiple simultaneous consoles and doesn't tell the kernel which - should be the "primary" one. - - So how do you tell Linux which console device to use? - - - If your firmware supplies the HCDP, it is simplest to - configure EFI with a single device (either a UART or a VGA - card) as the console. Then you don't need to tell Linux - anything; the kernel will automatically use the EFI console. - - (This works only in 2.6.6 or later; prior to that you had - to specify "console=ttyS0" to get a serial console.) - - - Without an HCDP, Linux defaults to a VGA console unless you - specify a "console=" argument. - - NOTE: Don't assume that a serial console device will be /dev/ttyS0. - It might be ttyS1, ttyS2, etc. Make sure you have the appropriate - entries in /etc/inittab (for getty) and /etc/securetty (to allow - root login). - -EARLY SERIAL CONSOLE - - The kernel can't start using a serial console until it knows where - the device lives. Normally this happens when the driver enumerates - all the serial devices, which can happen a minute or more after the - kernel starts booting. - - 2.6.10 and later kernels have an "early uart" driver that works - very early in the boot process. The kernel will automatically use - this if the user supplies an argument like "console=uart,io,0x3f8", - or if the EFI console path contains only a UART device and the - firmware supplies an HCDP. - -TROUBLESHOOTING SERIAL CONSOLE PROBLEMS - - No kernel output after elilo prints "Uncompressing Linux... done": - - - You specified "console=ttyS0" but Linux changed the device - to which ttyS0 refers. Configure exactly one EFI console - device[3] and remove the "console=" option. - - - The EFI console path contains both a VGA device and a UART. - EFI and elilo use both, but Linux defaults to VGA. Remove - the VGA device from the EFI console path[3]. - - - Multiple UARTs selected as EFI console devices. EFI and - elilo use all selected devices, but Linux uses only one. - Make sure only one UART is selected in the EFI console - path[3]. - - - You're connected to an HP MP port[2] but have a non-MP UART - selected as EFI console device. EFI uses the MP as a - console device even when it isn't explicitly selected. - Either move the console cable to the non-MP UART, or change - the EFI console path[3] to the MP UART. - - Long pause (60+ seconds) between "Uncompressing Linux... done" and - start of kernel output: - - - No early console because you used "console=ttyS". Remove - the "console=" option if your firmware supplies an HCDP. - - - If you don't have an HCDP, the kernel doesn't know where - your console lives until the driver discovers serial - devices. Use "console=uart, io,0x3f8" (or appropriate - address for your machine). - - Kernel and init script output works fine, but no "login:" prompt: - - - Add getty entry to /etc/inittab for console tty. Look for - the "Adding console on ttyS" message that tells you which - device is the console. - - "login:" prompt, but can't login as root: - - - Add entry to /etc/securetty for console tty. - - - -[1] http://www.dig64.org/specifications/DIG64_PCDPv20.pdf - The table was originally defined as the "HCDP" for "Headless - Console/Debug Port." The current version is the "PCDP" for - "Primary Console and Debug Port Devices." - -[2] The HP MP (management processor) is a PCI device that provides - several UARTs. One of the UARTs is often used as a console; the - EFI Boot Manager identifies it as "Acpi(HWP0002,700)/Pci(...)/Uart". - The external connection is usually a 25-pin connector, and a - special dongle converts that to three 9-pin connectors, one of - which is labelled "Console." - -[3] EFI console devices are configured using the EFI Boot Manager - "Boot option maintenance" menu. You may have to interrupt the - boot sequence to use this menu, and you will have to reset the - box after changing console configuration. diff --git a/Documentation/ibm-acpi.txt b/Documentation/ibm-acpi.txt deleted file mode 100644 index c437b1aef..000000000 --- a/Documentation/ibm-acpi.txt +++ /dev/null @@ -1,474 +0,0 @@ - IBM ThinkPad ACPI Extras Driver - - Version 0.8 - 8 November 2004 - - Borislav Deianov - http://ibm-acpi.sf.net/ - - -This is a Linux ACPI driver for the IBM ThinkPad laptops. It aims to -support various features of these laptops which are accessible through -the ACPI framework but not otherwise supported by the generic Linux -ACPI drivers. - - -Status ------- - -The features currently supported are the following (see below for -detailed description): - - - Fn key combinations - - Bluetooth enable and disable - - video output switching, expansion control - - ThinkLight on and off - - limited docking and undocking - - UltraBay eject - - Experimental: CMOS control - - Experimental: LED control - - Experimental: ACPI sounds - -A compatibility table by model and feature is maintained on the web -site, http://ibm-acpi.sf.net/. I appreciate any success or failure -reports, especially if they add to or correct the compatibility table. -Please include the following information in your report: - - - ThinkPad model name - - a copy of your DSDT, from /proc/acpi/dsdt - - which driver features work and which don't - - the observed behavior of non-working features - -Any other comments or patches are also more than welcome. - - -Installation ------------- - -If you are compiling this driver as included in the Linux kernel -sources, simply enable the CONFIG_ACPI_IBM option (Power Management / -ACPI / IBM ThinkPad Laptop Extras). The rest of this section describes -how to install this driver when downloaded from the web site. - -First, you need to get a kernel with ACPI support up and running. -Please refer to http://acpi.sourceforge.net/ for help with this -step. How successful you will be depends a lot on you ThinkPad model, -the kernel you are using and any additional patches applied. The -kernel provided with your distribution may not be good enough. I -needed to compile a 2.6.7 kernel with the 20040715 ACPI patch to get -ACPI working reliably on my ThinkPad X40. Old ThinkPad models may not -be supported at all. - -Assuming you have the basic ACPI support working (e.g. you can see the -/proc/acpi directory), follow the following steps to install this -driver: - - - unpack the archive: - - tar xzvf ibm-acpi-x.y.tar.gz; cd ibm-acpi-x.y - - - compile the driver: - - make - - - install the module in your kernel modules directory: - - make install - - - load the module: - - modprobe ibm_acpi - -After loading the module, check the "dmesg" output for any error messages. - - -Features --------- - -The driver creates the /proc/acpi/ibm directory. There is a file under -that directory for each feature described below. Note that while the -driver is still in the alpha stage, the exact proc file format and -commands supported by the various features is guaranteed to change -frequently. - -Driver Version -- /proc/acpi/ibm/driver --------------------------------------- - -The driver name and version. No commands can be written to this file. - -Hot Keys -- /proc/acpi/ibm/hotkey ---------------------------------- - -Without this driver, only the Fn-F4 key (sleep button) generates an -ACPI event. With the driver loaded, the hotkey feature enabled and the -mask set (see below), the various hot keys generate ACPI events in the -following format: - - ibm/hotkey HKEY 00000080 0000xxxx - -The last four digits vary depending on the key combination pressed. -All labeled Fn-Fx key combinations generate distinct events. In -addition, the lid microswitch and some docking station buttons may -also generate such events. - -The following commands can be written to this file: - - echo enable > /proc/acpi/ibm/hotkey -- enable the hot keys feature - echo disable > /proc/acpi/ibm/hotkey -- disable the hot keys feature - echo 0xffff > /proc/acpi/ibm/hotkey -- enable all possible hot keys - echo 0x0000 > /proc/acpi/ibm/hotkey -- disable all possible hot keys - ... any other 4-hex-digit mask ... - echo reset > /proc/acpi/ibm/hotkey -- restore the original mask - -The bit mask allows some control over which hot keys generate ACPI -events. Not all bits in the mask can be modified. Not all bits that -can be modified do anything. Not all hot keys can be individually -controlled by the mask. Most recent ThinkPad models honor the -following bits (assuming the hot keys feature has been enabled): - - key bit behavior when set behavior when unset - - Fn-F3 always generates ACPI event - Fn-F4 always generates ACPI event - Fn-F5 0010 generate ACPI event enable/disable Bluetooth - Fn-F7 0040 generate ACPI event switch LCD and external display - Fn-F8 0080 generate ACPI event expand screen or none - Fn-F9 0100 generate ACPI event none - Fn-F12 always generates ACPI event - -Some models do not support all of the above. For example, the T30 does -not support Fn-F5 and Fn-F9. Other models do not support the mask at -all. On those models, hot keys cannot be controlled individually. - -Note that enabling ACPI events for some keys prevents their default -behavior. For example, if events for Fn-F5 are enabled, that key will -no longer enable/disable Bluetooth by itself. This can still be done -from an acpid handler for the ibm/hotkey event. - -Note also that not all Fn key combinations are supported through -ACPI. For example, on the X40, the brightness, volume and "Access IBM" -buttons do not generate ACPI events even with this driver. They *can* -be used through the "ThinkPad Buttons" utility, see -http://www.nongnu.org/tpb/ - -Bluetooth -- /proc/acpi/ibm/bluetooth -------------------------------------- - -This feature shows the presence and current state of a Bluetooth -device. If Bluetooth is installed, the following commands can be used: - - echo enable > /proc/acpi/ibm/bluetooth - echo disable > /proc/acpi/ibm/bluetooth - -Video output control -- /proc/acpi/ibm/video --------------------------------------------- - -This feature allows control over the devices used for video output - -LCD, CRT or DVI (if available). The following commands are available: - - echo lcd_enable > /proc/acpi/ibm/video - echo lcd_disable > /proc/acpi/ibm/video - echo crt_enable > /proc/acpi/ibm/video - echo crt_disable > /proc/acpi/ibm/video - echo dvi_enable > /proc/acpi/ibm/video - echo dvi_disable > /proc/acpi/ibm/video - echo auto_enable > /proc/acpi/ibm/video - echo auto_disable > /proc/acpi/ibm/video - echo expand_toggle > /proc/acpi/ibm/video - echo video_switch > /proc/acpi/ibm/video - -Each video output device can be enabled or disabled individually. -Reading /proc/acpi/ibm/video shows the status of each device. - -Automatic video switching can be enabled or disabled. When automatic -video switching is enabled, certain events (e.g. opening the lid, -docking or undocking) cause the video output device to change -automatically. While this can be useful, it also causes flickering -and, on the X40, video corruption. By disabling automatic switching, -the flickering or video corruption can be avoided. - -The video_switch command cycles through the available video outputs -(it sumulates the behavior of Fn-F7). - -Video expansion can be toggled through this feature. This controls -whether the display is expanded to fill the entire LCD screen when a -mode with less than full resolution is used. Note that the current -video expansion status cannot be determined through this feature. - -Note that on many models (particularly those using Radeon graphics -chips) the X driver configures the video card in a way which prevents -Fn-F7 from working. This also disables the video output switching -features of this driver, as it uses the same ACPI methods as -Fn-F7. Video switching on the console should still work. - -ThinkLight control -- /proc/acpi/ibm/light ------------------------------------------- - -The current status of the ThinkLight can be found in this file. A few -models which do not make the status available will show it as -"unknown". The available commands are: - - echo on > /proc/acpi/ibm/light - echo off > /proc/acpi/ibm/light - -Docking / Undocking -- /proc/acpi/ibm/dock ------------------------------------------- - -Docking and undocking (e.g. with the X4 UltraBase) requires some -actions to be taken by the operating system to safely make or break -the electrical connections with the dock. - -The docking feature of this driver generates the following ACPI events: - - ibm/dock GDCK 00000003 00000001 -- eject request - ibm/dock GDCK 00000003 00000002 -- undocked - ibm/dock GDCK 00000000 00000003 -- docked - -NOTE: These events will only be generated if the laptop was docked -when originally booted. This is due to the current lack of support for -hot plugging of devices in the Linux ACPI framework. If the laptop was -booted while not in the dock, the following message is shown in the -logs: "ibm_acpi: dock device not present". No dock-related events are -generated but the dock and undock commands described below still -work. They can be executed manually or triggered by Fn key -combinations (see the example acpid configuration files included in -the driver tarball package available on the web site). - -When the eject request button on the dock is pressed, the first event -above is generated. The handler for this event should issue the -following command: - - echo undock > /proc/acpi/ibm/dock - -After the LED on the dock goes off, it is safe to eject the laptop. -Note: if you pressed this key by mistake, go ahead and eject the -laptop, then dock it back in. Otherwise, the dock may not function as -expected. - -When the laptop is docked, the third event above is generated. The -handler for this event should issue the following command to fully -enable the dock: - - echo dock > /proc/acpi/ibm/dock - -The contents of the /proc/acpi/ibm/dock file shows the current status -of the dock, as provided by the ACPI framework. - -The docking support in this driver does not take care of enabling or -disabling any other devices you may have attached to the dock. For -example, a CD drive plugged into the UltraBase needs to be disabled or -enabled separately. See the provided example acpid configuration files -for how this can be accomplished. - -There is no support yet for PCI devices that may be attached to a -docking station, e.g. in the ThinkPad Dock II. The driver currently -does not recognize, enable or disable such devices. This means that -the only docking stations currently supported are the X-series -UltraBase docks and "dumb" port replicators like the Mini Dock (the -latter don't need any ACPI support, actually). - -UltraBay Eject -- /proc/acpi/ibm/bay ------------------------------------- - -Inserting or ejecting an UltraBay device requires some actions to be -taken by the operating system to safely make or break the electrical -connections with the device. - -This feature generates the following ACPI events: - - ibm/bay MSTR 00000003 00000000 -- eject request - ibm/bay MSTR 00000001 00000000 -- eject lever inserted - -NOTE: These events will only be generated if the UltraBay was present -when the laptop was originally booted (on the X series, the UltraBay -is in the dock, so it may not be present if the laptop was undocked). -This is due to the current lack of support for hot plugging of devices -in the Linux ACPI framework. If the laptop was booted without the -UltraBay, the following message is shown in the logs: "ibm_acpi: bay -device not present". No bay-related events are generated but the eject -command described below still works. It can be executed manually or -triggered by a hot key combination. - -Sliding the eject lever generates the first event shown above. The -handler for this event should take whatever actions are necessary to -shut down the device in the UltraBay (e.g. call idectl), then issue -the following command: - - echo eject > /proc/acpi/ibm/bay - -After the LED on the UltraBay goes off, it is safe to pull out the -device. - -When the eject lever is inserted, the second event above is -generated. The handler for this event should take whatever actions are -necessary to enable the UltraBay device (e.g. call idectl). - -The contents of the /proc/acpi/ibm/bay file shows the current status -of the UltraBay, as provided by the ACPI framework. - -Experimental Features ---------------------- - -The following features are marked experimental because using them -involves guessing the correct values of some parameters. Guessing -incorrectly may have undesirable effects like crashing your -ThinkPad. USE THESE WITH CAUTION! To activate them, you'll need to -supply the experimental=1 parameter when loading the module. - -Experimental: CMOS control - /proc/acpi/ibm/cmos ------------------------------------------------- - -This feature is used internally by the ACPI firmware to control the -ThinkLight on most newer ThinkPad models. It appears that it can also -control LCD brightness, sounds volume and more, but only on some -models. - -The commands are non-negative integer numbers: - - echo 0 >/proc/acpi/ibm/cmos - echo 1 >/proc/acpi/ibm/cmos - echo 2 >/proc/acpi/ibm/cmos - ... - -The range of numbers which are used internally by various models is 0 -to 21, but it's possible that numbers outside this range have -interesting behavior. Here is the behavior on the X40 (tpb is the -ThinkPad Buttons utility): - - 0 - no effect but tpb reports "Volume down" - 1 - no effect but tpb reports "Volume up" - 2 - no effect but tpb reports "Mute on" - 3 - simulate pressing the "Access IBM" button - 4 - LCD brightness up - 5 - LCD brightness down - 11 - toggle screen expansion - 12 - ThinkLight on - 13 - ThinkLight off - 14 - no effect but tpb reports ThinkLight status change - -If you try this feature, please send me a report similar to the -above. On models which allow control of LCD brightness or sound -volume, I'd like to provide this functionality in an user-friendly -way, but first I need a way to identify the models which this is -possible. - -Experimental: LED control - /proc/acpi/ibm/LED ----------------------------------------------- - -Some of the LED indicators can be controlled through this feature. The -available commands are: - - echo on >/proc/acpi/ibm/led - echo off >/proc/acpi/ibm/led - echo blink >/proc/acpi/ibm/led - -The parameter is a non-negative integer. The range of LED -numbers used internally by various models is 0 to 7 but it's possible -that numbers outside this range are also valid. Here is the mapping on -the X40: - - 0 - power - 1 - battery (orange) - 2 - battery (green) - 3 - UltraBase - 4 - UltraBay - 7 - standby - -All of the above can be turned on and off and can be made to blink. - -If you try this feature, please send me a report similar to the -above. I'd like to provide this functionality in an user-friendly way, -but first I need to identify the which numbers correspond to which -LEDs on various models. - -Experimental: ACPI sounds - /proc/acpi/ibm/beep ------------------------------------------------ - -The BEEP method is used internally by the ACPI firmware to provide -audible alerts in various situtation. This feature allows the same -sounds to be triggered manually. - -The commands are non-negative integer numbers: - - echo 0 >/proc/acpi/ibm/beep - echo 1 >/proc/acpi/ibm/beep - echo 2 >/proc/acpi/ibm/beep - ... - -The range of numbers which are used internally by various models is 0 -to 17, but it's possible that numbers outside this range are also -valid. Here is the behavior on the X40: - - 2 - two beeps, pause, third beep - 3 - single beep - 4 - "unable" - 5 - single beep - 6 - "AC/DC" - 7 - high-pitched beep - 9 - three short beeps - 10 - very long beep - 12 - low-pitched beep - -(I've only been able to identify a couple of them). - -If you try this feature, please send me a report similar to the -above. I'd like to provide this functionality in an user-friendly way, -but first I need to identify the which numbers correspond to which -sounds on various models. - - -Multiple Command, Module Parameters ------------------------------------ - -Multiple commands can be written to the proc files in one shot by -separating them with commas, for example: - - echo enable,0xffff > /proc/acpi/ibm/hotkey - echo lcd_disable,crt_enable > /proc/acpi/ibm/video - -Commands can also be specified when loading the ibm_acpi module, for -example: - - modprobe ibm_acpi hotkey=enable,0xffff video=auto_disable - - -Example Configuration ---------------------- - -The ACPI support in the kernel is intended to be used in conjunction -with a user-space daemon, acpid. The configuration files for this -daemon control what actions are taken in response to various ACPI -events. An example set of configuration files are included in the -config/ directory of the tarball package available on the web -site. Note that these are provided for illustration purposes only and -may need to be adapted to your particular setup. - -The following utility scripts are used by the example action -scripts (included with ibm-acpi for completeness): - - /usr/local/sbin/idectl -- from the hdparm source distribution, - see http://www.ibiblio.org/pub/Linux/system/hardware - /usr/local/sbin/laptop_mode -- from the Linux kernel source - distribution, see Documentation/laptop-mode.txt - /sbin/service -- comes with Redhat/Fedora distributions - -Toan T Nguyen has written a SuSE powersave -script for the X20, included in config/usr/sbin/ibm_hotkeys_X20 - -Henrik Brix Andersen has written a Gentoo ACPI event -handler script for the X31. You can get the latest version from -http://dev.gentoo.org/~brix/files/x31.sh - -David Schweikert has written an alternative blank.sh -script which works on Debian systems, included in -configs/etc/acpi/actions/blank-debian.sh - - -TODO ----- - -I'd like to implement the following features but haven't yet found the -time and/or I don't yet know how to implement them: - -- UltraBay floppy drive support - diff --git a/Documentation/ide.txt b/Documentation/ide.txt index 12c7a2fd6..58853a4ef 100644 --- a/Documentation/ide.txt +++ b/Documentation/ide.txt @@ -248,6 +248,13 @@ Summary of ide driver parameters for kernel command line allowing ide-floppy, ide-tape, and ide-cdrom|writers to use ide-scsi emulation on a device specific option. + "hdx=stroke" : Should you have a system w/ an AWARD Bios and your + drives are larger than 32GB and it will not boot, + one is required to perform a few OEM operations first. + The option is called "stroke" because it allows one + to "soft clip" the drive to work around a barrier + limit. + "idebus=xx" : inform IDE driver of VESA/PCI bus speed in MHz, where "xx" is between 20 and 66 inclusive, used when tuning chipset PIO modes. @@ -297,7 +304,7 @@ Summary of ide driver parameters for kernel command line "ide=reverse" : formerly called to pci sub-system, but now local. -The following are valid ONLY on ide0, which usually corresponds +The following are valid ONLY on ide0 (except dc4030), which usually corresponds to the first ATA interface found on the particular host, and the defaults for the base,ctl ports must not be altered. @@ -308,7 +315,7 @@ the base,ctl ports must not be altered. "ide0=qd65xx" : probe/support qd65xx interface "ide0=ali14xx" : probe/support ali14xx chipsets (ALI M1439/M1443/M1445) "ide0=umc8672" : probe/support umc8672 chipsets - + "idex=dc4030" : probe/support Promise DC4030VL interface "ide=doubler" : probe/support IDE doublers on Amiga There may be more options than shown -- use the source, Luke! diff --git a/Documentation/ioctl/cdrom.txt b/Documentation/ioctl/cdrom.txt deleted file mode 100644 index 4ccdcc6fe..000000000 --- a/Documentation/ioctl/cdrom.txt +++ /dev/null @@ -1,966 +0,0 @@ - Summary of CDROM ioctl calls. - ============================ - - Edward A. Falk - - November, 2004 - -This document attempts to describe the ioctl(2) calls supported by -the CDROM layer. These are by-and-large implemented (as of Linux 2.6) -in drivers/cdrom/cdrom.c and drivers/block/scsi_ioctl.c - -ioctl values are listed in . As of this writing, they -are as follows: - - CDROMPAUSE Pause Audio Operation - CDROMRESUME Resume paused Audio Operation - CDROMPLAYMSF Play Audio MSF (struct cdrom_msf) - CDROMPLAYTRKIND Play Audio Track/index (struct cdrom_ti) - CDROMREADTOCHDR Read TOC header (struct cdrom_tochdr) - CDROMREADTOCENTRY Read TOC entry (struct cdrom_tocentry) - CDROMSTOP Stop the cdrom drive - CDROMSTART Start the cdrom drive - CDROMEJECT Ejects the cdrom media - CDROMVOLCTRL Control output volume (struct cdrom_volctrl) - CDROMSUBCHNL Read subchannel data (struct cdrom_subchnl) - CDROMREADMODE2 Read CDROM mode 2 data (2336 Bytes) - (struct cdrom_read) - CDROMREADMODE1 Read CDROM mode 1 data (2048 Bytes) - (struct cdrom_read) - CDROMREADAUDIO (struct cdrom_read_audio) - CDROMEJECT_SW enable(1)/disable(0) auto-ejecting - CDROMMULTISESSION Obtain the start-of-last-session - address of multi session disks - (struct cdrom_multisession) - CDROM_GET_MCN Obtain the "Universal Product Code" - if available (struct cdrom_mcn) - CDROM_GET_UPC Deprecated, use CDROM_GET_MCN instead. - CDROMRESET hard-reset the drive - CDROMVOLREAD Get the drive's volume setting - (struct cdrom_volctrl) - CDROMREADRAW read data in raw mode (2352 Bytes) - (struct cdrom_read) - CDROMREADCOOKED read data in cooked mode - CDROMSEEK seek msf address - CDROMPLAYBLK scsi-cd only, (struct cdrom_blk) - CDROMREADALL read all 2646 bytes - CDROMGETSPINDOWN return 4-bit spindown value - CDROMSETSPINDOWN set 4-bit spindown value - CDROMCLOSETRAY pendant of CDROMEJECT - CDROM_SET_OPTIONS Set behavior options - CDROM_CLEAR_OPTIONS Clear behavior options - CDROM_SELECT_SPEED Set the CD-ROM speed - CDROM_SELECT_DISC Select disc (for juke-boxes) - CDROM_MEDIA_CHANGED Check is media changed - CDROM_DRIVE_STATUS Get tray position, etc. - CDROM_DISC_STATUS Get disc type, etc. - CDROM_CHANGER_NSLOTS Get number of slots - CDROM_LOCKDOOR lock or unlock door - CDROM_DEBUG Turn debug messages on/off - CDROM_GET_CAPABILITY get capabilities - CDROMAUDIOBUFSIZ set the audio buffer size - DVD_READ_STRUCT Read structure - DVD_WRITE_STRUCT Write structure - DVD_AUTH Authentication - CDROM_SEND_PACKET send a packet to the drive - CDROM_NEXT_WRITABLE get next writable block - CDROM_LAST_WRITTEN get last block written on disc - - -The information that follows was determined from reading kernel source -code. It is likely that some corrections will be made over time. - - - - - - - -General: - - Unless otherwise specified, all ioctl calls return 0 on success - and -1 with errno set to an appropriate value on error. (Some - ioctls return non-negative data values.) - - Unless otherwise specified, all ioctl calls return -1 and set - errno to EFAULT on a failed attempt to copy data to or from user - address space. - - Individual drivers may return error codes not listed here. - - Unless otherwise specified, all data structures and constants - are defined in - - - - -CDROMPAUSE Pause Audio Operation - - usage: - - ioctl(fd, CDROMPAUSE, 0); - - inputs: none - - outputs: none - - error return: - ENOSYS cd drive not audio-capable. - - -CDROMRESUME Resume paused Audio Operation - - usage: - - ioctl(fd, CDROMRESUME, 0); - - inputs: none - - outputs: none - - error return: - ENOSYS cd drive not audio-capable. - - -CDROMPLAYMSF Play Audio MSF (struct cdrom_msf) - - usage: - - struct cdrom_msf msf; - ioctl(fd, CDROMPLAYMSF, &msf); - - inputs: - cdrom_msf structure, describing a segment of music to play - - outputs: none - - error return: - ENOSYS cd drive not audio-capable. - - notes: - MSF stands for minutes-seconds-frames - LBA stands for logical block address - - Segment is described as start and end times, where each time - is described as minutes:seconds:frames. A frame is 1/75 of - a second. - - -CDROMPLAYTRKIND Play Audio Track/index (struct cdrom_ti) - - usage: - - struct cdrom_ti ti; - ioctl(fd, CDROMPLAYTRKIND, &ti); - - inputs: - cdrom_ti structure, describing a segment of music to play - - outputs: none - - error return: - ENOSYS cd drive not audio-capable. - - notes: - Segment is described as start and end times, where each time - is described as a track and an index. - - - -CDROMREADTOCHDR Read TOC header (struct cdrom_tochdr) - - usage: - - cdrom_tochdr header; - ioctl(fd, CDROMREADTOCHDR, &header); - - inputs: - cdrom_tochdr structure - - outputs: - cdrom_tochdr structure - - error return: - ENOSYS cd drive not audio-capable. - - - -CDROMREADTOCENTRY Read TOC entry (struct cdrom_tocentry) - - usage: - - struct cdrom_tocentry entry; - ioctl(fd, CDROMREADTOCENTRY, &entry); - - inputs: - cdrom_tocentry structure - - outputs: - cdrom_tocentry structure - - error return: - ENOSYS cd drive not audio-capable. - EINVAL entry.cdte_format not CDROM_MSF or CDROM_LBA - EINVAL requested track out of bounds - EIO I/O error reading TOC - - notes: - TOC stands for Table Of Contents - MSF stands for minutes-seconds-frames - LBA stands for logical block address - - - -CDROMSTOP Stop the cdrom drive - - usage: - - ioctl(fd, CDROMSTOP, 0); - - inputs: none - - outputs: none - - error return: - ENOSYS cd drive not audio-capable. - - notes: - Exact interpretation of this ioctl depends on the device, - but most seem to spin the drive down. - - -CDROMSTART Start the cdrom drive - - usage: - - ioctl(fd, CDROMSTART, 0); - - inputs: none - - outputs: none - - error return: - ENOSYS cd drive not audio-capable. - - notes: - Exact interpretation of this ioctl depends on the device, - but most seem to spin the drive up and/or close the tray. - Other devices ignore the ioctl completely. - - -CDROMEJECT Ejects the cdrom media - - usage: - - ioctl(fd, CDROMEJECT, 0); - - inputs: none - - outputs: none - - error returns: - ENOSYS cd drive not capable of ejecting - EBUSY other processes are accessing drive, or door is locked - - notes: - See CDROM_LOCKDOOR, below. - - - -CDROMCLOSETRAY pendant of CDROMEJECT - - usage: - - ioctl(fd, CDROMEJECT, 0); - - inputs: none - - outputs: none - - error returns: - ENOSYS cd drive not capable of ejecting - EBUSY other processes are accessing drive, or door is locked - - notes: - See CDROM_LOCKDOOR, below. - - - -CDROMVOLCTRL Control output volume (struct cdrom_volctrl) - - usage: - - struct cdrom_volctrl volume; - ioctl(fd, CDROMVOLCTRL, &volume); - - inputs: - cdrom_volctrl structure containing volumes for up to 4 - channels. - - outputs: none - - error return: - ENOSYS cd drive not audio-capable. - - - -CDROMVOLREAD Get the drive's volume setting - (struct cdrom_volctrl) - - usage: - - struct cdrom_volctrl volume; - ioctl(fd, CDROMVOLREAD, &volume); - - inputs: none - - outputs: - The current volume settings. - - error return: - ENOSYS cd drive not audio-capable. - - - -CDROMSUBCHNL Read subchannel data (struct cdrom_subchnl) - - usage: - - struct cdrom_subchnl q; - ioctl(fd, CDROMSUBCHNL, &q); - - inputs: - cdrom_subchnl structure - - outputs: - cdrom_subchnl structure - - error return: - ENOSYS cd drive not audio-capable. - EINVAL format not CDROM_MSF or CDROM_LBA - - notes: - Format is converted to CDROM_MSF on return - - - -CDROMREADRAW read data in raw mode (2352 Bytes) - (struct cdrom_read) - - usage: - - union { - struct cdrom_msf msf; /* input */ - char buffer[CD_FRAMESIZE_RAW]; /* return */ - } arg; - ioctl(fd, CDROMREADRAW, &arg); - - inputs: - cdrom_msf structure indicating an address to read. - Only the start values are significant. - - outputs: - Data written to address provided by user. - - error return: - EINVAL address less than 0, or msf less than 0:2:0 - ENOMEM out of memory - - notes: - As of 2.6.8.1, comments in indicate that this - ioctl accepts a cdrom_read structure, but actual source code - reads a cdrom_msf structure and writes a buffer of data to - the same address. - - MSF values are converted to LBA values via this formula: - - lba = (((m * CD_SECS) + s) * CD_FRAMES + f) - CD_MSF_OFFSET; - - - - -CDROMREADMODE1 Read CDROM mode 1 data (2048 Bytes) - (struct cdrom_read) - - notes: - Identical to CDROMREADRAW except that block size is - CD_FRAMESIZE (2048) bytes - - - -CDROMREADMODE2 Read CDROM mode 2 data (2336 Bytes) - (struct cdrom_read) - - notes: - Identical to CDROMREADRAW except that block size is - CD_FRAMESIZE_RAW0 (2336) bytes - - - -CDROMREADAUDIO (struct cdrom_read_audio) - - usage: - - struct cdrom_read_audio ra; - ioctl(fd, CDROMREADAUDIO, &ra); - - inputs: - cdrom_read_audio structure containing read start - point and length - - outputs: - audio data, returned to buffer indicated by ra - - error return: - EINVAL format not CDROM_MSF or CDROM_LBA - EINVAL nframes not in range [1 75] - ENXIO drive has no queue (probably means invalid fd) - ENOMEM out of memory - - -CDROMEJECT_SW enable(1)/disable(0) auto-ejecting - - usage: - - int val; - ioctl(fd, CDROMEJECT_SW, val); - - inputs: - Flag specifying auto-eject flag. - - outputs: none - - error return: - ENOSYS Drive is not capable of ejecting. - EBUSY Door is locked - - - - -CDROMMULTISESSION Obtain the start-of-last-session - address of multi session disks - (struct cdrom_multisession) - usage: - - struct cdrom_multisession ms_info; - ioctl(fd, CDROMMULTISESSION, &ms_info); - - inputs: - cdrom_multisession structure containing desired - format. - - outputs: - cdrom_multisession structure is filled with last_session - information. - - error return: - EINVAL format not CDROM_MSF or CDROM_LBA - - -CDROM_GET_MCN Obtain the "Universal Product Code" - if available (struct cdrom_mcn) - - usage: - - struct cdrom_mcn mcn; - ioctl(fd, CDROM_GET_MCN, &mcn); - - inputs: none - - outputs: - Universal Product Code - - error return: - ENOSYS Drive is not capable of reading MCN data. - - notes: - Source code comments state: - - The following function is implemented, although very few - audio discs give Universal Product Code information, which - should just be the Medium Catalog Number on the box. Note, - that the way the code is written on the CD is /not/ uniform - across all discs! - - - - -CDROM_GET_UPC CDROM_GET_MCN (deprecated) - - Not implemented, as of 2.6.8.1 - - - -CDROMRESET hard-reset the drive - - usage: - - ioctl(fd, CDROMRESET, 0); - - inputs: none - - outputs: none - - error return: - EACCES Access denied: requires CAP_SYS_ADMIN - ENOSYS Drive is not capable of resetting. - - - - -CDROMREADCOOKED read data in cooked mode - - usage: - - u8 buffer[CD_FRAMESIZE] - ioctl(fd, CDROMREADCOOKED, buffer); - - inputs: none - - outputs: - 2048 bytes of data, "cooked" mode. - - notes: - Not implemented on all drives. - - - - -CDROMREADALL read all 2646 bytes - - Same as CDROMREADCOOKED, but reads 2646 bytes. - - - -CDROMSEEK seek msf address - - usage: - - struct cdrom_msf msf; - ioctl(fd, CDROMSEEK, &msf); - - inputs: - MSF address to seek to. - - outputs: none - - - -CDROMPLAYBLK scsi-cd only, (struct cdrom_blk) - - usage: - - struct cdrom_blk blk; - ioctl(fd, CDROMPLAYBLK, &blk); - - inputs: - Region to play - - outputs: none - - - -CDROMGETSPINDOWN - - usage: - - char spindown; - ioctl(fd, CDROMGETSPINDOWN, &spindown); - - inputs: none - - outputs: - The value of the current 4-bit spindown value. - - - - -CDROMSETSPINDOWN - - usage: - - char spindown - ioctl(fd, CDROMSETSPINDOWN, &spindown); - - inputs: - 4-bit value used to control spindown (TODO: more detail here) - - outputs: none - - - - - -CDROM_SET_OPTIONS Set behavior options - - usage: - - int options; - ioctl(fd, CDROM_SET_OPTIONS, options); - - inputs: - New values for drive options. The logical 'or' of: - CDO_AUTO_CLOSE close tray on first open(2) - CDO_AUTO_EJECT open tray on last release - CDO_USE_FFLAGS use O_NONBLOCK information on open - CDO_LOCK lock tray on open files - CDO_CHECK_TYPE check type on open for data - - outputs: - Returns the resulting options settings in the - ioctl return value. Returns -1 on error. - - error return: - ENOSYS selected option(s) not supported by drive. - - - - -CDROM_CLEAR_OPTIONS Clear behavior options - - Same as CDROM_SET_OPTIONS, except that selected options are - turned off. - - - -CDROM_SELECT_SPEED Set the CD-ROM speed - - usage: - - int speed; - ioctl(fd, CDROM_SELECT_SPEED, speed); - - inputs: - New drive speed. - - outputs: none - - error return: - ENOSYS speed selection not supported by drive. - - - -CDROM_SELECT_DISC Select disc (for juke-boxes) - - usage: - - int disk; - ioctl(fd, CDROM_SELECT_DISC, disk); - - inputs: - Disk to load into drive. - - outputs: none - - error return: - EINVAL Disk number beyond capacity of drive - - - -CDROM_MEDIA_CHANGED Check is media changed - - usage: - - int slot; - ioctl(fd, CDROM_MEDIA_CHANGED, slot); - - inputs: - Slot number to be tested, always zero except for jukeboxes. - May also be special values CDSL_NONE or CDSL_CURRENT - - outputs: - Ioctl return value is 0 or 1 depending on whether the media - has been changed, or -1 on error. - - error returns: - ENOSYS Drive can't detect media change - EINVAL Slot number beyond capacity of drive - ENOMEM Out of memory - - - -CDROM_DRIVE_STATUS Get tray position, etc. - - usage: - - int slot; - ioctl(fd, CDROM_DRIVE_STATUS, slot); - - inputs: - Slot number to be tested, always zero except for jukeboxes. - May also be special values CDSL_NONE or CDSL_CURRENT - - outputs: - Ioctl return value will be one of the following values - from : - - CDS_NO_INFO Information not available. - CDS_NO_DISC - CDS_TRAY_OPEN - CDS_DRIVE_NOT_READY - CDS_DISC_OK - -1 error - - error returns: - ENOSYS Drive can't detect drive status - EINVAL Slot number beyond capacity of drive - ENOMEM Out of memory - - - - -CDROM_DISC_STATUS Get disc type, etc. - - usage: - - ioctl(fd, CDROM_DISC_STATUS, 0); - - inputs: none - - outputs: - Ioctl return value will be one of the following values - from : - CDS_NO_INFO - CDS_AUDIO - CDS_MIXED - CDS_XA_2_2 - CDS_XA_2_1 - CDS_DATA_1 - - error returns: none at present - - notes: - Source code comments state: - - Ok, this is where problems start. The current interface for - the CDROM_DISC_STATUS ioctl is flawed. It makes the false - assumption that CDs are all CDS_DATA_1 or all CDS_AUDIO, etc. - Unfortunatly, while this is often the case, it is also - very common for CDs to have some tracks with data, and some - tracks with audio. Just because I feel like it, I declare - the following to be the best way to cope. If the CD has - ANY data tracks on it, it will be returned as a data CD. - If it has any XA tracks, I will return it as that. Now I - could simplify this interface by combining these returns with - the above, but this more clearly demonstrates the problem - with the current interface. Too bad this wasn't designed - to use bitmasks... -Erik - - Well, now we have the option CDS_MIXED: a mixed-type CD. - User level programmers might feel the ioctl is not very - useful. - ---david - - - - -CDROM_CHANGER_NSLOTS Get number of slots - - usage: - - ioctl(fd, CDROM_CHANGER_NSLOTS, 0); - - inputs: none - - outputs: - The ioctl return value will be the number of slots in a - CD changer. Typically 1 for non-multi-disk devices. - - error returns: none - - - -CDROM_LOCKDOOR lock or unlock door - - usage: - - int lock; - ioctl(fd, CDROM_LOCKDOOR, lock); - - inputs: - Door lock flag, 1=lock, 0=unlock - - outputs: none - - error returns: - EDRIVE_CANT_DO_THIS Door lock function not supported. - EBUSY Attempt to unlock when multiple users - have the drive open and not CAP_SYS_ADMIN - - notes: - As of 2.6.8.1, the lock flag is a global lock, meaning that - all CD drives will be locked or unlocked together. This is - probably a bug. - - The EDRIVE_CANT_DO_THIS value is defined in - and is currently (2.6.8.1) the same as EOPNOTSUPP - - - -CDROM_DEBUG Turn debug messages on/off - - usage: - - int debug; - ioctl(fd, CDROM_DEBUG, debug); - - inputs: - Cdrom debug flag, 0=disable, 1=enable - - outputs: - The ioctl return value will be the new debug flag. - - error return: - EACCES Access denied: requires CAP_SYS_ADMIN - - - -CDROM_GET_CAPABILITY get capabilities - - usage: - - ioctl(fd, CDROM_GET_CAPABILITY, 0); - - inputs: none - - outputs: - The ioctl return value is the current device capability - flags. See CDC_CLOSE_TRAY, CDC_OPEN_TRAY, etc. - - - -CDROMAUDIOBUFSIZ set the audio buffer size - - usage: - - int arg; - ioctl(fd, CDROMAUDIOBUFSIZ, val); - - inputs: - New audio buffer size - - outputs: - The ioctl return value is the new audio buffer size, or -1 - on error. - - error return: - ENOSYS Not supported by this driver. - - notes: - Not supported by all drivers. - - - -DVD_READ_STRUCT Read structure - - usage: - - dvd_struct s; - ioctl(fd, DVD_READ_STRUCT, &s); - - inputs: - dvd_struct structure, containing: - type specifies the information desired, one of - DVD_STRUCT_PHYSICAL, DVD_STRUCT_COPYRIGHT, - DVD_STRUCT_DISCKEY, DVD_STRUCT_BCA, - DVD_STRUCT_MANUFACT - physical.layer_num desired layer, indexed from 0 - copyright.layer_num desired layer, indexed from 0 - disckey.agid - - outputs: - dvd_struct structure, containing: - physical for type == DVD_STRUCT_PHYSICAL - copyright for type == DVD_STRUCT_COPYRIGHT - disckey.value for type == DVD_STRUCT_DISCKEY - bca.{len,value} for type == DVD_STRUCT_BCA - manufact.{len,valu} for type == DVD_STRUCT_MANUFACT - - error returns: - EINVAL physical.layer_num exceeds number of layers - EIO Recieved invalid response from drive - - - -DVD_WRITE_STRUCT Write structure - - Not implemented, as of 2.6.8.1 - - - -DVD_AUTH Authentication - - usage: - - dvd_authinfo ai; - ioctl(fd, DVD_AUTH, &ai); - - inputs: - dvd_authinfo structure. See - - outputs: - dvd_authinfo structure. - - error return: - ENOTTY ai.type not recognized. - - - -CDROM_SEND_PACKET send a packet to the drive - - usage: - - struct cdrom_generic_command cgc; - ioctl(fd, CDROM_SEND_PACKET, &cgc); - - inputs: - cdrom_generic_command structure containing the packet to send. - - outputs: none - cdrom_generic_command structure containing results. - - error return: - EIO command failed. - EPERM Operation not permitted, either because a - write command was attempted on a drive which - is opened read-only, or because the command - requires CAP_SYS_RAWIO - EINVAL cgc.data_direction not set - - - -CDROM_NEXT_WRITABLE get next writable block - - usage: - - long next; - ioctl(fd, CDROM_NEXT_WRITABLE, &next); - - inputs: none - - outputs: - The next writable block. - - notes: - If the device does not support this ioctl directly, the - ioctl will return CDROM_LAST_WRITTEN + 7. - - - -CDROM_LAST_WRITTEN get last block written on disc - - usage: - - long last; - ioctl(fd, CDROM_LAST_WRITTEN, &last); - - inputs: none - - outputs: - The last block written on disc - - notes: - If the device does not support this ioctl directly, the - result is derived from the disc's table of contents. If the - table of contents can't be read, this ioctl returns an - error. diff --git a/Documentation/ioctl/hdio.txt b/Documentation/ioctl/hdio.txt deleted file mode 100644 index c42d3b685..000000000 --- a/Documentation/ioctl/hdio.txt +++ /dev/null @@ -1,965 +0,0 @@ - Summary of HDIO_ ioctl calls. - ============================ - - Edward A. Falk - - November, 2004 - -This document attempts to describe the ioctl(2) calls supported by -the HD/IDE layer. These are by-and-large implemented (as of Linux 2.6) -in drivers/ide/ide.c and drivers/block/scsi_ioctl.c - -ioctl values are listed in . As of this writing, they -are as follows: - - ioctls that pass argument pointers to user space: - - HDIO_GETGEO get device geometry - HDIO_GET_UNMASKINTR get current unmask setting - HDIO_GET_MULTCOUNT get current IDE blockmode setting - HDIO_GET_QDMA get use-qdma flag - HDIO_SET_XFER set transfer rate via proc - HDIO_OBSOLETE_IDENTITY OBSOLETE, DO NOT USE - HDIO_GET_KEEPSETTINGS get keep-settings-on-reset flag - HDIO_GET_32BIT get current io_32bit setting - HDIO_GET_NOWERR get ignore-write-error flag - HDIO_GET_DMA get use-dma flag - HDIO_GET_NICE get nice flags - HDIO_GET_IDENTITY get IDE identification info - HDIO_GET_WCACHE get write cache mode on|off - HDIO_GET_ACOUSTIC get acoustic value - HDIO_GET_ADDRESS get sector addressing mode - HDIO_GET_BUSSTATE get the bus state of the hwif - HDIO_TRISTATE_HWIF execute a channel tristate - HDIO_DRIVE_RESET execute a device reset - HDIO_DRIVE_TASKFILE execute raw taskfile - HDIO_DRIVE_TASK execute task and special drive command - HDIO_DRIVE_CMD execute a special drive command - HDIO_DRIVE_CMD_AEB HDIO_DRIVE_TASK - - ioctls that pass non-pointer values: - - HDIO_SET_MULTCOUNT change IDE blockmode - HDIO_SET_UNMASKINTR permit other irqs during I/O - HDIO_SET_KEEPSETTINGS keep ioctl settings on reset - HDIO_SET_32BIT change io_32bit flags - HDIO_SET_NOWERR change ignore-write-error flag - HDIO_SET_DMA change use-dma flag - HDIO_SET_PIO_MODE reconfig interface to new speed - HDIO_SCAN_HWIF register and (re)scan interface - HDIO_SET_NICE set nice flags - HDIO_UNREGISTER_HWIF unregister interface - HDIO_SET_WCACHE change write cache enable-disable - HDIO_SET_ACOUSTIC change acoustic behavior - HDIO_SET_BUSSTATE set the bus state of the hwif - HDIO_SET_QDMA change use-qdma flag - HDIO_SET_ADDRESS change lba addressing modes - - HDIO_SET_IDE_SCSI Set scsi emulation mode on/off - HDIO_SET_SCSI_IDE not implemented yet - - -The information that follows was determined from reading kernel source -code. It is likely that some corrections will be made over time. - - - - - - - -General: - - Unless otherwise specified, all ioctl calls return 0 on success - and -1 with errno set to an appropriate value on error. - - Unless otherwise specified, all ioctl calls return -1 and set - errno to EFAULT on a failed attempt to copy data to or from user - address space. - - Unless otherwise specified, all data structures and constants - are defined in - - - -HDIO_GETGEO get device geometry - - usage: - - struct hd_geometry geom; - ioctl(fd, HDIO_GETGEO, &geom); - - - inputs: none - - outputs: - - hd_geometry structure containing: - - heads number of heads - sectors number of sectors/track - cylinders number of cylinders, mod 65536 - start starting sector of this partition. - - - error returns: - EINVAL if the device is not a disk drive or floppy drive, - or if the user passes a null pointer - - - notes: - - Not particularly useful with modern disk drives, whose geometry - is a polite fiction anyway. Modern drives are addressed - purely by sector number nowadays (lba addressing), and the - drive geometry is an abstraction which is actually subject - to change. Currently (as of Nov 2004), the geometry values - are the "bios" values -- presumably the values the drive had - when Linux first booted. - - In addition, the cylinders field of the hd_geometry is an - unsigned short, meaning that on most architectures, this - ioctl will not return a meaningful value on drives with more - than 65535 tracks. - - The start field is unsigned long, meaning that it will not - contain a meaningful value for disks over 219 Gb in size. - - - - -HDIO_GET_UNMASKINTR get current unmask setting - - usage: - - long val; - ioctl(fd, HDIO_GET_UNMASKINTR, &val); - - inputs: none - - outputs: - The value of the drive's current unmask setting - - - -HDIO_SET_UNMASKINTR permit other irqs during I/O - - usage: - - unsigned long val; - ioctl(fd, HDIO_SET_UNMASKINTR, val); - - inputs: - New value for unmask flag - - outputs: none - - error return: - EINVAL (bdev != bdev->bd_contains) (not sure what this means) - EACCES Access denied: requires CAP_SYS_ADMIN - EINVAL value out of range [0 1] - EBUSY Controller busy - - - - -HDIO_GET_MULTCOUNT get current IDE blockmode setting - - usage: - - long val; - ioctl(fd, HDIO_GET_MULTCOUNT, &val); - - inputs: none - - outputs: - The value of the current IDE block mode setting. This - controls how many sectors the drive will transfer per - interrupt. - - - -HDIO_SET_MULTCOUNT change IDE blockmode - - usage: - - int val; - ioctl(fd, HDIO_SET_MULTCOUNT, val); - - inputs: - New value for IDE block mode setting. This controls how many - sectors the drive will transfer per interrupt. - - outputs: none - - error return: - EINVAL (bdev != bdev->bd_contains) (not sure what this means) - EACCES Access denied: requires CAP_SYS_ADMIN - EINVAL value out of range supported by disk. - EBUSY Controller busy or blockmode already set. - EIO Drive did not accept new block mode. - - notes: - - Source code comments read: - - This is tightly woven into the driver->do_special can not - touch. DON'T do it again until a total personality rewrite - is committed. - - If blockmode has already been set, this ioctl will fail with - EBUSY - - - -HDIO_GET_QDMA get use-qdma flag - - Not implemented, as of 2.6.8.1 - - - -HDIO_SET_XFER set transfer rate via proc - - Not implemented, as of 2.6.8.1 - - - -HDIO_OBSOLETE_IDENTITY OBSOLETE, DO NOT USE - - Same as HDIO_GET_IDENTITY (see below), except that it only - returns the first 142 bytes of drive identity information. - - - -HDIO_GET_IDENTITY get IDE identification info - - usage: - - unsigned char identity[512]; - ioctl(fd, HDIO_GET_IDENTITY, identity); - - inputs: none - - outputs: - - ATA drive identity information. For full description, see - the IDENTIFY DEVICE and IDENTIFY PACKET DEVICE commands in - the ATA specification. - - error returns: - EINVAL (bdev != bdev->bd_contains) (not sure what this means) - ENOMSG IDENTIFY DEVICE information not available - - notes: - - Returns information that was obtained when the drive was - probed. Some of this information is subject to change, and - this ioctl does not re-probe the drive to update the - information. - - This information is also available from /proc/ide/hdX/identify - - - -HDIO_GET_KEEPSETTINGS get keep-settings-on-reset flag - - usage: - - long val; - ioctl(fd, HDIO_GET_KEEPSETTINGS, &val); - - inputs: none - - outputs: - The value of the current "keep settings" flag - - notes: - - When set, indicates that kernel should restore settings - after a drive reset. - - - -HDIO_SET_KEEPSETTINGS keep ioctl settings on reset - - usage: - - long val; - ioctl(fd, HDIO_SET_KEEPSETTINGS, val); - - inputs: - New value for keep_settings flag - - outputs: none - - error return: - EINVAL (bdev != bdev->bd_contains) (not sure what this means) - EACCES Access denied: requires CAP_SYS_ADMIN - EINVAL value out of range [0 1] - EBUSY Controller busy - - - -HDIO_GET_32BIT get current io_32bit setting - - usage: - - long val; - ioctl(fd, HDIO_GET_32BIT, &val); - - inputs: none - - outputs: - The value of the current io_32bit setting - - notes: - - 0=16-bit, 1=32-bit, 2,3 = 32bit+sync - - - -HDIO_GET_NOWERR get ignore-write-error flag - - usage: - - long val; - ioctl(fd, HDIO_GET_NOWERR, &val); - - inputs: none - - outputs: - The value of the current ignore-write-error flag - - - -HDIO_GET_DMA get use-dma flag - - usage: - - long val; - ioctl(fd, HDIO_GET_DMA, &val); - - inputs: none - - outputs: - The value of the current use-dma flag - - - -HDIO_GET_NICE get nice flags - - usage: - - long nice; - ioctl(fd, HDIO_GET_NICE, &nice); - - inputs: none - - outputs: - - The drive's "nice" values. - - notes: - - Per-drive flags which determine when the system will give more - bandwidth to other devices sharing the same IDE bus. - See , near symbol IDE_NICE_DSC_OVERLAP. - - - - -HDIO_SET_NICE set nice flags - - usage: - - unsigned long nice; - ... - ioctl(fd, HDIO_SET_NICE, nice); - - inputs: - bitmask of nice flags. - - outputs: none - - error returns: - EACCES Access denied: requires CAP_SYS_ADMIN - EPERM Flags other than DSC_OVERLAP and NICE_1 set. - EPERM DSC_OVERLAP specified but not supported by drive - - notes: - - This ioctl sets the DSC_OVERLAP and NICE_1 flags from values - provided by the user. - - Nice flags are listed in , starting with - IDE_NICE_DSC_OVERLAP. These values represent shifts. - - - - - -HDIO_GET_WCACHE get write cache mode on|off - - usage: - - long val; - ioctl(fd, HDIO_GET_WCACHE, &val); - - inputs: none - - outputs: - The value of the current write cache mode - - - -HDIO_GET_ACOUSTIC get acoustic value - - usage: - - long val; - ioctl(fd, HDIO_GET_ACOUSTIC, &val); - - inputs: none - - outputs: - The value of the current acoustic settings - - notes: - - See HDIO_SET_ACOUSTIC - - - -HDIO_GET_ADDRESS - - usage: - - long val; - ioctl(fd, HDIO_GET_ADDRESS, &val); - - inputs: none - - outputs: - The value of the current addressing mode: - 0 = 28-bit - 1 = 48-bit - 2 = 48-bit doing 28-bit - 3 = 64-bit - - - -HDIO_GET_BUSSTATE get the bus state of the hwif - - usage: - - long state; - ioctl(fd, HDIO_SCAN_HWIF, &state); - - inputs: none - - outputs: - Current power state of the IDE bus. One of BUSSTATE_OFF, - BUSSTATE_ON, or BUSSTATE_TRISTATE - - error returns: - EACCES Access denied: requires CAP_SYS_ADMIN - - - - -HDIO_SET_BUSSTATE set the bus state of the hwif - - usage: - - int state; - ... - ioctl(fd, HDIO_SCAN_HWIF, state); - - inputs: - Desired IDE power state. One of BUSSTATE_OFF, BUSSTATE_ON, - or BUSSTATE_TRISTATE - - outputs: none - - error returns: - EACCES Access denied: requires CAP_SYS_RAWIO - EOPNOTSUPP Hardware interface does not support bus power control - - - - -HDIO_TRISTATE_HWIF execute a channel tristate - - Not implemented, as of 2.6.8.1. See HDIO_SET_BUSSTATE - - - -HDIO_DRIVE_RESET execute a device reset - - usage: - - int args[3] - ... - ioctl(fd, HDIO_DRIVE_RESET, args); - - inputs: none - - outputs: none - - error returns: - EACCES Access denied: requires CAP_SYS_ADMIN - - notes: - - Abort any current command, prevent anything else from being - queued, execute a reset on the device, and issue BLKRRPART - ioctl on the block device. - - Executes an ATAPI soft reset if applicable, otherwise - executes an ATA soft reset on the controller. - - - -HDIO_DRIVE_TASKFILE execute raw taskfile - - Note: If you don't have a copy of the ANSI ATA specification - handy, you should probably ignore this ioctl. - - Execute an ATA disk command directly by writing the "taskfile" - registers of the drive. Requires ADMIN and RAWIO access - privileges. - - usage: - - struct { - ide_task_request_t req_task; - u8 outbuf[OUTPUT_SIZE]; - u8 inbuf[INPUT_SIZE]; - } task; - memset(&task.req_task, 0, sizeof(task.req_task)); - task.req_task.out_size = sizeof(task.outbuf); - task.req_task.in_size = sizeof(task.inbuf); - ... - ioctl(fd, HDIO_DRIVE_TASKFILE, &task); - ... - - inputs: - - (See below for details on memory area passed to ioctl.) - - io_ports[8] values to be written to taskfile registers - hob_ports[8] high-order bytes, for extended commands. - out_flags flags indicating which registers are valid - in_flags flags indicating which registers should be returned - data_phase see below - req_cmd command type to be executed - out_size size of output buffer - outbuf buffer of data to be transmitted to disk - inbuf buffer of data to be received from disk (see [1]) - - outputs: - - io_ports[] values returned in the taskfile registers - hob_ports[] high-order bytes, for extended commands. - out_flags flags indicating which registers are valid (see [2]) - in_flags flags indicating which registers should be returned - outbuf buffer of data to be transmitted to disk (see [1]) - inbuf buffer of data to be received from disk - - error returns: - EACCES CAP_SYS_ADMIN or CAP_SYS_RAWIO privilege not set. - ENOMSG Device is not a disk drive. - ENOMEM Unable to allocate memory for task - EFAULT req_cmd == TASKFILE_IN_OUT (not implemented as of 2.6.8) - EPERM req_cmd == TASKFILE_MULTI_OUT and drive - multi-count not yet set. - - - notes: - - [1] Currently (2.6.8), both the input and output buffers are - copied from the user and written back to the user, even when - not used. This may be a bug. - - [2] The out_flags and in_flags are returned to the user after - the ioctl completes. Currently (2.6.8) these are the same - as the input values, unchanged. In the future, they may have - more significance. - - Extreme caution should be used with using this ioctl. A - mistake can easily corrupt data or hang the system. - - The argument to the ioctl is a pointer to a region of memory - containing a ide_task_request_t structure, followed by an - optional buffer of data to be transmitted to the drive, - followed by an optional buffer to receive data from the drive. - - Command is passed to the disk drive via the ide_task_request_t - structure, which contains these fields: - - io_ports[8] values for the taskfile registers - hob_ports[8] high-order bytes, for extended commands - out_flags flags indicating which entries in the - io_ports[] and hob_ports[] arrays - contain valid values. Type ide_reg_valid_t. - in_flags flags indicating which entries in the - io_ports[] and hob_ports[] arrays - are expected to contain valid values - on return. - data_phase See below - req_cmd Command type, see below - out_size output (user->drive) buffer size, bytes - in_size input (drive->user) buffer size, bytes - - This ioctl does not necessarily respect all flags in the - out_flags and in_flags values -- some taskfile registers - may be written or read even if not requested in the flags. - Unused fields of io_ports[] and hob_ports[] should be set - to zero. - - The data_phase field describes the data transfer to be - performed. Value is one of: - - TASKFILE_IN - TASKFILE_MULTI_IN - TASKFILE_OUT - TASKFILE_MULTI_OUT - TASKFILE_IN_OUT - TASKFILE_IN_DMA - TASKFILE_IN_DMAQ - TASKFILE_OUT_DMA - TASKFILE_OUT_DMAQ - TASKFILE_P_IN - TASKFILE_P_IN_DMA - TASKFILE_P_IN_DMAQ - TASKFILE_P_OUT - TASKFILE_P_OUT_DMA - TASKFILE_P_OUT_DMAQ - - The req_cmd field classifies the command type. It may be - one of: - - IDE_DRIVE_TASK_NO_DATA - IDE_DRIVE_TASK_SET_XFER - IDE_DRIVE_TASK_IN - IDE_DRIVE_TASK_OUT - IDE_DRIVE_TASK_RAW_WRITE - - - - - - -HDIO_DRIVE_CMD execute a special drive command - - Note: If you don't have a copy of the ANSI ATA specification - handy, you should probably ignore this ioctl. - - usage: - - u8 args[4+XFER_SIZE]; - ... - ioctl(fd, HDIO_DRIVE_CMD, args); - - inputs: - - Taskfile register values: - args[0] COMMAND - args[1] SECTOR - args[2] FEATURE - args[3] NSECTOR - - outputs: - - args[] buffer is filled with register values followed by any - data returned by the disk. - args[0] status - args[1] error - args[2] NSECTOR - args[3] undefined - args[4+] NSECTOR * 512 bytes of data returned by the command. - - error returns: - EACCES Access denied: requires CAP_SYS_RAWIO - ENOMEM Unable to allocate memory for task - - notes: - - Taskfile registers IDE_LCYL, IDE_HCYL, and IDE_SELECT are - set to zero before executing the command. - - - -HDIO_DRIVE_TASK execute task and special drive command - - Note: If you don't have a copy of the ANSI ATA specification - handy, you should probably ignore this ioctl. - - usage: - - u8 args[7]; - ... - ioctl(fd, HDIO_DRIVE_TASK, args); - - inputs: - - Taskfile register values: - args[0] COMMAND - args[1] FEATURE - args[2] NSECTOR - args[3] SECTOR - args[4] LCYL - args[5] HCYL - args[6] SELECT - - outputs: - - Taskfile register values: - args[0] status - args[1] error - args[2] NSECTOR - args[3] SECTOR - args[4] LCYL - args[5] HCYL - args[6] SELECT - - error returns: - EACCES Access denied: requires CAP_SYS_RAWIO - ENOMEM Unable to allocate memory for task - - - - -HDIO_DRIVE_CMD_AEB HDIO_DRIVE_TASK - - Not implemented, as of 2.6.8.1 - - - -HDIO_SET_32BIT change io_32bit flags - - usage: - - int val; - ioctl(fd, HDIO_SET_32BIT, val); - - inputs: - New value for io_32bit flag - - outputs: none - - error return: - EINVAL (bdev != bdev->bd_contains) (not sure what this means) - EACCES Access denied: requires CAP_SYS_ADMIN - EINVAL value out of range [0 3] - EBUSY Controller busy - - - - -HDIO_SET_NOWERR change ignore-write-error flag - - usage: - - int val; - ioctl(fd, HDIO_SET_NOWERR, val); - - inputs: - New value for ignore-write-error flag. Used for ignoring - WRERR_STAT - - outputs: none - - error return: - EINVAL (bdev != bdev->bd_contains) (not sure what this means) - EACCES Access denied: requires CAP_SYS_ADMIN - EINVAL value out of range [0 1] - EBUSY Controller busy - - - -HDIO_SET_DMA change use-dma flag - - usage: - - long val; - ioctl(fd, HDIO_SET_DMA, val); - - inputs: - New value for use-dma flag - - outputs: none - - error return: - EINVAL (bdev != bdev->bd_contains) (not sure what this means) - EACCES Access denied: requires CAP_SYS_ADMIN - EINVAL value out of range [0 1] - EBUSY Controller busy - - - -HDIO_SET_PIO_MODE reconfig interface to new speed - - usage: - - long val; - ioctl(fd, HDIO_SET_PIO_MODE, val); - - inputs: - New interface speed. - - outputs: none - - error return: - EINVAL (bdev != bdev->bd_contains) (not sure what this means) - EACCES Access denied: requires CAP_SYS_ADMIN - EINVAL value out of range [0 255] - EBUSY Controller busy - - - -HDIO_SCAN_HWIF register and (re)scan interface - - usage: - - int args[3] - ... - ioctl(fd, HDIO_SCAN_HWIF, args); - - inputs: - args[0] io address to probe - args[1] control address to probe - args[2] irq number - - outputs: none - - error returns: - EACCES Access denied: requires CAP_SYS_RAWIO - EIO Probe failed. - - notes: - - This ioctl initializes the addresses and irq for a disk - controller, probes for drives, and creates /proc/ide - interfaces as appropiate. - - - -HDIO_UNREGISTER_HWIF unregister interface - - usage: - - int index; - ioctl(fd, HDIO_UNREGISTER_HWIF, index); - - inputs: - index index of hardware interface to unregister - - outputs: none - - error returns: - EACCES Access denied: requires CAP_SYS_RAWIO - - notes: - - This ioctl removes a hardware interface from the kernel. - - Currently (2.6.8) this ioctl silently fails if any drive on - the interface is busy. - - - -HDIO_SET_WCACHE change write cache enable-disable - - usage: - - int val; - ioctl(fd, HDIO_SET_WCACHE, val); - - inputs: - New value for write cache enable - - outputs: none - - error return: - EINVAL (bdev != bdev->bd_contains) (not sure what this means) - EACCES Access denied: requires CAP_SYS_ADMIN - EINVAL value out of range [0 1] - EBUSY Controller busy - - - -HDIO_SET_ACOUSTIC change acoustic behavior - - usage: - - int val; - ioctl(fd, HDIO_SET_ACOUSTIC, val); - - inputs: - New value for drive acoustic settings - - outputs: none - - error return: - EINVAL (bdev != bdev->bd_contains) (not sure what this means) - EACCES Access denied: requires CAP_SYS_ADMIN - EINVAL value out of range [0 254] - EBUSY Controller busy - - - -HDIO_SET_QDMA change use-qdma flag - - Not implemented, as of 2.6.8.1 - - - -HDIO_SET_ADDRESS change lba addressing modes - - usage: - - int val; - ioctl(fd, HDIO_SET_ADDRESS, val); - - inputs: - New value for addressing mode - 0 = 28-bit - 1 = 48-bit - 2 = 48-bit doing 28-bit - - outputs: none - - error return: - EINVAL (bdev != bdev->bd_contains) (not sure what this means) - EACCES Access denied: requires CAP_SYS_ADMIN - EINVAL value out of range [0 2] - EBUSY Controller busy - EIO Drive does not support lba48 mode. - - -HDIO_SET_IDE_SCSI - - usage: - - long val; - ioctl(fd, HDIO_SET_IDE_SCSI, val); - - inputs: - New value for scsi emulation mode (?) - - outputs: none - - error return: - EINVAL (bdev != bdev->bd_contains) (not sure what this means) - EACCES Access denied: requires CAP_SYS_ADMIN - EINVAL value out of range [0 1] - EBUSY Controller busy - - - -HDIO_SET_SCSI_IDE - - Not implemented, as of 2.6.8.1 - - diff --git a/Documentation/isdn/README.eicon b/Documentation/isdn/README.eicon new file mode 100644 index 000000000..111409ba6 --- /dev/null +++ b/Documentation/isdn/README.eicon @@ -0,0 +1,118 @@ +$Id: README.eicon,v 1.10.6.1 2001/02/19 10:04:59 armin Exp $ + +(c) 1999,2000 Armin Schindler (mac@melware.de) +(c) 1999,2000 Cytronics & Melware (info@melware.de) + +This document describes the eicon driver for the +Eicon active ISDN cards. + +It is meant to be used with isdn4linux, an ISDN link-level module for Linux. + + This program is free software; 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 program 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., 675 Mass Ave, Cambridge, MA 02139, USA. + + + +Supported Cards +=============== + +Old ISA type +------------ +- S-Card ISA +- SX-Card ISA +- SXn-Card ISA +- SCOM-Card ISA +- Quadro-Card ISA +- S2M-Card ISA + +DIVA Server family +------------------ +- DIVA Server BRI/PCI 2M +- DIVA Server PRI/PCI 2M (9M 23M 30M) +- DIVA Server 4BRI/PCI + supported functions of onboard DSPs: + - analog modem + - fax group 2/3 (Fax Class 2 commands) + - DTMF detection + + +ISDN D-Channel Protocols +------------------------ + +- ETSI (Euro-DSS1) +- 1TR6 (German ISDN) *not testet* +- other protocols exist for the range of DIVA Server cards, + but they are not fully testet yet. + + +You can load the module simply by using the insmod or modprobe function : + + insmod eicon [id=driverid] [membase=] [irq=] + + +The module will automatically probe the PCI-cards. If the id-option +is omitted, the driver will assume 'eicon0' for the first pci card and +increases the digit with each further card. With a given driver-id +the module appends a number starting with '0'. + +For ISA-cards you have to specify membase, irq and id. If id or +membase is missing/invalid, the driver will not be loaded except +PCI-cards were found. Additional ISA-cards and irq/membase changes +can be done with the eiconctrl utility. + +After loading the module, you have to download the protocol and +dsp-code by using the eiconctrl utility of isdn4k-utils. + + +Example for loading and starting a BRI card with E-DSS1 Protocol. + + eiconctrl [-d DriverId] load etsi + +Example for a BRI card with E-DSS1 Protocol with PtP configuration. + + eiconctrl [-d DriverId] load etsi -n -t1 -s1 + + +Example for loading and starting a PRI card with E-DSS1 Protocol. + + eiconctrl [-d DriverId] load etsi -s2 -n + + +Details about using the eiconctrl utility are in 'man eiconctrl' +or will be printed by starting eiconctrl without any parameters. + +ISDNLOG: +With eicon driver version 1.77 or newer and the eiconctrl utility +of version 1.1 or better, you can use the isdnlog user program +with your DIVA Server BRI card. +Just use "eiconctrl isdnlog on" and the driver will generate +the necessary D-Channel traces for isdnlog. + + + +Thanks to + Deutsche Mailbox Saar-Lor-Lux GmbH + for sponsoring and testing fax + capabilities with Diva Server cards. + + +Any reports about bugs, errors and even wishes are welcome. + + +Have fun ! + +Armin Schindler +mac@melware.de +http://www.melware.de + diff --git a/Documentation/kbuild/makefiles.txt b/Documentation/kbuild/makefiles.txt index 2616a58a5..1075e4de2 100644 --- a/Documentation/kbuild/makefiles.txt +++ b/Documentation/kbuild/makefiles.txt @@ -6,7 +6,7 @@ This document describes the Linux kernel Makefiles. === 1 Overview === 2 Who does what - === 3 The kbuild files + === 3 The kbuild Makefiles --- 3.1 Goal definitions --- 3.2 Built-in object goals - obj-y --- 3.3 Loadable module goals - obj-m @@ -101,14 +101,11 @@ These people need to know about all aspects of the kernel Makefiles. This document is aimed towards normal developers and arch developers. -=== 3 The kbuild files +=== 3 The kbuild Makefiles Most Makefiles within the kernel are kbuild Makefiles that use the kbuild infrastructure. This chapter introduce the syntax used in the kbuild makefiles. -The preferred name for the kbuild files is 'Kbuild' but 'Makefile' will -continue to be supported. All new developmen is expected to use the -Kbuild filename. Section 3.1 "Goal definitions" is a quick intro, further chapters provide more details, with real examples. @@ -710,17 +707,15 @@ When kbuild executes the following steps are followed (roughly): probe supported options: #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) - ... - cflags-$(CONFIG_MPENTIUMII) += $(call cc-option,\ - -march=pentium2,-march=i686) - ... - # Disable unit-at-a-time mode ... - CFLAGS += $(call cc-option,-fno-unit-at-a-time) - ... - + CFLAGS += $(cflags-y) - The first examples utilises the trick that a config option expands + The above examples both utilise the trick that a config option expands to 'y' when selected. CFLAGS_KERNEL $(CC) options specific for built-in @@ -1002,21 +997,6 @@ When kbuild executes the following steps are followed (roughly): option. When $(biarch) equals to y the expanded variables $(aflags-y) and $(cflags-y) will be assigned the values -a32 and -m32. - cc-option-align - gcc version >= 3.0 shifted type of options used to speify - alignment of functions, loops etc. $(cc-option-align) whrn used - as prefix to the align options will select the right prefix: - gcc < 3.00 - cc-option-align = -malign - gcc >= 3.00 - cc-option-align = -falign - - Example: - CFLAGS += $(cc-option-align)-functions=4 - - In the above example the option -falign-functions=4 is used for - gcc >= 3.00. For gcc < 3.00 -malign-functions=4 is used. - cc-version cc-version return a numerical version of the $(CC) compiler version. The format is where both are two digits. So for example diff --git a/Documentation/kbuild/modules.txt b/Documentation/kbuild/modules.txt index c91caf7eb..b8933206f 100644 --- a/Documentation/kbuild/modules.txt +++ b/Documentation/kbuild/modules.txt @@ -1,419 +1,68 @@ - -In this document you will find information about: -- how to build external modules -- how to make your module use kbuild infrastructure -- how kbuild will install a kernel -- how to install modules in a non-standard location - -=== Table of Contents - - === 1 Introduction - === 2 How to build external modules - --- 2.1 Building external modules - --- 2.2 Available targets - --- 2.3 Available options - --- 2.4 Preparing the kernel tree for module build - === 3. Example commands - === 4. Creating a kbuild file for an external module - === 5. Include files - --- 5.1 How to include files from the kernel include dir - --- 5.2 External modules using an include/ dir - === 6. Module installation - --- 6.1 INSTALL_MOD_PATH - --- 6.2 INSTALL_MOD_DIR - === 7. Module versioning - === 8. Tips & Tricks - --- 8.1 Testing for CONFIG_FOO_BAR - - - -=== 1. Introduction - -kbuild includes functionality for building modules both -within the kernel source tree and outside the kernel source tree. -The latter is usually referred to as external modules and is used -both during development and for modules that are not planned to be -included in the kernel tree. - -What is covered within this file is mainly information to authors -of modules. The author of an external modules should supply -a makefile that hides most of the complexity so one only has to type -'make' to buld the module. A complete example will be present in -chapter ¤. Creating a kbuild file for an external module". - - -=== 2. How to build external modules - -kbuild offers functionality to build external modules, with the -prerequisite that there is a pre-built kernel available with full source. -A subset of the targets available when building the kernel is available -when building an external module. - ---- 2.1 Building external modules - - Use the following command to build an external module: - - make -C M=`pwd` - - For the running kernel use: - make -C /lib/modules/`uname -r`/build M=`pwd` - - For the above command to succeed the kernel must have been built with - modules enabled. - - To install the modules that were just built: - - make -C M=`pwd` modules_install - - More complex examples later, the above should get you going. - ---- 2.2 Available targets - - $KDIR refers to path to kernel source top-level directory - - make -C $KDIR M=`pwd` - Will build the module(s) located in current directory. - All output files will be located in the same directory - as the module source. - No attempts are made to update the kernel source, and it is - a precondition that a successful make has been executed - for the kernel. - - make -C $KDIR M=`pwd` modules - The modules target is implied when no target is given. - Same functionality as if no target was specified. - See description above. - - make -C $KDIR M=$PWD modules_install - Install the external module(s). - Installation default is in /lib/modules//extra, - but may be prefixed with INSTALL_MOD_PATH - see separate chater. - - make -C $KDIR M=$PWD clean - Remove all generated files for the module - the kernel - source directory is not moddified. - - make -C $KDIR M=`pwd` help - help will list the available target when building external - modules. - ---- 2.3 Available options: - - $KDIR refer to path to kernel src - - make -C $KDIR - Used to specify where to find the kernel source. - '$KDIR' represent the directory where the kernel source is. - Make will actually change directory to the specified directory - when executed but change back when finished. - - make -C $KDIR M=`pwd` - M= is used to tell kbuild that an external module is - being built. - The option given to M= is the directory where the external - module (kbuild file) is located. - When an external module is being built only a subset of the - usual targets are available. - - make -C $KDIR SUBDIRS=`pwd` - Same as M=. The SUBDIRS= syntax is kept for backwards - compatibility. - ---- 2.4 Preparing the kernel tree for module build - - To make sure the kernel contains the information required to - build external modules the target 'modules_prepare' must be used. - 'module_prepare' solely exists as a simple way to prepare - a kernel for building external modules. - Note: modules_prepare will not build Module.symvers even if - CONFIG_MODULEVERSIONING is set. - Therefore a full kernel build needs to be executed to make - module versioning work. - - -=== 3. Example commands - -This example shows the actual commands to be executed when building -an external module for the currently running kernel. -In the example below the distribution is supposed to use the -facility to locate output files for a kernel compile in a different -directory than the kernel source - but the examples will also work -when the source and the output files are mixed in the same directory. - -# Kernel source -/lib/modules//source -> /usr/src/linux- - -# Output from kernel compile -/lib/modules//build -> /usr/src/linux--up - -Change to the directory where the kbuild file is located and execute -the following commands to build the module: - - cd /home/user/src/module - make -C /usr/src/`uname -r`/source \ - O=/lib/modules/`uname-r`/build \ - M=`pwd` - -Then to install the module use the following command: - - make -C /usr/src/`uname -r`/source \ - O=/lib/modules/`uname-r`/build \ - M=`pwd` \ - modules_install - -If one looks closely you will see that this is the same commands as -listed before - with the directories spelled out. - -The above are rather long commands, and the following chapter -lists a few tricks to make it all easier. - - -=== 4. Creating a kbuild file for an external module - -kbuild is the build system for the kernel, and external modules -must use kbuild to stay compatible with changes in the build system -and to pick up the right flags to gcc etc. - -The kbuild file used as input shall follow the syntax described -in Documentation/kbuild/makefiles.txt. This chapter will introduce a few -more tricks to be used when dealing with external modules. - -In the following a Makefile will be created for a module with the -following files: - 8123_if.c - 8123_if.h - 8123_pci.c - 8123_bin.o_shipped <= Binary blob - ---- 4.1 Shared Makefile for module and kernel - - An external module always includes a wrapper Makefile supporting - building the module using 'make' with no arguments. - The Makefile provided will most likely include additional - functionality such as test targets etc. and this part shall - be filtered away from kbuild since it may impact kbuild if - name clashes occurs. - - Example 1: - --> filename: Makefile - ifneq ($(KERNELRELEASE),) - # kbuild part of makefile - obj-m := 8123.o - 8123-y := 8123_if.o 8123_pci.o 8123_bin.o - - else - # Normal Makefile - - KERNELDIR := /lib/modules/`uname -r`/build - all:: - $(MAKE) -C $KERNELDIR M=`pwd` $@ - - # Module specific targets - genbin: - echo "X" > 8123_bini.o_shipped - - endif - - In example 1 the check for KERNELRELEASE is used to separate - the two parts of the Makefile. kbuild will only see the two - assignments whereas make will see everything except the two - kbuild assignments. - - In recent versions of the kernel, kbuild will look for a file named - Kbuild and as second option look for a file named Makefile. - Utilising the Kbuild file makes us split up the Makefile in example 1 - into two files as shown in example 2: - - Example 2: - --> filename: Kbuild - obj-m := 8123.o - 8123-y := 8123_if.o 8123_pci.o 8123_bin.o - - --> filename: Makefile - KERNELDIR := /lib/modules/`uname -r`/build - all:: - $(MAKE) -C $KERNELDIR M=`pwd` $@ - - # Module specific targets - genbin: - echo "X" > 8123_bin_shipped - - - In example 2 we are down to two fairly simple files and for simple - files as used in this example the split is questionable. But some - external modules use Makefiles of several hundred lines and here it - really pays off to separate the kbuild part from the rest. - Example 3 shows a backward compatible version. - - Example 3: - --> filename: Kbuild - obj-m := 8123.o - 8123-y := 8123_if.o 8123_pci.o 8123_bin.o - - --> filename: Makefile - ifneq ($(KERNELRELEASE),) - include Kbuild - else - # Normal Makefile - - KERNELDIR := /lib/modules/`uname -r`/build - all:: - $(MAKE) -C $KERNELDIR M=`pwd` $@ - - # Module specific targets - genbin: - echo "X" > 8123_bin_shipped - - endif - - The trick here is to include the Kbuild file from Makefile so - if an older version of kbuild picks up the Makefile the Kbuild - file will be included. - ---- 4.2 Binary blobs included in a module - - Some external modules needs to include a .o as a blob. kbuild - has support for this, but requires the blob file to be named - _shipped. In our example the blob is named - 8123_bin.o_shipped and when the kbuild rules kick in the file - 8123_bin.o is created as a simple copy off the 8213_bin.o_shipped file - with the _shipped part stripped of the filename. - This allows the 8123_bin.o filename to be used in the assignment to - the module. - - Example 4: - obj-m := 8123.o - 8123-y := 8123_if.o 8123_pci.o 8123_bin.o - - In example 4 there is no distinction between the ordinary .c/.h files - and the binary file. But kbuild will pick up different rules to create - the .o file. - - -=== 5. Include files - -Include files are a necessity when a .c file uses something from another .c -files (not strictly in the sense of .c but if good programming practice is -used). Any module that consist of more than one .c file will have a .h file -for one of the .c files. -- If the .h file only describes a module internal interface then the .h file - shall be placed in the same directory as the .c files. -- If the .h files describe an interface used by other parts of the kernel - located in different directories, the .h files shall be located in - include/linux/ or other include/ directories as appropriate. - -One exception for this rule is larger subsystems that have their own directory -under include/ such as include/scsi. Another exception is arch-specific -.h files which are located under include/asm-$(ARCH)/*. - -External modules have a tendency to locate include files in a separate include/ -directory and therefore needs to deal with this in their kbuild file. - ---- 5.1 How to include files from the kernel include dir - - When a module needs to include a file from include/linux/ then one - just uses: - - #include - - kbuild will make sure to add options to gcc so the relevant - directories are searched. - Likewise for .h files placed in the same directory as the .c file. - - #include "8123_if.h" - - will do the job. - ---- 5.2 External modules using an include/ dir - - External modules often locate their .h files in a separate include/ - directory although this is not usual kernel style. When an external - module uses an include/ dir then kbuild needs to be told so. - The trick here is to use either EXTRA_CFLAGS (take effect for all .c - files) or CFLAGS_$F.o (take effect only for a single file). - - In our example if we move 8123_if.h to a subdirectory named include/ - the resulting Kbuild file would look like: - - --> filename: Kbuild - obj-m := 8123.o - - EXTRA_CFLAGS := -Iinclude - 8123-y := 8123_if.o 8123_pci.o 8123_bin.o - - Note that in the assingment there is no space between -I and the path. - This is a kbuild limitation and no space must be present. - - -=== 6. Module installation - -Modules which are included in the kernel is installed in the directory: - - /lib/modules/$(KERNELRELEASE)/kernel - -External modules are installed in the directory: - - /lib/modules/$(KERNELRELEASE)/extra - ---- 6.1 INSTALL_MOD_PATH - - Above are the default directories, but as always some level of - customization is possible. One can prefix the path using the variable - INSTALL_MOD_PATH: - - $ make INSTALL_MOD_PATH=/frodo modules_install - => Install dir: /frodo/lib/modules/$(KERNELRELEASE)/kernel - - INSTALL_MOD_PATH may be set as an ordinary shell variable or as in the - example above be specified on the commandline when calling make. - INSTALL_MOD_PATH has effect both when installing modules included in - the kernel as well as when installing external modules. - ---- 6.2 INSTALL_MOD_DIR - - When installing external modules they are default installed in a - directory under /lib/modules/$(KERNELRELEASE)/extra, but one may wish - to locate modules for a specific functionality in a separate - directory. For this purpose one can use INSTALL_MOD_DIR to specify an - alternative name than 'extra'. - - $ make INSTALL_MOD_DIR=gandalf -C KERNELDIR \ - M=`pwd` modules_install - => Install dir: /lib/modules/$(KERNELRELEASE)/gandalf - - -=== 7. Module versioning - -Module versioning are enabled by the CONFIG_MODVERSIONS tag. - -Module versioning is used as a simple ABI consistency check. The Module -versioning creates a CRC value of the full prototype for an exported symbol and -when a module is loaded/used then the CRC values contained in the kernel are -compared with similar values in the module. If they are not equal then the -kernel refuses to load the module. - -During a kernel build a file named Module.symvers will be generated. This -file includes the symbol version of all symbols within the kernel. If the -Module.symvers file is saved from the last full kernel compile one does not -have to do a full kernel compile to build a module version's compatible module. - -=== 8. Tips & Tricks - ---- 8.1 Testing for CONFIG_FOO_BAR - - Modules often needs to check for certain CONFIG_ options to decide if - a specific feature shall be included in the module. When kbuild is used - this is done by referencing the CONFIG_ variable directly. - - #fs/ext2/Makefile - obj-$(CONFIG_EXT2_FS) += ext2.o - - ext2-y := balloc.o bitmap.o dir.o - ext2-$(CONFIG_EXT2_FS_XATTR) += xattr.o - - External modules have traditionally used grep to check for specific - CONFIG_ settings directly in .config. This usage is broken. - As introduced before external modules shall use kbuild when building - and therefore can use the same methods as in-kernel modules when testing - for CONFIG_ definitions. - +For now this is a raw copy from the old Documentation/kbuild/modules.txt, +which was removed in 2.6.0-test5. +The information herein is correct but not complete. + +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 kernel build system, +kbuild. Use the following command-line: + +make -C path/to/kernel/src M=$PWD modules + +This requires that a makefile exits made in accordance to +Documentation/kbuild/makefiles.txt. Read that file for more details on +the build system. + +The following is a short summary of how to write your Makefile to get +you up and running fast. Assuming your module will be called +yourmodule.ko, your code should be in yourmodule.c and your Makefile +should include + +obj-m := yourmodule.o + +If the code for your module is in multiple files that need to be +linked, you need to tell the build system which files to compile. In +the case of multiple files, none of these files can be named +yourmodule.c because doing so would cause a problem with the linking +step. Assuming your code exists in file1.c, file2.c, and file3.c and +you want to build yourmodule.ko from them, your Makefile should +include + +obj-m := yourmodule.o +yourmodule-objs := file1.o file2.o file3.o + +Now for a final example to put it all together. Assuming the +KERNEL_SOURCE environment variable is set to the directory where you +compiled the kernel, a simple Makefile that builds yourmodule.ko as +described above would look like + +# Tells the build system to build yourmodule.ko. +obj-m := yourmodule.o + +# Tells the build system to build these object files and link them as +# yourmodule.o, before building yourmodule.ko. This line can be left +# out if all the code for your module is in one file, yourmodule.c. If +# you are using multiple files, none of these files can be named +# yourmodule.c. +yourmodule-objs := file1.o file2.o file3.o + +# Invokes the kernel build system to come back to the current +# directory and build yourmodule.ko. +default: + make -C ${KERNEL_SOURCE} M=`pwd` modules diff --git a/Documentation/kdump.txt b/Documentation/kdump.txt deleted file mode 100644 index 8fc3d68ae..000000000 --- a/Documentation/kdump.txt +++ /dev/null @@ -1,105 +0,0 @@ -Documentation for kdump - the kexec based crash dumping solution -================================================================ - -DESIGN -====== - -We use kexec to reboot to a second kernel whenever a dump needs to be taken. -This second kernel is booted with with very little memory (configurable -at compile time). The first kernel reserves the section of memory that the -second kernel uses. This ensures that on-going DMA from the first kernel -does not corrupt the second kernel. The first 640k of physical memory is -needed irrespective of where the kernel loads at. Hence, this region is -backed up before reboot. - -In the second kernel, "old memory" can be accessed in two ways. The -first one is through a device interface. We can create a /dev/oldmem or -whatever and write out the memory in raw format. The second interface is -through /proc/vmcore. This exports the dump as an ELF format file which -can be written out using any file copy command (cp, scp, etc). Further, gdb -can be used to perform some minimal debugging on the dump file. Both these -methods ensure that there is correct ordering of the dump pages (corresponding -to the first 640k that has been relocated). - -SETUP -===== - -1) Obtain the appropriate -mm tree patch and apply it on to the vanilla - kernel tree. - -2) Two kernels need to be built in order to get this feature working. - - For the first kernel, choose the default values for the following options. - - a) Physical address where the kernel is loaded - b) kexec system call - c) kernel crash dumps - - All the options are under "Processor type and features" - - For the second kernel, change (a) to 16MB. If you want to choose another - value here, ensure "location from where the crash dumping kernel will boot - (MB)" under (c) reflects the same value. - - Also ensure you have CONFIG_HIGHMEM on. - -3) Boot into the first kernel. You are now ready to try out kexec based crash - dumps. - -4) Load the second kernel to be booted using - - kexec -p --args-linux --append="root= dump - init 1 memmap=exactmap memmap=640k@0 memmap=32M@16M" - - Note that has to be a vmlinux image. bzImage will not - work, as of now. - -5) Enable kexec based dumping by - - echo 1 > /proc/kexec-dump - - If this is not set, the system will not do a kexec reboot in the event - of a panic. - -6) System reboots into the second kernel when a panic occurs. - You could write a module to call panic, for testing purposes. - -7) Write out the dump file using - - cp /proc/vmcore - -You can also access the dump as a device for a linear/raw view. To do this, -you will need the kd-oldmem-.patch built into the kernel. To create -the device, type - - mknod /dev/oldmem c 1 12 - -Use "dd" with suitable options for count, bs and skip to access specific -portions of the dump. - -ANALYSIS -======== - -You can run gdb on the dump file copied out of /proc/vmcore. Use vmlinux built -with -g and run - - gdb vmlinux - -Stack trace for the task on processor 0, register display, memory display -work fine. - -TODO -==== - -1) Provide a kernel-pages only view for the dump. This could possibly turn up - as /proc/vmcore-kern. -2) Provide register contents of all processors (similar to what multi-threaded - core dumps does). -3) Modify "crash" to make it recognize this dump. -4) Make the i386 kernel boot from any location so we can run the second kernel - from the reserved location instead of the current approach. - -CONTACT -======= - -Hariprasad Nellitheertha - hari at in dot ibm dot com diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 3db6c5095..1b8691daa 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt @@ -54,7 +54,6 @@ restrictions referred to are that the relevant option is valid if: NFS Appropriate NFS support is enabled. OSS OSS sound support is enabled. PARIDE The ParIDE subsystem is enabled. - PARISC The PA-RISC architecture is enabled. PCI PCI bus support is enabled. PCMCIA The PCMCIA subsystem is enabled. PNP Plug & Play support is enabled. @@ -313,24 +312,8 @@ running once the system is up. condev= [HW,S390] console device conmode= - console= [KNL] Output console device and options. - - tty Use the virtual console device . - - ttyS[,options] - Use the specified serial port. The options are of - the form "bbbbpn", where "bbbb" is the baud rate, - "p" is parity ("n", "o", or "e"), and "n" is bits. - Default is "9600n8". - - See also Documentation/serial-console.txt. - - uart,io,[,options] - uart,mmio,[,options] - Start an early, polled-mode console on the 8250/16550 - UART at the specified I/O port or MMIO address, - switching to the matching ttyS device later. The - options are the same as for ttyS, above. + console= [KNL] Output console + Console device and comm spec (speed, control, parity). cpcihp_generic= [HW,PCI] Generic port I/O CompactPCI driver Format: ,,,[,] @@ -416,7 +399,7 @@ running once the system is up. eicon= [HW,ISDN] Format: ,, - eisa_irq_edge= [PARISC,HW] + eisa_irq_edge= [PARISC] See header of drivers/parisc/eisa.c. elanfreq= [IA-32] @@ -425,8 +408,7 @@ running once the system is up. elevator= [IOSCHED] Format: {"as"|"cfq"|"deadline"|"noop"} - See Documentation/block/as-iosched.txt - and Documentation/block/deadline-iosched.txt for details. + See Documentation/as-iosched.txt for details es1370= [HW,OSS] Format: [,] @@ -511,26 +493,16 @@ running once the system is up. i810= [HW,DRM] - i8k.force [HW] Activate i8k driver even if SMM BIOS signature - does not match list of supported models. - i8k.power_status - [HW] Report power status in /proc/i8k - (disabled by default) - i8k.restricted [HW] Allow controlling fans only if SYS_ADMIN - capability is set. - ibmmcascsi= [HW,MCA,SCSI] IBM MicroChannel SCSI adapter See Documentation/mca.txt. icn= [HW,ISDN] Format: [,[,[,]]] - ide= [HW] (E)IDE subsystem - Format: ide=nodma or ide=doubler or ide=reverse - See Documentation/ide.txt. - ide?= [HW] (E)IDE subsystem - Format: ide?=noprobe or chipset specific parameters. + Config (iomem/irq), tuning or debugging + (serialize,reset,no{dma,tune,probe}) or chipset + specific parameters. See Documentation/ide.txt. idebus= [HW] (E)IDE subsystem - VLB/PCI bus speed @@ -574,17 +546,6 @@ running once the system is up. ips= [HW,SCSI] Adaptec / IBM ServeRAID controller See header of drivers/scsi/ips.c. - irqfixup [HW] - When an interrupt is not handled search all handlers - for it. Intended to get systems with badly broken - firmware running. - - irqpoll [HW] - When an interrupt is not handled search all handlers - for it. Also check all handlers each timer - interrupt. Intended to get systems with badly broken - firmware running. - isapnp= [ISAPNP] Format: , , , @@ -687,10 +648,9 @@ running once the system is up. maxcpus= [SMP] Maximum number of processors that an SMP kernel should make use of - max_luns= [SCSI] Maximum number of LUNs to probe - Should be between 1 and 2^32-1. + max_scsi_luns= [SCSI] - max_report_luns= + max_scsi_report_luns= [SCSI] Maximum number of LUNs received Should be between 1 and 16384. @@ -715,9 +675,6 @@ running once the system is up. mem=nn[KMG] [KNL,BOOT] Force usage of a specific amount of memory Amount of memory to be used when the kernel is not able to see the whole system memory or for test. - [IA-32] Use together with memmap= to avoid physical - address space collisions. Without memmap= PCI devices - could be placed at addresses belonging to unused RAM. mem=nopentium [BUGS=IA-32] Disable usage of 4MB pages for kernel memory. @@ -740,7 +697,7 @@ running once the system is up. [KNL,ACPI] Mark specific memory as reserved. Region of memory to be used, from ss to ss+nn. - meye.*= [HW] Set MotionEye Camera parameters + meye= [HW] Set MotionEye Camera parameters See Documentation/video4linux/meye.txt. mga= [HW,DRM] @@ -802,8 +759,8 @@ running once the system is up. noalign [KNL,ARM] - noapic [SMP,APIC] Tells the kernel to not make use of any - IOAPICs that may be present in the system. + noapic [SMP,APIC] Tells the kernel not to make use of any + APIC that may be present on the system. noasync [HW,M68K] Disables async and sync negotiation for all devices. @@ -817,12 +774,14 @@ running once the system is up. noexec [IA-64] - noexec [i386, x86_64] + noexec [i386] noexec=on: enable non-executable mappings (default) noexec=off: disable nn-executable mappings nofxsr [BUGS=IA-32] + nohighio [BUGS=IA-32] Disable highmem block I/O. + nohlt [BUGS=ARM] no-hlt [BUGS=IA-32] Tells the kernel that the hlt @@ -903,16 +862,6 @@ running once the system is up. order they are specified on the command line, starting with parport0. - parport_init_mode= - [HW,PPT] Configure VIA parallel port to - operate in specific mode. This is - necessary on Pegasos computer where - firmware has no options for setting up - parallel port mode and sets it to - spp. Currently this function knows - 686a and 8231 chips. - Format: [spp|ps2|epp|ecp|ecpepp] - pas2= [HW,OSS] Format: ,,,,,,, @@ -968,10 +917,6 @@ running once the system is up. enabled. noacpi [IA-32] Do not use ACPI for IRQ routing or for PCI scanning. - routeirq Do IRQ routing for all PCI devices. - This is normally done in pci_enable_device(), - so this option is a temporary workaround - for broken drivers that don't call it. firmware [ARM] Do not re-enumerate the bus but instead just use the configuration @@ -985,11 +930,6 @@ running once the system is up. pd. [PARIDE] See Documentation/paride.txt. - pdcchassis= [PARISC,HW] Disable/Enable PDC Chassis Status codes at - boot time. - Format: { 0 | 1 } - See arch/parisc/kernel/pdc_chassis.c - pf. [PARIDE] See Documentation/paride.txt. @@ -1025,10 +965,6 @@ running once the system is up. (param: profile step/bucket size as a power of 2 for statistical time based profiling) - processor.max_cstate= [HW, ACPI] - Limit processor to maximum C-state - max_cstate=9 overrides any DMI blacklist limit. - prompt_ramdisk= [RAM] List of RAM disks to prompt for floppy disk before loading. See Documentation/ramdisk.txt. @@ -1070,6 +1006,10 @@ running once the system is up. New name for the ramdisk parameter. See Documentation/ramdisk.txt. + ramdisk_start= [RAM] Starting block of RAM disk image (so you can + place it after the kernel image on a boot floppy). + See Documentation/ramdisk.txt. + reboot= [BUGS=IA-32,BUGS=ARM,BUGS=IA-64] Rebooting mode Format: [,[,...]] See arch/*/kernel/reboot.c. @@ -1125,6 +1065,8 @@ running once the system is up. scsi_logging= [SCSI] + scsihosts= [SCSI] + serialnumber [BUGS=IA-32] sf16fm= [HW] SF16FMI radio driver for Linux @@ -1282,12 +1224,17 @@ running once the system is up. sonycd535= [HW,CD] Format: [,] - sonypi.*= [HW] Sony Programmable I/O Control Device driver - See Documentation/sonypi.txt + sonypi= [HW] Sony Programmable I/O Control Device driver + Format: ,,,,, specialix= [HW,SERIAL] Specialix multi-serial port adapter See Documentation/specialix.txt. + speedstep_coppermine= + [HW,IA-32] Take CPU in your notebook as SpeedStep-capable + See comment before function speedstep_setup() in + arch/i386/kernel/cpu/cpufreq/speedstep.c. + spia_io_base= [HW,MTD] spia_fio_base= spia_pedr= @@ -1302,7 +1249,7 @@ running once the system is up. st0x= [HW,SCSI] See header of drivers/scsi/seagate.c. - sti= [PARISC,HW] + sti= [HW] Format: Set the STI (builtin display/keyboard on the HP-PARISC machines) console (graphic card) which should be used @@ -1369,8 +1316,6 @@ running once the system is up. uart6850= [HW,OSS] Format: , - - usb-handoff [HW] Enable early USB BIOS -> OS handoff video= [FB] Frame buffer configuration See Documentation/fb/modedb.txt. diff --git a/Documentation/keys.txt b/Documentation/keys.txt deleted file mode 100644 index 36cbb0dd0..000000000 --- a/Documentation/keys.txt +++ /dev/null @@ -1,836 +0,0 @@ - ============================ - KERNEL KEY RETENTION SERVICE - ============================ - -This service allows cryptographic keys, authentication tokens, cross-domain -user mappings, and similar to be cached in the kernel for the use of -filesystems other kernel services. - -Keyrings are permitted; these are a special type of key that can hold links to -other keys. Processes each have three standard keyring subscriptions that a -kernel service can search for relevant keys. - -The key service can be configured on by enabling: - - "Security options"/"Enable access key retention support" (CONFIG_KEYS) - -This document has the following sections: - - - Key overview - - Key service overview - - Key access permissions - - New procfs files - - Userspace system call interface - - Kernel services - - Defining a key type - - Request-key callback service - - Key access filesystem - - -============ -KEY OVERVIEW -============ - -In this context, keys represent units of cryptographic data, authentication -tokens, keyrings, etc.. These are represented in the kernel by struct key. - -Each key has a number of attributes: - - - A serial number. - - A type. - - A description (for matching a key in a search). - - Access control information. - - An expiry time. - - A payload. - - State. - - - (*) Each key is issued a serial number of type key_serial_t that is unique - for the lifetime of that key. All serial numbers are positive non-zero - 32-bit integers. - - Userspace programs can use a key's serial numbers as a way to gain access - to it, subject to permission checking. - - (*) Each key is of a defined "type". Types must be registered inside the - kernel by a kernel service (such as a filesystem) before keys of that - type can be added or used. Userspace programs cannot define new types - directly. - - Key types are represented in the kernel by struct key_type. This defines - a number of operations that can be performed on a key of that type. - - Should a type be removed from the system, all the keys of that type will - be invalidated. - - (*) Each key has a description. This should be a printable string. The key - type provides an operation to perform a match between the description on - a key and a criterion string. - - (*) Each key has an owner user ID, a group ID and a permissions mask. These - are used to control what a process may do to a key from userspace, and - whether a kernel service will be able to find the key. - - (*) Each key can be set to expire at a specific time by the key type's - instantiation function. Keys can also be immortal. - - (*) Each key can have a payload. This is a quantity of data that represent - the actual "key". In the case of a keyring, this is a list of keys to - which the keyring links; in the case of a user-defined key, it's an - arbitrary blob of data. - - Having a payload is not required; and the payload can, in fact, just be a - value stored in the struct key itself. - - When a key is instantiated, the key type's instantiation function is - called with a blob of data, and that then creates the key's payload in - some way. - - Similarly, when userspace wants to read back the contents of the key, if - permitted, another key type operation will be called to convert the key's - attached payload back into a blob of data. - - (*) Each key can be in one of a number of basic states: - - (*) Uninstantiated. The key exists, but does not have any data - attached. Keys being requested from userspace will be in this state. - - (*) Instantiated. This is the normal state. The key is fully formed, and - has data attached. - - (*) Negative. This is a relatively short-lived state. The key acts as a - note saying that a previous call out to userspace failed, and acts as - a throttle on key lookups. A negative key can be updated to a normal - state. - - (*) Expired. Keys can have lifetimes set. If their lifetime is exceeded, - they traverse to this state. An expired key can be updated back to a - normal state. - - (*) Revoked. A key is put in this state by userspace action. It can't be - found or operated upon (apart from by unlinking it). - - (*) Dead. The key's type was unregistered, and so the key is now useless. - - -==================== -KEY SERVICE OVERVIEW -==================== - -The key service provides a number of features besides keys: - - (*) The key service defines two special key types: - - (+) "keyring" - - Keyrings are special keys that contain a list of other keys. Keyring - lists can be modified using various system calls. Keyrings should not - be given a payload when created. - - (+) "user" - - A key of this type has a description and a payload that are arbitrary - blobs of data. These can be created, updated and read by userspace, - and aren't intended for use by kernel services. - - (*) Each process subscribes to three keyrings: a thread-specific keyring, a - process-specific keyring, and a session-specific keyring. - - The thread-specific keyring is discarded from the child when any sort of - clone, fork, vfork or execve occurs. A new keyring is created only when - required. - - The process-specific keyring is replaced with an empty one in the child - on clone, fork, vfork unless CLONE_THREAD is supplied, in which case it - is shared. execve also discards the process's process keyring and creates - a new one. - - The session-specific keyring is persistent across clone, fork, vfork and - execve, even when the latter executes a set-UID or set-GID binary. A - process can, however, replace its current session keyring with a new one - by using PR_JOIN_SESSION_KEYRING. It is permitted to request an anonymous - new one, or to attempt to create or join one of a specific name. - - The ownership of the thread and process-specific keyrings changes when - the real UID and GID of the thread changes. - - (*) Each user ID resident in the system holds two special keyrings: a user - specific keyring and a default user session keyring. The default session - keyring is initialised with a link to the user-specific keyring. - - When a process changes its real UID, if it used to have no session key, it - will be subscribed to the default session key for the new UID. - - If a process attempts to access its session key when it doesn't have one, - it will be subscribed to the default for its current UID. - - (*) Each user has two quotas against which the keys they own are tracked. One - limits the total number of keys and keyrings, the other limits the total - amount of description and payload space that can be consumed. - - The user can view information on this and other statistics through procfs - files. - - Process-specific and thread-specific keyrings are not counted towards a - user's quota. - - If a system call that modifies a key or keyring in some way would put the - user over quota, the operation is refused and error EDQUOT is returned. - - (*) There's a system call interface by which userspace programs can create - and manipulate keys and keyrings. - - (*) There's a kernel interface by which services can register types and - search for keys. - - (*) There's a way for the a search done from the kernel to call back to - userspace to request a key that can't be found in a process's keyrings. - - (*) An optional filesystem is available through which the key database can be - viewed and manipulated. - - -====================== -KEY ACCESS PERMISSIONS -====================== - -Keys have an owner user ID, a group access ID, and a permissions mask. The -mask has up to eight bits each for user, group and other access. Only five of -each set of eight bits are defined. These permissions granted are: - - (*) View - - This permits a key or keyring's attributes to be viewed - including key - type and description. - - (*) Read - - This permits a key's payload to be viewed or a keyring's list of linked - keys. - - (*) Write - - This permits a key's payload to be instantiated or updated, or it allows - a link to be added to or removed from a keyring. - - (*) Search - - This permits keyrings to be searched and keys to be found. Searches can - only recurse into nested keyrings that have search permission set. - - (*) Link - - This permits a key or keyring to be linked to. To create a link from a - keyring to a key, a process must have Write permission on the keyring and - Link permission on the key. - -For changing the ownership, group ID or permissions mask, being the owner of -the key or having the sysadmin capability is sufficient. - - -================ -NEW PROCFS FILES -================ - -Two files have been added to procfs by which an administrator can find out -about the status of the key service: - - (*) /proc/keys - - This lists all the keys on the system, giving information about their - type, description and permissions. The payload of the key is not - available this way: - - SERIAL FLAGS USAGE EXPY PERM UID GID TYPE DESCRIPTION: SUMMARY - 00000001 I----- 39 perm 1f0000 0 0 keyring _uid_ses.0: 1/4 - 00000002 I----- 2 perm 1f0000 0 0 keyring _uid.0: empty - 00000007 I----- 1 perm 1f0000 0 0 keyring _pid.1: empty - 0000018d I----- 1 perm 1f0000 0 0 keyring _pid.412: empty - 000004d2 I--Q-- 1 perm 1f0000 32 -1 keyring _uid.32: 1/4 - 000004d3 I--Q-- 3 perm 1f0000 32 -1 keyring _uid_ses.32: empty - 00000892 I--QU- 1 perm 1f0000 0 0 user metal:copper: 0 - 00000893 I--Q-N 1 35s 1f0000 0 0 user metal:silver: 0 - 00000894 I--Q-- 1 10h 1f0000 0 0 user metal:gold: 0 - - The flags are: - - I Instantiated - R Revoked - D Dead - Q Contributes to user's quota - U Under contruction by callback to userspace - N Negative key - - This file must be enabled at kernel configuration time as it allows anyone - to list the keys database. - - (*) /proc/key-users - - This file lists the tracking data for each user that has at least one key - on the system. Such data includes quota information and statistics: - - [root@andromeda root]# cat /proc/key-users - 0: 46 45/45 1/100 13/10000 - 29: 2 2/2 2/100 40/10000 - 32: 2 2/2 2/100 40/10000 - 38: 2 2/2 2/100 40/10000 - - The format of each line is - : User ID to which this applies - Structure refcount - / Total number of keys and number instantiated - / Key count quota - / Key size quota - - -=============================== -USERSPACE SYSTEM CALL INTERFACE -=============================== - -Userspace can manipulate keys directly through three new syscalls: add_key, -request_key and keyctl. The latter provides a number of functions for -manipulating keys. - -When referring to a key directly, userspace programs should use the key's -serial number (a positive 32-bit integer). However, there are some special -values available for referring to special keys and keyrings that relate to the -process making the call: - - CONSTANT VALUE KEY REFERENCED - ============================== ====== =========================== - KEY_SPEC_THREAD_KEYRING -1 thread-specific keyring - KEY_SPEC_PROCESS_KEYRING -2 process-specific keyring - KEY_SPEC_SESSION_KEYRING -3 session-specific keyring - KEY_SPEC_USER_KEYRING -4 UID-specific keyring - KEY_SPEC_USER_SESSION_KEYRING -5 UID-session keyring - KEY_SPEC_GROUP_KEYRING -6 GID-specific keyring - - -The main syscalls are: - - (*) Create a new key of given type, description and payload and add it to the - nominated keyring: - - key_serial_t add_key(const char *type, const char *desc, - const void *payload, size_t plen, - key_serial_t keyring); - - If a key of the same type and description as that proposed already exists - in the keyring, this will try to update it with the given payload, or it - will return error EEXIST if that function is not supported by the key - type. The process must also have permission to write to the key to be - able to update it. The new key will have all user permissions granted and - no group or third party permissions. - - Otherwise, this will attempt to create a new key of the specified type - and description, and to instantiate it with the supplied payload and - attach it to the keyring. In this case, an error will be generated if the - process does not have permission to write to the keyring. - - The payload is optional, and the pointer can be NULL if not required by - the type. The payload is plen in size, and plen can be zero for an empty - payload. - - A new keyring can be generated by setting type "keyring", the keyring - name as the description (or NULL) and setting the payload to NULL. - - User defined keys can be created by specifying type "user". It is - recommended that a user defined key's description by prefixed with a type - ID and a colon, such as "krb5tgt:" for a Kerberos 5 ticket granting - ticket. - - Any other type must have been registered with the kernel in advance by a - kernel service such as a filesystem. - - The ID of the new or updated key is returned if successful. - - - (*) Search the process's keyrings for a key, potentially calling out to - userspace to create it. - - key_serial_t request_key(const char *type, const char *description, - const char *callout_info, - key_serial_t dest_keyring); - - This function searches all the process's keyrings in the order thread, - process, session for a matching key. This works very much like - KEYCTL_SEARCH, including the optional attachment of the discovered key to - a keyring. - - If a key cannot be found, and if callout_info is not NULL, then - /sbin/request-key will be invoked in an attempt to obtain a key. The - callout_info string will be passed as an argument to the program. - - -The keyctl syscall functions are: - - (*) Map a special key ID to a real key ID for this process: - - key_serial_t keyctl(KEYCTL_GET_KEYRING_ID, key_serial_t id, - int create); - - The special key specified by "id" is looked up (with the key being - created if necessary) and the ID of the key or keyring thus found is - returned if it exists. - - If the key does not yet exist, the key will be created if "create" is - non-zero; and the error ENOKEY will be returned if "create" is zero. - - - (*) Replace the session keyring this process subscribes to with a new one: - - key_serial_t keyctl(KEYCTL_JOIN_SESSION_KEYRING, const char *name); - - If name is NULL, an anonymous keyring is created attached to the process - as its session keyring, displacing the old session keyring. - - If name is not NULL, if a keyring of that name exists, the process - attempts to attach it as the session keyring, returning an error if that - is not permitted; otherwise a new keyring of that name is created and - attached as the session keyring. - - To attach to a named keyring, the keyring must have search permission for - the process's ownership. - - The ID of the new session keyring is returned if successful. - - - (*) Update the specified key: - - long keyctl(KEYCTL_UPDATE, key_serial_t key, const void *payload, - size_t plen); - - This will try to update the specified key with the given payload, or it - will return error EOPNOTSUPP if that function is not supported by the key - type. The process must also have permission to write to the key to be - able to update it. - - The payload is of length plen, and may be absent or empty as for - add_key(). - - - (*) Revoke a key: - - long keyctl(KEYCTL_REVOKE, key_serial_t key); - - This makes a key unavailable for further operations. Further attempts to - use the key will be met with error EKEYREVOKED, and the key will no longer - be findable. - - - (*) Change the ownership of a key: - - long keyctl(KEYCTL_CHOWN, key_serial_t key, uid_t uid, gid_t gid); - - This function permits a key's owner and group ID to be changed. Either - one of uid or gid can be set to -1 to suppress that change. - - Only the superuser can change a key's owner to something other than the - key's current owner. Similarly, only the superuser can change a key's - group ID to something other than the calling process's group ID or one of - its group list members. - - - (*) Change the permissions mask on a key: - - long keyctl(KEYCTL_SETPERM, key_serial_t key, key_perm_t perm); - - This function permits the owner of a key or the superuser to change the - permissions mask on a key. - - Only bits the available bits are permitted; if any other bits are set, - error EINVAL will be returned. - - - (*) Describe a key: - - long keyctl(KEYCTL_DESCRIBE, key_serial_t key, char *buffer, - size_t buflen); - - This function returns a summary of the key's attributes (but not its - payload data) as a string in the buffer provided. - - Unless there's an error, it always returns the amount of data it could - produce, even if that's too big for the buffer, but it won't copy more - than requested to userspace. If the buffer pointer is NULL then no copy - will take place. - - A process must have view permission on the key for this function to be - successful. - - If successful, a string is placed in the buffer in the following format: - - ;;;; - - Where type and description are strings, uid and gid are decimal, and perm - is hexadecimal. A NUL character is included at the end of the string if - the buffer is sufficiently big. - - This can be parsed with - - sscanf(buffer, "%[^;];%d;%d;%o;%s", type, &uid, &gid, &mode, desc); - - - (*) Clear out a keyring: - - long keyctl(KEYCTL_CLEAR, key_serial_t keyring); - - This function clears the list of keys attached to a keyring. The calling - process must have write permission on the keyring, and it must be a - keyring (or else error ENOTDIR will result). - - - (*) Link a key into a keyring: - - long keyctl(KEYCTL_LINK, key_serial_t keyring, key_serial_t key); - - This function creates a link from the keyring to the key. The process - must have write permission on the keyring and must have link permission - on the key. - - Should the keyring not be a keyring, error ENOTDIR will result; and if - the keyring is full, error ENFILE will result. - - The link procedure checks the nesting of the keyrings, returning ELOOP if - it appears to deep or EDEADLK if the link would introduce a cycle. - - - (*) Unlink a key or keyring from another keyring: - - long keyctl(KEYCTL_UNLINK, key_serial_t keyring, key_serial_t key); - - This function looks through the keyring for the first link to the - specified key, and removes it if found. Subsequent links to that key are - ignored. The process must have write permission on the keyring. - - If the keyring is not a keyring, error ENOTDIR will result; and if the - key is not present, error ENOENT will be the result. - - - (*) Search a keyring tree for a key: - - key_serial_t keyctl(KEYCTL_SEARCH, key_serial_t keyring, - const char *type, const char *description, - key_serial_t dest_keyring); - - This searches the keyring tree headed by the specified keyring until a - key is found that matches the type and description criteria. Each keyring - is checked for keys before recursion into its children occurs. - - The process must have search permission on the top level keyring, or else - error EACCES will result. Only keyrings that the process has search - permission on will be recursed into, and only keys and keyrings for which - a process has search permission can be matched. If the specified keyring - is not a keyring, ENOTDIR will result. - - If the search succeeds, the function will attempt to link the found key - into the destination keyring if one is supplied (non-zero ID). All the - constraints applicable to KEYCTL_LINK apply in this case too. - - Error ENOKEY, EKEYREVOKED or EKEYEXPIRED will be returned if the search - fails. On success, the resulting key ID will be returned. - - - (*) Read the payload data from a key: - - key_serial_t keyctl(KEYCTL_READ, key_serial_t keyring, char *buffer, - size_t buflen); - - This function attempts to read the payload data from the specified key - into the buffer. The process must have read permission on the key to - succeed. - - The returned data will be processed for presentation by the key type. For - instance, a keyring will return an array of key_serial_t entries - representing the IDs of all the keys to which it is subscribed. The user - defined key type will return its data as is. If a key type does not - implement this function, error EOPNOTSUPP will result. - - As much of the data as can be fitted into the buffer will be copied to - userspace if the buffer pointer is not NULL. - - On a successful return, the function will always return the amount of - data available rather than the amount copied. - - - (*) Instantiate a partially constructed key. - - key_serial_t keyctl(KEYCTL_INSTANTIATE, key_serial_t key, - const void *payload, size_t plen, - key_serial_t keyring); - - If the kernel calls back to userspace to complete the instantiation of a - key, userspace should use this call to supply data for the key before the - invoked process returns, or else the key will be marked negative - automatically. - - The process must have write access on the key to be able to instantiate - it, and the key must be uninstantiated. - - If a keyring is specified (non-zero), the key will also be linked into - that keyring, however all the constraints applying in KEYCTL_LINK apply - in this case too. - - The payload and plen arguments describe the payload data as for add_key(). - - - (*) Negatively instantiate a partially constructed key. - - key_serial_t keyctl(KEYCTL_NEGATE, key_serial_t key, - unsigned timeout, key_serial_t keyring); - - If the kernel calls back to userspace to complete the instantiation of a - key, userspace should use this call mark the key as negative before the - invoked process returns if it is unable to fulfil the request. - - The process must have write access on the key to be able to instantiate - it, and the key must be uninstantiated. - - If a keyring is specified (non-zero), the key will also be linked into - that keyring, however all the constraints applying in KEYCTL_LINK apply - in this case too. - - -=============== -KERNEL SERVICES -=============== - -The kernel services for key managment are fairly simple to deal with. They can -be broken down into two areas: keys and key types. - -Dealing with keys is fairly straightforward. Firstly, the kernel service -registers its type, then it searches for a key of that type. It should retain -the key as long as it has need of it, and then it should release it. For a -filesystem or device file, a search would probably be performed during the -open call, and the key released upon close. How to deal with conflicting keys -due to two different users opening the same file is left to the filesystem -author to solve. - -When accessing a key's payload data, the key->lock should be at least read -locked, or else the data may be changed by update during the access. - -(*) To search for a key, call: - - struct key *request_key(const struct key_type *type, - const char *description, - const char *callout_string); - - This is used to request a key or keyring with a description that matches - the description specified according to the key type's match function. This - permits approximate matching to occur. If callout_string is not NULL, then - /sbin/request-key will be invoked in an attempt to obtain the key from - userspace. In that case, callout_string will be passed as an argument to - the program. - - Should the function fail error ENOKEY, EKEYEXPIRED or EKEYREVOKED will be - returned. - - -(*) When it is no longer required, the key should be released using: - - void key_put(struct key *key); - - This can be called from interrupt context. If CONFIG_KEYS is not set then - the argument will not be parsed. - - -(*) Extra references can be made to a key by calling the following function: - - struct key *key_get(struct key *key); - - These need to be disposed of by calling key_put() when they've been - finished with. The key pointer passed in will be returned. If the pointer - is NULL or CONFIG_KEYS is not set then the key will not be dereferenced and - no increment will take place. - - -(*) A key's serial number can be obtained by calling: - - key_serial_t key_serial(struct key *key); - - If key is NULL or if CONFIG_KEYS is not set then 0 will be returned (in the - latter case without parsing the argument). - - -(*) If a keyring was found in the search, this can be further searched by: - - struct key *keyring_search(struct key *keyring, - const struct key_type *type, - const char *description) - - This searches the keyring tree specified for a matching key. Error ENOKEY - is returned upon failure. If successful, the returned key will need to be - released. - - -(*) To check the validity of a key, this function can be called: - - int validate_key(struct key *key); - - This checks that the key in question hasn't expired or and hasn't been - revoked. Should the key be invalid, error EKEYEXPIRED or EKEYREVOKED will - be returned. If the key is NULL or if CONFIG_KEYS is not set then 0 will be - returned (in the latter case without parsing the argument). - - -(*) To register a key type, the following function should be called: - - int register_key_type(struct key_type *type); - - This will return error EEXIST if a type of the same name is already - present. - - -(*) To unregister a key type, call: - - void unregister_key_type(struct key_type *type); - - -=================== -DEFINING A KEY TYPE -=================== - -A kernel service may want to define its own key type. For instance, an AFS -filesystem might want to define a Kerberos 5 ticket key type. To do this, it -author fills in a struct key_type and registers it with the system. - -The structure has a number of fields, some of which are mandatory: - - (*) const char *name - - The name of the key type. This is used to translate a key type name - supplied by userspace into a pointer to the structure. - - - (*) size_t def_datalen - - This is optional - it supplies the default payload data length as - contributed to the quota. If the key type's payload is always or almost - always the same size, then this is a more efficient way to do things. - - The data length (and quota) on a particular key can always be changed - during instantiation or update by calling: - - int key_payload_reserve(struct key *key, size_t datalen); - - With the revised data length. Error EDQUOT will be returned if this is - not viable. - - - (*) int (*instantiate)(struct key *key, const void *data, size_t datalen); - - This method is called to attach a payload to a key during - construction. The payload attached need not bear any relation to the data - passed to this function. - - If the amount of data attached to the key differs from the size in - keytype->def_datalen, then key_payload_reserve() should be called. - - - (*) int (*duplicate)(struct key *key, const struct key *source); - - If this type of key can be duplicated, then this method should be - provided. It is called to copy the payload attached to the source into - the new key. The data length on the new key will have been updated and - the quota adjusted already. - - The source key will be locked against change on the source->sem, so it is - safe to sleep here. - - - (*) int (*update)(struct key *key, const void *data, size_t datalen); - - If this type of key can be updated, then this method should be - provided. It is called to update a key's payload from the blob of data - provided. - - key_payload_reserve() should be called if the data length might change - before any changes are actually made. Note that if this succeeds, the - type is committed to changing the key because it's already been altered, - so all memory allocation must be done first. - - The key will be locked against other changers on key->sem, so it is safe - to sleep here. - - key_payload_reserve() should be called with the key->lock write locked, - and the changes to the key's attached payload should be made before the - key is locked. - - - (*) int (*match)(const struct key *key, const void *desc); - - This method is called to match a key against a description. It should - return non-zero if the two match, zero if they don't. - - - (*) void (*destroy)(struct key *key); - - This method is optional. It is called to discard the payload data on a - key when it is being destroyed. - - - (*) void (*describe)(const struct key *key, struct seq_file *p); - - This method is optional. It is called during /proc/keys reading to - summarise a key in text form. - - - (*) long (*read)(const struct key *key, char __user *buffer, size_t buflen); - - This method is optional. It is called by KEYCTL_READ to translate the - key's payload into something a blob of data for userspace to deal - with. Ideally, the blob should be in the same format as that passed in to - the instantiate and update methods. - - If successful, the blob size that could be produced should be returned - rather than the size copied. - - -============================ -REQUEST-KEY CALLBACK SERVICE -============================ - -To create a new key, the kernel will attempt to execute the following command -line: - - /sbin/request-key create \ - - - is the key being constructed, and the three keyrings are the process -keyrings from the process that caused the search to be issued. These are -included for two reasons: - - (1) There may be an authentication token in one of the keyrings that is - required to obtain the key, eg: a Kerberos Ticket-Granting Ticket. - - (2) The new key should probably be cached in one of these rings. - -This program should set it UID and GID to those specified before attempting to -access any more keys. It may then look around for a user specific process to -hand the request off to (perhaps a path held in placed in another key by, for -example, the KDE desktop manager). - -The program (or whatever it calls) should finish construction of the key by -calling KEYCTL_INSTANTIATE, which also permits it to cache the key in one of -the keyrings (probably the session ring) before returning. Alternatively, the -key can be marked as negative with KEYCTL_NEGATE; this also permits the key to -be cached in one of the keyrings. - -If it returns with the key remaining in the unconstructed state, the key will -be marked as being negative, it will be added to the session keyring, and an -error will be returned to the key requestor. - -Supplementary information may be provided from whoever or whatever invoked -this service. This will be passed as the parameter. If no such -information was made available, then "-" will be passed as this parameter -instead. - - -Similarly, the kernel may attempt to update an expired or a soon to expire key -by executing: - - /sbin/request-key update \ - - -In this case, the program isn't required to actually attach the key to a ring; -the rings are provided for reference. diff --git a/Documentation/md.txt b/Documentation/md.txt index e2b536992..3fb3b1ef1 100644 --- a/Documentation/md.txt +++ b/Documentation/md.txt @@ -45,8 +45,7 @@ Boot time autodetection of RAID arrays When md is compiled into the kernel (not as module), partitions of type 0xfd are scanned and automatically assembled into RAID arrays. This autodetection may be suppressed with the kernel parameter -"raid=noautodetect". As of kernel 2.6.9, only drives with a type 0 -superblock can be autodetected and run at boot time. +"raid=noautodetect". The kernel parameter "raid=partitionable" (or "raid=part") means that all auto-detected arrays are assembled as partitionable. @@ -56,13 +55,13 @@ Superblock formats ------------------ The md driver can support a variety of different superblock formats. -Currently, it supports superblock formats "0.90.0" and the "md-1" format -introduced in the 2.5 development series. +(It doesn't yet, but it can) -The kernel will autodetect which format superblock is being used. +The kernel does *NOT* autodetect which format superblock is being +used. It must be told. Superblock format '0' is treated differently to others for legacy -reasons - it is the original superblock format. +reasons. General Rules - apply for all superblock formats @@ -70,7 +69,6 @@ General Rules - apply for all superblock formats An array is 'created' by writing appropriate superblocks to all devices. - It is 'assembled' by associating each of these devices with an particular md virtual device. Once it is completely assembled, it can be accessed. @@ -78,10 +76,10 @@ be accessed. An array should be created by a user-space tool. This will write superblocks to all devices. It will usually mark the array as 'unclean', or with some devices missing so that the kernel md driver -can create appropriate redundancy (copying in raid1, parity +can create approrpriate redundancy (copying in raid1, parity calculation in raid4/5). -When an array is assembled, it is first initialized with the +When an array is assembled, it is first initialised with the SET_ARRAY_INFO ioctl. This contains, in particular, a major and minor version number. The major version number selects which superblock format is to be used. The minor number might be used to tune handling @@ -103,16 +101,15 @@ array using HOT_REMOVE_DISK. Specific Rules that apply to format-0 super block arrays, and - arrays with no superblock (non-persistent). + arrays with no superblock (non-persistant). ------------------------------------------------------------- An array can be 'created' by describing the array (level, chunksize etc) in a SET_ARRAY_INFO ioctl. This must has major_version==0 and raid_disks != 0. - -Then uninitialized devices can be added with ADD_NEW_DISK. The +Then uninitialised devices can be added with ADD_NEW_DISK. The structure passed to ADD_NEW_DISK must specify the state of the device and it's role in the array. -Once started with RUN_ARRAY, uninitialized spares can be added with +One started with RUN_ARRAY, uninitialised spares can be added with HOT_ADD_DISK. diff --git a/Documentation/memory.txt b/Documentation/memory.txt index 2b3dedd39..7af1709e8 100644 --- a/Documentation/memory.txt +++ b/Documentation/memory.txt @@ -21,8 +21,6 @@ systems. All of these problems can be addressed with the "mem=XXXM" boot option (where XXX is the size of RAM to use in megabytes). It can also tell Linux to use less memory than is actually installed. -If you use "mem=" on a machine with PCI, consider using "memmap=" to avoid -physical address space collisions. See the documentation of your boot loader (LILO, loadlin, etc.) about how to pass options to the kernel. @@ -46,9 +44,7 @@ Try: * Disabling the cache from the BIOS. * Try passing the "mem=4M" option to the kernel to limit - Linux to using a very small amount of memory. Use "memmap="-option - together with "mem=" on systems with PCI to avoid physical address - space collisions. + Linux to using a very small amount of memory. Other tricks: diff --git a/Documentation/mkdev.ida b/Documentation/mkdev.ida new file mode 100644 index 000000000..d2764899d --- /dev/null +++ b/Documentation/mkdev.ida @@ -0,0 +1,40 @@ +#!/bin/sh +# Script to create device nodes for SMART array controllers +# Usage: +# mkdev.ida [num controllers] [num log volumes] [num partitions] +# +# With no arguments, the script assumes 1 controller, 16 logical volumes, +# and 16 partitions/volume, which is adequate for most configurations. +# +# If you had 5 controllers and were planning on no more than 4 logical volumes +# each, using a maximum of 8 partitions per volume, you could say: +# +# mkdev.ida 5 4 8 +# +# Of course, this has no real benefit over "mkdev.ida 5" except that it +# doesn't create so many device nodes in /dev/ida. + +NR_CTLR=${1-1} +NR_VOL=${2-16} +NR_PART=${3-16} + +if [ ! -d /dev/ida ]; then + mkdir -p /dev/ida +fi + +C=0; while [ $C -lt $NR_CTLR ]; do + MAJ=`expr $C + 72` + D=0; while [ $D -lt $NR_VOL ]; do + P=0; while [ $P -lt $NR_PART ]; do + MIN=`expr $D \* 16 + $P` + if [ $P -eq 0 ]; then + mknod /dev/ida/c${C}d${D} b $MAJ $MIN + else + mknod /dev/ida/c${C}d${D}p${P} b $MAJ $MIN + fi + P=`expr $P + 1` + done + D=`expr $D + 1` + done + C=`expr $C + 1` +done diff --git a/Documentation/networking/e100.txt b/Documentation/networking/e100.txt index e4b6c7afc..0b2b7051a 100644 --- a/Documentation/networking/e100.txt +++ b/Documentation/networking/e100.txt @@ -1,16 +1,14 @@ Linux* Base Driver for the Intel(R) PRO/100 Family of Adapters ============================================================== -September 13, 2004 +March 15, 2004 Contents ======== - In This Release -- Identifying Your Adapter -- Driver Configuration Parameters -- Additional Configurations +- Supported Adapters - Support @@ -18,140 +16,26 @@ In This Release =============== This file describes the Linux* Base Driver for the Intel(R) PRO/100 Family of -Adapters, version 3.2.x. This driver includes support for Itanium(TM)2 and -EM64T systems. +Adapters, version 3.x.x. This driver includes support for Itanium(TM)-based +systems. -Identifying Your Adapter -======================== +Supported Adapters +================== + +To verify that your adapter is supported, find the board ID number on the +adapter. Look for a label that has a barcode and a number in the format +A12345-001. Match this to the list of numbers above. For more information on how to identify your adapter, go to the Adapter & Driver ID Guide at: http://support.intel.com/support/network/adapter/pro100/21397.htm -For the latest Intel network drivers for Linux, refer to the following -website. In the search field, enter your adapter name or type, or use the -networking link on the left to search for your adapter: +For the latest Intel PRO/100 network driver for Linux, see: http://downloadfinder.intel.com/scripts-df/support_intel.asp -Driver Configuration Parameters -=============================== - -The default value for each parameter is generally the recommended setting, -unless otherwise noted. - -Rx Descriptors: Number of receive descriptors. A receive descriptor is a data - structure that describes a receive buffer and its attributes to the network - controller. The data in the descriptor is used by the controller to write - data from the controller to host memory. In the 3.0.x driver the valid - range for this parameter is 64-256. The default value is 64. This parameter - can be changed using the command - - ethtool -G eth? rx n, where n is the number of desired rx descriptors. - -Tx Descriptors: Number of transmit descriptors. A transmit descriptor is a - data structure that describes a transmit buffer and its attributes to the - network controller. The data in the descriptor is used by the controller to - read data from the host memory to the controller. In the 3.0.x driver the - valid range for this parameter is 64-256. The default value is 64. This - parameter can be changed using the command - - ethtool -G eth? tx n, where n is the number of desired tx descriptors. - -Speed/Duplex: The driver auto-negotiates the link speed and duplex settings by - default. Ethtool can be used as follows to force speed/duplex. - - ethtool -s eth? autoneg off speed {10|100} duplex {full|half} - - NOTE: setting the speed/duplex to incorrect values will cause the link to - fail. - -Event Log Message Level: The driver uses the message level flag to log events - to syslog. The message level can be set at driver load time. It can also be - set using the command - - ethtool -s eth? msglvl n - -Additional Configurations -========================= - - Configuring the Driver on Different Distributions - ------------------------------------------------- - - Configuring a network driver to load properly when the system is started is - distribution dependent. Typically, the configuration process involves adding - an alias line to /etc/modules.conf as well as editing other system startup - scripts and/or configuration files. Many popular Linux distributions ship - with tools to make these changes for you. To learn the proper way to - configure a network device for your system, refer to your distribution - documentation. If during this process you are asked for the driver or module - name, the name for the Linux Base Driver for the Intel PRO/100 Family of - Adapters is e100. - - As an example, if you install the e100 driver for two PRO/100 adapters - (eth0 and eth1), add the following to modules.conf: - - alias eth0 e100 - alias eth1 e100 - - Viewing Link Messages - --------------------- - In order to see link messages and other Intel driver information on your - console, you must set the dmesg level up to six. This can be done by - entering the following on the command line before loading the e100 driver: - - dmesg -n 8 - - If you wish to see all messages issued by the driver, including debug - messages, set the dmesg level to eight. - - NOTE: This setting is not saved across reboots. - - Ethtool - ------- - - The driver utilizes the ethtool interface for driver configuration and - diagnostics, as well as displaying statistical information. Ethtool - version 1.6 or later is required for this functionality. - - The latest release of ethtool can be found at: - http://sf.net/projects/gkernel. - - After ethtool is installed, ethtool-copy.h must be copied and renamed to - ethtool.h in your kernel source tree at /include/linux. - Backup the original ethtool.h as needed before copying. The driver then - must be recompiled in order to take advantage of the latest ethtool - features. - - NOTE: This driver uses mii support from the kernel. As a result, when - there is no link, ethtool will report speed/duplex to be 10/half. - - NOTE: Ethtool 1.6 only supports a limited set of ethtool options. Support - for a more complete ethtool feature set can be enabled by upgrading - ethtool to ethtool-1.8.1. - - Enabling Wake on LAN* (WoL) - --------------------------- - WoL is provided through the Ethtool* utility. Ethtool is included with Red - Hat* 8.0. For other Linux distributions, download and install Ethtool from - the following website: http://sourceforge.net/projects/gkernel. - - For instructions on enabling WoL with Ethtool, refer to the Ethtool man - page. - - WoL will be enabled on the system during the next shut down or reboot. For - this driver version, in order to enable WoL, the e100 driver must be - loaded when shutting down or rebooting the system. - - NAPI - ---- - - NAPI (Rx polling mode) is supported in the e100 driver. NAPI is enabled - or disabled based on the configuration of the kernel. - - See www.cyberus.ca/~hadi/usenix-paper.tgz for more information on NAPI. Support ======= diff --git a/Documentation/networking/e1000.txt b/Documentation/networking/e1000.txt index 794c92542..9b2329f99 100644 --- a/Documentation/networking/e1000.txt +++ b/Documentation/networking/e1000.txt @@ -1,14 +1,14 @@ Linux* Base Driver for the Intel(R) PRO/1000 Family of Adapters =============================================================== -September 13, 2004 +January 8, 2003 Contents ======== - In This Release -- Identifying Your Adapter +- Supported Adapters - Command Line Parameters - Speed and Duplex Configuration - Additional Configurations @@ -20,29 +20,63 @@ In This Release =============== This file describes the Linux* Base Driver for the Intel(R) PRO/1000 Family -of Adapters, version 5.x.x. This driver includes support for Itanium(TM)2 -and EM64T systems. +of Adapters, version 5.0.x. This driver includes support for +Itanium(TM)-based systems. -For questions related to hardware requirements, refer to the documentation -supplied with your Intel PRO/1000 adapter. All hardware requirements listed -apply to use with Linux. Native VLANs are now available with supported kernels. -Identifying Your Adapter -======================== + +Supported Adapters +================== + +The following Intel network adapters are compatible with the drivers in this +release: + + Controller Adapter Name Board IDs + ---------- ------------ --------- + + 82542 PRO/1000 Gigabit Server Adapter 700262-xxx, 717037-xxx + + 82543 PRO/1000 F Server Adapter 738640-xxx, A38888-xxx + + 82543 PRO/1000 T Server Adapter A19845-xxx, A33948-xxx + + 82544 PRO/1000 XT Server Adapter A51580-xxx + + 82544 PRO/1000 XF Server Adapter A50484-xxx + + 82544 PRO/1000 T Desktop Adapter A62947-xxx + + 82540 PRO/1000 MT Desktop Adapter A78408-xxx + 82541 C91016-xxx + + 82545 PRO/1000 MT Server Adapter A92165-xxx + + 82546 PRO/1000 MT Dual Port Server Adapter A92111-xxx + + 82545 PRO/1000 MF Server Adapter A91622-xxx + + 82545 PRO/1000 MF Server Adapter(LX) A91624-xxx + + 82546 PRO/1000 MF Dual Port Server Adapter A91620-xxx + + + +To verify your Intel adapter is supported, find the board ID number on the +adapter. Look for a label that has a barcode and a number in the format +A12345-001. Match this to the list of numbers above. For more information on how to identify your adapter, go to the Adapter & Driver ID Guide at: http://support.intel.com/support/network/adapter/pro100/21397.htm -For the latest Intel network drivers for Linux, refer to the following -website. In the search field, enter your adapter name or type, or use the -networking link on the left to search for your adapter: +For the latest Intel network drivers for Linux, refer to the following http://downloadfinder.intel.com/scripts-df/support_intel.asp + Command Line Parameters ======================= @@ -58,39 +92,27 @@ For example, with two PRO/1000 PCI adapters, entering: insmod e1000 TxDescriptors=80,128 -loads the e1000 driver with 80 TX descriptors for the first adapter and 128 TX -descriptors for the second adapter. +loads the e1000 driver with 80 TX resources for the first adapter and 128 TX +resources for the second adapter. The default value for each parameter is generally the recommended setting, -unless otherwise noted. Also, if the driver is statically built into the -kernel, the driver is loaded with the default values for all the parameters. -Ethtool can be used to change some of the parameters at runtime. - - NOTES: For more information about the AutoNeg, Duplex, and Speed - parameters, see the "Speed and Duplex Configuration" section in - this document. +unless otherwise noted. - For more information about the InterruptThrottleRate, RxIntDelay, - TxIntDelay, RxAbsIntDelay, and TxAbsIntDelay parameters, see the - application note at: - http://www.intel.com/design/network/applnots/ap450.htm +For more information about the AutoNeg, Duplex, and Speed parameters, see the +"Speed and Duplex Configuration" section in this document. - A descriptor describes a data buffer and attributes related to the - data buffer. This information is accessed by the hardware. AutoNeg (adapters using copper connections only) Valid Range: 0x01-0x0F, 0x20-0x2F Default Value: 0x2F This parameter is a bit mask that specifies which speed and duplex settings the board advertises. When this parameter is used, the Speed and - Duplex parameters must not be specified. - NOTE: Refer to the Speed and Duplex section of this readme for more - information on the AutoNeg parameter. + Duplex parameters must not be specified. Duplex (adapters using copper connections only) Valid Range: 0-2 (0=auto-negotiate, 1=half, 2=full) Default Value: 0 - Defines the direction in which data is allowed to flow. Can be either one + Defines the direction in which data is allowed to flow. Can by either one or two-directional. If both Duplex and the link partner are set to auto- negotiate, the board auto-detects the correct duplex. If the link partner is forced (either full or half), Duplex defaults to half-duplex. @@ -103,46 +125,22 @@ Default: Read flow control settings from the EEPROM InterruptThrottleRate Valid Range: 100-100000 (0=off, 1=dynamic) -Default Value: 8000 +Default Value: 1 This value represents the maximum number of interrupts per second the controller generates. InterruptThrottleRate is another setting used in interrupt moderation. Dynamic mode uses a heuristic algorithm to adjust InterruptThrottleRate based on the current traffic load. -Un-supported Adapters: InterruptThrottleRate is NOT supported by 82542, 82543 - or 82544-based adapters. NOTE: InterruptThrottleRate takes precedence over the TxAbsIntDelay and RxAbsIntDelay parameters. In other words, minimizing the receive and/or transmit absolute delays does not force the controller to generate more interrupts than what the Interrupt Throttle Rate allows. - CAUTION: If you are using the Intel PRO/1000 CT Network Connection - (controller 82547), setting InterruptThrottleRate to a value - greater than 75,000, may hang (stop transmitting) adapters under - certain network conditions. If this occurs a NETDEV WATCHDOG - message is logged in the system event log. In addition, the - controller is automatically reset, restoring the network - connection. To eliminate the potential for the hang, ensure - that InterruptThrottleRate is set no greater than 75,000 and is - not set to 0. - NOTE: When e1000 is loaded with default settings and multiple adapters are - in use simultaneously, the CPU utilization may increase non-linearly. - In order to limit the CPU utilization without impacting the overall - throughput, we recommend that you load the driver as follows: - - insmod e1000.o InterruptThrottleRate=3000,3000,3000 - - This sets the InterruptThrottleRate to 3000 interrupts/sec for the - first, second, and third instances of the driver. The range of 2000 to - 3000 interrupts per second works on a majority of systems and is a - good starting point, but the optimal value will be platform-specific. - If CPU utilization is not a concern, use RX_POLLING (NAPI) and default - driver settings. RxDescriptors Valid Range: 80-256 for 82542 and 82543-based adapters - 80-4096 for all other supported adapters -Default Value: 256 + 80-4096 for 82540, 82544, 82545, and 82546-based adapters +Default Value: 80 This value is the number of receive descriptors allocated by the driver. Increasing this value allows the driver to buffer more incoming packets. Each descriptor is 16 bytes. A receive buffer is also allocated for each @@ -151,9 +149,6 @@ Default Value: 256 NOTE: MTU designates the frame size. It only needs to be set for Jumbo Frames. - NOTE: Depending on the available system resources, the request for a - higher number of receive descriptors may be denied. In this case, - use a lower number. RxIntDelay Valid Range: 0-65535 (0=off) @@ -173,11 +168,11 @@ Default Value: 0 restoring the network connection. To eliminate the potential for the hang ensure that RxIntDelay is set to 0. -RxAbsIntDelay (82540, 82545 and later adapters only) +RxAbsIntDelay (82540, 82545, and 82546-based adapters only) Valid Range: 0-65535 (0=off) Default Value: 128 This value, in units of 1.024 microseconds, limits the delay in which a - receive interrupt is generated. Useful only if RxIntDelay is non-zero, + transmit interrupt is generated. Useful only if RxIntDelay is non-zero, this value ensures that an interrupt is generated after the initial packet is received within the set amount of time. Proper tuning, along with RxIntDelay, may improve traffic throughput in specific network @@ -193,16 +188,12 @@ Default Value: 0 (auto-negotiate at all supported speeds) TxDescriptors Valid Range: 80-256 for 82542 and 82543-based adapters - 80-4096 for all other supported adapters + 80-4096 for 82540, 82544, 82545, and 82546-based adapters Default Value: 256 This value is the number of transmit descriptors allocated by the driver. Increasing this value allows the driver to queue more transmits. Each descriptor is 16 bytes. - NOTE: Depending on the available system resources, the request for a - higher number of transmit descriptors may be denied. In this case, - use a lower number. - TxIntDelay Valid Range: 0-65535 (0=off) Default Value: 64 @@ -212,7 +203,7 @@ Default Value: 64 system is reporting dropped transmits, this value may be set too high causing the driver to run out of available transmit descriptors. -TxAbsIntDelay (82540, 82545 and later adapters only) +TxAbsIntDelay (82540, 82545, and 82546-based adapters only) Valid Range: 0-65535 (0=off) Default Value: 64 This value, in units of 1.024 microseconds, limits the delay in which a @@ -228,6 +219,7 @@ Default Value: 1 A value of '1' indicates that the driver should enable IP checksum offload for received packets (both UDP and TCP) to the adapter hardware. + Speed and Duplex Configuration ============================== @@ -259,10 +251,6 @@ Bit 7 6 5 4 3 2 1 0 Speed (Mbps) N/A N/A 1000 N/A 100 100 10 10 Duplex Full Full Half Full Half -For example to limit the negotiated speed/duplex on the interface to 10 Mbps -Half or Full duplex, set AutoNeg to 0x02: - insmod e1000 AutoNeg=0x02 - Note that setting AutoNeg does not guarantee that the board will link at the highest specified speed or duplex mode, but the board will link at the highest possible speed/duplex of the link partner IF the link partner is also @@ -273,38 +261,6 @@ adapter MUST be forced to the same speed/duplex. Additional Configurations ========================= - Configuring the Driver on Different Distributions - ------------------------------------------------- - - Configuring a network driver to load properly when the system is started is - distribution dependent. Typically, the configuration process involves adding - an alias line to /etc/modules.conf as well as editing other system startup - scripts and/or configuration files. Many popular Linux distributions ship - with tools to make these changes for you. To learn the proper way to - configure a network device for your system, refer to your distribution - documentation. If during this process you are asked for the driver or module - name, the name for the Linux Base Driver for the Intel PRO/1000 Family of - Adapters is e1000. - - As an example, if you install the e1000 driver for two PRO/1000 adapters - (eth0 and eth1) and set the speed and duplex to 10full and 100half, add the - following to modules.conf: - - alias eth0 e1000 - alias eth1 e1000 - options e1000 Speed=10,100 Duplex=2,1 - - Viewing Link Messages - --------------------- - - Link messages will not be displayed to the console if the distribution is - restricting system messages. In order to see network driver link messages on - your console, set dmesg to eight by entering the following: - - dmesg -n 8 - - NOTE: This setting is not saved across reboots. - Jumbo Frames ------------ @@ -322,51 +278,6 @@ Additional Configurations 10 or 100 Mbps may result in poor performance or loss of link. - NOTE: MTU designates the frame size. To enable Jumbo Frames, increase the - MTU size on the interface beyond 1500. - - Ethtool - ------- - - The driver utilizes the ethtool interface for driver configuration and - diagnostics, as well as displaying statistical information. Ethtool - version 1.6 or later is required for this functionality. - - The latest release of ethtool can be found from - http://sf.net/projects/gkernel. After ethtool is installed, - ethtool-copy.h must be copied and renamed to ethtool.h in your kernel - source tree at /include/linux. Backup the original - ethtool.h as needed before copying. The driver then must be recompiled - in order to take advantage of the latest ethtool features. - - NOTE: Ethtool 1.6 only supports a limited set of ethtool options. Support - for a more complete ethtool feature set can be enabled by upgrading - ethtool to ethtool-1.8.1. - - Enabling Wake on LAN* (WoL) - --------------------------- - - WoL is configured through the Ethtool* utility. Ethtool is included with - all versions of Red Hat after Red Hat 7.2. For other Linux distributions, - download and install Ethtool from the following website: - http://sourceforge.net/projects/gkernel. - - For instructions on enabling WoL with Ethtool, refer to the website listed - above. - - WoL will be enabled on the system during the next shut down or reboot. - For this driver version, in order to enable WoL, the e1000 driver must be - loaded when shutting down or rebooting the system. - - NAPI - ---- - - NAPI (Rx polling mode) is supported in the e1000 driver. NAPI is enabled - or disabled based on the configuration of the kernel. - - See www.cyberus.ca/~hadi/usenix-paper.tgz for more information on NAPI. - - Known Issues ============ @@ -374,9 +285,9 @@ Known Issues ------------------------------- Memory allocation failures have been observed on Linux systems with 64 MB - of RAM or less that are running Jumbo Frames. If you are using Jumbo Frames, - your system may require more than the advertised minimum requirement of 64 MB - of system memory. + of RAM or less that are running Jumbo Frames. If you are using Jumbo + Frames, your system may require more than the advertised minimum + requirement of 64 MB of system memory. Support diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt index a2c893a74..c9ead70d5 100644 --- a/Documentation/networking/ip-sysctl.txt +++ b/Documentation/networking/ip-sysctl.txt @@ -355,12 +355,6 @@ tcp_default_win_scale - INTEGER conections. Default: 7 -tcp_tso_win_divisor - INTEGER - This allows control over what percentage of the congestion window - can be consumed by a single TSO frame. - The setting of this parameter is a choice between burstiness and - building larger TSO frames. - Default: 8 tcp_frto - BOOLEAN Enables F-RTO, an enhanced recovery algorithm for TCP retransmission diff --git a/Documentation/networking/ixgb.txt b/Documentation/networking/ixgb.txt index c62d588ed..993090c41 100644 --- a/Documentation/networking/ixgb.txt +++ b/Documentation/networking/ixgb.txt @@ -1,14 +1,14 @@ Linux* Base Driver for the Intel(R) PRO/10GbE Family of Adapters ================================================================ -September 13, 2004 +January 06, 2003 Contents ======== - In This Release -- Identifying Your Adapter +- Supported Adapters - Command Line Parameters - Improving Performance - Support @@ -18,23 +18,36 @@ In This Release =============== This file describes the Linux* Base Driver for the Intel(R) PRO/10GbE Family -of Adapters, version 1.0.x. This driver includes support for Itanium(TM)2 and -EM64T systems. +of Adapters, version 1.0.x. This driver is intended for 2.4.x kernels; it is +known to build properly on 2.4.x kernels through 2.4.18. Intel focused +testing on Intel architectures running kernels 2.4.18. This driver includes +support for Itanium(TM)-based systems. For questions related to hardware requirements, refer to the documentation supplied with your Intel PRO/10GbE adapter. All hardware requirements listed apply to use with Linux. -Identifying Your Adapter -======================== + +Supported Adapters +================== + +The following Intel network adapters are compatible with the drivers in this +release: + + Controller Adapter Name Board IDs + ---------- ------------ --------- + + 82597EX Intel(R) PRO/10GbE LR Server Adapter A82505-xxx + To verify your Intel adapter is supported, find the board ID number on the adapter. Look for a label that has a barcode and a number in the format -A12345-001. +A12345-001. Match this to the list of numbers above. -Use the above information and the Adapter & Driver ID Guide at: +For more information on how to identify your adapter, go to the Adapter & +Driver ID Guide at: - http://support.intel.com/support/network/adapter/pro100/21397.htm + http://support.intel.com/support/network/adapter/pro100/21397.htm For the latest Intel network drivers for Linux, go to: @@ -59,9 +72,8 @@ loads the ixgb driver with 80 TX resources for the first adapter and 128 TX resources for the second adapter. The default value for each parameter is generally the recommended setting, -unless otherwise noted. Also, if the driver is statically built into the -kernel, the driver is loaded with the default values for all the parameters. -Ethtool can be used to change some of the parameters at runtime. +unless otherwise noted. + FlowControl Valid Range: 0-3 (0=none, 1=Rx only, 2=Tx only, 3=Rx&Tx) @@ -113,6 +125,7 @@ Default Value: 1 offload for transmitted packets (both UDP and TCP) to the adapter hardware. + Improving Performance ===================== diff --git a/Documentation/networking/proc_net_tcp.txt b/Documentation/networking/proc_net_tcp.txt deleted file mode 100644 index 59cb915c3..000000000 --- a/Documentation/networking/proc_net_tcp.txt +++ /dev/null @@ -1,47 +0,0 @@ -This document describes the interfaces /proc/net/tcp and /proc/net/tcp6. - -These /proc interfaces provide information about currently active TCP -connections, and are implemented by tcp_get_info() in net/ipv4/tcp_ipv4.c and -tcp6_get_info() in net/ipv6/tcp_ipv6.c, respectively. - -It will first list all listening TCP sockets, and next list all established -TCP connections. A typical entry of /proc/net/tcp would look like this (split -up into 3 parts because of the length of the line): - - 46: 010310AC:9C4C 030310AC:1770 01 - | | | | | |--> connection state - | | | | |------> remote TCP port number - | | | |-------------> remote IPv4 address - | | |--------------------> local TCP port number - | |---------------------------> local IPv4 address - |----------------------------------> number of entry - - 00000150:00000000 01:00000019 00000000 - | | | | |--> number of unrecovered RTO timeouts - | | | |----------> number of jiffies until timer expires - | | |----------------> timer_active (see below) - | |----------------------> receive-queue - |-------------------------------> transmit-queue - - 1000 0 54165785 4 cd1e6040 25 4 27 3 -1 - | | | | | | | | | |--> slow start size threshold, - | | | | | | | | | or -1 if the treshold - | | | | | | | | | is >= 0xFFFF - | | | | | | | | |----> sending congestion window - | | | | | | | |-------> (ack.quick<<1)|ack.pingpong - | | | | | | |---------> Predicted tick of soft clock - | | | | | | (delayed ACK control data) - | | | | | |------------> retransmit timeout - | | | | |------------------> location of socket in memory - | | | |-----------------------> socket reference count - | | |-----------------------------> inode - | |----------------------------------> unanswered 0-window probes - |---------------------------------------------> uid - -timer_active: - 0 no timer is pending - 1 retransmit-timer is pending - 2 another timer (e.g. delayed ack or keepalive) is pending - 3 this is a socket in TIME_WAIT state. Not all fields will contain - data (or even exist) - 4 zero window probe timer is pending diff --git a/Documentation/nmi_watchdog.txt b/Documentation/nmi_watchdog.txt index c025a4561..6cad46e8a 100644 --- a/Documentation/nmi_watchdog.txt +++ b/Documentation/nmi_watchdog.txt @@ -54,20 +54,6 @@ then the system has crashed so hard (eg. hardware-wise) that either it cannot even accept NMI interrupts, or the crash has made the kernel unable to print messages. -Be aware that when using local APIC, the frequency of NMI interrupts -it generates, depends on the system load. The local APIC NMI watchdog, -lacking a better source, uses the "cycles unhalted" event. As you may -guess it doesn't tick when the CPU is in the halted state (which happens -when the system is idle), but if your system locks up on anything but the -"hlt" processor instruction, the watchdog will trigger very soon as the -"cycles unhalted" event will happen every clock tick. If it locks up on -"hlt", then you are out of luck -- the event will not happen at all and the -watchdog won't trigger. This is a shortcoming of the local APIC watchdog --- unfortunately there is no "clock ticks" event that would work all the -time. The I/O APIC watchdog is driven externally and has no such shortcoming. -But its NMI frequency is much higher, resulting in a more significant hit -to the overall system performance. - NOTE: starting with 2.4.2-ac18 the NMI-oopser is disabled by default, you have to enable it with a boot time parameter. Prior to 2.4.2-ac18 the NMI-oopser is enabled unconditionally on x86 SMP boxes. diff --git a/Documentation/parisc/registers b/Documentation/parisc/registers index dd3caddd1..08b9f558d 100644 --- a/Documentation/parisc/registers +++ b/Documentation/parisc/registers @@ -35,8 +35,8 @@ CR31 (TR 7) Temporary register, used in various places SR0 temporary space register SR4-SR7 set to 0 SR1 temporary space register -SR2 kernel should not clobber this -SR3 used for userspace accesses (current process) +SR2 unused +SR3 used for userspace accesses (current process)* Space Registers (user mode) @@ -78,8 +78,13 @@ Shadow Registers used by interruption handler code TOC enable bit 1 ========================================================================= -Register usage notes, originally from John Marvin, with some additional -notes from Randolph Chung. +Info from John Marvin: + +From: "John Marvin" +To: randolf@tausq.org +Subject: Re: parisc asm questions + +[...] For the general registers: @@ -106,10 +111,9 @@ that you should be aware of: don't care about the values that were passed in anymore. r28,r29: are ret0 and ret1. They are what you pass return values - in. r28 is the primary return. When returning small structures - r29 may also be used to pass data back to the caller. - - r30: stack pointer + in. r28 is the primary return. I'm not sure I remember + under what circumstances stuff is returned in r29 (millicode + perhaps). r31: the ble instruction puts the return pointer in here. @@ -119,3 +123,6 @@ r3-r18,r27,r30 need to be saved and restored. r3-r18 are just used to make references to global variables easier. r30 is the stack pointer. +John + + diff --git a/Documentation/pci.txt b/Documentation/pci.txt index b0676d114..a1a2bd557 100644 --- a/Documentation/pci.txt +++ b/Documentation/pci.txt @@ -141,24 +141,26 @@ for PCI devices manually using the following constructs: Searching by vendor and device ID: struct pci_dev *dev = NULL; - while (dev = pci_get_device(VENDOR_ID, DEVICE_ID, dev)) + while (dev = pci_find_device(VENDOR_ID, DEVICE_ID, dev)) configure_device(dev); Searching by class ID (iterate in a similar way): - pci_get_class(CLASS_ID, dev) + pci_find_class(CLASS_ID, dev) Searching by both vendor/device and subsystem vendor/device ID: - pci_get_subsys(VENDOR_ID, DEVICE_ID, SUBSYS_VENDOR_ID, SUBSYS_DEVICE_ID, dev). + pci_find_subsys(VENDOR_ID, DEVICE_ID, SUBSYS_VENDOR_ID, SUBSYS_DEVICE_ID, dev). You can use the constant PCI_ANY_ID as a wildcard replacement for VENDOR_ID or DEVICE_ID. This allows searching for any device from a specific vendor, for example. - These functions are hotplug-safe. They increment the reference count on -the pci_dev that they return. You must eventually (possibly at module unload) -decrement the reference count on these devices by calling pci_dev_put(). +Note that these functions are not hotplug-safe. Their hotplug-safe +replacements are pci_get_device(), pci_get_class() and pci_get_subsys(). +They increment the reference count on the pci_dev that they return. +You must eventually (possibly at module unload) decrement the reference +count on these devices by calling pci_dev_put(). 3. Enabling and disabling devices @@ -273,12 +275,11 @@ pci_present() of PCI subsystem when trying to talk to it. devices just return NULL. pcibios_(read|write)_* Superseded by their pci_(read|write)_* counterparts. -pcibios_find_* Superseded by their pci_get_* counterparts. -pci_for_each_dev() Superseded by pci_get_device() +pcibios_find_* Superseded by their pci_find_* counterparts. +pci_for_each_dev() Superseded by pci_find_device() pci_for_each_dev_reverse() Superseded by pci_find_device_reverse() pci_for_each_bus() Superseded by pci_find_next_bus() pci_find_device() Superseded by pci_get_device() pci_find_subsys() Superseded by pci_get_subsys() -pcibios_find_class() Superseded by pci_get_class() -pci_find_class() Superseded by pci_get_class() +pcibios_find_class() Superseded by pci_find_class() pci_(read|write)_*_nodev() Superseded by pci_bus_(read|write)_*() diff --git a/Documentation/pm.txt b/Documentation/pm.txt index 008ac7d2d..483d2a5d1 100644 --- a/Documentation/pm.txt +++ b/Documentation/pm.txt @@ -36,8 +36,8 @@ system the associated daemon will exit gracefully. apmd: http://worldvisions.ca/~apenwarr/apmd/ acpid: http://acpid.sf.net/ -Driver Interface -- OBSOLETE, DO NOT USE! -----------------************************* +Driver Interface +---------------- If you are writing a new driver or maintaining an old driver, it should include power management support. Without power management support, a single driver may prevent a system with power management @@ -262,8 +262,8 @@ Q: Who do I contact for additional information about ACPI Development mailing list: acpi-devel@lists.sourceforge.net -System Interface -- OBSOLETE, DO NOT USE! -----------------************************* +System Interface +---------------- If you are providing new power management support to Linux (ie. adding support for something like APM or ACPI), you should communicate with drivers through the existing generic power diff --git a/Documentation/power/kernel_threads.txt b/Documentation/power/kernel_threads.txt deleted file mode 100644 index 60b548105..000000000 --- a/Documentation/power/kernel_threads.txt +++ /dev/null @@ -1,41 +0,0 @@ -KERNEL THREADS - - -Freezer - -Upon entering a suspended state the system will freeze all -tasks. This is done by delivering pseudosignals. This affects -kernel threads, too. To successfully freeze a kernel thread -the thread has to check for the pseudosignal and enter the -refrigerator. Code to do this looks like this: - - do { - hub_events(); - wait_event_interruptible(khubd_wait, !list_empty(&hub_event_list)); - if (current->flags & PF_FREEZE) - refrigerator(PF_FREEZE); - } while (!signal_pending(current)); - -from drivers/usb/core/hub.c::hub_thread() - - -The Unfreezable - -Some kernel threads however, must not be frozen. The kernel must -be able to finish pending IO operations and later on be able to -write the memory image to disk. Kernel threads needed to do IO -must stay awake. Such threads must mark themselves unfreezable -like this: - - /* - * This thread doesn't need any user-level access, - * so get rid of all our resources. - */ - daemonize("usb-storage"); - - current->flags |= PF_NOFREEZE; - -from drivers/usb/storage/usb.c::usb_stor_control_thread() - -Such drivers are themselves responsible for staying quiet during -the actual snapshotting. diff --git a/Documentation/power/pci.txt b/Documentation/power/pci.txt index c85428e7a..972c7c74b 100644 --- a/Documentation/power/pci.txt +++ b/Documentation/power/pci.txt @@ -5,7 +5,6 @@ PCI Power Management An overview of the concepts and the related functions in the Linux kernel Patrick Mochel -(and others) --------------------------------------------------------------------------- @@ -32,15 +31,10 @@ The PCI PM spec defines 4 operating states for devices (D0 - D3) and for buses the higher the number, the longer the latency is for the device to return to an operational state (D0). -There are actually two D3 states. When someone talks about D3, they usually -mean D3hot, which corresponds to an ACPI D2 state (power is reduced, the -device may lose some context). But they may also mean D3cold, which is an -ACPI D3 state (power is fully off, all state was discarded); or both. - Bus power management is not covered in this version of this document. -Note that all PCI devices support D0 and D3cold by default, regardless of -whether or not they implement any of the PCI PM spec. +Note that all PCI devices support D0 and D3 by default, regardless of whether or +not they implement any of the PCI PM spec. The possible state transitions that a device can undergo are: @@ -210,16 +204,15 @@ if (dev->driver && dev->driver->suspend) dev->driver->suspend(dev,state); A driver uses this function to actually transition the device into a low power -state. This should include disabling I/O, IRQs, and bus-mastering, as well as -physically transitioning the device to a lower power state; it may also include -calls to pci_enable_wake(). +state. This may include disabling I/O, memory and bus-mastering, as well as +physically transitioning the device to a lower power state. Bus mastering may be disabled by doing: pci_disable_device(dev); For devices that support the PCI PM Spec, this may be used to set the device's -power state to match the suspend() parameter: +power state: pci_set_power_state(dev,state); @@ -230,7 +223,7 @@ The driver should be sure to track the current state of the device, as it may obviate the need for some operations. The driver should update the current_state field in its pci_dev structure in -this function, except for PM-capable devices when pci_set_power_state is used. +this function. resume ------ @@ -244,28 +237,16 @@ The resume callback may be called from any power state, and is always meant to transition the device to the D0 state. The driver is responsible for reenabling any features of the device that had -been disabled during previous suspend calls, such as IRQs and bus mastering, -as well as calling pci_restore_state(). - -If the device is currently in D3, it may need to be reinitialized in resume(). - - * Some types of devices, like bus controllers, will preserve context in D3hot - (using Vcc power). Their drivers will often want to avoid re-initializing - them after re-entering D0 (perhaps to avoid resetting downstream devices). - - * Other kinds of devices in D3hot will discard device context as part of a - soft reset when re-entering the D0 state. - - * Devices resuming from D3cold always go through a power-on reset. Some - device context can also be preserved using Vaux power. - - * Some systems hide D3cold resume paths from drivers. For example, on PCs - the resume path for suspend-to-disk often runs BIOS powerup code, which - will sometimes re-initialize the device. +been disabled during previous suspend calls and restoring all state that was +saved in previous save_state calls. -To handle resets during D3 to D0 transitions, it may be convenient to share -device initialization code between probe() and resume(). Device parameters -can also be saved before the driver suspends into D3, avoiding re-probe. +If the device is currently in D3, it must be completely reinitialized, as it +must be assumed that the device has lost all of its context (even that of its +PCI config space). For almost all current drivers, this means that the +initialization code that the driver does at boot must be separated out and +called again from the resume callback. Note that some values for the device may +not have to be probed for this time around if they are saved before entering the +low power state. If the device supports the PCI PM Spec, it can use this to physically transition the device to D0: @@ -282,7 +263,7 @@ The driver should take note of the state that it is resuming from in order to ensure correct (and speedy) operation. The driver should update the current_state field in its pci_dev structure in -this function, except for PM-capable devices when pci_set_power_state is used. +this function. enable_wake diff --git a/Documentation/power/swsusp.txt b/Documentation/power/swsusp.txt index 3b7172df0..cbbbc9c07 100644 --- a/Documentation/power/swsusp.txt +++ b/Documentation/power/swsusp.txt @@ -15,18 +15,10 @@ From kernel/suspend.c: * If you change kernel command line between suspend and resume... * ...prepare for nasty fsck or worse. * - * (*) suspend/resume support is needed to make it safe. + * (*) pm interface support is needed to make it safe. You need to append resume=/dev/your_swap_partition to kernel command -line. Then you suspend by - -echo shutdown > /sys/power/disk; echo disk > /sys/power/state - -. If you feel ACPI works pretty well on your system, you might try - -echo platform > /sys/power/disk; echo disk > /sys/power/state - - +line. Then you suspend by echo 4 > /proc/acpi/sleep. Article about goals and implementation of Software Suspend for Linux ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -40,24 +32,42 @@ saves the state of the machine to a filesystem or to a partition and switches to standby mode. Later resuming the machine the saved state is loaded back to ram and the machine can continue its work. It has two real benefits. First we save ourselves the time machine goes down and later boots up, energy costs -are real high when running from batteries. The other gain is that we don't have to +real high when running from batteries. The other gain is that we don't have to interrupt our programs so processes that are calculating something for a long time shouldn't need to be written interruptible. -swsusp saves the state of the machine into active swaps and then reboots or -powerdowns. You must explicitly specify the swap partition to resume from with +Using the code + +You have two ways to use this code. The first one is is with a patched +SysVinit (my patch is against 2.76 and available at my home page). You +might call 'swsusp' or 'shutdown -z