From 1da177e4c3f41524e886b7f1b8a0c1fc7321cac2 Mon Sep 17 00:00:00 2001 From: Linus Torvalds Date: Sat, 16 Apr 2005 15:20:36 -0700 Subject: [PATCH] Linux-2.6.12-rc2 Initial git repository build. I'm not bothering with the full history, even though we have it. We can create a separate "historical" git archive of that later if we want to, and in the meantime it's about 3.2GB when imported into git - space that would just make the early git days unnecessarily complicated, when we don't have a lot of good infrastructure for it. Let it rip! --- COPYING | 356 + CREDITS | 3743 +++ Documentation/00-INDEX | 294 + Documentation/BK-usage/00-INDEX | 51 + Documentation/BK-usage/bk-kernel-howto.txt | 283 + Documentation/BK-usage/bk-make-sum | 34 + Documentation/BK-usage/bksend | 36 + Documentation/BK-usage/bz64wrap | 41 + Documentation/BK-usage/cpcset | 36 + Documentation/BK-usage/cset-to-linus | 49 + Documentation/BK-usage/csets-to-patches | 44 + Documentation/BK-usage/gcapatch | 8 + Documentation/BK-usage/unbz64wrap | 25 + Documentation/BUG-HUNTING | 92 + Documentation/Changes | 410 + Documentation/CodingStyle | 431 + Documentation/DMA-API.txt | 526 + Documentation/DMA-mapping.txt | 881 + Documentation/DocBook/Makefile | 195 + Documentation/DocBook/deviceiobook.tmpl | 341 + Documentation/DocBook/gadget.tmpl | 752 + Documentation/DocBook/journal-api.tmpl | 333 + Documentation/DocBook/kernel-api.tmpl | 342 + Documentation/DocBook/kernel-hacking.tmpl | 1349 + Documentation/DocBook/kernel-locking.tmpl | 2088 ++ Documentation/DocBook/libata.tmpl | 282 + Documentation/DocBook/librs.tmpl | 289 + Documentation/DocBook/lsm.tmpl | 265 + Documentation/DocBook/man/Makefile | 3 + Documentation/DocBook/mcabook.tmpl | 107 + Documentation/DocBook/mtdnand.tmpl | 1320 + Documentation/DocBook/procfs-guide.tmpl | 591 + Documentation/DocBook/procfs_example.c | 224 + Documentation/DocBook/scsidrivers.tmpl | 193 + Documentation/DocBook/sis900.tmpl | 585 + Documentation/DocBook/tulip-user.tmpl | 327 + Documentation/DocBook/usb.tmpl | 979 + Documentation/DocBook/via-audio.tmpl | 597 + Documentation/DocBook/videobook.tmpl | 1663 ++ Documentation/DocBook/wanbook.tmpl | 99 + Documentation/DocBook/writing_usb_driver.tmpl | 419 + Documentation/DocBook/z8530book.tmpl | 385 + Documentation/IO-mapping.txt | 208 + Documentation/IPMI.txt | 534 + Documentation/IRQ-affinity.txt | 37 + Documentation/MSI-HOWTO.txt | 503 + Documentation/ManagementStyle | 276 + Documentation/PCIEBUS-HOWTO.txt | 217 + Documentation/RCU/RTFP.txt | 387 + Documentation/RCU/UP.txt | 64 + Documentation/RCU/arrayRCU.txt | 141 + Documentation/RCU/checklist.txt | 157 + Documentation/RCU/listRCU.txt | 307 + Documentation/RCU/rcu.txt | 67 + Documentation/README.DAC960 | 756 + Documentation/README.cycladesZ | 8 + Documentation/SAK.txt | 88 + Documentation/SecurityBugs | 38 + Documentation/SubmittingDrivers | 145 + Documentation/SubmittingPatches | 374 + Documentation/VGA-softcursor.txt | 39 + Documentation/aoe/aoe.txt | 91 + Documentation/aoe/autoload.sh | 17 + Documentation/aoe/mkdevs.sh | 36 + Documentation/aoe/mkshelf.sh | 25 + Documentation/aoe/status.sh | 31 + Documentation/aoe/udev-install.sh | 26 + Documentation/aoe/udev.txt | 23 + Documentation/arm/00-INDEX | 20 + Documentation/arm/Booting | 141 + Documentation/arm/IXP2000 | 69 + Documentation/arm/IXP4xx | 174 + Documentation/arm/Interrupts | 173 + Documentation/arm/Netwinder | 78 + Documentation/arm/Porting | 135 + Documentation/arm/README | 198 + Documentation/arm/SA1100/ADSBitsy | 43 + Documentation/arm/SA1100/Assabet | 301 + Documentation/arm/SA1100/Brutus | 66 + Documentation/arm/SA1100/CERF | 29 + Documentation/arm/SA1100/FreeBird | 21 + Documentation/arm/SA1100/GraphicsClient | 98 + Documentation/arm/SA1100/GraphicsMaster | 53 + Documentation/arm/SA1100/HUW_WEBPANEL | 17 + Documentation/arm/SA1100/Itsy | 39 + Documentation/arm/SA1100/LART | 14 + Documentation/arm/SA1100/PLEB | 11 + Documentation/arm/SA1100/Pangolin | 23 + Documentation/arm/SA1100/Tifon | 7 + Documentation/arm/SA1100/Victor | 16 + Documentation/arm/SA1100/Yopy | 2 + Documentation/arm/SA1100/empeg | 2 + Documentation/arm/SA1100/nanoEngine | 11 + Documentation/arm/SA1100/serial_UART | 47 + .../arm/Samsung-S3C24XX/EB2410ITX.txt | 58 + Documentation/arm/Samsung-S3C24XX/GPIO.txt | 122 + Documentation/arm/Samsung-S3C24XX/H1940.txt | 40 + .../arm/Samsung-S3C24XX/Overview.txt | 156 + .../arm/Samsung-S3C24XX/SMDK2440.txt | 56 + Documentation/arm/Samsung-S3C24XX/Suspend.txt | 106 + Documentation/arm/Setup | 129 + Documentation/arm/Sharp-LH/CompactFlash | 32 + Documentation/arm/Sharp-LH/IOBarrier | 45 + Documentation/arm/Sharp-LH/KEV7A400 | 8 + Documentation/arm/Sharp-LH/LPD7A400 | 15 + Documentation/arm/Sharp-LH/LPD7A40X | 16 + Documentation/arm/Sharp-LH/SDRAM | 51 + .../arm/Sharp-LH/VectoredInterruptController | 80 + Documentation/arm/VFP/release-notes.txt | 55 + Documentation/arm/empeg/README | 13 + Documentation/arm/empeg/ir.txt | 49 + Documentation/arm/empeg/mkdevs | 11 + Documentation/arm/mem_alignment | 58 + Documentation/arm/memory.txt | 72 + Documentation/arm/nwfpe/NOTES | 29 + Documentation/arm/nwfpe/README | 70 + Documentation/arm/nwfpe/README.FPE | 156 + Documentation/arm/nwfpe/TODO | 67 + Documentation/atomic_ops.txt | 456 + Documentation/basic_profiling.txt | 52 + Documentation/binfmt_misc.txt | 116 + Documentation/block/as-iosched.txt | 165 + Documentation/block/biodoc.txt | 1213 + Documentation/block/deadline-iosched.txt | 78 + Documentation/block/request.txt | 88 + Documentation/cachetlb.txt | 384 + Documentation/cciss.txt | 132 + Documentation/cdrom/00-INDEX | 33 + Documentation/cdrom/Makefile | 21 + Documentation/cdrom/aztcd | 822 + Documentation/cdrom/cdrom-standard.tex | 1022 + Documentation/cdrom/cdu31a | 196 + Documentation/cdrom/cm206 | 185 + Documentation/cdrom/gscd | 60 + Documentation/cdrom/ide-cd | 574 + Documentation/cdrom/isp16 | 100 + Documentation/cdrom/mcdx | 29 + Documentation/cdrom/optcd | 57 + Documentation/cdrom/packet-writing.txt | 97 + Documentation/cdrom/sbpcd | 1057 + Documentation/cdrom/sjcd | 60 + Documentation/cdrom/sonycd535 | 121 + Documentation/cli-sti-removal.txt | 133 + Documentation/computone.txt | 588 + Documentation/cpqarray.txt | 93 + Documentation/cpu-freq/amd-powernow.txt | 38 + Documentation/cpu-freq/core.txt | 98 + Documentation/cpu-freq/cpu-drivers.txt | 216 + Documentation/cpu-freq/cpufreq-nforce2.txt | 19 + Documentation/cpu-freq/governors.txt | 155 + Documentation/cpu-freq/index.txt | 56 + Documentation/cpu-freq/user-guide.txt | 185 + Documentation/cpusets.txt | 415 + Documentation/cris/README | 195 + Documentation/crypto/api-intro.txt | 244 + Documentation/crypto/descore-readme.txt | 352 + Documentation/debugging-modules.txt | 18 + Documentation/device-mapper/dm-io.txt | 75 + Documentation/device-mapper/kcopyd.txt | 47 + Documentation/device-mapper/linear.txt | 61 + Documentation/device-mapper/striped.txt | 58 + Documentation/device-mapper/zero.txt | 37 + Documentation/devices.txt | 3216 ++ Documentation/digiepca.txt | 98 + Documentation/dnotify.txt | 99 + Documentation/driver-model/binding.txt | 102 + Documentation/driver-model/bus.txt | 160 + Documentation/driver-model/class.txt | 162 + Documentation/driver-model/device.txt | 154 + Documentation/driver-model/driver.txt | 287 + Documentation/driver-model/interface.txt | 129 + Documentation/driver-model/overview.txt | 114 + Documentation/driver-model/platform.txt | 99 + Documentation/driver-model/porting.txt | 445 + Documentation/dvb/README.dibusb | 285 + Documentation/dvb/avermedia.txt | 304 + Documentation/dvb/bt8xx.txt | 90 + Documentation/dvb/cards.txt | 85 + Documentation/dvb/contributors.txt | 79 + Documentation/dvb/faq.txt | 160 + Documentation/dvb/get_dvb_firmware | 397 + Documentation/dvb/readme.txt | 52 + Documentation/dvb/ttusb-dec.txt | 44 + Documentation/dvb/udev.txt | 46 + Documentation/early-userspace/README | 152 + .../early-userspace/buffer-format.txt | 112 + Documentation/eisa.txt | 203 + Documentation/exception.txt | 292 + Documentation/fb/00-INDEX | 25 + Documentation/fb/aty128fb.txt | 72 + Documentation/fb/cirrusfb.txt | 97 + Documentation/fb/framebuffer.txt | 345 + Documentation/fb/intel810.txt | 272 + Documentation/fb/internals.txt | 82 + Documentation/fb/matroxfb.txt | 415 + Documentation/fb/modedb.txt | 61 + Documentation/fb/pvr2fb.txt | 61 + Documentation/fb/pxafb.txt | 54 + Documentation/fb/sa1100fb.txt | 39 + Documentation/fb/sisfb.txt | 158 + Documentation/fb/sstfb.txt | 174 + Documentation/fb/tgafb.txt | 69 + Documentation/fb/tridentfb.txt | 54 + Documentation/fb/vesafb.txt | 167 + Documentation/feature-removal-schedule.txt | 42 + Documentation/filesystems/00-INDEX | 50 + Documentation/filesystems/Exporting | 176 + Documentation/filesystems/Locking | 515 + Documentation/filesystems/adfs.txt | 57 + Documentation/filesystems/affs.txt | 219 + Documentation/filesystems/afs.txt | 155 + .../filesystems/automount-support.txt | 118 + Documentation/filesystems/befs.txt | 117 + Documentation/filesystems/bfs.txt | 57 + Documentation/filesystems/cifs.txt | 51 + Documentation/filesystems/coda.txt | 1673 ++ Documentation/filesystems/cramfs.txt | 76 + Documentation/filesystems/devfs/ChangeLog | 1977 ++ Documentation/filesystems/devfs/README | 1964 ++ Documentation/filesystems/devfs/ToDo | 40 + Documentation/filesystems/devfs/boot-options | 65 + Documentation/filesystems/directory-locking | 113 + Documentation/filesystems/ext2.txt | 383 + Documentation/filesystems/ext3.txt | 183 + Documentation/filesystems/hfs.txt | 83 + Documentation/filesystems/hpfs.txt | 296 + Documentation/filesystems/isofs.txt | 38 + Documentation/filesystems/jfs.txt | 35 + Documentation/filesystems/ncpfs.txt | 12 + Documentation/filesystems/ntfs.txt | 630 + Documentation/filesystems/porting | 266 + Documentation/filesystems/proc.txt | 1940 ++ Documentation/filesystems/romfs.txt | 187 + Documentation/filesystems/smbfs.txt | 8 + Documentation/filesystems/sysfs-pci.txt | 88 + Documentation/filesystems/sysfs.txt | 341 + Documentation/filesystems/sysv-fs.txt | 38 + Documentation/filesystems/tmpfs.txt | 100 + Documentation/filesystems/udf.txt | 57 + Documentation/filesystems/ufs.txt | 61 + Documentation/filesystems/vfat.txt | 231 + Documentation/filesystems/vfs.txt | 671 + Documentation/filesystems/xfs.txt | 188 + Documentation/firmware_class/README | 124 + .../firmware_class/firmware_sample_driver.c | 126 + .../firmware_sample_firmware_class.c | 204 + Documentation/firmware_class/hotplug-script | 16 + Documentation/floppy.txt | 245 + Documentation/ftape.txt | 307 + Documentation/fujitsu/frv/README.txt | 51 + Documentation/fujitsu/frv/atomic-ops.txt | 134 + Documentation/fujitsu/frv/booting.txt | 181 + Documentation/fujitsu/frv/clock.txt | 65 + Documentation/fujitsu/frv/configuring.txt | 125 + Documentation/fujitsu/frv/features.txt | 310 + Documentation/fujitsu/frv/gdbinit | 102 + Documentation/fujitsu/frv/gdbstub.txt | 130 + Documentation/fujitsu/frv/mmu-layout.txt | 306 + Documentation/hayes-esp.txt | 154 + Documentation/highuid.txt | 79 + Documentation/hpet.txt | 298 + Documentation/hw_random.txt | 69 + Documentation/i2c/busses/i2c-ali1535 | 42 + Documentation/i2c/busses/i2c-ali1563 | 27 + Documentation/i2c/busses/i2c-ali15x3 | 112 + Documentation/i2c/busses/i2c-amd756 | 25 + Documentation/i2c/busses/i2c-amd8111 | 41 + Documentation/i2c/busses/i2c-i801 | 80 + Documentation/i2c/busses/i2c-i810 | 46 + Documentation/i2c/busses/i2c-nforce2 | 41 + Documentation/i2c/busses/i2c-parport | 154 + Documentation/i2c/busses/i2c-parport-light | 11 + Documentation/i2c/busses/i2c-pca-isa | 23 + Documentation/i2c/busses/i2c-piix4 | 72 + Documentation/i2c/busses/i2c-prosavage | 23 + Documentation/i2c/busses/i2c-savage4 | 26 + Documentation/i2c/busses/i2c-sis5595 | 59 + Documentation/i2c/busses/i2c-sis630 | 49 + Documentation/i2c/busses/i2c-sis69x | 73 + Documentation/i2c/busses/i2c-via | 34 + Documentation/i2c/busses/i2c-viapro | 47 + Documentation/i2c/busses/i2c-voodoo3 | 62 + Documentation/i2c/busses/scx200_acb | 14 + Documentation/i2c/chips/smsc47b397.txt | 146 + Documentation/i2c/dev-interface | 146 + Documentation/i2c/functionality | 135 + Documentation/i2c/i2c-protocol | 76 + Documentation/i2c/i2c-stub | 38 + Documentation/i2c/porting-clients | 133 + Documentation/i2c/smbus-protocol | 216 + Documentation/i2c/summary | 75 + Documentation/i2c/sysfs-interface | 274 + Documentation/i2c/ten-bit-addresses | 22 + Documentation/i2c/writing-clients | 816 + Documentation/i2o/README | 63 + Documentation/i2o/ioctl | 394 + Documentation/i386/IO-APIC.txt | 117 + Documentation/i386/boot.txt | 441 + Documentation/i386/usb-legacy-support.txt | 44 + Documentation/i386/zero-page.txt | 84 + Documentation/ia64/IRQ-redir.txt | 69 + Documentation/ia64/README | 43 + Documentation/ia64/efirtc.txt | 128 + Documentation/ia64/fsys.txt | 286 + Documentation/ia64/serial.txt | 144 + Documentation/ibm-acpi.txt | 474 + Documentation/ide.txt | 394 + Documentation/infiniband/ipoib.txt | 56 + Documentation/infiniband/sysfs.txt | 66 + Documentation/infiniband/user_mad.txt | 99 + Documentation/initrd.txt | 340 + Documentation/input/amijoy.txt | 184 + Documentation/input/atarikbd.txt | 709 + Documentation/input/cd32.txt | 19 + Documentation/input/cs461x.txt | 45 + Documentation/input/ff.txt | 227 + Documentation/input/gameport-programming.txt | 189 + Documentation/input/iforce-protocol.txt | 254 + Documentation/input/input-programming.txt | 281 + Documentation/input/input.txt | 312 + Documentation/input/interactive.fig | 42 + Documentation/input/joystick-api.txt | 316 + Documentation/input/joystick-parport.txt | 542 + Documentation/input/joystick.txt | 588 + Documentation/input/shape.fig | 65 + Documentation/input/xpad.txt | 116 + Documentation/io_ordering.txt | 47 + Documentation/ioctl-number.txt | 196 + Documentation/ioctl/cdrom.txt | 966 + Documentation/ioctl/hdio.txt | 1070 + Documentation/iostats.txt | 150 + Documentation/isapnp.txt | 14 + Documentation/isdn/00-INDEX | 43 + Documentation/isdn/CREDITS | 70 + Documentation/isdn/HiSax.cert | 96 + Documentation/isdn/INTERFACE | 759 + Documentation/isdn/INTERFACE.fax | 163 + Documentation/isdn/README | 599 + Documentation/isdn/README.FAQ | 26 + Documentation/isdn/README.HiSax | 659 + Documentation/isdn/README.act2000 | 104 + Documentation/isdn/README.audio | 138 + Documentation/isdn/README.avmb1 | 187 + Documentation/isdn/README.concap | 259 + Documentation/isdn/README.diversion | 127 + Documentation/isdn/README.fax | 45 + Documentation/isdn/README.hfc-pci | 41 + Documentation/isdn/README.hysdn | 195 + Documentation/isdn/README.icn | 148 + Documentation/isdn/README.pcbit | 40 + Documentation/isdn/README.sc | 281 + Documentation/isdn/README.syncppp | 58 + Documentation/isdn/README.x25 | 184 + Documentation/isdn/syncPPP.FAQ | 224 + Documentation/java.txt | 396 + Documentation/kbuild/00-INDEX | 8 + Documentation/kbuild/kconfig-language.txt | 282 + Documentation/kbuild/makefiles.txt | 1122 + Documentation/kbuild/modules.txt | 419 + Documentation/kernel-doc-nano-HOWTO.txt | 150 + Documentation/kernel-docs.txt | 777 + Documentation/kernel-parameters.txt | 1511 + Documentation/keys.txt | 869 + Documentation/kobject.txt | 367 + Documentation/laptop-mode.txt | 950 + Documentation/ldm.txt | 102 + Documentation/locks.txt | 84 + Documentation/logo.gif | Bin 0 -> 16335 bytes Documentation/logo.txt | 13 + Documentation/m68k/00-INDEX | 5 + Documentation/m68k/README.buddha | 210 + Documentation/m68k/kernel-options.txt | 964 + Documentation/magic-number.txt | 174 + Documentation/mandatory.txt | 152 + Documentation/mca.txt | 320 + Documentation/md.txt | 118 + Documentation/memory.txt | 60 + Documentation/mips/GT64120.README | 65 + Documentation/mips/pci/pci.README | 54 + Documentation/mips/time.README | 198 + Documentation/mono.txt | 66 + Documentation/moxa-smartio | 411 + Documentation/mtrr.txt | 286 + Documentation/nbd.txt | 47 + Documentation/networking/00-INDEX | 127 + Documentation/networking/3c359.txt | 58 + Documentation/networking/3c505.txt | 46 + Documentation/networking/3c509.txt | 210 + Documentation/networking/6pack.txt | 175 + Documentation/networking/Configurable | 34 + Documentation/networking/DLINK.txt | 204 + Documentation/networking/NAPI_HOWTO.txt | 766 + Documentation/networking/PLIP.txt | 215 + Documentation/networking/README.sb1000 | 207 + Documentation/networking/TODO | 18 + Documentation/networking/alias.txt | 53 + Documentation/networking/arcnet-hardware.txt | 3133 ++ Documentation/networking/arcnet.txt | 555 + Documentation/networking/atm.txt | 8 + Documentation/networking/ax25.txt | 16 + Documentation/networking/baycom.txt | 158 + Documentation/networking/bonding.txt | 1618 + Documentation/networking/bridge.txt | 8 + Documentation/networking/comx.txt | 248 + Documentation/networking/cops.txt | 63 + Documentation/networking/cs89x0.txt | 703 + Documentation/networking/de4x5.txt | 178 + Documentation/networking/decnet.txt | 234 + Documentation/networking/depca.txt | 92 + Documentation/networking/dgrs.txt | 52 + Documentation/networking/dl2k.txt | 281 + Documentation/networking/dmfe.txt | 59 + Documentation/networking/driver.txt | 94 + Documentation/networking/e100.txt | 170 + Documentation/networking/e1000.txt | 401 + Documentation/networking/eql.txt | 528 + Documentation/networking/ewrk3.txt | 46 + Documentation/networking/filter.txt | 42 + Documentation/networking/fore200e.txt | 66 + Documentation/networking/framerelay.txt | 39 + Documentation/networking/gen_stats.txt | 117 + Documentation/networking/generic-hdlc.txt | 131 + Documentation/networking/ifenslave.c | 1110 + Documentation/networking/ip-sysctl.txt | 878 + Documentation/networking/ip_dynaddr.txt | 29 + Documentation/networking/ipddp.txt | 78 + Documentation/networking/iphase.txt | 158 + Documentation/networking/irda.txt | 14 + Documentation/networking/ixgb.txt | 212 + Documentation/networking/lapb-module.txt | 263 + Documentation/networking/ltpc.txt | 131 + Documentation/networking/multicast.txt | 64 + Documentation/networking/ncsa-telnet | 16 + Documentation/networking/net-modules.txt | 324 + Documentation/networking/netconsole.txt | 57 + Documentation/networking/netdevices.txt | 75 + Documentation/networking/netif-msg.txt | 79 + Documentation/networking/olympic.txt | 79 + Documentation/networking/packet_mmap.txt | 399 + Documentation/networking/pktgen.txt | 214 + Documentation/networking/policy-routing.txt | 150 + Documentation/networking/ppp_generic.txt | 432 + Documentation/networking/proc_net_tcp.txt | 47 + Documentation/networking/pt.txt | 58 + Documentation/networking/ray_cs.txt | 151 + Documentation/networking/routing.txt | 46 + Documentation/networking/s2io.txt | 48 + Documentation/networking/sctp.txt | 38 + Documentation/networking/shaper.txt | 48 + Documentation/networking/sis900.txt | 257 + Documentation/networking/sk98lin.txt | 568 + Documentation/networking/skfp.txt | 220 + Documentation/networking/slicecom.hun | 371 + Documentation/networking/slicecom.txt | 369 + Documentation/networking/smc9.txt | 42 + Documentation/networking/smctr.txt | 66 + Documentation/networking/tcp.txt | 39 + Documentation/networking/tlan.txt | 117 + Documentation/networking/tms380tr.txt | 147 + Documentation/networking/tuntap.txt | 147 + Documentation/networking/vortex.txt | 450 + Documentation/networking/wan-router.txt | 622 + Documentation/networking/wanpipe.txt | 622 + Documentation/networking/wavelan.txt | 73 + Documentation/networking/x25-iface.txt | 123 + Documentation/networking/x25.txt | 44 + Documentation/networking/z8530drv.txt | 657 + Documentation/nfsroot.txt | 210 + Documentation/nmi_watchdog.txt | 81 + Documentation/nommu-mmap.txt | 198 + Documentation/numastat.txt | 22 + Documentation/oops-tracing.txt | 229 + Documentation/paride.txt | 417 + Documentation/parisc/00-INDEX | 6 + Documentation/parisc/debugging | 39 + Documentation/parisc/registers | 121 + Documentation/parport-lowlevel.txt | 1490 + Documentation/parport.txt | 268 + Documentation/pci.txt | 284 + Documentation/pm.txt | 251 + Documentation/pnp.txt | 249 + Documentation/power/devices.txt | 319 + Documentation/power/interface.txt | 43 + Documentation/power/kernel_threads.txt | 41 + Documentation/power/pci.txt | 332 + Documentation/power/states.txt | 79 + Documentation/power/swsusp.txt | 235 + Documentation/power/tricks.txt | 27 + Documentation/power/video.txt | 169 + Documentation/power/video_extension.txt | 34 + Documentation/powerpc/00-INDEX | 20 + .../powerpc/SBC8260_memory_mapping.txt | 197 + Documentation/powerpc/cpu_features.txt | 56 + .../powerpc/eeh-pci-error-recovery.txt | 332 + Documentation/powerpc/hvcs.txt | 567 + Documentation/powerpc/mpc52xx.txt | 39 + Documentation/powerpc/ppc_htab.txt | 118 + Documentation/powerpc/smp.txt | 34 + Documentation/powerpc/sound.txt | 81 + Documentation/powerpc/zImage_layout.txt | 47 + Documentation/preempt-locking.txt | 135 + Documentation/prio_tree.txt | 107 + Documentation/ramdisk.txt | 167 + Documentation/riscom8.txt | 36 + Documentation/rocket.txt | 189 + Documentation/rpc-cache.txt | 171 + Documentation/rtc.txt | 282 + Documentation/s390/3270.ChangeLog | 44 + Documentation/s390/3270.txt | 274 + Documentation/s390/CommonIO | 109 + Documentation/s390/DASD | 73 + Documentation/s390/Debugging390.txt | 2536 ++ Documentation/s390/TAPE | 122 + Documentation/s390/cds.txt | 513 + Documentation/s390/config3270.sh | 76 + Documentation/s390/crypto/crypto-API.txt | 83 + Documentation/s390/driver-model.txt | 265 + Documentation/s390/monreader.txt | 197 + Documentation/s390/s390dbf.txt | 615 + Documentation/sched-coding.txt | 126 + Documentation/sched-design.txt | 165 + Documentation/sched-domains.txt | 70 + Documentation/sched-stats.txt | 153 + Documentation/scsi/00-INDEX | 70 + Documentation/scsi/53c700.txt | 154 + Documentation/scsi/BusLogic.txt | 566 + Documentation/scsi/ChangeLog.1992-1997 | 2023 ++ Documentation/scsi/ChangeLog.ips | 122 + Documentation/scsi/ChangeLog.megaraid | 349 + Documentation/scsi/ChangeLog.ncr53c8xx | 495 + Documentation/scsi/ChangeLog.sym53c8xx | 593 + Documentation/scsi/ChangeLog.sym53c8xx_2 | 144 + Documentation/scsi/FlashPoint.txt | 163 + Documentation/scsi/LICENSE.FlashPoint | 60 + Documentation/scsi/Mylex.txt | 5 + Documentation/scsi/NinjaSCSI.txt | 130 + Documentation/scsi/aha152x.txt | 183 + Documentation/scsi/aic79xx.txt | 516 + Documentation/scsi/aic7xxx.txt | 414 + Documentation/scsi/aic7xxx_old.txt | 511 + Documentation/scsi/cpqfc.txt | 272 + Documentation/scsi/dc395x.txt | 102 + Documentation/scsi/dpti.txt | 83 + Documentation/scsi/dtc3x80.txt | 43 + Documentation/scsi/g_NCR5380.txt | 63 + Documentation/scsi/ibmmca.txt | 1402 + Documentation/scsi/in2000.txt | 202 + Documentation/scsi/megaraid.txt | 70 + Documentation/scsi/ncr53c7xx.txt | 40 + Documentation/scsi/ncr53c8xx.txt | 1854 ++ Documentation/scsi/osst.txt | 219 + Documentation/scsi/ppa.txt | 16 + Documentation/scsi/qla2xxx.revision.notes | 457 + Documentation/scsi/qlogicfas.txt | 79 + Documentation/scsi/qlogicisp.txt | 30 + Documentation/scsi/scsi-generic.txt | 101 + Documentation/scsi/scsi.txt | 44 + Documentation/scsi/scsi_mid_low_api.txt | 1546 + Documentation/scsi/st.txt | 499 + Documentation/scsi/sym53c500_cs.txt | 23 + Documentation/scsi/sym53c8xx_2.txt | 1059 + Documentation/scsi/tmscsim.txt | 449 + Documentation/seclvl.txt | 97 + Documentation/serial-console.txt | 104 + Documentation/serial/driver | 330 + Documentation/sgi-visws.txt | 13 + Documentation/sh/kgdb.txt | 179 + Documentation/sh/new-machine.txt | 306 + Documentation/smart-config.txt | 102 + Documentation/smp.txt | 22 + Documentation/sonypi.txt | 142 + .../sound/alsa/ALSA-Configuration.txt | 1505 + Documentation/sound/alsa/Audigy-mixer.txt | 345 + Documentation/sound/alsa/Bt87x.txt | 78 + Documentation/sound/alsa/CMIPCI.txt | 242 + Documentation/sound/alsa/ControlNames.txt | 84 + .../sound/alsa/DocBook/alsa-driver-api.tmpl | 100 + .../alsa/DocBook/writing-an-alsa-driver.tmpl | 6045 ++++ Documentation/sound/alsa/Joystick.txt | 86 + Documentation/sound/alsa/MIXART.txt | 100 + Documentation/sound/alsa/OSS-Emulation.txt | 297 + Documentation/sound/alsa/Procfile.txt | 191 + Documentation/sound/alsa/SB-Live-mixer.txt | 356 + Documentation/sound/alsa/VIA82xx-mixer.txt | 8 + Documentation/sound/alsa/hda_codec.txt | 299 + Documentation/sound/alsa/seq_oss.html | 409 + Documentation/sound/alsa/serial-u16550.txt | 88 + Documentation/sound/oss/AD1816 | 84 + Documentation/sound/oss/ALS | 66 + Documentation/sound/oss/AWE32 | 76 + Documentation/sound/oss/AudioExcelDSP16 | 101 + Documentation/sound/oss/CMI8330 | 153 + Documentation/sound/oss/CMI8338 | 85 + Documentation/sound/oss/CS4232 | 23 + Documentation/sound/oss/ESS | 34 + Documentation/sound/oss/ESS1868 | 55 + Documentation/sound/oss/INSTALL.awe | 134 + Documentation/sound/oss/Introduction | 459 + Documentation/sound/oss/MAD16 | 56 + Documentation/sound/oss/Maestro | 123 + Documentation/sound/oss/Maestro3 | 92 + Documentation/sound/oss/MultiSound | 1137 + Documentation/sound/oss/NEWS | 42 + Documentation/sound/oss/NM256 | 280 + Documentation/sound/oss/OPL3 | 6 + Documentation/sound/oss/OPL3-SA | 52 + Documentation/sound/oss/OPL3-SA2 | 210 + Documentation/sound/oss/Opti | 222 + Documentation/sound/oss/PAS16 | 163 + Documentation/sound/oss/PSS | 41 + Documentation/sound/oss/PSS-updates | 88 + Documentation/sound/oss/README.OSS | 1456 + Documentation/sound/oss/README.awe | 218 + Documentation/sound/oss/README.modules | 106 + Documentation/sound/oss/README.ymfsb | 107 + Documentation/sound/oss/SoundPro | 105 + Documentation/sound/oss/Soundblaster | 53 + Documentation/sound/oss/Tropez+ | 26 + Documentation/sound/oss/VIA-chipset | 43 + Documentation/sound/oss/VIBRA16 | 80 + Documentation/sound/oss/WaveArtist | 170 + Documentation/sound/oss/Wavefront | 339 + Documentation/sound/oss/btaudio | 92 + Documentation/sound/oss/cs46xx | 138 + Documentation/sound/oss/es1370 | 70 + Documentation/sound/oss/es1371 | 64 + Documentation/sound/oss/mwave | 185 + Documentation/sound/oss/rme96xx | 767 + Documentation/sound/oss/solo1 | 70 + Documentation/sound/oss/sonicvibes | 81 + Documentation/sound/oss/ultrasound | 30 + Documentation/sound/oss/vwsnd | 293 + Documentation/sparc/README-2.5 | 46 + Documentation/sparc/sbus_drivers.txt | 272 + Documentation/sparse.txt | 72 + Documentation/specialix.txt | 385 + Documentation/spinlocks.txt | 212 + Documentation/stable_api_nonsense.txt | 193 + Documentation/stallion.txt | 392 + Documentation/svga.txt | 276 + Documentation/sx.txt | 294 + Documentation/sysctl/README | 75 + Documentation/sysctl/abi.txt | 54 + Documentation/sysctl/fs.txt | 150 + Documentation/sysctl/kernel.txt | 314 + Documentation/sysctl/sunrpc.txt | 20 + Documentation/sysctl/vm.txt | 104 + Documentation/sysrq.txt | 213 + Documentation/telephony/ixj.txt | 406 + Documentation/time_interpolators.txt | 41 + Documentation/tipar.txt | 93 + Documentation/tty.txt | 198 + Documentation/uml/UserModeLinux-HOWTO.txt | 4686 +++ Documentation/unicode.txt | 175 + Documentation/usb/CREDITS | 175 + Documentation/usb/URB.txt | 252 + Documentation/usb/acm.txt | 138 + Documentation/usb/auerswald.txt | 30 + Documentation/usb/bluetooth.txt | 44 + Documentation/usb/dma.txt | 116 + Documentation/usb/ehci.txt | 212 + Documentation/usb/error-codes.txt | 167 + Documentation/usb/gadget_serial.txt | 332 + Documentation/usb/hiddev.txt | 205 + Documentation/usb/hotplug.txt | 148 + Documentation/usb/ibmcam.txt | 324 + Documentation/usb/linux.inf | 200 + Documentation/usb/mtouchusb.txt | 76 + Documentation/usb/ohci.txt | 32 + Documentation/usb/ov511.txt | 289 + Documentation/usb/proc_usb_info.txt | 371 + Documentation/usb/rio.txt | 138 + Documentation/usb/se401.txt | 54 + Documentation/usb/sn9c102.txt | 480 + Documentation/usb/stv680.txt | 55 + Documentation/usb/uhci.txt | 165 + Documentation/usb/usb-help.txt | 19 + Documentation/usb/usb-serial.txt | 470 + Documentation/usb/usbmon.txt | 156 + Documentation/usb/w9968cf.txt | 481 + Documentation/video4linux/API.html | 399 + Documentation/video4linux/CARDLIST.bttv | 121 + Documentation/video4linux/CARDLIST.saa7134 | 35 + Documentation/video4linux/CARDLIST.tuner | 46 + Documentation/video4linux/CQcam.txt | 412 + Documentation/video4linux/README.cpia | 191 + Documentation/video4linux/README.cx88 | 69 + Documentation/video4linux/README.ir | 72 + Documentation/video4linux/README.saa7134 | 73 + Documentation/video4linux/Zoran | 557 + Documentation/video4linux/bttv/CONTRIBUTORS | 25 + Documentation/video4linux/bttv/Cards | 964 + Documentation/video4linux/bttv/ICs | 37 + Documentation/video4linux/bttv/Insmod-options | 173 + Documentation/video4linux/bttv/MAKEDEV | 28 + Documentation/video4linux/bttv/Modprobe.conf | 11 + Documentation/video4linux/bttv/Modules.conf | 14 + Documentation/video4linux/bttv/PROBLEMS | 62 + Documentation/video4linux/bttv/README | 90 + Documentation/video4linux/bttv/README.WINVIEW | 33 + Documentation/video4linux/bttv/README.freeze | 74 + Documentation/video4linux/bttv/README.quirks | 83 + Documentation/video4linux/bttv/Sound-FAQ | 148 + Documentation/video4linux/bttv/Specs | 3 + Documentation/video4linux/bttv/THANKS | 24 + Documentation/video4linux/bttv/Tuners | 115 + Documentation/video4linux/meye.txt | 130 + Documentation/video4linux/radiotrack.txt | 147 + Documentation/video4linux/w9966.txt | 33 + Documentation/video4linux/zr36120.txt | 159 + Documentation/vm/balance | 93 + Documentation/vm/hugetlbpage.txt | 284 + Documentation/vm/locking | 131 + Documentation/vm/numa | 41 + Documentation/vm/overcommit-accounting | 73 + Documentation/voyager.txt | 95 + Documentation/w1/w1.generic | 19 + Documentation/watchdog/pcwd-watchdog.txt | 135 + Documentation/watchdog/watchdog-api.txt | 399 + Documentation/watchdog/watchdog.txt | 115 + Documentation/x86_64/boot-options.txt | 180 + Documentation/x86_64/mm.txt | 24 + Documentation/xterm-linux.xpm | 61 + Documentation/zorro.txt | 102 + MAINTAINERS | 2704 ++ Makefile | 1343 + README | 305 + REPORTING-BUGS | 61 + arch/alpha/Kconfig | 606 + arch/alpha/Kconfig.debug | 59 + arch/alpha/Makefile | 130 + arch/alpha/boot/Makefile | 116 + arch/alpha/boot/bootloader.lds | 24 + arch/alpha/boot/bootp.c | 214 + arch/alpha/boot/bootpz.c | 469 + arch/alpha/boot/head.S | 123 + arch/alpha/boot/main.c | 191 + arch/alpha/boot/misc.c | 207 + arch/alpha/boot/tools/mkbb.c | 151 + arch/alpha/boot/tools/objstrip.c | 281 + arch/alpha/defconfig | 927 + arch/alpha/kernel/Makefile | 104 + arch/alpha/kernel/alpha_ksyms.c | 235 + arch/alpha/kernel/asm-offsets.c | 43 + arch/alpha/kernel/console.c | 66 + arch/alpha/kernel/core_apecs.c | 418 + arch/alpha/kernel/core_cia.c | 1212 + arch/alpha/kernel/core_irongate.c | 416 + arch/alpha/kernel/core_lca.c | 515 + arch/alpha/kernel/core_marvel.c | 1154 + arch/alpha/kernel/core_mcpcia.c | 618 + arch/alpha/kernel/core_polaris.c | 203 + arch/alpha/kernel/core_t2.c | 622 + arch/alpha/kernel/core_titan.c | 806 + arch/alpha/kernel/core_tsunami.c | 459 + arch/alpha/kernel/core_wildfire.c | 658 + arch/alpha/kernel/entry.S | 957 + arch/alpha/kernel/err_common.c | 321 + arch/alpha/kernel/err_ev6.c | 274 + arch/alpha/kernel/err_ev7.c | 289 + arch/alpha/kernel/err_impl.h | 85 + arch/alpha/kernel/err_marvel.c | 1159 + arch/alpha/kernel/err_titan.c | 756 + arch/alpha/kernel/es1888.c | 49 + arch/alpha/kernel/gct.c | 48 + arch/alpha/kernel/head.S | 99 + arch/alpha/kernel/init_task.c | 23 + arch/alpha/kernel/io.c | 630 + arch/alpha/kernel/irq.c | 774 + arch/alpha/kernel/irq_alpha.c | 252 + arch/alpha/kernel/irq_i8259.c | 183 + arch/alpha/kernel/irq_impl.h | 42 + arch/alpha/kernel/irq_pyxis.c | 127 + arch/alpha/kernel/irq_srm.c | 79 + arch/alpha/kernel/machvec_impl.h | 150 + arch/alpha/kernel/module.c | 311 + arch/alpha/kernel/ns87312.c | 38 + arch/alpha/kernel/osf_sys.c | 1345 + arch/alpha/kernel/pci-noop.c | 214 + arch/alpha/kernel/pci.c | 561 + arch/alpha/kernel/pci_impl.h | 209 + arch/alpha/kernel/pci_iommu.c | 971 + arch/alpha/kernel/process.c | 528 + arch/alpha/kernel/proto.h | 210 + arch/alpha/kernel/ptrace.c | 415 + arch/alpha/kernel/semaphore.c | 224 + arch/alpha/kernel/setup.c | 1486 + arch/alpha/kernel/signal.c | 672 + arch/alpha/kernel/smc37c669.c | 2554 ++ arch/alpha/kernel/smc37c93x.c | 277 + arch/alpha/kernel/smp.c | 1163 + arch/alpha/kernel/srm_env.c | 335 + arch/alpha/kernel/srmcons.c | 326 + arch/alpha/kernel/sys_alcor.c | 326 + arch/alpha/kernel/sys_cabriolet.c | 448 + arch/alpha/kernel/sys_dp264.c | 689 + arch/alpha/kernel/sys_eb64p.c | 256 + arch/alpha/kernel/sys_eiger.c | 242 + arch/alpha/kernel/sys_jensen.c | 274 + arch/alpha/kernel/sys_marvel.c | 499 + arch/alpha/kernel/sys_miata.c | 289 + arch/alpha/kernel/sys_mikasa.c | 265 + arch/alpha/kernel/sys_nautilus.c | 269 + arch/alpha/kernel/sys_noritake.c | 347 + arch/alpha/kernel/sys_rawhide.c | 270 + arch/alpha/kernel/sys_ruffian.c | 240 + arch/alpha/kernel/sys_rx164.c | 220 + arch/alpha/kernel/sys_sable.c | 653 + arch/alpha/kernel/sys_sio.c | 438 + arch/alpha/kernel/sys_sx164.c | 178 + arch/alpha/kernel/sys_takara.c | 296 + arch/alpha/kernel/sys_titan.c | 420 + arch/alpha/kernel/sys_wildfire.c | 361 + arch/alpha/kernel/systbls.S | 468 + arch/alpha/kernel/time.c | 591 + arch/alpha/kernel/traps.c | 1092 + arch/alpha/kernel/vmlinux.lds.S | 149 + arch/alpha/lib/Makefile | 58 + arch/alpha/lib/callback_srm.S | 104 + arch/alpha/lib/checksum.c | 186 + arch/alpha/lib/clear_page.S | 39 + arch/alpha/lib/clear_user.S | 113 + arch/alpha/lib/copy_page.S | 49 + arch/alpha/lib/copy_user.S | 145 + arch/alpha/lib/csum_ipv6_magic.S | 92 + arch/alpha/lib/csum_partial_copy.c | 391 + arch/alpha/lib/dbg_current.S | 29 + arch/alpha/lib/dbg_stackcheck.S | 27 + arch/alpha/lib/dbg_stackkill.S | 35 + arch/alpha/lib/dec_and_lock.c | 42 + arch/alpha/lib/divide.S | 195 + arch/alpha/lib/ev6-clear_page.S | 54 + arch/alpha/lib/ev6-clear_user.S | 225 + arch/alpha/lib/ev6-copy_page.S | 203 + arch/alpha/lib/ev6-copy_user.S | 259 + arch/alpha/lib/ev6-csum_ipv6_magic.S | 126 + arch/alpha/lib/ev6-divide.S | 259 + arch/alpha/lib/ev6-memchr.S | 191 + arch/alpha/lib/ev6-memcpy.S | 248 + arch/alpha/lib/ev6-memset.S | 597 + arch/alpha/lib/ev6-strncpy_from_user.S | 424 + arch/alpha/lib/ev6-stxcpy.S | 321 + arch/alpha/lib/ev6-stxncpy.S | 397 + arch/alpha/lib/ev67-strcat.S | 54 + arch/alpha/lib/ev67-strchr.S | 88 + arch/alpha/lib/ev67-strlen.S | 49 + arch/alpha/lib/ev67-strlen_user.S | 107 + arch/alpha/lib/ev67-strncat.S | 94 + arch/alpha/lib/ev67-strrchr.S | 109 + arch/alpha/lib/fpreg.c | 193 + arch/alpha/lib/memchr.S | 164 + arch/alpha/lib/memcpy.c | 163 + arch/alpha/lib/memmove.S | 181 + arch/alpha/lib/memset.S | 124 + arch/alpha/lib/srm_printk.c | 41 + arch/alpha/lib/srm_puts.c | 23 + arch/alpha/lib/stacktrace.c | 103 + arch/alpha/lib/strcasecmp.c | 26 + arch/alpha/lib/strcat.S | 52 + arch/alpha/lib/strchr.S | 70 + arch/alpha/lib/strcpy.S | 23 + arch/alpha/lib/strlen.S | 57 + arch/alpha/lib/strlen_user.S | 91 + arch/alpha/lib/strncat.S | 84 + arch/alpha/lib/strncpy.S | 81 + arch/alpha/lib/strncpy_from_user.S | 339 + arch/alpha/lib/strrchr.S | 87 + arch/alpha/lib/stxcpy.S | 289 + arch/alpha/lib/stxncpy.S | 345 + arch/alpha/lib/udelay.c | 55 + arch/alpha/math-emu/Makefile | 9 + arch/alpha/math-emu/math.c | 400 + arch/alpha/math-emu/qrnnd.S | 163 + arch/alpha/math-emu/sfp-util.h | 35 + arch/alpha/mm/Makefile | 9 + arch/alpha/mm/extable.c | 34 + arch/alpha/mm/fault.c | 247 + arch/alpha/mm/init.c | 382 + arch/alpha/mm/numa.c | 395 + arch/alpha/mm/remap.c | 90 + arch/alpha/oprofile/Kconfig | 23 + arch/alpha/oprofile/Makefile | 19 + arch/alpha/oprofile/common.c | 189 + arch/alpha/oprofile/op_impl.h | 55 + arch/alpha/oprofile/op_model_ev4.c | 116 + arch/alpha/oprofile/op_model_ev5.c | 211 + arch/alpha/oprofile/op_model_ev6.c | 103 + arch/alpha/oprofile/op_model_ev67.c | 263 + arch/arm/Kconfig | 736 + arch/arm/Kconfig.debug | 109 + arch/arm/Makefile | 216 + arch/arm/boot/Makefile | 91 + arch/arm/boot/bootp/Makefile | 24 + arch/arm/boot/bootp/bootp.lds | 30 + arch/arm/boot/bootp/init.S | 86 + arch/arm/boot/bootp/initrd.S | 6 + arch/arm/boot/bootp/kernel.S | 6 + arch/arm/boot/compressed/Makefile | 114 + arch/arm/boot/compressed/Makefile.debug | 23 + arch/arm/boot/compressed/big-endian.S | 13 + arch/arm/boot/compressed/head-clps7500.S | 87 + arch/arm/boot/compressed/head-epxa10db.S | 5 + arch/arm/boot/compressed/head-l7200.S | 30 + arch/arm/boot/compressed/head-sa1100.S | 48 + arch/arm/boot/compressed/head-shark.S | 115 + arch/arm/boot/compressed/head-sharpsl.S | 92 + arch/arm/boot/compressed/head-xscale.S | 49 + arch/arm/boot/compressed/head.S | 786 + arch/arm/boot/compressed/ice-dcc.S | 17 + arch/arm/boot/compressed/ll_char_wr.S | 134 + arch/arm/boot/compressed/misc.c | 329 + arch/arm/boot/compressed/ofw-shark.c | 260 + arch/arm/boot/compressed/piggy.S | 6 + arch/arm/boot/compressed/vmlinux.lds.in | 55 + arch/arm/boot/install.sh | 52 + arch/arm/common/Kconfig | 24 + arch/arm/common/Makefile | 15 + arch/arm/common/amba.c | 357 + arch/arm/common/dmabounce.c | 682 + arch/arm/common/icst307.c | 161 + arch/arm/common/icst525.c | 160 + arch/arm/common/locomo.c | 1058 + arch/arm/common/rtctime.c | 506 + arch/arm/common/sa1111.c | 1292 + arch/arm/common/scoop.c | 176 + arch/arm/common/sharpsl_param.c | 60 + arch/arm/common/time-acorn.c | 96 + arch/arm/common/via82c505.c | 94 + arch/arm/configs/assabet_defconfig | 906 + arch/arm/configs/badge4_defconfig | 1240 + arch/arm/configs/bast_defconfig | 952 + arch/arm/configs/cerfcube_defconfig | 905 + arch/arm/configs/clps7500_defconfig | 803 + arch/arm/configs/ebsa110_defconfig | 749 + arch/arm/configs/edb7211_defconfig | 575 + arch/arm/configs/enp2611_defconfig | 887 + arch/arm/configs/ep80219_defconfig | 952 + arch/arm/configs/epxa10db_defconfig | 644 + arch/arm/configs/footbridge_defconfig | 1257 + arch/arm/configs/fortunet_defconfig | 558 + arch/arm/configs/h3600_defconfig | 913 + arch/arm/configs/h7201_defconfig | 567 + arch/arm/configs/h7202_defconfig | 732 + arch/arm/configs/hackkit_defconfig | 768 + arch/arm/configs/integrator_defconfig | 864 + arch/arm/configs/iq31244_defconfig | 922 + arch/arm/configs/iq80321_defconfig | 843 + arch/arm/configs/iq80331_defconfig | 916 + arch/arm/configs/iq80332_defconfig | 916 + arch/arm/configs/ixdp2400_defconfig | 888 + arch/arm/configs/ixdp2401_defconfig | 889 + arch/arm/configs/ixdp2800_defconfig | 888 + arch/arm/configs/ixdp2801_defconfig | 889 + arch/arm/configs/ixp4xx_defconfig | 1164 + arch/arm/configs/jornada720_defconfig | 919 + arch/arm/configs/lart_defconfig | 877 + arch/arm/configs/lpd7a400_defconfig | 781 + arch/arm/configs/lpd7a404_defconfig | 919 + arch/arm/configs/lubbock_defconfig | 803 + arch/arm/configs/lusl7200_defconfig | 455 + arch/arm/configs/mainstone_defconfig | 797 + arch/arm/configs/mx1ads_defconfig | 745 + arch/arm/configs/neponset_defconfig | 1145 + arch/arm/configs/netwinder_defconfig | 1046 + arch/arm/configs/omap_h2_1610_defconfig | 971 + arch/arm/configs/omnimeter_defconfig | 803 + arch/arm/configs/pleb_defconfig | 749 + arch/arm/configs/pxa255-idp_defconfig | 799 + arch/arm/configs/rpc_defconfig | 939 + arch/arm/configs/s3c2410_defconfig | 954 + arch/arm/configs/shannon_defconfig | 872 + arch/arm/configs/shark_defconfig | 974 + arch/arm/configs/simpad_defconfig | 964 + arch/arm/configs/smdk2410_defconfig | 736 + arch/arm/configs/versatile_defconfig | 902 + arch/arm/kernel/Makefile | 38 + arch/arm/kernel/apm.c | 610 + arch/arm/kernel/arch.c | 46 + arch/arm/kernel/armksyms.c | 175 + arch/arm/kernel/arthur.c | 91 + arch/arm/kernel/asm-offsets.c | 83 + arch/arm/kernel/bios32.c | 699 + arch/arm/kernel/calls.S | 335 + arch/arm/kernel/compat.c | 225 + arch/arm/kernel/debug.S | 106 + arch/arm/kernel/dma-isa.c | 207 + arch/arm/kernel/dma.c | 302 + arch/arm/kernel/ecard.c | 1210 + arch/arm/kernel/entry-armv.S | 745 + arch/arm/kernel/entry-common.S | 260 + arch/arm/kernel/entry-header.S | 182 + arch/arm/kernel/fiq.c | 181 + arch/arm/kernel/head.S | 516 + arch/arm/kernel/init_task.c | 44 + arch/arm/kernel/io.c | 51 + arch/arm/kernel/irq.c | 1038 + arch/arm/kernel/isa.c | 53 + arch/arm/kernel/iwmmxt.S | 320 + arch/arm/kernel/module.c | 152 + arch/arm/kernel/process.c | 460 + arch/arm/kernel/ptrace.c | 861 + arch/arm/kernel/ptrace.h | 12 + arch/arm/kernel/semaphore.c | 220 + arch/arm/kernel/setup.c | 875 + arch/arm/kernel/signal.c | 748 + arch/arm/kernel/smp.c | 396 + arch/arm/kernel/sys_arm.c | 332 + arch/arm/kernel/time.c | 402 + arch/arm/kernel/traps.c | 590 + arch/arm/kernel/vmlinux.lds.S | 166 + arch/arm/lib/Makefile | 29 + arch/arm/lib/ashldi3.c | 61 + arch/arm/lib/ashrdi3.c | 61 + arch/arm/lib/backtrace.S | 157 + arch/arm/lib/changebit.S | 28 + arch/arm/lib/clearbit.S | 31 + arch/arm/lib/copy_page.S | 46 + arch/arm/lib/csumipv6.S | 32 + arch/arm/lib/csumpartial.S | 137 + arch/arm/lib/csumpartialcopy.S | 52 + arch/arm/lib/csumpartialcopygeneric.S | 331 + arch/arm/lib/csumpartialcopyuser.S | 104 + arch/arm/lib/delay.S | 58 + arch/arm/lib/div64.S | 200 + arch/arm/lib/ecard.S | 45 + arch/arm/lib/findbit.S | 168 + arch/arm/lib/floppydma.S | 32 + arch/arm/lib/gcclib.h | 25 + arch/arm/lib/getuser.S | 78 + arch/arm/lib/io-acorn.S | 32 + arch/arm/lib/io-readsb.S | 122 + arch/arm/lib/io-readsl.S | 78 + arch/arm/lib/io-readsw-armv3.S | 107 + arch/arm/lib/io-readsw-armv4.S | 130 + arch/arm/lib/io-shark.c | 83 + arch/arm/lib/io-writesb.S | 92 + arch/arm/lib/io-writesl.S | 66 + arch/arm/lib/io-writesw-armv3.S | 127 + arch/arm/lib/io-writesw-armv4.S | 95 + arch/arm/lib/lib1funcs.S | 314 + arch/arm/lib/longlong.h | 183 + arch/arm/lib/lshrdi3.c | 61 + arch/arm/lib/memchr.S | 25 + arch/arm/lib/memcpy.S | 393 + arch/arm/lib/memset.S | 80 + arch/arm/lib/memzero.S | 80 + arch/arm/lib/muldi3.c | 77 + arch/arm/lib/putuser.S | 76 + arch/arm/lib/setbit.S | 29 + arch/arm/lib/strchr.S | 26 + arch/arm/lib/strncpy_from_user.S | 43 + arch/arm/lib/strnlen_user.S | 40 + arch/arm/lib/strrchr.S | 25 + arch/arm/lib/testchangebit.S | 29 + arch/arm/lib/testclearbit.S | 29 + arch/arm/lib/testsetbit.S | 29 + arch/arm/lib/uaccess.S | 697 + arch/arm/lib/ucmpdi2.c | 51 + arch/arm/lib/udivdi3.c | 242 + arch/arm/mach-clps711x/Kconfig | 71 + arch/arm/mach-clps711x/Makefile | 20 + arch/arm/mach-clps711x/Makefile.boot | 7 + arch/arm/mach-clps711x/autcpu12.c | 69 + arch/arm/mach-clps711x/cdb89712.c | 58 + arch/arm/mach-clps711x/ceiva.c | 62 + arch/arm/mach-clps711x/clep7312.c | 48 + arch/arm/mach-clps711x/common.h | 11 + arch/arm/mach-clps711x/dma.c | 27 + arch/arm/mach-clps711x/edb7211-arch.c | 61 + arch/arm/mach-clps711x/edb7211-mm.c | 70 + arch/arm/mach-clps711x/fortunet.c | 85 + arch/arm/mach-clps711x/irq.c | 143 + arch/arm/mach-clps711x/mm.c | 43 + arch/arm/mach-clps711x/p720t-leds.c | 67 + arch/arm/mach-clps711x/p720t.c | 115 + arch/arm/mach-clps711x/time.c | 85 + arch/arm/mach-clps7500/Makefile | 11 + arch/arm/mach-clps7500/Makefile.boot | 2 + arch/arm/mach-clps7500/core.c | 374 + arch/arm/mach-ebsa110/Makefile | 12 + arch/arm/mach-ebsa110/Makefile.boot | 4 + arch/arm/mach-ebsa110/core.c | 245 + arch/arm/mach-ebsa110/io.c | 378 + arch/arm/mach-ebsa110/leds.c | 51 + arch/arm/mach-epxa10db/Kconfig | 23 + arch/arm/mach-epxa10db/Makefile | 11 + arch/arm/mach-epxa10db/Makefile.boot | 2 + arch/arm/mach-epxa10db/arch.c | 72 + arch/arm/mach-epxa10db/dma.c | 28 + arch/arm/mach-epxa10db/irq.c | 82 + arch/arm/mach-epxa10db/mm.c | 45 + arch/arm/mach-epxa10db/time.c | 78 + arch/arm/mach-footbridge/Kconfig | 80 + arch/arm/mach-footbridge/Makefile | 30 + arch/arm/mach-footbridge/Makefile.boot | 4 + arch/arm/mach-footbridge/cats-hw.c | 95 + arch/arm/mach-footbridge/cats-pci.c | 55 + arch/arm/mach-footbridge/co285.c | 38 + arch/arm/mach-footbridge/common.c | 205 + arch/arm/mach-footbridge/common.h | 9 + arch/arm/mach-footbridge/dc21285-timer.c | 68 + arch/arm/mach-footbridge/dc21285.c | 384 + arch/arm/mach-footbridge/dma.c | 54 + arch/arm/mach-footbridge/ebsa285-leds.c | 140 + arch/arm/mach-footbridge/ebsa285-pci.c | 48 + arch/arm/mach-footbridge/ebsa285.c | 24 + arch/arm/mach-footbridge/isa-irq.c | 168 + arch/arm/mach-footbridge/isa-timer.c | 94 + arch/arm/mach-footbridge/isa.c | 48 + arch/arm/mach-footbridge/netwinder-hw.c | 660 + arch/arm/mach-footbridge/netwinder-leds.c | 141 + arch/arm/mach-footbridge/netwinder-pci.c | 62 + arch/arm/mach-footbridge/personal-pci.c | 56 + arch/arm/mach-footbridge/personal.c | 23 + arch/arm/mach-footbridge/time.c | 180 + arch/arm/mach-h720x/Kconfig | 38 + arch/arm/mach-h720x/Makefile | 16 + arch/arm/mach-h720x/Makefile.boot | 2 + arch/arm/mach-h720x/common.c | 247 + arch/arm/mach-h720x/common.h | 29 + arch/arm/mach-h720x/cpu-h7201.c | 64 + arch/arm/mach-h720x/cpu-h7202.c | 228 + arch/arm/mach-h720x/h7201-eval.c | 39 + arch/arm/mach-h720x/h7202-eval.c | 81 + arch/arm/mach-imx/Kconfig | 10 + arch/arm/mach-imx/Makefile | 19 + arch/arm/mach-imx/Makefile.boot | 2 + arch/arm/mach-imx/dma.c | 203 + arch/arm/mach-imx/generic.c | 274 + arch/arm/mach-imx/generic.h | 16 + arch/arm/mach-imx/irq.c | 252 + arch/arm/mach-imx/leds-mx1ads.c | 54 + arch/arm/mach-imx/leds.c | 31 + arch/arm/mach-imx/leds.h | 9 + arch/arm/mach-imx/mx1ads.c | 88 + arch/arm/mach-imx/time.c | 101 + arch/arm/mach-integrator/Kconfig | 33 + arch/arm/mach-integrator/Makefile | 14 + arch/arm/mach-integrator/Makefile.boot | 4 + arch/arm/mach-integrator/clock.c | 141 + arch/arm/mach-integrator/clock.h | 25 + arch/arm/mach-integrator/common.h | 2 + arch/arm/mach-integrator/core.c | 271 + arch/arm/mach-integrator/cpu.c | 221 + arch/arm/mach-integrator/dma.c | 35 + arch/arm/mach-integrator/impd1.c | 475 + arch/arm/mach-integrator/integrator_ap.c | 302 + arch/arm/mach-integrator/integrator_cp.c | 528 + arch/arm/mach-integrator/leds.c | 88 + arch/arm/mach-integrator/lm.c | 96 + arch/arm/mach-integrator/pci.c | 132 + arch/arm/mach-integrator/pci_v3.c | 604 + arch/arm/mach-integrator/time.c | 213 + arch/arm/mach-iop3xx/Kconfig | 63 + arch/arm/mach-iop3xx/Makefile | 23 + arch/arm/mach-iop3xx/Makefile.boot | 9 + arch/arm/mach-iop3xx/common.c | 74 + arch/arm/mach-iop3xx/iop321-irq.c | 96 + arch/arm/mach-iop3xx/iop321-pci.c | 220 + arch/arm/mach-iop3xx/iop321-setup.c | 169 + arch/arm/mach-iop3xx/iop321-time.c | 109 + arch/arm/mach-iop3xx/iop331-irq.c | 127 + arch/arm/mach-iop3xx/iop331-pci.c | 222 + arch/arm/mach-iop3xx/iop331-setup.c | 177 + arch/arm/mach-iop3xx/iop331-time.c | 107 + arch/arm/mach-iop3xx/iq31244-mm.c | 44 + arch/arm/mach-iop3xx/iq31244-pci.c | 129 + arch/arm/mach-iop3xx/iq80321-mm.c | 44 + arch/arm/mach-iop3xx/iq80321-pci.c | 123 + arch/arm/mach-iop3xx/iq80331-mm.c | 36 + arch/arm/mach-iop3xx/iq80331-pci.c | 119 + arch/arm/mach-iop3xx/iq80332-mm.c | 36 + arch/arm/mach-iop3xx/iq80332-pci.c | 125 + arch/arm/mach-ixp2000/Kconfig | 59 + arch/arm/mach-ixp2000/Makefile | 14 + arch/arm/mach-ixp2000/Makefile.boot | 3 + arch/arm/mach-ixp2000/core.c | 390 + arch/arm/mach-ixp2000/enp2611.c | 220 + arch/arm/mach-ixp2000/ixdp2400.c | 179 + arch/arm/mach-ixp2000/ixdp2800.c | 180 + arch/arm/mach-ixp2000/ixdp2x00.c | 304 + arch/arm/mach-ixp2000/ixdp2x01.c | 400 + arch/arm/mach-ixp2000/pci.c | 235 + arch/arm/mach-ixp4xx/Kconfig | 127 + arch/arm/mach-ixp4xx/Makefile | 11 + arch/arm/mach-ixp4xx/Makefile.boot | 3 + arch/arm/mach-ixp4xx/common-pci.c | 527 + arch/arm/mach-ixp4xx/common.c | 353 + arch/arm/mach-ixp4xx/coyote-pci.c | 70 + arch/arm/mach-ixp4xx/coyote-setup.c | 130 + arch/arm/mach-ixp4xx/gtwx5715-pci.c | 101 + arch/arm/mach-ixp4xx/gtwx5715-setup.c | 153 + arch/arm/mach-ixp4xx/ixdp425-pci.c | 84 + arch/arm/mach-ixp4xx/ixdp425-setup.c | 181 + arch/arm/mach-ixp4xx/ixdpg425-pci.c | 66 + arch/arm/mach-l7200/Makefile | 11 + arch/arm/mach-l7200/Makefile.boot | 2 + arch/arm/mach-l7200/core.c | 89 + arch/arm/mach-lh7a40x/Kconfig | 70 + arch/arm/mach-lh7a40x/Makefile | 14 + arch/arm/mach-lh7a40x/Makefile.boot | 4 + arch/arm/mach-lh7a40x/arch-kev7a400.c | 111 + arch/arm/mach-lh7a40x/arch-lpd7a40x.c | 286 + arch/arm/mach-lh7a40x/common.h | 16 + arch/arm/mach-lh7a40x/irq-kev7a400.c | 92 + arch/arm/mach-lh7a40x/irq-lh7a400.c | 90 + arch/arm/mach-lh7a40x/irq-lh7a404.c | 158 + arch/arm/mach-lh7a40x/irq-lpd7a40x.c | 128 + arch/arm/mach-lh7a40x/time.c | 75 + arch/arm/mach-omap/Kconfig | 221 + arch/arm/mach-omap/Makefile | 40 + arch/arm/mach-omap/Makefile.boot | 4 + arch/arm/mach-omap/board-generic.c | 98 + arch/arm/mach-omap/board-h2.c | 187 + arch/arm/mach-omap/board-h3.c | 205 + arch/arm/mach-omap/board-innovator.c | 280 + arch/arm/mach-omap/board-netstar.c | 151 + arch/arm/mach-omap/board-osk.c | 169 + arch/arm/mach-omap/board-perseus2.c | 189 + arch/arm/mach-omap/board-voiceblue.c | 256 + arch/arm/mach-omap/clock.c | 1076 + arch/arm/mach-omap/clock.h | 112 + arch/arm/mach-omap/common.c | 549 + arch/arm/mach-omap/common.h | 36 + arch/arm/mach-omap/dma.c | 1086 + arch/arm/mach-omap/fpga.c | 188 + arch/arm/mach-omap/gpio.c | 762 + arch/arm/mach-omap/irq.c | 219 + arch/arm/mach-omap/leds-h2p2-debug.c | 144 + arch/arm/mach-omap/leds-innovator.c | 103 + arch/arm/mach-omap/leds-osk.c | 198 + arch/arm/mach-omap/leds.c | 61 + arch/arm/mach-omap/leds.h | 3 + arch/arm/mach-omap/mcbsp.c | 685 + arch/arm/mach-omap/mux.c | 163 + arch/arm/mach-omap/ocpi.c | 114 + arch/arm/mach-omap/pm.c | 628 + arch/arm/mach-omap/sleep.S | 314 + arch/arm/mach-omap/time.c | 384 + arch/arm/mach-omap/usb.c | 594 + arch/arm/mach-pxa/Kconfig | 77 + arch/arm/mach-pxa/Makefile | 26 + arch/arm/mach-pxa/Makefile.boot | 2 + arch/arm/mach-pxa/corgi.c | 320 + arch/arm/mach-pxa/corgi_ssp.c | 248 + arch/arm/mach-pxa/dma.c | 133 + arch/arm/mach-pxa/generic.c | 237 + arch/arm/mach-pxa/generic.h | 24 + arch/arm/mach-pxa/idp.c | 190 + arch/arm/mach-pxa/irq.c | 313 + arch/arm/mach-pxa/leds-idp.c | 117 + arch/arm/mach-pxa/leds-lubbock.c | 126 + arch/arm/mach-pxa/leds-mainstone.c | 121 + arch/arm/mach-pxa/leds.c | 32 + arch/arm/mach-pxa/leds.h | 12 + arch/arm/mach-pxa/lubbock.c | 247 + arch/arm/mach-pxa/mainstone.c | 316 + arch/arm/mach-pxa/pm.c | 227 + arch/arm/mach-pxa/poodle.c | 189 + arch/arm/mach-pxa/pxa25x.c | 104 + arch/arm/mach-pxa/pxa27x.c | 163 + arch/arm/mach-pxa/sleep.S | 194 + arch/arm/mach-pxa/ssp.c | 363 + arch/arm/mach-pxa/time.c | 164 + arch/arm/mach-rpc/Makefile | 11 + arch/arm/mach-rpc/Makefile.boot | 4 + arch/arm/mach-rpc/dma.c | 338 + arch/arm/mach-rpc/irq.c | 162 + arch/arm/mach-rpc/riscpc.c | 179 + arch/arm/mach-s3c2410/Kconfig | 169 + arch/arm/mach-s3c2410/Makefile | 36 + arch/arm/mach-s3c2410/Makefile.boot | 3 + arch/arm/mach-s3c2410/bast-irq.c | 132 + arch/arm/mach-s3c2410/bast.h | 2 + arch/arm/mach-s3c2410/clock.c | 507 + arch/arm/mach-s3c2410/clock.h | 44 + arch/arm/mach-s3c2410/cpu.c | 241 + arch/arm/mach-s3c2410/cpu.h | 69 + arch/arm/mach-s3c2410/devs.c | 485 + arch/arm/mach-s3c2410/devs.h | 48 + arch/arm/mach-s3c2410/dma.c | 1210 + arch/arm/mach-s3c2410/gpio.c | 213 + arch/arm/mach-s3c2410/irq.c | 966 + arch/arm/mach-s3c2410/mach-bast.c | 409 + arch/arm/mach-s3c2410/mach-h1940.c | 126 + arch/arm/mach-s3c2410/mach-n30.c | 155 + arch/arm/mach-s3c2410/mach-nexcoder.c | 156 + arch/arm/mach-s3c2410/mach-otom.c | 124 + arch/arm/mach-s3c2410/mach-rx3715.c | 141 + arch/arm/mach-s3c2410/mach-smdk2410.c | 123 + arch/arm/mach-s3c2410/mach-smdk2440.c | 135 + arch/arm/mach-s3c2410/mach-vr1000.c | 317 + arch/arm/mach-s3c2410/pm.c | 672 + arch/arm/mach-s3c2410/pm.h | 59 + arch/arm/mach-s3c2410/s3c2410.c | 200 + arch/arm/mach-s3c2410/s3c2410.h | 37 + arch/arm/mach-s3c2410/s3c2440-dsc.c | 59 + arch/arm/mach-s3c2410/s3c2440.c | 281 + arch/arm/mach-s3c2410/s3c2440.h | 35 + arch/arm/mach-s3c2410/sleep.S | 180 + arch/arm/mach-s3c2410/time.c | 256 + arch/arm/mach-s3c2410/usb-simtec.c | 113 + arch/arm/mach-s3c2410/usb-simtec.h | 19 + arch/arm/mach-sa1100/Kconfig | 162 + arch/arm/mach-sa1100/Makefile | 53 + arch/arm/mach-sa1100/Makefile.boot | 7 + arch/arm/mach-sa1100/assabet.c | 441 + arch/arm/mach-sa1100/badge4.c | 293 + arch/arm/mach-sa1100/cerf.c | 132 + arch/arm/mach-sa1100/collie.c | 192 + arch/arm/mach-sa1100/cpu-sa1100.c | 249 + arch/arm/mach-sa1100/cpu-sa1110.c | 367 + arch/arm/mach-sa1100/dma.c | 348 + arch/arm/mach-sa1100/generic.c | 419 + arch/arm/mach-sa1100/generic.h | 38 + arch/arm/mach-sa1100/h3600.c | 892 + arch/arm/mach-sa1100/hackkit.c | 200 + arch/arm/mach-sa1100/irq.c | 332 + arch/arm/mach-sa1100/jornada720.c | 105 + arch/arm/mach-sa1100/lart.c | 49 + arch/arm/mach-sa1100/leds-assabet.c | 115 + arch/arm/mach-sa1100/leds-badge4.c | 112 + arch/arm/mach-sa1100/leds-cerf.c | 111 + arch/arm/mach-sa1100/leds-hackkit.c | 113 + arch/arm/mach-sa1100/leds-lart.c | 102 + arch/arm/mach-sa1100/leds-simpad.c | 101 + arch/arm/mach-sa1100/leds.c | 52 + arch/arm/mach-sa1100/leds.h | 14 + arch/arm/mach-sa1100/neponset.c | 342 + arch/arm/mach-sa1100/pleb.c | 154 + arch/arm/mach-sa1100/pm.c | 167 + arch/arm/mach-sa1100/shannon.c | 85 + arch/arm/mach-sa1100/simpad.c | 224 + arch/arm/mach-sa1100/sleep.S | 215 + arch/arm/mach-sa1100/ssp.c | 214 + arch/arm/mach-sa1100/time.c | 159 + arch/arm/mach-shark/Makefile | 12 + arch/arm/mach-shark/Makefile.boot | 2 + arch/arm/mach-shark/core.c | 114 + arch/arm/mach-shark/dma.c | 22 + arch/arm/mach-shark/irq.c | 109 + arch/arm/mach-shark/leds.c | 163 + arch/arm/mach-shark/pci.c | 42 + arch/arm/mach-versatile/Kconfig | 16 + arch/arm/mach-versatile/Makefile | 7 + arch/arm/mach-versatile/Makefile.boot | 4 + arch/arm/mach-versatile/clock.c | 145 + arch/arm/mach-versatile/clock.h | 25 + arch/arm/mach-versatile/core.c | 918 + arch/arm/mach-versatile/core.h | 50 + arch/arm/mach-versatile/versatile_ab.c | 45 + arch/arm/mach-versatile/versatile_pb.c | 109 + arch/arm/mm/Kconfig | 411 + arch/arm/mm/Makefile | 56 + arch/arm/mm/abort-ev4.S | 30 + arch/arm/mm/abort-ev4t.S | 30 + arch/arm/mm/abort-ev5t.S | 31 + arch/arm/mm/abort-ev5tj.S | 35 + arch/arm/mm/abort-ev6.S | 23 + arch/arm/mm/abort-lv4t.S | 220 + arch/arm/mm/abort-macro.S | 42 + arch/arm/mm/alignment.c | 756 + arch/arm/mm/blockops.c | 184 + arch/arm/mm/cache-v3.S | 137 + arch/arm/mm/cache-v4.S | 139 + arch/arm/mm/cache-v4wb.S | 216 + arch/arm/mm/cache-v4wt.S | 188 + arch/arm/mm/cache-v6.S | 227 + arch/arm/mm/consistent.c | 451 + arch/arm/mm/copypage-v3.S | 67 + arch/arm/mm/copypage-v4mc.S | 80 + arch/arm/mm/copypage-v4wb.S | 79 + arch/arm/mm/copypage-v4wt.S | 73 + arch/arm/mm/copypage-v6.c | 155 + arch/arm/mm/copypage-xscale.S | 113 + arch/arm/mm/discontig.c | 49 + arch/arm/mm/extable.c | 16 + arch/arm/mm/fault-armv.c | 223 + arch/arm/mm/fault.c | 462 + arch/arm/mm/fault.h | 6 + arch/arm/mm/flush.c | 94 + arch/arm/mm/init.c | 621 + arch/arm/mm/ioremap.c | 172 + arch/arm/mm/minicache.c | 73 + arch/arm/mm/mm-armv.c | 760 + arch/arm/mm/mmap.c | 109 + arch/arm/mm/mmu.c | 45 + arch/arm/mm/proc-arm1020.S | 530 + arch/arm/mm/proc-arm1020e.S | 513 + arch/arm/mm/proc-arm1022.S | 495 + arch/arm/mm/proc-arm1026.S | 491 + arch/arm/mm/proc-arm6_7.S | 404 + arch/arm/mm/proc-arm720.S | 267 + arch/arm/mm/proc-arm920.S | 480 + arch/arm/mm/proc-arm922.S | 484 + arch/arm/mm/proc-arm925.S | 562 + arch/arm/mm/proc-arm926.S | 495 + arch/arm/mm/proc-macros.S | 51 + arch/arm/mm/proc-sa110.S | 272 + arch/arm/mm/proc-sa1100.S | 323 + arch/arm/mm/proc-syms.c | 40 + arch/arm/mm/proc-v6.S | 272 + arch/arm/mm/proc-xscale.S | 934 + arch/arm/mm/tlb-v3.S | 52 + arch/arm/mm/tlb-v4.S | 65 + arch/arm/mm/tlb-v4wb.S | 77 + arch/arm/mm/tlb-v4wbi.S | 68 + arch/arm/mm/tlb-v6.S | 92 + arch/arm/nwfpe/ARM-gcc.h | 120 + arch/arm/nwfpe/ChangeLog | 91 + arch/arm/nwfpe/Makefile | 13 + arch/arm/nwfpe/double_cpdo.c | 167 + arch/arm/nwfpe/entry.S | 119 + arch/arm/nwfpe/entry26.S | 112 + arch/arm/nwfpe/extended_cpdo.c | 154 + arch/arm/nwfpe/fpa11.c | 143 + arch/arm/nwfpe/fpa11.h | 93 + arch/arm/nwfpe/fpa11.inl | 51 + arch/arm/nwfpe/fpa11_cpdo.c | 132 + arch/arm/nwfpe/fpa11_cpdt.c | 392 + arch/arm/nwfpe/fpa11_cprt.c | 369 + arch/arm/nwfpe/fpmodule.c | 173 + arch/arm/nwfpe/fpmodule.h | 47 + arch/arm/nwfpe/fpmodule.inl | 74 + arch/arm/nwfpe/fpopcode.c | 90 + arch/arm/nwfpe/fpopcode.h | 479 + arch/arm/nwfpe/fpsr.h | 108 + arch/arm/nwfpe/milieu.h | 48 + arch/arm/nwfpe/single_cpdo.c | 124 + arch/arm/nwfpe/softfloat-macros | 740 + arch/arm/nwfpe/softfloat-specialize | 366 + arch/arm/nwfpe/softfloat.c | 3443 +++ arch/arm/nwfpe/softfloat.h | 278 + arch/arm/oprofile/Kconfig | 23 + arch/arm/oprofile/Makefile | 11 + arch/arm/oprofile/common.c | 156 + arch/arm/oprofile/init.c | 31 + arch/arm/oprofile/op_arm_model.h | 29 + arch/arm/oprofile/op_counter.h | 29 + arch/arm/oprofile/op_model_xscale.c | 443 + arch/arm/tools/Makefile | 9 + arch/arm/tools/gen-mach-types | 73 + arch/arm/tools/mach-types | 726 + arch/arm/vfp/Makefile | 12 + arch/arm/vfp/entry.S | 45 + arch/arm/vfp/vfp.h | 344 + arch/arm/vfp/vfpdouble.c | 1186 + arch/arm/vfp/vfphw.S | 215 + arch/arm/vfp/vfpinstr.h | 88 + arch/arm/vfp/vfpmodule.c | 288 + arch/arm/vfp/vfpsingle.c | 1224 + arch/arm26/ACKNOWLEDGEMENTS | 29 + arch/arm26/Kconfig | 227 + arch/arm26/Kconfig.debug | 50 + arch/arm26/Makefile | 118 + arch/arm26/boot/Makefile | 80 + arch/arm26/boot/compressed/Makefile | 50 + arch/arm26/boot/compressed/head.S | 517 + arch/arm26/boot/compressed/hw-bse.c | 74 + arch/arm26/boot/compressed/ll_char_wr.S | 162 + arch/arm26/boot/compressed/misc.c | 316 + arch/arm26/boot/compressed/uncompress.h | 110 + arch/arm26/boot/compressed/vmlinux.lds.in | 60 + arch/arm26/boot/install.sh | 62 + arch/arm26/defconfig | 362 + arch/arm26/kernel/Makefile | 17 + arch/arm26/kernel/armksyms.c | 220 + arch/arm26/kernel/asm-offsets.c | 63 + arch/arm26/kernel/calls.S | 265 + arch/arm26/kernel/compat.c | 174 + arch/arm26/kernel/dma.c | 273 + arch/arm26/kernel/ecard.c | 850 + arch/arm26/kernel/entry.S | 961 + arch/arm26/kernel/fiq.c | 202 + arch/arm26/kernel/head.S | 113 + arch/arm26/kernel/init_task.c | 49 + arch/arm26/kernel/irq.c | 716 + arch/arm26/kernel/process.c | 401 + arch/arm26/kernel/ptrace.c | 744 + arch/arm26/kernel/ptrace.h | 13 + arch/arm26/kernel/semaphore.c | 223 + arch/arm26/kernel/setup.c | 573 + arch/arm26/kernel/signal.c | 540 + arch/arm26/kernel/sys_arm.c | 324 + arch/arm26/kernel/time.c | 234 + arch/arm26/kernel/traps.c | 548 + arch/arm26/kernel/vmlinux-arm26-xip.lds.in | 134 + arch/arm26/kernel/vmlinux-arm26.lds.in | 127 + arch/arm26/kernel/vmlinux.lds.S | 12 + arch/arm26/lib/Makefile | 26 + arch/arm26/lib/ashldi3.c | 61 + arch/arm26/lib/ashrdi3.c | 61 + arch/arm26/lib/backtrace.S | 145 + arch/arm26/lib/changebit.S | 28 + arch/arm26/lib/clearbit.S | 31 + arch/arm26/lib/copy_page.S | 62 + arch/arm26/lib/csumipv6.S | 32 + arch/arm26/lib/csumpartial.S | 130 + arch/arm26/lib/csumpartialcopy.S | 52 + arch/arm26/lib/csumpartialcopygeneric.S | 352 + arch/arm26/lib/csumpartialcopyuser.S | 115 + arch/arm26/lib/delay.S | 57 + arch/arm26/lib/ecard.S | 41 + arch/arm26/lib/findbit.S | 67 + arch/arm26/lib/floppydma.S | 32 + arch/arm26/lib/gcclib.h | 21 + arch/arm26/lib/getuser.S | 112 + arch/arm26/lib/io-acorn.S | 71 + arch/arm26/lib/io-readsb.S | 116 + arch/arm26/lib/io-readsl.S | 78 + arch/arm26/lib/io-readsw.S | 107 + arch/arm26/lib/io-writesb.S | 122 + arch/arm26/lib/io-writesl.S | 56 + arch/arm26/lib/io-writesw.S | 127 + arch/arm26/lib/kbd.c | 279 + arch/arm26/lib/lib1funcs.S | 314 + arch/arm26/lib/longlong.h | 184 + arch/arm26/lib/lshrdi3.c | 61 + arch/arm26/lib/memchr.S | 25 + arch/arm26/lib/memcpy.S | 318 + arch/arm26/lib/memset.S | 80 + arch/arm26/lib/memzero.S | 80 + arch/arm26/lib/muldi3.c | 77 + arch/arm26/lib/putuser.S | 109 + arch/arm26/lib/setbit.S | 29 + arch/arm26/lib/strchr.S | 25 + arch/arm26/lib/strrchr.S | 25 + arch/arm26/lib/testchangebit.S | 29 + arch/arm26/lib/testclearbit.S | 29 + arch/arm26/lib/testsetbit.S | 29 + arch/arm26/lib/uaccess-kernel.S | 173 + arch/arm26/lib/uaccess-user.S | 718 + arch/arm26/lib/ucmpdi2.c | 51 + arch/arm26/lib/udivdi3.c | 242 + arch/arm26/machine/Makefile | 8 + arch/arm26/machine/dma.c | 215 + arch/arm26/machine/irq.c | 165 + arch/arm26/machine/latches.c | 72 + arch/arm26/mm/Makefile | 6 + arch/arm26/mm/extable.c | 25 + arch/arm26/mm/fault.c | 318 + arch/arm26/mm/fault.h | 5 + arch/arm26/mm/init.c | 412 + arch/arm26/mm/memc.c | 202 + arch/arm26/mm/proc-funcs.S | 359 + arch/arm26/mm/small_page.c | 194 + arch/arm26/nwfpe/ARM-gcc.h | 120 + arch/arm26/nwfpe/ChangeLog | 83 + arch/arm26/nwfpe/Makefile | 15 + arch/arm26/nwfpe/double_cpdo.c | 288 + arch/arm26/nwfpe/entry.S | 114 + arch/arm26/nwfpe/extended_cpdo.c | 273 + arch/arm26/nwfpe/fpa11.c | 221 + arch/arm26/nwfpe/fpa11.h | 87 + arch/arm26/nwfpe/fpa11.inl | 51 + arch/arm26/nwfpe/fpa11_cpdo.c | 117 + arch/arm26/nwfpe/fpa11_cpdt.c | 368 + arch/arm26/nwfpe/fpa11_cprt.c | 289 + arch/arm26/nwfpe/fpmodule.c | 182 + arch/arm26/nwfpe/fpmodule.h | 47 + arch/arm26/nwfpe/fpmodule.inl | 84 + arch/arm26/nwfpe/fpopcode.c | 148 + arch/arm26/nwfpe/fpopcode.h | 390 + arch/arm26/nwfpe/fpsr.h | 108 + arch/arm26/nwfpe/milieu.h | 48 + arch/arm26/nwfpe/single_cpdo.c | 255 + arch/arm26/nwfpe/softfloat-macros | 740 + arch/arm26/nwfpe/softfloat-specialize | 366 + arch/arm26/nwfpe/softfloat.c | 3439 +++ arch/arm26/nwfpe/softfloat.h | 232 + arch/cris/Kconfig | 180 + arch/cris/Kconfig.debug | 41 + arch/cris/Makefile | 112 + arch/cris/arch-v10/Kconfig | 422 + arch/cris/arch-v10/README.mm | 244 + arch/cris/arch-v10/boot/Makefile | 12 + arch/cris/arch-v10/boot/compressed/Makefile | 40 + arch/cris/arch-v10/boot/compressed/README | 25 + .../arch-v10/boot/compressed/decompress.ld | 29 + arch/cris/arch-v10/boot/compressed/head.S | 111 + arch/cris/arch-v10/boot/compressed/misc.c | 273 + arch/cris/arch-v10/boot/rescue/Makefile | 55 + arch/cris/arch-v10/boot/rescue/head.S | 333 + arch/cris/arch-v10/boot/rescue/kimagerescue.S | 144 + arch/cris/arch-v10/boot/rescue/rescue.ld | 20 + arch/cris/arch-v10/boot/rescue/testrescue.S | 26 + arch/cris/arch-v10/boot/tools/build.c | 288 + arch/cris/arch-v10/defconfig | 505 + arch/cris/arch-v10/drivers/Kconfig | 963 + arch/cris/arch-v10/drivers/Makefile | 12 + arch/cris/arch-v10/drivers/axisflashmap.c | 541 + arch/cris/arch-v10/drivers/ds1302.c | 602 + arch/cris/arch-v10/drivers/eeprom.c | 945 + arch/cris/arch-v10/drivers/gpio.c | 944 + arch/cris/arch-v10/drivers/i2c.c | 730 + arch/cris/arch-v10/drivers/i2c.h | 18 + arch/cris/arch-v10/drivers/pcf8563.c | 313 + arch/cris/arch-v10/kernel/Makefile | 17 + arch/cris/arch-v10/kernel/asm-offsets.c | 47 + arch/cris/arch-v10/kernel/crisksyms.c | 17 + arch/cris/arch-v10/kernel/debugport.c | 531 + arch/cris/arch-v10/kernel/entry.S | 1132 + arch/cris/arch-v10/kernel/fasttimer.c | 977 + arch/cris/arch-v10/kernel/head.S | 882 + arch/cris/arch-v10/kernel/irq.c | 204 + arch/cris/arch-v10/kernel/kgdb.c | 1568 + arch/cris/arch-v10/kernel/process.c | 270 + arch/cris/arch-v10/kernel/ptrace.c | 314 + arch/cris/arch-v10/kernel/setup.c | 103 + arch/cris/arch-v10/kernel/shadows.c | 36 + arch/cris/arch-v10/kernel/signal.c | 580 + arch/cris/arch-v10/kernel/time.c | 369 + arch/cris/arch-v10/kernel/traps.c | 132 + arch/cris/arch-v10/lib/Makefile | 9 + arch/cris/arch-v10/lib/checksum.S | 124 + arch/cris/arch-v10/lib/checksumcopy.S | 132 + arch/cris/arch-v10/lib/csumcpfruser.S | 64 + arch/cris/arch-v10/lib/dmacopy.c | 43 + arch/cris/arch-v10/lib/dram_init.S | 205 + arch/cris/arch-v10/lib/hw_settings.S | 62 + arch/cris/arch-v10/lib/memset.c | 252 + arch/cris/arch-v10/lib/old_checksum.c | 85 + arch/cris/arch-v10/lib/string.c | 225 + arch/cris/arch-v10/lib/usercopy.c | 523 + arch/cris/arch-v10/mm/Makefile | 6 + arch/cris/arch-v10/mm/fault.c | 117 + arch/cris/arch-v10/mm/init.c | 264 + arch/cris/arch-v10/mm/tlb.c | 248 + arch/cris/arch-v10/output_arch.ld | 2 + arch/cris/arch-v10/vmlinux.lds.S | 120 + arch/cris/defconfig | 591 + arch/cris/kernel/Makefile | 15 + arch/cris/kernel/crisksyms.c | 103 + arch/cris/kernel/irq.c | 297 + arch/cris/kernel/module.c | 121 + arch/cris/kernel/process.c | 280 + arch/cris/kernel/ptrace.c | 119 + arch/cris/kernel/semaphore.c | 130 + arch/cris/kernel/setup.c | 193 + arch/cris/kernel/sys_cris.c | 174 + arch/cris/kernel/time.c | 232 + arch/cris/kernel/traps.c | 144 + arch/cris/mm/Makefile | 6 + arch/cris/mm/fault.c | 387 + arch/cris/mm/init.c | 225 + arch/cris/mm/ioremap.c | 146 + arch/cris/mm/tlb.c | 126 + arch/frv/Kconfig | 357 + arch/frv/Kconfig.debug | 74 + arch/frv/Makefile | 118 + arch/frv/boot/Makefile | 73 + arch/frv/kernel/Makefile | 22 + arch/frv/kernel/break.S | 720 + arch/frv/kernel/cmode.S | 190 + arch/frv/kernel/debug-stub.c | 259 + arch/frv/kernel/dma.c | 464 + arch/frv/kernel/entry-table.S | 295 + arch/frv/kernel/entry.S | 1428 + arch/frv/kernel/frv_ksyms.c | 124 + arch/frv/kernel/gdb-io.c | 216 + arch/frv/kernel/gdb-io.h | 55 + arch/frv/kernel/gdb-stub.c | 2084 ++ arch/frv/kernel/head-mmu-fr451.S | 374 + arch/frv/kernel/head-uc-fr401.S | 311 + arch/frv/kernel/head-uc-fr451.S | 174 + arch/frv/kernel/head-uc-fr555.S | 347 + arch/frv/kernel/head.S | 639 + arch/frv/kernel/head.inc | 50 + arch/frv/kernel/init_task.c | 39 + arch/frv/kernel/irq-mb93091.c | 116 + arch/frv/kernel/irq-mb93093.c | 99 + arch/frv/kernel/irq-mb93493.c | 108 + arch/frv/kernel/irq-routing.c | 291 + arch/frv/kernel/irq.c | 764 + arch/frv/kernel/kernel_thread.S | 77 + arch/frv/kernel/local.h | 56 + arch/frv/kernel/pm-mb93093.c | 66 + arch/frv/kernel/pm.c | 432 + arch/frv/kernel/process.c | 388 + arch/frv/kernel/ptrace.c | 764 + arch/frv/kernel/semaphore.c | 156 + arch/frv/kernel/setup.c | 1194 + arch/frv/kernel/signal.c | 588 + arch/frv/kernel/sleep.S | 374 + arch/frv/kernel/switch_to.S | 496 + arch/frv/kernel/sys_frv.c | 214 + arch/frv/kernel/sysctl.c | 206 + arch/frv/kernel/time.c | 234 + arch/frv/kernel/traps.c | 431 + arch/frv/kernel/uaccess.c | 95 + arch/frv/kernel/vmlinux.lds.S | 187 + arch/frv/lib/Makefile | 8 + arch/frv/lib/__ashldi3.S | 40 + arch/frv/lib/__ashrdi3.S | 41 + arch/frv/lib/__lshrdi3.S | 40 + arch/frv/lib/__muldi3.S | 32 + arch/frv/lib/__negdi2.S | 28 + arch/frv/lib/atomic-ops.S | 265 + arch/frv/lib/cache.S | 98 + arch/frv/lib/checksum.c | 148 + arch/frv/lib/insl_ns.S | 52 + arch/frv/lib/insl_sw.S | 40 + arch/frv/lib/memcpy.S | 135 + arch/frv/lib/memset.S | 182 + arch/frv/lib/outsl_ns.S | 59 + arch/frv/lib/outsl_sw.S | 45 + arch/frv/mb93090-mb00/Makefile | 13 + arch/frv/mb93090-mb00/pci-dma-nommu.c | 152 + arch/frv/mb93090-mb00/pci-dma.c | 105 + arch/frv/mb93090-mb00/pci-frv.c | 288 + arch/frv/mb93090-mb00/pci-frv.h | 47 + arch/frv/mb93090-mb00/pci-irq.c | 70 + arch/frv/mb93090-mb00/pci-vdk.c | 467 + arch/frv/mm/Makefile | 9 + arch/frv/mm/cache-page.c | 66 + arch/frv/mm/dma-alloc.c | 188 + arch/frv/mm/elf-fdpic.c | 123 + arch/frv/mm/extable.c | 91 + arch/frv/mm/fault.c | 325 + arch/frv/mm/highmem.c | 33 + arch/frv/mm/init.c | 241 + arch/frv/mm/kmap.c | 62 + arch/frv/mm/mmu-context.c | 208 + arch/frv/mm/pgalloc.c | 159 + arch/frv/mm/tlb-flush.S | 185 + arch/frv/mm/tlb-miss.S | 631 + arch/frv/mm/unaligned.c | 218 + arch/h8300/Kconfig | 194 + arch/h8300/Kconfig.cpu | 183 + arch/h8300/Kconfig.debug | 68 + arch/h8300/Kconfig.ide | 44 + arch/h8300/Makefile | 78 + arch/h8300/README | 37 + arch/h8300/boot/Makefile | 12 + arch/h8300/defconfig | 356 + arch/h8300/kernel/Makefile | 11 + arch/h8300/kernel/asm-offsets.c | 65 + arch/h8300/kernel/gpio.c | 174 + arch/h8300/kernel/h8300_ksyms.c | 112 + arch/h8300/kernel/init_task.c | 43 + arch/h8300/kernel/ints.c | 255 + arch/h8300/kernel/module.c | 122 + arch/h8300/kernel/process.c | 288 + arch/h8300/kernel/ptrace.c | 277 + arch/h8300/kernel/semaphore.c | 133 + arch/h8300/kernel/setup.c | 248 + arch/h8300/kernel/signal.c | 552 + arch/h8300/kernel/sys_h8300.c | 282 + arch/h8300/kernel/syscalls.S | 340 + arch/h8300/kernel/time.c | 134 + arch/h8300/kernel/traps.c | 169 + arch/h8300/kernel/vmlinux.lds.S | 172 + arch/h8300/lib/Makefile | 8 + arch/h8300/lib/abs.S | 21 + arch/h8300/lib/ashrdi3.c | 63 + arch/h8300/lib/checksum.c | 159 + arch/h8300/lib/memcpy.S | 84 + arch/h8300/lib/memset.S | 61 + arch/h8300/lib/romfs.S | 58 + arch/h8300/mm/Makefile | 5 + arch/h8300/mm/fault.c | 58 + arch/h8300/mm/init.c | 232 + arch/h8300/mm/kmap.c | 59 + arch/h8300/mm/memory.c | 70 + arch/h8300/platform/h8300h/Makefile | 7 + .../h8300/platform/h8300h/aki3068net/Makefile | 6 + .../platform/h8300h/aki3068net/crt0_ram.S | 111 + arch/h8300/platform/h8300h/aki3068net/timer.c | 52 + arch/h8300/platform/h8300h/entry.S | 333 + arch/h8300/platform/h8300h/generic/Makefile | 6 + arch/h8300/platform/h8300h/generic/crt0_ram.S | 108 + arch/h8300/platform/h8300h/generic/crt0_rom.S | 123 + arch/h8300/platform/h8300h/generic/timer.c | 96 + arch/h8300/platform/h8300h/h8max/Makefile | 6 + arch/h8300/platform/h8300h/h8max/crt0_ram.S | 111 + arch/h8300/platform/h8300h/h8max/timer.c | 53 + arch/h8300/platform/h8300h/ints_h8300h.c | 86 + arch/h8300/platform/h8300h/ptrace_h8300h.c | 284 + arch/h8300/platform/h8s/Makefile | 7 + arch/h8300/platform/h8s/edosk2674/Makefile | 6 + arch/h8300/platform/h8s/edosk2674/crt0_ram.S | 131 + arch/h8300/platform/h8s/edosk2674/crt0_rom.S | 187 + arch/h8300/platform/h8s/edosk2674/timer.c | 55 + arch/h8300/platform/h8s/entry.S | 331 + arch/h8300/platform/h8s/generic/Makefile | 6 + arch/h8300/platform/h8s/generic/crt0_ram.S | 128 + arch/h8300/platform/h8s/generic/crt0_rom.S | 129 + arch/h8300/platform/h8s/generic/timer.c | 54 + arch/h8300/platform/h8s/ints.c | 303 + arch/h8300/platform/h8s/ints_h8s.c | 105 + arch/h8300/platform/h8s/ptrace_h8s.c | 84 + arch/i386/Kconfig | 1269 + arch/i386/Kconfig.debug | 72 + arch/i386/Makefile | 173 + arch/i386/boot/Makefile | 104 + arch/i386/boot/bootsect.S | 98 + arch/i386/boot/compressed/Makefile | 25 + arch/i386/boot/compressed/head.S | 128 + arch/i386/boot/compressed/misc.c | 382 + arch/i386/boot/compressed/vmlinux.scr | 9 + arch/i386/boot/edd.S | 176 + arch/i386/boot/install.sh | 40 + arch/i386/boot/mtools.conf.in | 17 + arch/i386/boot/setup.S | 1028 + arch/i386/boot/tools/build.c | 184 + arch/i386/boot/video.S | 2007 ++ arch/i386/crypto/Makefile | 9 + arch/i386/crypto/aes-i586-asm.S | 376 + arch/i386/crypto/aes.c | 520 + arch/i386/defconfig | 1247 + arch/i386/kernel/Makefile | 71 + arch/i386/kernel/acpi/Makefile | 4 + arch/i386/kernel/acpi/boot.c | 908 + arch/i386/kernel/acpi/earlyquirk.c | 51 + arch/i386/kernel/acpi/sleep.c | 93 + arch/i386/kernel/acpi/wakeup.S | 318 + arch/i386/kernel/apic.c | 1278 + arch/i386/kernel/apm.c | 2428 ++ arch/i386/kernel/asm-offsets.c | 72 + arch/i386/kernel/bootflag.c | 99 + arch/i386/kernel/cpu/Makefile | 19 + arch/i386/kernel/cpu/amd.c | 249 + arch/i386/kernel/cpu/centaur.c | 476 + arch/i386/kernel/cpu/changelog | 63 + arch/i386/kernel/cpu/common.c | 634 + arch/i386/kernel/cpu/cpu.h | 30 + arch/i386/kernel/cpu/cpufreq/Kconfig | 231 + arch/i386/kernel/cpu/cpufreq/Makefile | 14 + arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c | 537 + .../i386/kernel/cpu/cpufreq/cpufreq-nforce2.c | 457 + arch/i386/kernel/cpu/cpufreq/elanfreq.c | 312 + arch/i386/kernel/cpu/cpufreq/gx-suspmod.c | 502 + arch/i386/kernel/cpu/cpufreq/longhaul.c | 658 + arch/i386/kernel/cpu/cpufreq/longhaul.h | 466 + arch/i386/kernel/cpu/cpufreq/longrun.c | 326 + arch/i386/kernel/cpu/cpufreq/p4-clockmod.c | 337 + arch/i386/kernel/cpu/cpufreq/powernow-k6.c | 256 + arch/i386/kernel/cpu/cpufreq/powernow-k7.c | 690 + arch/i386/kernel/cpu/cpufreq/powernow-k7.h | 44 + arch/i386/kernel/cpu/cpufreq/powernow-k8.c | 1135 + arch/i386/kernel/cpu/cpufreq/powernow-k8.h | 176 + .../kernel/cpu/cpufreq/speedstep-centrino.c | 715 + .../kernel/cpu/cpufreq/speedstep-est-common.h | 25 + arch/i386/kernel/cpu/cpufreq/speedstep-ich.c | 424 + arch/i386/kernel/cpu/cpufreq/speedstep-lib.c | 385 + arch/i386/kernel/cpu/cpufreq/speedstep-lib.h | 47 + arch/i386/kernel/cpu/cpufreq/speedstep-smi.c | 424 + arch/i386/kernel/cpu/cyrix.c | 439 + arch/i386/kernel/cpu/intel.c | 248 + arch/i386/kernel/cpu/intel_cacheinfo.c | 598 + arch/i386/kernel/cpu/mcheck/Makefile | 2 + arch/i386/kernel/cpu/mcheck/k7.c | 97 + arch/i386/kernel/cpu/mcheck/mce.c | 77 + arch/i386/kernel/cpu/mcheck/mce.h | 14 + arch/i386/kernel/cpu/mcheck/non-fatal.c | 93 + arch/i386/kernel/cpu/mcheck/p4.c | 271 + arch/i386/kernel/cpu/mcheck/p5.c | 54 + arch/i386/kernel/cpu/mcheck/p6.c | 115 + arch/i386/kernel/cpu/mcheck/winchip.c | 37 + arch/i386/kernel/cpu/mtrr/Makefile | 5 + arch/i386/kernel/cpu/mtrr/amd.c | 121 + arch/i386/kernel/cpu/mtrr/centaur.c | 223 + arch/i386/kernel/cpu/mtrr/changelog | 229 + arch/i386/kernel/cpu/mtrr/cyrix.c | 364 + arch/i386/kernel/cpu/mtrr/generic.c | 417 + arch/i386/kernel/cpu/mtrr/if.c | 374 + arch/i386/kernel/cpu/mtrr/main.c | 693 + arch/i386/kernel/cpu/mtrr/mtrr.h | 98 + arch/i386/kernel/cpu/mtrr/state.c | 78 + arch/i386/kernel/cpu/nexgen.c | 63 + arch/i386/kernel/cpu/proc.c | 149 + arch/i386/kernel/cpu/rise.c | 53 + arch/i386/kernel/cpu/transmeta.c | 107 + arch/i386/kernel/cpu/umc.c | 33 + arch/i386/kernel/cpuid.c | 246 + arch/i386/kernel/dmi_scan.c | 487 + arch/i386/kernel/doublefault.c | 65 + arch/i386/kernel/early_printk.c | 2 + arch/i386/kernel/efi.c | 635 + arch/i386/kernel/efi_stub.S | 124 + arch/i386/kernel/entry.S | 950 + arch/i386/kernel/head.S | 521 + arch/i386/kernel/i386_ksyms.c | 195 + arch/i386/kernel/i387.c | 555 + arch/i386/kernel/i8259.c | 429 + arch/i386/kernel/init_task.c | 46 + arch/i386/kernel/io_apic.c | 2545 ++ arch/i386/kernel/ioport.c | 147 + arch/i386/kernel/irq.c | 261 + arch/i386/kernel/kprobes.c | 385 + arch/i386/kernel/ldt.c | 255 + arch/i386/kernel/mca.c | 474 + arch/i386/kernel/microcode.c | 512 + arch/i386/kernel/module.c | 129 + arch/i386/kernel/mpparse.c | 1109 + arch/i386/kernel/msr.c | 346 + arch/i386/kernel/nmi.c | 570 + arch/i386/kernel/numaq.c | 79 + arch/i386/kernel/pci-dma.c | 147 + arch/i386/kernel/process.c | 848 + arch/i386/kernel/ptrace.c | 717 + arch/i386/kernel/quirks.c | 52 + arch/i386/kernel/reboot.c | 382 + arch/i386/kernel/scx200.c | 167 + arch/i386/kernel/semaphore.c | 297 + arch/i386/kernel/setup.c | 1535 + arch/i386/kernel/sigframe.h | 21 + arch/i386/kernel/signal.c | 665 + arch/i386/kernel/smp.c | 612 + arch/i386/kernel/smpboot.c | 1145 + arch/i386/kernel/srat.c | 456 + arch/i386/kernel/summit.c | 180 + arch/i386/kernel/sys_i386.c | 252 + arch/i386/kernel/sysenter.c | 65 + arch/i386/kernel/time.c | 476 + arch/i386/kernel/time_hpet.c | 458 + arch/i386/kernel/timers/Makefile | 9 + arch/i386/kernel/timers/common.c | 160 + arch/i386/kernel/timers/timer.c | 66 + arch/i386/kernel/timers/timer_cyclone.c | 259 + arch/i386/kernel/timers/timer_hpet.c | 191 + arch/i386/kernel/timers/timer_none.c | 39 + arch/i386/kernel/timers/timer_pit.c | 206 + arch/i386/kernel/timers/timer_pm.c | 258 + arch/i386/kernel/timers/timer_tsc.c | 560 + arch/i386/kernel/trampoline.S | 80 + arch/i386/kernel/traps.c | 1084 + arch/i386/kernel/vm86.c | 804 + arch/i386/kernel/vmlinux.lds.S | 134 + arch/i386/kernel/vsyscall-int80.S | 53 + arch/i386/kernel/vsyscall-sigreturn.S | 142 + arch/i386/kernel/vsyscall-sysenter.S | 104 + arch/i386/kernel/vsyscall.S | 15 + arch/i386/kernel/vsyscall.lds.S | 65 + arch/i386/lib/Makefile | 10 + arch/i386/lib/bitops.c | 70 + arch/i386/lib/checksum.S | 496 + arch/i386/lib/dec_and_lock.c | 40 + arch/i386/lib/delay.c | 49 + arch/i386/lib/getuser.S | 70 + arch/i386/lib/memcpy.c | 44 + arch/i386/lib/mmx.c | 399 + arch/i386/lib/putuser.S | 87 + arch/i386/lib/strstr.c | 31 + arch/i386/lib/usercopy.c | 636 + arch/i386/mach-default/Makefile | 5 + arch/i386/mach-default/setup.c | 106 + arch/i386/mach-default/topology.c | 98 + arch/i386/mach-es7000/Makefile | 6 + arch/i386/mach-es7000/es7000.h | 110 + arch/i386/mach-es7000/es7000plat.c | 316 + arch/i386/mach-generic/Makefile | 7 + arch/i386/mach-generic/bigsmp.c | 54 + arch/i386/mach-generic/default.c | 27 + arch/i386/mach-generic/es7000.c | 28 + arch/i386/mach-generic/probe.c | 102 + arch/i386/mach-generic/summit.c | 27 + arch/i386/mach-visws/Makefile | 8 + arch/i386/mach-visws/mpparse.c | 105 + arch/i386/mach-visws/reboot.c | 51 + arch/i386/mach-visws/setup.c | 134 + arch/i386/mach-visws/traps.c | 69 + arch/i386/mach-visws/visws_apic.c | 303 + arch/i386/mach-voyager/Makefile | 8 + arch/i386/mach-voyager/setup.c | 48 + arch/i386/mach-voyager/voyager_basic.c | 325 + arch/i386/mach-voyager/voyager_cat.c | 1178 + arch/i386/mach-voyager/voyager_smp.c | 1931 ++ arch/i386/mach-voyager/voyager_thread.c | 167 + arch/i386/math-emu/Makefile | 30 + arch/i386/math-emu/README | 427 + arch/i386/math-emu/control_w.h | 45 + arch/i386/math-emu/div_Xsig.S | 365 + arch/i386/math-emu/div_small.S | 47 + arch/i386/math-emu/errors.c | 739 + arch/i386/math-emu/exception.h | 53 + arch/i386/math-emu/fpu_arith.c | 174 + arch/i386/math-emu/fpu_asm.h | 32 + arch/i386/math-emu/fpu_aux.c | 204 + arch/i386/math-emu/fpu_emu.h | 217 + arch/i386/math-emu/fpu_entry.c | 760 + arch/i386/math-emu/fpu_etc.c | 143 + arch/i386/math-emu/fpu_proto.h | 140 + arch/i386/math-emu/fpu_system.h | 89 + arch/i386/math-emu/fpu_tags.c | 127 + arch/i386/math-emu/fpu_trig.c | 1845 ++ arch/i386/math-emu/get_address.c | 449 + arch/i386/math-emu/load_store.c | 270 + arch/i386/math-emu/mul_Xsig.S | 176 + arch/i386/math-emu/poly.h | 121 + arch/i386/math-emu/poly_2xm1.c | 156 + arch/i386/math-emu/poly_atan.c | 229 + arch/i386/math-emu/poly_l2.c | 272 + arch/i386/math-emu/poly_sin.c | 397 + arch/i386/math-emu/poly_tan.c | 222 + arch/i386/math-emu/polynom_Xsig.S | 135 + arch/i386/math-emu/reg_add_sub.c | 374 + arch/i386/math-emu/reg_compare.c | 381 + arch/i386/math-emu/reg_constant.c | 120 + arch/i386/math-emu/reg_constant.h | 25 + arch/i386/math-emu/reg_convert.c | 53 + arch/i386/math-emu/reg_divide.c | 207 + arch/i386/math-emu/reg_ld_str.c | 1370 + arch/i386/math-emu/reg_mul.c | 132 + arch/i386/math-emu/reg_norm.S | 147 + arch/i386/math-emu/reg_round.S | 708 + arch/i386/math-emu/reg_u_add.S | 167 + arch/i386/math-emu/reg_u_div.S | 471 + arch/i386/math-emu/reg_u_mul.S | 148 + arch/i386/math-emu/reg_u_sub.S | 272 + arch/i386/math-emu/round_Xsig.S | 141 + arch/i386/math-emu/shr_Xsig.S | 87 + arch/i386/math-emu/status_w.h | 65 + arch/i386/math-emu/version.h | 12 + arch/i386/math-emu/wm_shrx.S | 204 + arch/i386/math-emu/wm_sqrt.S | 470 + arch/i386/mm/Makefile | 10 + arch/i386/mm/boot_ioremap.c | 97 + arch/i386/mm/discontig.c | 383 + arch/i386/mm/extable.c | 36 + arch/i386/mm/fault.c | 552 + arch/i386/mm/highmem.c | 89 + arch/i386/mm/hugetlbpage.c | 431 + arch/i386/mm/init.c | 696 + arch/i386/mm/ioremap.c | 320 + arch/i386/mm/mmap.c | 76 + arch/i386/mm/pageattr.c | 221 + arch/i386/mm/pgtable.c | 260 + arch/i386/oprofile/Kconfig | 23 + arch/i386/oprofile/Makefile | 12 + arch/i386/oprofile/backtrace.c | 111 + arch/i386/oprofile/init.c | 48 + arch/i386/oprofile/nmi_int.c | 427 + arch/i386/oprofile/nmi_timer_int.c | 55 + arch/i386/oprofile/op_counter.h | 29 + arch/i386/oprofile/op_model_athlon.c | 149 + arch/i386/oprofile/op_model_p4.c | 725 + arch/i386/oprofile/op_model_ppro.c | 143 + arch/i386/oprofile/op_x86_model.h | 50 + arch/i386/pci/Makefile | 14 + arch/i386/pci/acpi.c | 53 + arch/i386/pci/common.c | 251 + arch/i386/pci/direct.c | 289 + arch/i386/pci/fixup.c | 386 + arch/i386/pci/i386.c | 304 + arch/i386/pci/irq.c | 1119 + arch/i386/pci/legacy.c | 54 + arch/i386/pci/mmconfig.c | 122 + arch/i386/pci/numa.c | 130 + arch/i386/pci/pcbios.c | 487 + arch/i386/pci/pci.h | 74 + arch/i386/pci/visws.c | 110 + arch/i386/power/Makefile | 2 + arch/i386/power/cpu.c | 152 + arch/i386/power/swsusp.S | 73 + arch/ia64/Kconfig | 420 + arch/ia64/Kconfig.debug | 64 + arch/ia64/Makefile | 115 + arch/ia64/configs/bigsur_defconfig | 1172 + arch/ia64/configs/sim_defconfig | 534 + arch/ia64/configs/sn2_defconfig | 1038 + arch/ia64/configs/tiger_defconfig | 1098 + arch/ia64/configs/zx1_defconfig | 1273 + arch/ia64/defconfig | 1199 + arch/ia64/dig/Makefile | 9 + arch/ia64/dig/machvec.c | 3 + arch/ia64/dig/setup.c | 86 + arch/ia64/hp/common/Makefile | 10 + arch/ia64/hp/common/hwsw_iommu.c | 185 + arch/ia64/hp/common/sba_iommu.c | 2121 ++ arch/ia64/hp/sim/Kconfig | 20 + arch/ia64/hp/sim/Makefile | 16 + arch/ia64/hp/sim/boot/Makefile | 37 + arch/ia64/hp/sim/boot/boot_head.S | 144 + arch/ia64/hp/sim/boot/bootloader.c | 176 + arch/ia64/hp/sim/boot/bootloader.lds | 65 + arch/ia64/hp/sim/boot/fw-emu.c | 398 + arch/ia64/hp/sim/boot/ssc.h | 35 + arch/ia64/hp/sim/hpsim.S | 10 + arch/ia64/hp/sim/hpsim_console.c | 65 + arch/ia64/hp/sim/hpsim_irq.c | 51 + arch/ia64/hp/sim/hpsim_machvec.c | 3 + arch/ia64/hp/sim/hpsim_setup.c | 52 + arch/ia64/hp/sim/hpsim_ssc.h | 36 + arch/ia64/hp/sim/simeth.c | 530 + arch/ia64/hp/sim/simscsi.c | 404 + arch/ia64/hp/sim/simserial.c | 1032 + arch/ia64/hp/zx1/Makefile | 8 + arch/ia64/hp/zx1/hpzx1_machvec.c | 3 + arch/ia64/hp/zx1/hpzx1_swiotlb_machvec.c | 3 + arch/ia64/ia32/Makefile | 12 + arch/ia64/ia32/binfmt_elf32.c | 294 + arch/ia64/ia32/elfcore32.h | 138 + arch/ia64/ia32/ia32_entry.S | 500 + arch/ia64/ia32/ia32_ioctl.c | 48 + arch/ia64/ia32/ia32_ldt.c | 147 + arch/ia64/ia32/ia32_signal.c | 1036 + arch/ia64/ia32/ia32_support.c | 264 + arch/ia64/ia32/ia32_traps.c | 156 + arch/ia64/ia32/ia32priv.h | 544 + arch/ia64/ia32/sys_ia32.c | 2747 ++ arch/ia64/install.sh | 40 + arch/ia64/kernel/Makefile | 52 + arch/ia64/kernel/acpi-ext.c | 100 + arch/ia64/kernel/acpi.c | 841 + arch/ia64/kernel/asm-offsets.c | 239 + arch/ia64/kernel/brl_emu.c | 234 + arch/ia64/kernel/cyclone.c | 109 + arch/ia64/kernel/domain.c | 382 + arch/ia64/kernel/efi.c | 832 + arch/ia64/kernel/efi_stub.S | 86 + arch/ia64/kernel/entry.S | 1587 + arch/ia64/kernel/entry.h | 82 + arch/ia64/kernel/fsys.S | 884 + arch/ia64/kernel/gate-data.S | 3 + arch/ia64/kernel/gate.S | 372 + arch/ia64/kernel/gate.lds.S | 95 + arch/ia64/kernel/head.S | 996 + arch/ia64/kernel/ia64_ksyms.c | 127 + arch/ia64/kernel/init_task.c | 46 + arch/ia64/kernel/iosapic.c | 827 + arch/ia64/kernel/irq.c | 238 + arch/ia64/kernel/irq_ia64.c | 278 + arch/ia64/kernel/irq_lsapic.c | 37 + arch/ia64/kernel/ivt.S | 1619 + arch/ia64/kernel/machvec.c | 70 + arch/ia64/kernel/mca.c | 1470 + arch/ia64/kernel/mca_asm.S | 928 + arch/ia64/kernel/mca_drv.c | 639 + arch/ia64/kernel/mca_drv.h | 113 + arch/ia64/kernel/mca_drv_asm.S | 45 + arch/ia64/kernel/minstate.h | 251 + arch/ia64/kernel/module.c | 952 + arch/ia64/kernel/pal.S | 302 + arch/ia64/kernel/palinfo.c | 1023 + arch/ia64/kernel/patch.c | 189 + arch/ia64/kernel/perfmon.c | 6676 +++++ arch/ia64/kernel/perfmon_default_smpl.c | 306 + arch/ia64/kernel/perfmon_generic.h | 45 + arch/ia64/kernel/perfmon_itanium.h | 115 + arch/ia64/kernel/perfmon_mckinley.h | 187 + arch/ia64/kernel/process.c | 800 + arch/ia64/kernel/ptrace.c | 1627 + arch/ia64/kernel/sal.c | 302 + arch/ia64/kernel/salinfo.c | 629 + arch/ia64/kernel/semaphore.c | 165 + arch/ia64/kernel/setup.c | 723 + arch/ia64/kernel/sigframe.h | 25 + arch/ia64/kernel/signal.c | 691 + arch/ia64/kernel/smp.c | 376 + arch/ia64/kernel/smpboot.c | 692 + arch/ia64/kernel/sys_ia64.c | 298 + arch/ia64/kernel/time.c | 255 + arch/ia64/kernel/topology.c | 92 + arch/ia64/kernel/traps.c | 609 + arch/ia64/kernel/unaligned.c | 1521 + arch/ia64/kernel/unwind.c | 2306 ++ arch/ia64/kernel/unwind_decoder.c | 459 + arch/ia64/kernel/unwind_i.h | 164 + arch/ia64/kernel/vmlinux.lds.S | 251 + arch/ia64/lib/Makefile | 52 + arch/ia64/lib/bitop.c | 88 + arch/ia64/lib/carta_random.S | 54 + arch/ia64/lib/checksum.c | 102 + arch/ia64/lib/clear_page.S | 77 + arch/ia64/lib/clear_user.S | 209 + arch/ia64/lib/copy_page.S | 98 + arch/ia64/lib/copy_page_mck.S | 185 + arch/ia64/lib/copy_user.S | 610 + arch/ia64/lib/csum_partial_copy.c | 151 + arch/ia64/lib/dec_and_lock.c | 42 + arch/ia64/lib/do_csum.S | 323 + arch/ia64/lib/flush.S | 39 + arch/ia64/lib/idiv32.S | 83 + arch/ia64/lib/idiv64.S | 80 + arch/ia64/lib/io.c | 165 + arch/ia64/lib/ip_fast_csum.S | 90 + arch/ia64/lib/memcpy.S | 301 + arch/ia64/lib/memcpy_mck.S | 661 + arch/ia64/lib/memset.S | 362 + arch/ia64/lib/strlen.S | 192 + arch/ia64/lib/strlen_user.S | 198 + arch/ia64/lib/strncpy_from_user.S | 44 + arch/ia64/lib/strnlen_user.S | 45 + arch/ia64/lib/swiotlb.c | 658 + arch/ia64/lib/xor.S | 184 + arch/ia64/mm/Makefile | 12 + arch/ia64/mm/contig.c | 299 + arch/ia64/mm/discontig.c | 737 + arch/ia64/mm/extable.c | 90 + arch/ia64/mm/fault.c | 261 + arch/ia64/mm/hugetlbpage.c | 357 + arch/ia64/mm/init.c | 597 + arch/ia64/mm/numa.c | 49 + arch/ia64/mm/tlb.c | 190 + arch/ia64/module.lds | 13 + arch/ia64/oprofile/Kconfig | 26 + arch/ia64/oprofile/Makefile | 10 + arch/ia64/oprofile/backtrace.c | 150 + arch/ia64/oprofile/init.c | 38 + arch/ia64/oprofile/perfmon.c | 100 + arch/ia64/pci/Makefile | 4 + arch/ia64/pci/pci.c | 735 + arch/ia64/scripts/check-gas | 15 + arch/ia64/scripts/check-gas-asm.S | 2 + arch/ia64/scripts/check-model.c | 1 + arch/ia64/scripts/check-segrel.S | 4 + arch/ia64/scripts/check-segrel.lds | 11 + arch/ia64/scripts/check-serialize.S | 2 + arch/ia64/scripts/check-text-align.S | 6 + arch/ia64/scripts/toolchain-flags | 53 + arch/ia64/scripts/unwcheck.py | 64 + arch/ia64/sn/Makefile | 14 + arch/ia64/sn/include/ioerror.h | 81 + arch/ia64/sn/include/pci/pcibr_provider.h | 149 + .../sn/include/pci/pcibus_provider_defs.h | 43 + arch/ia64/sn/include/pci/pcidev.h | 54 + arch/ia64/sn/include/pci/pic.h | 261 + arch/ia64/sn/include/pci/tiocp.h | 256 + arch/ia64/sn/include/tio.h | 37 + arch/ia64/sn/include/xtalk/hubdev.h | 67 + arch/ia64/sn/include/xtalk/xbow.h | 291 + arch/ia64/sn/include/xtalk/xwidgetdev.h | 70 + arch/ia64/sn/kernel/Makefile | 12 + arch/ia64/sn/kernel/bte.c | 453 + arch/ia64/sn/kernel/bte_error.c | 198 + arch/ia64/sn/kernel/huberror.c | 201 + arch/ia64/sn/kernel/idle.c | 30 + arch/ia64/sn/kernel/io_init.c | 411 + arch/ia64/sn/kernel/iomv.c | 70 + arch/ia64/sn/kernel/irq.c | 431 + arch/ia64/sn/kernel/klconflib.c | 108 + arch/ia64/sn/kernel/machvec.c | 11 + arch/ia64/sn/kernel/mca.c | 135 + arch/ia64/sn/kernel/setup.c | 621 + arch/ia64/sn/kernel/sn2/Makefile | 13 + arch/ia64/sn/kernel/sn2/cache.c | 34 + arch/ia64/sn/kernel/sn2/io.c | 101 + arch/ia64/sn/kernel/sn2/prominfo_proc.c | 279 + arch/ia64/sn/kernel/sn2/ptc_deadlock.S | 82 + arch/ia64/sn/kernel/sn2/sn2_smp.c | 295 + arch/ia64/sn/kernel/sn2/sn_hwperf.c | 690 + arch/ia64/sn/kernel/sn2/sn_proc_fs.c | 149 + arch/ia64/sn/kernel/sn2/timer.c | 36 + arch/ia64/sn/kernel/sn2/timer_interrupt.c | 63 + arch/ia64/sn/pci/Makefile | 10 + arch/ia64/sn/pci/pci_dma.c | 363 + arch/ia64/sn/pci/pcibr/Makefile | 11 + arch/ia64/sn/pci/pcibr/pcibr_ate.c | 188 + arch/ia64/sn/pci/pcibr/pcibr_dma.c | 379 + arch/ia64/sn/pci/pcibr/pcibr_provider.c | 170 + arch/ia64/sn/pci/pcibr/pcibr_reg.c | 282 + arch/m32r/Kconfig | 367 + arch/m32r/Kconfig.debug | 34 + arch/m32r/Makefile | 56 + arch/m32r/boot/Makefile | 19 + arch/m32r/boot/compressed/Makefile | 42 + arch/m32r/boot/compressed/boot.h | 59 + arch/m32r/boot/compressed/head.S | 172 + arch/m32r/boot/compressed/install.sh | 57 + arch/m32r/boot/compressed/m32r_sio.c | 68 + arch/m32r/boot/compressed/misc.c | 210 + arch/m32r/boot/compressed/vmlinux.lds.S | 31 + arch/m32r/boot/compressed/vmlinux.scr | 9 + arch/m32r/boot/setup.S | 167 + arch/m32r/defconfig | 747 + arch/m32r/kernel/Makefile | 20 + arch/m32r/kernel/align.c | 585 + arch/m32r/kernel/entry.S | 1000 + arch/m32r/kernel/head.S | 287 + arch/m32r/kernel/init_task.c | 41 + arch/m32r/kernel/io_m32700ut.c | 472 + arch/m32r/kernel/io_mappi.c | 384 + arch/m32r/kernel/io_mappi2.c | 461 + arch/m32r/kernel/io_oaks32r.c | 251 + arch/m32r/kernel/io_opsput.c | 390 + arch/m32r/kernel/io_usrv.c | 249 + arch/m32r/kernel/irq.c | 91 + arch/m32r/kernel/m32r_ksyms.c | 140 + arch/m32r/kernel/module.c | 259 + arch/m32r/kernel/process.c | 359 + arch/m32r/kernel/ptrace.c | 829 + arch/m32r/kernel/semaphore.c | 186 + arch/m32r/kernel/setup.c | 420 + arch/m32r/kernel/setup_m32700ut.c | 478 + arch/m32r/kernel/setup_mappi.c | 160 + arch/m32r/kernel/setup_mappi2.c | 212 + arch/m32r/kernel/setup_oaks32r.c | 143 + arch/m32r/kernel/setup_opsput.c | 482 + arch/m32r/kernel/setup_usrv.c | 256 + arch/m32r/kernel/signal.c | 438 + arch/m32r/kernel/smp.c | 965 + arch/m32r/kernel/smpboot.c | 630 + arch/m32r/kernel/sys_m32r.c | 217 + arch/m32r/kernel/time.c | 318 + arch/m32r/kernel/traps.c | 332 + arch/m32r/kernel/vmlinux.lds.S | 143 + arch/m32r/lib/Makefile | 7 + arch/m32r/lib/ashxdi3.S | 297 + arch/m32r/lib/checksum.S | 322 + arch/m32r/lib/csum_partial_copy.c | 60 + arch/m32r/lib/delay.c | 126 + arch/m32r/lib/getuser.S | 88 + arch/m32r/lib/memcpy.S | 95 + arch/m32r/lib/memset.S | 181 + arch/m32r/lib/putuser.S | 84 + arch/m32r/lib/strlen.S | 120 + arch/m32r/lib/usercopy.c | 391 + arch/m32r/m32700ut/defconfig.m32700ut.smp | 750 + arch/m32r/m32700ut/defconfig.m32700ut.up | 747 + arch/m32r/m32700ut/dot.gdbinit_200MHz_16MB | 249 + arch/m32r/m32700ut/dot.gdbinit_300MHz_32MB | 249 + arch/m32r/m32700ut/dot.gdbinit_400MHz_32MB | 249 + arch/m32r/mappi/defconfig.nommu | 623 + arch/m32r/mappi/defconfig.smp | 738 + arch/m32r/mappi/defconfig.up | 734 + arch/m32r/mappi/dot.gdbinit | 242 + arch/m32r/mappi/dot.gdbinit.nommu | 245 + arch/m32r/mappi/dot.gdbinit.smp | 344 + arch/m32r/mappi2/defconfig.vdec2 | 725 + arch/m32r/mappi2/dot.gdbinit.vdec2 | 233 + arch/m32r/mm/Makefile | 12 + arch/m32r/mm/cache.c | 65 + arch/m32r/mm/discontig.c | 171 + arch/m32r/mm/extable.c | 22 + arch/m32r/mm/fault-nommu.c | 165 + arch/m32r/mm/fault.c | 583 + arch/m32r/mm/init.c | 247 + arch/m32r/mm/ioremap-nommu.c | 52 + arch/m32r/mm/ioremap.c | 192 + arch/m32r/mm/mmu.S | 350 + arch/m32r/mm/page.S | 82 + arch/m32r/oaks32r/defconfig.nommu | 602 + arch/m32r/oaks32r/dot.gdbinit.nommu | 154 + arch/m32r/oprofile/Kconfig | 23 + arch/m32r/oprofile/Makefile | 9 + arch/m32r/oprofile/init.c | 22 + arch/m32r/opsput/defconfig.opsput | 692 + arch/m32r/opsput/dot.gdbinit | 218 + arch/m68k/Kconfig | 670 + arch/m68k/Kconfig.debug | 5 + arch/m68k/Makefile | 126 + arch/m68k/amiga/Makefile | 7 + arch/m68k/amiga/amiga_ksyms.c | 36 + arch/m68k/amiga/amiints.c | 520 + arch/m68k/amiga/amisound.c | 113 + arch/m68k/amiga/chipram.c | 133 + arch/m68k/amiga/cia.c | 180 + arch/m68k/amiga/config.c | 1007 + arch/m68k/amiga/pcmcia.c | 113 + arch/m68k/apollo/Makefile | 5 + arch/m68k/apollo/config.c | 305 + arch/m68k/apollo/dma.c | 50 + arch/m68k/apollo/dn_ints.c | 125 + arch/m68k/atari/Makefile | 10 + arch/m68k/atari/ataints.c | 648 + arch/m68k/atari/atari_ksyms.c | 35 + arch/m68k/atari/atasound.c | 109 + arch/m68k/atari/atasound.h | 33 + arch/m68k/atari/config.c | 726 + arch/m68k/atari/debug.c | 347 + arch/m68k/atari/hades-pci.c | 444 + arch/m68k/atari/stdma.c | 196 + arch/m68k/atari/stram.c | 1247 + arch/m68k/atari/time.c | 348 + arch/m68k/bvme6000/Makefile | 5 + arch/m68k/bvme6000/bvmeints.c | 160 + arch/m68k/bvme6000/config.c | 380 + arch/m68k/bvme6000/rtc.c | 182 + arch/m68k/configs/amiga_defconfig | 968 + arch/m68k/configs/apollo_defconfig | 825 + arch/m68k/configs/atari_defconfig | 880 + arch/m68k/configs/bvme6000_defconfig | 824 + arch/m68k/configs/hp300_defconfig | 824 + arch/m68k/configs/mac_defconfig | 903 + arch/m68k/configs/mvme147_defconfig | 843 + arch/m68k/configs/mvme16x_defconfig | 842 + arch/m68k/configs/q40_defconfig | 915 + arch/m68k/configs/sun3_defconfig | 831 + arch/m68k/configs/sun3x_defconfig | 841 + arch/m68k/defconfig | 629 + arch/m68k/fpsp040/Makefile | 16 + arch/m68k/fpsp040/README | 30 + arch/m68k/fpsp040/bindec.S | 920 + arch/m68k/fpsp040/binstr.S | 140 + arch/m68k/fpsp040/bugfix.S | 496 + arch/m68k/fpsp040/decbin.S | 506 + arch/m68k/fpsp040/do_func.S | 559 + arch/m68k/fpsp040/fpsp.h | 348 + arch/m68k/fpsp040/gen_except.S | 468 + arch/m68k/fpsp040/get_op.S | 676 + arch/m68k/fpsp040/kernel_ex.S | 494 + arch/m68k/fpsp040/res_func.S | 2040 ++ arch/m68k/fpsp040/round.S | 649 + arch/m68k/fpsp040/sacos.S | 115 + arch/m68k/fpsp040/sasin.S | 104 + arch/m68k/fpsp040/satan.S | 478 + arch/m68k/fpsp040/satanh.S | 104 + arch/m68k/fpsp040/scale.S | 371 + arch/m68k/fpsp040/scosh.S | 132 + arch/m68k/fpsp040/setox.S | 865 + arch/m68k/fpsp040/sgetem.S | 141 + arch/m68k/fpsp040/sint.S | 247 + arch/m68k/fpsp040/skeleton.S | 516 + arch/m68k/fpsp040/slog2.S | 188 + arch/m68k/fpsp040/slogn.S | 592 + arch/m68k/fpsp040/smovecr.S | 162 + arch/m68k/fpsp040/srem_mod.S | 422 + arch/m68k/fpsp040/ssin.S | 746 + arch/m68k/fpsp040/ssinh.S | 135 + arch/m68k/fpsp040/stan.S | 455 + arch/m68k/fpsp040/stanh.S | 185 + arch/m68k/fpsp040/sto_res.S | 98 + arch/m68k/fpsp040/stwotox.S | 427 + arch/m68k/fpsp040/tbldo.S | 554 + arch/m68k/fpsp040/util.S | 748 + arch/m68k/fpsp040/x_bsun.S | 47 + arch/m68k/fpsp040/x_fline.S | 104 + arch/m68k/fpsp040/x_operr.S | 356 + arch/m68k/fpsp040/x_ovfl.S | 186 + arch/m68k/fpsp040/x_snan.S | 277 + arch/m68k/fpsp040/x_store.S | 256 + arch/m68k/fpsp040/x_unfl.S | 269 + arch/m68k/fpsp040/x_unimp.S | 77 + arch/m68k/fpsp040/x_unsupp.S | 83 + arch/m68k/hp300/Makefile | 5 + arch/m68k/hp300/README.hp300 | 14 + arch/m68k/hp300/config.c | 279 + arch/m68k/hp300/hp300map.map | 252 + arch/m68k/hp300/ints.c | 175 + arch/m68k/hp300/ints.h | 9 + arch/m68k/hp300/ksyms.c | 9 + arch/m68k/hp300/reboot.S | 16 + arch/m68k/hp300/time.c | 78 + arch/m68k/hp300/time.h | 4 + arch/m68k/ifpsp060/CHANGES | 120 + arch/m68k/ifpsp060/MISC | 201 + arch/m68k/ifpsp060/Makefile | 10 + arch/m68k/ifpsp060/README | 71 + arch/m68k/ifpsp060/TEST.DOC | 208 + arch/m68k/ifpsp060/fplsp.doc | 231 + arch/m68k/ifpsp060/fplsp.sa | 1946 ++ arch/m68k/ifpsp060/fpsp.doc | 295 + arch/m68k/ifpsp060/fpsp.sa | 3401 +++ arch/m68k/ifpsp060/fskeleton.S | 342 + arch/m68k/ifpsp060/ftest.sa | 371 + arch/m68k/ifpsp060/ilsp.doc | 150 + arch/m68k/ifpsp060/ilsp.sa | 101 + arch/m68k/ifpsp060/iskeleton.S | 349 + arch/m68k/ifpsp060/isp.doc | 218 + arch/m68k/ifpsp060/isp.sa | 392 + arch/m68k/ifpsp060/itest.sa | 1281 + arch/m68k/ifpsp060/os.S | 396 + arch/m68k/ifpsp060/pfpsp.sa | 1730 ++ arch/m68k/ifpsp060/src/README-SRC | 12 + arch/m68k/ifpsp060/src/fplsp.S | 10980 +++++++ arch/m68k/ifpsp060/src/fpsp.S | 24785 ++++++++++++++++ arch/m68k/ifpsp060/src/ftest.S | 1456 + arch/m68k/ifpsp060/src/ilsp.S | 932 + arch/m68k/ifpsp060/src/isp.S | 4299 +++ arch/m68k/ifpsp060/src/itest.S | 6386 ++++ arch/m68k/ifpsp060/src/pfpsp.S | 14745 +++++++++ arch/m68k/kernel/Makefile | 18 + arch/m68k/kernel/asm-offsets.c | 109 + arch/m68k/kernel/bios32.c | 515 + arch/m68k/kernel/entry.S | 712 + arch/m68k/kernel/head.S | 3940 +++ arch/m68k/kernel/ints.c | 281 + arch/m68k/kernel/m68k_ksyms.c | 88 + arch/m68k/kernel/module.c | 128 + arch/m68k/kernel/process.c | 405 + arch/m68k/kernel/ptrace.c | 393 + arch/m68k/kernel/semaphore.c | 133 + arch/m68k/kernel/setup.c | 545 + arch/m68k/kernel/signal.c | 1025 + arch/m68k/kernel/sun3-head.S | 104 + arch/m68k/kernel/sys_m68k.c | 671 + arch/m68k/kernel/time.c | 187 + arch/m68k/kernel/traps.c | 1227 + arch/m68k/kernel/vmlinux-std.lds | 95 + arch/m68k/kernel/vmlinux-sun3.lds | 95 + arch/m68k/kernel/vmlinux.lds.S | 11 + arch/m68k/lib/Makefile | 8 + arch/m68k/lib/ashldi3.c | 62 + arch/m68k/lib/ashrdi3.c | 63 + arch/m68k/lib/checksum.c | 422 + arch/m68k/lib/lshrdi3.c | 62 + arch/m68k/lib/memcmp.c | 11 + arch/m68k/lib/memcpy.c | 75 + arch/m68k/lib/memset.c | 68 + arch/m68k/lib/muldi3.c | 63 + arch/m68k/lib/semaphore.S | 53 + arch/m68k/mac/Makefile | 6 + arch/m68k/mac/baboon.c | 126 + arch/m68k/mac/bootparse.c | 122 + arch/m68k/mac/config.c | 902 + arch/m68k/mac/debug.c | 398 + arch/m68k/mac/iop.c | 714 + arch/m68k/mac/mac_ksyms.c | 8 + arch/m68k/mac/mac_penguin.S | 75 + arch/m68k/mac/macboing.c | 309 + arch/m68k/mac/macints.c | 760 + arch/m68k/mac/misc.c | 651 + arch/m68k/mac/oss.c | 301 + arch/m68k/mac/psc.c | 197 + arch/m68k/mac/via.c | 619 + arch/m68k/math-emu/Makefile | 11 + arch/m68k/math-emu/fp_arith.c | 701 + arch/m68k/math-emu/fp_arith.h | 52 + arch/m68k/math-emu/fp_cond.S | 334 + arch/m68k/math-emu/fp_decode.h | 417 + arch/m68k/math-emu/fp_emu.h | 146 + arch/m68k/math-emu/fp_entry.S | 325 + arch/m68k/math-emu/fp_log.c | 223 + arch/m68k/math-emu/fp_move.S | 244 + arch/m68k/math-emu/fp_movem.S | 368 + arch/m68k/math-emu/fp_scan.S | 478 + arch/m68k/math-emu/fp_trig.c | 183 + arch/m68k/math-emu/fp_trig.h | 32 + arch/m68k/math-emu/fp_util.S | 1455 + arch/m68k/math-emu/multi_arith.h | 819 + arch/m68k/mm/Makefile | 8 + arch/m68k/mm/fault.c | 219 + arch/m68k/mm/hwtest.c | 85 + arch/m68k/mm/init.c | 147 + arch/m68k/mm/kmap.c | 361 + arch/m68k/mm/memory.c | 471 + arch/m68k/mm/motorola.c | 285 + arch/m68k/mm/sun3kmap.c | 156 + arch/m68k/mm/sun3mmu.c | 102 + arch/m68k/mvme147/147ints.c | 145 + arch/m68k/mvme147/Makefile | 5 + arch/m68k/mvme147/config.c | 229 + arch/m68k/mvme16x/16xints.c | 149 + arch/m68k/mvme16x/Makefile | 5 + arch/m68k/mvme16x/config.c | 286 + arch/m68k/mvme16x/mvme16x_ksyms.c | 6 + arch/m68k/mvme16x/rtc.c | 172 + arch/m68k/q40/Makefile | 5 + arch/m68k/q40/README | 138 + arch/m68k/q40/config.c | 365 + arch/m68k/q40/q40ints.c | 476 + arch/m68k/sun3/Makefile | 7 + arch/m68k/sun3/config.c | 188 + arch/m68k/sun3/dvma.c | 71 + arch/m68k/sun3/idprom.c | 129 + arch/m68k/sun3/intersil.c | 76 + arch/m68k/sun3/leds.c | 13 + arch/m68k/sun3/mmu_emu.c | 427 + arch/m68k/sun3/prom/Makefile | 7 + arch/m68k/sun3/prom/console.c | 174 + arch/m68k/sun3/prom/init.c | 89 + arch/m68k/sun3/prom/misc.c | 94 + arch/m68k/sun3/prom/printf.c | 61 + arch/m68k/sun3/sbus.c | 27 + arch/m68k/sun3/sun3_ksyms.c | 13 + arch/m68k/sun3/sun3dvma.c | 379 + arch/m68k/sun3/sun3ints.c | 265 + arch/m68k/sun3x/Makefile | 5 + arch/m68k/sun3x/config.c | 99 + arch/m68k/sun3x/dvma.c | 208 + arch/m68k/sun3x/prom.c | 166 + arch/m68k/sun3x/time.c | 103 + arch/m68k/sun3x/time.h | 19 + arch/m68k/tools/amiga/Makefile | 11 + arch/m68k/tools/amiga/dmesg.c | 69 + arch/m68knommu/Kconfig | 581 + arch/m68knommu/Kconfig.debug | 42 + arch/m68knommu/Makefile | 117 + arch/m68knommu/defconfig | 538 + arch/m68knommu/kernel/Makefile | 11 + arch/m68knommu/kernel/asm-offsets.c | 101 + arch/m68knommu/kernel/comempci.c | 989 + arch/m68knommu/kernel/dma.c | 36 + arch/m68knommu/kernel/entry.S | 143 + arch/m68knommu/kernel/init_task.c | 43 + arch/m68knommu/kernel/m68k_ksyms.c | 104 + arch/m68knommu/kernel/module.c | 128 + arch/m68knommu/kernel/process.c | 442 + arch/m68knommu/kernel/ptrace.c | 383 + arch/m68knommu/kernel/semaphore.c | 134 + arch/m68knommu/kernel/setup.c | 347 + arch/m68knommu/kernel/signal.c | 788 + arch/m68knommu/kernel/sys_m68k.c | 208 + arch/m68knommu/kernel/syscalltable.S | 308 + arch/m68knommu/kernel/time.c | 198 + arch/m68knommu/kernel/traps.c | 320 + arch/m68knommu/kernel/vmlinux.lds.S | 348 + arch/m68knommu/lib/Makefile | 7 + arch/m68knommu/lib/ashldi3.c | 62 + arch/m68knommu/lib/ashrdi3.c | 63 + arch/m68knommu/lib/checksum.c | 160 + arch/m68knommu/lib/delay.c | 21 + arch/m68knommu/lib/divsi3.S | 125 + arch/m68knommu/lib/lshrdi3.c | 62 + arch/m68knommu/lib/memcpy.c | 63 + arch/m68knommu/lib/memset.c | 47 + arch/m68knommu/lib/modsi3.S | 113 + arch/m68knommu/lib/muldi3.c | 86 + arch/m68knommu/lib/mulsi3.S | 110 + arch/m68knommu/lib/semaphore.S | 67 + arch/m68knommu/lib/udivsi3.S | 162 + arch/m68knommu/lib/umodsi3.S | 113 + arch/m68knommu/mm/Makefile | 5 + arch/m68knommu/mm/fault.c | 57 + arch/m68knommu/mm/init.c | 231 + arch/m68knommu/mm/kmap.c | 56 + arch/m68knommu/mm/memory.c | 132 + arch/m68knommu/platform/5206/Makefile | 20 + arch/m68knommu/platform/5206/config.c | 117 + arch/m68knommu/platform/5206e/Makefile | 20 + arch/m68knommu/platform/5206e/config.c | 120 + arch/m68knommu/platform/5249/Makefile | 20 + arch/m68knommu/platform/5249/config.c | 114 + arch/m68knommu/platform/5272/Makefile | 20 + arch/m68knommu/platform/5272/config.c | 145 + arch/m68knommu/platform/527x/Makefile | 20 + arch/m68knommu/platform/527x/config.c | 82 + arch/m68knommu/platform/528x/Makefile | 20 + arch/m68knommu/platform/528x/config.c | 82 + arch/m68knommu/platform/5307/Makefile | 29 + arch/m68knommu/platform/5307/config.c | 148 + arch/m68knommu/platform/5307/entry.S | 268 + arch/m68knommu/platform/5307/head.S | 253 + arch/m68knommu/platform/5307/ints.c | 280 + arch/m68knommu/platform/5307/pit.c | 88 + arch/m68knommu/platform/5307/timers.c | 138 + arch/m68knommu/platform/5307/vectors.c | 95 + arch/m68knommu/platform/5407/Makefile | 20 + arch/m68knommu/platform/5407/config.c | 127 + arch/m68knommu/platform/68328/Makefile | 21 + arch/m68knommu/platform/68328/bootlogo.h | 270 + arch/m68knommu/platform/68328/bootlogo.pl | 10 + arch/m68knommu/platform/68328/config.c | 125 + arch/m68knommu/platform/68328/entry.S | 276 + arch/m68knommu/platform/68328/head-pilot.S | 224 + arch/m68knommu/platform/68328/head-ram.S | 171 + arch/m68knommu/platform/68328/head-rom.S | 109 + arch/m68knommu/platform/68328/ints.c | 285 + arch/m68knommu/platform/68360/Makefile | 10 + arch/m68knommu/platform/68360/commproc.c | 308 + arch/m68knommu/platform/68360/config.c | 208 + arch/m68knommu/platform/68360/entry.S | 184 + arch/m68knommu/platform/68360/ints.c | 335 + arch/m68knommu/platform/68EZ328/Makefile | 11 + arch/m68knommu/platform/68EZ328/bootlogo.h | 3204 ++ arch/m68knommu/platform/68EZ328/config.c | 129 + arch/m68knommu/platform/68VZ328/Makefile | 16 + arch/m68knommu/platform/68VZ328/de2/config.c | 191 + .../platform/68VZ328/ucdimm/config.c | 117 + arch/m68knommu/platform/Makefile | 3 + arch/mips/Kconfig | 1658 ++ arch/mips/Kconfig.debug | 76 + arch/mips/Makefile | 767 + arch/mips/arc/Makefile | 10 + arch/mips/arc/arc_con.c | 50 + arch/mips/arc/cmdline.c | 108 + arch/mips/arc/console.c | 63 + arch/mips/arc/env.c | 27 + arch/mips/arc/file.c | 75 + arch/mips/arc/identify.c | 119 + arch/mips/arc/init.c | 48 + arch/mips/arc/memory.c | 170 + arch/mips/arc/misc.c | 108 + arch/mips/arc/promlib.c | 43 + arch/mips/arc/salone.c | 24 + arch/mips/arc/time.c | 25 + arch/mips/arc/tree.c | 127 + arch/mips/au1000/common/Makefile | 15 + arch/mips/au1000/common/au1xxx_irqmap.c | 224 + arch/mips/au1000/common/clocks.c | 96 + arch/mips/au1000/common/cputable.c | 55 + arch/mips/au1000/common/dbdma.c | 836 + arch/mips/au1000/common/dbg_io.c | 122 + arch/mips/au1000/common/dma.c | 243 + arch/mips/au1000/common/int-handler.S | 68 + arch/mips/au1000/common/irq.c | 654 + arch/mips/au1000/common/pci.c | 97 + arch/mips/au1000/common/platform.c | 53 + arch/mips/au1000/common/power.c | 493 + arch/mips/au1000/common/prom.c | 162 + arch/mips/au1000/common/puts.c | 145 + arch/mips/au1000/common/reset.c | 195 + arch/mips/au1000/common/setup.c | 195 + arch/mips/au1000/common/sleeper.S | 149 + arch/mips/au1000/common/time.c | 469 + arch/mips/au1000/common/usbdev.c | 1557 + arch/mips/au1000/csb250/Makefile | 8 + arch/mips/au1000/csb250/board_setup.c | 239 + arch/mips/au1000/csb250/init.c | 95 + arch/mips/au1000/csb250/irqmap.c | 60 + arch/mips/au1000/db1x00/Makefile | 9 + arch/mips/au1000/db1x00/board_setup.c | 127 + arch/mips/au1000/db1x00/init.c | 74 + arch/mips/au1000/db1x00/irqmap.c | 72 + arch/mips/au1000/db1x00/mirage_ts.c | 261 + arch/mips/au1000/hydrogen3/Makefile | 9 + arch/mips/au1000/hydrogen3/board_setup.c | 70 + arch/mips/au1000/hydrogen3/init.c | 77 + arch/mips/au1000/hydrogen3/irqmap.c | 56 + arch/mips/au1000/mtx-1/Makefile | 10 + arch/mips/au1000/mtx-1/board_setup.c | 89 + arch/mips/au1000/mtx-1/init.c | 71 + arch/mips/au1000/mtx-1/irqmap.c | 58 + arch/mips/au1000/pb1000/Makefile | 8 + arch/mips/au1000/pb1000/board_setup.c | 182 + arch/mips/au1000/pb1000/init.c | 69 + arch/mips/au1000/pb1000/irqmap.c | 54 + arch/mips/au1000/pb1100/Makefile | 8 + arch/mips/au1000/pb1100/board_setup.c | 116 + arch/mips/au1000/pb1100/init.c | 70 + arch/mips/au1000/pb1100/irqmap.c | 57 + arch/mips/au1000/pb1500/Makefile | 8 + arch/mips/au1000/pb1500/board_setup.c | 138 + arch/mips/au1000/pb1500/init.c | 69 + arch/mips/au1000/pb1500/irqmap.c | 58 + arch/mips/au1000/pb1550/Makefile | 9 + arch/mips/au1000/pb1550/board_setup.c | 69 + arch/mips/au1000/pb1550/init.c | 69 + arch/mips/au1000/pb1550/irqmap.c | 55 + arch/mips/au1000/xxs1500/Makefile | 9 + arch/mips/au1000/xxs1500/board_setup.c | 91 + arch/mips/au1000/xxs1500/init.c | 68 + arch/mips/au1000/xxs1500/irqmap.c | 66 + arch/mips/boot/Makefile | 49 + arch/mips/boot/addinitrd.c | 131 + arch/mips/boot/ecoff.h | 62 + arch/mips/boot/elf2ecoff.c | 616 + arch/mips/cobalt/Makefile | 7 + arch/mips/cobalt/int-handler.S | 25 + arch/mips/cobalt/irq.c | 102 + arch/mips/cobalt/promcon.c | 87 + arch/mips/cobalt/reset.c | 68 + arch/mips/cobalt/setup.c | 150 + arch/mips/configs/atlas_defconfig | 1104 + arch/mips/configs/capcella_defconfig | 705 + arch/mips/configs/cobalt_defconfig | 680 + arch/mips/configs/db1000_defconfig | 763 + arch/mips/configs/db1100_defconfig | 758 + arch/mips/configs/db1500_defconfig | 1018 + arch/mips/configs/db1550_defconfig | 932 + arch/mips/configs/ddb5476_defconfig | 726 + arch/mips/configs/ddb5477_defconfig | 680 + arch/mips/configs/decstation_defconfig | 660 + arch/mips/configs/e55_defconfig | 683 + arch/mips/configs/ev64120_defconfig | 672 + arch/mips/configs/ev96100_defconfig | 626 + arch/mips/configs/ip22_defconfig | 962 + arch/mips/configs/ip27_defconfig | 827 + arch/mips/configs/ip32_defconfig | 750 + arch/mips/configs/it8172_defconfig | 740 + arch/mips/configs/ivr_defconfig | 686 + arch/mips/configs/jaguar-atx_defconfig | 620 + arch/mips/configs/jmr3927_defconfig | 696 + arch/mips/configs/lasat200_defconfig | 791 + arch/mips/configs/malta_defconfig | 1132 + arch/mips/configs/mpc30x_defconfig | 694 + arch/mips/configs/ocelot_3_defconfig | 886 + arch/mips/configs/ocelot_c_defconfig | 664 + arch/mips/configs/ocelot_defconfig | 624 + arch/mips/configs/ocelot_g_defconfig | 667 + arch/mips/configs/osprey_defconfig | 618 + arch/mips/configs/pb1100_defconfig | 826 + arch/mips/configs/pb1500_defconfig | 855 + arch/mips/configs/pb1550_defconfig | 847 + arch/mips/configs/rm200_defconfig | 1383 + arch/mips/configs/sb1250-swarm_defconfig | 734 + arch/mips/configs/sead_defconfig | 493 + arch/mips/configs/tb0226_defconfig | 763 + arch/mips/configs/tb0229_defconfig | 775 + arch/mips/configs/workpad_defconfig | 687 + arch/mips/configs/yosemite_defconfig | 615 + arch/mips/ddb5xxx/common/Makefile | 5 + arch/mips/ddb5xxx/common/nile4.c | 130 + arch/mips/ddb5xxx/common/prom.c | 142 + arch/mips/ddb5xxx/common/rtc_ds1386.c | 164 + arch/mips/ddb5xxx/ddb5074/Makefile | 8 + arch/mips/ddb5xxx/ddb5074/int-handler.S | 120 + arch/mips/ddb5xxx/ddb5074/irq.c | 159 + arch/mips/ddb5xxx/ddb5074/nile4_pic.c | 287 + arch/mips/ddb5xxx/ddb5074/setup.c | 235 + arch/mips/ddb5xxx/ddb5476/Makefile | 9 + arch/mips/ddb5xxx/ddb5476/dbg_io.c | 136 + arch/mips/ddb5xxx/ddb5476/int-handler.S | 112 + arch/mips/ddb5xxx/ddb5476/irq.c | 143 + arch/mips/ddb5xxx/ddb5476/nile4_pic.c | 190 + arch/mips/ddb5xxx/ddb5476/setup.c | 297 + arch/mips/ddb5xxx/ddb5476/vrc5476_irq.c | 112 + arch/mips/ddb5xxx/ddb5477/Makefile | 10 + arch/mips/ddb5xxx/ddb5477/debug.c | 160 + arch/mips/ddb5xxx/ddb5477/int-handler.S | 75 + arch/mips/ddb5xxx/ddb5477/irq.c | 199 + arch/mips/ddb5xxx/ddb5477/irq_5477.c | 168 + arch/mips/ddb5xxx/ddb5477/kgdb_io.c | 136 + arch/mips/ddb5xxx/ddb5477/lcd44780.c | 92 + arch/mips/ddb5xxx/ddb5477/lcd44780.h | 15 + arch/mips/ddb5xxx/ddb5477/setup.c | 405 + arch/mips/dec/Makefile | 11 + arch/mips/dec/boot/Makefile | 12 + arch/mips/dec/boot/decstation.c | 83 + arch/mips/dec/boot/ld.ecoff | 43 + arch/mips/dec/ecc-berr.c | 280 + arch/mips/dec/int-handler.S | 297 + arch/mips/dec/ioasic-irq.c | 157 + arch/mips/dec/kn02-irq.c | 127 + arch/mips/dec/prom/Makefile | 11 + arch/mips/dec/prom/call_o32.S | 91 + arch/mips/dec/prom/cmdline.c | 39 + arch/mips/dec/prom/console.c | 55 + arch/mips/dec/prom/dectypes.h | 14 + arch/mips/dec/prom/identify.c | 177 + arch/mips/dec/prom/init.c | 134 + arch/mips/dec/prom/locore.S | 30 + arch/mips/dec/prom/memory.c | 130 + arch/mips/dec/promcon.c | 55 + arch/mips/dec/reset.c | 41 + arch/mips/dec/setup.c | 750 + arch/mips/dec/time.c | 200 + arch/mips/dec/wbflush.c | 94 + arch/mips/defconfig | 962 + arch/mips/galileo-boards/ev96100/Makefile | 9 + arch/mips/galileo-boards/ev96100/init.c | 173 + .../mips/galileo-boards/ev96100/int-handler.S | 33 + arch/mips/galileo-boards/ev96100/irq.c | 66 + arch/mips/galileo-boards/ev96100/puts.c | 138 + arch/mips/galileo-boards/ev96100/reset.c | 70 + arch/mips/galileo-boards/ev96100/setup.c | 162 + arch/mips/galileo-boards/ev96100/time.c | 89 + arch/mips/gt64120/common/Makefile | 6 + arch/mips/gt64120/common/pci.c | 147 + arch/mips/gt64120/common/time.c | 100 + arch/mips/gt64120/ev64120/Makefile | 11 + arch/mips/gt64120/ev64120/int-handler.S | 113 + arch/mips/gt64120/ev64120/irq.c | 145 + arch/mips/gt64120/ev64120/promcon.c | 53 + arch/mips/gt64120/ev64120/reset.c | 45 + arch/mips/gt64120/ev64120/serialGT.c | 212 + arch/mips/gt64120/ev64120/setup.c | 103 + arch/mips/gt64120/momenco_ocelot/Makefile | 9 + arch/mips/gt64120/momenco_ocelot/dbg_io.c | 126 + .../mips/gt64120/momenco_ocelot/int-handler.S | 131 + arch/mips/gt64120/momenco_ocelot/irq.c | 67 + arch/mips/gt64120/momenco_ocelot/ocelot_pld.h | 30 + arch/mips/gt64120/momenco_ocelot/prom.c | 73 + arch/mips/gt64120/momenco_ocelot/reset.c | 47 + arch/mips/gt64120/momenco_ocelot/setup.c | 369 + arch/mips/ite-boards/generic/Makefile | 15 + arch/mips/ite-boards/generic/dbg_io.c | 125 + arch/mips/ite-boards/generic/int-handler.S | 63 + arch/mips/ite-boards/generic/irq.c | 304 + arch/mips/ite-boards/generic/it8172_cir.c | 171 + arch/mips/ite-boards/generic/it8172_setup.c | 309 + arch/mips/ite-boards/generic/lpc.c | 144 + arch/mips/ite-boards/generic/pmon_prom.c | 136 + arch/mips/ite-boards/generic/puts.c | 139 + arch/mips/ite-boards/generic/reset.c | 60 + arch/mips/ite-boards/generic/time.c | 247 + arch/mips/ite-boards/ivr/Makefile | 10 + arch/mips/ite-boards/ivr/README | 3 + arch/mips/ite-boards/ivr/init.c | 84 + arch/mips/ite-boards/qed-4n-s01b/Makefile | 10 + arch/mips/ite-boards/qed-4n-s01b/README | 2 + arch/mips/ite-boards/qed-4n-s01b/init.c | 85 + arch/mips/jazz/Makefile | 7 + arch/mips/jazz/int-handler.S | 282 + arch/mips/jazz/io.c | 135 + arch/mips/jazz/irq.c | 100 + arch/mips/jazz/jazzdma.c | 565 + arch/mips/jazz/reset.c | 69 + arch/mips/jazz/setup.c | 101 + arch/mips/jmr3927/common/Makefile | 5 + arch/mips/jmr3927/common/prom.c | 81 + arch/mips/jmr3927/common/puts.c | 168 + arch/mips/jmr3927/common/rtc_ds1742.c | 165 + arch/mips/jmr3927/rbhma3100/Makefile | 9 + arch/mips/jmr3927/rbhma3100/init.c | 77 + arch/mips/jmr3927/rbhma3100/int-handler.S | 74 + arch/mips/jmr3927/rbhma3100/irq.c | 466 + arch/mips/jmr3927/rbhma3100/kgdb_io.c | 155 + arch/mips/jmr3927/rbhma3100/setup.c | 510 + arch/mips/kernel/Makefile | 65 + arch/mips/kernel/binfmt_elfn32.c | 119 + arch/mips/kernel/binfmt_elfo32.c | 139 + arch/mips/kernel/branch.c | 199 + arch/mips/kernel/cpu-bugs64.c | 321 + arch/mips/kernel/cpu-probe.c | 598 + arch/mips/kernel/entry.S | 155 + arch/mips/kernel/gdb-low.S | 370 + arch/mips/kernel/gdb-stub.c | 1091 + arch/mips/kernel/genex.S | 302 + arch/mips/kernel/genrtc.c | 64 + arch/mips/kernel/head.S | 221 + arch/mips/kernel/i8259.c | 331 + arch/mips/kernel/init_task.c | 42 + arch/mips/kernel/ioctl32.c | 58 + arch/mips/kernel/irix5sys.S | 1041 + arch/mips/kernel/irixelf.c | 1326 + arch/mips/kernel/irixinv.c | 77 + arch/mips/kernel/irixioctl.c | 261 + arch/mips/kernel/irixsig.c | 853 + arch/mips/kernel/irq-msc01.c | 189 + arch/mips/kernel/irq-mv6434x.c | 161 + arch/mips/kernel/irq-rm7000.c | 98 + arch/mips/kernel/irq-rm9000.c | 149 + arch/mips/kernel/irq.c | 140 + arch/mips/kernel/irq_cpu.c | 118 + arch/mips/kernel/linux32.c | 1469 + arch/mips/kernel/mips_ksyms.c | 67 + arch/mips/kernel/module-elf32.c | 250 + arch/mips/kernel/module-elf64.c | 274 + arch/mips/kernel/module.c | 53 + arch/mips/kernel/offset.c | 314 + arch/mips/kernel/proc.c | 149 + arch/mips/kernel/process.c | 364 + arch/mips/kernel/ptrace.c | 338 + arch/mips/kernel/ptrace32.c | 285 + arch/mips/kernel/r2300_fpu.S | 126 + arch/mips/kernel/r2300_switch.S | 174 + arch/mips/kernel/r4k_fpu.S | 191 + arch/mips/kernel/r4k_switch.S | 221 + arch/mips/kernel/r6000_fpu.S | 87 + arch/mips/kernel/reset.c | 43 + arch/mips/kernel/scall32-o32.S | 641 + arch/mips/kernel/scall64-64.S | 451 + arch/mips/kernel/scall64-n32.S | 365 + arch/mips/kernel/scall64-o32.S | 488 + arch/mips/kernel/semaphore.c | 164 + arch/mips/kernel/setup.c | 571 + arch/mips/kernel/signal-common.h | 137 + arch/mips/kernel/signal.c | 517 + arch/mips/kernel/signal32.c | 905 + arch/mips/kernel/signal_n32.c | 197 + arch/mips/kernel/smp.c | 425 + arch/mips/kernel/syscall.c | 407 + arch/mips/kernel/sysirix.c | 2179 ++ arch/mips/kernel/time.c | 755 + arch/mips/kernel/traps.c | 1062 + arch/mips/kernel/unaligned.c | 550 + arch/mips/kernel/vmlinux.lds.S | 183 + arch/mips/lasat/Makefile | 14 + arch/mips/lasat/at93c.c | 148 + arch/mips/lasat/at93c.h | 18 + arch/mips/lasat/ds1603.c | 174 + arch/mips/lasat/ds1603.h | 33 + arch/mips/lasat/image/Makefile | 53 + arch/mips/lasat/image/head.S | 31 + arch/mips/lasat/image/romscript.normal | 22 + arch/mips/lasat/interrupt.c | 160 + arch/mips/lasat/lasatIRQ.S | 69 + arch/mips/lasat/lasat_board.c | 277 + arch/mips/lasat/lasat_models.h | 63 + arch/mips/lasat/picvue.c | 240 + arch/mips/lasat/picvue.h | 48 + arch/mips/lasat/picvue_proc.c | 186 + arch/mips/lasat/prom.c | 143 + arch/mips/lasat/prom.h | 6 + arch/mips/lasat/reset.c | 67 + arch/mips/lasat/setup.c | 192 + arch/mips/lasat/sysctl.c | 355 + arch/mips/lasat/sysctl.h | 24 + arch/mips/lib-32/Makefile | 25 + arch/mips/lib-32/csum_partial.S | 240 + arch/mips/lib-32/dump_tlb.c | 222 + arch/mips/lib-32/memset.S | 145 + arch/mips/lib-32/r3k_dump_tlb.c | 176 + arch/mips/lib-32/watch.S | 60 + arch/mips/lib-64/Makefile | 25 + arch/mips/lib-64/csum_partial.S | 242 + arch/mips/lib-64/dump_tlb.c | 211 + arch/mips/lib-64/memset.S | 142 + arch/mips/lib-64/watch.S | 57 + arch/mips/lib/Makefile | 10 + arch/mips/lib/csum_partial_copy.c | 49 + arch/mips/lib/dec_and_lock.c | 55 + arch/mips/lib/iomap.c | 78 + arch/mips/lib/memcpy.S | 508 + arch/mips/lib/promlib.c | 24 + arch/mips/lib/strlen_user.S | 39 + arch/mips/lib/strncpy_user.S | 58 + arch/mips/lib/strnlen_user.S | 45 + arch/mips/math-emu/Makefile | 11 + arch/mips/math-emu/cp1emu.c | 1322 + arch/mips/math-emu/dp_add.c | 183 + arch/mips/math-emu/dp_cmp.c | 67 + arch/mips/math-emu/dp_div.c | 157 + arch/mips/math-emu/dp_fint.c | 80 + arch/mips/math-emu/dp_flong.c | 78 + arch/mips/math-emu/dp_frexp.c | 53 + arch/mips/math-emu/dp_fsp.c | 74 + arch/mips/math-emu/dp_logb.c | 54 + arch/mips/math-emu/dp_modf.c | 80 + arch/mips/math-emu/dp_mul.c | 177 + arch/mips/math-emu/dp_scalb.c | 58 + arch/mips/math-emu/dp_simple.c | 84 + arch/mips/math-emu/dp_sqrt.c | 165 + arch/mips/math-emu/dp_sub.c | 191 + arch/mips/math-emu/dp_tint.c | 124 + arch/mips/math-emu/dp_tlong.c | 127 + arch/mips/math-emu/dsemul.c | 172 + arch/mips/math-emu/dsemul.h | 23 + arch/mips/math-emu/ieee754.c | 138 + arch/mips/math-emu/ieee754.h | 489 + arch/mips/math-emu/ieee754d.c | 138 + arch/mips/math-emu/ieee754dp.c | 243 + arch/mips/math-emu/ieee754dp.h | 83 + arch/mips/math-emu/ieee754int.h | 165 + arch/mips/math-emu/ieee754m.c | 56 + arch/mips/math-emu/ieee754sp.c | 243 + arch/mips/math-emu/ieee754sp.h | 89 + arch/mips/math-emu/ieee754xcpt.c | 49 + arch/mips/math-emu/kernel_linkage.c | 125 + arch/mips/math-emu/sp_add.c | 177 + arch/mips/math-emu/sp_cmp.c | 67 + arch/mips/math-emu/sp_div.c | 157 + arch/mips/math-emu/sp_fdp.c | 77 + arch/mips/math-emu/sp_fint.c | 80 + arch/mips/math-emu/sp_flong.c | 79 + arch/mips/math-emu/sp_frexp.c | 53 + arch/mips/math-emu/sp_logb.c | 54 + arch/mips/math-emu/sp_modf.c | 80 + arch/mips/math-emu/sp_mul.c | 171 + arch/mips/math-emu/sp_scalb.c | 58 + arch/mips/math-emu/sp_simple.c | 84 + arch/mips/math-emu/sp_sqrt.c | 117 + arch/mips/math-emu/sp_sub.c | 184 + arch/mips/math-emu/sp_tint.c | 128 + arch/mips/math-emu/sp_tlong.c | 123 + arch/mips/mips-boards/atlas/Makefile | 20 + arch/mips/mips-boards/atlas/atlas_gdb.c | 97 + arch/mips/mips-boards/atlas/atlas_int.c | 142 + arch/mips/mips-boards/atlas/atlas_setup.c | 95 + arch/mips/mips-boards/generic/Makefile | 26 + arch/mips/mips-boards/generic/cmdline.c | 59 + arch/mips/mips-boards/generic/display.c | 39 + arch/mips/mips-boards/generic/gdb_hook.c | 133 + arch/mips/mips-boards/generic/init.c | 343 + arch/mips/mips-boards/generic/memory.c | 173 + arch/mips/mips-boards/generic/mipsIRQ.S | 153 + arch/mips/mips-boards/generic/pci.c | 163 + arch/mips/mips-boards/generic/printf.c | 79 + arch/mips/mips-boards/generic/reset.c | 73 + arch/mips/mips-boards/generic/time.c | 167 + arch/mips/mips-boards/malta/Makefile | 22 + arch/mips/mips-boards/malta/malta_int.c | 187 + arch/mips/mips-boards/malta/malta_setup.c | 231 + arch/mips/mips-boards/sead/Makefile | 26 + arch/mips/mips-boards/sead/sead_int.c | 51 + arch/mips/mips-boards/sead/sead_setup.c | 84 + arch/mips/mm/Makefile | 44 + arch/mips/mm/c-r3k.c | 349 + arch/mips/mm/c-r4k.c | 1260 + arch/mips/mm/c-sb1.c | 558 + arch/mips/mm/c-tx39.c | 493 + arch/mips/mm/cache.c | 157 + arch/mips/mm/cerr-sb1.c | 543 + arch/mips/mm/cex-gen.S | 42 + arch/mips/mm/cex-sb1.S | 170 + arch/mips/mm/dma-coherent.c | 255 + arch/mips/mm/dma-ip27.c | 257 + arch/mips/mm/dma-ip32.c | 382 + arch/mips/mm/dma-noncoherent.c | 400 + arch/mips/mm/extable.c | 21 + arch/mips/mm/fault.c | 236 + arch/mips/mm/highmem.c | 103 + arch/mips/mm/init.c | 304 + arch/mips/mm/ioremap.c | 202 + arch/mips/mm/pg-r4k.c | 489 + arch/mips/mm/pg-sb1.c | 287 + arch/mips/mm/pgtable-32.c | 97 + arch/mips/mm/pgtable-64.c | 58 + arch/mips/mm/pgtable.c | 36 + arch/mips/mm/sc-ip22.c | 177 + arch/mips/mm/sc-r5k.c | 108 + arch/mips/mm/sc-rm7k.c | 193 + arch/mips/mm/tlb-andes.c | 257 + arch/mips/mm/tlb-r3k.c | 289 + arch/mips/mm/tlb-r4k.c | 419 + arch/mips/mm/tlb-r8k.c | 250 + arch/mips/mm/tlb-sb1.c | 376 + arch/mips/mm/tlbex-fault.S | 28 + arch/mips/mm/tlbex.c | 1815 ++ arch/mips/momentum/jaguar_atx/Makefile | 12 + arch/mips/momentum/jaguar_atx/dbg_io.c | 126 + arch/mips/momentum/jaguar_atx/int-handler.S | 128 + arch/mips/momentum/jaguar_atx/irq.c | 67 + arch/mips/momentum/jaguar_atx/ja-console.c | 106 + .../momentum/jaguar_atx/jaguar_atx_fpga.h | 52 + arch/mips/momentum/jaguar_atx/prom.c | 266 + arch/mips/momentum/jaguar_atx/reset.c | 57 + arch/mips/momentum/jaguar_atx/setup.c | 474 + 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 | 59 + arch/mips/momentum/ocelot_3/setup.c | 398 + arch/mips/momentum/ocelot_c/Makefile | 8 + arch/mips/momentum/ocelot_c/cpci-irq.c | 153 + arch/mips/momentum/ocelot_c/dbg_io.c | 126 + arch/mips/momentum/ocelot_c/int-handler.S | 102 + arch/mips/momentum/ocelot_c/irq.c | 83 + arch/mips/momentum/ocelot_c/ocelot_c_fpga.h | 60 + arch/mips/momentum/ocelot_c/prom.c | 243 + arch/mips/momentum/ocelot_c/reset.c | 59 + arch/mips/momentum/ocelot_c/setup.c | 363 + arch/mips/momentum/ocelot_c/uart-irq.c | 147 + arch/mips/momentum/ocelot_g/Makefile | 8 + arch/mips/momentum/ocelot_g/dbg_io.c | 126 + arch/mips/momentum/ocelot_g/gt-irq.c | 214 + arch/mips/momentum/ocelot_g/int-handler.S | 131 + arch/mips/momentum/ocelot_g/irq.c | 69 + arch/mips/momentum/ocelot_g/ocelot_pld.h | 30 + arch/mips/momentum/ocelot_g/prom.c | 86 + arch/mips/momentum/ocelot_g/reset.c | 47 + arch/mips/momentum/ocelot_g/setup.c | 266 + arch/mips/oprofile/Kconfig | 23 + arch/mips/oprofile/Makefile | 15 + arch/mips/oprofile/common.c | 106 + arch/mips/oprofile/op_impl.h | 37 + arch/mips/oprofile/op_model_rm9000.c | 137 + arch/mips/pci/Makefile | 54 + arch/mips/pci/fixup-atlas.c | 69 + arch/mips/pci/fixup-au1000.c | 123 + arch/mips/pci/fixup-capcella.c | 50 + arch/mips/pci/fixup-cobalt.c | 112 + arch/mips/pci/fixup-ddb5074.c | 21 + arch/mips/pci/fixup-ddb5477.c | 78 + arch/mips/pci/fixup-ev64120.c | 34 + arch/mips/pci/fixup-ev96100.c | 48 + arch/mips/pci/fixup-ip32.c | 51 + arch/mips/pci/fixup-ite8172g.c | 80 + arch/mips/pci/fixup-ivr.c | 75 + arch/mips/pci/fixup-jaguar.c | 43 + arch/mips/pci/fixup-jmr3927.c | 105 + arch/mips/pci/fixup-malta.c | 103 + arch/mips/pci/fixup-mpc30x.c | 50 + arch/mips/pci/fixup-ocelot-c.c | 41 + arch/mips/pci/fixup-ocelot-g.c | 37 + arch/mips/pci/fixup-ocelot.c | 75 + arch/mips/pci/fixup-ocelot3.c | 41 + arch/mips/pci/fixup-rbtx4927.c | 140 + arch/mips/pci/fixup-sb1250.c | 24 + arch/mips/pci/fixup-sni.c | 89 + arch/mips/pci/fixup-tb0219.c | 66 + arch/mips/pci/fixup-tb0226.c | 85 + arch/mips/pci/fixup-vr4133.c | 204 + arch/mips/pci/fixup-yosemite.c | 41 + arch/mips/pci/ops-au1000.c | 325 + arch/mips/pci/ops-bonito64.c | 196 + arch/mips/pci/ops-ddb5074.c | 271 + arch/mips/pci/ops-ddb5476.c | 286 + arch/mips/pci/ops-ddb5477.c | 278 + arch/mips/pci/ops-gt64111.c | 100 + arch/mips/pci/ops-gt64120.c | 154 + arch/mips/pci/ops-gt96100.c | 169 + arch/mips/pci/ops-it8172.c | 215 + arch/mips/pci/ops-mace.c | 91 + arch/mips/pci/ops-marvell.c | 93 + arch/mips/pci/ops-msc.c | 169 + arch/mips/pci/ops-nile4.c | 147 + arch/mips/pci/ops-sni.c | 89 + arch/mips/pci/ops-titan-ht.c | 125 + arch/mips/pci/ops-titan.c | 100 + arch/mips/pci/ops-tx3927.c | 391 + arch/mips/pci/ops-tx4927.c | 209 + arch/mips/pci/ops-vr41xx.c | 126 + arch/mips/pci/pci-ddb5074.c | 79 + arch/mips/pci/pci-ddb5476.c | 93 + arch/mips/pci/pci-ddb5477.c | 207 + arch/mips/pci/pci-ev96100.c | 63 + arch/mips/pci/pci-ip27.c | 489 + arch/mips/pci/pci-ip32.c | 145 + arch/mips/pci/pci-jmr3927.c | 58 + arch/mips/pci/pci-lasat.c | 95 + arch/mips/pci/pci-ocelot-c.c | 143 + arch/mips/pci/pci-ocelot-g.c | 97 + arch/mips/pci/pci-ocelot.c | 107 + arch/mips/pci/pci-sb1250.c | 292 + arch/mips/pci/pci-vr41xx.c | 291 + arch/mips/pci/pci-vr41xx.h | 151 + arch/mips/pci/pci-yosemite.c | 60 + arch/mips/pci/pci.c | 304 + arch/mips/pmc-sierra/yosemite/Makefile | 8 + .../pmc-sierra/yosemite/atmel_read_eeprom.c | 171 + .../pmc-sierra/yosemite/atmel_read_eeprom.h | 69 + arch/mips/pmc-sierra/yosemite/dbg_io.c | 180 + arch/mips/pmc-sierra/yosemite/ht-irq.c | 53 + arch/mips/pmc-sierra/yosemite/ht.c | 454 + arch/mips/pmc-sierra/yosemite/i2c-yosemite.c | 188 + arch/mips/pmc-sierra/yosemite/i2c-yosemite.h | 96 + arch/mips/pmc-sierra/yosemite/irq-handler.S | 93 + arch/mips/pmc-sierra/yosemite/irq.c | 167 + arch/mips/pmc-sierra/yosemite/prom.c | 141 + arch/mips/pmc-sierra/yosemite/py-console.c | 114 + arch/mips/pmc-sierra/yosemite/setup.c | 235 + arch/mips/pmc-sierra/yosemite/setup.h | 32 + arch/mips/pmc-sierra/yosemite/smp.c | 172 + arch/mips/sgi-ip22/Makefile | 11 + arch/mips/sgi-ip22/ip22-berr.c | 114 + arch/mips/sgi-ip22/ip22-eisa.c | 308 + arch/mips/sgi-ip22/ip22-hpc.c | 63 + arch/mips/sgi-ip22/ip22-int.c | 410 + arch/mips/sgi-ip22/ip22-irq.S | 118 + arch/mips/sgi-ip22/ip22-mc.c | 208 + arch/mips/sgi-ip22/ip22-nvram.c | 119 + arch/mips/sgi-ip22/ip22-reset.c | 247 + arch/mips/sgi-ip22/ip22-setup.c | 144 + arch/mips/sgi-ip22/ip22-time.c | 214 + arch/mips/sgi-ip27/Makefile | 12 + arch/mips/sgi-ip27/TODO | 23 + arch/mips/sgi-ip27/ip27-berr.c | 94 + arch/mips/sgi-ip27/ip27-console.c | 76 + arch/mips/sgi-ip27/ip27-dbgio.c | 60 + arch/mips/sgi-ip27/ip27-hubio.c | 186 + arch/mips/sgi-ip27/ip27-init.c | 252 + arch/mips/sgi-ip27/ip27-irq-glue.S | 45 + arch/mips/sgi-ip27/ip27-irq.c | 457 + arch/mips/sgi-ip27/ip27-klconfig.c | 135 + arch/mips/sgi-ip27/ip27-klnuma.c | 135 + arch/mips/sgi-ip27/ip27-memory.c | 586 + arch/mips/sgi-ip27/ip27-nmi.c | 249 + arch/mips/sgi-ip27/ip27-reset.c | 81 + arch/mips/sgi-ip27/ip27-smp.c | 225 + arch/mips/sgi-ip27/ip27-timer.c | 243 + arch/mips/sgi-ip27/ip27-xtalk.c | 135 + arch/mips/sgi-ip32/Makefile | 9 + arch/mips/sgi-ip32/crime.c | 103 + arch/mips/sgi-ip32/ip32-berr.c | 36 + arch/mips/sgi-ip32/ip32-irq-glue.S | 86 + arch/mips/sgi-ip32/ip32-irq.c | 590 + arch/mips/sgi-ip32/ip32-memory.c | 49 + arch/mips/sgi-ip32/ip32-reset.c | 202 + arch/mips/sgi-ip32/ip32-setup.c | 159 + arch/mips/sibyte/cfe/Makefile | 3 + arch/mips/sibyte/cfe/cfe_api.c | 502 + arch/mips/sibyte/cfe/cfe_api.h | 185 + arch/mips/sibyte/cfe/cfe_api_int.h | 152 + arch/mips/sibyte/cfe/cfe_error.h | 85 + arch/mips/sibyte/cfe/console.c | 80 + arch/mips/sibyte/cfe/setup.c | 358 + arch/mips/sibyte/cfe/smp.c | 92 + arch/mips/sibyte/sb1250/Makefile | 8 + arch/mips/sibyte/sb1250/bcm1250_tbprof.c | 390 + arch/mips/sibyte/sb1250/bus_watcher.c | 259 + arch/mips/sibyte/sb1250/irq.c | 431 + arch/mips/sibyte/sb1250/irq_handler.S | 147 + arch/mips/sibyte/sb1250/prom.c | 98 + arch/mips/sibyte/sb1250/setup.c | 206 + arch/mips/sibyte/sb1250/smp.c | 98 + arch/mips/sibyte/sb1250/time.c | 136 + arch/mips/sibyte/swarm/Makefile | 3 + arch/mips/sibyte/swarm/dbg_io.c | 76 + arch/mips/sibyte/swarm/rtc_m41t81.c | 224 + arch/mips/sibyte/swarm/rtc_xicor1241.c | 203 + arch/mips/sibyte/swarm/setup.c | 163 + arch/mips/sibyte/swarm/time.c | 244 + arch/mips/sni/Makefile | 7 + arch/mips/sni/int-handler.S | 106 + arch/mips/sni/irq.c | 194 + arch/mips/sni/pcimt_scache.c | 37 + arch/mips/sni/reset.c | 51 + arch/mips/sni/setup.c | 203 + arch/mips/tx4927/common/Makefile | 12 + arch/mips/tx4927/common/tx4927_dbgio.c | 47 + arch/mips/tx4927/common/tx4927_irq.c | 584 + arch/mips/tx4927/common/tx4927_irq_handler.S | 103 + arch/mips/tx4927/common/tx4927_prom.c | 146 + arch/mips/tx4927/common/tx4927_setup.c | 237 + arch/mips/tx4927/toshiba_rbtx4927/Makefile | 5 + .../toshiba_rbtx4927/toshiba_rbtx4927_irq.c | 786 + .../toshiba_rbtx4927/toshiba_rbtx4927_prom.c | 97 + .../toshiba_rbtx4927/toshiba_rbtx4927_setup.c | 1024 + arch/mips/vr4181/common/Makefile | 7 + arch/mips/vr4181/common/int_handler.S | 206 + arch/mips/vr4181/common/irq.c | 239 + arch/mips/vr4181/common/serial.c | 51 + arch/mips/vr4181/common/time.c | 145 + arch/mips/vr4181/osprey/Makefile | 7 + arch/mips/vr4181/osprey/dbg_io.c | 136 + arch/mips/vr4181/osprey/prom.c | 49 + arch/mips/vr4181/osprey/reset.c | 40 + arch/mips/vr4181/osprey/setup.c | 68 + arch/mips/vr41xx/casio-e55/Makefile | 5 + arch/mips/vr41xx/casio-e55/setup.c | 40 + arch/mips/vr41xx/common/Makefile | 8 + arch/mips/vr41xx/common/bcu.c | 222 + arch/mips/vr41xx/common/cmu.c | 257 + arch/mips/vr41xx/common/giu.c | 455 + arch/mips/vr41xx/common/icu.c | 757 + arch/mips/vr41xx/common/init.c | 85 + arch/mips/vr41xx/common/int-handler.S | 114 + arch/mips/vr41xx/common/pmu.c | 81 + arch/mips/vr41xx/common/vrc4173.c | 581 + arch/mips/vr41xx/ibm-workpad/Makefile | 5 + arch/mips/vr41xx/ibm-workpad/setup.c | 40 + arch/mips/vr41xx/nec-cmbvr4133/Makefile | 8 + arch/mips/vr41xx/nec-cmbvr4133/init.c | 78 + arch/mips/vr41xx/nec-cmbvr4133/irq.c | 114 + arch/mips/vr41xx/nec-cmbvr4133/m1535plus.c | 250 + arch/mips/vr41xx/nec-cmbvr4133/setup.c | 96 + arch/mips/vr41xx/tanbac-tb0226/Makefile | 5 + arch/mips/vr41xx/tanbac-tb0226/setup.c | 24 + arch/mips/vr41xx/tanbac-tb0229/Makefile | 5 + arch/mips/vr41xx/tanbac-tb0229/setup.c | 27 + arch/mips/vr41xx/victor-mpc30x/Makefile | 5 + arch/mips/vr41xx/victor-mpc30x/setup.c | 24 + arch/mips/vr41xx/zao-capcella/Makefile | 5 + arch/mips/vr41xx/zao-capcella/setup.c | 24 + arch/parisc/Kconfig | 199 + arch/parisc/Kconfig.debug | 14 + arch/parisc/Makefile | 121 + arch/parisc/configs/712_defconfig | 891 + arch/parisc/configs/a500_defconfig | 1010 + arch/parisc/configs/b180_defconfig | 839 + arch/parisc/configs/c3000_defconfig | 1126 + arch/parisc/defconfig | 926 + arch/parisc/defpalo.conf | 21 + arch/parisc/hpux/Makefile | 5 + arch/parisc/hpux/entry_hpux.S | 547 + arch/parisc/hpux/fs.c | 199 + arch/parisc/hpux/gate.S | 116 + arch/parisc/hpux/ioctl.c | 73 + arch/parisc/hpux/sys_hpux.c | 985 + arch/parisc/hpux/wrappers.S | 257 + arch/parisc/install.sh | 38 + arch/parisc/kernel/Makefile | 24 + arch/parisc/kernel/asm-offsets.c | 299 + arch/parisc/kernel/binfmt_elf32.c | 126 + arch/parisc/kernel/cache.c | 366 + arch/parisc/kernel/drivers.c | 765 + arch/parisc/kernel/entry.S | 2426 ++ arch/parisc/kernel/firmware.c | 1405 + arch/parisc/kernel/hardware.c | 1366 + arch/parisc/kernel/head.S | 386 + arch/parisc/kernel/hpmc.S | 304 + arch/parisc/kernel/init_task.c | 76 + arch/parisc/kernel/inventory.c | 612 + arch/parisc/kernel/ioctl32.c | 625 + arch/parisc/kernel/irq.c | 343 + arch/parisc/kernel/module.c | 822 + arch/parisc/kernel/pa7300lc.c | 49 + arch/parisc/kernel/pacache.S | 1086 + arch/parisc/kernel/parisc_ksyms.c | 187 + arch/parisc/kernel/pci-dma.c | 578 + arch/parisc/kernel/pci.c | 346 + arch/parisc/kernel/pdc_chassis.c | 245 + arch/parisc/kernel/pdc_cons.c | 189 + arch/parisc/kernel/perf.c | 841 + arch/parisc/kernel/perf_asm.S | 1691 ++ arch/parisc/kernel/perf_images.h | 3138 ++ arch/parisc/kernel/process.c | 396 + arch/parisc/kernel/processor.c | 400 + arch/parisc/kernel/ptrace.c | 423 + arch/parisc/kernel/real2.S | 304 + arch/parisc/kernel/semaphore.c | 102 + arch/parisc/kernel/setup.c | 368 + arch/parisc/kernel/signal.c | 664 + arch/parisc/kernel/signal32.c | 400 + arch/parisc/kernel/signal32.h | 43 + arch/parisc/kernel/smp.c | 723 + arch/parisc/kernel/sys32.h | 48 + arch/parisc/kernel/sys_parisc.c | 253 + arch/parisc/kernel/sys_parisc32.c | 720 + arch/parisc/kernel/syscall.S | 703 + arch/parisc/kernel/syscall_table.S | 372 + arch/parisc/kernel/time.c | 243 + arch/parisc/kernel/topology.c | 37 + arch/parisc/kernel/traps.c | 834 + arch/parisc/kernel/unaligned.c | 816 + arch/parisc/kernel/unwind.c | 393 + arch/parisc/kernel/vmlinux.lds.S | 207 + arch/parisc/lib/Makefile | 9 + arch/parisc/lib/bitops.c | 84 + arch/parisc/lib/checksum.c | 148 + arch/parisc/lib/debuglocks.c | 277 + arch/parisc/lib/fixup.S | 89 + arch/parisc/lib/io.c | 488 + arch/parisc/lib/iomap.c | 422 + arch/parisc/lib/lusercopy.S | 193 + arch/parisc/lib/memcpy.c | 522 + arch/parisc/lib/memset.c | 91 + arch/parisc/math-emu/Makefile | 19 + arch/parisc/math-emu/README | 11 + arch/parisc/math-emu/cnv_float.h | 377 + arch/parisc/math-emu/dbl_float.h | 847 + arch/parisc/math-emu/decode_exc.c | 368 + arch/parisc/math-emu/denormal.c | 135 + arch/parisc/math-emu/dfadd.c | 524 + arch/parisc/math-emu/dfcmp.c | 181 + arch/parisc/math-emu/dfdiv.c | 400 + arch/parisc/math-emu/dfmpy.c | 394 + arch/parisc/math-emu/dfrem.c | 297 + arch/parisc/math-emu/dfsqrt.c | 195 + arch/parisc/math-emu/dfsub.c | 526 + arch/parisc/math-emu/driver.c | 128 + arch/parisc/math-emu/fcnvff.c | 309 + arch/parisc/math-emu/fcnvfu.c | 536 + arch/parisc/math-emu/fcnvfut.c | 332 + arch/parisc/math-emu/fcnvfx.c | 501 + arch/parisc/math-emu/fcnvfxt.c | 328 + arch/parisc/math-emu/fcnvuf.c | 318 + arch/parisc/math-emu/fcnvxf.c | 386 + arch/parisc/math-emu/float.h | 582 + arch/parisc/math-emu/fmpyfadd.c | 2655 ++ arch/parisc/math-emu/fpbits.h | 65 + arch/parisc/math-emu/fpu.h | 76 + arch/parisc/math-emu/fpudispatch.c | 1442 + arch/parisc/math-emu/frnd.c | 252 + arch/parisc/math-emu/hppa.h | 42 + arch/parisc/math-emu/math-emu.h | 27 + arch/parisc/math-emu/sfadd.c | 518 + arch/parisc/math-emu/sfcmp.c | 155 + arch/parisc/math-emu/sfdiv.c | 392 + arch/parisc/math-emu/sfmpy.c | 380 + arch/parisc/math-emu/sfrem.c | 290 + arch/parisc/math-emu/sfsqrt.c | 187 + arch/parisc/math-emu/sfsub.c | 521 + arch/parisc/math-emu/sgl_float.h | 486 + arch/parisc/mm/Makefile | 5 + arch/parisc/mm/fault.c | 271 + arch/parisc/mm/init.c | 1019 + arch/parisc/mm/ioremap.c | 207 + arch/parisc/mm/kmap.c | 166 + arch/parisc/nm | 6 + arch/parisc/oprofile/Kconfig | 23 + arch/parisc/oprofile/Makefile | 9 + arch/parisc/oprofile/init.c | 23 + arch/ppc/4xx_io/Makefile | 6 + arch/ppc/4xx_io/serial_sicc.c | 2012 ++ arch/ppc/8260_io/Kconfig | 65 + arch/ppc/8260_io/Makefile | 6 + arch/ppc/8260_io/enet.c | 867 + arch/ppc/8260_io/fcc_enet.c | 2395 ++ arch/ppc/8xx_io/Kconfig | 138 + arch/ppc/8xx_io/Makefile | 10 + arch/ppc/8xx_io/commproc.c | 464 + arch/ppc/8xx_io/cs4218.h | 167 + arch/ppc/8xx_io/cs4218_tdm.c | 2836 ++ arch/ppc/8xx_io/enet.c | 971 + arch/ppc/8xx_io/fec.c | 1973 ++ arch/ppc/8xx_io/micropatch.c | 744 + arch/ppc/Kconfig | 1317 + arch/ppc/Kconfig.debug | 72 + arch/ppc/Makefile | 138 + arch/ppc/amiga/Makefile | 8 + arch/ppc/amiga/amiga_ksyms.c | 1 + arch/ppc/amiga/amiints.c | 323 + arch/ppc/amiga/amisound.c | 1 + arch/ppc/amiga/bootinfo.c | 80 + arch/ppc/amiga/chipram.c | 1 + arch/ppc/amiga/cia.c | 178 + arch/ppc/amiga/config.c | 962 + arch/ppc/amiga/ints.c | 160 + arch/ppc/amiga/pcmcia.c | 1 + arch/ppc/amiga/time.c | 58 + arch/ppc/boot/Makefile | 34 + arch/ppc/boot/common/Makefile | 13 + arch/ppc/boot/common/bootinfo.c | 70 + arch/ppc/boot/common/crt0.S | 81 + arch/ppc/boot/common/misc-common.c | 553 + arch/ppc/boot/common/ns16550.c | 99 + arch/ppc/boot/common/serial_stub.c | 23 + arch/ppc/boot/common/string.S | 150 + arch/ppc/boot/common/util.S | 293 + arch/ppc/boot/images/Makefile | 27 + arch/ppc/boot/include/cpc700.h | 26 + arch/ppc/boot/include/iso_font.h | 257 + arch/ppc/boot/include/mpc10x.h | 65 + arch/ppc/boot/include/mpsc_defs.h | 146 + arch/ppc/boot/include/nonstdio.h | 34 + arch/ppc/boot/include/of1275.h | 39 + arch/ppc/boot/include/rs6000.h | 243 + arch/ppc/boot/include/serial.h | 46 + arch/ppc/boot/ld.script | 88 + arch/ppc/boot/lib/Makefile | 23 + arch/ppc/boot/lib/div64.S | 58 + arch/ppc/boot/lib/kbd.c | 248 + arch/ppc/boot/lib/vreset.c | 805 + arch/ppc/boot/of1275/Makefile | 6 + arch/ppc/boot/of1275/claim.c | 34 + arch/ppc/boot/of1275/enter.c | 22 + arch/ppc/boot/of1275/exit.c | 24 + arch/ppc/boot/of1275/finddevice.c | 31 + arch/ppc/boot/of1275/getprop.c | 37 + arch/ppc/boot/of1275/map.c | 48 + arch/ppc/boot/of1275/ofinit.c | 27 + arch/ppc/boot/of1275/ofstdio.c | 32 + arch/ppc/boot/of1275/read.c | 35 + arch/ppc/boot/of1275/release.c | 30 + arch/ppc/boot/of1275/write.c | 35 + arch/ppc/boot/openfirmware/Makefile | 188 + arch/ppc/boot/openfirmware/chrpmain.c | 101 + arch/ppc/boot/openfirmware/coffmain.c | 101 + arch/ppc/boot/openfirmware/common.c | 162 + arch/ppc/boot/openfirmware/dummy.c | 4 + arch/ppc/boot/openfirmware/misc.S | 67 + arch/ppc/boot/openfirmware/newworldmain.c | 94 + arch/ppc/boot/openfirmware/start.c | 172 + arch/ppc/boot/simple/Makefile | 252 + arch/ppc/boot/simple/chrpmap.c | 12 + arch/ppc/boot/simple/clear.S | 19 + arch/ppc/boot/simple/cpc700_memory.c | 36 + arch/ppc/boot/simple/dummy.c | 4 + arch/ppc/boot/simple/embed_config.c | 981 + arch/ppc/boot/simple/head.S | 142 + arch/ppc/boot/simple/iic.c | 214 + arch/ppc/boot/simple/m8260_tty.c | 325 + arch/ppc/boot/simple/m8xx_tty.c | 290 + arch/ppc/boot/simple/misc-chestnut.c | 35 + arch/ppc/boot/simple/misc-cpci690.c | 27 + arch/ppc/boot/simple/misc-embedded.c | 275 + arch/ppc/boot/simple/misc-ev64260.c | 57 + arch/ppc/boot/simple/misc-katana.c | 37 + arch/ppc/boot/simple/misc-mv64x60.c | 61 + arch/ppc/boot/simple/misc-prep.c | 212 + arch/ppc/boot/simple/misc-radstone_ppc7d.c | 26 + arch/ppc/boot/simple/misc-spruce.c | 274 + arch/ppc/boot/simple/misc.c | 284 + arch/ppc/boot/simple/mpc10x_memory.c | 111 + arch/ppc/boot/simple/mpc52xx_tty.c | 140 + arch/ppc/boot/simple/mv64x60_tty.c | 360 + arch/ppc/boot/simple/openbios.c | 37 + arch/ppc/boot/simple/pci.c | 274 + arch/ppc/boot/simple/pibs.c | 103 + arch/ppc/boot/simple/prepmap.c | 12 + arch/ppc/boot/simple/qspan_pci.c | 269 + arch/ppc/boot/simple/relocate.S | 216 + arch/ppc/boot/simple/rw4/ppc_40x.h | 664 + arch/ppc/boot/simple/rw4/rw4_init.S | 78 + arch/ppc/boot/simple/rw4/rw4_init_brd.S | 1125 + arch/ppc/boot/simple/rw4/stb.h | 239 + arch/ppc/boot/utils/addRamDisk.c | 203 + arch/ppc/boot/utils/addSystemMap.c | 186 + arch/ppc/boot/utils/addnote.c | 175 + arch/ppc/boot/utils/elf.pl | 33 + arch/ppc/boot/utils/hack-coff.c | 84 + arch/ppc/boot/utils/mkbugboot.c | 187 + arch/ppc/boot/utils/mknote.c | 44 + arch/ppc/boot/utils/mkprep.c | 293 + arch/ppc/boot/utils/mktree.c | 152 + arch/ppc/configs/FADS_defconfig | 520 + arch/ppc/configs/IVMS8_defconfig | 548 + arch/ppc/configs/SM850_defconfig | 522 + arch/ppc/configs/SPD823TS_defconfig | 520 + arch/ppc/configs/TQM823L_defconfig | 521 + arch/ppc/configs/TQM8260_defconfig | 499 + arch/ppc/configs/TQM850L_defconfig | 521 + arch/ppc/configs/TQM860L_defconfig | 549 + arch/ppc/configs/adir_defconfig | 805 + arch/ppc/configs/ads8272_defconfig | 582 + arch/ppc/configs/apus_defconfig | 920 + arch/ppc/configs/ash_defconfig | 666 + arch/ppc/configs/beech_defconfig | 615 + arch/ppc/configs/bseip_defconfig | 517 + arch/ppc/configs/bubinga_defconfig | 592 + arch/ppc/configs/cedar_defconfig | 534 + arch/ppc/configs/chestnut_defconfig | 794 + arch/ppc/configs/common_defconfig | 1421 + arch/ppc/configs/cpci405_defconfig | 631 + arch/ppc/configs/cpci690_defconfig | 686 + arch/ppc/configs/ebony_defconfig | 585 + arch/ppc/configs/ep405_defconfig | 572 + arch/ppc/configs/est8260_defconfig | 491 + arch/ppc/configs/ev64260_defconfig | 759 + arch/ppc/configs/gemini_defconfig | 618 + arch/ppc/configs/hdpu_defconfig | 890 + arch/ppc/configs/ibmchrp_defconfig | 875 + arch/ppc/configs/k2_defconfig | 680 + arch/ppc/configs/katana_defconfig | 861 + arch/ppc/configs/lite5200_defconfig | 436 + arch/ppc/configs/lopec_defconfig | 814 + arch/ppc/configs/luan_defconfig | 668 + arch/ppc/configs/mbx_defconfig | 512 + arch/ppc/configs/mcpn765_defconfig | 579 + arch/ppc/configs/menf1_defconfig | 621 + arch/ppc/configs/mpc834x_sys_defconfig | 644 + arch/ppc/configs/mpc8540_ads_defconfig | 707 + arch/ppc/configs/mpc8555_cds_defconfig | 718 + arch/ppc/configs/mpc8560_ads_defconfig | 719 + arch/ppc/configs/mvme5100_defconfig | 746 + arch/ppc/configs/oak_defconfig | 485 + arch/ppc/configs/ocotea_defconfig | 599 + arch/ppc/configs/pcore_defconfig | 716 + arch/ppc/configs/pmac_defconfig | 1523 + arch/ppc/configs/power3_defconfig | 1034 + arch/ppc/configs/pplus_defconfig | 720 + arch/ppc/configs/prpmc750_defconfig | 594 + arch/ppc/configs/prpmc800_defconfig | 656 + arch/ppc/configs/radstone_ppc7d_defconfig | 956 + arch/ppc/configs/rainier_defconfig | 599 + arch/ppc/configs/redwood5_defconfig | 557 + arch/ppc/configs/redwood6_defconfig | 535 + arch/ppc/configs/redwood_defconfig | 540 + arch/ppc/configs/rpx8260_defconfig | 555 + arch/ppc/configs/rpxcllf_defconfig | 582 + arch/ppc/configs/rpxlite_defconfig | 581 + arch/ppc/configs/sandpoint_defconfig | 737 + arch/ppc/configs/spruce_defconfig | 577 + arch/ppc/configs/stx_gp3_defconfig | 972 + arch/ppc/configs/sycamore_defconfig | 664 + arch/ppc/configs/walnut_defconfig | 578 + arch/ppc/kernel/Makefile | 33 + arch/ppc/kernel/align.c | 398 + arch/ppc/kernel/asm-offsets.c | 146 + arch/ppc/kernel/bitops.c | 126 + arch/ppc/kernel/cpu_setup_6xx.S | 440 + arch/ppc/kernel/cpu_setup_power4.S | 201 + arch/ppc/kernel/cputable.c | 922 + arch/ppc/kernel/dma-mapping.c | 447 + arch/ppc/kernel/entry.S | 969 + arch/ppc/kernel/find_name.c | 48 + arch/ppc/kernel/head.S | 1710 ++ arch/ppc/kernel/head_44x.S | 753 + arch/ppc/kernel/head_4xx.S | 1010 + arch/ppc/kernel/head_8xx.S | 862 + arch/ppc/kernel/head_booke.h | 340 + arch/ppc/kernel/head_fsl_booke.S | 952 + arch/ppc/kernel/idle.c | 100 + arch/ppc/kernel/idle_6xx.S | 233 + arch/ppc/kernel/idle_power4.S | 91 + arch/ppc/kernel/irq.c | 164 + arch/ppc/kernel/l2cr.S | 442 + arch/ppc/kernel/misc.S | 1453 + arch/ppc/kernel/module.c | 320 + arch/ppc/kernel/pci.c | 1849 ++ arch/ppc/kernel/perfmon.c | 93 + arch/ppc/kernel/perfmon_fsl_booke.c | 222 + arch/ppc/kernel/ppc-stub.c | 867 + arch/ppc/kernel/ppc_htab.c | 467 + arch/ppc/kernel/ppc_ksyms.c | 350 + arch/ppc/kernel/process.c | 781 + arch/ppc/kernel/ptrace.c | 474 + arch/ppc/kernel/semaphore.c | 131 + arch/ppc/kernel/setup.c | 778 + arch/ppc/kernel/signal.c | 775 + arch/ppc/kernel/smp-tbsync.c | 181 + arch/ppc/kernel/smp.c | 399 + arch/ppc/kernel/softemu8xx.c | 147 + arch/ppc/kernel/swsusp.S | 349 + arch/ppc/kernel/syscalls.c | 272 + arch/ppc/kernel/temp.c | 272 + arch/ppc/kernel/time.c | 447 + arch/ppc/kernel/traps.c | 886 + arch/ppc/kernel/vecemu.c | 345 + arch/ppc/kernel/vector.S | 217 + arch/ppc/kernel/vmlinux.lds.S | 192 + arch/ppc/lib/Makefile | 9 + arch/ppc/lib/checksum.S | 225 + arch/ppc/lib/dec_and_lock.c | 46 + arch/ppc/lib/div64.S | 58 + arch/ppc/lib/locks.c | 190 + arch/ppc/lib/rheap.c | 693 + arch/ppc/lib/strcase.c | 23 + arch/ppc/lib/string.S | 716 + arch/ppc/math-emu/Makefile | 13 + arch/ppc/math-emu/double.h | 129 + arch/ppc/math-emu/fabs.c | 18 + arch/ppc/math-emu/fadd.c | 38 + arch/ppc/math-emu/fadds.c | 39 + arch/ppc/math-emu/fcmpo.c | 46 + arch/ppc/math-emu/fcmpu.c | 42 + arch/ppc/math-emu/fctiw.c | 25 + arch/ppc/math-emu/fctiwz.c | 32 + arch/ppc/math-emu/fdiv.c | 53 + arch/ppc/math-emu/fdivs.c | 55 + arch/ppc/math-emu/fmadd.c | 48 + arch/ppc/math-emu/fmadds.c | 49 + arch/ppc/math-emu/fmr.c | 18 + arch/ppc/math-emu/fmsub.c | 51 + arch/ppc/math-emu/fmsubs.c | 52 + arch/ppc/math-emu/fmul.c | 42 + arch/ppc/math-emu/fmuls.c | 43 + arch/ppc/math-emu/fnabs.c | 18 + arch/ppc/math-emu/fneg.c | 18 + arch/ppc/math-emu/fnmadd.c | 51 + arch/ppc/math-emu/fnmadds.c | 52 + arch/ppc/math-emu/fnmsub.c | 54 + arch/ppc/math-emu/fnmsubs.c | 55 + arch/ppc/math-emu/fres.c | 12 + arch/ppc/math-emu/frsp.c | 25 + arch/ppc/math-emu/frsqrte.c | 12 + arch/ppc/math-emu/fsel.c | 38 + arch/ppc/math-emu/fsqrt.c | 37 + arch/ppc/math-emu/fsqrts.c | 38 + arch/ppc/math-emu/fsub.c | 41 + arch/ppc/math-emu/fsubs.c | 42 + arch/ppc/math-emu/lfd.c | 19 + arch/ppc/math-emu/lfs.c | 37 + arch/ppc/math-emu/math.c | 485 + arch/ppc/math-emu/mcrfs.c | 31 + arch/ppc/math-emu/mffs.c | 17 + arch/ppc/math-emu/mtfsb0.c | 18 + arch/ppc/math-emu/mtfsb1.c | 18 + arch/ppc/math-emu/mtfsf.c | 45 + arch/ppc/math-emu/mtfsfi.c | 23 + arch/ppc/math-emu/op-1.h | 245 + arch/ppc/math-emu/op-2.h | 433 + arch/ppc/math-emu/op-4.h | 297 + arch/ppc/math-emu/op-common.h | 688 + arch/ppc/math-emu/sfp-machine.h | 377 + arch/ppc/math-emu/single.h | 66 + arch/ppc/math-emu/soft-fp.h | 104 + arch/ppc/math-emu/stfd.c | 20 + arch/ppc/math-emu/stfiwx.c | 16 + arch/ppc/math-emu/stfs.c | 41 + arch/ppc/math-emu/types.c | 51 + arch/ppc/math-emu/udivmodti4.c | 191 + arch/ppc/mm/44x_mmu.c | 121 + arch/ppc/mm/4xx_mmu.c | 142 + arch/ppc/mm/Makefile | 11 + arch/ppc/mm/fault.c | 440 + arch/ppc/mm/fsl_booke_mmu.c | 236 + arch/ppc/mm/hashtable.S | 642 + arch/ppc/mm/init.c | 667 + arch/ppc/mm/mem_pieces.c | 163 + arch/ppc/mm/mem_pieces.h | 48 + arch/ppc/mm/mmu_context.c | 86 + arch/ppc/mm/mmu_decl.h | 83 + arch/ppc/mm/pgtable.c | 471 + arch/ppc/mm/ppc_mmu.c | 296 + arch/ppc/mm/tlb.c | 183 + arch/ppc/oprofile/Kconfig | 23 + arch/ppc/oprofile/Makefile | 14 + arch/ppc/oprofile/common.c | 161 + arch/ppc/oprofile/op_impl.h | 45 + arch/ppc/oprofile/op_model_fsl_booke.c | 184 + arch/ppc/platforms/4xx/Kconfig | 247 + arch/ppc/platforms/4xx/Makefile | 27 + arch/ppc/platforms/4xx/ash.c | 250 + arch/ppc/platforms/4xx/ash.h | 83 + arch/ppc/platforms/4xx/bubinga.c | 263 + arch/ppc/platforms/4xx/bubinga.h | 69 + arch/ppc/platforms/4xx/cpci405.c | 84 + arch/ppc/platforms/4xx/cpci405.h | 37 + arch/ppc/platforms/4xx/ebony.c | 356 + arch/ppc/platforms/4xx/ebony.h | 91 + arch/ppc/platforms/4xx/ep405.c | 197 + arch/ppc/platforms/4xx/ep405.h | 54 + arch/ppc/platforms/4xx/ibm405ep.c | 143 + arch/ppc/platforms/4xx/ibm405ep.h | 148 + arch/ppc/platforms/4xx/ibm405gp.c | 120 + arch/ppc/platforms/4xx/ibm405gp.h | 151 + arch/ppc/platforms/4xx/ibm405gpr.c | 117 + arch/ppc/platforms/4xx/ibm405gpr.h | 151 + arch/ppc/platforms/4xx/ibm440gp.c | 164 + arch/ppc/platforms/4xx/ibm440gp.h | 66 + arch/ppc/platforms/4xx/ibm440gx.c | 234 + arch/ppc/platforms/4xx/ibm440gx.h | 74 + arch/ppc/platforms/4xx/ibm440sp.c | 131 + arch/ppc/platforms/4xx/ibm440sp.h | 64 + arch/ppc/platforms/4xx/ibmnp405h.c | 172 + arch/ppc/platforms/4xx/ibmnp405h.h | 157 + arch/ppc/platforms/4xx/ibmstb4.c | 83 + arch/ppc/platforms/4xx/ibmstb4.h | 238 + arch/ppc/platforms/4xx/ibmstbx25.c | 68 + arch/ppc/platforms/4xx/ibmstbx25.h | 261 + arch/ppc/platforms/4xx/luan.c | 387 + arch/ppc/platforms/4xx/luan.h | 80 + arch/ppc/platforms/4xx/oak.c | 255 + arch/ppc/platforms/4xx/oak.h | 96 + arch/ppc/platforms/4xx/oak_setup.h | 50 + arch/ppc/platforms/4xx/ocotea.c | 367 + arch/ppc/platforms/4xx/ocotea.h | 88 + arch/ppc/platforms/4xx/redwood5.c | 110 + arch/ppc/platforms/4xx/redwood5.h | 54 + arch/ppc/platforms/4xx/redwood6.c | 159 + arch/ppc/platforms/4xx/redwood6.h | 55 + arch/ppc/platforms/4xx/sycamore.c | 278 + arch/ppc/platforms/4xx/sycamore.h | 67 + arch/ppc/platforms/4xx/virtex-ii_pro.c | 60 + arch/ppc/platforms/4xx/virtex-ii_pro.h | 99 + arch/ppc/platforms/4xx/walnut.c | 249 + arch/ppc/platforms/4xx/walnut.h | 72 + arch/ppc/platforms/4xx/xilinx_ml300.c | 146 + arch/ppc/platforms/4xx/xilinx_ml300.h | 47 + .../4xx/xparameters/xparameters_ml300.h | 310 + arch/ppc/platforms/83xx/Makefile | 4 + arch/ppc/platforms/83xx/mpc834x_sys.c | 289 + arch/ppc/platforms/83xx/mpc834x_sys.h | 51 + arch/ppc/platforms/85xx/Kconfig | 76 + arch/ppc/platforms/85xx/Makefile | 8 + arch/ppc/platforms/85xx/mpc8540_ads.c | 218 + arch/ppc/platforms/85xx/mpc8540_ads.h | 25 + arch/ppc/platforms/85xx/mpc8555_cds.h | 26 + arch/ppc/platforms/85xx/mpc8560_ads.c | 210 + arch/ppc/platforms/85xx/mpc8560_ads.h | 27 + arch/ppc/platforms/85xx/mpc85xx_ads_common.c | 225 + arch/ppc/platforms/85xx/mpc85xx_ads_common.h | 50 + arch/ppc/platforms/85xx/mpc85xx_cds_common.c | 467 + arch/ppc/platforms/85xx/mpc85xx_cds_common.h | 80 + arch/ppc/platforms/85xx/sbc8560.c | 227 + arch/ppc/platforms/85xx/sbc8560.h | 49 + arch/ppc/platforms/85xx/sbc85xx.c | 203 + arch/ppc/platforms/85xx/sbc85xx.h | 55 + arch/ppc/platforms/85xx/stx_gp3.c | 355 + arch/ppc/platforms/85xx/stx_gp3.h | 74 + arch/ppc/platforms/Makefile | 53 + arch/ppc/platforms/adir.h | 95 + arch/ppc/platforms/adir_pci.c | 247 + arch/ppc/platforms/adir_pic.c | 130 + arch/ppc/platforms/adir_setup.c | 210 + arch/ppc/platforms/apus_pci.c | 208 + arch/ppc/platforms/apus_pci.h | 34 + arch/ppc/platforms/apus_setup.c | 815 + arch/ppc/platforms/bseip.h | 38 + arch/ppc/platforms/ccm.h | 28 + arch/ppc/platforms/chestnut.c | 580 + arch/ppc/platforms/chestnut.h | 129 + arch/ppc/platforms/chrp_pci.c | 309 + arch/ppc/platforms/chrp_pegasos_eth.c | 101 + arch/ppc/platforms/chrp_setup.c | 615 + arch/ppc/platforms/chrp_smp.c | 98 + arch/ppc/platforms/chrp_time.c | 194 + arch/ppc/platforms/cpci690.c | 491 + arch/ppc/platforms/cpci690.h | 78 + arch/ppc/platforms/est8260.h | 35 + arch/ppc/platforms/ev64260.c | 651 + arch/ppc/platforms/ev64260.h | 128 + arch/ppc/platforms/fads.h | 57 + arch/ppc/platforms/gemini.h | 168 + arch/ppc/platforms/gemini_pci.c | 41 + arch/ppc/platforms/gemini_prom.S | 93 + arch/ppc/platforms/gemini_serial.h | 41 + arch/ppc/platforms/gemini_setup.c | 584 + arch/ppc/platforms/hdpu.c | 1062 + arch/ppc/platforms/hdpu.h | 82 + arch/ppc/platforms/hermes.h | 27 + arch/ppc/platforms/ip860.h | 36 + arch/ppc/platforms/ivms8.h | 56 + arch/ppc/platforms/k2.c | 613 + arch/ppc/platforms/k2.h | 82 + arch/ppc/platforms/katana.c | 795 + arch/ppc/platforms/katana.h | 255 + arch/ppc/platforms/lantec.h | 21 + arch/ppc/platforms/lite5200.c | 236 + arch/ppc/platforms/lite5200.h | 23 + arch/ppc/platforms/lopec.c | 411 + arch/ppc/platforms/lopec.h | 39 + arch/ppc/platforms/lwmon.h | 60 + arch/ppc/platforms/mbx.h | 117 + arch/ppc/platforms/mcpn765.c | 527 + arch/ppc/platforms/mcpn765.h | 122 + arch/ppc/platforms/mpc5200.c | 53 + arch/ppc/platforms/mvme5100.c | 349 + arch/ppc/platforms/mvme5100.h | 91 + arch/ppc/platforms/pal4.h | 42 + arch/ppc/platforms/pal4_pci.c | 77 + arch/ppc/platforms/pal4_serial.h | 39 + arch/ppc/platforms/pal4_setup.c | 175 + arch/ppc/platforms/pcore.c | 352 + arch/ppc/platforms/pcore.h | 39 + arch/ppc/platforms/pcu_e.h | 28 + arch/ppc/platforms/pmac_backlight.c | 202 + arch/ppc/platforms/pmac_cache.S | 325 + arch/ppc/platforms/pmac_cpufreq.c | 571 + arch/ppc/platforms/pmac_feature.c | 2972 ++ arch/ppc/platforms/pmac_low_i2c.c | 513 + arch/ppc/platforms/pmac_nvram.c | 584 + arch/ppc/platforms/pmac_pci.c | 1125 + arch/ppc/platforms/pmac_pic.c | 689 + arch/ppc/platforms/pmac_pic.h | 11 + arch/ppc/platforms/pmac_setup.c | 745 + arch/ppc/platforms/pmac_sleep.S | 390 + arch/ppc/platforms/pmac_smp.c | 640 + arch/ppc/platforms/pmac_time.c | 292 + arch/ppc/platforms/powerpmc250.c | 383 + arch/ppc/platforms/powerpmc250.h | 52 + arch/ppc/platforms/pplus.c | 917 + arch/ppc/platforms/pplus.h | 67 + arch/ppc/platforms/pq2ads.c | 26 + arch/ppc/platforms/pq2ads.h | 96 + arch/ppc/platforms/prep_pci.c | 1336 + arch/ppc/platforms/prep_setup.c | 1181 + arch/ppc/platforms/prpmc750.c | 364 + arch/ppc/platforms/prpmc750.h | 95 + arch/ppc/platforms/prpmc800.c | 477 + arch/ppc/platforms/prpmc800.h | 82 + arch/ppc/platforms/radstone_ppc7d.c | 1452 + arch/ppc/platforms/radstone_ppc7d.h | 434 + arch/ppc/platforms/residual.c | 1034 + arch/ppc/platforms/rpx8260.h | 81 + arch/ppc/platforms/rpxclassic.h | 119 + arch/ppc/platforms/rpxhiox.h | 41 + arch/ppc/platforms/rpxlite.h | 96 + arch/ppc/platforms/sandpoint.c | 742 + arch/ppc/platforms/sandpoint.h | 80 + arch/ppc/platforms/sbc82xx.c | 259 + arch/ppc/platforms/sbc82xx.h | 36 + arch/ppc/platforms/sbs8260.h | 28 + arch/ppc/platforms/spd8xx.h | 92 + arch/ppc/platforms/spruce.c | 325 + arch/ppc/platforms/spruce.h | 71 + arch/ppc/platforms/tqm8260.h | 23 + arch/ppc/platforms/tqm8260_setup.c | 44 + arch/ppc/platforms/tqm8xx.h | 179 + arch/ppc/syslib/Makefile | 115 + arch/ppc/syslib/btext.c | 861 + arch/ppc/syslib/cpc700.h | 98 + arch/ppc/syslib/cpc700_pic.c | 187 + arch/ppc/syslib/cpc710.h | 83 + arch/ppc/syslib/cpm2_common.c | 198 + arch/ppc/syslib/cpm2_pic.c | 172 + arch/ppc/syslib/cpm2_pic.h | 8 + arch/ppc/syslib/dcr.S | 41 + arch/ppc/syslib/gen550.h | 16 + arch/ppc/syslib/gen550_dbg.c | 182 + arch/ppc/syslib/gen550_kgdb.c | 86 + arch/ppc/syslib/gt64260_pic.c | 328 + arch/ppc/syslib/harrier.c | 302 + arch/ppc/syslib/hawk_common.c | 319 + arch/ppc/syslib/i8259.c | 211 + arch/ppc/syslib/ibm440gp_common.c | 76 + arch/ppc/syslib/ibm440gp_common.h | 35 + arch/ppc/syslib/ibm440gx_common.c | 270 + arch/ppc/syslib/ibm440gx_common.h | 57 + arch/ppc/syslib/ibm440sp_common.c | 71 + arch/ppc/syslib/ibm440sp_common.h | 25 + arch/ppc/syslib/ibm44x_common.c | 193 + arch/ppc/syslib/ibm44x_common.h | 42 + arch/ppc/syslib/ibm_ocp.c | 9 + arch/ppc/syslib/indirect_pci.c | 135 + arch/ppc/syslib/ipic.c | 646 + arch/ppc/syslib/ipic.h | 49 + arch/ppc/syslib/m8260_pci.c | 194 + arch/ppc/syslib/m8260_pci.h | 76 + arch/ppc/syslib/m8260_pci_erratum9.c | 473 + arch/ppc/syslib/m8260_setup.c | 264 + arch/ppc/syslib/m8xx_setup.c | 433 + arch/ppc/syslib/m8xx_wdt.c | 99 + arch/ppc/syslib/m8xx_wdt.h | 16 + arch/ppc/syslib/mpc10x_common.c | 510 + arch/ppc/syslib/mpc52xx_devices.c | 318 + arch/ppc/syslib/mpc52xx_pci.c | 235 + arch/ppc/syslib/mpc52xx_pci.h | 139 + arch/ppc/syslib/mpc52xx_pic.c | 257 + arch/ppc/syslib/mpc52xx_setup.c | 230 + arch/ppc/syslib/mpc52xx_sys.c | 38 + arch/ppc/syslib/mpc83xx_devices.c | 237 + arch/ppc/syslib/mpc83xx_sys.c | 100 + arch/ppc/syslib/mpc85xx_devices.c | 552 + arch/ppc/syslib/mpc85xx_sys.c | 118 + arch/ppc/syslib/mv64360_pic.c | 426 + arch/ppc/syslib/mv64x60.c | 2392 ++ arch/ppc/syslib/mv64x60_dbg.c | 123 + arch/ppc/syslib/mv64x60_win.c | 1168 + arch/ppc/syslib/ocp.c | 485 + arch/ppc/syslib/of_device.c | 273 + arch/ppc/syslib/open_pic.c | 1083 + arch/ppc/syslib/open_pic2.c | 716 + arch/ppc/syslib/open_pic_defs.h | 292 + arch/ppc/syslib/pci_auto.c | 517 + arch/ppc/syslib/ppc403_pic.c | 127 + arch/ppc/syslib/ppc405_pci.c | 177 + arch/ppc/syslib/ppc4xx_dma.c | 708 + arch/ppc/syslib/ppc4xx_kgdb.c | 124 + arch/ppc/syslib/ppc4xx_pic.c | 244 + arch/ppc/syslib/ppc4xx_pm.c | 47 + arch/ppc/syslib/ppc4xx_setup.c | 321 + arch/ppc/syslib/ppc4xx_sgdma.c | 467 + arch/ppc/syslib/ppc83xx_setup.c | 138 + arch/ppc/syslib/ppc83xx_setup.h | 53 + arch/ppc/syslib/ppc85xx_common.c | 33 + arch/ppc/syslib/ppc85xx_common.h | 25 + arch/ppc/syslib/ppc85xx_setup.c | 354 + arch/ppc/syslib/ppc85xx_setup.h | 59 + arch/ppc/syslib/ppc8xx_pic.c | 130 + arch/ppc/syslib/ppc8xx_pic.h | 21 + arch/ppc/syslib/ppc_sys.c | 103 + arch/ppc/syslib/prep_nvram.c | 141 + arch/ppc/syslib/prom.c | 1447 + arch/ppc/syslib/prom_init.c | 1002 + arch/ppc/syslib/qspan_pci.c | 381 + arch/ppc/syslib/todc_time.c | 513 + arch/ppc/syslib/xilinx_pic.c | 157 + arch/ppc/xmon/Makefile | 8 + arch/ppc/xmon/adb.c | 212 + arch/ppc/xmon/ansidecl.h | 141 + arch/ppc/xmon/nonstdio.h | 22 + arch/ppc/xmon/ppc-dis.c | 190 + arch/ppc/xmon/ppc-opc.c | 2721 ++ arch/ppc/xmon/ppc.h | 240 + arch/ppc/xmon/privinst.h | 91 + arch/ppc/xmon/setjmp.c | 29 + arch/ppc/xmon/start.c | 646 + arch/ppc/xmon/start_8xx.c | 287 + arch/ppc/xmon/subr_prf.c | 55 + arch/ppc/xmon/xmon.c | 2008 ++ arch/ppc64/Kconfig | 423 + arch/ppc64/Kconfig.debug | 57 + arch/ppc64/Makefile | 122 + arch/ppc64/boot/Makefile | 117 + arch/ppc64/boot/README | 11 + arch/ppc64/boot/addRamDisk.c | 300 + arch/ppc64/boot/addnote.c | 165 + arch/ppc64/boot/crt0.S | 48 + arch/ppc64/boot/div64.S | 58 + arch/ppc64/boot/install.sh | 42 + arch/ppc64/boot/main.c | 331 + arch/ppc64/boot/mknote.c | 43 + arch/ppc64/boot/piggyback.c | 83 + arch/ppc64/boot/ppc32-types.h | 36 + arch/ppc64/boot/prom.c | 637 + arch/ppc64/boot/start.c | 654 + arch/ppc64/boot/string.S | 216 + arch/ppc64/boot/zImage.lds | 90 + arch/ppc64/boot/zlib.c | 2194 ++ arch/ppc64/boot/zlib.h | 432 + arch/ppc64/configs/g5_defconfig | 1335 + arch/ppc64/configs/iSeries_defconfig | 911 + arch/ppc64/configs/maple_defconfig | 1000 + arch/ppc64/configs/pSeries_defconfig | 1273 + arch/ppc64/defconfig | 1341 + arch/ppc64/kernel/HvCall.c | 36 + arch/ppc64/kernel/HvLpConfig.c | 27 + arch/ppc64/kernel/HvLpEvent.c | 88 + arch/ppc64/kernel/ItLpQueue.c | 167 + arch/ppc64/kernel/LparData.c | 250 + arch/ppc64/kernel/Makefile | 68 + arch/ppc64/kernel/XmPciLpEvent.c | 190 + arch/ppc64/kernel/align.c | 396 + arch/ppc64/kernel/asm-offsets.c | 193 + arch/ppc64/kernel/binfmt_elf32.c | 78 + arch/ppc64/kernel/bitops.c | 147 + arch/ppc64/kernel/btext.c | 751 + arch/ppc64/kernel/cpu_setup_power4.S | 214 + arch/ppc64/kernel/cputable.c | 197 + arch/ppc64/kernel/dma.c | 147 + arch/ppc64/kernel/eeh.c | 937 + arch/ppc64/kernel/entry.S | 845 + arch/ppc64/kernel/head.S | 2139 ++ arch/ppc64/kernel/hvCall.S | 98 + arch/ppc64/kernel/hvconsole.c | 121 + arch/ppc64/kernel/hvcserver.c | 249 + arch/ppc64/kernel/i8259.c | 177 + arch/ppc64/kernel/i8259.h | 17 + arch/ppc64/kernel/iSeries_VpdInfo.c | 277 + arch/ppc64/kernel/iSeries_htab.c | 242 + arch/ppc64/kernel/iSeries_iommu.c | 175 + arch/ppc64/kernel/iSeries_irq.c | 209 + arch/ppc64/kernel/iSeries_pci.c | 912 + arch/ppc64/kernel/iSeries_pci_reset.c | 104 + arch/ppc64/kernel/iSeries_proc.c | 162 + arch/ppc64/kernel/iSeries_setup.c | 877 + arch/ppc64/kernel/iSeries_setup.h | 26 + arch/ppc64/kernel/iSeries_smp.c | 151 + arch/ppc64/kernel/idle.c | 380 + arch/ppc64/kernel/idle_power4.S | 79 + arch/ppc64/kernel/init_task.c | 36 + arch/ppc64/kernel/ioctl32.c | 51 + arch/ppc64/kernel/iomap.c | 126 + arch/ppc64/kernel/iommu.c | 567 + arch/ppc64/kernel/irq.c | 519 + arch/ppc64/kernel/kprobes.c | 290 + arch/ppc64/kernel/lmb.c | 372 + arch/ppc64/kernel/lparcfg.c | 611 + arch/ppc64/kernel/maple_pci.c | 521 + arch/ppc64/kernel/maple_setup.c | 240 + arch/ppc64/kernel/maple_time.c | 226 + arch/ppc64/kernel/mf.c | 1239 + arch/ppc64/kernel/misc.S | 1234 + arch/ppc64/kernel/module.c | 442 + arch/ppc64/kernel/mpic.c | 859 + arch/ppc64/kernel/mpic.h | 267 + arch/ppc64/kernel/nvram.c | 746 + arch/ppc64/kernel/of_device.c | 272 + arch/ppc64/kernel/pSeries_hvCall.S | 123 + arch/ppc64/kernel/pSeries_iommu.c | 570 + arch/ppc64/kernel/pSeries_lpar.c | 531 + arch/ppc64/kernel/pSeries_nvram.c | 148 + arch/ppc64/kernel/pSeries_pci.c | 602 + arch/ppc64/kernel/pSeries_reconfig.c | 434 + arch/ppc64/kernel/pSeries_setup.c | 612 + arch/ppc64/kernel/pSeries_smp.c | 451 + arch/ppc64/kernel/pacaData.c | 224 + arch/ppc64/kernel/pci.c | 942 + arch/ppc64/kernel/pci.h | 51 + arch/ppc64/kernel/pci_direct_iommu.c | 95 + arch/ppc64/kernel/pci_dn.c | 198 + arch/ppc64/kernel/pci_iommu.c | 139 + arch/ppc64/kernel/pmac.h | 31 + arch/ppc64/kernel/pmac_feature.c | 676 + arch/ppc64/kernel/pmac_low_i2c.c | 523 + arch/ppc64/kernel/pmac_nvram.c | 495 + arch/ppc64/kernel/pmac_pci.c | 793 + arch/ppc64/kernel/pmac_setup.c | 511 + arch/ppc64/kernel/pmac_smp.c | 316 + arch/ppc64/kernel/pmac_time.c | 201 + arch/ppc64/kernel/pmc.c | 67 + arch/ppc64/kernel/ppc_ksyms.c | 95 + arch/ppc64/kernel/proc_ppc64.c | 128 + arch/ppc64/kernel/process.c | 688 + arch/ppc64/kernel/prom.c | 1820 ++ arch/ppc64/kernel/prom_init.c | 1838 ++ arch/ppc64/kernel/ptrace.c | 328 + arch/ppc64/kernel/ptrace32.c | 420 + arch/ppc64/kernel/ras.c | 356 + arch/ppc64/kernel/rtas-proc.c | 807 + arch/ppc64/kernel/rtas.c | 657 + arch/ppc64/kernel/rtas_flash.c | 725 + arch/ppc64/kernel/rtasd.c | 527 + arch/ppc64/kernel/rtc.c | 440 + arch/ppc64/kernel/scanlog.c | 245 + arch/ppc64/kernel/semaphore.c | 136 + arch/ppc64/kernel/setup.c | 1392 + arch/ppc64/kernel/signal.c | 575 + arch/ppc64/kernel/signal32.c | 989 + arch/ppc64/kernel/smp-tbsync.c | 179 + arch/ppc64/kernel/smp.c | 622 + arch/ppc64/kernel/sys_ppc32.c | 1329 + arch/ppc64/kernel/syscalls.c | 258 + arch/ppc64/kernel/sysfs.c | 431 + arch/ppc64/kernel/time.c | 827 + arch/ppc64/kernel/traps.c | 565 + arch/ppc64/kernel/u3_iommu.c | 349 + arch/ppc64/kernel/udbg.c | 360 + arch/ppc64/kernel/vdso.c | 614 + arch/ppc64/kernel/vdso32/Makefile | 36 + arch/ppc64/kernel/vdso32/cacheflush.S | 65 + arch/ppc64/kernel/vdso32/datapage.S | 68 + arch/ppc64/kernel/vdso32/gettimeofday.S | 139 + arch/ppc64/kernel/vdso32/sigtramp.S | 300 + arch/ppc64/kernel/vdso32/vdso32.lds.S | 111 + arch/ppc64/kernel/vdso32/vdso32_wrapper.S | 13 + arch/ppc64/kernel/vdso64/Makefile | 35 + arch/ppc64/kernel/vdso64/cacheflush.S | 64 + arch/ppc64/kernel/vdso64/datapage.S | 68 + arch/ppc64/kernel/vdso64/gettimeofday.S | 91 + arch/ppc64/kernel/vdso64/sigtramp.S | 294 + arch/ppc64/kernel/vdso64/vdso64.lds.S | 110 + arch/ppc64/kernel/vdso64/vdso64_wrapper.S | 13 + arch/ppc64/kernel/vecemu.c | 346 + arch/ppc64/kernel/vector.S | 172 + arch/ppc64/kernel/vio.c | 640 + arch/ppc64/kernel/viopath.c | 675 + arch/ppc64/kernel/vmlinux.lds.S | 145 + arch/ppc64/kernel/xics.c | 713 + arch/ppc64/lib/Makefile | 18 + arch/ppc64/lib/checksum.S | 229 + arch/ppc64/lib/copypage.S | 121 + arch/ppc64/lib/copyuser.S | 576 + arch/ppc64/lib/dec_and_lock.c | 55 + arch/ppc64/lib/e2a.c | 108 + arch/ppc64/lib/locks.c | 95 + arch/ppc64/lib/memcpy.S | 172 + arch/ppc64/lib/sstep.c | 141 + arch/ppc64/lib/strcase.c | 31 + arch/ppc64/lib/string.S | 285 + arch/ppc64/lib/usercopy.c | 41 + arch/ppc64/mm/Makefile | 11 + arch/ppc64/mm/fault.c | 312 + arch/ppc64/mm/hash_low.S | 287 + arch/ppc64/mm/hash_native.c | 423 + arch/ppc64/mm/hash_utils.c | 439 + arch/ppc64/mm/hugetlbpage.c | 904 + arch/ppc64/mm/imalloc.c | 312 + arch/ppc64/mm/init.c | 927 + arch/ppc64/mm/mmap.c | 86 + arch/ppc64/mm/numa.c | 734 + arch/ppc64/mm/slb.c | 159 + arch/ppc64/mm/slb_low.S | 154 + arch/ppc64/mm/stab.c | 239 + arch/ppc64/mm/tlb.c | 180 + arch/ppc64/oprofile/Kconfig | 23 + arch/ppc64/oprofile/Makefile | 9 + arch/ppc64/oprofile/common.c | 186 + arch/ppc64/oprofile/op_impl.h | 108 + arch/ppc64/oprofile/op_model_power4.c | 313 + arch/ppc64/oprofile/op_model_rs64.c | 219 + arch/ppc64/xmon/Makefile | 5 + arch/ppc64/xmon/ansidecl.h | 141 + arch/ppc64/xmon/nonstdio.h | 22 + arch/ppc64/xmon/ppc-dis.c | 184 + arch/ppc64/xmon/ppc-opc.c | 4620 +++ arch/ppc64/xmon/ppc.h | 307 + arch/ppc64/xmon/privinst.h | 65 + arch/ppc64/xmon/setjmp.S | 73 + arch/ppc64/xmon/start.c | 185 + arch/ppc64/xmon/subr_prf.c | 55 + arch/ppc64/xmon/xmon.c | 2506 ++ arch/s390/Kconfig | 480 + arch/s390/Kconfig.debug | 5 + arch/s390/Makefile | 116 + arch/s390/appldata/Makefile | 8 + arch/s390/appldata/appldata.h | 59 + arch/s390/appldata/appldata_base.c | 770 + arch/s390/appldata/appldata_mem.c | 195 + arch/s390/appldata/appldata_net_sum.c | 195 + arch/s390/appldata/appldata_os.c | 241 + arch/s390/boot/Makefile | 18 + arch/s390/boot/install.sh | 38 + arch/s390/crypto/Makefile | 8 + arch/s390/crypto/crypt_z990.h | 374 + arch/s390/crypto/crypt_z990_query.c | 111 + arch/s390/crypto/crypto_des.h | 18 + arch/s390/crypto/des_check_key.c | 130 + arch/s390/crypto/des_z990.c | 284 + arch/s390/crypto/sha1_z990.c | 167 + arch/s390/defconfig | 589 + arch/s390/kernel/Makefile | 31 + arch/s390/kernel/asm-offsets.c | 49 + arch/s390/kernel/binfmt_elf32.c | 210 + arch/s390/kernel/bitmap.S | 56 + arch/s390/kernel/compat_exec_domain.c | 30 + arch/s390/kernel/compat_ioctl.c | 73 + arch/s390/kernel/compat_linux.c | 1045 + arch/s390/kernel/compat_linux.h | 197 + arch/s390/kernel/compat_ptrace.h | 83 + arch/s390/kernel/compat_signal.c | 648 + arch/s390/kernel/compat_wrapper.S | 1443 + arch/s390/kernel/cpcmd.c | 111 + arch/s390/kernel/debug.c | 1286 + arch/s390/kernel/ebcdic.c | 400 + arch/s390/kernel/entry.S | 868 + arch/s390/kernel/entry64.S | 881 + arch/s390/kernel/head.S | 772 + arch/s390/kernel/head64.S | 769 + arch/s390/kernel/init_task.c | 44 + arch/s390/kernel/irq.c | 105 + arch/s390/kernel/module.c | 405 + arch/s390/kernel/process.c | 416 + arch/s390/kernel/profile.c | 20 + arch/s390/kernel/ptrace.c | 738 + arch/s390/kernel/reipl.S | 78 + arch/s390/kernel/reipl64.S | 96 + arch/s390/kernel/s390_ext.c | 135 + arch/s390/kernel/s390_ksyms.c | 65 + arch/s390/kernel/semaphore.c | 108 + arch/s390/kernel/setup.c | 632 + arch/s390/kernel/signal.c | 527 + arch/s390/kernel/smp.c | 840 + arch/s390/kernel/sys_s390.c | 270 + arch/s390/kernel/syscalls.S | 292 + arch/s390/kernel/time.c | 382 + arch/s390/kernel/traps.c | 738 + arch/s390/kernel/vmlinux.lds.S | 130 + arch/s390/kernel/vtime.c | 565 + arch/s390/lib/Makefile | 9 + arch/s390/lib/delay.c | 51 + arch/s390/lib/string.c | 381 + arch/s390/lib/uaccess.S | 210 + arch/s390/lib/uaccess64.S | 206 + arch/s390/math-emu/Makefile | 8 + arch/s390/math-emu/math.c | 2258 ++ arch/s390/math-emu/qrnnd.S | 77 + arch/s390/math-emu/sfp-util.h | 63 + arch/s390/mm/Makefile | 7 + arch/s390/mm/cmm.c | 443 + arch/s390/mm/extmem.c | 588 + arch/s390/mm/fault.c | 586 + arch/s390/mm/init.c | 310 + arch/s390/mm/ioremap.c | 138 + arch/s390/mm/mmap.c | 86 + arch/s390/oprofile/Kconfig | 22 + arch/s390/oprofile/Makefile | 9 + arch/s390/oprofile/init.c | 22 + arch/sh/Kconfig | 793 + arch/sh/Kconfig.debug | 124 + arch/sh/Makefile | 183 + arch/sh/boards/adx/Makefile | 6 + arch/sh/boards/adx/irq.c | 31 + arch/sh/boards/adx/irq_maskreg.c | 107 + arch/sh/boards/adx/setup.c | 56 + arch/sh/boards/bigsur/Makefile | 6 + arch/sh/boards/bigsur/io.c | 125 + arch/sh/boards/bigsur/irq.c | 348 + arch/sh/boards/bigsur/led.c | 55 + arch/sh/boards/bigsur/setup.c | 96 + arch/sh/boards/cat68701/Makefile | 6 + arch/sh/boards/cat68701/irq.c | 28 + arch/sh/boards/cat68701/setup.c | 86 + arch/sh/boards/cqreek/Makefile | 6 + arch/sh/boards/cqreek/irq.c | 128 + arch/sh/boards/cqreek/setup.c | 101 + arch/sh/boards/dmida/Makefile | 7 + arch/sh/boards/dmida/mach.c | 59 + arch/sh/boards/dreamcast/Makefile | 6 + arch/sh/boards/dreamcast/irq.c | 160 + arch/sh/boards/dreamcast/rtc.c | 81 + arch/sh/boards/dreamcast/setup.c | 83 + arch/sh/boards/ec3104/Makefile | 6 + arch/sh/boards/ec3104/io.c | 81 + arch/sh/boards/ec3104/irq.c | 196 + arch/sh/boards/ec3104/setup.c | 78 + arch/sh/boards/harp/Makefile | 8 + arch/sh/boards/harp/irq.c | 148 + arch/sh/boards/harp/led.c | 52 + arch/sh/boards/harp/mach.c | 62 + arch/sh/boards/harp/pcidma.c | 42 + arch/sh/boards/harp/setup.c | 91 + arch/sh/boards/hp6xx/hp620/Makefile | 6 + arch/sh/boards/hp6xx/hp620/mach.c | 52 + arch/sh/boards/hp6xx/hp620/setup.c | 45 + arch/sh/boards/hp6xx/hp680/Makefile | 6 + arch/sh/boards/hp6xx/hp680/mach.c | 53 + arch/sh/boards/hp6xx/hp680/setup.c | 41 + arch/sh/boards/hp6xx/hp690/Makefile | 6 + arch/sh/boards/hp6xx/hp690/mach.c | 48 + arch/sh/boards/mpc1211/Makefile | 8 + arch/sh/boards/mpc1211/led.c | 64 + arch/sh/boards/mpc1211/pci.c | 296 + arch/sh/boards/mpc1211/rtc.c | 152 + arch/sh/boards/mpc1211/setup.c | 360 + arch/sh/boards/overdrive/Makefile | 8 + arch/sh/boards/overdrive/fpga.c | 134 + arch/sh/boards/overdrive/galileo.c | 588 + arch/sh/boards/overdrive/io.c | 173 + arch/sh/boards/overdrive/irq.c | 192 + arch/sh/boards/overdrive/led.c | 59 + arch/sh/boards/overdrive/mach.c | 62 + arch/sh/boards/overdrive/pcidma.c | 46 + arch/sh/boards/overdrive/setup.c | 41 + arch/sh/boards/overdrive/time.c | 119 + 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/hs7751rvoip/Makefile | 12 + arch/sh/boards/renesas/hs7751rvoip/io.c | 310 + arch/sh/boards/renesas/hs7751rvoip/irq.c | 122 + arch/sh/boards/renesas/hs7751rvoip/led.c | 27 + arch/sh/boards/renesas/hs7751rvoip/mach.c | 55 + arch/sh/boards/renesas/hs7751rvoip/pci.c | 150 + arch/sh/boards/renesas/hs7751rvoip/setup.c | 89 + arch/sh/boards/renesas/rts7751r2d/Makefile | 10 + arch/sh/boards/renesas/rts7751r2d/io.c | 319 + arch/sh/boards/renesas/rts7751r2d/irq.c | 135 + arch/sh/boards/renesas/rts7751r2d/led.c | 67 + arch/sh/boards/renesas/rts7751r2d/mach.c | 70 + arch/sh/boards/renesas/rts7751r2d/setup.c | 31 + arch/sh/boards/renesas/systemh/Makefile | 13 + arch/sh/boards/renesas/systemh/io.c | 283 + arch/sh/boards/renesas/systemh/irq.c | 111 + arch/sh/boards/renesas/systemh/setup.c | 80 + arch/sh/boards/saturn/Makefile | 8 + arch/sh/boards/saturn/io.c | 26 + arch/sh/boards/saturn/irq.c | 118 + arch/sh/boards/saturn/setup.c | 43 + arch/sh/boards/saturn/smp.c | 68 + arch/sh/boards/se/7300/Makefile | 7 + arch/sh/boards/se/7300/io.c | 265 + arch/sh/boards/se/7300/irq.c | 37 + arch/sh/boards/se/7300/led.c | 69 + arch/sh/boards/se/7300/setup.c | 66 + 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/Makefile | 6 + arch/sh/boards/se/770x/io.c | 226 + arch/sh/boards/se/770x/irq.c | 80 + arch/sh/boards/se/770x/led.c | 68 + arch/sh/boards/se/770x/mach.c | 68 + arch/sh/boards/se/770x/setup.c | 85 + arch/sh/boards/se/7751/Makefile | 8 + arch/sh/boards/se/7751/io.c | 244 + arch/sh/boards/se/7751/irq.c | 67 + arch/sh/boards/se/7751/led.c | 68 + arch/sh/boards/se/7751/mach.c | 55 + arch/sh/boards/se/7751/pci.c | 148 + arch/sh/boards/se/7751/setup.c | 228 + arch/sh/boards/sh03/Makefile | 6 + arch/sh/boards/sh03/led.c | 49 + arch/sh/boards/sh03/rtc.c | 144 + arch/sh/boards/sh03/setup.c | 72 + arch/sh/boards/sh2000/Makefile | 6 + arch/sh/boards/sh2000/setup.c | 71 + arch/sh/boards/snapgear/Makefile | 6 + arch/sh/boards/snapgear/io.c | 226 + arch/sh/boards/snapgear/rtc.c | 333 + arch/sh/boards/snapgear/setup.c | 216 + 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/boards/unknown/Makefile | 6 + arch/sh/boards/unknown/io.c | 46 + arch/sh/boards/unknown/mach.c | 67 + arch/sh/boards/unknown/setup.c | 23 + arch/sh/boot/Makefile | 20 + arch/sh/boot/compressed/Makefile | 41 + arch/sh/boot/compressed/head.S | 120 + arch/sh/boot/compressed/install.sh | 56 + arch/sh/boot/compressed/misc.c | 240 + arch/sh/boot/compressed/vmlinux.scr | 9 + arch/sh/cchips/Kconfig | 96 + arch/sh/cchips/hd6446x/hd64461/Makefile | 6 + arch/sh/cchips/hd6446x/hd64461/io.c | 157 + arch/sh/cchips/hd6446x/hd64461/setup.c | 171 + arch/sh/cchips/hd6446x/hd64465/Makefile | 6 + arch/sh/cchips/hd6446x/hd64465/gpio.c | 196 + arch/sh/cchips/hd6446x/hd64465/io.c | 216 + arch/sh/cchips/hd6446x/hd64465/setup.c | 202 + arch/sh/cchips/voyagergx/Makefile | 8 + arch/sh/cchips/voyagergx/consistent.c | 126 + arch/sh/cchips/voyagergx/irq.c | 194 + arch/sh/cchips/voyagergx/setup.c | 37 + arch/sh/configs/adx_defconfig | 539 + arch/sh/configs/cqreek_defconfig | 533 + arch/sh/configs/dreamcast_defconfig | 794 + arch/sh/configs/hp680_defconfig | 554 + arch/sh/configs/microdev_defconfig | 734 + arch/sh/configs/rts7751r2d_defconfig | 847 + arch/sh/configs/se7300_defconfig | 531 + arch/sh/configs/se73180_defconfig | 496 + arch/sh/configs/se7705_defconfig | 714 + arch/sh/configs/se7750_defconfig | 713 + arch/sh/configs/se7751_defconfig | 777 + arch/sh/configs/sh03_defconfig | 924 + arch/sh/configs/snapgear_defconfig | 699 + arch/sh/configs/systemh_defconfig | 509 + arch/sh/drivers/Makefile | 7 + arch/sh/drivers/dma/Kconfig | 55 + arch/sh/drivers/dma/Makefile | 9 + arch/sh/drivers/dma/dma-api.c | 292 + arch/sh/drivers/dma/dma-g2.c | 171 + arch/sh/drivers/dma/dma-isa.c | 106 + arch/sh/drivers/dma/dma-pvr2.c | 109 + arch/sh/drivers/dma/dma-sh.c | 267 + arch/sh/drivers/dma/dma-sh.h | 52 + arch/sh/drivers/dma/dma-sysfs.c | 133 + arch/sh/drivers/pci/Kconfig | 41 + arch/sh/drivers/pci/Makefile | 16 + arch/sh/drivers/pci/dma-dreamcast.c | 71 + arch/sh/drivers/pci/fixups-dreamcast.c | 81 + arch/sh/drivers/pci/fixups-rts7751r2d.c | 43 + arch/sh/drivers/pci/fixups-sh03.c | 61 + arch/sh/drivers/pci/ops-bigsur.c | 88 + arch/sh/drivers/pci/ops-dreamcast.c | 169 + arch/sh/drivers/pci/ops-rts7751r2d.c | 79 + arch/sh/drivers/pci/ops-sh03.c | 45 + arch/sh/drivers/pci/ops-snapgear.c | 102 + arch/sh/drivers/pci/pci-auto.c | 555 + arch/sh/drivers/pci/pci-sh7751.c | 417 + arch/sh/drivers/pci/pci-sh7751.h | 303 + arch/sh/drivers/pci/pci-st40.c | 509 + arch/sh/drivers/pci/pci-st40.h | 136 + arch/sh/drivers/pci/pci.c | 155 + arch/sh/kernel/Makefile | 22 + arch/sh/kernel/asm-offsets.c | 32 + arch/sh/kernel/cf-enabler.c | 158 + arch/sh/kernel/cpu/Makefile | 16 + arch/sh/kernel/cpu/adc.c | 36 + arch/sh/kernel/cpu/bus.c | 195 + arch/sh/kernel/cpu/init.c | 222 + arch/sh/kernel/cpu/irq_imask.c | 116 + arch/sh/kernel/cpu/irq_ipr.c | 339 + arch/sh/kernel/cpu/rtc.c | 136 + arch/sh/kernel/cpu/sh2/Makefile | 6 + arch/sh/kernel/cpu/sh2/probe.c | 39 + arch/sh/kernel/cpu/sh3/Makefile | 6 + arch/sh/kernel/cpu/sh3/ex.S | 199 + arch/sh/kernel/cpu/sh3/probe.c | 97 + arch/sh/kernel/cpu/sh4/Makefile | 10 + arch/sh/kernel/cpu/sh4/ex.S | 384 + arch/sh/kernel/cpu/sh4/fpu.c | 335 + arch/sh/kernel/cpu/sh4/irq_intc2.c | 222 + arch/sh/kernel/cpu/sh4/probe.c | 138 + arch/sh/kernel/cpu/sh4/sq.c | 453 + arch/sh/kernel/cpu/ubc.S | 59 + arch/sh/kernel/cpufreq.c | 218 + arch/sh/kernel/early_printk.c | 137 + arch/sh/kernel/entry.S | 1149 + arch/sh/kernel/head.S | 76 + arch/sh/kernel/init_task.c | 36 + arch/sh/kernel/io.c | 59 + arch/sh/kernel/io_generic.c | 243 + arch/sh/kernel/irq.c | 106 + arch/sh/kernel/kgdb_jmp.S | 33 + arch/sh/kernel/kgdb_stub.c | 1491 + arch/sh/kernel/module.c | 146 + arch/sh/kernel/process.c | 531 + arch/sh/kernel/ptrace.c | 320 + arch/sh/kernel/semaphore.c | 139 + arch/sh/kernel/setup.c | 649 + arch/sh/kernel/sh_bios.c | 75 + arch/sh/kernel/sh_ksyms.c | 126 + arch/sh/kernel/signal.c | 607 + arch/sh/kernel/smp.c | 199 + arch/sh/kernel/sys_sh.c | 289 + arch/sh/kernel/time.c | 657 + arch/sh/kernel/traps.c | 712 + arch/sh/kernel/vmlinux.lds.S | 155 + arch/sh/lib/Makefile | 13 + arch/sh/lib/checksum.S | 385 + arch/sh/lib/delay.c | 41 + arch/sh/lib/div64-generic.c | 19 + arch/sh/lib/div64.S | 46 + arch/sh/lib/memchr.S | 26 + arch/sh/lib/memcpy-sh4.S | 800 + arch/sh/lib/memcpy.S | 227 + arch/sh/lib/memmove.S | 254 + arch/sh/lib/memset.S | 57 + arch/sh/lib/strcasecmp.c | 26 + arch/sh/lib/strlen.S | 70 + arch/sh/lib/udivdi3.c | 16 + arch/sh/mm/Makefile | 25 + arch/sh/mm/cache-sh2.c | 50 + arch/sh/mm/cache-sh3.c | 100 + arch/sh/mm/cache-sh4.c | 362 + arch/sh/mm/cache-sh7705.c | 206 + arch/sh/mm/clear_page.S | 295 + arch/sh/mm/consistent.c | 85 + arch/sh/mm/copy_page.S | 397 + arch/sh/mm/extable.c | 22 + arch/sh/mm/fault-nommu.c | 82 + arch/sh/mm/fault.c | 374 + arch/sh/mm/hugetlbpage.c | 264 + arch/sh/mm/init.c | 313 + arch/sh/mm/ioremap.c | 163 + arch/sh/mm/pg-dma.c | 97 + arch/sh/mm/pg-nommu.c | 36 + arch/sh/mm/pg-sh4.c | 122 + arch/sh/mm/pg-sh7705.c | 137 + arch/sh/mm/tlb-nommu.c | 58 + arch/sh/mm/tlb-sh3.c | 92 + arch/sh/mm/tlb-sh4.c | 96 + arch/sh/oprofile/Kconfig | 23 + arch/sh/oprofile/Makefile | 13 + arch/sh/oprofile/op_model_null.c | 23 + arch/sh/oprofile/op_model_sh7750.c | 281 + arch/sh/ramdisk/Makefile | 20 + arch/sh/ramdisk/ld.script | 9 + arch/sh/tools/Makefile | 15 + arch/sh/tools/gen-mach-types | 49 + arch/sh/tools/mach-types | 31 + arch/sh64/Kconfig | 293 + arch/sh64/Kconfig.debug | 44 + arch/sh64/Makefile | 116 + arch/sh64/boot/Makefile | 20 + arch/sh64/boot/compressed/Makefile | 46 + arch/sh64/boot/compressed/cache.c | 39 + arch/sh64/boot/compressed/head.S | 164 + arch/sh64/boot/compressed/install.sh | 56 + arch/sh64/boot/compressed/misc.c | 251 + arch/sh64/boot/compressed/vmlinux.lds.S | 65 + arch/sh64/configs/cayman_defconfig | 837 + arch/sh64/kernel/Makefile | 36 + arch/sh64/kernel/alphanum.c | 45 + arch/sh64/kernel/asm-offsets.c | 33 + arch/sh64/kernel/dma.c | 297 + arch/sh64/kernel/early_printk.c | 105 + arch/sh64/kernel/entry.S | 2103 ++ arch/sh64/kernel/fpu.c | 170 + arch/sh64/kernel/head.S | 373 + arch/sh64/kernel/init_task.c | 46 + arch/sh64/kernel/irq.c | 116 + arch/sh64/kernel/irq_intc.c | 272 + arch/sh64/kernel/led.c | 41 + arch/sh64/kernel/module.c | 161 + arch/sh64/kernel/pci-dma.c | 50 + arch/sh64/kernel/pci_sh5.c | 541 + arch/sh64/kernel/pci_sh5.h | 107 + arch/sh64/kernel/pcibios.c | 168 + arch/sh64/kernel/process.c | 962 + arch/sh64/kernel/ptrace.c | 376 + arch/sh64/kernel/semaphore.c | 140 + arch/sh64/kernel/setup.c | 385 + arch/sh64/kernel/sh_ksyms.c | 89 + arch/sh64/kernel/signal.c | 727 + arch/sh64/kernel/switchto.S | 198 + arch/sh64/kernel/sys_sh64.c | 300 + arch/sh64/kernel/syscalls.S | 345 + arch/sh64/kernel/time.c | 610 + arch/sh64/kernel/traps.c | 961 + arch/sh64/kernel/unwind.c | 326 + arch/sh64/kernel/vmlinux.lds.S | 181 + arch/sh64/lib/Makefile | 19 + arch/sh64/lib/c-checksum.c | 231 + arch/sh64/lib/copy_user_memcpy.S | 217 + arch/sh64/lib/dbg.c | 430 + arch/sh64/lib/io.c | 140 + arch/sh64/lib/iomap.c | 55 + arch/sh64/lib/memcpy.c | 82 + arch/sh64/lib/page_clear.S | 54 + arch/sh64/lib/page_copy.S | 91 + arch/sh64/lib/panic.c | 58 + arch/sh64/lib/udelay.c | 60 + arch/sh64/mach-cayman/Makefile | 11 + arch/sh64/mach-cayman/iomap.c | 24 + arch/sh64/mach-cayman/irq.c | 196 + arch/sh64/mach-cayman/led.c | 51 + arch/sh64/mach-cayman/setup.c | 246 + arch/sh64/mach-harp/Makefile | 14 + arch/sh64/mach-harp/setup.c | 139 + arch/sh64/mach-romram/Makefile | 14 + arch/sh64/mach-romram/setup.c | 142 + arch/sh64/mach-sim/Makefile | 14 + arch/sh64/mach-sim/setup.c | 164 + arch/sh64/mm/Makefile | 44 + arch/sh64/mm/cache.c | 1041 + arch/sh64/mm/extable.c | 81 + arch/sh64/mm/fault.c | 601 + arch/sh64/mm/hugetlbpage.c | 264 + arch/sh64/mm/init.c | 196 + arch/sh64/mm/ioremap.c | 469 + arch/sh64/mm/tlb.c | 166 + arch/sh64/mm/tlbmiss.c | 280 + arch/sh64/oprofile/Kconfig | 23 + arch/sh64/oprofile/Makefile | 12 + arch/sh64/oprofile/op_model_null.c | 23 + arch/sparc/Kconfig | 393 + arch/sparc/Kconfig.debug | 14 + arch/sparc/Makefile | 78 + arch/sparc/boot/Makefile | 58 + arch/sparc/boot/btfixupprep.c | 386 + arch/sparc/boot/piggyback.c | 137 + arch/sparc/defconfig | 644 + arch/sparc/kernel/Makefile | 27 + arch/sparc/kernel/apc.c | 186 + arch/sparc/kernel/asm-offsets.c | 45 + arch/sparc/kernel/auxio.c | 138 + arch/sparc/kernel/cpu.c | 168 + arch/sparc/kernel/devices.c | 160 + arch/sparc/kernel/ebus.c | 361 + arch/sparc/kernel/entry.S | 1956 ++ arch/sparc/kernel/errtbls.c | 276 + arch/sparc/kernel/etrap.S | 321 + arch/sparc/kernel/head.S | 1326 + arch/sparc/kernel/idprom.c | 108 + arch/sparc/kernel/init_task.c | 28 + arch/sparc/kernel/ioport.c | 731 + arch/sparc/kernel/irq.c | 614 + arch/sparc/kernel/module.c | 159 + arch/sparc/kernel/muldiv.c | 240 + arch/sparc/kernel/pcic.c | 1041 + arch/sparc/kernel/pmc.c | 99 + arch/sparc/kernel/process.c | 746 + arch/sparc/kernel/ptrace.c | 632 + arch/sparc/kernel/rtrap.S | 319 + arch/sparc/kernel/sclow.S | 86 + arch/sparc/kernel/semaphore.c | 155 + arch/sparc/kernel/setup.c | 476 + arch/sparc/kernel/signal.c | 1181 + arch/sparc/kernel/smp.c | 295 + arch/sparc/kernel/sparc-stub.c | 724 + arch/sparc/kernel/sparc_ksyms.c | 334 + arch/sparc/kernel/sun4c_irq.c | 250 + arch/sparc/kernel/sun4d_irq.c | 594 + arch/sparc/kernel/sun4d_smp.c | 486 + arch/sparc/kernel/sun4m_irq.c | 399 + arch/sparc/kernel/sun4m_smp.c | 451 + arch/sparc/kernel/sun4setup.c | 75 + arch/sparc/kernel/sunos_asm.S | 67 + arch/sparc/kernel/sunos_ioctl.c | 231 + arch/sparc/kernel/sys_solaris.c | 37 + arch/sparc/kernel/sys_sparc.c | 485 + arch/sparc/kernel/sys_sunos.c | 1194 + arch/sparc/kernel/systbls.S | 186 + arch/sparc/kernel/tadpole.c | 126 + arch/sparc/kernel/tick14.c | 85 + arch/sparc/kernel/time.c | 641 + arch/sparc/kernel/trampoline.S | 162 + arch/sparc/kernel/traps.c | 515 + arch/sparc/kernel/unaligned.c | 548 + arch/sparc/kernel/vmlinux.lds.S | 103 + arch/sparc/kernel/windows.c | 127 + arch/sparc/kernel/wof.S | 428 + arch/sparc/kernel/wuf.S | 360 + arch/sparc/lib/COPYING.LIB | 481 + arch/sparc/lib/Makefile | 13 + arch/sparc/lib/ashldi3.S | 34 + arch/sparc/lib/ashrdi3.S | 36 + arch/sparc/lib/atomic.S | 100 + arch/sparc/lib/atomic32.c | 53 + arch/sparc/lib/bitext.c | 132 + arch/sparc/lib/bitops.S | 110 + arch/sparc/lib/blockops.S | 89 + arch/sparc/lib/checksum.S | 583 + arch/sparc/lib/copy_user.S | 492 + arch/sparc/lib/debuglocks.c | 202 + arch/sparc/lib/divdi3.S | 295 + arch/sparc/lib/locks.S | 72 + arch/sparc/lib/lshrdi3.S | 27 + arch/sparc/lib/memcmp.S | 312 + arch/sparc/lib/memcpy.S | 1150 + arch/sparc/lib/memscan.S | 133 + arch/sparc/lib/memset.S | 203 + arch/sparc/lib/mul.S | 135 + arch/sparc/lib/muldi3.S | 76 + arch/sparc/lib/rem.S | 382 + arch/sparc/lib/rwsem.S | 205 + arch/sparc/lib/sdiv.S | 379 + arch/sparc/lib/strlen.S | 81 + arch/sparc/lib/strlen_user.S | 109 + arch/sparc/lib/strncmp.S | 118 + arch/sparc/lib/strncpy_from_user.S | 47 + arch/sparc/lib/udiv.S | 355 + arch/sparc/lib/udivdi3.S | 258 + arch/sparc/lib/umul.S | 169 + arch/sparc/lib/urem.S | 355 + arch/sparc/math-emu/Makefile | 8 + arch/sparc/math-emu/ashldi3.S | 36 + arch/sparc/math-emu/math.c | 521 + arch/sparc/math-emu/sfp-util.h | 115 + arch/sparc/mm/Makefile | 23 + arch/sparc/mm/btfixup.c | 336 + arch/sparc/mm/extable.c | 77 + arch/sparc/mm/fault.c | 596 + arch/sparc/mm/generic.c | 154 + arch/sparc/mm/highmem.c | 120 + arch/sparc/mm/hypersparc.S | 413 + arch/sparc/mm/init.c | 515 + arch/sparc/mm/io-unit.c | 318 + arch/sparc/mm/iommu.c | 475 + arch/sparc/mm/loadmmu.c | 46 + arch/sparc/mm/nosrmmu.c | 59 + arch/sparc/mm/nosun4c.c | 77 + arch/sparc/mm/srmmu.c | 2274 ++ arch/sparc/mm/sun4c.c | 2276 ++ arch/sparc/mm/swift.S | 256 + arch/sparc/mm/tsunami.S | 133 + arch/sparc/mm/viking.S | 284 + arch/sparc/prom/Makefile | 9 + arch/sparc/prom/bootstr.c | 63 + arch/sparc/prom/console.c | 220 + arch/sparc/prom/devmap.c | 54 + arch/sparc/prom/devops.c | 89 + arch/sparc/prom/init.c | 95 + arch/sparc/prom/memory.c | 216 + arch/sparc/prom/misc.c | 139 + arch/sparc/prom/mp.c | 121 + arch/sparc/prom/palloc.c | 44 + arch/sparc/prom/printf.c | 46 + arch/sparc/prom/ranges.c | 118 + arch/sparc/prom/segment.c | 29 + arch/sparc/prom/sun4prom.c | 161 + arch/sparc/prom/tree.c | 364 + arch/sparc64/Kconfig | 630 + arch/sparc64/Kconfig.debug | 54 + arch/sparc64/Makefile | 83 + arch/sparc64/boot/Makefile | 34 + arch/sparc64/boot/piggyback.c | 109 + arch/sparc64/defconfig | 1951 ++ arch/sparc64/kernel/Makefile | 44 + arch/sparc64/kernel/auxio.c | 152 + arch/sparc64/kernel/binfmt_aout32.c | 424 + arch/sparc64/kernel/binfmt_elf32.c | 159 + arch/sparc64/kernel/central.c | 457 + arch/sparc64/kernel/chmc.c | 458 + arch/sparc64/kernel/cpu.c | 124 + arch/sparc64/kernel/devices.c | 144 + arch/sparc64/kernel/dtlb_backend.S | 181 + arch/sparc64/kernel/dtlb_base.S | 113 + arch/sparc64/kernel/dtlb_prot.S | 54 + arch/sparc64/kernel/ebus.c | 644 + arch/sparc64/kernel/entry.S | 1919 ++ arch/sparc64/kernel/etrap.S | 301 + arch/sparc64/kernel/head.S | 782 + arch/sparc64/kernel/idprom.c | 49 + arch/sparc64/kernel/init_task.c | 35 + arch/sparc64/kernel/ioctl32.c | 597 + arch/sparc64/kernel/iommu_common.c | 231 + arch/sparc64/kernel/iommu_common.h | 48 + arch/sparc64/kernel/irq.c | 1269 + arch/sparc64/kernel/isa.c | 329 + arch/sparc64/kernel/itlb_base.S | 83 + arch/sparc64/kernel/kprobes.c | 394 + arch/sparc64/kernel/module.c | 209 + arch/sparc64/kernel/pci.c | 805 + arch/sparc64/kernel/pci_common.c | 1040 + arch/sparc64/kernel/pci_impl.h | 49 + arch/sparc64/kernel/pci_iommu.c | 855 + arch/sparc64/kernel/pci_psycho.c | 1560 + arch/sparc64/kernel/pci_sabre.c | 1702 ++ arch/sparc64/kernel/pci_schizo.c | 2187 ++ arch/sparc64/kernel/power.c | 150 + arch/sparc64/kernel/process.c | 869 + arch/sparc64/kernel/ptrace.c | 646 + arch/sparc64/kernel/rtrap.S | 362 + arch/sparc64/kernel/sbus.c | 1243 + arch/sparc64/kernel/semaphore.c | 251 + arch/sparc64/kernel/setup.c | 731 + arch/sparc64/kernel/signal.c | 688 + arch/sparc64/kernel/signal32.c | 1469 + arch/sparc64/kernel/smp.c | 1244 + arch/sparc64/kernel/sparc64_ksyms.c | 432 + arch/sparc64/kernel/starfire.c | 123 + arch/sparc64/kernel/sunos_ioctl32.c | 275 + arch/sparc64/kernel/sys32.S | 327 + arch/sparc64/kernel/sys_sparc.c | 723 + arch/sparc64/kernel/sys_sparc32.c | 1118 + arch/sparc64/kernel/sys_sunos32.c | 1343 + arch/sparc64/kernel/systbls.S | 251 + arch/sparc64/kernel/time.c | 1195 + arch/sparc64/kernel/trampoline.S | 368 + arch/sparc64/kernel/traps.c | 2118 ++ arch/sparc64/kernel/ttable.S | 280 + arch/sparc64/kernel/unaligned.c | 729 + arch/sparc64/kernel/us2e_cpufreq.c | 400 + arch/sparc64/kernel/us3_cpufreq.c | 255 + arch/sparc64/kernel/vmlinux.lds.S | 106 + arch/sparc64/kernel/winfixup.S | 417 + arch/sparc64/lib/Makefile | 20 + arch/sparc64/lib/PeeCeeI.c | 237 + arch/sparc64/lib/U1copy_from_user.S | 33 + arch/sparc64/lib/U1copy_to_user.S | 33 + arch/sparc64/lib/U1memcpy.S | 560 + arch/sparc64/lib/U3copy_from_user.S | 22 + arch/sparc64/lib/U3copy_to_user.S | 33 + arch/sparc64/lib/U3memcpy.S | 422 + arch/sparc64/lib/U3patch.S | 32 + arch/sparc64/lib/VISsave.S | 131 + arch/sparc64/lib/atomic.S | 139 + arch/sparc64/lib/bitops.S | 145 + arch/sparc64/lib/bzero.S | 158 + arch/sparc64/lib/checksum.S | 172 + arch/sparc64/lib/clear_page.S | 105 + arch/sparc64/lib/copy_in_user.S | 119 + arch/sparc64/lib/copy_page.S | 242 + arch/sparc64/lib/csum_copy.S | 308 + arch/sparc64/lib/csum_copy_from_user.S | 21 + arch/sparc64/lib/csum_copy_to_user.S | 21 + arch/sparc64/lib/debuglocks.c | 376 + arch/sparc64/lib/dec_and_lock.S | 78 + arch/sparc64/lib/delay.c | 49 + arch/sparc64/lib/find_bit.c | 127 + arch/sparc64/lib/iomap.c | 48 + arch/sparc64/lib/ipcsum.S | 34 + arch/sparc64/lib/mcount.S | 61 + arch/sparc64/lib/memcmp.S | 28 + arch/sparc64/lib/memmove.S | 31 + arch/sparc64/lib/memscan.S | 129 + arch/sparc64/lib/rwsem.S | 165 + arch/sparc64/lib/strlen.S | 80 + arch/sparc64/lib/strlen_user.S | 95 + arch/sparc64/lib/strncmp.S | 32 + arch/sparc64/lib/strncpy_from_user.S | 139 + arch/sparc64/lib/user_fixup.c | 71 + arch/sparc64/lib/xor.S | 354 + arch/sparc64/math-emu/Makefile | 7 + arch/sparc64/math-emu/math.c | 493 + arch/sparc64/math-emu/sfp-util.h | 120 + arch/sparc64/mm/Makefile | 10 + arch/sparc64/mm/extable.c | 80 + arch/sparc64/mm/fault.c | 527 + arch/sparc64/mm/generic.c | 182 + arch/sparc64/mm/hugetlbpage.c | 310 + arch/sparc64/mm/init.c | 1769 ++ arch/sparc64/mm/tlb.c | 151 + arch/sparc64/mm/ultra.S | 583 + arch/sparc64/oprofile/Kconfig | 23 + arch/sparc64/oprofile/Makefile | 9 + arch/sparc64/oprofile/init.c | 23 + arch/sparc64/prom/Makefile | 10 + arch/sparc64/prom/bootstr.c | 40 + arch/sparc64/prom/cif.S | 225 + arch/sparc64/prom/console.c | 146 + arch/sparc64/prom/devops.c | 41 + arch/sparc64/prom/init.c | 101 + arch/sparc64/prom/map.S | 72 + arch/sparc64/prom/memory.c | 152 + arch/sparc64/prom/misc.c | 339 + arch/sparc64/prom/p1275.c | 161 + arch/sparc64/prom/printf.c | 47 + arch/sparc64/prom/tree.c | 377 + arch/sparc64/solaris/Makefile | 10 + arch/sparc64/solaris/conv.h | 38 + arch/sparc64/solaris/entry64.S | 218 + arch/sparc64/solaris/fs.c | 739 + arch/sparc64/solaris/ioctl.c | 820 + arch/sparc64/solaris/ipc.c | 127 + arch/sparc64/solaris/misc.c | 784 + arch/sparc64/solaris/signal.c | 430 + arch/sparc64/solaris/signal.h | 108 + arch/sparc64/solaris/socket.c | 415 + arch/sparc64/solaris/socksys.c | 211 + arch/sparc64/solaris/socksys.h | 208 + arch/sparc64/solaris/systbl.S | 314 + arch/sparc64/solaris/timod.c | 959 + arch/um/Kconfig | 320 + arch/um/Kconfig.debug | 53 + arch/um/Kconfig_char | 208 + arch/um/Kconfig_i386 | 24 + arch/um/Kconfig_net | 180 + arch/um/Kconfig_scsi | 58 + arch/um/Kconfig_x86_64 | 15 + arch/um/Makefile | 210 + arch/um/Makefile-i386 | 44 + arch/um/Makefile-ia64 | 1 + arch/um/Makefile-os-Linux | 8 + arch/um/Makefile-ppc | 9 + arch/um/Makefile-skas | 14 + arch/um/Makefile-tt | 5 + arch/um/Makefile-x86_64 | 32 + arch/um/config.release | 333 + arch/um/defconfig | 417 + arch/um/drivers/Makefile | 46 + arch/um/drivers/chan_kern.c | 577 + arch/um/drivers/chan_user.c | 210 + arch/um/drivers/cow.h | 42 + arch/um/drivers/cow_sys.h | 48 + arch/um/drivers/cow_user.c | 378 + arch/um/drivers/daemon.h | 35 + arch/um/drivers/daemon_kern.c | 108 + arch/um/drivers/daemon_user.c | 197 + arch/um/drivers/fd.c | 108 + arch/um/drivers/harddog_kern.c | 190 + arch/um/drivers/harddog_user.c | 143 + arch/um/drivers/hostaudio_kern.c | 352 + arch/um/drivers/line.c | 681 + arch/um/drivers/mcast.h | 30 + arch/um/drivers/mcast_kern.c | 143 + arch/um/drivers/mcast_user.c | 177 + arch/um/drivers/mconsole_kern.c | 619 + arch/um/drivers/mconsole_user.c | 215 + arch/um/drivers/mmapper_kern.c | 150 + arch/um/drivers/net_kern.c | 896 + arch/um/drivers/net_user.c | 255 + arch/um/drivers/null.c | 56 + arch/um/drivers/pcap_kern.c | 123 + arch/um/drivers/pcap_user.c | 143 + arch/um/drivers/pcap_user.h | 31 + arch/um/drivers/port.h | 30 + arch/um/drivers/port_kern.c | 309 + arch/um/drivers/port_user.c | 225 + arch/um/drivers/pty.c | 162 + arch/um/drivers/random.c | 122 + arch/um/drivers/slip.h | 39 + arch/um/drivers/slip_kern.c | 109 + arch/um/drivers/slip_proto.h | 93 + arch/um/drivers/slip_user.c | 280 + arch/um/drivers/slirp.h | 51 + arch/um/drivers/slirp_kern.c | 135 + arch/um/drivers/slirp_user.c | 201 + arch/um/drivers/ssl.c | 251 + arch/um/drivers/ssl.h | 23 + arch/um/drivers/stderr_console.c | 45 + arch/um/drivers/stdio_console.c | 205 + arch/um/drivers/stdio_console.h | 21 + arch/um/drivers/tty.c | 92 + arch/um/drivers/ubd_kern.c | 1669 ++ arch/um/drivers/ubd_user.c | 75 + arch/um/drivers/xterm.c | 225 + arch/um/drivers/xterm.h | 22 + arch/um/drivers/xterm_kern.c | 93 + arch/um/include/2_5compat.h | 24 + arch/um/include/chan_kern.h | 60 + arch/um/include/chan_user.h | 67 + arch/um/include/choose-mode.h | 42 + arch/um/include/elf_user.h | 19 + arch/um/include/frame_kern.h | 32 + arch/um/include/helper.h | 27 + arch/um/include/init.h | 132 + arch/um/include/initrd.h | 22 + arch/um/include/irq_kern.h | 28 + arch/um/include/irq_user.h | 36 + arch/um/include/kern.h | 49 + arch/um/include/kern_util.h | 125 + arch/um/include/line.h | 108 + arch/um/include/mconsole.h | 103 + arch/um/include/mconsole_kern.h | 62 + arch/um/include/mem.h | 28 + arch/um/include/mem_kern.h | 30 + arch/um/include/mem_user.h | 83 + arch/um/include/mode.h | 30 + arch/um/include/mode_kern.h | 30 + arch/um/include/net_kern.h | 82 + arch/um/include/net_user.h | 66 + arch/um/include/os.h | 183 + arch/um/include/process.h | 25 + arch/um/include/ptrace_user.h | 60 + arch/um/include/registers.h | 29 + arch/um/include/sigcontext.h | 25 + arch/um/include/sigio.h | 28 + arch/um/include/signal_kern.h | 22 + arch/um/include/signal_user.h | 28 + arch/um/include/skas_ptrace.h | 36 + arch/um/include/syscall_user.h | 23 + arch/um/include/sysdep-i386/checksum.h | 219 + arch/um/include/sysdep-i386/ptrace.h | 241 + arch/um/include/sysdep-i386/ptrace_user.h | 62 + arch/um/include/sysdep-i386/sigcontext.h | 49 + arch/um/include/sysdep-i386/signal.h | 25 + arch/um/include/sysdep-i386/syscalls.h | 123 + arch/um/include/sysdep-ia64/ptrace.h | 26 + arch/um/include/sysdep-ia64/sigcontext.h | 20 + arch/um/include/sysdep-ia64/syscalls.h | 20 + arch/um/include/sysdep-ppc/ptrace.h | 104 + arch/um/include/sysdep-ppc/sigcontext.h | 62 + arch/um/include/sysdep-ppc/syscalls.h | 53 + arch/um/include/sysdep-x86_64/checksum.h | 151 + arch/um/include/sysdep-x86_64/ptrace.h | 264 + arch/um/include/sysdep-x86_64/ptrace_user.h | 69 + arch/um/include/sysdep-x86_64/sigcontext.h | 49 + arch/um/include/sysdep-x86_64/signal.h | 27 + arch/um/include/sysdep-x86_64/syscalls.h | 91 + arch/um/include/sysrq.h | 6 + arch/um/include/tempfile.h | 21 + arch/um/include/time_user.h | 18 + arch/um/include/tlb.h | 67 + arch/um/include/ubd_user.h | 26 + arch/um/include/um_mmu.h | 40 + arch/um/include/um_uaccess.h | 125 + arch/um/include/umid.h | 22 + arch/um/include/uml_uaccess.h | 28 + arch/um/include/user.h | 32 + arch/um/include/user_util.h | 106 + arch/um/kernel/Makefile | 58 + arch/um/kernel/checksum.c | 36 + arch/um/kernel/config.c.in | 32 + arch/um/kernel/dyn.lds.S | 176 + arch/um/kernel/exec_kern.c | 91 + arch/um/kernel/exitcode.c | 73 + arch/um/kernel/gmon_syms.c | 34 + arch/um/kernel/gprof_syms.c | 20 + arch/um/kernel/helper.c | 173 + arch/um/kernel/init_task.c | 61 + arch/um/kernel/initrd_kern.c | 59 + arch/um/kernel/initrd_user.c | 46 + arch/um/kernel/irq.c | 178 + arch/um/kernel/irq_user.c | 443 + arch/um/kernel/ksyms.c | 137 + arch/um/kernel/main.c | 271 + arch/um/kernel/mem.c | 359 + arch/um/kernel/mem_user.c | 273 + arch/um/kernel/physmem.c | 478 + arch/um/kernel/process.c | 423 + arch/um/kernel/process_kern.c | 500 + arch/um/kernel/ptrace.c | 388 + arch/um/kernel/reboot.c | 79 + arch/um/kernel/resource.c | 23 + arch/um/kernel/sigio_kern.c | 63 + arch/um/kernel/sigio_user.c | 431 + arch/um/kernel/signal_kern.c | 213 + arch/um/kernel/signal_user.c | 157 + arch/um/kernel/skas/Makefile | 13 + arch/um/kernel/skas/exec_kern.c | 41 + arch/um/kernel/skas/include/mmu-skas.h | 24 + arch/um/kernel/skas/include/mode-skas.h | 34 + arch/um/kernel/skas/include/mode_kern-skas.h | 53 + arch/um/kernel/skas/include/proc_mm.h | 55 + arch/um/kernel/skas/include/skas.h | 46 + arch/um/kernel/skas/include/uaccess-skas.h | 45 + arch/um/kernel/skas/mem.c | 35 + arch/um/kernel/skas/mem_user.c | 102 + arch/um/kernel/skas/mmu.c | 48 + arch/um/kernel/skas/process.c | 339 + arch/um/kernel/skas/process_kern.c | 213 + arch/um/kernel/skas/syscall_kern.c | 43 + arch/um/kernel/skas/syscall_user.c | 44 + arch/um/kernel/skas/time.c | 30 + arch/um/kernel/skas/tlb.c | 85 + arch/um/kernel/skas/trap_user.c | 71 + arch/um/kernel/skas/uaccess.c | 259 + arch/um/kernel/skas/util/Makefile | 4 + arch/um/kernel/skas/util/mk_ptregs-i386.c | 51 + arch/um/kernel/skas/util/mk_ptregs-x86_64.c | 68 + arch/um/kernel/smp.c | 269 + arch/um/kernel/sys_call_table.c | 276 + arch/um/kernel/syscall_kern.c | 176 + arch/um/kernel/syscall_user.c | 48 + arch/um/kernel/sysrq.c | 81 + arch/um/kernel/tempfile.c | 82 + arch/um/kernel/time.c | 167 + arch/um/kernel/time_kern.c | 203 + arch/um/kernel/tlb.c | 369 + arch/um/kernel/trap_kern.c | 251 + arch/um/kernel/trap_user.c | 120 + arch/um/kernel/tt/Makefile | 28 + arch/um/kernel/tt/exec_kern.c | 87 + arch/um/kernel/tt/exec_user.c | 57 + arch/um/kernel/tt/gdb.c | 278 + arch/um/kernel/tt/gdb_kern.c | 40 + arch/um/kernel/tt/include/debug.h | 29 + arch/um/kernel/tt/include/mmu-tt.h | 23 + arch/um/kernel/tt/include/mode-tt.h | 35 + arch/um/kernel/tt/include/mode_kern-tt.h | 53 + arch/um/kernel/tt/include/tt.h | 46 + arch/um/kernel/tt/include/uaccess-tt.h | 71 + arch/um/kernel/tt/ksyms.c | 28 + arch/um/kernel/tt/mem.c | 51 + arch/um/kernel/tt/mem_user.c | 49 + arch/um/kernel/tt/process_kern.c | 476 + arch/um/kernel/tt/ptproxy/Makefile | 10 + arch/um/kernel/tt/ptproxy/proxy.c | 377 + arch/um/kernel/tt/ptproxy/ptproxy.h | 61 + arch/um/kernel/tt/ptproxy/ptrace.c | 237 + arch/um/kernel/tt/ptproxy/sysdep.c | 70 + arch/um/kernel/tt/ptproxy/sysdep.h | 25 + arch/um/kernel/tt/ptproxy/wait.c | 86 + arch/um/kernel/tt/ptproxy/wait.h | 15 + arch/um/kernel/tt/syscall_kern.c | 47 + arch/um/kernel/tt/syscall_user.c | 90 + arch/um/kernel/tt/time.c | 28 + arch/um/kernel/tt/tlb.c | 149 + arch/um/kernel/tt/tracer.c | 480 + arch/um/kernel/tt/trap_user.c | 60 + arch/um/kernel/tt/uaccess.c | 73 + arch/um/kernel/tt/uaccess_user.c | 98 + arch/um/kernel/tt/unmap.c | 31 + arch/um/kernel/tty_log.c | 230 + arch/um/kernel/uaccess_user.c | 64 + arch/um/kernel/um_arch.c | 467 + arch/um/kernel/umid.c | 325 + arch/um/kernel/uml.lds.S | 106 + arch/um/kernel/user_util.c | 173 + arch/um/os-Linux/Makefile | 13 + arch/um/os-Linux/drivers/Makefile | 13 + arch/um/os-Linux/drivers/etap.h | 27 + arch/um/os-Linux/drivers/ethertap_kern.c | 119 + arch/um/os-Linux/drivers/ethertap_user.c | 240 + arch/um/os-Linux/drivers/tuntap.h | 32 + arch/um/os-Linux/drivers/tuntap_kern.c | 104 + arch/um/os-Linux/drivers/tuntap_user.c | 225 + arch/um/os-Linux/elf_aux.c | 66 + arch/um/os-Linux/file.c | 680 + arch/um/os-Linux/include/file.h | 22 + arch/um/os-Linux/process.c | 171 + arch/um/os-Linux/signal.c | 48 + arch/um/os-Linux/sys-i386/Makefile | 10 + arch/um/os-Linux/sys-i386/registers.c | 132 + arch/um/os-Linux/sys-x86_64/Makefile | 10 + arch/um/os-Linux/sys-x86_64/registers.c | 81 + arch/um/os-Linux/time.c | 21 + arch/um/os-Linux/tty.c | 61 + arch/um/os-Linux/user_syms.c | 95 + arch/um/os-Linux/util/Makefile | 4 + arch/um/os-Linux/util/mk_user_constants.c | 29 + arch/um/scripts/Makefile.rules | 13 + arch/um/sys-i386/Makefile | 29 + arch/um/sys-i386/bugs.c | 222 + arch/um/sys-i386/checksum.S | 460 + arch/um/sys-i386/delay.c | 14 + arch/um/sys-i386/fault.c | 42 + arch/um/sys-i386/ksyms.c | 17 + arch/um/sys-i386/ldt.c | 98 + arch/um/sys-i386/ptrace.c | 369 + arch/um/sys-i386/ptrace_user.c | 131 + arch/um/sys-i386/sigcontext.c | 71 + arch/um/sys-i386/signal.c | 382 + arch/um/sys-i386/syscalls.c | 210 + arch/um/sys-i386/sysrq.c | 35 + arch/um/sys-i386/util/Makefile | 8 + arch/um/sys-i386/util/mk_sc.c | 52 + arch/um/sys-i386/util/mk_thread_kern.c | 22 + arch/um/sys-i386/util/mk_thread_user.c | 30 + arch/um/sys-ia64/Makefile | 11 + arch/um/sys-ppc/Makefile | 69 + arch/um/sys-ppc/misc.S | 116 + arch/um/sys-ppc/miscthings.c | 53 + arch/um/sys-ppc/ptrace.c | 28 + arch/um/sys-ppc/ptrace_user.c | 39 + arch/um/sys-ppc/sigcontext.c | 15 + arch/um/sys-ppc/sysrq.c | 43 + arch/um/sys-x86_64/Makefile | 37 + arch/um/sys-x86_64/bugs.c | 122 + arch/um/sys-x86_64/delay.c | 26 + arch/um/sys-x86_64/fault.c | 23 + arch/um/sys-x86_64/mem.c | 25 + arch/um/sys-x86_64/ptrace.c | 138 + arch/um/sys-x86_64/ptrace_user.c | 51 + arch/um/sys-x86_64/sigcontext.c | 39 + arch/um/sys-x86_64/signal.c | 276 + arch/um/sys-x86_64/syscalls.c | 186 + arch/um/sys-x86_64/sysrq.c | 49 + arch/um/sys-x86_64/util/Makefile | 10 + arch/um/sys-x86_64/util/mk_sc.c | 58 + arch/um/sys-x86_64/util/mk_thread_kern.c | 21 + arch/um/sys-x86_64/util/mk_thread_user.c | 30 + arch/um/util/Makefile | 8 + arch/um/util/mk_constants_kern.c | 28 + arch/um/util/mk_constants_user.c | 28 + arch/um/util/mk_task_kern.c | 17 + arch/um/util/mk_task_user.c | 30 + arch/v850/Kconfig | 316 + arch/v850/Kconfig.debug | 10 + arch/v850/Makefile | 63 + arch/v850/README | 32 + arch/v850/kernel/Makefile | 40 + arch/v850/kernel/anna-rom.ld | 16 + arch/v850/kernel/anna.c | 208 + arch/v850/kernel/anna.ld | 20 + arch/v850/kernel/as85ep1-rom.ld | 21 + arch/v850/kernel/as85ep1.c | 240 + arch/v850/kernel/as85ep1.ld | 49 + arch/v850/kernel/asm-consts.c | 61 + arch/v850/kernel/bug.c | 142 + arch/v850/kernel/entry.S | 1121 + arch/v850/kernel/fpga85e2c.c | 171 + arch/v850/kernel/fpga85e2c.ld | 62 + arch/v850/kernel/gbus_int.c | 271 + arch/v850/kernel/head.S | 128 + arch/v850/kernel/highres_timer.c | 132 + arch/v850/kernel/init_task.c | 49 + arch/v850/kernel/intv.S | 87 + arch/v850/kernel/irq.c | 744 + arch/v850/kernel/ma.c | 70 + arch/v850/kernel/mach.c | 17 + arch/v850/kernel/mach.h | 56 + arch/v850/kernel/me2.c | 74 + arch/v850/kernel/memcons.c | 135 + arch/v850/kernel/module.c | 237 + arch/v850/kernel/process.c | 236 + arch/v850/kernel/procfs.c | 67 + arch/v850/kernel/ptrace.c | 282 + arch/v850/kernel/rte_cb.c | 200 + arch/v850/kernel/rte_cb_leds.c | 138 + arch/v850/kernel/rte_cb_multi.c | 121 + arch/v850/kernel/rte_ma1_cb-rom.ld | 14 + arch/v850/kernel/rte_ma1_cb.c | 106 + arch/v850/kernel/rte_ma1_cb.ld | 57 + arch/v850/kernel/rte_mb_a_pci.c | 796 + arch/v850/kernel/rte_me2_cb.c | 300 + arch/v850/kernel/rte_me2_cb.ld | 30 + arch/v850/kernel/rte_nb85e_cb-multi.ld | 57 + arch/v850/kernel/rte_nb85e_cb.c | 82 + arch/v850/kernel/rte_nb85e_cb.ld | 22 + arch/v850/kernel/semaphore.c | 166 + arch/v850/kernel/setup.c | 286 + arch/v850/kernel/signal.c | 525 + arch/v850/kernel/sim.c | 179 + arch/v850/kernel/sim.ld | 13 + arch/v850/kernel/sim85e2.c | 201 + arch/v850/kernel/sim85e2.ld | 36 + arch/v850/kernel/simcons.c | 166 + arch/v850/kernel/syscalls.c | 197 + arch/v850/kernel/teg.c | 63 + arch/v850/kernel/time.c | 198 + arch/v850/kernel/v850_ksyms.c | 78 + arch/v850/kernel/v850e2_cache.c | 127 + arch/v850/kernel/v850e_cache.c | 174 + arch/v850/kernel/v850e_intc.c | 104 + arch/v850/kernel/v850e_timer_d.c | 54 + arch/v850/kernel/v850e_utils.c | 62 + arch/v850/kernel/vmlinux.lds.S | 285 + arch/v850/lib/Makefile | 6 + arch/v850/lib/ashldi3.c | 62 + arch/v850/lib/ashrdi3.c | 63 + arch/v850/lib/checksum.c | 154 + arch/v850/lib/lshrdi3.c | 62 + arch/v850/lib/memcpy.c | 92 + arch/v850/lib/memset.c | 68 + arch/v850/lib/muldi3.c | 61 + arch/v850/lib/negdi2.c | 25 + arch/x86_64/Kconfig | 477 + arch/x86_64/Kconfig.debug | 57 + arch/x86_64/Makefile | 119 + arch/x86_64/boot/Makefile | 102 + arch/x86_64/boot/bootsect.S | 98 + arch/x86_64/boot/compressed/Makefile | 32 + arch/x86_64/boot/compressed/head.S | 142 + arch/x86_64/boot/compressed/misc.c | 354 + arch/x86_64/boot/compressed/miscsetup.h | 39 + arch/x86_64/boot/compressed/vmlinux.scr | 9 + arch/x86_64/boot/install.sh | 40 + arch/x86_64/boot/mtools.conf.in | 17 + arch/x86_64/boot/setup.S | 867 + arch/x86_64/boot/tools/build.c | 186 + arch/x86_64/boot/video.S | 2007 ++ arch/x86_64/defconfig | 1129 + arch/x86_64/ia32/Makefile | 32 + arch/x86_64/ia32/fpu32.c | 184 + arch/x86_64/ia32/ia32_aout.c | 529 + arch/x86_64/ia32/ia32_binfmt.c | 434 + arch/x86_64/ia32/ia32_ioctl.c | 201 + arch/x86_64/ia32/ia32_signal.c | 621 + arch/x86_64/ia32/ia32entry.S | 602 + arch/x86_64/ia32/ipc32.c | 57 + arch/x86_64/ia32/ptrace32.c | 379 + arch/x86_64/ia32/sys_ia32.c | 1050 + arch/x86_64/ia32/syscall32.c | 111 + arch/x86_64/ia32/tls32.c | 163 + arch/x86_64/ia32/vsyscall-sigreturn.S | 120 + arch/x86_64/ia32/vsyscall-syscall.S | 68 + arch/x86_64/ia32/vsyscall-sysenter.S | 94 + arch/x86_64/ia32/vsyscall.lds | 77 + arch/x86_64/kernel/Makefile | 45 + arch/x86_64/kernel/acpi/Makefile | 3 + arch/x86_64/kernel/acpi/sleep.c | 132 + arch/x86_64/kernel/acpi/wakeup.S | 527 + arch/x86_64/kernel/aperture.c | 286 + arch/x86_64/kernel/apic.c | 1088 + arch/x86_64/kernel/asm-offsets.c | 69 + arch/x86_64/kernel/cpufreq/Kconfig | 96 + arch/x86_64/kernel/cpufreq/Makefile | 17 + arch/x86_64/kernel/e820.c | 513 + arch/x86_64/kernel/early_printk.c | 220 + arch/x86_64/kernel/entry.S | 920 + arch/x86_64/kernel/genapic.c | 89 + arch/x86_64/kernel/genapic_cluster.c | 130 + arch/x86_64/kernel/genapic_flat.c | 127 + arch/x86_64/kernel/head.S | 396 + arch/x86_64/kernel/head64.c | 117 + arch/x86_64/kernel/i387.c | 155 + arch/x86_64/kernel/i8259.c | 579 + arch/x86_64/kernel/init_task.c | 49 + arch/x86_64/kernel/io_apic.c | 1982 ++ arch/x86_64/kernel/ioport.c | 117 + arch/x86_64/kernel/irq.c | 108 + arch/x86_64/kernel/kprobes.c | 631 + arch/x86_64/kernel/ldt.c | 253 + arch/x86_64/kernel/mce.c | 548 + arch/x86_64/kernel/mce_intel.c | 99 + arch/x86_64/kernel/module.c | 166 + arch/x86_64/kernel/mpparse.c | 949 + arch/x86_64/kernel/msr.c | 279 + arch/x86_64/kernel/nmi.c | 488 + arch/x86_64/kernel/pci-dma.c | 60 + arch/x86_64/kernel/pci-gart.c | 980 + arch/x86_64/kernel/pci-nommu.c | 94 + arch/x86_64/kernel/process.c | 770 + arch/x86_64/kernel/ptrace.c | 547 + arch/x86_64/kernel/reboot.c | 163 + arch/x86_64/kernel/semaphore.c | 180 + arch/x86_64/kernel/setup.c | 1189 + arch/x86_64/kernel/setup64.c | 292 + arch/x86_64/kernel/signal.c | 486 + arch/x86_64/kernel/smp.c | 415 + arch/x86_64/kernel/smpboot.c | 938 + arch/x86_64/kernel/suspend.c | 157 + arch/x86_64/kernel/suspend_asm.S | 104 + arch/x86_64/kernel/sys_x86_64.c | 173 + arch/x86_64/kernel/syscall.c | 26 + arch/x86_64/kernel/time.c | 1262 + arch/x86_64/kernel/trampoline.S | 64 + arch/x86_64/kernel/traps.c | 948 + arch/x86_64/kernel/vmlinux.lds.S | 164 + arch/x86_64/kernel/vsyscall.c | 225 + arch/x86_64/kernel/x8664_ksyms.c | 221 + arch/x86_64/lib/Makefile | 14 + arch/x86_64/lib/bitops.c | 141 + arch/x86_64/lib/bitstr.c | 28 + arch/x86_64/lib/clear_page.S | 50 + arch/x86_64/lib/copy_page.S | 101 + arch/x86_64/lib/copy_user.S | 294 + arch/x86_64/lib/csum-copy.S | 233 + arch/x86_64/lib/csum-partial.c | 150 + arch/x86_64/lib/csum-wrappers.c | 129 + arch/x86_64/lib/dec_and_lock.c | 40 + arch/x86_64/lib/delay.c | 48 + arch/x86_64/lib/getuser.S | 101 + arch/x86_64/lib/io.c | 23 + arch/x86_64/lib/memcpy.S | 121 + arch/x86_64/lib/memmove.c | 19 + arch/x86_64/lib/memset.S | 125 + arch/x86_64/lib/putuser.S | 89 + arch/x86_64/lib/thunk.S | 95 + arch/x86_64/lib/usercopy.c | 153 + arch/x86_64/mm/Makefile | 11 + arch/x86_64/mm/extable.c | 35 + arch/x86_64/mm/fault.c | 579 + arch/x86_64/mm/init.c | 630 + arch/x86_64/mm/ioremap.c | 283 + arch/x86_64/mm/k8topology.c | 168 + arch/x86_64/mm/numa.c | 294 + arch/x86_64/mm/pageattr.c | 235 + arch/x86_64/mm/srat.c | 217 + arch/x86_64/oprofile/Kconfig | 23 + arch/x86_64/oprofile/Makefile | 19 + arch/x86_64/pci/Makefile | 24 + arch/x86_64/pci/Makefile-BUS | 22 + arch/x86_64/pci/k8-bus.c | 78 + arch/x86_64/pci/mmconfig.c | 104 + crypto/Kconfig | 292 + crypto/Makefile | 34 + crypto/aes.c | 451 + crypto/anubis.c | 719 + crypto/api.c | 233 + crypto/arc4.c | 103 + crypto/blowfish.c | 478 + crypto/cast5.c | 848 + crypto/cast6.c | 560 + crypto/cipher.c | 341 + crypto/compress.c | 63 + crypto/crc32c.c | 110 + crypto/crypto_null.c | 137 + crypto/deflate.c | 223 + crypto/des.c | 1299 + crypto/digest.c | 107 + crypto/hmac.c | 134 + crypto/internal.h | 92 + crypto/khazad.c | 915 + crypto/md4.c | 250 + crypto/md5.c | 244 + crypto/michael_mic.c | 181 + crypto/proc.c | 112 + crypto/scatterwalk.c | 115 + crypto/scatterwalk.h | 63 + crypto/serpent.c | 593 + crypto/sha1.c | 139 + crypto/sha256.c | 349 + crypto/sha512.c | 362 + crypto/tcrypt.c | 910 + crypto/tcrypt.h | 2746 ++ crypto/tea.c | 248 + crypto/tgr192.c | 735 + crypto/twofish.c | 902 + crypto/wp512.c | 1208 + drivers/Kconfig | 61 + drivers/Makefile | 66 + drivers/acorn/README | 1 + drivers/acorn/block/Kconfig | 36 + drivers/acorn/block/Makefile | 9 + drivers/acorn/block/fd1772.c | 1609 + drivers/acorn/block/fd1772dma.S | 100 + drivers/acorn/block/mfm.S | 162 + drivers/acorn/block/mfmhd.c | 1416 + drivers/acorn/char/Makefile | 6 + drivers/acorn/char/defkeymap-l7200.c | 386 + drivers/acorn/char/i2c.c | 369 + drivers/acorn/char/pcf8583.c | 239 + drivers/acorn/char/pcf8583.h | 41 + drivers/acpi/Kconfig | 356 + drivers/acpi/Makefile | 58 + drivers/acpi/ac.c | 354 + drivers/acpi/acpi_memhotplug.c | 542 + drivers/acpi/asus_acpi.c | 1236 + drivers/acpi/battery.c | 846 + drivers/acpi/blacklist.c | 169 + drivers/acpi/bus.c | 775 + drivers/acpi/button.c | 558 + drivers/acpi/container.c | 303 + drivers/acpi/debug.c | 233 + drivers/acpi/dispatcher/Makefile | 9 + drivers/acpi/dispatcher/dsfield.c | 601 + drivers/acpi/dispatcher/dsinit.c | 235 + drivers/acpi/dispatcher/dsmethod.c | 597 + drivers/acpi/dispatcher/dsmthdat.c | 715 + drivers/acpi/dispatcher/dsobject.c | 618 + drivers/acpi/dispatcher/dsopcode.c | 1151 + drivers/acpi/dispatcher/dsutils.c | 744 + drivers/acpi/dispatcher/dswexec.c | 751 + drivers/acpi/dispatcher/dswload.c | 976 + drivers/acpi/dispatcher/dswscope.c | 229 + drivers/acpi/dispatcher/dswstate.c | 1100 + drivers/acpi/ec.c | 1024 + drivers/acpi/event.c | 140 + drivers/acpi/events/Makefile | 9 + drivers/acpi/events/evevent.c | 297 + drivers/acpi/events/evgpe.c | 756 + drivers/acpi/events/evgpeblk.c | 1141 + drivers/acpi/events/evmisc.c | 588 + drivers/acpi/events/evregion.c | 1067 + drivers/acpi/events/evrgnini.c | 580 + drivers/acpi/events/evsci.c | 199 + drivers/acpi/events/evxface.c | 834 + drivers/acpi/events/evxfevnt.c | 778 + drivers/acpi/events/evxfregn.c | 247 + drivers/acpi/executer/Makefile | 10 + drivers/acpi/executer/exconfig.c | 487 + drivers/acpi/executer/exconvrt.c | 708 + drivers/acpi/executer/excreate.c | 646 + drivers/acpi/executer/exdump.c | 793 + drivers/acpi/executer/exfield.c | 367 + drivers/acpi/executer/exfldio.c | 835 + drivers/acpi/executer/exmisc.c | 738 + drivers/acpi/executer/exmutex.c | 363 + drivers/acpi/executer/exnames.c | 427 + drivers/acpi/executer/exoparg1.c | 1013 + drivers/acpi/executer/exoparg2.c | 608 + drivers/acpi/executer/exoparg3.c | 256 + drivers/acpi/executer/exoparg6.c | 336 + drivers/acpi/executer/exprep.c | 530 + drivers/acpi/executer/exregion.c | 528 + drivers/acpi/executer/exresnte.c | 289 + drivers/acpi/executer/exresolv.c | 546 + drivers/acpi/executer/exresop.c | 661 + drivers/acpi/executer/exstore.c | 536 + drivers/acpi/executer/exstoren.c | 306 + drivers/acpi/executer/exstorob.c | 216 + drivers/acpi/executer/exsystem.c | 378 + drivers/acpi/executer/exutils.c | 378 + drivers/acpi/fan.c | 302 + drivers/acpi/hardware/Makefile | 9 + drivers/acpi/hardware/hwacpi.c | 230 + drivers/acpi/hardware/hwgpe.c | 444 + drivers/acpi/hardware/hwregs.c | 850 + drivers/acpi/hardware/hwsleep.c | 582 + drivers/acpi/hardware/hwtimer.c | 203 + drivers/acpi/ibm_acpi.c | 1242 + drivers/acpi/motherboard.c | 177 + drivers/acpi/namespace/Makefile | 12 + drivers/acpi/namespace/nsaccess.c | 637 + drivers/acpi/namespace/nsalloc.c | 685 + drivers/acpi/namespace/nsdump.c | 673 + drivers/acpi/namespace/nsdumpdv.c | 146 + drivers/acpi/namespace/nseval.c | 487 + drivers/acpi/namespace/nsinit.c | 441 + drivers/acpi/namespace/nsload.c | 460 + drivers/acpi/namespace/nsnames.c | 265 + drivers/acpi/namespace/nsobject.c | 461 + drivers/acpi/namespace/nsparse.c | 171 + drivers/acpi/namespace/nssearch.c | 381 + drivers/acpi/namespace/nsutils.c | 1069 + drivers/acpi/namespace/nswalk.c | 289 + drivers/acpi/namespace/nsxfeval.c | 764 + drivers/acpi/namespace/nsxfname.c | 369 + drivers/acpi/namespace/nsxfobj.c | 262 + drivers/acpi/numa.c | 213 + drivers/acpi/osl.c | 1162 + drivers/acpi/parser/Makefile | 8 + drivers/acpi/parser/psargs.c | 746 + drivers/acpi/parser/psopcode.c | 778 + drivers/acpi/parser/psparse.c | 1266 + drivers/acpi/parser/psscope.c | 290 + drivers/acpi/parser/pstree.c | 327 + drivers/acpi/parser/psutils.c | 309 + drivers/acpi/parser/pswalk.c | 115 + drivers/acpi/parser/psxface.c | 243 + drivers/acpi/pci_bind.c | 384 + drivers/acpi/pci_irq.c | 518 + drivers/acpi/pci_link.c | 904 + drivers/acpi/pci_root.c | 347 + drivers/acpi/power.c | 692 + drivers/acpi/processor_core.c | 989 + drivers/acpi/processor_idle.c | 1017 + drivers/acpi/processor_perflib.c | 666 + drivers/acpi/processor_thermal.c | 406 + drivers/acpi/processor_throttling.c | 351 + drivers/acpi/resources/Makefile | 10 + drivers/acpi/resources/rsaddr.c | 1225 + drivers/acpi/resources/rscalc.c | 841 + drivers/acpi/resources/rscreate.c | 428 + drivers/acpi/resources/rsdump.c | 1150 + drivers/acpi/resources/rsio.c | 545 + drivers/acpi/resources/rsirq.c | 592 + drivers/acpi/resources/rslist.c | 518 + drivers/acpi/resources/rsmemory.c | 566 + drivers/acpi/resources/rsmisc.c | 597 + drivers/acpi/resources/rsutils.c | 356 + drivers/acpi/resources/rsxface.c | 437 + drivers/acpi/scan.c | 1379 + drivers/acpi/sleep/Makefile | 5 + drivers/acpi/sleep/main.c | 234 + drivers/acpi/sleep/poweroff.c | 39 + drivers/acpi/sleep/proc.c | 509 + drivers/acpi/sleep/sleep.h | 8 + drivers/acpi/sleep/wakeup.c | 209 + drivers/acpi/system.c | 187 + drivers/acpi/tables.c | 609 + drivers/acpi/tables/Makefile | 8 + drivers/acpi/tables/tbconvrt.c | 564 + drivers/acpi/tables/tbget.c | 493 + drivers/acpi/tables/tbgetall.c | 313 + drivers/acpi/tables/tbinstal.c | 553 + drivers/acpi/tables/tbrsdt.c | 324 + drivers/acpi/tables/tbutils.c | 240 + drivers/acpi/tables/tbxface.c | 448 + drivers/acpi/tables/tbxfroot.c | 606 + drivers/acpi/thermal.c | 1445 + drivers/acpi/toshiba_acpi.c | 575 + drivers/acpi/utilities/Makefile | 8 + drivers/acpi/utilities/utalloc.c | 988 + drivers/acpi/utilities/utcopy.c | 930 + drivers/acpi/utilities/utdebug.c | 624 + drivers/acpi/utilities/utdelete.c | 700 + drivers/acpi/utilities/uteval.c | 696 + drivers/acpi/utilities/utglobal.c | 935 + drivers/acpi/utilities/utinit.c | 266 + drivers/acpi/utilities/utmath.c | 333 + drivers/acpi/utilities/utmisc.c | 1516 + drivers/acpi/utilities/utobject.c | 671 + drivers/acpi/utilities/utxface.c | 525 + drivers/acpi/utils.c | 423 + drivers/acpi/video.c | 1989 ++ drivers/atm/Kconfig | 448 + drivers/atm/Makefile | 71 + drivers/atm/ambassador.c | 2463 ++ drivers/atm/ambassador.h | 679 + drivers/atm/atmdev_init.c | 54 + drivers/atm/atmsar11.data | 2063 ++ drivers/atm/atmsar11.regions | 6 + drivers/atm/atmsar11.start | 4 + drivers/atm/atmtcp.c | 505 + drivers/atm/eni.c | 2299 ++ drivers/atm/eni.h | 130 + drivers/atm/firestream.c | 2053 ++ drivers/atm/firestream.h | 518 + drivers/atm/fore200e.c | 3249 ++ drivers/atm/fore200e.h | 985 + drivers/atm/fore200e_firmware_copyright | 31 + drivers/atm/fore200e_mkfirm.c | 156 + drivers/atm/he.c | 3091 ++ drivers/atm/he.h | 895 + drivers/atm/horizon.c | 2953 ++ drivers/atm/horizon.h | 508 + drivers/atm/idt77105.c | 380 + drivers/atm/idt77105.h | 91 + drivers/atm/idt77252.c | 3882 +++ drivers/atm/idt77252.h | 819 + drivers/atm/idt77252_tables.h | 780 + drivers/atm/iphase.c | 3296 ++ drivers/atm/iphase.h | 1464 + drivers/atm/lanai.c | 2770 ++ drivers/atm/midway.h | 265 + drivers/atm/nicstar.c | 3105 ++ drivers/atm/nicstar.h | 820 + drivers/atm/nicstarmac.c | 274 + drivers/atm/nicstarmac.copyright | 61 + drivers/atm/pca200e.data | 850 + drivers/atm/pca200e_ecd.data | 906 + drivers/atm/sba200e_ecd.data | 928 + drivers/atm/suni.c | 311 + drivers/atm/suni.h | 211 + drivers/atm/tonga.h | 20 + drivers/atm/uPD98401.h | 292 + drivers/atm/uPD98402.c | 265 + drivers/atm/uPD98402.h | 106 + drivers/atm/zatm.c | 1646 + drivers/atm/zatm.h | 103 + drivers/atm/zeprom.h | 34 + drivers/base/Kconfig | 40 + drivers/base/Makefile | 14 + drivers/base/attribute_container.c | 376 + drivers/base/base.h | 18 + drivers/base/bus.c | 770 + drivers/base/class.c | 591 + drivers/base/class_simple.c | 199 + drivers/base/core.c | 439 + drivers/base/cpu.c | 104 + drivers/base/dmapool.c | 414 + drivers/base/driver.c | 138 + drivers/base/firmware.c | 34 + drivers/base/firmware_class.c | 583 + drivers/base/init.c | 43 + drivers/base/interface.c | 51 + drivers/base/map.c | 155 + drivers/base/node.c | 161 + drivers/base/platform.c | 350 + drivers/base/power/Makefile | 6 + drivers/base/power/main.c | 99 + drivers/base/power/power.h | 106 + drivers/base/power/resume.c | 112 + drivers/base/power/runtime.c | 81 + drivers/base/power/shutdown.c | 67 + drivers/base/power/suspend.c | 144 + drivers/base/power/sysfs.c | 68 + drivers/base/sys.c | 397 + drivers/base/transport_class.c | 275 + drivers/block/DAC960.c | 7099 +++++ drivers/block/DAC960.h | 4114 +++ drivers/block/Kconfig | 509 + drivers/block/Kconfig.iosched | 41 + drivers/block/Makefile | 47 + drivers/block/acsi.c | 1829 ++ drivers/block/acsi_slm.c | 1045 + drivers/block/amiflop.c | 1850 ++ drivers/block/aoe/Makefile | 6 + drivers/block/aoe/aoe.h | 165 + drivers/block/aoe/aoeblk.c | 267 + drivers/block/aoe/aoechr.c | 244 + drivers/block/aoe/aoecmd.c | 629 + drivers/block/aoe/aoedev.c | 180 + drivers/block/aoe/aoemain.c | 112 + drivers/block/aoe/aoenet.c | 172 + drivers/block/as-iosched.c | 2136 ++ drivers/block/ataflop.c | 2006 ++ drivers/block/cciss.c | 2976 ++ drivers/block/cciss.h | 266 + drivers/block/cciss_cmd.h | 271 + drivers/block/cciss_scsi.c | 1417 + drivers/block/cciss_scsi.h | 79 + drivers/block/cfq-iosched.c | 1856 ++ drivers/block/cpqarray.c | 1850 ++ drivers/block/cpqarray.h | 126 + drivers/block/cryptoloop.c | 268 + drivers/block/deadline-iosched.c | 967 + drivers/block/elevator.c | 705 + drivers/block/floppy.c | 4638 +++ drivers/block/genhd.c | 685 + drivers/block/ida_cmd.h | 349 + drivers/block/ida_ioctl.h | 87 + drivers/block/ioctl.c | 239 + drivers/block/ll_rw_blk.c | 3642 +++ drivers/block/loop.c | 1348 + drivers/block/nbd.c | 731 + drivers/block/noop-iosched.c | 104 + drivers/block/paride/Kconfig | 305 + drivers/block/paride/Makefile | 28 + drivers/block/paride/Transition-notes | 128 + drivers/block/paride/aten.c | 162 + drivers/block/paride/bpck.c | 477 + drivers/block/paride/bpck6.c | 282 + drivers/block/paride/comm.c | 218 + drivers/block/paride/dstr.c | 233 + drivers/block/paride/epat.c | 340 + drivers/block/paride/epia.c | 316 + drivers/block/paride/fit2.c | 151 + drivers/block/paride/fit3.c | 211 + drivers/block/paride/friq.c | 276 + drivers/block/paride/frpw.c | 313 + drivers/block/paride/jumbo | 70 + drivers/block/paride/kbic.c | 297 + drivers/block/paride/ktti.c | 128 + drivers/block/paride/mkd | 30 + drivers/block/paride/on20.c | 153 + drivers/block/paride/on26.c | 319 + drivers/block/paride/paride.c | 467 + drivers/block/paride/paride.h | 170 + drivers/block/paride/pcd.c | 971 + drivers/block/paride/pd.c | 950 + drivers/block/paride/pf.c | 982 + drivers/block/paride/pg.c | 723 + drivers/block/paride/ppc6lnx.c | 726 + drivers/block/paride/pseudo.h | 102 + drivers/block/paride/pt.c | 1024 + drivers/block/pktcdvd.c | 2681 ++ drivers/block/ps2esdi.c | 1092 + drivers/block/rd.c | 515 + drivers/block/scsi_ioctl.c | 580 + drivers/block/smart1,2.h | 278 + drivers/block/swim3.c | 1154 + drivers/block/swim_iop.c | 579 + drivers/block/sx8.c | 1764 ++ drivers/block/ub.c | 2215 ++ drivers/block/umem.c | 1256 + drivers/block/viodasd.c | 846 + drivers/block/xd.c | 1112 + drivers/block/xd.h | 135 + drivers/block/z2ram.c | 429 + drivers/bluetooth/Kconfig | 168 + drivers/bluetooth/Makefile | 19 + drivers/bluetooth/bcm203x.c | 314 + drivers/bluetooth/bfusb.c | 806 + drivers/bluetooth/bluecard_cs.c | 1114 + drivers/bluetooth/bpa10x.c | 657 + drivers/bluetooth/bt3c_cs.c | 960 + drivers/bluetooth/btuart_cs.c | 880 + drivers/bluetooth/dtl1_cs.c | 832 + drivers/bluetooth/hci_bcsp.c | 749 + drivers/bluetooth/hci_bcsp.h | 70 + drivers/bluetooth/hci_h4.c | 282 + drivers/bluetooth/hci_h4.h | 44 + drivers/bluetooth/hci_ldisc.c | 593 + drivers/bluetooth/hci_uart.h | 82 + drivers/bluetooth/hci_usb.c | 1075 + drivers/bluetooth/hci_usb.h | 128 + drivers/bluetooth/hci_vhci.c | 364 + drivers/bluetooth/hci_vhci.h | 50 + drivers/cdrom/Kconfig | 213 + drivers/cdrom/Makefile | 23 + drivers/cdrom/aztcd.c | 2494 ++ drivers/cdrom/aztcd.h | 162 + drivers/cdrom/cdrom.c | 3397 +++ drivers/cdrom/cdu31a.c | 3248 ++ drivers/cdrom/cdu31a.h | 411 + drivers/cdrom/cm206.c | 1626 + drivers/cdrom/cm206.h | 171 + drivers/cdrom/gscd.c | 1031 + drivers/cdrom/gscd.h | 108 + drivers/cdrom/isp16.c | 374 + drivers/cdrom/isp16.h | 72 + drivers/cdrom/mcdx.c | 1952 ++ drivers/cdrom/mcdx.h | 185 + drivers/cdrom/optcd.c | 2106 ++ drivers/cdrom/optcd.h | 52 + drivers/cdrom/sbpcd.c | 5978 ++++ drivers/cdrom/sbpcd.h | 839 + drivers/cdrom/sjcd.c | 1817 ++ drivers/cdrom/sjcd.h | 181 + drivers/cdrom/sonycd535.c | 1692 ++ drivers/cdrom/sonycd535.h | 183 + drivers/cdrom/viocd.c | 809 + drivers/char/ChangeLog | 775 + drivers/char/Kconfig | 988 + drivers/char/Makefile | 118 + drivers/char/agp/Kconfig | 171 + drivers/char/agp/Makefile | 18 + drivers/char/agp/agp.h | 331 + drivers/char/agp/ali-agp.c | 414 + drivers/char/agp/alpha-agp.c | 216 + drivers/char/agp/amd-k7-agp.c | 542 + drivers/char/agp/amd64-agp.c | 761 + drivers/char/agp/ati-agp.c | 548 + drivers/char/agp/backend.c | 348 + drivers/char/agp/efficeon-agp.c | 463 + drivers/char/agp/frontend.c | 1103 + drivers/char/agp/generic.c | 1222 + drivers/char/agp/hp-agp.c | 552 + drivers/char/agp/i460-agp.c | 642 + drivers/char/agp/intel-agp.c | 1833 ++ drivers/char/agp/isoch.c | 470 + drivers/char/agp/nvidia-agp.c | 424 + drivers/char/agp/sgi-agp.c | 331 + drivers/char/agp/sis-agp.c | 360 + drivers/char/agp/sworks-agp.c | 556 + drivers/char/agp/uninorth-agp.c | 647 + drivers/char/agp/via-agp.c | 548 + drivers/char/amiserial.c | 2179 ++ drivers/char/applicom.c | 862 + drivers/char/applicom.h | 85 + drivers/char/cd1865.h | 263 + drivers/char/consolemap.c | 672 + drivers/char/cp437.uni | 291 + drivers/char/cyclades.c | 5540 ++++ drivers/char/decserial.c | 100 + drivers/char/defkeymap.c_shipped | 262 + drivers/char/defkeymap.map | 357 + drivers/char/digi.h | 71 + drivers/char/digi1.h | 100 + drivers/char/digiFep1.h | 136 + drivers/char/digiPCI.h | 42 + drivers/char/drm/Kconfig | 98 + drivers/char/drm/Makefile | 33 + drivers/char/drm/README.drm | 46 + drivers/char/drm/ati_pcigart.c | 208 + drivers/char/drm/drm.h | 675 + drivers/char/drm/drmP.h | 1073 + drivers/char/drm/drm_agpsupport.c | 448 + drivers/char/drm/drm_auth.c | 230 + drivers/char/drm/drm_bufs.c | 1270 + drivers/char/drm/drm_context.c | 578 + drivers/char/drm/drm_core.h | 34 + drivers/char/drm/drm_dma.c | 180 + drivers/char/drm/drm_drawable.c | 56 + drivers/char/drm/drm_drv.c | 531 + drivers/char/drm/drm_fops.c | 451 + drivers/char/drm/drm_init.c | 52 + drivers/char/drm/drm_ioctl.c | 370 + drivers/char/drm/drm_irq.c | 370 + drivers/char/drm/drm_lock.c | 303 + drivers/char/drm/drm_memory.c | 181 + drivers/char/drm/drm_memory.h | 197 + drivers/char/drm/drm_memory_debug.h | 459 + drivers/char/drm/drm_os_linux.h | 149 + drivers/char/drm/drm_pci.c | 140 + drivers/char/drm/drm_pciids.h | 224 + drivers/char/drm/drm_proc.c | 539 + drivers/char/drm/drm_sarea.h | 78 + drivers/char/drm/drm_scatter.c | 231 + drivers/char/drm/drm_stub.c | 319 + drivers/char/drm/drm_sysfs.c | 208 + drivers/char/drm/drm_vm.c | 678 + drivers/char/drm/ffb_context.c | 551 + drivers/char/drm/ffb_drv.c | 365 + drivers/char/drm/ffb_drv.h | 286 + drivers/char/drm/gamma_context.h | 492 + drivers/char/drm/gamma_dma.c | 946 + drivers/char/drm/gamma_drm.h | 90 + drivers/char/drm/gamma_drv.c | 59 + drivers/char/drm/gamma_drv.h | 147 + drivers/char/drm/gamma_lists.h | 215 + drivers/char/drm/gamma_lock.h | 140 + drivers/char/drm/gamma_old_dma.h | 313 + drivers/char/drm/i810_dma.c | 1385 + drivers/char/drm/i810_drm.h | 289 + drivers/char/drm/i810_drv.c | 126 + drivers/char/drm/i810_drv.h | 236 + drivers/char/drm/i830_dma.c | 1588 + drivers/char/drm/i830_drm.h | 350 + drivers/char/drm/i830_drv.c | 137 + drivers/char/drm/i830_drv.h | 301 + drivers/char/drm/i830_irq.c | 204 + drivers/char/drm/i915_dma.c | 725 + drivers/char/drm/i915_drm.h | 167 + drivers/char/drm/i915_drv.c | 104 + drivers/char/drm/i915_drv.h | 243 + drivers/char/drm/i915_irq.c | 161 + drivers/char/drm/i915_mem.c | 346 + drivers/char/drm/mga_dma.c | 754 + drivers/char/drm/mga_drm.h | 349 + drivers/char/drm/mga_drv.c | 127 + drivers/char/drm/mga_drv.h | 638 + drivers/char/drm/mga_irq.c | 102 + drivers/char/drm/mga_state.c | 1123 + drivers/char/drm/mga_ucode.h | 11645 ++++++++ drivers/char/drm/mga_warp.c | 210 + drivers/char/drm/r128_cce.c | 943 + drivers/char/drm/r128_drm.h | 345 + drivers/char/drm/r128_drv.c | 122 + drivers/char/drm/r128_drv.h | 521 + drivers/char/drm/r128_irq.c | 102 + drivers/char/drm/r128_state.c | 1732 ++ drivers/char/drm/radeon_cp.c | 2061 ++ drivers/char/drm/radeon_drm.h | 659 + drivers/char/drm/radeon_drv.c | 127 + drivers/char/drm/radeon_drv.h | 1044 + drivers/char/drm/radeon_irq.c | 251 + drivers/char/drm/radeon_mem.c | 322 + drivers/char/drm/radeon_state.c | 3102 ++ drivers/char/drm/sis_drm.h | 42 + drivers/char/drm/sis_drv.c | 110 + drivers/char/drm/sis_drv.h | 52 + drivers/char/drm/sis_ds.c | 301 + drivers/char/drm/sis_ds.h | 145 + drivers/char/drm/sis_mm.c | 417 + drivers/char/drm/tdfx_drv.c | 107 + drivers/char/drm/tdfx_drv.h | 50 + drivers/char/ds1286.c | 578 + drivers/char/ds1302.c | 354 + drivers/char/ds1620.c | 416 + drivers/char/dsp56k.c | 547 + drivers/char/dtlk.c | 659 + drivers/char/ec3104_keyb.c | 459 + drivers/char/efirtc.c | 417 + drivers/char/epca.c | 3789 +++ drivers/char/epca.h | 165 + drivers/char/epcaconfig.h | 7 + drivers/char/esp.c | 2630 ++ drivers/char/ftape/Kconfig | 340 + drivers/char/ftape/Makefile | 28 + drivers/char/ftape/README.PCI | 81 + drivers/char/ftape/RELEASE-NOTES | 966 + drivers/char/ftape/compressor/Makefile | 31 + drivers/char/ftape/compressor/lzrw3.c | 743 + drivers/char/ftape/compressor/lzrw3.h | 253 + .../char/ftape/compressor/zftape-compress.c | 1203 + .../char/ftape/compressor/zftape-compress.h | 83 + drivers/char/ftape/lowlevel/Makefile | 43 + drivers/char/ftape/lowlevel/fc-10.c | 175 + drivers/char/ftape/lowlevel/fc-10.h | 39 + drivers/char/ftape/lowlevel/fdc-io.c | 1352 + drivers/char/ftape/lowlevel/fdc-io.h | 252 + drivers/char/ftape/lowlevel/fdc-isr.c | 1170 + drivers/char/ftape/lowlevel/fdc-isr.h | 55 + drivers/char/ftape/lowlevel/ftape-bsm.c | 491 + drivers/char/ftape/lowlevel/ftape-bsm.h | 66 + drivers/char/ftape/lowlevel/ftape-buffer.c | 129 + drivers/char/ftape/lowlevel/ftape-buffer.h | 32 + drivers/char/ftape/lowlevel/ftape-calibr.c | 276 + drivers/char/ftape/lowlevel/ftape-calibr.h | 37 + drivers/char/ftape/lowlevel/ftape-ctl.c | 897 + drivers/char/ftape/lowlevel/ftape-ctl.h | 162 + drivers/char/ftape/lowlevel/ftape-ecc.c | 853 + drivers/char/ftape/lowlevel/ftape-ecc.h | 84 + drivers/char/ftape/lowlevel/ftape-format.c | 344 + drivers/char/ftape/lowlevel/ftape-format.h | 37 + drivers/char/ftape/lowlevel/ftape-init.c | 161 + drivers/char/ftape/lowlevel/ftape-init.h | 43 + drivers/char/ftape/lowlevel/ftape-io.c | 992 + drivers/char/ftape/lowlevel/ftape-io.h | 90 + drivers/char/ftape/lowlevel/ftape-proc.c | 215 + drivers/char/ftape/lowlevel/ftape-proc.h | 35 + drivers/char/ftape/lowlevel/ftape-read.c | 621 + drivers/char/ftape/lowlevel/ftape-read.h | 51 + drivers/char/ftape/lowlevel/ftape-rw.c | 1092 + drivers/char/ftape/lowlevel/ftape-rw.h | 111 + drivers/char/ftape/lowlevel/ftape-setup.c | 105 + drivers/char/ftape/lowlevel/ftape-tracing.c | 118 + drivers/char/ftape/lowlevel/ftape-tracing.h | 180 + drivers/char/ftape/lowlevel/ftape-write.c | 336 + drivers/char/ftape/lowlevel/ftape-write.h | 53 + drivers/char/ftape/lowlevel/ftape_syms.c | 88 + drivers/char/ftape/zftape/Makefile | 36 + drivers/char/ftape/zftape/zftape-buffers.c | 149 + drivers/char/ftape/zftape/zftape-buffers.h | 55 + drivers/char/ftape/zftape/zftape-ctl.c | 1418 + drivers/char/ftape/zftape/zftape-ctl.h | 59 + drivers/char/ftape/zftape/zftape-eof.c | 199 + drivers/char/ftape/zftape/zftape-eof.h | 52 + drivers/char/ftape/zftape/zftape-init.c | 403 + drivers/char/ftape/zftape/zftape-init.h | 77 + drivers/char/ftape/zftape/zftape-read.c | 377 + drivers/char/ftape/zftape/zftape-read.h | 53 + drivers/char/ftape/zftape/zftape-rw.c | 376 + drivers/char/ftape/zftape/zftape-rw.h | 102 + drivers/char/ftape/zftape/zftape-vtbl.c | 757 + drivers/char/ftape/zftape/zftape-vtbl.h | 227 + drivers/char/ftape/zftape/zftape-write.c | 483 + drivers/char/ftape/zftape/zftape-write.h | 38 + drivers/char/ftape/zftape/zftape_syms.c | 43 + drivers/char/generic_nvram.c | 145 + drivers/char/generic_serial.c | 1001 + drivers/char/genrtc.c | 535 + drivers/char/hangcheck-timer.c | 129 + drivers/char/hpet.c | 994 + drivers/char/hvc_console.c | 831 + drivers/char/hvcs.c | 1649 + drivers/char/hvsi.c | 1320 + drivers/char/hw_random.c | 630 + drivers/char/i8k.c | 788 + drivers/char/ip2.c | 110 + drivers/char/ip2/fip_firm.h | 2149 ++ drivers/char/ip2/i2cmd.c | 209 + drivers/char/ip2/i2cmd.h | 643 + drivers/char/ip2/i2ellis.c | 1487 + drivers/char/ip2/i2ellis.h | 615 + drivers/char/ip2/i2hw.h | 648 + drivers/char/ip2/i2lib.c | 2219 ++ drivers/char/ip2/i2lib.h | 351 + drivers/char/ip2/i2os.h | 127 + drivers/char/ip2/i2pack.h | 364 + drivers/char/ip2/ip2.h | 107 + drivers/char/ip2/ip2ioctl.h | 35 + drivers/char/ip2/ip2trace.h | 42 + drivers/char/ip2/ip2types.h | 57 + drivers/char/ip27-rtc.c | 327 + drivers/char/ip2main.c | 3265 ++ drivers/char/ipmi/Kconfig | 67 + drivers/char/ipmi/Makefile | 15 + drivers/char/ipmi/ipmi_bt_sm.c | 513 + drivers/char/ipmi/ipmi_devintf.c | 582 + drivers/char/ipmi/ipmi_kcs_sm.c | 500 + drivers/char/ipmi/ipmi_msghandler.c | 3174 ++ drivers/char/ipmi/ipmi_poweroff.c | 549 + drivers/char/ipmi/ipmi_si_intf.c | 2359 ++ drivers/char/ipmi/ipmi_si_sm.h | 120 + drivers/char/ipmi/ipmi_smic_sm.c | 599 + drivers/char/ipmi/ipmi_watchdog.c | 1068 + drivers/char/isicom.c | 2079 ++ drivers/char/istallion.c | 5276 ++++ drivers/char/ite_gpio.c | 419 + drivers/char/keyboard.c | 1254 + drivers/char/lcd.c | 683 + drivers/char/lcd.h | 186 + drivers/char/lp.c | 995 + drivers/char/mem.c | 880 + drivers/char/misc.c | 331 + drivers/char/mmtimer.c | 725 + drivers/char/moxa.c | 3243 ++ drivers/char/mwave/3780i.c | 727 + drivers/char/mwave/3780i.h | 362 + drivers/char/mwave/Makefile | 15 + drivers/char/mwave/README | 50 + drivers/char/mwave/mwavedd.c | 674 + drivers/char/mwave/mwavedd.h | 150 + drivers/char/mwave/mwavepub.h | 89 + drivers/char/mwave/smapi.c | 570 + drivers/char/mwave/smapi.h | 80 + drivers/char/mwave/tp3780i.c | 592 + drivers/char/mwave/tp3780i.h | 103 + drivers/char/mxser.c | 3170 ++ drivers/char/mxser.h | 450 + drivers/char/n_hdlc.c | 978 + drivers/char/n_r3964.c | 1416 + drivers/char/n_tty.c | 1562 + drivers/char/nvram.c | 926 + drivers/char/nwbutton.c | 248 + drivers/char/nwbutton.h | 40 + drivers/char/nwflash.c | 702 + drivers/char/pcmcia/Kconfig | 22 + drivers/char/pcmcia/Makefile | 7 + drivers/char/pcmcia/synclink_cs.c | 4611 +++ drivers/char/ppdev.c | 824 + drivers/char/pty.c | 412 + drivers/char/qtronix.c | 601 + drivers/char/qtronixmap.c_shipped | 265 + drivers/char/qtronixmap.map | 287 + drivers/char/random.c | 1629 + drivers/char/raw.c | 342 + drivers/char/rio/Makefile | 12 + drivers/char/rio/board.h | 143 + drivers/char/rio/bootpkt.h | 62 + drivers/char/rio/brates.h | 107 + drivers/char/rio/chan.h | 33 + drivers/char/rio/cirrus.h | 463 + drivers/char/rio/cmd.h | 84 + drivers/char/rio/cmdblk.h | 60 + drivers/char/rio/cmdpkt.h | 206 + drivers/char/rio/control.h | 62 + drivers/char/rio/daemon.h | 334 + drivers/char/rio/data.h | 40 + drivers/char/rio/debug.h | 39 + drivers/char/rio/defaults.h | 59 + drivers/char/rio/eisa.h | 104 + drivers/char/rio/enable.h | 50 + drivers/char/rio/error.h | 85 + drivers/char/rio/errors.h | 104 + drivers/char/rio/formpkt.h | 154 + drivers/char/rio/func.h | 154 + drivers/char/rio/host.h | 134 + drivers/char/rio/hosthw.h | 57 + drivers/char/rio/link.h | 188 + drivers/char/rio/linux_compat.h | 122 + drivers/char/rio/list.h | 196 + drivers/char/rio/lrt.h | 55 + drivers/char/rio/ltt.h | 55 + drivers/char/rio/lttwake.h | 53 + drivers/char/rio/map.h | 103 + drivers/char/rio/mca.h | 73 + drivers/char/rio/mesg.h | 41 + drivers/char/rio/param.h | 61 + drivers/char/rio/parmmap.h | 96 + drivers/char/rio/pci.h | 76 + drivers/char/rio/phb.h | 293 + drivers/char/rio/pkt.h | 120 + drivers/char/rio/poll.h | 76 + drivers/char/rio/port.h | 245 + drivers/char/rio/proto.h | 244 + drivers/char/rio/protsts.h | 119 + drivers/char/rio/qbuf.h | 67 + drivers/char/rio/rio.h | 294 + drivers/char/rio/rio_linux.c | 1380 + drivers/char/rio/rio_linux.h | 187 + drivers/char/rio/rioboard.h | 281 + drivers/char/rio/rioboot.c | 1360 + drivers/char/rio/riocmd.c | 1041 + drivers/char/rio/rioctrl.c | 1869 ++ drivers/char/rio/riodrvr.h | 144 + drivers/char/rio/rioinfo.h | 96 + drivers/char/rio/rioinit.c | 1617 + drivers/char/rio/riointr.c | 951 + drivers/char/rio/rioioctl.h | 103 + drivers/char/rio/riolocks.h | 43 + drivers/char/rio/rioparam.c | 744 + drivers/char/rio/riopcicopy.c | 8 + drivers/char/rio/rioroute.c | 1238 + drivers/char/rio/riospace.h | 161 + drivers/char/rio/riotable.c | 1044 + drivers/char/rio/riotime.h | 63 + drivers/char/rio/riotty.c | 1376 + drivers/char/rio/riotypes.h | 135 + drivers/char/rio/riowinif.h | 1335 + drivers/char/rio/riscos.h | 63 + drivers/char/rio/rom.h | 64 + drivers/char/rio/route.h | 108 + drivers/char/rio/rtahw.h | 75 + drivers/char/rio/rup.h | 82 + drivers/char/rio/rupstat.h | 51 + drivers/char/rio/sam.h | 74 + drivers/char/rio/selftest.h | 73 + drivers/char/rio/space.h | 45 + drivers/char/rio/sysmap.h | 63 + drivers/char/rio/timeouts.h | 51 + drivers/char/rio/top.h | 49 + drivers/char/rio/typdef.h | 82 + drivers/char/rio/unixrup.h | 56 + drivers/char/riscom8.c | 1809 ++ drivers/char/riscom8.h | 102 + drivers/char/riscom8_reg.h | 254 + drivers/char/rocket.c | 3299 ++ drivers/char/rocket.h | 111 + drivers/char/rocket_int.h | 1296 + drivers/char/rtc.c | 1354 + drivers/char/s3c2410-rtc.c | 588 + drivers/char/scan_keyb.c | 149 + drivers/char/scan_keyb.h | 15 + drivers/char/scc.h | 613 + drivers/char/scx200_gpio.c | 149 + drivers/char/selection.c | 306 + drivers/char/ser_a2232.c | 825 + drivers/char/ser_a2232.h | 202 + drivers/char/ser_a2232fw.ax | 529 + drivers/char/ser_a2232fw.h | 306 + drivers/char/serial167.c | 2858 ++ drivers/char/snsc.c | 448 + drivers/char/snsc.h | 50 + drivers/char/sonypi.c | 1403 + drivers/char/specialix.c | 2610 ++ drivers/char/specialix_io8.h | 149 + drivers/char/stallion.c | 5197 ++++ drivers/char/sx.c | 2621 ++ drivers/char/sx.h | 202 + drivers/char/sxboards.h | 206 + drivers/char/sxwindow.h | 393 + drivers/char/synclink.c | 8214 +++++ drivers/char/synclinkmp.c | 5671 ++++ drivers/char/sysrq.c | 432 + drivers/char/tb0219.c | 347 + drivers/char/tipar.c | 564 + drivers/char/toshiba.c | 532 + drivers/char/tpm/Kconfig | 39 + drivers/char/tpm/Makefile | 7 + drivers/char/tpm/tpm.c | 697 + drivers/char/tpm/tpm.h | 93 + drivers/char/tpm/tpm_atmel.c | 216 + drivers/char/tpm/tpm_nsc.c | 373 + drivers/char/tty_io.c | 2980 ++ drivers/char/tty_ioctl.c | 551 + drivers/char/vc_screen.c | 509 + drivers/char/viocons.c | 1195 + drivers/char/viotape.c | 1129 + drivers/char/vme_scc.c | 1056 + drivers/char/vr41xx_rtc.c | 709 + drivers/char/vt.c | 3242 ++ drivers/char/vt_ioctl.c | 1201 + drivers/char/watchdog/Kconfig | 549 + drivers/char/watchdog/Makefile | 42 + drivers/char/watchdog/acquirewdt.c | 332 + drivers/char/watchdog/advantechwdt.c | 333 + drivers/char/watchdog/alim1535_wdt.c | 463 + drivers/char/watchdog/alim7101_wdt.c | 421 + drivers/char/watchdog/cpu5wdt.c | 303 + drivers/char/watchdog/eurotechwdt.c | 474 + drivers/char/watchdog/i8xx_tco.c | 535 + drivers/char/watchdog/i8xx_tco.h | 42 + drivers/char/watchdog/ib700wdt.c | 352 + drivers/char/watchdog/indydog.c | 221 + drivers/char/watchdog/ixp2000_wdt.c | 219 + drivers/char/watchdog/ixp4xx_wdt.c | 230 + drivers/char/watchdog/machzwd.c | 501 + drivers/char/watchdog/mixcomwd.c | 306 + drivers/char/watchdog/mpc8xx_wdt.c | 164 + drivers/char/watchdog/pcwd.c | 926 + drivers/char/watchdog/pcwd_pci.c | 677 + drivers/char/watchdog/pcwd_usb.c | 796 + drivers/char/watchdog/s3c2410_wdt.c | 516 + drivers/char/watchdog/sa1100_wdt.c | 223 + drivers/char/watchdog/sbc60xxwdt.c | 413 + drivers/char/watchdog/sc1200wdt.c | 467 + drivers/char/watchdog/sc520_wdt.c | 447 + drivers/char/watchdog/scx200_wdt.c | 274 + drivers/char/watchdog/shwdt.c | 452 + drivers/char/watchdog/softdog.c | 309 + drivers/char/watchdog/w83627hf_wdt.c | 362 + drivers/char/watchdog/w83877f_wdt.c | 426 + drivers/char/watchdog/wafer5823wdt.c | 330 + drivers/char/watchdog/wd501p.h | 52 + drivers/char/watchdog/wdt.c | 647 + drivers/char/watchdog/wdt285.c | 229 + drivers/char/watchdog/wdt977.c | 459 + drivers/char/watchdog/wdt_pci.c | 763 + drivers/cpufreq/Kconfig | 118 + drivers/cpufreq/Makefile | 14 + drivers/cpufreq/cpufreq.c | 1428 + drivers/cpufreq/cpufreq_ondemand.c | 491 + drivers/cpufreq/cpufreq_performance.c | 61 + drivers/cpufreq/cpufreq_powersave.c | 59 + drivers/cpufreq/cpufreq_stats.c | 334 + drivers/cpufreq/cpufreq_userspace.c | 207 + drivers/cpufreq/freq_table.c | 225 + drivers/crypto/Kconfig | 23 + drivers/crypto/Makefile | 7 + drivers/crypto/padlock-aes.c | 468 + drivers/crypto/padlock-generic.c | 63 + drivers/crypto/padlock.h | 36 + drivers/dio/Makefile | 5 + drivers/dio/dio-driver.c | 163 + drivers/dio/dio-sysfs.c | 77 + drivers/dio/dio.c | 279 + drivers/eisa/Kconfig | 56 + drivers/eisa/Makefile | 21 + drivers/eisa/eisa-bus.c | 430 + drivers/eisa/eisa.ids | 1278 + drivers/eisa/pci_eisa.c | 66 + drivers/eisa/virtual_root.c | 75 + drivers/fc4/Kconfig | 81 + drivers/fc4/Makefile | 9 + drivers/fc4/fc-al.h | 27 + drivers/fc4/fc.c | 1158 + drivers/fc4/fc.h | 230 + drivers/fc4/fc_syms.c | 33 + drivers/fc4/fcp.h | 94 + drivers/fc4/fcp_impl.h | 164 + drivers/fc4/soc.c | 766 + drivers/fc4/soc.h | 301 + drivers/fc4/socal.c | 906 + drivers/fc4/socal.h | 314 + drivers/firmware/Kconfig | 61 + drivers/firmware/Makefile | 6 + drivers/firmware/edd.c | 790 + drivers/firmware/efivars.c | 781 + drivers/firmware/pcdp.c | 100 + drivers/firmware/pcdp.h | 84 + drivers/i2c/Kconfig | 77 + drivers/i2c/Makefile | 15 + drivers/i2c/algos/Kconfig | 70 + drivers/i2c/algos/Makefile | 14 + drivers/i2c/algos/i2c-algo-bit.c | 573 + drivers/i2c/algos/i2c-algo-ite.c | 812 + drivers/i2c/algos/i2c-algo-ite.h | 117 + drivers/i2c/algos/i2c-algo-pca.c | 399 + drivers/i2c/algos/i2c-algo-pca.h | 26 + drivers/i2c/algos/i2c-algo-pcf.c | 507 + drivers/i2c/algos/i2c-algo-pcf.h | 76 + drivers/i2c/algos/i2c-algo-sgi.c | 189 + drivers/i2c/algos/i2c-algo-sibyte.c | 222 + drivers/i2c/busses/Kconfig | 499 + drivers/i2c/busses/Makefile | 47 + drivers/i2c/busses/i2c-ali1535.c | 543 + drivers/i2c/busses/i2c-ali1563.c | 415 + drivers/i2c/busses/i2c-ali15x3.c | 532 + drivers/i2c/busses/i2c-amd756-s4882.c | 264 + drivers/i2c/busses/i2c-amd756.c | 431 + drivers/i2c/busses/i2c-amd8111.c | 415 + drivers/i2c/busses/i2c-au1550.c | 435 + drivers/i2c/busses/i2c-au1550.h | 32 + drivers/i2c/busses/i2c-elektor.c | 295 + drivers/i2c/busses/i2c-frodo.c | 86 + drivers/i2c/busses/i2c-hydra.c | 183 + drivers/i2c/busses/i2c-i801.c | 613 + drivers/i2c/busses/i2c-i810.c | 260 + drivers/i2c/busses/i2c-ibm_iic.c | 819 + drivers/i2c/busses/i2c-ibm_iic.h | 124 + drivers/i2c/busses/i2c-iop3xx.c | 554 + drivers/i2c/busses/i2c-iop3xx.h | 107 + drivers/i2c/busses/i2c-isa.c | 72 + drivers/i2c/busses/i2c-ite.c | 282 + drivers/i2c/busses/i2c-ixp2000.c | 171 + drivers/i2c/busses/i2c-ixp4xx.c | 181 + drivers/i2c/busses/i2c-keywest.c | 763 + drivers/i2c/busses/i2c-keywest.h | 108 + drivers/i2c/busses/i2c-mpc.c | 496 + drivers/i2c/busses/i2c-mv64xxx.c | 598 + drivers/i2c/busses/i2c-nforce2.c | 410 + drivers/i2c/busses/i2c-parport-light.c | 175 + drivers/i2c/busses/i2c-parport.c | 267 + drivers/i2c/busses/i2c-parport.h | 94 + drivers/i2c/busses/i2c-pca-isa.c | 184 + drivers/i2c/busses/i2c-piix4.c | 490 + drivers/i2c/busses/i2c-prosavage.c | 334 + drivers/i2c/busses/i2c-rpx.c | 102 + drivers/i2c/busses/i2c-s3c2410.c | 938 + drivers/i2c/busses/i2c-savage4.c | 205 + drivers/i2c/busses/i2c-sibyte.c | 71 + drivers/i2c/busses/i2c-sis5595.c | 424 + drivers/i2c/busses/i2c-sis630.c | 523 + drivers/i2c/busses/i2c-sis96x.c | 358 + drivers/i2c/busses/i2c-stub.c | 143 + drivers/i2c/busses/i2c-via.c | 185 + drivers/i2c/busses/i2c-viapro.c | 458 + drivers/i2c/busses/i2c-voodoo3.c | 254 + drivers/i2c/busses/scx200_acb.c | 557 + drivers/i2c/busses/scx200_i2c.c | 131 + drivers/i2c/chips/Kconfig | 443 + drivers/i2c/chips/Makefile | 48 + drivers/i2c/chips/adm1021.c | 411 + drivers/i2c/chips/adm1025.c | 574 + drivers/i2c/chips/adm1026.c | 1754 ++ drivers/i2c/chips/adm1031.c | 977 + drivers/i2c/chips/asb100.c | 1066 + drivers/i2c/chips/ds1337.c | 402 + drivers/i2c/chips/ds1621.c | 341 + drivers/i2c/chips/eeprom.c | 264 + drivers/i2c/chips/fscher.c | 692 + drivers/i2c/chips/fscpos.c | 641 + drivers/i2c/chips/gl518sm.c | 605 + drivers/i2c/chips/gl520sm.c | 769 + drivers/i2c/chips/isp1301_omap.c | 1658 ++ drivers/i2c/chips/it87.c | 1208 + drivers/i2c/chips/lm63.c | 581 + drivers/i2c/chips/lm75.c | 297 + drivers/i2c/chips/lm75.h | 49 + drivers/i2c/chips/lm77.c | 421 + drivers/i2c/chips/lm78.c | 796 + drivers/i2c/chips/lm80.c | 602 + drivers/i2c/chips/lm83.c | 412 + drivers/i2c/chips/lm85.c | 1578 + drivers/i2c/chips/lm87.c | 829 + drivers/i2c/chips/lm90.c | 626 + drivers/i2c/chips/lm92.c | 429 + drivers/i2c/chips/m41t00.c | 246 + drivers/i2c/chips/max1619.c | 373 + drivers/i2c/chips/pc87360.c | 1349 + drivers/i2c/chips/pcf8574.c | 229 + drivers/i2c/chips/pcf8591.c | 316 + drivers/i2c/chips/rtc8564.c | 394 + drivers/i2c/chips/rtc8564.h | 78 + drivers/i2c/chips/sis5595.c | 816 + drivers/i2c/chips/smsc47b397.c | 352 + drivers/i2c/chips/smsc47m1.c | 591 + drivers/i2c/chips/via686a.c | 879 + drivers/i2c/chips/w83627hf.c | 1511 + drivers/i2c/chips/w83781d.c | 1664 ++ drivers/i2c/chips/w83l785ts.c | 329 + drivers/i2c/i2c-core.c | 1272 + drivers/i2c/i2c-dev.c | 552 + drivers/i2c/i2c-sensor-detect.c | 145 + drivers/i2c/i2c-sensor-vid.c | 98 + drivers/ide/Kconfig | 1056 + drivers/ide/Makefile | 54 + drivers/ide/arm/Makefile | 6 + drivers/ide/arm/bast-ide.c | 71 + drivers/ide/arm/icside.c | 870 + drivers/ide/arm/ide_arm.c | 43 + drivers/ide/arm/rapide.c | 125 + drivers/ide/cris/Makefile | 3 + drivers/ide/cris/ide-v10.c | 842 + drivers/ide/h8300/ide-h8300.c | 119 + drivers/ide/ide-cd.c | 3524 +++ drivers/ide/ide-cd.h | 746 + drivers/ide/ide-disk.c | 1280 + drivers/ide/ide-dma.c | 959 + drivers/ide/ide-floppy.c | 2211 ++ drivers/ide/ide-generic.c | 32 + drivers/ide/ide-io.c | 1681 ++ drivers/ide/ide-iops.c | 1285 + drivers/ide/ide-lib.c | 622 + drivers/ide/ide-pnp.c | 75 + drivers/ide/ide-probe.c | 1421 + drivers/ide/ide-proc.c | 521 + drivers/ide/ide-tape.c | 4937 +++ drivers/ide/ide-taskfile.c | 884 + drivers/ide/ide-timing.h | 281 + drivers/ide/ide.c | 2269 ++ drivers/ide/legacy/Makefile | 13 + drivers/ide/legacy/ali14xx.c | 253 + drivers/ide/legacy/buddha.c | 235 + drivers/ide/legacy/dtc2278.c | 165 + drivers/ide/legacy/falconide.c | 78 + drivers/ide/legacy/gayle.c | 186 + drivers/ide/legacy/hd.c | 864 + drivers/ide/legacy/ht6560b.c | 370 + drivers/ide/legacy/ide-cs.c | 481 + drivers/ide/legacy/macide.c | 155 + drivers/ide/legacy/q40ide.c | 150 + drivers/ide/legacy/qd65xx.c | 511 + drivers/ide/legacy/qd65xx.h | 140 + drivers/ide/legacy/umc8672.c | 183 + drivers/ide/pci/Makefile | 34 + drivers/ide/pci/aec62xx.c | 485 + drivers/ide/pci/alim15x3.c | 913 + drivers/ide/pci/amd74xx.c | 543 + drivers/ide/pci/atiixp.c | 370 + drivers/ide/pci/cmd640.c | 879 + drivers/ide/pci/cmd64x.c | 821 + drivers/ide/pci/cs5520.c | 274 + drivers/ide/pci/cs5530.c | 384 + drivers/ide/pci/cy82c693.c | 531 + drivers/ide/pci/generic.c | 232 + drivers/ide/pci/hpt34x.c | 278 + drivers/ide/pci/hpt366.c | 1745 ++ drivers/ide/pci/it8172.c | 308 + drivers/ide/pci/ns87415.c | 315 + drivers/ide/pci/opti621.c | 394 + drivers/ide/pci/pdc202xx_new.c | 508 + drivers/ide/pci/pdc202xx_old.c | 892 + drivers/ide/pci/piix.c | 670 + drivers/ide/pci/rz1000.c | 91 + drivers/ide/pci/sc1200.c | 518 + drivers/ide/pci/serverworks.c | 675 + drivers/ide/pci/sgiioc4.c | 728 + drivers/ide/pci/siimage.c | 1133 + drivers/ide/pci/sis5513.c | 984 + drivers/ide/pci/sl82c105.c | 516 + drivers/ide/pci/slc90e66.c | 273 + drivers/ide/pci/triflex.c | 188 + drivers/ide/pci/trm290.c | 369 + drivers/ide/pci/via82cxxx.c | 656 + drivers/ide/ppc/mpc8xx.c | 855 + drivers/ide/ppc/pmac.c | 2208 ++ drivers/ide/setup-pci.c | 901 + drivers/ieee1394/Kconfig | 188 + drivers/ieee1394/Makefile | 26 + drivers/ieee1394/amdtp.c | 1300 + drivers/ieee1394/amdtp.h | 84 + drivers/ieee1394/cmp.c | 311 + drivers/ieee1394/cmp.h | 31 + drivers/ieee1394/config_roms.c | 236 + drivers/ieee1394/config_roms.h | 27 + drivers/ieee1394/csr.c | 857 + drivers/ieee1394/csr.h | 96 + drivers/ieee1394/csr1212.c | 1612 + drivers/ieee1394/csr1212.h | 727 + drivers/ieee1394/dma.c | 260 + drivers/ieee1394/dma.h | 78 + drivers/ieee1394/dv1394-private.h | 587 + drivers/ieee1394/dv1394.c | 2663 ++ drivers/ieee1394/dv1394.h | 305 + drivers/ieee1394/eth1394.c | 1801 ++ drivers/ieee1394/eth1394.h | 236 + drivers/ieee1394/highlevel.c | 704 + drivers/ieee1394/highlevel.h | 190 + drivers/ieee1394/hosts.c | 233 + drivers/ieee1394/hosts.h | 215 + drivers/ieee1394/ieee1394-ioctl.h | 111 + drivers/ieee1394/ieee1394.h | 202 + drivers/ieee1394/ieee1394_core.c | 1330 + drivers/ieee1394/ieee1394_core.h | 228 + drivers/ieee1394/ieee1394_hotplug.h | 33 + drivers/ieee1394/ieee1394_transactions.c | 601 + drivers/ieee1394/ieee1394_transactions.h | 64 + drivers/ieee1394/ieee1394_types.h | 101 + drivers/ieee1394/iso.c | 451 + drivers/ieee1394/iso.h | 201 + drivers/ieee1394/nodemgr.c | 1732 ++ drivers/ieee1394/nodemgr.h | 207 + drivers/ieee1394/ohci1394.c | 3705 +++ drivers/ieee1394/ohci1394.h | 456 + drivers/ieee1394/oui.db | 7048 +++++ drivers/ieee1394/oui2c.sh | 23 + drivers/ieee1394/pcilynx.c | 1982 ++ drivers/ieee1394/pcilynx.h | 516 + drivers/ieee1394/raw1394-private.h | 86 + drivers/ieee1394/raw1394.c | 2958 ++ drivers/ieee1394/raw1394.h | 181 + drivers/ieee1394/sbp2.c | 2864 ++ drivers/ieee1394/sbp2.h | 484 + drivers/ieee1394/video1394.c | 1527 + drivers/ieee1394/video1394.h | 67 + drivers/infiniband/Kconfig | 14 + drivers/infiniband/Makefile | 3 + drivers/infiniband/core/Makefile | 12 + drivers/infiniband/core/agent.c | 373 + drivers/infiniband/core/agent.h | 55 + drivers/infiniband/core/agent_priv.h | 63 + drivers/infiniband/core/cache.c | 365 + drivers/infiniband/core/core_priv.h | 52 + drivers/infiniband/core/device.c | 614 + drivers/infiniband/core/fmr_pool.c | 507 + drivers/infiniband/core/mad.c | 2714 ++ drivers/infiniband/core/mad_priv.h | 199 + drivers/infiniband/core/packer.c | 201 + drivers/infiniband/core/sa_query.c | 866 + drivers/infiniband/core/smi.c | 234 + drivers/infiniband/core/smi.h | 67 + drivers/infiniband/core/sysfs.c | 762 + drivers/infiniband/core/ud_header.c | 365 + drivers/infiniband/core/user_mad.c | 840 + drivers/infiniband/core/verbs.c | 434 + drivers/infiniband/hw/mthca/Kconfig | 16 + drivers/infiniband/hw/mthca/Makefile | 12 + drivers/infiniband/hw/mthca/mthca_allocator.c | 179 + drivers/infiniband/hw/mthca/mthca_av.c | 241 + drivers/infiniband/hw/mthca/mthca_cmd.c | 1767 ++ drivers/infiniband/hw/mthca/mthca_cmd.h | 310 + .../infiniband/hw/mthca/mthca_config_reg.h | 51 + drivers/infiniband/hw/mthca/mthca_cq.c | 918 + drivers/infiniband/hw/mthca/mthca_dev.h | 437 + drivers/infiniband/hw/mthca/mthca_doorbell.h | 95 + drivers/infiniband/hw/mthca/mthca_eq.c | 964 + drivers/infiniband/hw/mthca/mthca_mad.c | 323 + drivers/infiniband/hw/mthca/mthca_main.c | 1123 + drivers/infiniband/hw/mthca/mthca_mcg.c | 376 + drivers/infiniband/hw/mthca/mthca_memfree.c | 465 + drivers/infiniband/hw/mthca/mthca_memfree.h | 161 + drivers/infiniband/hw/mthca/mthca_mr.c | 416 + drivers/infiniband/hw/mthca/mthca_pd.c | 80 + drivers/infiniband/hw/mthca/mthca_profile.c | 266 + drivers/infiniband/hw/mthca/mthca_profile.h | 58 + drivers/infiniband/hw/mthca/mthca_provider.c | 660 + drivers/infiniband/hw/mthca/mthca_provider.h | 251 + drivers/infiniband/hw/mthca/mthca_qp.c | 2056 ++ drivers/infiniband/hw/mthca/mthca_reset.c | 232 + drivers/infiniband/hw/mthca/mthca_uar.c | 78 + drivers/infiniband/include/ib_cache.h | 103 + drivers/infiniband/include/ib_fmr_pool.h | 92 + drivers/infiniband/include/ib_mad.h | 404 + drivers/infiniband/include/ib_pack.h | 245 + drivers/infiniband/include/ib_sa.h | 308 + drivers/infiniband/include/ib_smi.h | 96 + drivers/infiniband/include/ib_user_mad.h | 123 + drivers/infiniband/include/ib_verbs.h | 1252 + drivers/infiniband/ulp/ipoib/Kconfig | 33 + drivers/infiniband/ulp/ipoib/Makefile | 11 + drivers/infiniband/ulp/ipoib/ipoib.h | 353 + drivers/infiniband/ulp/ipoib/ipoib_fs.c | 287 + drivers/infiniband/ulp/ipoib/ipoib_ib.c | 668 + drivers/infiniband/ulp/ipoib/ipoib_main.c | 1103 + .../infiniband/ulp/ipoib/ipoib_multicast.c | 991 + drivers/infiniband/ulp/ipoib/ipoib_verbs.c | 260 + drivers/infiniband/ulp/ipoib/ipoib_vlan.c | 177 + drivers/input/Kconfig | 157 + drivers/input/Makefile | 19 + drivers/input/evbug.c | 103 + drivers/input/evdev.c | 492 + drivers/input/gameport/Kconfig | 90 + drivers/input/gameport/Makefile | 13 + drivers/input/gameport/cs461x.c | 322 + drivers/input/gameport/emu10k1-gp.c | 132 + drivers/input/gameport/fm801-gp.c | 163 + drivers/input/gameport/gameport.c | 797 + drivers/input/gameport/lightning.c | 344 + drivers/input/gameport/ns558.c | 291 + drivers/input/gameport/vortex.c | 186 + drivers/input/input.c | 748 + drivers/input/joydev.c | 533 + drivers/input/joystick/Kconfig | 256 + drivers/input/joystick/Makefile | 30 + drivers/input/joystick/a3d.c | 417 + drivers/input/joystick/adi.c | 560 + drivers/input/joystick/amijoy.c | 161 + drivers/input/joystick/analog.c | 772 + drivers/input/joystick/cobra.c | 264 + drivers/input/joystick/db9.c | 647 + drivers/input/joystick/gamecon.c | 697 + drivers/input/joystick/gf2k.c | 380 + drivers/input/joystick/grip.c | 422 + drivers/input/joystick/grip_mp.c | 677 + drivers/input/joystick/guillemot.c | 289 + drivers/input/joystick/iforce/Kconfig | 32 + drivers/input/joystick/iforce/Makefile | 20 + drivers/input/joystick/iforce/iforce-ff.c | 543 + drivers/input/joystick/iforce/iforce-main.c | 557 + .../input/joystick/iforce/iforce-packets.c | 319 + drivers/input/joystick/iforce/iforce-serio.c | 193 + drivers/input/joystick/iforce/iforce-usb.c | 243 + drivers/input/joystick/iforce/iforce.h | 191 + drivers/input/joystick/interact.c | 322 + drivers/input/joystick/joydump.c | 175 + drivers/input/joystick/magellan.c | 247 + drivers/input/joystick/sidewinder.c | 807 + drivers/input/joystick/spaceball.c | 319 + drivers/input/joystick/spaceorb.c | 263 + drivers/input/joystick/stinger.c | 236 + drivers/input/joystick/tmdc.c | 384 + drivers/input/joystick/turbografx.c | 258 + drivers/input/joystick/twidjoy.c | 296 + drivers/input/joystick/warrior.c | 248 + drivers/input/keyboard/Kconfig | 185 + drivers/input/keyboard/Makefile | 19 + drivers/input/keyboard/amikbd.c | 241 + drivers/input/keyboard/atkbd.c | 1148 + drivers/input/keyboard/corgikbd.c | 361 + drivers/input/keyboard/hil_kbd.c | 375 + drivers/input/keyboard/hilkbd.c | 343 + drivers/input/keyboard/hpps2atkbd.h | 110 + drivers/input/keyboard/lkkbd.c | 752 + drivers/input/keyboard/locomokbd.c | 309 + drivers/input/keyboard/maple_keyb.c | 190 + drivers/input/keyboard/newtonkbd.c | 184 + drivers/input/keyboard/sunkbd.c | 353 + drivers/input/keyboard/xtkbd.c | 188 + drivers/input/misc/Kconfig | 60 + drivers/input/misc/Makefile | 12 + drivers/input/misc/hp_sdc_rtc.c | 724 + drivers/input/misc/m68kspkr.c | 83 + drivers/input/misc/pcspkr.c | 97 + drivers/input/misc/sparcspkr.c | 189 + drivers/input/misc/uinput.c | 620 + drivers/input/mouse/Kconfig | 138 + drivers/input/mouse/Makefile | 18 + drivers/input/mouse/alps.c | 477 + drivers/input/mouse/alps.h | 32 + drivers/input/mouse/amimouse.c | 137 + drivers/input/mouse/hil_ptr.c | 414 + drivers/input/mouse/inport.c | 196 + drivers/input/mouse/logibm.c | 183 + drivers/input/mouse/logips2pp.c | 397 + drivers/input/mouse/logips2pp.h | 16 + drivers/input/mouse/maplemouse.c | 134 + drivers/input/mouse/pc110pad.c | 178 + drivers/input/mouse/psmouse-base.c | 1011 + drivers/input/mouse/psmouse.h | 106 + drivers/input/mouse/rpcmouse.c | 107 + drivers/input/mouse/sermouse.c | 370 + drivers/input/mouse/synaptics.c | 700 + drivers/input/mouse/synaptics.h | 110 + drivers/input/mouse/vsxxxaa.c | 591 + drivers/input/mousedev.c | 758 + drivers/input/power.c | 169 + drivers/input/serio/Kconfig | 183 + drivers/input/serio/Makefile | 23 + drivers/input/serio/ambakmi.c | 231 + drivers/input/serio/ct82c710.c | 225 + drivers/input/serio/gscps2.c | 467 + drivers/input/serio/hil_mlc.c | 949 + drivers/input/serio/hp_sdc.c | 1054 + drivers/input/serio/hp_sdc_mlc.c | 358 + drivers/input/serio/i8042-io.h | 93 + drivers/input/serio/i8042-ip22io.h | 76 + drivers/input/serio/i8042-jazzio.h | 69 + drivers/input/serio/i8042-ppcio.h | 136 + drivers/input/serio/i8042-sparcio.h | 116 + drivers/input/serio/i8042-x86ia64io.h | 333 + drivers/input/serio/i8042.c | 1116 + drivers/input/serio/i8042.h | 133 + drivers/input/serio/libps2.c | 305 + drivers/input/serio/maceps2.c | 176 + drivers/input/serio/parkbd.c | 218 + drivers/input/serio/pcips2.c | 234 + drivers/input/serio/q40kbd.c | 163 + drivers/input/serio/rpckbd.c | 156 + drivers/input/serio/sa1111ps2.c | 359 + drivers/input/serio/serio.c | 859 + drivers/input/serio/serio_raw.c | 403 + drivers/input/serio/serport.c | 226 + drivers/input/touchscreen/Kconfig | 98 + drivers/input/touchscreen/Makefile | 13 + drivers/input/touchscreen/corgi_ts.c | 380 + drivers/input/touchscreen/elo.c | 315 + drivers/input/touchscreen/gunze.c | 205 + drivers/input/touchscreen/h3600_ts_input.c | 528 + drivers/input/touchscreen/hp680_ts_input.c | 135 + drivers/input/touchscreen/mk712.c | 222 + drivers/input/touchscreen/mtouch.c | 219 + drivers/input/tsdev.c | 492 + drivers/isdn/Kconfig | 67 + drivers/isdn/Makefile | 15 + drivers/isdn/act2000/Kconfig | 13 + drivers/isdn/act2000/Makefile | 9 + drivers/isdn/act2000/act2000.h | 202 + drivers/isdn/act2000/act2000_isa.c | 449 + drivers/isdn/act2000/act2000_isa.h | 136 + drivers/isdn/act2000/capi.c | 1177 + drivers/isdn/act2000/capi.h | 366 + drivers/isdn/act2000/module.c | 808 + drivers/isdn/capi/Kconfig | 53 + drivers/isdn/capi/Makefile | 15 + drivers/isdn/capi/capi.c | 1554 + drivers/isdn/capi/capidrv.c | 2315 ++ drivers/isdn/capi/capidrv.h | 140 + drivers/isdn/capi/capifs.c | 212 + drivers/isdn/capi/capifs.h | 11 + drivers/isdn/capi/capilib.c | 200 + drivers/isdn/capi/capiutil.c | 859 + drivers/isdn/capi/kcapi.c | 991 + drivers/isdn/capi/kcapi.h | 49 + drivers/isdn/capi/kcapi_proc.c | 336 + drivers/isdn/divert/Makefile | 9 + drivers/isdn/divert/divert_init.c | 83 + drivers/isdn/divert/divert_procfs.c | 319 + drivers/isdn/divert/isdn_divert.c | 861 + drivers/isdn/divert/isdn_divert.h | 132 + drivers/isdn/hardware/Kconfig | 10 + drivers/isdn/hardware/Makefile | 6 + drivers/isdn/hardware/avm/Kconfig | 66 + drivers/isdn/hardware/avm/Makefile | 11 + drivers/isdn/hardware/avm/avm_cs.c | 510 + drivers/isdn/hardware/avm/avmcard.h | 585 + drivers/isdn/hardware/avm/b1.c | 814 + drivers/isdn/hardware/avm/b1dma.c | 980 + drivers/isdn/hardware/avm/b1isa.c | 245 + drivers/isdn/hardware/avm/b1pci.c | 417 + drivers/isdn/hardware/avm/b1pcmcia.c | 224 + drivers/isdn/hardware/avm/c4.c | 1310 + drivers/isdn/hardware/avm/t1isa.c | 596 + drivers/isdn/hardware/avm/t1pci.c | 260 + drivers/isdn/hardware/eicon/Kconfig | 53 + drivers/isdn/hardware/eicon/Makefile | 23 + drivers/isdn/hardware/eicon/adapter.h | 17 + drivers/isdn/hardware/eicon/capi20.h | 699 + drivers/isdn/hardware/eicon/capidtmf.c | 685 + drivers/isdn/hardware/eicon/capidtmf.h | 79 + drivers/isdn/hardware/eicon/capifunc.c | 1219 + drivers/isdn/hardware/eicon/capifunc.h | 40 + drivers/isdn/hardware/eicon/capimain.c | 147 + drivers/isdn/hardware/eicon/cardtype.h | 1098 + drivers/isdn/hardware/eicon/cp_vers.h | 26 + drivers/isdn/hardware/eicon/dadapter.c | 366 + drivers/isdn/hardware/eicon/dadapter.h | 34 + drivers/isdn/hardware/eicon/dbgioctl.h | 198 + drivers/isdn/hardware/eicon/debug.c | 2133 ++ drivers/isdn/hardware/eicon/debug_if.h | 90 + drivers/isdn/hardware/eicon/debuglib.c | 156 + drivers/isdn/hardware/eicon/debuglib.h | 322 + drivers/isdn/hardware/eicon/dfifo.h | 54 + drivers/isdn/hardware/eicon/di.c | 835 + drivers/isdn/hardware/eicon/di.h | 118 + drivers/isdn/hardware/eicon/di_dbg.h | 37 + drivers/isdn/hardware/eicon/di_defs.h | 181 + drivers/isdn/hardware/eicon/did_vers.h | 26 + drivers/isdn/hardware/eicon/diddfunc.c | 115 + drivers/isdn/hardware/eicon/diva.c | 660 + drivers/isdn/hardware/eicon/diva.h | 31 + drivers/isdn/hardware/eicon/diva_didd.c | 151 + drivers/isdn/hardware/eicon/diva_dma.c | 94 + drivers/isdn/hardware/eicon/diva_dma.h | 48 + drivers/isdn/hardware/eicon/diva_pci.h | 19 + drivers/isdn/hardware/eicon/divacapi.h | 1360 + drivers/isdn/hardware/eicon/divamnt.c | 257 + drivers/isdn/hardware/eicon/divasfunc.c | 238 + drivers/isdn/hardware/eicon/divasi.c | 581 + drivers/isdn/hardware/eicon/divasmain.c | 856 + drivers/isdn/hardware/eicon/divasproc.c | 441 + drivers/isdn/hardware/eicon/divasync.h | 490 + drivers/isdn/hardware/eicon/dqueue.c | 110 + drivers/isdn/hardware/eicon/dqueue.h | 31 + drivers/isdn/hardware/eicon/dsp_defs.h | 304 + drivers/isdn/hardware/eicon/dsp_tst.h | 47 + drivers/isdn/hardware/eicon/dspdids.h | 75 + drivers/isdn/hardware/eicon/dsrv4bri.h | 40 + drivers/isdn/hardware/eicon/dsrv_bri.h | 37 + drivers/isdn/hardware/eicon/dsrv_pri.h | 38 + drivers/isdn/hardware/eicon/entity.h | 28 + drivers/isdn/hardware/eicon/helpers.h | 51 + drivers/isdn/hardware/eicon/idifunc.c | 267 + drivers/isdn/hardware/eicon/io.c | 852 + drivers/isdn/hardware/eicon/io.h | 308 + drivers/isdn/hardware/eicon/istream.c | 226 + drivers/isdn/hardware/eicon/kst_ifc.h | 336 + drivers/isdn/hardware/eicon/main_if.h | 50 + drivers/isdn/hardware/eicon/maintidi.c | 2194 ++ drivers/isdn/hardware/eicon/maintidi.h | 172 + drivers/isdn/hardware/eicon/man_defs.h | 133 + drivers/isdn/hardware/eicon/mdm_msg.h | 346 + drivers/isdn/hardware/eicon/message.c | 15047 ++++++++++ drivers/isdn/hardware/eicon/mi_pc.h | 204 + drivers/isdn/hardware/eicon/mntfunc.c | 370 + drivers/isdn/hardware/eicon/os_4bri.c | 1131 + drivers/isdn/hardware/eicon/os_4bri.h | 8 + drivers/isdn/hardware/eicon/os_bri.c | 813 + drivers/isdn/hardware/eicon/os_bri.h | 8 + drivers/isdn/hardware/eicon/os_capi.h | 21 + drivers/isdn/hardware/eicon/os_pri.c | 1051 + drivers/isdn/hardware/eicon/os_pri.h | 8 + drivers/isdn/hardware/eicon/pc.h | 738 + drivers/isdn/hardware/eicon/pc_init.h | 267 + drivers/isdn/hardware/eicon/pc_maint.h | 160 + drivers/isdn/hardware/eicon/pkmaint.h | 44 + drivers/isdn/hardware/eicon/platform.h | 394 + drivers/isdn/hardware/eicon/pr_pc.h | 76 + drivers/isdn/hardware/eicon/s_4bri.c | 510 + drivers/isdn/hardware/eicon/s_bri.c | 191 + drivers/isdn/hardware/eicon/s_pri.c | 205 + drivers/isdn/hardware/eicon/sdp_hdr.h | 117 + drivers/isdn/hardware/eicon/um_idi.c | 885 + drivers/isdn/hardware/eicon/um_idi.h | 43 + drivers/isdn/hardware/eicon/um_xdi.h | 68 + drivers/isdn/hardware/eicon/xdi_adapter.h | 70 + drivers/isdn/hardware/eicon/xdi_msg.h | 127 + drivers/isdn/hardware/eicon/xdi_vers.h | 26 + drivers/isdn/hisax/Kconfig | 442 + drivers/isdn/hisax/Makefile | 64 + drivers/isdn/hisax/amd7930_fn.c | 796 + drivers/isdn/hisax/amd7930_fn.h | 37 + drivers/isdn/hisax/arcofi.c | 134 + drivers/isdn/hisax/arcofi.h | 27 + drivers/isdn/hisax/asuscom.c | 427 + drivers/isdn/hisax/avm_a1.c | 317 + drivers/isdn/hisax/avm_a1p.c | 268 + drivers/isdn/hisax/avm_pci.c | 865 + drivers/isdn/hisax/avma1_cs.c | 527 + drivers/isdn/hisax/bkm_a4t.c | 344 + drivers/isdn/hisax/bkm_a8.c | 451 + drivers/isdn/hisax/bkm_ax.h | 119 + drivers/isdn/hisax/callc.c | 1793 ++ drivers/isdn/hisax/config.c | 1958 ++ drivers/isdn/hisax/diva.c | 1183 + drivers/isdn/hisax/elsa.c | 1190 + drivers/isdn/hisax/elsa_cs.c | 532 + drivers/isdn/hisax/elsa_ser.c | 657 + drivers/isdn/hisax/enternow.h | 51 + drivers/isdn/hisax/enternow_pci.c | 399 + drivers/isdn/hisax/fsm.c | 163 + drivers/isdn/hisax/fsm.h | 61 + drivers/isdn/hisax/gazel.c | 684 + drivers/isdn/hisax/hfc4s8s_l1.c | 1714 ++ drivers/isdn/hisax/hfc4s8s_l1.h | 88 + drivers/isdn/hisax/hfc_2bds0.c | 1082 + drivers/isdn/hisax/hfc_2bds0.h | 128 + drivers/isdn/hisax/hfc_2bs0.c | 593 + drivers/isdn/hisax/hfc_2bs0.h | 60 + drivers/isdn/hisax/hfc_pci.c | 1747 ++ drivers/isdn/hisax/hfc_pci.h | 236 + drivers/isdn/hisax/hfc_sx.c | 1521 + drivers/isdn/hisax/hfc_sx.h | 197 + drivers/isdn/hisax/hfc_usb.c | 1828 ++ drivers/isdn/hisax/hfc_usb.h | 228 + drivers/isdn/hisax/hfcscard.c | 266 + drivers/isdn/hisax/hisax.h | 1341 + drivers/isdn/hisax/hisax_cfg.h | 64 + drivers/isdn/hisax/hisax_debug.h | 81 + drivers/isdn/hisax/hisax_fcpcipnp.c | 1028 + drivers/isdn/hisax/hisax_fcpcipnp.h | 58 + drivers/isdn/hisax/hisax_if.h | 66 + drivers/isdn/hisax/hisax_isac.c | 897 + drivers/isdn/hisax/hisax_isac.h | 45 + drivers/isdn/hisax/hscx.c | 280 + drivers/isdn/hisax/hscx.h | 41 + drivers/isdn/hisax/hscx_irq.c | 292 + drivers/isdn/hisax/icc.c | 685 + drivers/isdn/hisax/icc.h | 72 + drivers/isdn/hisax/ipac.h | 29 + drivers/isdn/hisax/ipacx.c | 1004 + drivers/isdn/hisax/ipacx.h | 162 + drivers/isdn/hisax/isac.c | 684 + drivers/isdn/hisax/isac.h | 70 + drivers/isdn/hisax/isar.c | 1909 ++ drivers/isdn/hisax/isar.h | 222 + drivers/isdn/hisax/isdnhdlc.c | 628 + drivers/isdn/hisax/isdnhdlc.h | 72 + drivers/isdn/hisax/isdnl1.c | 932 + drivers/isdn/hisax/isdnl1.h | 32 + drivers/isdn/hisax/isdnl2.c | 1860 ++ drivers/isdn/hisax/isdnl2.h | 26 + drivers/isdn/hisax/isdnl3.c | 610 + drivers/isdn/hisax/isdnl3.h | 37 + drivers/isdn/hisax/isurf.c | 306 + drivers/isdn/hisax/ix1_micro.c | 318 + drivers/isdn/hisax/jade.c | 318 + drivers/isdn/hisax/jade.h | 135 + drivers/isdn/hisax/jade_irq.c | 236 + drivers/isdn/hisax/l3_1tr6.c | 955 + drivers/isdn/hisax/l3_1tr6.h | 164 + drivers/isdn/hisax/l3dss1.c | 3238 ++ drivers/isdn/hisax/l3dss1.h | 124 + drivers/isdn/hisax/l3ni1.c | 3189 ++ drivers/isdn/hisax/l3ni1.h | 136 + drivers/isdn/hisax/lmgr.c | 50 + drivers/isdn/hisax/mic.c | 239 + drivers/isdn/hisax/netjet.c | 996 + drivers/isdn/hisax/netjet.h | 72 + drivers/isdn/hisax/niccy.c | 389 + drivers/isdn/hisax/nj_s.c | 278 + drivers/isdn/hisax/nj_u.c | 244 + drivers/isdn/hisax/q931.c | 1522 + drivers/isdn/hisax/s0box.c | 266 + drivers/isdn/hisax/saphir.c | 300 + drivers/isdn/hisax/sedlbauer.c | 833 + drivers/isdn/hisax/sedlbauer_cs.c | 640 + drivers/isdn/hisax/sportster.c | 270 + drivers/isdn/hisax/st5481.h | 535 + drivers/isdn/hisax/st5481_b.c | 374 + drivers/isdn/hisax/st5481_d.c | 776 + drivers/isdn/hisax/st5481_hdlc.c | 580 + drivers/isdn/hisax/st5481_hdlc.h | 62 + drivers/isdn/hisax/st5481_init.c | 224 + drivers/isdn/hisax/st5481_usb.c | 650 + drivers/isdn/hisax/tei.c | 466 + drivers/isdn/hisax/teleint.c | 339 + drivers/isdn/hisax/teles0.c | 367 + drivers/isdn/hisax/teles3.c | 499 + drivers/isdn/hisax/teles_cs.c | 513 + drivers/isdn/hisax/telespci.c | 359 + drivers/isdn/hisax/w6692.c | 1096 + drivers/isdn/hisax/w6692.h | 184 + drivers/isdn/hysdn/Kconfig | 18 + drivers/isdn/hysdn/Makefile | 11 + drivers/isdn/hysdn/boardergo.c | 453 + drivers/isdn/hysdn/boardergo.h | 100 + drivers/isdn/hysdn/hycapi.c | 797 + drivers/isdn/hysdn/hysdn_boot.c | 399 + drivers/isdn/hysdn/hysdn_defs.h | 298 + drivers/isdn/hysdn/hysdn_init.c | 254 + drivers/isdn/hysdn/hysdn_net.c | 348 + drivers/isdn/hysdn/hysdn_pof.h | 78 + drivers/isdn/hysdn/hysdn_procconf.c | 443 + drivers/isdn/hysdn/hysdn_proclog.c | 441 + drivers/isdn/hysdn/hysdn_sched.c | 207 + drivers/isdn/hysdn/ince1pc.h | 134 + drivers/isdn/i4l/Kconfig | 141 + drivers/isdn/i4l/Makefile | 18 + drivers/isdn/i4l/isdn_audio.c | 720 + drivers/isdn/i4l/isdn_audio.h | 45 + drivers/isdn/i4l/isdn_bsdcomp.c | 937 + drivers/isdn/i4l/isdn_common.c | 2253 ++ drivers/isdn/i4l/isdn_common.h | 47 + drivers/isdn/i4l/isdn_concap.c | 108 + drivers/isdn/i4l/isdn_concap.h | 14 + drivers/isdn/i4l/isdn_net.c | 3222 ++ drivers/isdn/i4l/isdn_net.h | 190 + drivers/isdn/i4l/isdn_ppp.c | 3020 ++ drivers/isdn/i4l/isdn_ppp.h | 43 + drivers/isdn/i4l/isdn_tty.c | 3911 +++ drivers/isdn/i4l/isdn_tty.h | 122 + drivers/isdn/i4l/isdn_ttyfax.c | 1122 + drivers/isdn/i4l/isdn_ttyfax.h | 18 + drivers/isdn/i4l/isdn_v110.c | 617 + drivers/isdn/i4l/isdn_v110.h | 29 + drivers/isdn/i4l/isdn_x25iface.c | 328 + drivers/isdn/i4l/isdn_x25iface.h | 39 + drivers/isdn/icn/Kconfig | 16 + drivers/isdn/icn/Makefile | 5 + drivers/isdn/icn/icn.c | 1691 ++ drivers/isdn/icn/icn.h | 254 + drivers/isdn/isdnloop/Makefile | 5 + drivers/isdn/isdnloop/isdnloop.c | 1554 + drivers/isdn/isdnloop/isdnloop.h | 112 + drivers/isdn/pcbit/Kconfig | 14 + drivers/isdn/pcbit/Makefile | 9 + drivers/isdn/pcbit/callbacks.c | 367 + drivers/isdn/pcbit/callbacks.h | 49 + drivers/isdn/pcbit/capi.c | 663 + drivers/isdn/pcbit/capi.h | 88 + drivers/isdn/pcbit/drv.c | 1088 + drivers/isdn/pcbit/edss1.c | 325 + drivers/isdn/pcbit/edss1.h | 99 + drivers/isdn/pcbit/layer2.c | 732 + drivers/isdn/pcbit/layer2.h | 288 + drivers/isdn/pcbit/module.c | 130 + drivers/isdn/pcbit/pcbit.h | 169 + drivers/isdn/sc/Kconfig | 12 + drivers/isdn/sc/Makefile | 10 + drivers/isdn/sc/card.h | 101 + drivers/isdn/sc/command.c | 441 + drivers/isdn/sc/debug.c | 46 + drivers/isdn/sc/debug.h | 19 + drivers/isdn/sc/event.c | 69 + drivers/isdn/sc/hardware.h | 110 + drivers/isdn/sc/includes.h | 18 + drivers/isdn/sc/init.c | 571 + drivers/isdn/sc/interrupt.c | 260 + drivers/isdn/sc/ioctl.c | 601 + drivers/isdn/sc/message.c | 241 + drivers/isdn/sc/message.h | 245 + drivers/isdn/sc/packet.c | 231 + drivers/isdn/sc/scioc.h | 105 + drivers/isdn/sc/shmem.c | 143 + drivers/isdn/sc/timer.c | 147 + drivers/macintosh/Kconfig | 198 + drivers/macintosh/Makefile | 29 + drivers/macintosh/adb-iop.c | 287 + drivers/macintosh/adb.c | 910 + drivers/macintosh/adbhid.c | 1177 + drivers/macintosh/ans-lcd.c | 186 + drivers/macintosh/apm_emu.c | 553 + drivers/macintosh/mac_hid.c | 140 + drivers/macintosh/macio-adb.c | 284 + drivers/macintosh/macio_asic.c | 636 + drivers/macintosh/macserial.c | 3036 ++ drivers/macintosh/macserial.h | 461 + drivers/macintosh/mediabay.c | 851 + drivers/macintosh/nvram.c | 131 + drivers/macintosh/smu.c | 364 + drivers/macintosh/therm_adt746x.c | 612 + drivers/macintosh/therm_pm72.c | 2080 ++ drivers/macintosh/therm_pm72.h | 297 + drivers/macintosh/therm_windtunnel.c | 531 + drivers/macintosh/via-cuda.c | 628 + drivers/macintosh/via-macii.c | 653 + drivers/macintosh/via-maciisi.c | 661 + drivers/macintosh/via-pmu.c | 3147 ++ drivers/macintosh/via-pmu68k.c | 1063 + drivers/mca/Kconfig | 14 + drivers/mca/Makefile | 7 + drivers/mca/mca-bus.c | 149 + drivers/mca/mca-device.c | 217 + drivers/mca/mca-driver.c | 50 + drivers/mca/mca-legacy.c | 348 + drivers/mca/mca-proc.c | 249 + drivers/md/Kconfig | 240 + drivers/md/Makefile | 107 + drivers/md/dm-bio-list.h | 68 + drivers/md/dm-bio-record.h | 45 + drivers/md/dm-crypt.c | 977 + drivers/md/dm-emc.c | 359 + drivers/md/dm-exception-store.c | 648 + drivers/md/dm-hw-handler.c | 216 + drivers/md/dm-hw-handler.h | 61 + drivers/md/dm-io.c | 426 + drivers/md/dm-io.h | 77 + drivers/md/dm-ioctl.c | 1416 + drivers/md/dm-linear.c | 123 + drivers/md/dm-log.c | 711 + drivers/md/dm-log.h | 130 + drivers/md/dm-mpath.c | 1302 + drivers/md/dm-mpath.h | 25 + drivers/md/dm-path-selector.c | 156 + drivers/md/dm-path-selector.h | 93 + drivers/md/dm-raid1.c | 1269 + drivers/md/dm-round-robin.c | 214 + drivers/md/dm-snap.c | 1208 + drivers/md/dm-snap.h | 161 + drivers/md/dm-stripe.c | 234 + drivers/md/dm-table.c | 950 + drivers/md/dm-target.c | 196 + drivers/md/dm-zero.c | 81 + drivers/md/dm.c | 1194 + drivers/md/dm.h | 195 + drivers/md/faulty.c | 343 + drivers/md/kcopyd.c | 687 + drivers/md/kcopyd.h | 42 + drivers/md/linear.c | 343 + drivers/md/md.c | 3766 +++ drivers/md/mktables.c | 125 + drivers/md/multipath.c | 584 + drivers/md/raid0.c | 539 + drivers/md/raid1.c | 1449 + drivers/md/raid10.c | 1787 ++ drivers/md/raid5.c | 1965 ++ drivers/md/raid6.h | 135 + drivers/md/raid6algos.c | 153 + drivers/md/raid6altivec.uc | 122 + drivers/md/raid6int.uc | 117 + drivers/md/raid6main.c | 2136 ++ drivers/md/raid6mmx.c | 150 + drivers/md/raid6recov.c | 133 + drivers/md/raid6sse1.c | 171 + drivers/md/raid6sse2.c | 270 + drivers/md/raid6test/Makefile | 58 + drivers/md/raid6test/test.c | 103 + drivers/md/raid6x86.h | 245 + drivers/md/unroll.pl | 24 + drivers/md/xor.c | 154 + drivers/media/Kconfig | 54 + drivers/media/Makefile | 5 + drivers/media/common/Kconfig | 12 + drivers/media/common/Makefile | 6 + drivers/media/common/ir-common.c | 381 + drivers/media/common/saa7146_core.c | 547 + drivers/media/common/saa7146_fops.c | 564 + drivers/media/common/saa7146_hlp.c | 1036 + drivers/media/common/saa7146_i2c.c | 421 + drivers/media/common/saa7146_vbi.c | 508 + drivers/media/common/saa7146_video.c | 1509 + drivers/media/common/saa7146_vv_ksyms.c | 12 + drivers/media/dvb/Kconfig | 47 + drivers/media/dvb/Makefile | 5 + drivers/media/dvb/b2c2/Kconfig | 26 + drivers/media/dvb/b2c2/Makefile | 6 + drivers/media/dvb/b2c2/b2c2-common.c | 214 + drivers/media/dvb/b2c2/b2c2-usb-core.c | 549 + drivers/media/dvb/b2c2/skystar2.c | 2644 ++ drivers/media/dvb/bt8xx/Kconfig | 19 + drivers/media/dvb/bt8xx/Makefile | 5 + drivers/media/dvb/bt8xx/bt878.c | 588 + drivers/media/dvb/bt8xx/bt878.h | 147 + drivers/media/dvb/bt8xx/dst.c | 1089 + drivers/media/dvb/bt8xx/dst.h | 40 + drivers/media/dvb/bt8xx/dst_priv.h | 36 + drivers/media/dvb/bt8xx/dvb-bt8xx.c | 797 + drivers/media/dvb/bt8xx/dvb-bt8xx.h | 59 + drivers/media/dvb/cinergyT2/Kconfig | 85 + drivers/media/dvb/cinergyT2/Makefile | 3 + drivers/media/dvb/cinergyT2/cinergyT2.c | 965 + drivers/media/dvb/dibusb/Kconfig | 62 + drivers/media/dvb/dibusb/Makefile | 11 + drivers/media/dvb/dibusb/dvb-dibusb-core.c | 558 + drivers/media/dvb/dibusb/dvb-dibusb-dvb.c | 185 + drivers/media/dvb/dibusb/dvb-dibusb-fe-i2c.c | 582 + .../media/dvb/dibusb/dvb-dibusb-firmware.c | 87 + drivers/media/dvb/dibusb/dvb-dibusb-remote.c | 316 + drivers/media/dvb/dibusb/dvb-dibusb-usb.c | 303 + drivers/media/dvb/dibusb/dvb-dibusb.h | 327 + drivers/media/dvb/dibusb/dvb-fe-dtt200u.c | 263 + drivers/media/dvb/dvb-core/Kconfig | 11 + drivers/media/dvb/dvb-core/Makefile | 9 + drivers/media/dvb/dvb-core/demux.h | 301 + drivers/media/dvb/dvb-core/dmxdev.c | 1137 + drivers/media/dvb/dvb-core/dmxdev.h | 128 + drivers/media/dvb/dvb-core/dvb_ca_en50221.c | 1778 ++ drivers/media/dvb/dvb-core/dvb_ca_en50221.h | 134 + drivers/media/dvb/dvb-core/dvb_demux.c | 1294 + drivers/media/dvb/dvb-core/dvb_demux.h | 146 + drivers/media/dvb/dvb-core/dvb_filter.c | 603 + drivers/media/dvb/dvb-core/dvb_filter.h | 246 + drivers/media/dvb/dvb-core/dvb_frontend.c | 915 + drivers/media/dvb/dvb-core/dvb_frontend.h | 126 + drivers/media/dvb/dvb-core/dvb_net.c | 1381 + drivers/media/dvb/dvb-core/dvb_net.h | 46 + drivers/media/dvb/dvb-core/dvb_ringbuffer.c | 270 + drivers/media/dvb/dvb-core/dvb_ringbuffer.h | 173 + drivers/media/dvb/dvb-core/dvbdev.c | 449 + drivers/media/dvb/dvb-core/dvbdev.h | 104 + drivers/media/dvb/frontends/Kconfig | 172 + drivers/media/dvb/frontends/Makefile | 30 + drivers/media/dvb/frontends/at76c651.c | 450 + drivers/media/dvb/frontends/at76c651.h | 47 + drivers/media/dvb/frontends/cx22700.c | 435 + drivers/media/dvb/frontends/cx22700.h | 41 + drivers/media/dvb/frontends/cx22702.c | 519 + drivers/media/dvb/frontends/cx22702.h | 46 + drivers/media/dvb/frontends/cx24110.c | 657 + drivers/media/dvb/frontends/cx24110.h | 45 + drivers/media/dvb/frontends/dib3000-common.c | 83 + drivers/media/dvb/frontends/dib3000-common.h | 137 + drivers/media/dvb/frontends/dib3000.h | 54 + drivers/media/dvb/frontends/dib3000mb.c | 784 + drivers/media/dvb/frontends/dib3000mb_priv.h | 467 + drivers/media/dvb/frontends/dib3000mc.c | 931 + drivers/media/dvb/frontends/dib3000mc_priv.h | 428 + drivers/media/dvb/frontends/dvb-pll.c | 168 + drivers/media/dvb/frontends/dvb-pll.h | 34 + drivers/media/dvb/frontends/dvb_dummy_fe.c | 279 + drivers/media/dvb/frontends/dvb_dummy_fe.h | 32 + drivers/media/dvb/frontends/l64781.c | 602 + drivers/media/dvb/frontends/l64781.h | 42 + drivers/media/dvb/frontends/mt312.c | 729 + drivers/media/dvb/frontends/mt312.h | 47 + drivers/media/dvb/frontends/mt312_priv.h | 162 + drivers/media/dvb/frontends/mt352.c | 610 + drivers/media/dvb/frontends/mt352.h | 72 + drivers/media/dvb/frontends/mt352_priv.h | 127 + drivers/media/dvb/frontends/nxt2002.c | 705 + drivers/media/dvb/frontends/nxt2002.h | 23 + drivers/media/dvb/frontends/nxt6000.c | 554 + drivers/media/dvb/frontends/nxt6000.h | 43 + drivers/media/dvb/frontends/nxt6000_priv.h | 265 + drivers/media/dvb/frontends/or51132.c | 628 + drivers/media/dvb/frontends/or51132.h | 48 + drivers/media/dvb/frontends/or51211.c | 631 + drivers/media/dvb/frontends/or51211.h | 44 + drivers/media/dvb/frontends/sp8870.c | 614 + drivers/media/dvb/frontends/sp8870.h | 45 + drivers/media/dvb/frontends/sp887x.c | 606 + drivers/media/dvb/frontends/sp887x.h | 29 + drivers/media/dvb/frontends/stv0297.c | 798 + drivers/media/dvb/frontends/stv0297.h | 44 + drivers/media/dvb/frontends/stv0299.c | 731 + drivers/media/dvb/frontends/stv0299.h | 104 + drivers/media/dvb/frontends/tda10021.c | 469 + drivers/media/dvb/frontends/tda10021.h | 42 + drivers/media/dvb/frontends/tda1004x.c | 1206 + drivers/media/dvb/frontends/tda1004x.h | 56 + drivers/media/dvb/frontends/tda8083.c | 456 + drivers/media/dvb/frontends/tda8083.h | 45 + drivers/media/dvb/frontends/tda80xx.c | 734 + drivers/media/dvb/frontends/tda80xx.h | 51 + drivers/media/dvb/frontends/ves1820.c | 450 + drivers/media/dvb/frontends/ves1820.h | 51 + drivers/media/dvb/frontends/ves1x93.c | 545 + drivers/media/dvb/frontends/ves1x93.h | 50 + drivers/media/dvb/ttpci/Kconfig | 134 + drivers/media/dvb/ttpci/Makefile | 23 + drivers/media/dvb/ttpci/av7110.c | 2739 ++ drivers/media/dvb/ttpci/av7110.h | 284 + drivers/media/dvb/ttpci/av7110_av.c | 1459 + drivers/media/dvb/ttpci/av7110_av.h | 29 + drivers/media/dvb/ttpci/av7110_ca.c | 390 + drivers/media/dvb/ttpci/av7110_ca.h | 14 + drivers/media/dvb/ttpci/av7110_hw.c | 1170 + drivers/media/dvb/ttpci/av7110_hw.h | 500 + drivers/media/dvb/ttpci/av7110_ipack.c | 403 + drivers/media/dvb/ttpci/av7110_ipack.h | 12 + drivers/media/dvb/ttpci/av7110_ir.c | 212 + drivers/media/dvb/ttpci/av7110_v4l.c | 771 + drivers/media/dvb/ttpci/budget-av.c | 1014 + drivers/media/dvb/ttpci/budget-ci.c | 995 + drivers/media/dvb/ttpci/budget-core.c | 480 + drivers/media/dvb/ttpci/budget-patch.c | 754 + drivers/media/dvb/ttpci/budget.c | 573 + drivers/media/dvb/ttpci/budget.h | 110 + drivers/media/dvb/ttpci/fdump.c | 44 + drivers/media/dvb/ttpci/ttpci-eeprom.c | 146 + drivers/media/dvb/ttpci/ttpci-eeprom.h | 33 + drivers/media/dvb/ttusb-budget/Kconfig | 15 + drivers/media/dvb/ttusb-budget/Makefile | 3 + .../media/dvb/ttusb-budget/dvb-ttusb-budget.c | 1610 + .../dvb/ttusb-budget/dvb-ttusb-dspbootcode.h | 1644 + drivers/media/dvb/ttusb-dec/Kconfig | 21 + drivers/media/dvb/ttusb-dec/Makefile | 3 + drivers/media/dvb/ttusb-dec/ttusb_dec.c | 1744 ++ drivers/media/dvb/ttusb-dec/ttusbdecfe.c | 255 + drivers/media/dvb/ttusb-dec/ttusbdecfe.h | 38 + drivers/media/radio/Kconfig | 354 + drivers/media/radio/Makefile | 22 + drivers/media/radio/miropcm20-radio.c | 264 + drivers/media/radio/miropcm20-rds-core.c | 210 + drivers/media/radio/miropcm20-rds-core.h | 19 + drivers/media/radio/miropcm20-rds.c | 133 + drivers/media/radio/radio-aimslab.c | 368 + drivers/media/radio/radio-aztech.c | 315 + drivers/media/radio/radio-cadet.c | 620 + drivers/media/radio/radio-gemtek-pci.c | 416 + drivers/media/radio/radio-gemtek.c | 304 + drivers/media/radio/radio-maestro.c | 332 + drivers/media/radio/radio-maxiradio.c | 349 + drivers/media/radio/radio-rtrack2.c | 266 + drivers/media/radio/radio-sf16fmi.c | 328 + drivers/media/radio/radio-sf16fmr2.c | 434 + drivers/media/radio/radio-terratec.c | 341 + drivers/media/radio/radio-trust.c | 320 + drivers/media/radio/radio-typhoon.c | 383 + drivers/media/radio/radio-zoltrix.c | 385 + drivers/media/video/Kconfig | 360 + drivers/media/video/Makefile | 56 + drivers/media/video/adv7170.c | 535 + drivers/media/video/adv7175.c | 585 + drivers/media/video/arv.c | 916 + drivers/media/video/bt819.c | 660 + drivers/media/video/bt832.c | 271 + drivers/media/video/bt832.h | 305 + drivers/media/video/bt848.h | 366 + drivers/media/video/bt856.c | 442 + drivers/media/video/btcx-risc.c | 262 + drivers/media/video/btcx-risc.h | 35 + drivers/media/video/bttv-cards.c | 4350 +++ drivers/media/video/bttv-driver.c | 4116 +++ drivers/media/video/bttv-gpio.c | 190 + drivers/media/video/bttv-i2c.c | 461 + drivers/media/video/bttv-if.c | 160 + drivers/media/video/bttv-risc.c | 802 + drivers/media/video/bttv-vbi.c | 235 + drivers/media/video/bttv.h | 338 + drivers/media/video/bttvp.h | 399 + drivers/media/video/bw-qcam.c | 1027 + drivers/media/video/bw-qcam.h | 68 + drivers/media/video/c-qcam.c | 855 + drivers/media/video/cpia.c | 4073 +++ drivers/media/video/cpia.h | 430 + drivers/media/video/cpia_pp.c | 886 + drivers/media/video/cpia_usb.c | 662 + drivers/media/video/cs8420.h | 50 + drivers/media/video/cx88/Makefile | 11 + drivers/media/video/cx88/cx88-blackbird.c | 911 + drivers/media/video/cx88/cx88-cards.c | 938 + drivers/media/video/cx88/cx88-core.c | 1239 + drivers/media/video/cx88/cx88-dvb.c | 381 + drivers/media/video/cx88/cx88-i2c.c | 213 + drivers/media/video/cx88/cx88-input.c | 396 + drivers/media/video/cx88/cx88-mpeg.c | 466 + drivers/media/video/cx88/cx88-reg.h | 787 + drivers/media/video/cx88/cx88-tvaudio.c | 1032 + drivers/media/video/cx88/cx88-vbi.c | 248 + drivers/media/video/cx88/cx88-video.c | 2277 ++ drivers/media/video/cx88/cx88.h | 551 + drivers/media/video/dpc7146.c | 401 + drivers/media/video/hexium_gemini.c | 556 + drivers/media/video/hexium_orion.c | 522 + drivers/media/video/ibmmpeg2.h | 94 + drivers/media/video/ir-kbd-gpio.c | 444 + drivers/media/video/ir-kbd-i2c.c | 492 + drivers/media/video/meye.c | 2041 ++ drivers/media/video/meye.h | 318 + drivers/media/video/msp3400.c | 1876 ++ drivers/media/video/msp3400.h | 36 + drivers/media/video/mt20xx.c | 558 + drivers/media/video/mxb.c | 1035 + drivers/media/video/mxb.h | 42 + drivers/media/video/ovcamchip/Makefile | 4 + drivers/media/video/ovcamchip/ov6x20.c | 415 + drivers/media/video/ovcamchip/ov6x30.c | 374 + drivers/media/video/ovcamchip/ov76be.c | 303 + drivers/media/video/ovcamchip/ov7x10.c | 335 + drivers/media/video/ovcamchip/ov7x20.c | 455 + .../media/video/ovcamchip/ovcamchip_core.c | 444 + .../media/video/ovcamchip/ovcamchip_priv.h | 87 + drivers/media/video/planb.c | 2303 ++ drivers/media/video/planb.h | 231 + drivers/media/video/pms.c | 1060 + drivers/media/video/saa5246a.c | 843 + drivers/media/video/saa5246a.h | 364 + drivers/media/video/saa5249.c | 725 + drivers/media/video/saa7110.c | 623 + drivers/media/video/saa7111.c | 627 + drivers/media/video/saa7114.c | 1241 + drivers/media/video/saa7121.h | 132 + drivers/media/video/saa7134/Makefile | 11 + drivers/media/video/saa7134/saa6752hs.c | 543 + drivers/media/video/saa7134/saa7134-cards.c | 2018 ++ drivers/media/video/saa7134/saa7134-core.c | 1237 + drivers/media/video/saa7134/saa7134-dvb.c | 266 + drivers/media/video/saa7134/saa7134-empress.c | 436 + drivers/media/video/saa7134/saa7134-i2c.c | 453 + drivers/media/video/saa7134/saa7134-input.c | 491 + drivers/media/video/saa7134/saa7134-oss.c | 857 + drivers/media/video/saa7134/saa7134-reg.h | 366 + drivers/media/video/saa7134/saa7134-ts.c | 243 + drivers/media/video/saa7134/saa7134-tvaudio.c | 1031 + drivers/media/video/saa7134/saa7134-vbi.c | 270 + drivers/media/video/saa7134/saa7134-video.c | 2406 ++ drivers/media/video/saa7134/saa7134.h | 618 + drivers/media/video/saa7146.h | 115 + drivers/media/video/saa7146reg.h | 283 + drivers/media/video/saa7185.c | 524 + drivers/media/video/saa7196.h | 117 + drivers/media/video/stradis.c | 2258 ++ drivers/media/video/tda7432.c | 556 + drivers/media/video/tda8290.c | 224 + drivers/media/video/tda9840.c | 254 + drivers/media/video/tda9840.h | 35 + drivers/media/video/tda9875.c | 423 + drivers/media/video/tda9887.c | 801 + drivers/media/video/tea6415c.c | 223 + drivers/media/video/tea6415c.h | 39 + drivers/media/video/tea6420.c | 200 + drivers/media/video/tea6420.h | 17 + drivers/media/video/tuner-3036.c | 220 + drivers/media/video/tuner-core.c | 443 + drivers/media/video/tuner-simple.c | 474 + drivers/media/video/tvaudio.c | 1740 ++ drivers/media/video/tvaudio.h | 14 + drivers/media/video/tveeprom.c | 587 + drivers/media/video/tvmixer.c | 367 + drivers/media/video/v4l1-compat.c | 1036 + drivers/media/video/v4l2-common.c | 282 + drivers/media/video/video-buf-dvb.c | 251 + drivers/media/video/video-buf.c | 1290 + drivers/media/video/videocodec.c | 490 + drivers/media/video/videocodec.h | 358 + drivers/media/video/videodev.c | 436 + drivers/media/video/vino.c | 347 + drivers/media/video/vino.h | 131 + drivers/media/video/vpx3220.c | 754 + drivers/media/video/w9966.c | 984 + drivers/media/video/zoran.h | 515 + drivers/media/video/zoran_card.c | 1583 + drivers/media/video/zoran_card.h | 45 + drivers/media/video/zoran_device.c | 1785 ++ drivers/media/video/zoran_device.h | 91 + drivers/media/video/zoran_driver.c | 4699 +++ drivers/media/video/zoran_procfs.c | 233 + drivers/media/video/zoran_procfs.h | 36 + drivers/media/video/zr36016.c | 532 + drivers/media/video/zr36016.h | 111 + drivers/media/video/zr36050.c | 907 + drivers/media/video/zr36050.h | 184 + drivers/media/video/zr36057.h | 168 + drivers/media/video/zr36060.c | 1016 + drivers/media/video/zr36060.h | 220 + drivers/media/video/zr36120.c | 2073 ++ drivers/media/video/zr36120.h | 279 + drivers/media/video/zr36120_i2c.c | 132 + drivers/media/video/zr36120_mem.c | 79 + drivers/media/video/zr36120_mem.h | 3 + drivers/message/Makefile | 6 + drivers/message/fusion/Kconfig | 66 + drivers/message/fusion/Makefile | 52 + drivers/message/fusion/linux_compat.h | 18 + drivers/message/fusion/lsi/fc_log.h | 89 + drivers/message/fusion/lsi/mpi.h | 746 + drivers/message/fusion/lsi/mpi_cnfg.h | 2105 ++ drivers/message/fusion/lsi/mpi_fc.h | 363 + drivers/message/fusion/lsi/mpi_history.txt | 276 + drivers/message/fusion/lsi/mpi_inb.h | 220 + drivers/message/fusion/lsi/mpi_init.h | 362 + drivers/message/fusion/lsi/mpi_ioc.h | 770 + drivers/message/fusion/lsi/mpi_lan.h | 212 + drivers/message/fusion/lsi/mpi_raid.h | 232 + drivers/message/fusion/lsi/mpi_sas.h | 181 + drivers/message/fusion/lsi/mpi_targ.h | 435 + drivers/message/fusion/lsi/mpi_tool.h | 305 + drivers/message/fusion/lsi/mpi_type.h | 86 + drivers/message/fusion/mptbase.c | 5946 ++++ drivers/message/fusion/mptbase.h | 1021 + drivers/message/fusion/mptctl.c | 2878 ++ drivers/message/fusion/mptctl.h | 484 + drivers/message/fusion/mptlan.c | 1688 ++ drivers/message/fusion/mptlan.h | 85 + drivers/message/fusion/mptscsih.c | 6021 ++++ drivers/message/fusion/mptscsih.h | 94 + drivers/message/i2o/Kconfig | 75 + drivers/message/i2o/Makefile | 13 + drivers/message/i2o/README | 98 + drivers/message/i2o/README.ioctl | 394 + drivers/message/i2o/debug.c | 481 + drivers/message/i2o/device.c | 634 + drivers/message/i2o/driver.c | 374 + drivers/message/i2o/exec-osm.c | 507 + drivers/message/i2o/i2o_block.c | 1247 + drivers/message/i2o/i2o_block.h | 99 + drivers/message/i2o/i2o_config.c | 1160 + drivers/message/i2o/i2o_lan.h | 159 + drivers/message/i2o/i2o_proc.c | 2112 ++ drivers/message/i2o/i2o_scsi.c | 830 + drivers/message/i2o/iop.c | 1327 + drivers/message/i2o/pci.c | 528 + drivers/misc/Kconfig | 33 + drivers/misc/Makefile | 7 + drivers/misc/hdpuftrs/Makefile | 1 + drivers/misc/hdpuftrs/hdpu_cpustate.c | 234 + drivers/misc/hdpuftrs/hdpu_nexus.c | 111 + drivers/misc/ibmasm/Makefile | 15 + drivers/misc/ibmasm/command.c | 175 + drivers/misc/ibmasm/dot_command.c | 146 + drivers/misc/ibmasm/dot_command.h | 78 + drivers/misc/ibmasm/event.c | 169 + drivers/misc/ibmasm/heartbeat.c | 91 + drivers/misc/ibmasm/i2o.h | 77 + drivers/misc/ibmasm/ibmasm.h | 229 + drivers/misc/ibmasm/ibmasmfs.c | 709 + drivers/misc/ibmasm/lowlevel.c | 81 + drivers/misc/ibmasm/lowlevel.h | 137 + drivers/misc/ibmasm/module.c | 228 + drivers/misc/ibmasm/r_heartbeat.c | 98 + drivers/misc/ibmasm/remote.c | 152 + drivers/misc/ibmasm/remote.h | 119 + drivers/misc/ibmasm/uart.c | 72 + drivers/mmc/Kconfig | 63 + drivers/mmc/Makefile | 22 + drivers/mmc/mmc.c | 914 + drivers/mmc/mmc.h | 16 + drivers/mmc/mmc_block.c | 509 + drivers/mmc/mmc_queue.c | 238 + drivers/mmc/mmc_queue.h | 33 + drivers/mmc/mmc_sysfs.c | 238 + drivers/mmc/mmci.c | 680 + drivers/mmc/mmci.h | 179 + drivers/mmc/pxamci.c | 610 + drivers/mmc/pxamci.h | 124 + drivers/mmc/wbsd.c | 1651 + drivers/mmc/wbsd.h | 178 + drivers/mtd/Kconfig | 265 + drivers/mtd/Makefile | 27 + drivers/mtd/afs.c | 296 + drivers/mtd/chips/Kconfig | 286 + drivers/mtd/chips/Makefile | 26 + drivers/mtd/chips/amd_flash.c | 1415 + drivers/mtd/chips/cfi_cmdset_0001.c | 2160 ++ drivers/mtd/chips/cfi_cmdset_0002.c | 1515 + drivers/mtd/chips/cfi_cmdset_0020.c | 1418 + drivers/mtd/chips/cfi_probe.c | 445 + drivers/mtd/chips/cfi_util.c | 196 + drivers/mtd/chips/chipreg.c | 111 + drivers/mtd/chips/fwh_lock.h | 107 + drivers/mtd/chips/gen_probe.c | 255 + drivers/mtd/chips/jedec.c | 934 + drivers/mtd/chips/jedec_probe.c | 2127 ++ drivers/mtd/chips/map_absent.c | 117 + drivers/mtd/chips/map_ram.c | 143 + drivers/mtd/chips/map_rom.c | 94 + drivers/mtd/chips/sharp.c | 596 + drivers/mtd/cmdlinepart.c | 367 + drivers/mtd/devices/Kconfig | 259 + drivers/mtd/devices/Makefile | 25 + drivers/mtd/devices/blkmtd.c | 823 + drivers/mtd/devices/block2mtd.c | 495 + drivers/mtd/devices/doc2000.c | 1309 + drivers/mtd/devices/doc2001.c | 888 + drivers/mtd/devices/doc2001plus.c | 1154 + drivers/mtd/devices/docecc.c | 526 + drivers/mtd/devices/docprobe.c | 355 + drivers/mtd/devices/lart.c | 711 + drivers/mtd/devices/ms02-nv.c | 326 + drivers/mtd/devices/ms02-nv.h | 107 + drivers/mtd/devices/mtdram.c | 235 + drivers/mtd/devices/phram.c | 285 + drivers/mtd/devices/pmc551.c | 843 + drivers/mtd/devices/slram.c | 357 + drivers/mtd/ftl.c | 1115 + drivers/mtd/inftlcore.c | 912 + drivers/mtd/inftlmount.c | 804 + drivers/mtd/maps/Kconfig | 663 + drivers/mtd/maps/Makefile | 73 + drivers/mtd/maps/amd76xrom.c | 332 + drivers/mtd/maps/arctic-mtd.c | 135 + drivers/mtd/maps/autcpu12-nvram.c | 127 + drivers/mtd/maps/bast-flash.c | 227 + drivers/mtd/maps/beech-mtd.c | 112 + drivers/mtd/maps/cdb89712.c | 268 + drivers/mtd/maps/ceiva.c | 350 + drivers/mtd/maps/cfi_flagadm.c | 139 + drivers/mtd/maps/cstm_mips_ixx.c | 270 + drivers/mtd/maps/db1550-flash.c | 187 + drivers/mtd/maps/db1x00-flash.c | 226 + drivers/mtd/maps/dbox2-flash.c | 126 + drivers/mtd/maps/dc21285.c | 253 + drivers/mtd/maps/dilnetpc.c | 495 + drivers/mtd/maps/dmv182.c | 149 + drivers/mtd/maps/ebony.c | 163 + drivers/mtd/maps/edb7312.c | 147 + drivers/mtd/maps/elan-104nc.c | 228 + drivers/mtd/maps/epxa10db-flash.c | 176 + drivers/mtd/maps/fortunet.c | 271 + drivers/mtd/maps/h720x-flash.c | 144 + drivers/mtd/maps/ichxrom.c | 383 + drivers/mtd/maps/impa7.c | 161 + drivers/mtd/maps/integrator-flash.c | 217 + drivers/mtd/maps/ipaq-flash.c | 464 + drivers/mtd/maps/iq80310.c | 119 + drivers/mtd/maps/ixp2000.c | 280 + drivers/mtd/maps/ixp4xx.c | 259 + drivers/mtd/maps/l440gx.c | 157 + drivers/mtd/maps/lasat.c | 102 + drivers/mtd/maps/lubbock-flash.c | 168 + drivers/mtd/maps/map_funcs.c | 44 + drivers/mtd/maps/mbx860.c | 100 + drivers/mtd/maps/mpc1211.c | 81 + drivers/mtd/maps/netsc520.c | 140 + drivers/mtd/maps/nettel.c | 496 + drivers/mtd/maps/ocelot.c | 175 + drivers/mtd/maps/ocotea.c | 154 + drivers/mtd/maps/octagon-5066.c | 248 + drivers/mtd/maps/omap-toto-flash.c | 137 + drivers/mtd/maps/pb1550-flash.c | 203 + drivers/mtd/maps/pb1xxx-flash.c | 178 + drivers/mtd/maps/pci.c | 388 + drivers/mtd/maps/pcmciamtd.c | 860 + drivers/mtd/maps/physmap.c | 125 + drivers/mtd/maps/pnc2000.c | 93 + drivers/mtd/maps/redwood.c | 169 + drivers/mtd/maps/rpxlite.c | 66 + drivers/mtd/maps/sa1100-flash.c | 453 + drivers/mtd/maps/sbc8240.c | 247 + drivers/mtd/maps/sbc_gxx.c | 239 + drivers/mtd/maps/sc520cdp.c | 304 + drivers/mtd/maps/scb2_flash.c | 256 + drivers/mtd/maps/scx200_docflash.c | 233 + drivers/mtd/maps/sharpsl-flash.c | 101 + drivers/mtd/maps/solutionengine.c | 137 + drivers/mtd/maps/sun_uflash.c | 177 + drivers/mtd/maps/tqm8xxl.c | 263 + drivers/mtd/maps/ts5500_flash.c | 141 + drivers/mtd/maps/tsunami_flash.c | 108 + drivers/mtd/maps/uclinux.c | 127 + drivers/mtd/maps/vmax301.c | 198 + drivers/mtd/maps/walnut.c | 122 + drivers/mtd/maps/wr_sbc82xx_flash.c | 181 + drivers/mtd/mtd_blkdevs.c | 478 + drivers/mtd/mtdblock.c | 394 + drivers/mtd/mtdblock_ro.c | 87 + drivers/mtd/mtdchar.c | 562 + drivers/mtd/mtdconcat.c | 897 + drivers/mtd/mtdcore.c | 419 + drivers/mtd/mtdpart.c | 599 + drivers/mtd/nand/Kconfig | 207 + drivers/mtd/nand/Makefile | 24 + drivers/mtd/nand/au1550nd.c | 477 + drivers/mtd/nand/autcpu12.c | 225 + drivers/mtd/nand/diskonchip.c | 1782 ++ drivers/mtd/nand/edb7312.c | 218 + drivers/mtd/nand/h1910.c | 208 + drivers/mtd/nand/nand_base.c | 2563 ++ drivers/mtd/nand/nand_bbt.c | 1056 + drivers/mtd/nand/nand_ecc.c | 250 + drivers/mtd/nand/nand_ids.c | 129 + drivers/mtd/nand/nandsim.c | 1613 + drivers/mtd/nand/ppchameleonevb.c | 420 + drivers/mtd/nand/rtc_from4.c | 559 + drivers/mtd/nand/s3c2410.c | 704 + drivers/mtd/nand/sharpsl.c | 260 + drivers/mtd/nand/spia.c | 173 + drivers/mtd/nand/toto.c | 205 + drivers/mtd/nand/tx4925ndfmc.c | 416 + drivers/mtd/nand/tx4938ndfmc.c | 406 + drivers/mtd/nftlcore.c | 767 + drivers/mtd/nftlmount.c | 770 + drivers/mtd/redboot.c | 235 + drivers/net/3c501.c | 940 + drivers/net/3c501.h | 93 + drivers/net/3c503.c | 747 + drivers/net/3c503.h | 91 + drivers/net/3c505.c | 1690 ++ drivers/net/3c505.h | 293 + drivers/net/3c507.c | 965 + drivers/net/3c509.c | 1622 + drivers/net/3c515.c | 1594 + drivers/net/3c523.c | 1323 + drivers/net/3c523.h | 355 + drivers/net/3c527.c | 1675 ++ drivers/net/3c527.h | 81 + drivers/net/3c59x.c | 3365 +++ drivers/net/7990.c | 681 + drivers/net/7990.h | 256 + drivers/net/8139cp.c | 1904 ++ drivers/net/8139too.c | 2666 ++ drivers/net/82596.c | 1618 + drivers/net/8390.c | 1130 + drivers/net/8390.h | 214 + drivers/net/Kconfig | 2538 ++ drivers/net/LICENSE.SRC | 15 + drivers/net/Makefile | 196 + drivers/net/Space.c | 412 + drivers/net/a2065.c | 843 + drivers/net/a2065.h | 173 + drivers/net/ac3200.c | 424 + drivers/net/acenic.c | 3271 ++ drivers/net/acenic.h | 794 + drivers/net/acenic_firmware.h | 9457 ++++++ drivers/net/amd8111e.c | 2167 ++ drivers/net/amd8111e.h | 823 + drivers/net/apne.c | 637 + drivers/net/appletalk/Kconfig | 98 + drivers/net/appletalk/Makefile | 7 + drivers/net/appletalk/cops.c | 1059 + drivers/net/appletalk/cops.h | 60 + drivers/net/appletalk/cops_ffdrv.h | 533 + drivers/net/appletalk/cops_ltdrv.h | 242 + drivers/net/appletalk/ipddp.c | 317 + drivers/net/appletalk/ipddp.h | 27 + drivers/net/appletalk/ltpc.c | 1313 + drivers/net/appletalk/ltpc.h | 73 + drivers/net/arcnet/Kconfig | 140 + drivers/net/arcnet/Makefile | 14 + drivers/net/arcnet/arc-rawmode.c | 204 + drivers/net/arcnet/arc-rimi.c | 368 + drivers/net/arcnet/arcnet.c | 1102 + drivers/net/arcnet/capmode.c | 296 + drivers/net/arcnet/com20020-isa.c | 219 + drivers/net/arcnet/com20020-pci.c | 189 + drivers/net/arcnet/com20020.c | 357 + drivers/net/arcnet/com90io.c | 435 + drivers/net/arcnet/com90xx.c | 646 + drivers/net/arcnet/rfc1051.c | 253 + drivers/net/arcnet/rfc1201.c | 549 + drivers/net/ariadne.c | 878 + drivers/net/ariadne.h | 415 + drivers/net/arm/Kconfig | 46 + drivers/net/arm/Makefile | 10 + drivers/net/arm/am79c961a.c | 750 + drivers/net/arm/am79c961a.h | 148 + drivers/net/arm/ether00.c | 1017 + drivers/net/arm/ether1.c | 1110 + drivers/net/arm/ether1.h | 281 + drivers/net/arm/ether3.c | 936 + drivers/net/arm/ether3.h | 177 + drivers/net/arm/etherh.c | 862 + drivers/net/at1700.c | 939 + drivers/net/atari_bionet.c | 674 + drivers/net/atari_pamsnet.c | 895 + drivers/net/atarilance.c | 1206 + drivers/net/atp.c | 952 + drivers/net/atp.h | 259 + drivers/net/au1000_eth.c | 2273 ++ drivers/net/au1000_eth.h | 236 + drivers/net/b44.c | 1978 ++ drivers/net/b44.h | 427 + drivers/net/bmac.c | 1708 ++ drivers/net/bmac.h | 164 + drivers/net/bonding/Makefile | 8 + drivers/net/bonding/bond_3ad.c | 2451 ++ drivers/net/bonding/bond_3ad.h | 300 + drivers/net/bonding/bond_alb.c | 1696 ++ drivers/net/bonding/bond_alb.h | 141 + drivers/net/bonding/bond_main.c | 4708 +++ drivers/net/bonding/bonding.h | 252 + drivers/net/bsd_comp.c | 1179 + drivers/net/cris/Makefile | 1 + drivers/net/cris/eth_v10.c | 1836 ++ drivers/net/cs89x0.c | 1866 ++ drivers/net/cs89x0.h | 476 + drivers/net/de600.c | 561 + drivers/net/de600.h | 169 + drivers/net/de620.c | 1047 + drivers/net/de620.h | 117 + drivers/net/declance.c | 1320 + drivers/net/defxx.c | 3463 +++ drivers/net/defxx.h | 1778 ++ drivers/net/depca.c | 2122 ++ drivers/net/depca.h | 185 + drivers/net/dgrs.c | 1617 + drivers/net/dgrs.h | 38 + drivers/net/dgrs_asstruct.h | 37 + drivers/net/dgrs_bcomm.h | 148 + drivers/net/dgrs_es4h.h | 183 + drivers/net/dgrs_ether.h | 135 + drivers/net/dgrs_firmware.c | 9966 +++++++ drivers/net/dgrs_i82596.h | 473 + drivers/net/dgrs_plx9060.h | 175 + drivers/net/dl2k.c | 1872 ++ drivers/net/dl2k.h | 711 + drivers/net/dummy.c | 152 + drivers/net/e100.c | 2374 ++ drivers/net/e1000/LICENSE | 339 + drivers/net/e1000/Makefile | 35 + drivers/net/e1000/e1000.h | 261 + drivers/net/e1000/e1000_ethtool.c | 1673 ++ drivers/net/e1000/e1000_hw.c | 5405 ++++ drivers/net/e1000/e1000_hw.h | 2144 ++ drivers/net/e1000/e1000_main.c | 3162 ++ drivers/net/e1000/e1000_osdep.h | 101 + drivers/net/e1000/e1000_param.c | 744 + drivers/net/e2100.c | 485 + drivers/net/eepro.c | 1865 ++ drivers/net/eepro100.c | 2412 ++ drivers/net/eexpress.c | 1752 ++ drivers/net/eexpress.h | 179 + drivers/net/epic100.c | 1687 ++ drivers/net/eql.c | 613 + drivers/net/es3210.c | 478 + drivers/net/eth16i.c | 1509 + drivers/net/ewrk3.c | 2007 ++ drivers/net/ewrk3.h | 322 + drivers/net/fealnx.c | 2005 ++ drivers/net/fec.c | 2259 ++ drivers/net/fec.h | 164 + drivers/net/fec_8xx/Kconfig | 14 + drivers/net/fec_8xx/Makefile | 12 + drivers/net/fec_8xx/fec_8xx-netta.c | 153 + drivers/net/fec_8xx/fec_8xx.h | 218 + drivers/net/fec_8xx/fec_main.c | 1275 + drivers/net/fec_8xx/fec_mii.c | 380 + drivers/net/fmv18x.c | 689 + drivers/net/forcedeth.c | 2232 ++ drivers/net/gianfar.c | 1849 ++ drivers/net/gianfar.h | 538 + drivers/net/gianfar_ethtool.c | 527 + drivers/net/gianfar_phy.c | 661 + drivers/net/gianfar_phy.h | 213 + drivers/net/gt64240eth.h | 402 + drivers/net/gt96100eth.c | 1569 + drivers/net/gt96100eth.h | 349 + drivers/net/hamachi.c | 2024 ++ drivers/net/hamradio/6pack.c | 1051 + drivers/net/hamradio/Kconfig | 191 + drivers/net/hamradio/Makefile | 22 + drivers/net/hamradio/baycom_epp.c | 1382 + drivers/net/hamradio/baycom_par.c | 576 + drivers/net/hamradio/baycom_ser_fdx.c | 704 + drivers/net/hamradio/baycom_ser_hdx.c | 740 + drivers/net/hamradio/bpqether.c | 643 + drivers/net/hamradio/dmascc.c | 1493 + drivers/net/hamradio/hdlcdrv.c | 817 + drivers/net/hamradio/mkiss.c | 951 + drivers/net/hamradio/mkiss.h | 62 + drivers/net/hamradio/scc.c | 2191 ++ drivers/net/hamradio/yam.c | 1218 + drivers/net/hamradio/yam1200.h | 343 + drivers/net/hamradio/yam9600.h | 343 + drivers/net/hamradio/z8530.h | 245 + drivers/net/hp-plus.c | 495 + drivers/net/hp.c | 464 + drivers/net/hp100.c | 3115 ++ drivers/net/hp100.h | 615 + drivers/net/hplance.c | 231 + drivers/net/hplance.h | 26 + drivers/net/hydra.c | 256 + drivers/net/hydra.h | 177 + drivers/net/ibm_emac/Makefile | 12 + drivers/net/ibm_emac/ibm_emac.h | 267 + drivers/net/ibm_emac/ibm_emac_core.c | 2012 ++ drivers/net/ibm_emac/ibm_emac_core.h | 146 + drivers/net/ibm_emac/ibm_emac_debug.c | 224 + drivers/net/ibm_emac/ibm_emac_mal.c | 463 + drivers/net/ibm_emac/ibm_emac_mal.h | 131 + drivers/net/ibm_emac/ibm_emac_phy.c | 298 + drivers/net/ibm_emac/ibm_emac_phy.h | 137 + drivers/net/ibm_emac/ibm_emac_rgmii.h | 65 + drivers/net/ibm_emac/ibm_emac_tah.h | 48 + drivers/net/ibm_emac/ibm_emac_zmii.h | 93 + drivers/net/ibmlana.c | 1080 + drivers/net/ibmlana.h | 279 + drivers/net/ibmveth.c | 1175 + drivers/net/ibmveth.h | 158 + drivers/net/ioc3-eth.c | 1653 ++ drivers/net/irda/Kconfig | 404 + drivers/net/irda/Makefile | 47 + drivers/net/irda/act200l-sir.c | 257 + drivers/net/irda/act200l.c | 297 + drivers/net/irda/actisys-sir.c | 246 + drivers/net/irda/actisys.c | 288 + drivers/net/irda/ali-ircc.c | 2277 ++ drivers/net/irda/ali-ircc.h | 231 + drivers/net/irda/au1000_ircc.h | 127 + drivers/net/irda/au1k_ir.c | 851 + drivers/net/irda/donauboe.c | 1789 ++ drivers/net/irda/donauboe.h | 363 + drivers/net/irda/ep7211_ir.c | 122 + drivers/net/irda/esi-sir.c | 159 + drivers/net/irda/esi.c | 149 + drivers/net/irda/girbil-sir.c | 258 + drivers/net/irda/girbil.c | 250 + drivers/net/irda/irda-usb.c | 1602 + drivers/net/irda/irda-usb.h | 163 + drivers/net/irda/irport.c | 1146 + drivers/net/irda/irport.h | 80 + drivers/net/irda/irtty-sir.c | 642 + drivers/net/irda/irtty-sir.h | 34 + drivers/net/irda/litelink-sir.c | 209 + drivers/net/irda/litelink.c | 179 + drivers/net/irda/ma600-sir.c | 264 + drivers/net/irda/ma600.c | 354 + drivers/net/irda/mcp2120-sir.c | 230 + drivers/net/irda/mcp2120.c | 240 + drivers/net/irda/nsc-ircc.c | 2222 ++ drivers/net/irda/nsc-ircc.h | 280 + drivers/net/irda/old_belkin-sir.c | 156 + drivers/net/irda/old_belkin.c | 164 + drivers/net/irda/sa1100_ir.c | 1045 + drivers/net/irda/sir-dev.h | 202 + drivers/net/irda/sir_core.c | 56 + drivers/net/irda/sir_dev.c | 677 + drivers/net/irda/sir_dongle.c | 134 + drivers/net/irda/sir_kthread.c | 502 + drivers/net/irda/smsc-ircc2.c | 2396 ++ drivers/net/irda/smsc-ircc2.h | 194 + drivers/net/irda/smsc-sio.h | 100 + drivers/net/irda/stir4200.c | 1184 + drivers/net/irda/tekram-sir.c | 232 + drivers/net/irda/tekram.c | 282 + drivers/net/irda/via-ircc.c | 1676 ++ drivers/net/irda/via-ircc.h | 853 + drivers/net/irda/vlsi_ir.c | 1912 ++ drivers/net/irda/vlsi_ir.h | 798 + drivers/net/irda/w83977af.h | 53 + drivers/net/irda/w83977af_ir.c | 1379 + drivers/net/irda/w83977af_ir.h | 199 + drivers/net/isa-skeleton.c | 724 + drivers/net/iseries_veth.c | 1422 + drivers/net/iseries_veth.h | 46 + drivers/net/ixgb/Makefile | 35 + drivers/net/ixgb/ixgb.h | 200 + drivers/net/ixgb/ixgb_ee.c | 774 + drivers/net/ixgb/ixgb_ee.h | 106 + drivers/net/ixgb/ixgb_ethtool.c | 704 + drivers/net/ixgb/ixgb_hw.c | 1202 + drivers/net/ixgb/ixgb_hw.h | 847 + drivers/net/ixgb/ixgb_ids.h | 48 + drivers/net/ixgb/ixgb_main.c | 2166 ++ drivers/net/ixgb/ixgb_osdep.h | 96 + drivers/net/ixgb/ixgb_param.c | 476 + drivers/net/jazzsonic.c | 381 + drivers/net/lance.c | 1308 + drivers/net/lasi_82596.c | 1607 + drivers/net/lne390.c | 458 + drivers/net/loopback.c | 233 + drivers/net/lp486e.c | 1352 + drivers/net/mac8390.c | 757 + drivers/net/mac89x0.c | 666 + drivers/net/mace.c | 1053 + drivers/net/mace.h | 173 + drivers/net/macmace.c | 710 + drivers/net/macsonic.c | 657 + drivers/net/meth.c | 843 + drivers/net/meth.h | 246 + drivers/net/mii.c | 398 + drivers/net/mv643xx_eth.c | 3033 ++ drivers/net/mv643xx_eth.h | 438 + drivers/net/mvme147.c | 203 + drivers/net/myri_code.h | 6287 ++++ drivers/net/myri_sbus.c | 1174 + drivers/net/myri_sbus.h | 313 + drivers/net/natsemi.c | 3273 ++ drivers/net/ne-h8300.c | 670 + drivers/net/ne.c | 862 + drivers/net/ne2.c | 829 + drivers/net/ne2k-pci.c | 712 + drivers/net/ne3210.c | 374 + drivers/net/netconsole.c | 127 + drivers/net/ni5010.c | 812 + drivers/net/ni5010.h | 144 + drivers/net/ni52.c | 1386 + drivers/net/ni52.h | 310 + drivers/net/ni65.c | 1277 + drivers/net/ni65.h | 121 + drivers/net/ns83820.c | 2222 ++ drivers/net/oaknet.c | 665 + drivers/net/pci-skeleton.c | 1977 ++ drivers/net/pcmcia/3c574_cs.c | 1307 + drivers/net/pcmcia/3c589_cs.c | 1081 + drivers/net/pcmcia/Kconfig | 132 + drivers/net/pcmcia/Makefile | 16 + drivers/net/pcmcia/axnet_cs.c | 1864 ++ drivers/net/pcmcia/com20020_cs.c | 509 + drivers/net/pcmcia/fmvj18x_cs.c | 1286 + drivers/net/pcmcia/ibmtr_cs.c | 535 + drivers/net/pcmcia/nmclan_cs.c | 1699 ++ drivers/net/pcmcia/ositech.h | 358 + drivers/net/pcmcia/pcnet_cs.c | 1659 ++ drivers/net/pcmcia/smc91c92_cs.c | 2260 ++ drivers/net/pcmcia/xirc2ps_cs.c | 2031 ++ drivers/net/pcnet32.c | 2358 ++ drivers/net/plip.c | 1427 + drivers/net/ppp_async.c | 1033 + drivers/net/ppp_deflate.c | 659 + drivers/net/ppp_generic.c | 2746 ++ drivers/net/ppp_synctty.c | 803 + drivers/net/pppoe.c | 1153 + drivers/net/pppox.c | 153 + drivers/net/r8169.c | 2523 ++ drivers/net/rrunner.c | 1756 ++ drivers/net/rrunner.h | 848 + drivers/net/s2io-regs.h | 778 + drivers/net/s2io.c | 4950 +++ drivers/net/s2io.h | 760 + drivers/net/saa9730.c | 1184 + drivers/net/saa9730.h | 371 + drivers/net/sb1000.c | 1202 + drivers/net/sb1250-mac.c | 2920 ++ drivers/net/seeq8005.c | 769 + drivers/net/seeq8005.h | 156 + drivers/net/sgiseeq.c | 773 + drivers/net/sgiseeq.h | 103 + drivers/net/shaper.c | 755 + drivers/net/sis900.c | 2370 ++ drivers/net/sis900.h | 279 + drivers/net/sk98lin/Makefile | 89 + drivers/net/sk98lin/h/lm80.h | 179 + drivers/net/sk98lin/h/skaddr.h | 333 + drivers/net/sk98lin/h/skcsum.h | 219 + drivers/net/sk98lin/h/skdebug.h | 74 + drivers/net/sk98lin/h/skdrv1st.h | 191 + drivers/net/sk98lin/h/skdrv2nd.h | 456 + drivers/net/sk98lin/h/skerror.h | 55 + drivers/net/sk98lin/h/skgedrv.h | 51 + drivers/net/sk98lin/h/skgehw.h | 2126 ++ drivers/net/sk98lin/h/skgehwt.h | 48 + drivers/net/sk98lin/h/skgei2c.h | 210 + drivers/net/sk98lin/h/skgeinit.h | 853 + drivers/net/sk98lin/h/skgepnm2.h | 334 + drivers/net/sk98lin/h/skgepnmi.h | 966 + drivers/net/sk98lin/h/skgesirq.h | 111 + drivers/net/sk98lin/h/ski2c.h | 177 + drivers/net/sk98lin/h/skqueue.h | 94 + drivers/net/sk98lin/h/skrlmt.h | 438 + drivers/net/sk98lin/h/sktimer.h | 63 + drivers/net/sk98lin/h/sktypes.h | 69 + drivers/net/sk98lin/h/skversion.h | 38 + drivers/net/sk98lin/h/skvpd.h | 271 + drivers/net/sk98lin/h/xmac_ii.h | 1579 + drivers/net/sk98lin/skaddr.c | 1773 ++ drivers/net/sk98lin/skcsum.c | 871 + drivers/net/sk98lin/skdim.c | 742 + drivers/net/sk98lin/skethtool.c | 552 + drivers/net/sk98lin/skge.c | 5186 ++++ drivers/net/sk98lin/skgehwt.c | 171 + drivers/net/sk98lin/skgeinit.c | 2151 ++ drivers/net/sk98lin/skgemib.c | 1082 + drivers/net/sk98lin/skgepnmi.c | 8359 ++++++ drivers/net/sk98lin/skgesirq.c | 2251 ++ drivers/net/sk98lin/ski2c.c | 1296 + drivers/net/sk98lin/sklm80.c | 213 + drivers/net/sk98lin/skproc.c | 265 + drivers/net/sk98lin/skqueue.c | 179 + drivers/net/sk98lin/skrlmt.c | 3258 ++ drivers/net/sk98lin/sktimer.c | 250 + drivers/net/sk98lin/skvpd.c | 1197 + drivers/net/sk98lin/skxmac2.c | 4607 +++ drivers/net/sk_g16.c | 2066 ++ drivers/net/sk_g16.h | 165 + drivers/net/sk_mca.c | 1217 + drivers/net/sk_mca.h | 172 + drivers/net/skfp/Makefile | 20 + drivers/net/skfp/can.c | 83 + drivers/net/skfp/cfm.c | 627 + drivers/net/skfp/drvfbi.c | 1529 + drivers/net/skfp/ecm.c | 536 + drivers/net/skfp/ess.c | 720 + drivers/net/skfp/fplustm.c | 1561 + drivers/net/skfp/h/cmtdef.h | 763 + drivers/net/skfp/h/fddi.h | 69 + drivers/net/skfp/h/fddimib.h | 349 + drivers/net/skfp/h/fplustm.h | 274 + drivers/net/skfp/h/hwmtm.h | 424 + drivers/net/skfp/h/lnkstat.h | 84 + drivers/net/skfp/h/mbuf.h | 54 + drivers/net/skfp/h/osdef1st.h | 123 + drivers/net/skfp/h/sba.h | 142 + drivers/net/skfp/h/sba_def.h | 76 + drivers/net/skfp/h/skfbi.h | 1919 ++ drivers/net/skfp/h/skfbiinc.h | 123 + drivers/net/skfp/h/smc.h | 471 + drivers/net/skfp/h/smt.h | 882 + drivers/net/skfp/h/smt_p.h | 326 + drivers/net/skfp/h/smtstate.h | 106 + drivers/net/skfp/h/supern_2.h | 1059 + drivers/net/skfp/h/targethw.h | 169 + drivers/net/skfp/h/targetos.h | 165 + drivers/net/skfp/h/types.h | 39 + drivers/net/skfp/hwmtm.c | 2219 ++ drivers/net/skfp/hwt.c | 305 + drivers/net/skfp/lnkstat.c | 204 + drivers/net/skfp/pcmplc.c | 2024 ++ drivers/net/skfp/pmf.c | 1671 ++ drivers/net/skfp/queue.c | 173 + drivers/net/skfp/rmt.c | 654 + drivers/net/skfp/skfddi.c | 2293 ++ drivers/net/skfp/smt.c | 2097 ++ drivers/net/skfp/smtdef.c | 360 + drivers/net/skfp/smtinit.c | 125 + drivers/net/skfp/smtparse.c | 467 + drivers/net/skfp/smttimer.c | 156 + drivers/net/skfp/srf.c | 429 + drivers/net/slhc.c | 768 + drivers/net/slip.c | 1522 + drivers/net/slip.h | 121 + drivers/net/smc-mca.c | 508 + drivers/net/smc-mca.h | 61 + drivers/net/smc-ultra.c | 615 + drivers/net/smc-ultra32.c | 454 + drivers/net/smc9194.c | 1631 + drivers/net/smc9194.h | 241 + drivers/net/smc91x.c | 2343 ++ drivers/net/smc91x.h | 1032 + drivers/net/sonic.c | 616 + drivers/net/sonic.h | 483 + drivers/net/starfire.c | 2218 ++ drivers/net/starfire_firmware.pl | 31 + drivers/net/stnic.c | 320 + drivers/net/sun3_82586.c | 1211 + drivers/net/sun3_82586.h | 318 + drivers/net/sun3lance.c | 965 + drivers/net/sunbmac.c | 1324 + drivers/net/sunbmac.h | 356 + drivers/net/sundance.c | 1785 ++ drivers/net/sungem.c | 3204 ++ drivers/net/sungem.h | 1051 + drivers/net/sungem_phy.c | 872 + drivers/net/sungem_phy.h | 117 + drivers/net/sunhme.c | 3426 +++ drivers/net/sunhme.h | 515 + drivers/net/sunlance.c | 1614 + drivers/net/sunqe.c | 1043 + drivers/net/sunqe.h | 351 + drivers/net/tc35815.c | 1745 ++ drivers/net/tg3.c | 9083 ++++++ drivers/net/tg3.h | 2206 ++ drivers/net/tlan.c | 3304 ++ drivers/net/tlan.h | 540 + drivers/net/tokenring/3c359.c | 1830 ++ drivers/net/tokenring/3c359.h | 290 + drivers/net/tokenring/3c359_microcode.h | 1581 + drivers/net/tokenring/Kconfig | 186 + drivers/net/tokenring/Makefile | 15 + drivers/net/tokenring/abyss.c | 481 + drivers/net/tokenring/abyss.h | 58 + drivers/net/tokenring/ibmtr.c | 1987 ++ drivers/net/tokenring/lanstreamer.c | 2011 ++ drivers/net/tokenring/lanstreamer.h | 358 + drivers/net/tokenring/madgemc.c | 800 + drivers/net/tokenring/madgemc.h | 70 + drivers/net/tokenring/olympic.c | 1786 ++ drivers/net/tokenring/olympic.h | 322 + drivers/net/tokenring/proteon.c | 432 + drivers/net/tokenring/skisa.c | 442 + drivers/net/tokenring/smctr.c | 5742 ++++ drivers/net/tokenring/smctr.h | 1588 + drivers/net/tokenring/smctr_firmware.h | 979 + drivers/net/tokenring/tms380tr.c | 2410 ++ drivers/net/tokenring/tms380tr.h | 1141 + drivers/net/tokenring/tmspci.c | 267 + drivers/net/tulip/21142.c | 245 + drivers/net/tulip/Kconfig | 166 + drivers/net/tulip/Makefile | 17 + drivers/net/tulip/de2104x.c | 2187 ++ drivers/net/tulip/de4x5.c | 5778 ++++ drivers/net/tulip/de4x5.h | 1029 + drivers/net/tulip/dmfe.c | 2066 ++ drivers/net/tulip/eeprom.c | 357 + drivers/net/tulip/interrupt.c | 786 + drivers/net/tulip/media.c | 562 + drivers/net/tulip/pnic.c | 172 + drivers/net/tulip/pnic2.c | 407 + drivers/net/tulip/timer.c | 175 + drivers/net/tulip/tulip.h | 493 + drivers/net/tulip/tulip_core.c | 1861 ++ drivers/net/tulip/winbond-840.c | 1716 ++ drivers/net/tulip/xircom_cb.c | 1277 + drivers/net/tulip/xircom_tulip_cb.c | 1748 ++ drivers/net/tun.c | 883 + drivers/net/typhoon-firmware.h | 3778 +++ drivers/net/typhoon.c | 2673 ++ drivers/net/typhoon.h | 619 + drivers/net/via-rhine.c | 2035 ++ drivers/net/via-velocity.c | 3303 ++ drivers/net/via-velocity.h | 1879 ++ drivers/net/wan/Kconfig | 607 + drivers/net/wan/Makefile | 86 + drivers/net/wan/c101.c | 446 + drivers/net/wan/cosa.c | 2100 ++ drivers/net/wan/cosa.h | 117 + drivers/net/wan/cycx_drv.c | 586 + drivers/net/wan/cycx_main.c | 351 + drivers/net/wan/cycx_x25.c | 1609 + drivers/net/wan/dlci.c | 566 + drivers/net/wan/dscc4.c | 2074 ++ drivers/net/wan/farsync.c | 2712 ++ drivers/net/wan/farsync.h | 357 + drivers/net/wan/hd64570.h | 241 + drivers/net/wan/hd64572.h | 527 + drivers/net/wan/hd6457x.c | 853 + drivers/net/wan/hdlc_cisco.c | 330 + drivers/net/wan/hdlc_fr.c | 1237 + drivers/net/wan/hdlc_generic.c | 343 + drivers/net/wan/hdlc_ppp.c | 115 + drivers/net/wan/hdlc_raw.c | 90 + drivers/net/wan/hdlc_raw_eth.c | 107 + drivers/net/wan/hdlc_x25.c | 219 + drivers/net/wan/hostess_sv11.c | 420 + drivers/net/wan/lapbether.c | 465 + drivers/net/wan/lmc/Makefile | 17 + drivers/net/wan/lmc/lmc.h | 33 + drivers/net/wan/lmc/lmc_debug.c | 85 + drivers/net/wan/lmc/lmc_debug.h | 52 + drivers/net/wan/lmc/lmc_ioctl.h | 257 + drivers/net/wan/lmc/lmc_main.c | 2201 ++ drivers/net/wan/lmc/lmc_media.c | 1246 + drivers/net/wan/lmc/lmc_media.h | 65 + drivers/net/wan/lmc/lmc_prot.h | 15 + drivers/net/wan/lmc/lmc_proto.c | 249 + drivers/net/wan/lmc/lmc_proto.h | 16 + drivers/net/wan/lmc/lmc_var.h | 570 + drivers/net/wan/n2.c | 562 + drivers/net/wan/pc300-falc-lh.h | 1238 + drivers/net/wan/pc300.h | 497 + drivers/net/wan/pc300_drv.c | 3692 +++ drivers/net/wan/pc300_tty.c | 1095 + drivers/net/wan/pci200syn.c | 488 + drivers/net/wan/sbni.c | 1735 ++ drivers/net/wan/sbni.h | 141 + drivers/net/wan/sdla.c | 1676 ++ drivers/net/wan/sdla_chdlc.c | 4433 +++ drivers/net/wan/sdla_fr.c | 5068 ++++ drivers/net/wan/sdla_ft1.c | 344 + drivers/net/wan/sdla_ppp.c | 3429 +++ drivers/net/wan/sdla_x25.c | 5496 ++++ drivers/net/wan/sdladrv.c | 2318 ++ drivers/net/wan/sdlamain.c | 1341 + drivers/net/wan/sealevel.c | 469 + drivers/net/wan/syncppp.c | 1488 + drivers/net/wan/wanpipe_multppp.c | 2357 ++ drivers/net/wan/wanxl.c | 839 + drivers/net/wan/wanxl.h | 152 + drivers/net/wan/wanxlfw.S | 895 + drivers/net/wan/wanxlfw.inc_shipped | 158 + drivers/net/wan/x25_asy.c | 844 + drivers/net/wan/x25_asy.h | 50 + drivers/net/wan/z85230.c | 1851 ++ drivers/net/wan/z85230.h | 449 + drivers/net/wd.c | 559 + drivers/net/wireless/Kconfig | 365 + drivers/net/wireless/Makefile | 33 + drivers/net/wireless/README | 25 + drivers/net/wireless/airo.c | 7667 +++++ drivers/net/wireless/airo_cs.c | 622 + drivers/net/wireless/airport.c | 304 + drivers/net/wireless/arlan-main.c | 1896 ++ drivers/net/wireless/arlan-proc.c | 1262 + drivers/net/wireless/arlan.h | 541 + drivers/net/wireless/atmel.c | 4272 +++ drivers/net/wireless/atmel.h | 43 + drivers/net/wireless/atmel_cs.c | 708 + drivers/net/wireless/atmel_pci.c | 89 + drivers/net/wireless/hermes.c | 554 + drivers/net/wireless/hermes.h | 481 + drivers/net/wireless/hermes_rid.h | 148 + drivers/net/wireless/i82586.h | 413 + drivers/net/wireless/i82593.h | 224 + drivers/net/wireless/ieee802_11.h | 78 + drivers/net/wireless/netwave_cs.c | 1736 ++ drivers/net/wireless/orinoco.c | 4243 +++ drivers/net/wireless/orinoco.h | 153 + drivers/net/wireless/orinoco_cs.c | 636 + drivers/net/wireless/orinoco_pci.c | 417 + drivers/net/wireless/orinoco_plx.c | 419 + drivers/net/wireless/orinoco_tmd.c | 276 + drivers/net/wireless/prism54/Makefile | 8 + drivers/net/wireless/prism54/isl_38xx.c | 260 + drivers/net/wireless/prism54/isl_38xx.h | 173 + drivers/net/wireless/prism54/isl_ioctl.c | 2750 ++ drivers/net/wireless/prism54/isl_ioctl.h | 51 + drivers/net/wireless/prism54/isl_oid.h | 507 + drivers/net/wireless/prism54/islpci_dev.c | 956 + drivers/net/wireless/prism54/islpci_dev.h | 216 + drivers/net/wireless/prism54/islpci_eth.c | 519 + drivers/net/wireless/prism54/islpci_eth.h | 73 + drivers/net/wireless/prism54/islpci_hotplug.c | 339 + drivers/net/wireless/prism54/islpci_mgt.c | 513 + drivers/net/wireless/prism54/islpci_mgt.h | 145 + drivers/net/wireless/prism54/oid_mgt.c | 907 + drivers/net/wireless/prism54/oid_mgt.h | 59 + drivers/net/wireless/prism54/prismcompat.h | 44 + drivers/net/wireless/ray_cs.c | 2957 ++ drivers/net/wireless/ray_cs.h | 78 + drivers/net/wireless/rayctl.h | 732 + drivers/net/wireless/strip.c | 2843 ++ drivers/net/wireless/todo.txt | 15 + drivers/net/wireless/wavelan.c | 4452 +++ drivers/net/wireless/wavelan.h | 370 + drivers/net/wireless/wavelan.p.h | 716 + drivers/net/wireless/wavelan_cs.c | 4914 +++ drivers/net/wireless/wavelan_cs.h | 386 + drivers/net/wireless/wavelan_cs.p.h | 813 + drivers/net/wireless/wl3501.h | 614 + drivers/net/wireless/wl3501_cs.c | 2270 ++ drivers/net/yellowfin.c | 1499 + drivers/net/znet.c | 948 + drivers/net/zorro8390.c | 439 + drivers/nubus/Makefile | 8 + drivers/nubus/nubus.c | 1042 + drivers/nubus/nubus_syms.c | 29 + drivers/nubus/proc.c | 174 + drivers/oprofile/buffer_sync.c | 547 + drivers/oprofile/buffer_sync.h | 22 + drivers/oprofile/cpu_buffer.c | 307 + drivers/oprofile/cpu_buffer.h | 57 + drivers/oprofile/event_buffer.c | 187 + drivers/oprofile/event_buffer.h | 48 + drivers/oprofile/oprof.c | 188 + drivers/oprofile/oprof.h | 39 + drivers/oprofile/oprofile_files.c | 135 + drivers/oprofile/oprofile_stats.c | 74 + drivers/oprofile/oprofile_stats.h | 33 + drivers/oprofile/oprofilefs.c | 299 + drivers/oprofile/timer_int.c | 46 + drivers/parisc/Kconfig | 169 + drivers/parisc/Makefile | 27 + drivers/parisc/README.dino | 28 + drivers/parisc/asp.c | 132 + drivers/parisc/ccio-dma.c | 1593 + drivers/parisc/ccio-rm-dma.c | 201 + drivers/parisc/dino.c | 1044 + drivers/parisc/eisa.c | 464 + drivers/parisc/eisa_eeprom.c | 134 + drivers/parisc/eisa_enumerator.c | 521 + drivers/parisc/gsc.c | 245 + drivers/parisc/gsc.h | 47 + drivers/parisc/hppb.c | 109 + drivers/parisc/iommu-helpers.h | 171 + drivers/parisc/iosapic.c | 921 + drivers/parisc/iosapic_private.h | 188 + drivers/parisc/lasi.c | 240 + drivers/parisc/lba_pci.c | 1649 + drivers/parisc/led.c | 760 + drivers/parisc/pdc_stable.c | 735 + drivers/parisc/power.c | 278 + drivers/parisc/sba_iommu.c | 2165 ++ drivers/parisc/superio.c | 508 + drivers/parisc/wax.c | 140 + drivers/parport/BUGS-parport | 9 + drivers/parport/ChangeLog | 583 + drivers/parport/Kconfig | 145 + drivers/parport/Makefile | 19 + drivers/parport/TODO-parport | 20 + drivers/parport/daisy.c | 512 + drivers/parport/ieee1284.c | 819 + drivers/parport/ieee1284_ops.c | 921 + drivers/parport/multiface.h | 20 + drivers/parport/parport_amiga.c | 293 + drivers/parport/parport_arc.c | 139 + drivers/parport/parport_atari.c | 240 + drivers/parport/parport_cs.c | 397 + drivers/parport/parport_gsc.c | 437 + drivers/parport/parport_gsc.h | 222 + drivers/parport/parport_mfc3.c | 404 + drivers/parport/parport_pc.c | 3415 +++ drivers/parport/parport_serial.c | 485 + drivers/parport/parport_sunbpp.c | 412 + drivers/parport/probe.c | 224 + drivers/parport/procfs.c | 533 + drivers/parport/share.c | 1014 + drivers/pci/Kconfig | 59 + drivers/pci/Makefile | 65 + drivers/pci/access.c | 62 + drivers/pci/bus.c | 151 + drivers/pci/gen-devlist.c | 132 + drivers/pci/hotplug.c | 163 + drivers/pci/hotplug/Kconfig | 197 + drivers/pci/hotplug/Makefile | 74 + drivers/pci/hotplug/acpiphp.h | 268 + drivers/pci/hotplug/acpiphp_core.c | 453 + drivers/pci/hotplug/acpiphp_glue.c | 1344 + drivers/pci/hotplug/acpiphp_ibm.c | 499 + drivers/pci/hotplug/acpiphp_pci.c | 449 + drivers/pci/hotplug/acpiphp_res.c | 700 + drivers/pci/hotplug/cpci_hotplug.h | 96 + drivers/pci/hotplug/cpci_hotplug_core.c | 792 + drivers/pci/hotplug/cpci_hotplug_pci.c | 661 + drivers/pci/hotplug/cpcihp_generic.c | 223 + drivers/pci/hotplug/cpcihp_zt5550.c | 305 + drivers/pci/hotplug/cpcihp_zt5550.h | 79 + drivers/pci/hotplug/cpqphp.h | 721 + drivers/pci/hotplug/cpqphp_core.c | 1509 + drivers/pci/hotplug/cpqphp_ctrl.c | 3096 ++ drivers/pci/hotplug/cpqphp_nvram.c | 666 + drivers/pci/hotplug/cpqphp_nvram.h | 57 + drivers/pci/hotplug/cpqphp_pci.c | 1569 + drivers/pci/hotplug/cpqphp_sysfs.c | 143 + drivers/pci/hotplug/fakephp.c | 358 + drivers/pci/hotplug/ibmphp.h | 763 + drivers/pci/hotplug/ibmphp_core.c | 1422 + drivers/pci/hotplug/ibmphp_ebda.c | 1275 + drivers/pci/hotplug/ibmphp_hpc.c | 1161 + drivers/pci/hotplug/ibmphp_pci.c | 1747 ++ drivers/pci/hotplug/ibmphp_res.c | 2156 ++ drivers/pci/hotplug/pci_hotplug.h | 180 + drivers/pci/hotplug/pci_hotplug_core.c | 715 + drivers/pci/hotplug/pciehp.h | 352 + drivers/pci/hotplug/pciehp_core.c | 662 + drivers/pci/hotplug/pciehp_ctrl.c | 2706 ++ drivers/pci/hotplug/pciehp_hpc.c | 1501 + drivers/pci/hotplug/pciehp_pci.c | 827 + drivers/pci/hotplug/pciehprm.h | 52 + drivers/pci/hotplug/pciehprm_acpi.c | 1737 ++ drivers/pci/hotplug/pciehprm_nonacpi.c | 501 + drivers/pci/hotplug/pciehprm_nonacpi.h | 56 + drivers/pci/hotplug/pcihp_skeleton.c | 375 + drivers/pci/hotplug/rpadlpar.h | 24 + drivers/pci/hotplug/rpadlpar_core.c | 503 + drivers/pci/hotplug/rpadlpar_sysfs.c | 151 + drivers/pci/hotplug/rpaphp.h | 138 + drivers/pci/hotplug/rpaphp_core.c | 536 + drivers/pci/hotplug/rpaphp_pci.c | 538 + drivers/pci/hotplug/rpaphp_slot.c | 267 + drivers/pci/hotplug/rpaphp_vio.c | 129 + drivers/pci/hotplug/shpchp.h | 463 + drivers/pci/hotplug/shpchp_core.c | 630 + drivers/pci/hotplug/shpchp_ctrl.c | 2848 ++ drivers/pci/hotplug/shpchp_hpc.c | 1620 + drivers/pci/hotplug/shpchp_pci.c | 810 + drivers/pci/hotplug/shpchp_sysfs.c | 143 + drivers/pci/hotplug/shpchprm.h | 55 + drivers/pci/hotplug/shpchprm_acpi.c | 1713 ++ drivers/pci/hotplug/shpchprm_legacy.c | 439 + drivers/pci/hotplug/shpchprm_legacy.h | 113 + drivers/pci/hotplug/shpchprm_nonacpi.c | 434 + drivers/pci/hotplug/shpchprm_nonacpi.h | 56 + drivers/pci/msi.c | 1151 + drivers/pci/msi.h | 159 + drivers/pci/names.c | 137 + drivers/pci/pci-acpi.c | 209 + drivers/pci/pci-driver.c | 531 + drivers/pci/pci-sysfs.c | 490 + drivers/pci/pci.c | 837 + drivers/pci/pci.h | 96 + drivers/pci/pci.ids | 10179 +++++++ drivers/pci/pcie/Kconfig | 36 + drivers/pci/pcie/Makefile | 7 + drivers/pci/pcie/portdrv.h | 41 + drivers/pci/pcie/portdrv_bus.c | 77 + drivers/pci/pcie/portdrv_core.c | 434 + drivers/pci/pcie/portdrv_pci.c | 122 + drivers/pci/probe.c | 939 + drivers/pci/proc.c | 619 + drivers/pci/quirks.c | 1352 + drivers/pci/remove.c | 118 + drivers/pci/rom.c | 227 + drivers/pci/search.c | 388 + drivers/pci/setup-bus.c | 552 + drivers/pci/setup-irq.c | 64 + drivers/pci/setup-res.c | 200 + drivers/pci/syscall.c | 145 + drivers/pcmcia/Kconfig | 203 + drivers/pcmcia/Makefile | 65 + drivers/pcmcia/au1000_db1x00.c | 288 + drivers/pcmcia/au1000_generic.c | 579 + drivers/pcmcia/au1000_generic.h | 150 + drivers/pcmcia/au1000_pb1x00.c | 419 + drivers/pcmcia/au1000_xxs1500.c | 191 + drivers/pcmcia/cardbus.c | 247 + drivers/pcmcia/cirrus.h | 157 + drivers/pcmcia/cistpl.c | 1490 + drivers/pcmcia/cs.c | 1917 ++ drivers/pcmcia/cs_internal.h | 185 + drivers/pcmcia/ds.c | 1659 ++ drivers/pcmcia/hd64465_ss.c | 968 + drivers/pcmcia/i82092.c | 799 + drivers/pcmcia/i82092aa.h | 39 + drivers/pcmcia/i82365.c | 1454 + drivers/pcmcia/i82365.h | 135 + drivers/pcmcia/m32r_cfc.c | 873 + drivers/pcmcia/m32r_cfc.h | 83 + drivers/pcmcia/m32r_pcc.c | 811 + drivers/pcmcia/m32r_pcc.h | 65 + drivers/pcmcia/o2micro.h | 164 + drivers/pcmcia/pcmcia_compat.c | 125 + drivers/pcmcia/pd6729.c | 871 + drivers/pcmcia/pd6729.h | 30 + drivers/pcmcia/pxa2xx_base.c | 254 + drivers/pcmcia/pxa2xx_base.h | 3 + drivers/pcmcia/pxa2xx_lubbock.c | 269 + drivers/pcmcia/pxa2xx_mainstone.c | 202 + drivers/pcmcia/pxa2xx_sharpsl.c | 264 + drivers/pcmcia/ricoh.h | 206 + drivers/pcmcia/rsrc_mgr.c | 163 + drivers/pcmcia/rsrc_nonstatic.c | 985 + drivers/pcmcia/sa1100_assabet.c | 141 + drivers/pcmcia/sa1100_badge4.c | 169 + drivers/pcmcia/sa1100_cerf.c | 110 + drivers/pcmcia/sa1100_generic.c | 131 + drivers/pcmcia/sa1100_generic.h | 24 + drivers/pcmcia/sa1100_h3600.c | 142 + drivers/pcmcia/sa1100_jornada720.c | 124 + drivers/pcmcia/sa1100_neponset.c | 143 + drivers/pcmcia/sa1100_shannon.c | 125 + drivers/pcmcia/sa1100_simpad.c | 135 + drivers/pcmcia/sa1111_generic.c | 196 + drivers/pcmcia/sa1111_generic.h | 15 + drivers/pcmcia/sa11xx_base.c | 200 + drivers/pcmcia/sa11xx_base.h | 123 + drivers/pcmcia/soc_common.c | 850 + drivers/pcmcia/soc_common.h | 194 + drivers/pcmcia/socket_sysfs.c | 228 + drivers/pcmcia/tcic.c | 903 + drivers/pcmcia/tcic.h | 266 + drivers/pcmcia/ti113x.h | 662 + drivers/pcmcia/topic.h | 140 + drivers/pcmcia/vg468.h | 106 + drivers/pcmcia/vrc4171_card.c | 846 + drivers/pcmcia/vrc4173_cardu.c | 617 + drivers/pcmcia/vrc4173_cardu.h | 247 + drivers/pcmcia/yenta_socket.c | 1160 + drivers/pcmcia/yenta_socket.h | 127 + drivers/pnp/Kconfig | 41 + drivers/pnp/Makefile | 9 + drivers/pnp/base.h | 13 + drivers/pnp/card.c | 391 + drivers/pnp/core.c | 180 + drivers/pnp/driver.c | 222 + drivers/pnp/interface.c | 468 + drivers/pnp/isapnp/Kconfig | 11 + drivers/pnp/isapnp/Makefile | 7 + drivers/pnp/isapnp/compat.c | 91 + drivers/pnp/isapnp/core.c | 1156 + drivers/pnp/isapnp/proc.c | 171 + drivers/pnp/manager.c | 566 + drivers/pnp/pnpacpi/Kconfig | 18 + drivers/pnp/pnpacpi/Makefile | 5 + drivers/pnp/pnpacpi/core.c | 269 + drivers/pnp/pnpacpi/pnpacpi.h | 13 + drivers/pnp/pnpacpi/rsparser.c | 821 + drivers/pnp/pnpbios/Kconfig | 42 + drivers/pnp/pnpbios/Makefile | 7 + drivers/pnp/pnpbios/bioscalls.c | 544 + drivers/pnp/pnpbios/core.c | 644 + drivers/pnp/pnpbios/pnpbios.h | 47 + drivers/pnp/pnpbios/proc.c | 292 + drivers/pnp/pnpbios/rsparser.c | 795 + drivers/pnp/quirks.c | 152 + drivers/pnp/resource.c | 542 + drivers/pnp/support.c | 40 + drivers/pnp/system.c | 111 + drivers/s390/Kconfig | 209 + drivers/s390/Makefile | 9 + drivers/s390/block/Kconfig | 68 + drivers/s390/block/Makefile | 17 + drivers/s390/block/dasd.c | 2065 ++ drivers/s390/block/dasd_3370_erp.c | 104 + drivers/s390/block/dasd_3990_erp.c | 2742 ++ drivers/s390/block/dasd_9336_erp.c | 61 + drivers/s390/block/dasd_9343_erp.c | 22 + drivers/s390/block/dasd_cmb.c | 145 + drivers/s390/block/dasd_devmap.c | 772 + drivers/s390/block/dasd_diag.c | 541 + drivers/s390/block/dasd_diag.h | 66 + drivers/s390/block/dasd_eckd.c | 1722 ++ drivers/s390/block/dasd_eckd.h | 346 + drivers/s390/block/dasd_erp.c | 254 + drivers/s390/block/dasd_fba.c | 607 + drivers/s390/block/dasd_fba.h | 73 + drivers/s390/block/dasd_genhd.c | 185 + drivers/s390/block/dasd_int.h | 576 + drivers/s390/block/dasd_ioctl.c | 554 + drivers/s390/block/dasd_proc.c | 319 + drivers/s390/block/dcssblk.c | 775 + drivers/s390/block/xpram.c | 539 + drivers/s390/char/Makefile | 28 + drivers/s390/char/con3215.c | 1192 + drivers/s390/char/con3270.c | 638 + drivers/s390/char/ctrlchar.c | 75 + drivers/s390/char/ctrlchar.h | 20 + drivers/s390/char/defkeymap.c | 156 + drivers/s390/char/defkeymap.map | 191 + drivers/s390/char/fs3270.c | 373 + drivers/s390/char/keyboard.c | 519 + drivers/s390/char/keyboard.h | 57 + drivers/s390/char/monreader.c | 662 + drivers/s390/char/raw3270.c | 1335 + drivers/s390/char/raw3270.h | 274 + drivers/s390/char/sclp.c | 915 + drivers/s390/char/sclp.h | 159 + drivers/s390/char/sclp_con.c | 252 + drivers/s390/char/sclp_cpi.c | 254 + drivers/s390/char/sclp_quiesce.c | 99 + drivers/s390/char/sclp_rw.c | 471 + drivers/s390/char/sclp_rw.h | 96 + drivers/s390/char/sclp_tty.c | 813 + drivers/s390/char/sclp_tty.h | 71 + drivers/s390/char/sclp_vt220.c | 785 + drivers/s390/char/tape.h | 384 + drivers/s390/char/tape_34xx.c | 1385 + drivers/s390/char/tape_block.c | 492 + drivers/s390/char/tape_char.c | 492 + drivers/s390/char/tape_class.c | 126 + drivers/s390/char/tape_class.h | 61 + drivers/s390/char/tape_core.c | 1242 + drivers/s390/char/tape_proc.c | 145 + drivers/s390/char/tape_std.c | 765 + drivers/s390/char/tape_std.h | 152 + drivers/s390/char/tty3270.c | 1836 ++ drivers/s390/char/vmlogrdr.c | 920 + drivers/s390/char/vmwatchdog.c | 292 + drivers/s390/cio/Makefile | 10 + drivers/s390/cio/airq.c | 87 + drivers/s390/cio/airq.h | 10 + drivers/s390/cio/blacklist.c | 351 + drivers/s390/cio/blacklist.h | 6 + drivers/s390/cio/ccwgroup.c | 482 + drivers/s390/cio/chsc.c | 1114 + drivers/s390/cio/chsc.h | 66 + drivers/s390/cio/cio.c | 860 + drivers/s390/cio/cio.h | 143 + drivers/s390/cio/cio_debug.h | 32 + drivers/s390/cio/cmf.c | 1042 + drivers/s390/cio/css.c | 575 + drivers/s390/cio/css.h | 155 + drivers/s390/cio/device.c | 1135 + drivers/s390/cio/device.h | 115 + drivers/s390/cio/device_fsm.c | 1250 + drivers/s390/cio/device_id.c | 355 + drivers/s390/cio/device_ops.c | 603 + drivers/s390/cio/device_pgid.c | 448 + drivers/s390/cio/device_status.c | 385 + drivers/s390/cio/ioasm.h | 228 + drivers/s390/cio/qdio.c | 3468 +++ drivers/s390/cio/qdio.h | 648 + drivers/s390/crypto/Makefile | 6 + drivers/s390/crypto/z90common.h | 168 + drivers/s390/crypto/z90crypt.h | 258 + drivers/s390/crypto/z90hardware.c | 2243 ++ drivers/s390/crypto/z90main.c | 3563 +++ drivers/s390/ebcdic.c | 246 + drivers/s390/net/Kconfig | 108 + drivers/s390/net/Makefile | 14 + drivers/s390/net/claw.c | 4447 +++ drivers/s390/net/claw.h | 335 + drivers/s390/net/ctcdbug.c | 83 + drivers/s390/net/ctcdbug.h | 123 + drivers/s390/net/ctcmain.c | 3304 ++ drivers/s390/net/ctctty.c | 1276 + drivers/s390/net/ctctty.h | 37 + drivers/s390/net/cu3088.c | 166 + drivers/s390/net/cu3088.h | 41 + drivers/s390/net/fsm.c | 220 + drivers/s390/net/fsm.h | 265 + drivers/s390/net/iucv.c | 2567 ++ drivers/s390/net/iucv.h | 849 + drivers/s390/net/lcs.c | 2347 ++ drivers/s390/net/lcs.h | 321 + drivers/s390/net/netiucv.c | 2149 ++ drivers/s390/net/qeth.h | 1162 + drivers/s390/net/qeth_eddp.c | 643 + drivers/s390/net/qeth_eddp.h | 85 + drivers/s390/net/qeth_fs.h | 163 + drivers/s390/net/qeth_main.c | 8236 +++++ drivers/s390/net/qeth_mpc.c | 168 + drivers/s390/net/qeth_mpc.h | 538 + drivers/s390/net/qeth_proc.c | 495 + drivers/s390/net/qeth_sys.c | 1788 ++ drivers/s390/net/qeth_tso.c | 285 + drivers/s390/net/qeth_tso.h | 58 + drivers/s390/net/smsgiucv.c | 180 + drivers/s390/net/smsgiucv.h | 10 + drivers/s390/s390mach.c | 219 + drivers/s390/s390mach.h | 79 + drivers/s390/scsi/Makefile | 9 + drivers/s390/scsi/zfcp_aux.c | 1977 ++ drivers/s390/scsi/zfcp_ccw.c | 312 + drivers/s390/scsi/zfcp_def.h | 1121 + drivers/s390/scsi/zfcp_erp.c | 3585 +++ drivers/s390/scsi/zfcp_ext.h | 186 + drivers/s390/scsi/zfcp_fsf.c | 5087 ++++ drivers/s390/scsi/zfcp_fsf.h | 472 + drivers/s390/scsi/zfcp_qdio.c | 868 + drivers/s390/scsi/zfcp_scsi.c | 949 + drivers/s390/scsi/zfcp_sysfs_adapter.c | 298 + drivers/s390/scsi/zfcp_sysfs_driver.c | 135 + drivers/s390/scsi/zfcp_sysfs_port.c | 311 + drivers/s390/scsi/zfcp_sysfs_unit.c | 179 + drivers/s390/sysinfo.c | 347 + drivers/sbus/Makefile | 9 + drivers/sbus/char/Kconfig | 93 + drivers/sbus/char/Makefile | 25 + drivers/sbus/char/aurora.c | 2372 ++ drivers/sbus/char/aurora.h | 276 + drivers/sbus/char/bbc_envctrl.c | 645 + drivers/sbus/char/bbc_i2c.c | 488 + drivers/sbus/char/bbc_i2c.h | 20 + drivers/sbus/char/bpp.c | 1079 + drivers/sbus/char/cd180.h | 240 + drivers/sbus/char/cpwatchdog.c | 832 + drivers/sbus/char/display7seg.c | 234 + drivers/sbus/char/envctrl.c | 1181 + drivers/sbus/char/flash.c | 255 + drivers/sbus/char/jsflash.c | 627 + drivers/sbus/char/max1617.h | 27 + drivers/sbus/char/openprom.c | 630 + drivers/sbus/char/riowatchdog.c | 293 + drivers/sbus/char/rtc.c | 178 + drivers/sbus/char/uctrl.c | 422 + drivers/sbus/char/vfc.h | 179 + drivers/sbus/char/vfc_dev.c | 742 + drivers/sbus/char/vfc_i2c.c | 347 + drivers/sbus/char/vfc_i2c.h | 44 + drivers/sbus/dvma.c | 137 + drivers/sbus/sbus.c | 564 + drivers/scsi/3w-9xxx.c | 2167 ++ drivers/scsi/3w-9xxx.h | 682 + drivers/scsi/3w-xxxx.c | 2478 ++ drivers/scsi/3w-xxxx.h | 436 + drivers/scsi/53c700.c | 2175 ++ drivers/scsi/53c700.h | 649 + drivers/scsi/53c700.scr | 411 + drivers/scsi/53c700_d.h_shipped | 1329 + drivers/scsi/53c7xx.c | 6102 ++++ drivers/scsi/53c7xx.h | 1608 + drivers/scsi/53c7xx.scr | 1591 + drivers/scsi/53c7xx_d.h_shipped | 2874 ++ drivers/scsi/53c7xx_u.h_shipped | 102 + drivers/scsi/BusLogic.c | 3574 +++ drivers/scsi/BusLogic.h | 1359 + drivers/scsi/FlashPoint.c | 12159 ++++++++ drivers/scsi/Kconfig | 1802 ++ drivers/scsi/Makefile | 184 + drivers/scsi/NCR5380.c | 2862 ++ drivers/scsi/NCR5380.h | 432 + drivers/scsi/NCR53C9x.c | 3649 +++ drivers/scsi/NCR53C9x.h | 669 + drivers/scsi/NCR53c406a.c | 1110 + drivers/scsi/NCR_D700.c | 406 + drivers/scsi/NCR_D700.h | 29 + drivers/scsi/NCR_Q720.c | 377 + drivers/scsi/NCR_Q720.h | 28 + drivers/scsi/a100u2w.c | 1202 + drivers/scsi/a100u2w.h | 416 + drivers/scsi/a2091.c | 260 + drivers/scsi/a2091.h | 76 + drivers/scsi/a3000.c | 245 + drivers/scsi/a3000.h | 79 + drivers/scsi/aacraid/Makefile | 8 + drivers/scsi/aacraid/README | 66 + drivers/scsi/aacraid/TODO | 6 + drivers/scsi/aacraid/aachba.c | 2037 ++ drivers/scsi/aacraid/aacraid.h | 1623 + drivers/scsi/aacraid/commctrl.c | 683 + drivers/scsi/aacraid/comminit.c | 325 + drivers/scsi/aacraid/commsup.c | 939 + drivers/scsi/aacraid/dpcsup.c | 215 + drivers/scsi/aacraid/linit.c | 749 + drivers/scsi/aacraid/rkt.c | 440 + drivers/scsi/aacraid/rx.c | 441 + drivers/scsi/aacraid/sa.c | 374 + drivers/scsi/advansys.c | 18237 ++++++++++++ drivers/scsi/advansys.h | 36 + drivers/scsi/aha152x.c | 3982 +++ drivers/scsi/aha152x.h | 337 + drivers/scsi/aha1542.c | 1832 ++ drivers/scsi/aha1542.h | 151 + drivers/scsi/aha1740.c | 707 + drivers/scsi/aha1740.h | 154 + drivers/scsi/ahci.c | 1065 + drivers/scsi/aic7xxx/Kconfig.aic79xx | 97 + drivers/scsi/aic7xxx/Kconfig.aic7xxx | 100 + drivers/scsi/aic7xxx/Makefile | 99 + drivers/scsi/aic7xxx/aic7770.c | 415 + drivers/scsi/aic7xxx/aic7770_osm.c | 264 + drivers/scsi/aic7xxx/aic79xx.h | 1537 + drivers/scsi/aic7xxx/aic79xx.reg | 3958 +++ drivers/scsi/aic7xxx/aic79xx.seq | 2058 ++ drivers/scsi/aic7xxx/aic79xx_core.c | 9888 ++++++ drivers/scsi/aic7xxx/aic79xx_inline.h | 965 + drivers/scsi/aic7xxx/aic79xx_osm.c | 5017 ++++ drivers/scsi/aic7xxx/aic79xx_osm.h | 1147 + drivers/scsi/aic7xxx/aic79xx_osm_pci.c | 368 + drivers/scsi/aic7xxx/aic79xx_pci.c | 987 + drivers/scsi/aic7xxx/aic79xx_pci.h | 70 + drivers/scsi/aic7xxx/aic79xx_proc.c | 362 + drivers/scsi/aic7xxx/aic79xx_reg.h_shipped | 3776 +++ .../scsi/aic7xxx/aic79xx_reg_print.c_shipped | 3635 +++ drivers/scsi/aic7xxx/aic79xx_seq.h_shipped | 1139 + drivers/scsi/aic7xxx/aic7xxx.h | 1352 + drivers/scsi/aic7xxx/aic7xxx.reg | 1594 + drivers/scsi/aic7xxx/aic7xxx.seq | 2398 ++ drivers/scsi/aic7xxx/aic7xxx_93cx6.c | 306 + drivers/scsi/aic7xxx/aic7xxx_93cx6.h | 102 + drivers/scsi/aic7xxx/aic7xxx_core.c | 7451 +++++ drivers/scsi/aic7xxx/aic7xxx_inline.h | 649 + drivers/scsi/aic7xxx/aic7xxx_osm.c | 5043 ++++ drivers/scsi/aic7xxx/aic7xxx_osm.h | 1130 + drivers/scsi/aic7xxx/aic7xxx_osm_pci.c | 389 + drivers/scsi/aic7xxx/aic7xxx_pci.c | 2407 ++ drivers/scsi/aic7xxx/aic7xxx_pci.h | 124 + drivers/scsi/aic7xxx/aic7xxx_proc.c | 385 + drivers/scsi/aic7xxx/aic7xxx_reg.h_shipped | 1787 ++ .../scsi/aic7xxx/aic7xxx_reg_print.c_shipped | 1681 ++ drivers/scsi/aic7xxx/aic7xxx_seq.h_shipped | 1307 + drivers/scsi/aic7xxx/aicasm/Makefile | 78 + drivers/scsi/aic7xxx/aicasm/aicasm.c | 835 + drivers/scsi/aic7xxx/aicasm/aicasm.h | 95 + drivers/scsi/aic7xxx/aicasm/aicasm_gram.y | 1945 ++ .../scsi/aic7xxx/aicasm/aicasm_insformat.h | 131 + .../scsi/aic7xxx/aicasm/aicasm_macro_gram.y | 164 + .../scsi/aic7xxx/aicasm/aicasm_macro_scan.l | 156 + drivers/scsi/aic7xxx/aicasm/aicasm_scan.l | 607 + drivers/scsi/aic7xxx/aicasm/aicasm_symbol.c | 677 + drivers/scsi/aic7xxx/aicasm/aicasm_symbol.h | 207 + drivers/scsi/aic7xxx/aiclib.c | 1412 + drivers/scsi/aic7xxx/aiclib.h | 1085 + drivers/scsi/aic7xxx/cam.h | 111 + drivers/scsi/aic7xxx/queue.h | 501 + drivers/scsi/aic7xxx/scsi_iu.h | 39 + drivers/scsi/aic7xxx/scsi_message.h | 70 + drivers/scsi/aic7xxx_old.c | 11178 +++++++ drivers/scsi/aic7xxx_old/aic7xxx.h | 28 + drivers/scsi/aic7xxx_old/aic7xxx.reg | 1401 + drivers/scsi/aic7xxx_old/aic7xxx.seq | 1539 + drivers/scsi/aic7xxx_old/aic7xxx_proc.c | 374 + drivers/scsi/aic7xxx_old/aic7xxx_reg.h | 629 + drivers/scsi/aic7xxx_old/aic7xxx_seq.c | 817 + drivers/scsi/aic7xxx_old/scsi_message.h | 49 + drivers/scsi/aic7xxx_old/sequencer.h | 135 + drivers/scsi/amiga7xx.c | 141 + drivers/scsi/amiga7xx.h | 23 + drivers/scsi/arm/Kconfig | 89 + drivers/scsi/arm/Makefile | 14 + drivers/scsi/arm/acornscsi-io.S | 145 + drivers/scsi/arm/acornscsi.c | 3130 ++ drivers/scsi/arm/acornscsi.h | 358 + drivers/scsi/arm/arxescsi.c | 395 + drivers/scsi/arm/cumana_1.c | 357 + drivers/scsi/arm/cumana_2.c | 556 + drivers/scsi/arm/ecoscsi.c | 239 + drivers/scsi/arm/eesox.c | 680 + drivers/scsi/arm/fas216.c | 3043 ++ drivers/scsi/arm/fas216.h | 394 + drivers/scsi/arm/msgqueue.c | 171 + drivers/scsi/arm/msgqueue.h | 82 + drivers/scsi/arm/oak.c | 217 + drivers/scsi/arm/powertec.c | 472 + drivers/scsi/arm/queue.c | 319 + drivers/scsi/arm/queue.h | 105 + drivers/scsi/arm/scsi.h | 115 + drivers/scsi/ata_piix.c | 690 + drivers/scsi/atari_NCR5380.c | 2986 ++ drivers/scsi/atari_dma_emul.c | 466 + drivers/scsi/atari_scsi.c | 1163 + drivers/scsi/atari_scsi.h | 248 + drivers/scsi/atp870u.c | 3970 +++ drivers/scsi/atp870u.h | 66 + drivers/scsi/blz1230.c | 352 + drivers/scsi/blz2060.c | 306 + drivers/scsi/bvme6000.c | 78 + drivers/scsi/bvme6000.h | 24 + drivers/scsi/constants.c | 1448 + drivers/scsi/cpqfcTS.h | 19 + drivers/scsi/cpqfcTSchip.h | 238 + drivers/scsi/cpqfcTScontrol.c | 2231 ++ drivers/scsi/cpqfcTSi2c.c | 493 + drivers/scsi/cpqfcTSinit.c | 2098 ++ drivers/scsi/cpqfcTSioctl.h | 94 + drivers/scsi/cpqfcTSstructs.h | 1530 + drivers/scsi/cpqfcTStrigger.c | 33 + drivers/scsi/cpqfcTStrigger.h | 8 + drivers/scsi/cpqfcTSworker.c | 6516 ++++ drivers/scsi/cyberstorm.c | 377 + drivers/scsi/cyberstormII.c | 314 + drivers/scsi/dc395x.c | 4942 +++ drivers/scsi/dc395x.h | 648 + drivers/scsi/dec_esp.c | 573 + drivers/scsi/dmx3191d.c | 173 + drivers/scsi/dpt/dpti_i2o.h | 459 + drivers/scsi/dpt/dpti_ioctl.h | 139 + drivers/scsi/dpt/dptsig.h | 339 + drivers/scsi/dpt/osd_defs.h | 79 + drivers/scsi/dpt/osd_util.h | 358 + drivers/scsi/dpt/sys_info.h | 417 + drivers/scsi/dpt_i2o.c | 3381 +++ drivers/scsi/dpti.h | 359 + drivers/scsi/dtc.c | 494 + drivers/scsi/dtc.h | 99 + drivers/scsi/eata.c | 2621 ++ drivers/scsi/eata_generic.h | 406 + drivers/scsi/eata_pio.c | 996 + drivers/scsi/eata_pio.h | 53 + drivers/scsi/esp.c | 4402 +++ drivers/scsi/esp.h | 410 + drivers/scsi/fastlane.c | 421 + drivers/scsi/fcal.c | 320 + drivers/scsi/fcal.h | 27 + drivers/scsi/fd_mcs.c | 1369 + drivers/scsi/fdomain.c | 1739 ++ drivers/scsi/fdomain.h | 24 + drivers/scsi/g_NCR5380.c | 947 + drivers/scsi/g_NCR5380.h | 131 + drivers/scsi/g_NCR5380_mmio.c | 10 + drivers/scsi/gdth.c | 5738 ++++ drivers/scsi/gdth.h | 1079 + drivers/scsi/gdth_ioctl.h | 347 + drivers/scsi/gdth_kcompat.h | 21 + drivers/scsi/gdth_proc.c | 1030 + drivers/scsi/gdth_proc.h | 34 + drivers/scsi/gvp11.c | 387 + drivers/scsi/gvp11.h | 63 + drivers/scsi/hosts.c | 462 + drivers/scsi/hosts.h | 2 + drivers/scsi/ibmmca.c | 2491 ++ drivers/scsi/ibmmca.h | 21 + drivers/scsi/ibmvscsi/Makefile | 5 + drivers/scsi/ibmvscsi/ibmvscsi.c | 1473 + drivers/scsi/ibmvscsi/ibmvscsi.h | 109 + drivers/scsi/ibmvscsi/iseries_vscsi.c | 144 + drivers/scsi/ibmvscsi/rpa_vscsi.c | 260 + drivers/scsi/ibmvscsi/srp.h | 225 + drivers/scsi/ibmvscsi/viosrp.h | 126 + drivers/scsi/ide-scsi.c | 1174 + drivers/scsi/imm.c | 1300 + drivers/scsi/imm.h | 144 + drivers/scsi/in2000.c | 2323 ++ drivers/scsi/in2000.h | 414 + drivers/scsi/initio.c | 3184 ++ drivers/scsi/initio.h | 739 + drivers/scsi/ipr.c | 6083 ++++ drivers/scsi/ipr.h | 1261 + drivers/scsi/ips.c | 7491 +++++ drivers/scsi/ips.h | 1297 + drivers/scsi/jazz_esp.c | 329 + drivers/scsi/lasi700.c | 189 + drivers/scsi/libata-core.c | 4024 +++ drivers/scsi/libata-scsi.c | 1593 + drivers/scsi/libata.h | 89 + drivers/scsi/mac53c94.c | 582 + drivers/scsi/mac53c94.h | 214 + drivers/scsi/mac_esp.c | 754 + drivers/scsi/mac_scsi.c | 605 + drivers/scsi/mac_scsi.h | 85 + drivers/scsi/mca_53c9x.c | 520 + drivers/scsi/megaraid.c | 5122 ++++ drivers/scsi/megaraid.h | 1071 + drivers/scsi/megaraid/Kconfig.megaraid | 78 + drivers/scsi/megaraid/Makefile | 2 + drivers/scsi/megaraid/mbox_defs.h | 790 + drivers/scsi/megaraid/mega_common.h | 286 + drivers/scsi/megaraid/megaraid_ioctl.h | 296 + drivers/scsi/megaraid/megaraid_mbox.c | 4276 +++ drivers/scsi/megaraid/megaraid_mbox.h | 288 + drivers/scsi/megaraid/megaraid_mm.c | 1255 + drivers/scsi/megaraid/megaraid_mm.h | 102 + drivers/scsi/mesh.c | 2062 ++ drivers/scsi/mesh.h | 127 + drivers/scsi/mvme147.c | 155 + drivers/scsi/mvme147.h | 28 + drivers/scsi/mvme16x.c | 80 + drivers/scsi/mvme16x.h | 24 + drivers/scsi/ncr53c8xx.c | 7986 +++++ drivers/scsi/ncr53c8xx.h | 101 + drivers/scsi/nsp32.c | 3585 +++ drivers/scsi/nsp32.h | 664 + drivers/scsi/nsp32_debug.c | 263 + drivers/scsi/nsp32_io.h | 259 + drivers/scsi/oktagon_esp.c | 609 + drivers/scsi/oktagon_io.S | 195 + drivers/scsi/osst.c | 5914 ++++ drivers/scsi/osst.h | 638 + drivers/scsi/osst_detect.h | 6 + drivers/scsi/osst_options.h | 106 + drivers/scsi/pas16.c | 639 + drivers/scsi/pas16.h | 179 + drivers/scsi/pci2000.c | 834 + drivers/scsi/pci2000.h | 200 + drivers/scsi/pci2220i.c | 2915 ++ drivers/scsi/pci2220i.h | 39 + drivers/scsi/pcmcia/Kconfig | 82 + drivers/scsi/pcmcia/Makefile | 13 + drivers/scsi/pcmcia/aha152x_core.c | 3 + drivers/scsi/pcmcia/aha152x_stub.c | 343 + drivers/scsi/pcmcia/fdomain_core.c | 2 + drivers/scsi/pcmcia/fdomain_stub.c | 323 + drivers/scsi/pcmcia/nsp_cs.c | 2198 ++ drivers/scsi/pcmcia/nsp_cs.h | 472 + drivers/scsi/pcmcia/nsp_debug.c | 215 + drivers/scsi/pcmcia/nsp_io.h | 274 + drivers/scsi/pcmcia/nsp_message.c | 78 + drivers/scsi/pcmcia/qlogic_stub.c | 425 + drivers/scsi/pcmcia/sym53c500_cs.c | 1022 + drivers/scsi/pluto.c | 364 + drivers/scsi/pluto.h | 47 + drivers/scsi/ppa.c | 1150 + drivers/scsi/ppa.h | 151 + drivers/scsi/psi240i.c | 685 + drivers/scsi/psi240i.h | 315 + drivers/scsi/psi_chip.h | 195 + drivers/scsi/psi_dale.h | 564 + drivers/scsi/psi_roy.h | 331 + drivers/scsi/ql1040_fw.h | 2099 ++ drivers/scsi/ql12160_fw.h | 1781 ++ drivers/scsi/ql1280_fw.h | 2017 ++ drivers/scsi/qla1280.c | 4863 +++ drivers/scsi/qla1280.h | 1098 + drivers/scsi/qla2xxx/Kconfig | 41 + drivers/scsi/qla2xxx/Makefile | 16 + drivers/scsi/qla2xxx/ql2100.c | 92 + drivers/scsi/qla2xxx/ql2100_fw.c | 4858 +++ drivers/scsi/qla2xxx/ql2200.c | 92 + drivers/scsi/qla2xxx/ql2200_fw.c | 5321 ++++ drivers/scsi/qla2xxx/ql2300.c | 103 + drivers/scsi/qla2xxx/ql2300_fw.c | 7590 +++++ drivers/scsi/qla2xxx/ql2322.c | 108 + drivers/scsi/qla2xxx/ql2322_fw.c | 8124 +++++ drivers/scsi/qla2xxx/ql6312.c | 102 + drivers/scsi/qla2xxx/ql6312_fw.c | 7147 +++++ drivers/scsi/qla2xxx/qla_dbg.c | 1158 + drivers/scsi/qla2xxx/qla_dbg.h | 233 + drivers/scsi/qla2xxx/qla_def.h | 2497 ++ drivers/scsi/qla2xxx/qla_devtbl.h | 110 + drivers/scsi/qla2xxx/qla_gbl.h | 257 + drivers/scsi/qla2xxx/qla_gs.c | 1059 + drivers/scsi/qla2xxx/qla_init.c | 3908 +++ drivers/scsi/qla2xxx/qla_inline.h | 292 + drivers/scsi/qla2xxx/qla_iocb.c | 633 + drivers/scsi/qla2xxx/qla_isr.c | 1464 + drivers/scsi/qla2xxx/qla_listops.h | 351 + drivers/scsi/qla2xxx/qla_mbx.c | 1950 ++ drivers/scsi/qla2xxx/qla_os.c | 4456 +++ drivers/scsi/qla2xxx/qla_rscn.c | 1437 + drivers/scsi/qla2xxx/qla_settings.h | 64 + drivers/scsi/qla2xxx/qla_sup.c | 296 + drivers/scsi/qla2xxx/qla_version.h | 27 + drivers/scsi/qlogicfas.c | 230 + drivers/scsi/qlogicfas408.c | 637 + drivers/scsi/qlogicfas408.h | 120 + drivers/scsi/qlogicfc.c | 2227 ++ drivers/scsi/qlogicfc_asm.c | 9751 ++++++ drivers/scsi/qlogicisp.c | 1935 ++ drivers/scsi/qlogicisp_asm.c | 2034 ++ drivers/scsi/qlogicpti.c | 1541 + drivers/scsi/qlogicpti.h | 508 + drivers/scsi/qlogicpti_asm.c | 1160 + drivers/scsi/sata_nv.c | 570 + drivers/scsi/sata_promise.c | 682 + drivers/scsi/sata_promise.h | 154 + drivers/scsi/sata_qstor.c | 718 + drivers/scsi/sata_sil.c | 494 + drivers/scsi/sata_sis.c | 286 + drivers/scsi/sata_svw.c | 483 + drivers/scsi/sata_sx4.c | 1503 + drivers/scsi/sata_uli.c | 287 + drivers/scsi/sata_via.c | 387 + drivers/scsi/sata_vsc.c | 407 + drivers/scsi/script_asm.pl | 984 + drivers/scsi/scsi.c | 1375 + drivers/scsi/scsi.h | 109 + drivers/scsi/scsi_debug.c | 1976 ++ drivers/scsi/scsi_debug.h | 24 + drivers/scsi/scsi_devinfo.c | 564 + drivers/scsi/scsi_error.c | 2050 ++ drivers/scsi/scsi_ioctl.c | 516 + drivers/scsi/scsi_lib.c | 2023 ++ drivers/scsi/scsi_logging.h | 82 + drivers/scsi/scsi_module.c | 73 + drivers/scsi/scsi_obsolete.h | 106 + drivers/scsi/scsi_priv.h | 165 + drivers/scsi/scsi_proc.c | 336 + drivers/scsi/scsi_scan.c | 1473 + drivers/scsi/scsi_sysctl.c | 53 + drivers/scsi/scsi_sysfs.c | 816 + drivers/scsi/scsi_transport_fc.c | 1665 ++ drivers/scsi/scsi_transport_iscsi.c | 388 + drivers/scsi/scsi_transport_spi.c | 1020 + drivers/scsi/scsi_typedefs.h | 6 + drivers/scsi/scsicam.c | 245 + drivers/scsi/sd.c | 1740 ++ drivers/scsi/seagate.c | 1675 ++ drivers/scsi/seagate.h | 21 + drivers/scsi/sg.c | 3092 ++ drivers/scsi/sgiwd93.c | 337 + drivers/scsi/sgiwd93.h | 24 + drivers/scsi/sim710.c | 372 + drivers/scsi/sr.c | 965 + drivers/scsi/sr.h | 68 + drivers/scsi/sr_ioctl.c | 568 + drivers/scsi/sr_vendor.c | 329 + drivers/scsi/st.c | 4438 +++ drivers/scsi/st.h | 212 + drivers/scsi/st_options.h | 100 + drivers/scsi/sun3_NCR5380.c | 3009 ++ drivers/scsi/sun3_scsi.c | 642 + drivers/scsi/sun3_scsi.h | 379 + drivers/scsi/sun3_scsi_vme.c | 584 + drivers/scsi/sun3x_esp.c | 394 + drivers/scsi/sym53c416.c | 881 + drivers/scsi/sym53c416.h | 36 + drivers/scsi/sym53c8xx_2/Makefile | 4 + drivers/scsi/sym53c8xx_2/sym53c8xx.h | 217 + drivers/scsi/sym53c8xx_2/sym_defs.h | 792 + drivers/scsi/sym53c8xx_2/sym_fw.c | 568 + drivers/scsi/sym53c8xx_2/sym_fw.h | 211 + drivers/scsi/sym53c8xx_2/sym_fw1.h | 1838 ++ drivers/scsi/sym53c8xx_2/sym_fw2.h | 1927 ++ drivers/scsi/sym53c8xx_2/sym_glue.c | 2196 ++ drivers/scsi/sym53c8xx_2/sym_glue.h | 300 + drivers/scsi/sym53c8xx_2/sym_hipd.c | 5865 ++++ drivers/scsi/sym53c8xx_2/sym_hipd.h | 1304 + drivers/scsi/sym53c8xx_2/sym_malloc.c | 382 + drivers/scsi/sym53c8xx_2/sym_misc.h | 192 + drivers/scsi/sym53c8xx_2/sym_nvram.c | 771 + drivers/scsi/sym53c8xx_2/sym_nvram.h | 214 + drivers/scsi/sym53c8xx_comm.h | 792 + drivers/scsi/sym53c8xx_defs.h | 1333 + drivers/scsi/t128.c | 449 + drivers/scsi/t128.h | 155 + drivers/scsi/tmscsim.c | 2693 ++ drivers/scsi/tmscsim.h | 565 + drivers/scsi/u14-34f.c | 1987 ++ drivers/scsi/ultrastor.c | 1204 + drivers/scsi/ultrastor.h | 79 + drivers/scsi/wd33c93.c | 2077 ++ drivers/scsi/wd33c93.h | 348 + drivers/scsi/wd7000.c | 1667 ++ drivers/scsi/zalon.c | 205 + drivers/serial/21285.c | 541 + drivers/serial/68328serial.c | 1614 + drivers/serial/68328serial.h | 194 + drivers/serial/68360serial.c | 3027 ++ drivers/serial/8250.c | 2632 ++ drivers/serial/8250.h | 87 + drivers/serial/8250_acorn.c | 142 + drivers/serial/8250_acpi.c | 171 + drivers/serial/8250_early.c | 255 + drivers/serial/8250_gsc.c | 120 + drivers/serial/8250_hp300.c | 329 + drivers/serial/8250_pci.c | 2303 ++ drivers/serial/8250_pnp.c | 457 + drivers/serial/Kconfig | 846 + drivers/serial/Makefile | 54 + drivers/serial/amba-pl010.c | 840 + drivers/serial/amba-pl011.c | 869 + drivers/serial/au1x00_uart.c | 1312 + drivers/serial/bast_sio.c | 80 + drivers/serial/clps711x.c | 609 + drivers/serial/cpm_uart/Makefile | 11 + drivers/serial/cpm_uart/cpm_uart.h | 89 + drivers/serial/cpm_uart/cpm_uart_core.c | 1177 + drivers/serial/cpm_uart/cpm_uart_cpm1.c | 290 + drivers/serial/cpm_uart/cpm_uart_cpm1.h | 45 + drivers/serial/cpm_uart/cpm_uart_cpm2.c | 328 + drivers/serial/cpm_uart/cpm_uart_cpm2.h | 45 + drivers/serial/crisv10.c | 5059 ++++ drivers/serial/crisv10.h | 137 + drivers/serial/dz.c | 822 + drivers/serial/dz.h | 118 + drivers/serial/icom.c | 1691 ++ drivers/serial/icom.h | 290 + drivers/serial/imx.c | 909 + drivers/serial/ioc4_serial.c | 2909 ++ drivers/serial/ip22zilog.c | 1271 + drivers/serial/ip22zilog.h | 281 + drivers/serial/jsm/Makefile | 8 + drivers/serial/jsm/jsm.h | 437 + drivers/serial/jsm/jsm_driver.c | 404 + drivers/serial/jsm/jsm_neo.c | 1427 + drivers/serial/jsm/jsm_tty.c | 1038 + drivers/serial/m32r_sio.c | 1218 + drivers/serial/m32r_sio.h | 55 + drivers/serial/m32r_sio_reg.h | 153 + drivers/serial/mcfserial.c | 1883 ++ drivers/serial/mcfserial.h | 75 + drivers/serial/mpc52xx_uart.c | 852 + drivers/serial/mpsc.c | 1832 ++ drivers/serial/mpsc.h | 289 + drivers/serial/mux.c | 539 + drivers/serial/pmac_zilog.c | 2048 ++ drivers/serial/pmac_zilog.h | 382 + drivers/serial/pxa.c | 877 + drivers/serial/s3c2410.c | 1831 ++ drivers/serial/sa1100.c | 952 + drivers/serial/serial_core.c | 2395 ++ drivers/serial/serial_cs.c | 747 + drivers/serial/serial_lh7a40x.c | 711 + drivers/serial/serial_txx9.c | 1171 + drivers/serial/sh-sci.c | 1692 ++ drivers/serial/sh-sci.h | 573 + drivers/serial/sn_console.c | 1124 + drivers/serial/suncore.c | 218 + drivers/serial/suncore.h | 29 + drivers/serial/sunsab.c | 1171 + drivers/serial/sunsab.h | 321 + drivers/serial/sunsu.c | 1742 ++ drivers/serial/sunzilog.c | 1773 ++ drivers/serial/sunzilog.h | 272 + drivers/serial/uart00.c | 782 + drivers/serial/v850e_uart.c | 549 + drivers/serial/vr41xx_siu.c | 1100 + drivers/sh/Makefile | 6 + drivers/sh/superhyway/Makefile | 7 + drivers/sh/superhyway/superhyway-sysfs.c | 45 + drivers/sh/superhyway/superhyway.c | 201 + drivers/sn/Makefile | 6 + drivers/sn/ioc4.c | 65 + drivers/tc/Makefile | 23 + drivers/tc/lk201-map.c_shipped | 265 + drivers/tc/lk201-map.map | 356 + drivers/tc/lk201-remap.c | 172 + drivers/tc/lk201.c | 441 + drivers/tc/lk201.h | 125 + drivers/tc/tc.c | 260 + drivers/tc/zs.c | 2253 ++ drivers/tc/zs.h | 405 + drivers/telephony/Kconfig | 47 + drivers/telephony/Makefile | 7 + drivers/telephony/ixj-ver.h | 4 + drivers/telephony/ixj.c | 10602 +++++++ drivers/telephony/ixj.h | 1329 + drivers/telephony/ixj_pcmcia.c | 321 + drivers/telephony/phonedev.c | 170 + drivers/usb/Kconfig | 127 + drivers/usb/Makefile | 74 + drivers/usb/README | 54 + drivers/usb/atm/Kconfig | 30 + drivers/usb/atm/Makefile | 7 + drivers/usb/atm/speedtch.c | 847 + drivers/usb/atm/usb_atm.c | 1188 + drivers/usb/atm/usb_atm.h | 176 + drivers/usb/class/Kconfig | 86 + drivers/usb/class/Makefile | 10 + drivers/usb/class/audio.c | 3882 +++ drivers/usb/class/audio.h | 110 + drivers/usb/class/bluetty.c | 1279 + drivers/usb/class/cdc-acm.c | 942 + drivers/usb/class/cdc-acm.h | 82 + drivers/usb/class/usb-midi.c | 2154 ++ drivers/usb/class/usb-midi.h | 164 + drivers/usb/class/usblp.c | 1214 + drivers/usb/core/Kconfig | 99 + drivers/usb/core/Makefile | 16 + drivers/usb/core/buffer.c | 154 + drivers/usb/core/config.c | 534 + drivers/usb/core/devices.c | 677 + drivers/usb/core/devio.c | 1483 + drivers/usb/core/file.c | 227 + drivers/usb/core/hcd-pci.c | 358 + drivers/usb/core/hcd.c | 1840 ++ drivers/usb/core/hcd.h | 476 + drivers/usb/core/hub.c | 3057 ++ drivers/usb/core/hub.h | 238 + drivers/usb/core/inode.c | 764 + drivers/usb/core/message.c | 1480 + drivers/usb/core/otg_whitelist.h | 112 + drivers/usb/core/sysfs.c | 318 + drivers/usb/core/urb.c | 511 + drivers/usb/core/usb.c | 1573 + drivers/usb/core/usb.h | 46 + drivers/usb/gadget/Kconfig | 389 + drivers/usb/gadget/Makefile | 30 + drivers/usb/gadget/config.c | 117 + drivers/usb/gadget/dummy_hcd.c | 1793 ++ drivers/usb/gadget/epautoconf.c | 310 + drivers/usb/gadget/ether.c | 2660 ++ drivers/usb/gadget/file_storage.c | 4139 +++ drivers/usb/gadget/gadget_chips.h | 92 + drivers/usb/gadget/goku_udc.c | 1984 ++ drivers/usb/gadget/goku_udc.h | 290 + drivers/usb/gadget/inode.c | 2110 ++ drivers/usb/gadget/lh7a40x_udc.c | 2167 ++ drivers/usb/gadget/lh7a40x_udc.h | 261 + drivers/usb/gadget/ndis.h | 217 + drivers/usb/gadget/net2280.c | 2967 ++ drivers/usb/gadget/net2280.h | 728 + drivers/usb/gadget/omap_udc.c | 2872 ++ drivers/usb/gadget/omap_udc.h | 208 + drivers/usb/gadget/pxa2xx_udc.c | 2648 ++ drivers/usb/gadget/pxa2xx_udc.h | 320 + drivers/usb/gadget/rndis.c | 1428 + drivers/usb/gadget/rndis.h | 348 + drivers/usb/gadget/serial.c | 2436 ++ drivers/usb/gadget/usbstring.c | 136 + drivers/usb/gadget/zero.c | 1357 + drivers/usb/host/Kconfig | 126 + drivers/usb/host/Makefile | 10 + drivers/usb/host/ehci-dbg.c | 755 + drivers/usb/host/ehci-hcd.c | 1261 + drivers/usb/host/ehci-hub.c | 553 + drivers/usb/host/ehci-mem.c | 237 + drivers/usb/host/ehci-q.c | 1090 + drivers/usb/host/ehci-sched.c | 1999 ++ drivers/usb/host/ehci.h | 637 + drivers/usb/host/hc_crisv10.c | 4556 +++ drivers/usb/host/hc_crisv10.h | 289 + drivers/usb/host/ohci-au1xxx.c | 284 + drivers/usb/host/ohci-dbg.c | 707 + drivers/usb/host/ohci-hcd.c | 925 + drivers/usb/host/ohci-hub.c | 643 + drivers/usb/host/ohci-lh7a404.c | 266 + drivers/usb/host/ohci-mem.c | 139 + drivers/usb/host/ohci-omap.c | 560 + drivers/usb/host/ohci-pci.c | 264 + drivers/usb/host/ohci-ppc-soc.c | 234 + drivers/usb/host/ohci-pxa27x.c | 383 + drivers/usb/host/ohci-q.c | 1107 + drivers/usb/host/ohci-sa1111.c | 289 + drivers/usb/host/ohci.h | 636 + drivers/usb/host/sl811-hcd.c | 1851 ++ drivers/usb/host/sl811.h | 266 + drivers/usb/host/uhci-debug.c | 587 + drivers/usb/host/uhci-hcd.c | 919 + drivers/usb/host/uhci-hcd.h | 454 + drivers/usb/host/uhci-hub.c | 299 + drivers/usb/host/uhci-q.c | 1539 + drivers/usb/image/Kconfig | 30 + drivers/usb/image/Makefile | 6 + drivers/usb/image/mdc800.c | 1063 + drivers/usb/image/microtek.c | 862 + drivers/usb/image/microtek.h | 55 + drivers/usb/input/Kconfig | 237 + drivers/usb/input/Makefile | 39 + drivers/usb/input/aiptek.c | 2283 ++ drivers/usb/input/ati_remote.c | 850 + drivers/usb/input/fixp-arith.h | 90 + drivers/usb/input/hid-core.c | 1864 ++ drivers/usb/input/hid-debug.h | 720 + drivers/usb/input/hid-ff.c | 94 + drivers/usb/input/hid-input.c | 630 + drivers/usb/input/hid-lgff.c | 528 + drivers/usb/input/hid-tmff.c | 463 + drivers/usb/input/hid.h | 510 + drivers/usb/input/hiddev.c | 844 + drivers/usb/input/kbtab.c | 241 + drivers/usb/input/mtouchusb.c | 367 + drivers/usb/input/pid.c | 295 + drivers/usb/input/pid.h | 62 + drivers/usb/input/powermate.c | 464 + drivers/usb/input/touchkitusb.c | 310 + drivers/usb/input/usbkbd.c | 370 + drivers/usb/input/usbmouse.c | 252 + drivers/usb/input/wacom.c | 951 + drivers/usb/input/xpad.c | 362 + drivers/usb/media/Kconfig | 213 + drivers/usb/media/Makefile | 17 + drivers/usb/media/dabfirmware.h | 1408 + drivers/usb/media/dabusb.c | 877 + drivers/usb/media/dabusb.h | 85 + drivers/usb/media/dsbr100.c | 429 + drivers/usb/media/ibmcam.c | 3932 +++ drivers/usb/media/konicawc.c | 947 + drivers/usb/media/ov511.c | 6131 ++++ drivers/usb/media/ov511.h | 569 + drivers/usb/media/pwc/ChangeLog | 143 + drivers/usb/media/pwc/Makefile | 20 + drivers/usb/media/pwc/philips.txt | 236 + drivers/usb/media/pwc/pwc-ctrl.c | 1630 + drivers/usb/media/pwc/pwc-dec1.c | 42 + drivers/usb/media/pwc/pwc-dec1.h | 36 + drivers/usb/media/pwc/pwc-dec23.c | 623 + drivers/usb/media/pwc/pwc-dec23.h | 58 + drivers/usb/media/pwc/pwc-if.c | 2212 ++ drivers/usb/media/pwc/pwc-ioctl.h | 292 + drivers/usb/media/pwc/pwc-kiara.c | 891 + drivers/usb/media/pwc/pwc-kiara.h | 45 + drivers/usb/media/pwc/pwc-misc.c | 140 + drivers/usb/media/pwc/pwc-nala.h | 66 + drivers/usb/media/pwc/pwc-timon.c | 1446 + drivers/usb/media/pwc/pwc-timon.h | 61 + drivers/usb/media/pwc/pwc-uncompress.c | 147 + drivers/usb/media/pwc/pwc-uncompress.h | 41 + drivers/usb/media/pwc/pwc.h | 278 + drivers/usb/media/se401.c | 1436 + drivers/usb/media/se401.h | 233 + drivers/usb/media/sn9c102.h | 206 + drivers/usb/media/sn9c102_core.c | 2744 ++ drivers/usb/media/sn9c102_hv7131d.c | 271 + drivers/usb/media/sn9c102_mi0343.c | 363 + drivers/usb/media/sn9c102_pas106b.c | 307 + drivers/usb/media/sn9c102_pas202bcb.c | 293 + drivers/usb/media/sn9c102_sensor.h | 373 + drivers/usb/media/sn9c102_tas5110c1b.c | 174 + drivers/usb/media/sn9c102_tas5130d1b.c | 188 + drivers/usb/media/stv680.c | 1506 + drivers/usb/media/stv680.h | 222 + drivers/usb/media/ultracam.c | 679 + drivers/usb/media/usbvideo.c | 2192 ++ drivers/usb/media/usbvideo.h | 393 + drivers/usb/media/vicam.c | 1409 + drivers/usb/media/w9968cf.c | 3822 +++ drivers/usb/media/w9968cf.h | 339 + drivers/usb/media/w9968cf_decoder.h | 86 + drivers/usb/media/w9968cf_vpp.h | 43 + drivers/usb/misc/Kconfig | 152 + drivers/usb/misc/Makefile | 20 + drivers/usb/misc/auerswald.c | 2163 ++ drivers/usb/misc/cytherm.c | 430 + drivers/usb/misc/emi26.c | 255 + drivers/usb/misc/emi26_fw.h | 5779 ++++ drivers/usb/misc/emi62.c | 298 + drivers/usb/misc/emi62_fw_m.h | 8853 ++++++ drivers/usb/misc/emi62_fw_s.h | 8837 ++++++ drivers/usb/misc/idmouse.c | 443 + drivers/usb/misc/legousbtower.c | 1088 + drivers/usb/misc/phidgetkit.c | 586 + drivers/usb/misc/phidgetservo.c | 342 + drivers/usb/misc/rio500.c | 563 + drivers/usb/misc/rio500_usb.h | 37 + drivers/usb/misc/sisusbvga/Kconfig | 14 + drivers/usb/misc/sisusbvga/Makefile | 6 + drivers/usb/misc/sisusbvga/sisusb.c | 3145 ++ drivers/usb/misc/sisusbvga/sisusb.h | 278 + drivers/usb/misc/usblcd.c | 404 + drivers/usb/misc/usbled.c | 181 + drivers/usb/misc/usbtest.c | 2140 ++ drivers/usb/misc/uss720.c | 674 + drivers/usb/mon/Kconfig | 22 + drivers/usb/mon/Makefile | 7 + drivers/usb/mon/mon_main.c | 377 + drivers/usb/mon/mon_stat.c | 74 + drivers/usb/mon/mon_text.c | 405 + drivers/usb/mon/usb_mon.h | 51 + drivers/usb/net/Kconfig | 307 + drivers/usb/net/Makefile | 12 + drivers/usb/net/catc.c | 960 + drivers/usb/net/kaweth.c | 1271 + drivers/usb/net/kawethfw.h | 557 + drivers/usb/net/pegasus.c | 1408 + drivers/usb/net/pegasus.h | 298 + drivers/usb/net/rtl8150.c | 942 + drivers/usb/net/usbnet.c | 4106 +++ drivers/usb/net/zd1201.c | 1905 ++ drivers/usb/net/zd1201.h | 147 + drivers/usb/serial/Kconfig | 455 + drivers/usb/serial/Makefile | 39 + drivers/usb/serial/Makefile-keyspan_pda_fw | 16 + drivers/usb/serial/belkin_sa.c | 614 + drivers/usb/serial/belkin_sa.h | 123 + drivers/usb/serial/bus.c | 134 + drivers/usb/serial/console.c | 264 + drivers/usb/serial/cp2101.c | 591 + drivers/usb/serial/cyberjack.c | 514 + drivers/usb/serial/cypress_m8.c | 1538 + drivers/usb/serial/cypress_m8.h | 55 + drivers/usb/serial/digi_acceleport.c | 2049 ++ drivers/usb/serial/empeg.c | 596 + drivers/usb/serial/ezusb.c | 60 + drivers/usb/serial/ezusb_convert.pl | 50 + drivers/usb/serial/ftdi_sio.c | 2496 ++ drivers/usb/serial/ftdi_sio.h | 777 + drivers/usb/serial/garmin_gps.c | 1541 + drivers/usb/serial/generic.c | 315 + drivers/usb/serial/io_16654.h | 195 + drivers/usb/serial/io_edgeport.c | 3113 ++ drivers/usb/serial/io_edgeport.h | 141 + drivers/usb/serial/io_fw_boot.h | 556 + drivers/usb/serial/io_fw_boot2.h | 546 + drivers/usb/serial/io_fw_down.h | 1229 + drivers/usb/serial/io_fw_down2.h | 1133 + drivers/usb/serial/io_fw_down3.h | 835 + drivers/usb/serial/io_ionsp.h | 454 + drivers/usb/serial/io_tables.h | 163 + drivers/usb/serial/io_ti.c | 3091 ++ drivers/usb/serial/io_ti.h | 180 + drivers/usb/serial/io_usbvend.h | 687 + drivers/usb/serial/ipaq.c | 973 + drivers/usb/serial/ipaq.h | 54 + drivers/usb/serial/ipw.c | 491 + drivers/usb/serial/ir-usb.c | 619 + drivers/usb/serial/keyspan.c | 2354 ++ drivers/usb/serial/keyspan.h | 660 + drivers/usb/serial/keyspan_mpr_fw.h | 286 + drivers/usb/serial/keyspan_pda.S | 1124 + drivers/usb/serial/keyspan_pda.c | 894 + drivers/usb/serial/keyspan_pda_fw.h | 99 + drivers/usb/serial/keyspan_usa18x_fw.h | 447 + drivers/usb/serial/keyspan_usa19_fw.h | 285 + drivers/usb/serial/keyspan_usa19qi_fw.h | 284 + drivers/usb/serial/keyspan_usa19qw_fw.h | 448 + drivers/usb/serial/keyspan_usa19w_fw.h | 446 + drivers/usb/serial/keyspan_usa26msg.h | 260 + drivers/usb/serial/keyspan_usa28_fw.h | 466 + drivers/usb/serial/keyspan_usa28msg.h | 201 + drivers/usb/serial/keyspan_usa28x_fw.h | 447 + drivers/usb/serial/keyspan_usa28xa_fw.h | 449 + drivers/usb/serial/keyspan_usa28xb_fw.h | 448 + drivers/usb/serial/keyspan_usa49msg.h | 282 + drivers/usb/serial/keyspan_usa49w_fw.h | 464 + drivers/usb/serial/keyspan_usa49wlc_fw.h | 476 + drivers/usb/serial/keyspan_usa90msg.h | 198 + drivers/usb/serial/kl5kusb105.c | 1034 + drivers/usb/serial/kl5kusb105.h | 69 + drivers/usb/serial/kobil_sct.c | 774 + drivers/usb/serial/kobil_sct.h | 60 + drivers/usb/serial/mct_u232.c | 781 + drivers/usb/serial/mct_u232.h | 453 + drivers/usb/serial/omninet.c | 362 + drivers/usb/serial/pl2303.c | 1200 + drivers/usb/serial/pl2303.h | 57 + drivers/usb/serial/safe_serial.c | 451 + drivers/usb/serial/ti_fw_3410.h | 885 + drivers/usb/serial/ti_fw_5052.h | 885 + drivers/usb/serial/ti_usb_3410_5052.c | 1842 ++ drivers/usb/serial/ti_usb_3410_5052.h | 224 + drivers/usb/serial/usb-serial.c | 1435 + drivers/usb/serial/usb-serial.h | 332 + drivers/usb/serial/visor.c | 1161 + drivers/usb/serial/visor.h | 151 + drivers/usb/serial/whiteheat.c | 1512 + drivers/usb/serial/whiteheat.h | 282 + drivers/usb/serial/whiteheat_fw.h | 1669 ++ drivers/usb/serial/xircom_pgs.S | 1192 + drivers/usb/serial/xircom_pgs_fw.h | 103 + drivers/usb/storage/Kconfig | 113 + drivers/usb/storage/Makefile | 23 + drivers/usb/storage/datafab.c | 669 + drivers/usb/storage/datafab.h | 40 + drivers/usb/storage/debug.c | 177 + drivers/usb/storage/debug.h | 65 + drivers/usb/storage/dpcm.c | 89 + drivers/usb/storage/dpcm.h | 34 + drivers/usb/storage/freecom.c | 488 + drivers/usb/storage/freecom.h | 36 + drivers/usb/storage/initializers.c | 93 + drivers/usb/storage/initializers.h | 54 + drivers/usb/storage/isd200.c | 1442 + drivers/usb/storage/isd200.h | 31 + drivers/usb/storage/jumpshot.c | 596 + drivers/usb/storage/jumpshot.h | 39 + drivers/usb/storage/protocol.c | 254 + drivers/usb/storage/protocol.h | 74 + drivers/usb/storage/scsiglue.c | 500 + drivers/usb/storage/scsiglue.h | 49 + drivers/usb/storage/sddr09.c | 1608 + drivers/usb/storage/sddr09.h | 48 + drivers/usb/storage/sddr55.c | 938 + drivers/usb/storage/sddr55.h | 34 + drivers/usb/storage/shuttle_usbat.c | 1712 ++ drivers/usb/storage/shuttle_usbat.h | 123 + drivers/usb/storage/transport.c | 1215 + drivers/usb/storage/transport.h | 174 + drivers/usb/storage/unusual_devs.h | 986 + drivers/usb/storage/usb.c | 1051 + drivers/usb/storage/usb.h | 204 + drivers/usb/usb-skeleton.c | 360 + drivers/video/68328fb.c | 506 + drivers/video/Kconfig | 1497 + drivers/video/Makefile | 100 + drivers/video/S3triofb.c | 789 + drivers/video/acornfb.c | 1472 + drivers/video/acornfb.h | 198 + drivers/video/amba-clcd.c | 533 + drivers/video/amifb.c | 3812 +++ drivers/video/asiliantfb.c | 617 + drivers/video/atafb.c | 3098 ++ drivers/video/aty/Makefile | 15 + drivers/video/aty/ati_ids.h | 211 + drivers/video/aty/aty128fb.c | 2485 ++ drivers/video/aty/atyfb.h | 359 + drivers/video/aty/atyfb_base.c | 3720 +++ drivers/video/aty/mach64_accel.c | 433 + drivers/video/aty/mach64_ct.c | 619 + drivers/video/aty/mach64_cursor.c | 226 + drivers/video/aty/mach64_gx.c | 912 + drivers/video/aty/radeon_accel.c | 316 + drivers/video/aty/radeon_base.c | 2587 ++ drivers/video/aty/radeon_i2c.c | 265 + drivers/video/aty/radeon_monitor.c | 1010 + drivers/video/aty/radeon_pm.c | 2801 ++ drivers/video/aty/radeonfb.h | 625 + drivers/video/aty/xlinit.c | 354 + drivers/video/au1100fb.c | 676 + drivers/video/au1100fb.h | 381 + drivers/video/backlight/Kconfig | 52 + drivers/video/backlight/Makefile | 5 + drivers/video/backlight/backlight.c | 264 + drivers/video/backlight/corgi_bl.c | 198 + drivers/video/backlight/lcd.c | 263 + drivers/video/bt431.h | 236 + drivers/video/bt455.h | 95 + drivers/video/bw2.c | 428 + drivers/video/c2p.c | 229 + drivers/video/c2p.h | 16 + drivers/video/cfbcopyarea.c | 441 + drivers/video/cfbfillrect.c | 454 + drivers/video/cfbimgblt.c | 339 + drivers/video/cg14.c | 648 + drivers/video/cg3.c | 489 + drivers/video/cg6.c | 801 + drivers/video/chipsfb.c | 522 + drivers/video/cirrusfb.c | 3326 +++ drivers/video/clps711xfb.c | 443 + drivers/video/console/Kconfig | 191 + drivers/video/console/Makefile | 43 + drivers/video/console/bitblit.c | 405 + drivers/video/console/dummycon.c | 80 + drivers/video/console/fbcon.c | 2814 ++ drivers/video/console/fbcon.h | 170 + drivers/video/console/font_6x11.c | 3351 +++ drivers/video/console/font_8x16.c | 4631 +++ drivers/video/console/font_8x8.c | 2583 ++ drivers/video/console/font_acorn_8x8.c | 276 + drivers/video/console/font_mini_4x6.c | 2158 ++ drivers/video/console/font_pearl_8x8.c | 2587 ++ drivers/video/console/font_sun12x22.c | 6220 ++++ drivers/video/console/font_sun8x16.c | 275 + drivers/video/console/fonts.c | 139 + drivers/video/console/mdacon.c | 603 + drivers/video/console/newport_con.c | 745 + drivers/video/console/prom.uni | 11 + drivers/video/console/promcon.c | 599 + drivers/video/console/sticon.c | 392 + drivers/video/console/sticore.c | 1088 + drivers/video/console/tileblit.c | 148 + drivers/video/console/vgacon.c | 1103 + drivers/video/controlfb.c | 1102 + drivers/video/controlfb.h | 145 + drivers/video/cyber2000fb.c | 1761 ++ drivers/video/cyber2000fb.h | 508 + drivers/video/cyberfb.c | 2296 ++ drivers/video/cyberfb.h | 415 + drivers/video/dnfb.c | 302 + drivers/video/edid.h | 138 + drivers/video/epson1355fb.c | 774 + drivers/video/fbcmap.c | 337 + drivers/video/fbmem.c | 1371 + drivers/video/fbmon.c | 1258 + drivers/video/fbsysfs.c | 389 + drivers/video/ffb.c | 1092 + drivers/video/fm2fb.c | 322 + drivers/video/g364fb.c | 258 + drivers/video/gbefb.c | 1280 + drivers/video/geode/Kconfig | 29 + drivers/video/geode/Makefile | 5 + drivers/video/geode/display_gx1.c | 214 + drivers/video/geode/display_gx1.h | 154 + drivers/video/geode/geodefb.h | 39 + drivers/video/geode/gx1fb_core.c | 359 + drivers/video/geode/video_cs5530.c | 195 + drivers/video/geode/video_cs5530.h | 75 + drivers/video/hgafb.c | 619 + drivers/video/hitfb.c | 350 + drivers/video/hpfb.c | 416 + drivers/video/i810/Makefile | 14 + drivers/video/i810/i810.h | 285 + drivers/video/i810/i810_accel.c | 449 + drivers/video/i810/i810_dvt.c | 307 + drivers/video/i810/i810_gtf.c | 275 + drivers/video/i810/i810_main.c | 2062 ++ drivers/video/i810/i810_main.h | 127 + drivers/video/i810/i810_regs.h | 274 + drivers/video/igafb.c | 579 + drivers/video/imsttfb.c | 1626 + drivers/video/intelfb/Makefile | 8 + drivers/video/intelfb/intelfb.h | 280 + drivers/video/intelfb/intelfbdrv.c | 1570 + drivers/video/intelfb/intelfbdrv.h | 68 + drivers/video/intelfb/intelfbhw.c | 1780 ++ drivers/video/intelfb/intelfbhw.h | 570 + drivers/video/kyro/Makefile | 8 + drivers/video/kyro/STG4000InitDevice.c | 326 + drivers/video/kyro/STG4000Interface.h | 60 + drivers/video/kyro/STG4000OverlayDevice.c | 600 + drivers/video/kyro/STG4000Ramdac.c | 163 + drivers/video/kyro/STG4000Reg.h | 283 + drivers/video/kyro/STG4000VTG.c | 170 + drivers/video/kyro/fbdev.c | 820 + drivers/video/leo.c | 666 + drivers/video/logo/Kconfig | 67 + drivers/video/logo/Makefile | 54 + drivers/video/logo/clut_vga16.ppm | 20 + drivers/video/logo/logo.c | 103 + drivers/video/logo/logo_dec_clut224.ppm | 1604 + drivers/video/logo/logo_linux_clut224.ppm | 1604 + drivers/video/logo/logo_linux_mono.pbm | 203 + drivers/video/logo/logo_linux_vga16.ppm | 1604 + drivers/video/logo/logo_mac_clut224.ppm | 1604 + drivers/video/logo/logo_parisc_clut224.ppm | 1604 + drivers/video/logo/logo_sgi_clut224.ppm | 1604 + drivers/video/logo/logo_sun_clut224.ppm | 1604 + drivers/video/logo/logo_superh_clut224.ppm | 1604 + drivers/video/logo/logo_superh_mono.pbm | 203 + drivers/video/logo/logo_superh_vga16.ppm | 1604 + drivers/video/macfb.c | 970 + drivers/video/macmodes.c | 389 + drivers/video/macmodes.h | 70 + drivers/video/matrox/Makefile | 11 + drivers/video/matrox/g450_pll.c | 479 + drivers/video/matrox/g450_pll.h | 10 + drivers/video/matrox/i2c-matroxfb.c | 223 + drivers/video/matrox/matroxfb_DAC1064.c | 1086 + drivers/video/matrox/matroxfb_DAC1064.h | 164 + drivers/video/matrox/matroxfb_Ti3026.c | 739 + drivers/video/matrox/matroxfb_Ti3026.h | 13 + drivers/video/matrox/matroxfb_accel.c | 497 + drivers/video/matrox/matroxfb_accel.h | 8 + drivers/video/matrox/matroxfb_base.c | 2589 ++ drivers/video/matrox/matroxfb_base.h | 781 + drivers/video/matrox/matroxfb_crtc2.c | 741 + drivers/video/matrox/matroxfb_crtc2.h | 36 + drivers/video/matrox/matroxfb_g450.c | 626 + drivers/video/matrox/matroxfb_g450.h | 14 + drivers/video/matrox/matroxfb_maven.c | 1328 + drivers/video/matrox/matroxfb_maven.h | 20 + drivers/video/matrox/matroxfb_misc.c | 777 + drivers/video/matrox/matroxfb_misc.h | 18 + drivers/video/maxinefb.c | 180 + drivers/video/modedb.c | 892 + drivers/video/neofb.c | 2315 ++ drivers/video/nvidia/Makefile | 12 + drivers/video/nvidia/nv_accel.c | 419 + drivers/video/nvidia/nv_dma.h | 188 + drivers/video/nvidia/nv_hw.c | 1593 + drivers/video/nvidia/nv_i2c.c | 215 + drivers/video/nvidia/nv_local.h | 107 + drivers/video/nvidia/nv_of.c | 59 + drivers/video/nvidia/nv_proto.h | 58 + drivers/video/nvidia/nv_setup.c | 636 + drivers/video/nvidia/nv_type.h | 174 + drivers/video/nvidia/nvidia.c | 1729 ++ drivers/video/offb.c | 538 + drivers/video/p9100.c | 379 + drivers/video/platinumfb.c | 693 + drivers/video/platinumfb.h | 366 + drivers/video/pm2fb.c | 1314 + drivers/video/pm3fb.c | 3646 +++ drivers/video/pmag-aa-fb.c | 514 + drivers/video/pmag-ba-fb.c | 182 + drivers/video/pmagb-b-fb.c | 182 + drivers/video/pvr2fb.c | 1125 + drivers/video/pxafb.c | 1390 + drivers/video/pxafb.h | 129 + drivers/video/q40fb.c | 160 + drivers/video/radeonfb.c | 3168 ++ drivers/video/retz3fb.c | 1587 + drivers/video/retz3fb.h | 286 + drivers/video/riva/Makefile | 11 + drivers/video/riva/fbdev.c | 2229 ++ drivers/video/riva/nv4ref.h | 2445 ++ drivers/video/riva/nv_driver.c | 425 + drivers/video/riva/nv_type.h | 58 + drivers/video/riva/nvreg.h | 188 + drivers/video/riva/riva_hw.c | 2259 ++ drivers/video/riva/riva_hw.h | 548 + drivers/video/riva/riva_tbl.h | 1008 + drivers/video/riva/rivafb-i2c.c | 214 + drivers/video/riva/rivafb.h | 79 + drivers/video/s1d13xxxfb.c | 772 + drivers/video/sa1100fb.c | 1574 + drivers/video/sa1100fb.h | 147 + drivers/video/savage/Makefile | 9 + drivers/video/savage/savagefb-i2c.c | 282 + drivers/video/savage/savagefb.h | 354 + drivers/video/savage/savagefb_accel.c | 136 + drivers/video/savage/savagefb_driver.c | 2279 ++ drivers/video/sbuslib.c | 184 + drivers/video/sbuslib.h | 24 + drivers/video/sgivwfb.c | 901 + drivers/video/sis/300vtbl.h | 1965 ++ drivers/video/sis/310vtbl.h | 2754 ++ drivers/video/sis/Makefile | 7 + drivers/video/sis/init.c | 5318 ++++ drivers/video/sis/init.h | 2472 ++ drivers/video/sis/init301.c | 12239 ++++++++ drivers/video/sis/init301.h | 410 + drivers/video/sis/initdef.h | 671 + drivers/video/sis/oem300.h | 859 + drivers/video/sis/oem310.h | 449 + drivers/video/sis/osdef.h | 131 + drivers/video/sis/sis.h | 573 + drivers/video/sis/sis_accel.c | 678 + drivers/video/sis/sis_accel.h | 409 + drivers/video/sis/sis_main.c | 6027 ++++ drivers/video/sis/sis_main.h | 955 + drivers/video/sis/vgatypes.h | 242 + drivers/video/sis/vstruct.h | 676 + drivers/video/skeletonfb.c | 684 + drivers/video/softcursor.c | 79 + drivers/video/sstfb.c | 1722 ++ drivers/video/sticore.h | 380 + drivers/video/stifb.c | 1495 + drivers/video/sun3fb.c | 704 + drivers/video/tcx.c | 504 + drivers/video/tdfxfb.c | 1366 + drivers/video/tgafb.c | 1557 + drivers/video/tridentfb.c | 1294 + drivers/video/tx3912fb.c | 328 + drivers/video/valkyriefb.c | 590 + drivers/video/valkyriefb.h | 211 + drivers/video/vesafb.c | 456 + drivers/video/vfb.c | 528 + drivers/video/vga16fb.c | 1444 + drivers/video/vgastate.c | 504 + drivers/video/virgefb.c | 2513 ++ drivers/video/virgefb.h | 288 + drivers/video/w100fb.c | 1873 ++ drivers/video/w100fb.h | 615 + drivers/w1/Kconfig | 57 + drivers/w1/Makefile | 20 + drivers/w1/ds_w1_bridge.c | 174 + drivers/w1/dscore.c | 789 + drivers/w1/dscore.h | 170 + drivers/w1/matrox_w1.c | 247 + drivers/w1/w1.c | 835 + drivers/w1/w1.h | 145 + drivers/w1/w1_family.c | 150 + drivers/w1/w1_family.h | 65 + drivers/w1/w1_int.c | 220 + drivers/w1/w1_int.h | 36 + drivers/w1/w1_io.c | 195 + drivers/w1/w1_io.h | 39 + drivers/w1/w1_log.h | 38 + drivers/w1/w1_netlink.c | 66 + drivers/w1/w1_netlink.h | 57 + drivers/w1/w1_smem.c | 118 + drivers/w1/w1_therm.c | 205 + drivers/zorro/Kconfig | 18 + drivers/zorro/Makefile | 21 + drivers/zorro/gen-devlist.c | 107 + drivers/zorro/names.c | 109 + drivers/zorro/proc.c | 139 + drivers/zorro/zorro-driver.c | 150 + drivers/zorro/zorro-sysfs.c | 98 + drivers/zorro/zorro.c | 193 + drivers/zorro/zorro.h | 4 + drivers/zorro/zorro.ids | 476 + fs/Kconfig | 1729 ++ fs/Kconfig.binfmt | 134 + fs/Makefile | 97 + fs/adfs/Makefile | 7 + fs/adfs/adfs.h | 127 + fs/adfs/dir.c | 302 + fs/adfs/dir_f.c | 460 + fs/adfs/dir_f.h | 65 + fs/adfs/dir_fplus.c | 179 + fs/adfs/dir_fplus.h | 45 + fs/adfs/file.c | 43 + fs/adfs/inode.c | 395 + fs/adfs/map.c | 296 + fs/adfs/super.c | 508 + fs/affs/Changes | 343 + fs/affs/Makefile | 9 + fs/affs/affs.h | 304 + fs/affs/amigaffs.c | 509 + fs/affs/bitmap.c | 390 + fs/affs/dir.c | 155 + fs/affs/file.c | 920 + fs/affs/inode.c | 411 + fs/affs/namei.c | 443 + fs/affs/super.c | 569 + fs/affs/symlink.c | 78 + fs/afs/Makefile | 28 + fs/afs/cache.h | 27 + fs/afs/callback.c | 168 + fs/afs/cell.c | 569 + fs/afs/cell.h | 78 + fs/afs/cmservice.c | 652 + fs/afs/cmservice.h | 29 + fs/afs/dir.c | 666 + fs/afs/errors.h | 34 + fs/afs/file.c | 305 + fs/afs/fsclient.c | 837 + fs/afs/fsclient.h | 54 + fs/afs/inode.c | 287 + fs/afs/internal.h | 140 + fs/afs/kafsasyncd.c | 257 + fs/afs/kafsasyncd.h | 52 + fs/afs/kafstimod.c | 204 + fs/afs/kafstimod.h | 49 + fs/afs/main.c | 286 + fs/afs/misc.c | 39 + fs/afs/mntpt.c | 287 + fs/afs/mount.h | 23 + fs/afs/proc.c | 857 + fs/afs/server.c | 502 + fs/afs/server.h | 102 + fs/afs/super.c | 441 + fs/afs/super.h | 43 + fs/afs/transport.h | 21 + fs/afs/types.h | 125 + fs/afs/vlclient.c | 695 + fs/afs/vlclient.h | 93 + fs/afs/vlocation.c | 954 + fs/afs/vnode.c | 395 + fs/afs/vnode.h | 94 + fs/afs/volume.c | 520 + fs/afs/volume.h | 142 + fs/aio.c | 1729 ++ fs/attr.c | 208 + fs/autofs/Makefile | 7 + fs/autofs/autofs_i.h | 164 + fs/autofs/dirhash.c | 249 + fs/autofs/init.c | 52 + fs/autofs/inode.c | 250 + fs/autofs/root.c | 564 + fs/autofs/symlink.c | 25 + fs/autofs/waitq.c | 206 + fs/autofs4/Makefile | 7 + fs/autofs4/autofs_i.h | 193 + fs/autofs4/expire.c | 358 + fs/autofs4/init.c | 42 + fs/autofs4/inode.c | 324 + fs/autofs4/root.c | 808 + fs/autofs4/symlink.c | 25 + fs/autofs4/waitq.c | 303 + fs/bad_inode.c | 123 + fs/befs/ChangeLog | 417 + fs/befs/Makefile | 7 + fs/befs/TODO | 14 + fs/befs/attribute.c | 117 + fs/befs/befs.h | 154 + fs/befs/befs_fs_types.h | 213 + fs/befs/btree.c | 788 + fs/befs/btree.h | 13 + fs/befs/datastream.c | 528 + fs/befs/datastream.h | 19 + fs/befs/debug.c | 283 + fs/befs/endian.h | 126 + fs/befs/inode.c | 53 + fs/befs/inode.h | 8 + fs/befs/io.c | 83 + fs/befs/io.h | 9 + fs/befs/linuxvfs.c | 964 + fs/befs/super.c | 112 + fs/befs/super.h | 8 + fs/bfs/Makefile | 7 + fs/bfs/bfs.h | 60 + fs/bfs/dir.c | 362 + fs/bfs/file.c | 162 + fs/bfs/inode.c | 420 + fs/binfmt_aout.c | 550 + fs/binfmt_elf.c | 1677 ++ fs/binfmt_elf_fdpic.c | 1101 + fs/binfmt_em86.c | 115 + fs/binfmt_flat.c | 901 + fs/binfmt_misc.c | 780 + fs/binfmt_script.c | 116 + fs/binfmt_som.c | 309 + fs/bio.c | 1096 + fs/block_dev.c | 923 + fs/buffer.c | 3152 ++ fs/char_dev.c | 449 + fs/cifs/AUTHORS | 42 + fs/cifs/CHANGES | 671 + fs/cifs/Makefile | 6 + fs/cifs/README | 475 + fs/cifs/TODO | 104 + fs/cifs/asn1.c | 618 + fs/cifs/cifs_debug.c | 805 + fs/cifs/cifs_debug.h | 66 + fs/cifs/cifs_fs_sb.h | 39 + fs/cifs/cifs_unicode.c | 87 + fs/cifs/cifs_unicode.h | 353 + fs/cifs/cifs_uniupr.h | 253 + fs/cifs/cifsencrypt.c | 209 + fs/cifs/cifsencrypt.h | 34 + fs/cifs/cifsfs.c | 913 + fs/cifs/cifsfs.h | 98 + fs/cifs/cifsglob.h | 439 + fs/cifs/cifspdu.h | 1987 ++ fs/cifs/cifsproto.h | 269 + fs/cifs/cifssmb.c | 4186 +++ fs/cifs/connect.c | 3064 ++ fs/cifs/dir.c | 523 + fs/cifs/fcntl.c | 117 + fs/cifs/file.c | 1675 ++ fs/cifs/inode.c | 1096 + fs/cifs/ioctl.c | 49 + fs/cifs/link.c | 328 + fs/cifs/md4.c | 205 + fs/cifs/md5.c | 363 + fs/cifs/md5.h | 38 + fs/cifs/misc.c | 516 + fs/cifs/netmisc.c | 904 + fs/cifs/nterr.c | 687 + fs/cifs/nterr.h | 556 + fs/cifs/ntlmssp.h | 101 + fs/cifs/readdir.c | 867 + fs/cifs/rfc1002pdu.h | 79 + fs/cifs/smbdes.c | 412 + fs/cifs/smbencrypt.c | 285 + fs/cifs/smberr.h | 115 + fs/cifs/transport.c | 619 + fs/cifs/xattr.c | 334 + fs/coda/Makefile | 12 + fs/coda/cache.c | 120 + fs/coda/cnode.c | 172 + fs/coda/coda_linux.c | 197 + fs/coda/dir.c | 704 + fs/coda/file.c | 300 + fs/coda/inode.c | 321 + fs/coda/pioctl.c | 95 + fs/coda/psdev.c | 462 + fs/coda/symlink.c | 55 + fs/coda/sysctl.c | 254 + fs/coda/upcall.c | 914 + fs/compat.c | 1950 ++ fs/compat_ioctl.c | 3082 ++ fs/cramfs/Makefile | 7 + fs/cramfs/README | 168 + fs/cramfs/inode.c | 525 + fs/cramfs/uncompress.c | 77 + fs/dcache.c | 1764 ++ fs/dcookies.c | 330 + fs/debugfs/Makefile | 4 + fs/debugfs/file.c | 262 + fs/debugfs/inode.c | 328 + fs/devfs/Makefile | 8 + fs/devfs/base.c | 2838 ++ fs/devfs/util.c | 97 + fs/devpts/Makefile | 8 + fs/devpts/inode.c | 242 + fs/devpts/xattr_security.c | 47 + fs/direct-io.c | 1258 + fs/dnotify.c | 183 + fs/dquot.c | 1850 ++ fs/efs/Makefile | 7 + fs/efs/dir.c | 113 + fs/efs/file.c | 60 + fs/efs/inode.c | 305 + fs/efs/namei.c | 110 + fs/efs/super.c | 343 + fs/efs/symlink.c | 58 + fs/eventpoll.c | 1639 + fs/exec.c | 1498 + fs/exportfs/Makefile | 6 + fs/exportfs/expfs.c | 540 + fs/ext2/CHANGES | 157 + fs/ext2/Makefile | 12 + fs/ext2/acl.c | 518 + fs/ext2/acl.h | 82 + fs/ext2/balloc.c | 699 + fs/ext2/bitmap.c | 25 + fs/ext2/dir.c | 673 + fs/ext2/ext2.h | 160 + fs/ext2/file.c | 68 + fs/ext2/fsync.c | 51 + fs/ext2/ialloc.c | 735 + fs/ext2/inode.c | 1276 + fs/ext2/ioctl.c | 81 + fs/ext2/namei.c | 418 + fs/ext2/super.c | 1161 + fs/ext2/symlink.c | 52 + fs/ext2/xattr.c | 1043 + fs/ext2/xattr.h | 118 + fs/ext2/xattr_security.c | 53 + fs/ext2/xattr_trusted.c | 64 + fs/ext2/xattr_user.c | 77 + fs/ext3/Makefile | 12 + fs/ext3/acl.c | 547 + fs/ext3/acl.h | 84 + fs/ext3/balloc.c | 1600 + fs/ext3/bitmap.c | 26 + fs/ext3/dir.c | 519 + fs/ext3/file.c | 131 + fs/ext3/fsync.c | 88 + fs/ext3/hash.c | 152 + fs/ext3/ialloc.c | 794 + fs/ext3/inode.c | 3132 ++ fs/ext3/ioctl.c | 243 + fs/ext3/namei.c | 2378 ++ fs/ext3/resize.c | 996 + fs/ext3/super.c | 2539 ++ fs/ext3/symlink.c | 54 + fs/ext3/xattr.c | 1320 + fs/ext3/xattr.h | 135 + fs/ext3/xattr_security.c | 55 + fs/ext3/xattr_trusted.c | 65 + fs/ext3/xattr_user.c | 79 + fs/fat/Makefile | 7 + fs/fat/cache.c | 324 + fs/fat/dir.c | 1271 + fs/fat/fatent.c | 612 + fs/fat/file.c | 308 + fs/fat/inode.c | 1351 + fs/fat/misc.c | 225 + fs/fcntl.c | 601 + fs/fifo.c | 155 + fs/file.c | 254 + fs/file_table.c | 255 + fs/filesystems.c | 236 + fs/freevxfs/Makefile | 8 + fs/freevxfs/vxfs.h | 264 + fs/freevxfs/vxfs_bmap.c | 280 + fs/freevxfs/vxfs_dir.h | 92 + fs/freevxfs/vxfs_extern.h | 76 + fs/freevxfs/vxfs_fshead.c | 202 + fs/freevxfs/vxfs_fshead.h | 67 + fs/freevxfs/vxfs_immed.c | 114 + fs/freevxfs/vxfs_inode.c | 351 + fs/freevxfs/vxfs_inode.h | 180 + fs/freevxfs/vxfs_kcompat.h | 49 + fs/freevxfs/vxfs_lookup.c | 328 + fs/freevxfs/vxfs_olt.c | 132 + fs/freevxfs/vxfs_olt.h | 145 + fs/freevxfs/vxfs_subr.c | 190 + fs/freevxfs/vxfs_super.c | 278 + fs/fs-writeback.c | 695 + fs/hfs/Makefile | 10 + fs/hfs/attr.c | 121 + fs/hfs/bfind.c | 210 + fs/hfs/bitmap.c | 243 + fs/hfs/bnode.c | 498 + fs/hfs/brec.c | 496 + fs/hfs/btree.c | 327 + fs/hfs/btree.h | 168 + fs/hfs/catalog.c | 347 + fs/hfs/dir.c | 330 + fs/hfs/extent.c | 527 + fs/hfs/hfs.h | 287 + fs/hfs/hfs_fs.h | 286 + fs/hfs/inode.c | 636 + fs/hfs/mdb.c | 343 + fs/hfs/part_tbl.c | 117 + fs/hfs/string.c | 115 + fs/hfs/super.c | 395 + fs/hfs/sysdep.c | 40 + fs/hfs/trans.c | 72 + fs/hfsplus/Makefile | 9 + fs/hfsplus/bfind.c | 210 + fs/hfsplus/bitmap.c | 221 + fs/hfsplus/bnode.c | 662 + fs/hfsplus/brec.c | 491 + fs/hfsplus/btree.c | 319 + fs/hfsplus/catalog.c | 358 + fs/hfsplus/dir.c | 484 + fs/hfsplus/extents.c | 505 + fs/hfsplus/hfsplus_fs.h | 414 + fs/hfsplus/hfsplus_raw.h | 326 + fs/hfsplus/inode.c | 555 + fs/hfsplus/ioctl.c | 188 + fs/hfsplus/options.c | 162 + fs/hfsplus/part_tbl.c | 133 + fs/hfsplus/super.c | 502 + fs/hfsplus/tables.c | 3245 ++ fs/hfsplus/unicode.c | 271 + fs/hfsplus/wrapper.c | 171 + fs/hostfs/Makefile | 11 + fs/hostfs/hostfs.h | 100 + fs/hostfs/hostfs_kern.c | 1045 + fs/hostfs/hostfs_user.c | 362 + fs/hpfs/Makefile | 8 + fs/hpfs/alloc.c | 456 + fs/hpfs/anode.c | 491 + fs/hpfs/buffer.c | 175 + fs/hpfs/dentry.c | 60 + fs/hpfs/dir.c | 320 + fs/hpfs/dnode.c | 1080 + fs/hpfs/ea.c | 363 + fs/hpfs/file.c | 140 + fs/hpfs/hpfs.h | 493 + fs/hpfs/hpfs_fn.h | 338 + fs/hpfs/inode.c | 291 + fs/hpfs/map.c | 275 + fs/hpfs/name.c | 144 + fs/hpfs/namei.c | 673 + fs/hpfs/super.c | 701 + fs/hppfs/Makefile | 9 + fs/hppfs/hppfs_kern.c | 815 + fs/hugetlbfs/Makefile | 7 + fs/hugetlbfs/inode.c | 853 + fs/inode.c | 1377 + fs/ioctl.c | 186 + fs/isofs/Makefile | 10 + fs/isofs/compress.c | 359 + fs/isofs/dir.c | 280 + fs/isofs/export.c | 228 + fs/isofs/inode.c | 1503 + fs/isofs/joliet.c | 103 + fs/isofs/namei.c | 201 + fs/isofs/rock.c | 565 + fs/isofs/rock.h | 119 + fs/isofs/util.c | 83 + fs/isofs/zisofs.h | 21 + fs/jbd/Makefile | 7 + fs/jbd/checkpoint.c | 636 + fs/jbd/commit.c | 844 + fs/jbd/journal.c | 2003 ++ fs/jbd/recovery.c | 591 + fs/jbd/revoke.c | 702 + fs/jbd/transaction.c | 2062 ++ fs/jffs/Makefile | 11 + fs/jffs/inode-v23.c | 1847 ++ fs/jffs/intrep.c | 3457 +++ fs/jffs/intrep.h | 60 + fs/jffs/jffs_fm.c | 795 + fs/jffs/jffs_fm.h | 148 + fs/jffs/jffs_proc.c | 261 + fs/jffs/jffs_proc.h | 28 + fs/jffs2/LICENCE | 35 + fs/jffs2/Makefile | 18 + fs/jffs2/README.Locking | 148 + fs/jffs2/TODO | 40 + fs/jffs2/background.c | 140 + fs/jffs2/build.c | 371 + fs/jffs2/compr.c | 469 + fs/jffs2/compr.h | 115 + fs/jffs2/compr_rtime.c | 132 + fs/jffs2/compr_rubin.c | 373 + fs/jffs2/compr_rubin.h | 21 + fs/jffs2/compr_zlib.c | 218 + fs/jffs2/comprtest.c | 307 + fs/jffs2/dir.c | 799 + fs/jffs2/erase.c | 442 + fs/jffs2/file.c | 290 + fs/jffs2/fs.c | 677 + fs/jffs2/gc.c | 1246 + fs/jffs2/histo.h | 3 + fs/jffs2/histo_mips.h | 2 + fs/jffs2/ioctl.c | 23 + fs/jffs2/malloc.c | 205 + fs/jffs2/nodelist.c | 681 + fs/jffs2/nodelist.h | 473 + fs/jffs2/nodemgmt.c | 838 + fs/jffs2/os-linux.h | 217 + fs/jffs2/pushpull.h | 72 + fs/jffs2/read.c | 246 + fs/jffs2/readinode.c | 695 + fs/jffs2/scan.c | 916 + fs/jffs2/super.c | 365 + fs/jffs2/symlink.c | 45 + fs/jffs2/wbuf.c | 1184 + fs/jffs2/write.c | 708 + fs/jffs2/writev.c | 50 + fs/jfs/Makefile | 15 + fs/jfs/acl.c | 234 + fs/jfs/endian24.h | 49 + fs/jfs/file.c | 119 + fs/jfs/inode.c | 384 + fs/jfs/jfs_acl.h | 30 + fs/jfs/jfs_btree.h | 172 + fs/jfs/jfs_debug.c | 154 + fs/jfs/jfs_debug.h | 122 + fs/jfs/jfs_dinode.h | 151 + fs/jfs/jfs_dmap.c | 4272 +++ fs/jfs/jfs_dmap.h | 314 + fs/jfs/jfs_dtree.c | 4752 +++ fs/jfs/jfs_dtree.h | 279 + fs/jfs/jfs_extent.c | 668 + fs/jfs/jfs_extent.h | 31 + fs/jfs/jfs_filsys.h | 280 + fs/jfs/jfs_imap.c | 3270 ++ fs/jfs/jfs_imap.h | 175 + fs/jfs/jfs_incore.h | 197 + fs/jfs/jfs_inode.c | 104 + fs/jfs/jfs_inode.h | 23 + fs/jfs/jfs_lock.h | 51 + fs/jfs/jfs_logmgr.c | 2524 ++ fs/jfs/jfs_logmgr.h | 510 + fs/jfs/jfs_metapage.c | 580 + fs/jfs/jfs_metapage.h | 115 + fs/jfs/jfs_mount.c | 512 + fs/jfs/jfs_superblock.h | 113 + fs/jfs/jfs_txnmgr.c | 3131 ++ fs/jfs/jfs_txnmgr.h | 318 + fs/jfs/jfs_types.h | 192 + fs/jfs/jfs_umount.c | 178 + fs/jfs/jfs_unicode.c | 137 + fs/jfs/jfs_unicode.h | 155 + fs/jfs/jfs_uniupr.c | 134 + fs/jfs/jfs_xattr.h | 64 + fs/jfs/jfs_xtree.c | 4485 +++ fs/jfs/jfs_xtree.h | 140 + fs/jfs/namei.c | 1540 + fs/jfs/resize.c | 537 + fs/jfs/super.c | 700 + fs/jfs/symlink.c | 39 + fs/jfs/xattr.c | 1127 + fs/libfs.c | 549 + fs/lockd/Makefile | 10 + fs/lockd/clntlock.c | 245 + fs/lockd/clntproc.c | 820 + fs/lockd/host.c | 346 + fs/lockd/mon.c | 246 + fs/lockd/svc.c | 519 + fs/lockd/svc4proc.c | 580 + fs/lockd/svclock.c | 686 + fs/lockd/svcproc.c | 606 + fs/lockd/svcshare.c | 111 + fs/lockd/svcsubs.c | 309 + fs/lockd/xdr.c | 635 + fs/lockd/xdr4.c | 580 + fs/locks.c | 2212 ++ fs/mbcache.c | 677 + fs/minix/Makefile | 7 + fs/minix/bitmap.c | 269 + fs/minix/dir.c | 409 + fs/minix/file.c | 45 + fs/minix/inode.c | 598 + fs/minix/itree_common.c | 362 + fs/minix/itree_v1.c | 61 + fs/minix/itree_v2.c | 66 + fs/minix/minix.h | 96 + fs/minix/namei.c | 317 + fs/mpage.c | 772 + fs/msdos/Makefile | 7 + fs/msdos/namei.c | 711 + fs/namei.c | 2454 ++ fs/namespace.c | 1465 + fs/ncpfs/Kconfig | 87 + fs/ncpfs/Makefile | 16 + fs/ncpfs/dir.c | 1260 + fs/ncpfs/file.c | 300 + fs/ncpfs/getopt.c | 75 + fs/ncpfs/getopt.h | 16 + fs/ncpfs/inode.c | 1012 + fs/ncpfs/ioctl.c | 649 + fs/ncpfs/mmap.c | 128 + fs/ncpfs/ncplib_kernel.c | 1355 + fs/ncpfs/ncplib_kernel.h | 259 + fs/ncpfs/ncpsign_kernel.c | 127 + fs/ncpfs/ncpsign_kernel.h | 28 + fs/ncpfs/sock.c | 850 + fs/ncpfs/symlink.c | 183 + fs/nfs/Makefile | 15 + fs/nfs/callback.c | 187 + fs/nfs/callback.h | 70 + fs/nfs/callback_proc.c | 85 + fs/nfs/callback_xdr.c | 481 + fs/nfs/delegation.c | 342 + fs/nfs/delegation.h | 57 + fs/nfs/dir.c | 1562 + fs/nfs/direct.c | 808 + fs/nfs/file.c | 484 + fs/nfs/idmap.c | 498 + fs/nfs/inode.c | 2003 ++ fs/nfs/mount_clnt.c | 183 + fs/nfs/nfs2xdr.c | 711 + fs/nfs/nfs3proc.c | 859 + fs/nfs/nfs3xdr.c | 1023 + fs/nfs/nfs4proc.c | 2786 ++ fs/nfs/nfs4renewd.c | 148 + fs/nfs/nfs4state.c | 932 + fs/nfs/nfs4xdr.c | 4034 +++ fs/nfs/nfsroot.c | 513 + fs/nfs/pagelist.c | 309 + fs/nfs/proc.c | 655 + fs/nfs/read.c | 618 + fs/nfs/symlink.c | 117 + fs/nfs/unlink.c | 227 + fs/nfs/write.c | 1431 + fs/nfsctl.c | 118 + fs/nfsd/Makefile | 12 + fs/nfsd/auth.c | 63 + fs/nfsd/export.c | 1200 + fs/nfsd/lockd.c | 79 + fs/nfsd/nfs3proc.c | 702 + fs/nfsd/nfs3xdr.c | 1092 + fs/nfsd/nfs4acl.c | 954 + fs/nfsd/nfs4callback.c | 547 + fs/nfsd/nfs4idmap.c | 588 + fs/nfsd/nfs4proc.c | 984 + fs/nfsd/nfs4state.c | 3320 +++ fs/nfsd/nfs4xdr.c | 2536 ++ fs/nfsd/nfscache.c | 328 + fs/nfsd/nfsctl.c | 438 + fs/nfsd/nfsfh.c | 532 + fs/nfsd/nfsproc.c | 605 + fs/nfsd/nfssvc.c | 385 + fs/nfsd/nfsxdr.c | 511 + fs/nfsd/stats.c | 101 + fs/nfsd/vfs.c | 1859 ++ fs/nls/Kconfig | 504 + fs/nls/Makefile | 46 + fs/nls/nls_ascii.c | 167 + fs/nls/nls_base.c | 497 + fs/nls/nls_cp1250.c | 347 + fs/nls/nls_cp1251.c | 302 + fs/nls/nls_cp1255.c | 385 + fs/nls/nls_cp437.c | 388 + fs/nls/nls_cp737.c | 351 + fs/nls/nls_cp775.c | 320 + fs/nls/nls_cp850.c | 316 + fs/nls/nls_cp852.c | 338 + fs/nls/nls_cp855.c | 300 + fs/nls/nls_cp857.c | 302 + fs/nls/nls_cp860.c | 365 + fs/nls/nls_cp861.c | 388 + fs/nls/nls_cp862.c | 422 + fs/nls/nls_cp863.c | 382 + fs/nls/nls_cp864.c | 408 + fs/nls/nls_cp865.c | 388 + fs/nls/nls_cp866.c | 306 + fs/nls/nls_cp869.c | 316 + fs/nls/nls_cp874.c | 276 + fs/nls/nls_cp932.c | 7934 +++++ fs/nls/nls_cp936.c | 11019 +++++++ fs/nls/nls_cp949.c | 13947 +++++++++ fs/nls/nls_cp950.c | 9483 ++++++ fs/nls/nls_euc-jp.c | 583 + fs/nls/nls_iso8859-1.c | 258 + fs/nls/nls_iso8859-13.c | 286 + fs/nls/nls_iso8859-14.c | 342 + fs/nls/nls_iso8859-15.c | 308 + fs/nls/nls_iso8859-2.c | 309 + fs/nls/nls_iso8859-3.c | 309 + fs/nls/nls_iso8859-4.c | 309 + fs/nls/nls_iso8859-5.c | 273 + fs/nls/nls_iso8859-6.c | 264 + fs/nls/nls_iso8859-7.c | 318 + fs/nls/nls_iso8859-9.c | 273 + fs/nls/nls_koi8-r.c | 324 + fs/nls/nls_koi8-ru.c | 83 + fs/nls/nls_koi8-u.c | 331 + fs/nls/nls_utf8.c | 61 + fs/ntfs/ChangeLog | 1350 + fs/ntfs/Makefile | 19 + fs/ntfs/aops.c | 2324 ++ fs/ntfs/aops.h | 109 + fs/ntfs/attrib.c | 1258 + fs/ntfs/attrib.h | 100 + fs/ntfs/bitmap.c | 192 + fs/ntfs/bitmap.h | 118 + fs/ntfs/collate.c | 124 + fs/ntfs/collate.h | 50 + fs/ntfs/compress.c | 957 + fs/ntfs/debug.c | 180 + fs/ntfs/debug.h | 67 + fs/ntfs/dir.c | 1569 + fs/ntfs/dir.h | 48 + fs/ntfs/endian.h | 93 + fs/ntfs/file.c | 155 + fs/ntfs/index.c | 461 + fs/ntfs/index.h | 148 + fs/ntfs/inode.c | 2616 ++ fs/ntfs/inode.h | 321 + fs/ntfs/layout.h | 2413 ++ fs/ntfs/lcnalloc.c | 1002 + fs/ntfs/lcnalloc.h | 112 + fs/ntfs/logfile.c | 705 + fs/ntfs/logfile.h | 307 + fs/ntfs/malloc.h | 62 + fs/ntfs/mft.c | 2829 ++ fs/ntfs/mft.h | 127 + fs/ntfs/mst.c | 203 + fs/ntfs/namei.c | 498 + fs/ntfs/ntfs.h | 129 + fs/ntfs/quota.c | 117 + fs/ntfs/quota.h | 35 + fs/ntfs/runlist.c | 1438 + fs/ntfs/runlist.h | 89 + fs/ntfs/super.c | 2771 ++ fs/ntfs/sysctl.c | 85 + fs/ntfs/sysctl.h | 42 + fs/ntfs/time.h | 100 + fs/ntfs/types.h | 66 + fs/ntfs/unistr.c | 384 + fs/ntfs/upcase.c | 90 + fs/ntfs/volume.h | 171 + fs/open.c | 1076 + fs/openpromfs/Makefile | 7 + fs/openpromfs/inode.c | 1098 + fs/partitions/Kconfig | 228 + fs/partitions/Makefile | 20 + fs/partitions/acorn.c | 557 + fs/partitions/acorn.h | 14 + fs/partitions/amiga.c | 128 + fs/partitions/amiga.h | 6 + fs/partitions/atari.c | 149 + fs/partitions/atari.h | 34 + fs/partitions/check.c | 445 + fs/partitions/check.h | 36 + fs/partitions/devfs.c | 130 + fs/partitions/devfs.h | 10 + fs/partitions/efi.c | 645 + fs/partitions/efi.h | 131 + fs/partitions/ibm.c | 191 + fs/partitions/ibm.h | 1 + fs/partitions/ldm.c | 1483 + fs/partitions/ldm.h | 220 + fs/partitions/mac.c | 130 + fs/partitions/mac.h | 44 + fs/partitions/msdos.c | 479 + fs/partitions/msdos.h | 8 + fs/partitions/osf.c | 78 + fs/partitions/osf.h | 7 + fs/partitions/sgi.c | 82 + fs/partitions/sgi.h | 8 + fs/partitions/sun.c | 91 + fs/partitions/sun.h | 7 + fs/partitions/ultrix.c | 47 + fs/partitions/ultrix.h | 5 + fs/pipe.c | 835 + fs/posix_acl.c | 381 + fs/proc/Makefile | 14 + fs/proc/array.c | 484 + fs/proc/base.c | 2056 ++ fs/proc/generic.c | 705 + fs/proc/inode-alloc.txt | 14 + fs/proc/inode.c | 218 + fs/proc/internal.h | 48 + fs/proc/kcore.c | 404 + fs/proc/kmsg.c | 55 + fs/proc/mmu.c | 67 + fs/proc/nommu.c | 135 + fs/proc/proc_devtree.c | 165 + fs/proc/proc_misc.c | 615 + fs/proc/proc_tty.c | 242 + fs/proc/root.c | 161 + fs/proc/task_mmu.c | 235 + fs/proc/task_nommu.c | 164 + fs/qnx4/Makefile | 7 + fs/qnx4/README | 9 + fs/qnx4/bitmap.c | 165 + fs/qnx4/dir.c | 99 + fs/qnx4/file.c | 42 + fs/qnx4/fsync.c | 170 + fs/qnx4/inode.c | 603 + fs/qnx4/namei.c | 249 + fs/qnx4/truncate.c | 39 + fs/quota.c | 382 + fs/quota_v1.c | 200 + fs/quota_v2.c | 693 + fs/ramfs/Makefile | 7 + fs/ramfs/inode.c | 246 + fs/read_write.c | 730 + fs/readdir.c | 300 + fs/reiserfs/Makefile | 36 + fs/reiserfs/README | 161 + fs/reiserfs/bitmap.c | 1169 + fs/reiserfs/dir.c | 275 + fs/reiserfs/do_balan.c | 1597 + fs/reiserfs/file.c | 1408 + fs/reiserfs/fix_node.c | 2518 ++ fs/reiserfs/hashes.c | 209 + fs/reiserfs/ibalance.c | 1058 + fs/reiserfs/inode.c | 2846 ++ fs/reiserfs/ioctl.c | 151 + fs/reiserfs/item_ops.c | 788 + fs/reiserfs/journal.c | 3876 +++ fs/reiserfs/lbalance.c | 1222 + fs/reiserfs/namei.c | 1491 + fs/reiserfs/objectid.c | 206 + fs/reiserfs/prints.c | 727 + fs/reiserfs/procfs.c | 664 + fs/reiserfs/resize.c | 182 + fs/reiserfs/stree.c | 2073 ++ fs/reiserfs/super.c | 2148 ++ fs/reiserfs/tail_conversion.c | 276 + fs/reiserfs/xattr.c | 1450 + fs/reiserfs/xattr_acl.c | 571 + fs/reiserfs/xattr_security.c | 69 + fs/reiserfs/xattr_trusted.c | 81 + fs/reiserfs/xattr_user.c | 99 + fs/romfs/Makefile | 7 + fs/romfs/inode.c | 648 + fs/select.c | 534 + fs/seq_file.c | 440 + fs/smbfs/Makefile | 39 + fs/smbfs/cache.c | 209 + fs/smbfs/dir.c | 693 + fs/smbfs/file.c | 423 + fs/smbfs/getopt.c | 64 + fs/smbfs/getopt.h | 14 + fs/smbfs/inode.c | 849 + fs/smbfs/ioctl.c | 67 + fs/smbfs/proc.c | 3509 +++ fs/smbfs/proto.h | 87 + fs/smbfs/request.c | 823 + fs/smbfs/request.h | 70 + fs/smbfs/smb_debug.h | 34 + fs/smbfs/smbiod.c | 341 + fs/smbfs/sock.c | 388 + fs/smbfs/symlink.c | 70 + fs/stat.c | 410 + fs/super.c | 860 + fs/sysfs/Makefile | 6 + fs/sysfs/bin.c | 204 + fs/sysfs/dir.c | 475 + fs/sysfs/file.c | 447 + fs/sysfs/group.c | 84 + fs/sysfs/inode.c | 165 + fs/sysfs/mount.c | 107 + fs/sysfs/symlink.c | 180 + fs/sysfs/sysfs.h | 95 + fs/sysv/CHANGES | 60 + fs/sysv/ChangeLog | 106 + fs/sysv/INTRO | 182 + fs/sysv/Makefile | 8 + fs/sysv/balloc.c | 239 + fs/sysv/dir.c | 388 + fs/sysv/file.c | 49 + fs/sysv/ialloc.c | 240 + fs/sysv/inode.c | 354 + fs/sysv/itree.c | 475 + fs/sysv/namei.c | 318 + fs/sysv/super.c | 572 + fs/sysv/symlink.c | 20 + fs/sysv/sysv.h | 244 + fs/udf/Makefile | 9 + fs/udf/balloc.c | 959 + fs/udf/crc.c | 178 + fs/udf/dir.c | 268 + fs/udf/directory.c | 343 + fs/udf/ecma_167.h | 864 + fs/udf/file.c | 270 + fs/udf/fsync.c | 56 + fs/udf/ialloc.c | 170 + fs/udf/inode.c | 2010 ++ fs/udf/lowlevel.c | 77 + fs/udf/misc.c | 313 + fs/udf/namei.c | 1334 + fs/udf/osta_udf.h | 296 + fs/udf/partition.c | 226 + fs/udf/super.c | 1934 ++ fs/udf/symlink.c | 123 + fs/udf/truncate.c | 284 + fs/udf/udf_i.h | 26 + fs/udf/udf_sb.h | 139 + fs/udf/udfdecl.h | 167 + fs/udf/udfend.h | 81 + fs/udf/udftime.c | 174 + fs/udf/unicode.c | 516 + fs/ufs/Makefile | 8 + fs/ufs/balloc.c | 818 + fs/ufs/cylinder.c | 209 + fs/ufs/dir.c | 627 + fs/ufs/file.c | 55 + fs/ufs/ialloc.c | 302 + fs/ufs/inode.c | 816 + fs/ufs/namei.c | 375 + fs/ufs/super.c | 1347 + fs/ufs/swab.h | 133 + fs/ufs/symlink.c | 42 + fs/ufs/truncate.c | 477 + fs/ufs/util.c | 257 + fs/ufs/util.h | 526 + fs/umsdos/notes | 17 + fs/vfat/Makefile | 7 + fs/vfat/namei.c | 1082 + fs/xattr.c | 480 + fs/xattr_acl.c | 99 + fs/xfs/Kconfig | 85 + fs/xfs/Makefile | 150 + fs/xfs/linux-2.6/kmem.c | 134 + fs/xfs/linux-2.6/kmem.h | 157 + fs/xfs/linux-2.6/mrlock.h | 106 + fs/xfs/linux-2.6/mutex.h | 53 + fs/xfs/linux-2.6/sema.h | 67 + fs/xfs/linux-2.6/spin.h | 56 + fs/xfs/linux-2.6/sv.h | 89 + fs/xfs/linux-2.6/time.h | 51 + fs/xfs/linux-2.6/xfs_aops.c | 1275 + fs/xfs/linux-2.6/xfs_buf.c | 1980 ++ fs/xfs/linux-2.6/xfs_buf.h | 591 + fs/xfs/linux-2.6/xfs_cred.h | 50 + fs/xfs/linux-2.6/xfs_export.c | 205 + fs/xfs/linux-2.6/xfs_export.h | 122 + fs/xfs/linux-2.6/xfs_file.c | 573 + fs/xfs/linux-2.6/xfs_fs_subr.c | 124 + fs/xfs/linux-2.6/xfs_fs_subr.h | 48 + fs/xfs/linux-2.6/xfs_globals.c | 74 + fs/xfs/linux-2.6/xfs_globals.h | 44 + fs/xfs/linux-2.6/xfs_ioctl.c | 1336 + fs/xfs/linux-2.6/xfs_ioctl32.c | 163 + fs/xfs/linux-2.6/xfs_ioctl32.h | 34 + fs/xfs/linux-2.6/xfs_iops.c | 680 + fs/xfs/linux-2.6/xfs_iops.h | 51 + fs/xfs/linux-2.6/xfs_linux.h | 374 + fs/xfs/linux-2.6/xfs_lrw.c | 1082 + fs/xfs/linux-2.6/xfs_lrw.h | 116 + fs/xfs/linux-2.6/xfs_stats.c | 132 + fs/xfs/linux-2.6/xfs_stats.h | 166 + fs/xfs/linux-2.6/xfs_super.c | 912 + fs/xfs/linux-2.6/xfs_super.h | 138 + fs/xfs/linux-2.6/xfs_sysctl.c | 174 + fs/xfs/linux-2.6/xfs_sysctl.h | 114 + fs/xfs/linux-2.6/xfs_version.h | 44 + fs/xfs/linux-2.6/xfs_vfs.c | 330 + fs/xfs/linux-2.6/xfs_vfs.h | 223 + fs/xfs/linux-2.6/xfs_vnode.c | 455 + fs/xfs/linux-2.6/xfs_vnode.h | 666 + fs/xfs/quota/xfs_dquot.c | 1648 + fs/xfs/quota/xfs_dquot.h | 224 + fs/xfs/quota/xfs_dquot_item.c | 715 + fs/xfs/quota/xfs_dquot_item.h | 66 + fs/xfs/quota/xfs_qm.c | 2848 ++ fs/xfs/quota/xfs_qm.h | 236 + fs/xfs/quota/xfs_qm_bhv.c | 410 + fs/xfs/quota/xfs_qm_stats.c | 149 + fs/xfs/quota/xfs_qm_stats.h | 68 + fs/xfs/quota/xfs_qm_syscalls.c | 1458 + fs/xfs/quota/xfs_quota_priv.h | 192 + fs/xfs/quota/xfs_trans_dquot.c | 941 + fs/xfs/support/debug.c | 127 + fs/xfs/support/debug.h | 72 + fs/xfs/support/ktrace.c | 346 + fs/xfs/support/ktrace.h | 101 + fs/xfs/support/move.c | 66 + fs/xfs/support/move.h | 84 + fs/xfs/support/qsort.c | 155 + fs/xfs/support/qsort.h | 41 + fs/xfs/support/uuid.c | 151 + fs/xfs/support/uuid.h | 48 + fs/xfs/xfs.h | 40 + fs/xfs/xfs_acl.c | 937 + fs/xfs/xfs_acl.h | 116 + fs/xfs/xfs_ag.h | 345 + fs/xfs/xfs_alloc.c | 2623 ++ fs/xfs/xfs_alloc.h | 203 + fs/xfs/xfs_alloc_btree.c | 2204 ++ fs/xfs/xfs_alloc_btree.h | 257 + fs/xfs/xfs_arch.h | 213 + fs/xfs/xfs_attr.c | 2660 ++ fs/xfs/xfs_attr.h | 193 + fs/xfs/xfs_attr_leaf.c | 3050 ++ fs/xfs/xfs_attr_leaf.h | 308 + fs/xfs/xfs_attr_sf.h | 149 + fs/xfs/xfs_behavior.c | 218 + fs/xfs/xfs_behavior.h | 204 + fs/xfs/xfs_bit.c | 312 + fs/xfs/xfs_bit.h | 85 + fs/xfs/xfs_bmap.c | 6246 ++++ fs/xfs/xfs_bmap.h | 379 + fs/xfs/xfs_bmap_btree.c | 2807 ++ fs/xfs/xfs_bmap_btree.h | 701 + fs/xfs/xfs_btree.c | 949 + fs/xfs/xfs_btree.h | 592 + fs/xfs/xfs_buf_item.c | 1221 + fs/xfs/xfs_buf_item.h | 171 + fs/xfs/xfs_cap.h | 84 + fs/xfs/xfs_clnt.h | 110 + fs/xfs/xfs_da_btree.c | 2648 ++ fs/xfs/xfs_da_btree.h | 335 + fs/xfs/xfs_dfrag.c | 387 + fs/xfs/xfs_dfrag.h | 67 + fs/xfs/xfs_dinode.h | 418 + fs/xfs/xfs_dir.c | 1223 + fs/xfs/xfs_dir.h | 154 + fs/xfs/xfs_dir2.c | 859 + fs/xfs/xfs_dir2.h | 109 + fs/xfs/xfs_dir2_block.c | 1248 + fs/xfs/xfs_dir2_block.h | 126 + fs/xfs/xfs_dir2_data.c | 855 + fs/xfs/xfs_dir2_data.h | 231 + fs/xfs/xfs_dir2_leaf.c | 1896 ++ fs/xfs/xfs_dir2_leaf.h | 360 + fs/xfs/xfs_dir2_node.c | 2020 ++ fs/xfs/xfs_dir2_node.h | 159 + fs/xfs/xfs_dir2_sf.c | 1317 + fs/xfs/xfs_dir2_sf.h | 243 + fs/xfs/xfs_dir2_trace.c | 235 + fs/xfs/xfs_dir2_trace.h | 86 + fs/xfs/xfs_dir_leaf.c | 2231 ++ fs/xfs/xfs_dir_leaf.h | 248 + fs/xfs/xfs_dir_sf.h | 172 + fs/xfs/xfs_dmapi.h | 212 + fs/xfs/xfs_dmops.c | 52 + fs/xfs/xfs_error.c | 327 + fs/xfs/xfs_error.h | 196 + fs/xfs/xfs_extfree_item.c | 668 + fs/xfs/xfs_extfree_item.h | 123 + fs/xfs/xfs_fs.h | 527 + fs/xfs/xfs_fsops.c | 616 + fs/xfs/xfs_fsops.h | 67 + fs/xfs/xfs_ialloc.c | 1401 + fs/xfs/xfs_ialloc.h | 184 + fs/xfs/xfs_ialloc_btree.c | 2094 ++ fs/xfs/xfs_ialloc_btree.h | 314 + fs/xfs/xfs_iget.c | 1022 + fs/xfs/xfs_imap.h | 54 + fs/xfs/xfs_inode.c | 3876 +++ fs/xfs/xfs_inode.h | 554 + fs/xfs/xfs_inode_item.c | 1092 + fs/xfs/xfs_inode_item.h | 197 + fs/xfs/xfs_inum.h | 173 + fs/xfs/xfs_iocore.c | 133 + fs/xfs/xfs_iomap.c | 1000 + fs/xfs/xfs_iomap.h | 107 + fs/xfs/xfs_itable.c | 858 + fs/xfs/xfs_itable.h | 106 + fs/xfs/xfs_log.c | 3560 +++ fs/xfs/xfs_log.h | 182 + fs/xfs/xfs_log_priv.h | 561 + fs/xfs/xfs_log_recover.c | 4098 +++ fs/xfs/xfs_log_recover.h | 81 + fs/xfs/xfs_mac.h | 120 + fs/xfs/xfs_macros.c | 2136 ++ fs/xfs/xfs_macros.h | 104 + fs/xfs/xfs_mount.c | 1586 + fs/xfs/xfs_mount.h | 573 + fs/xfs/xfs_qmops.c | 71 + fs/xfs/xfs_quota.h | 356 + fs/xfs/xfs_refcache.h | 66 + fs/xfs/xfs_rename.c | 673 + fs/xfs/xfs_rtalloc.c | 2469 ++ fs/xfs/xfs_rtalloc.h | 187 + fs/xfs/xfs_rw.c | 356 + fs/xfs/xfs_rw.h | 154 + fs/xfs/xfs_sb.h | 583 + fs/xfs/xfs_trans.c | 1315 + fs/xfs/xfs_trans.h | 1042 + fs/xfs/xfs_trans_ail.c | 596 + fs/xfs/xfs_trans_buf.c | 1093 + fs/xfs/xfs_trans_extfree.c | 156 + fs/xfs/xfs_trans_inode.c | 342 + fs/xfs/xfs_trans_item.c | 553 + fs/xfs/xfs_trans_priv.h | 73 + fs/xfs/xfs_trans_space.h | 105 + fs/xfs/xfs_types.h | 182 + fs/xfs/xfs_utils.c | 488 + fs/xfs/xfs_utils.h | 52 + fs/xfs/xfs_vfsops.c | 1941 ++ fs/xfs/xfs_vnodeops.c | 4712 +++ include/acpi/acconfig.h | 217 + include/acpi/acdebug.h | 472 + include/acpi/acdisasm.h | 428 + include/acpi/acdispat.h | 532 + include/acpi/acevents.h | 320 + include/acpi/acexcep.h | 308 + include/acpi/acglobal.h | 357 + include/acpi/achware.h | 182 + include/acpi/acinterp.h | 765 + include/acpi/aclocal.h | 994 + include/acpi/acmacros.h | 678 + include/acpi/acnamesp.h | 515 + include/acpi/acobject.h | 501 + include/acpi/acoutput.h | 185 + include/acpi/acparser.h | 351 + include/acpi/acpi.h | 69 + include/acpi/acpi_bus.h | 341 + include/acpi/acpi_drivers.h | 112 + include/acpi/acpiosxf.h | 389 + include/acpi/acpixf.h | 497 + include/acpi/acresrc.h | 395 + include/acpi/acstruct.h | 223 + include/acpi/actables.h | 235 + include/acpi/actbl.h | 354 + include/acpi/actbl1.h | 136 + include/acpi/actbl2.h | 289 + include/acpi/actbl71.h | 144 + include/acpi/actypes.h | 1304 + include/acpi/acutils.h | 875 + include/acpi/amlcode.h | 518 + include/acpi/amlresrc.h | 353 + include/acpi/container.h | 13 + include/acpi/platform/acenv.h | 378 + include/acpi/platform/acgcc.h | 59 + include/acpi/platform/aclinux.h | 92 + include/acpi/processor.h | 235 + include/asm-alpha/8253pit.h | 10 + include/asm-alpha/a.out.h | 106 + include/asm-alpha/agp.h | 13 + include/asm-alpha/agp_backend.h | 42 + include/asm-alpha/atomic.h | 198 + include/asm-alpha/bitops.h | 507 + include/asm-alpha/bug.h | 15 + include/asm-alpha/bugs.h | 20 + include/asm-alpha/byteorder.h | 47 + include/asm-alpha/cache.h | 25 + include/asm-alpha/cacheflush.h | 74 + include/asm-alpha/checksum.h | 77 + include/asm-alpha/compiler.h | 103 + include/asm-alpha/console.h | 75 + include/asm-alpha/core_apecs.h | 517 + include/asm-alpha/core_cia.h | 501 + include/asm-alpha/core_irongate.h | 232 + include/asm-alpha/core_lca.h | 361 + include/asm-alpha/core_marvel.h | 378 + include/asm-alpha/core_mcpcia.h | 379 + include/asm-alpha/core_polaris.h | 110 + include/asm-alpha/core_t2.h | 628 + include/asm-alpha/core_titan.h | 415 + include/asm-alpha/core_tsunami.h | 344 + include/asm-alpha/core_wildfire.h | 318 + include/asm-alpha/cputime.h | 6 + include/asm-alpha/current.h | 9 + include/asm-alpha/delay.h | 10 + include/asm-alpha/div64.h | 1 + include/asm-alpha/dma-mapping.h | 67 + include/asm-alpha/dma.h | 377 + include/asm-alpha/elf.h | 185 + include/asm-alpha/err_common.h | 118 + include/asm-alpha/err_ev6.h | 6 + include/asm-alpha/err_ev7.h | 202 + include/asm-alpha/errno.h | 119 + include/asm-alpha/fcntl.h | 75 + include/asm-alpha/floppy.h | 119 + include/asm-alpha/fpu.h | 193 + include/asm-alpha/gct.h | 58 + include/asm-alpha/gentrap.h | 37 + include/asm-alpha/hardirq.h | 29 + include/asm-alpha/hdreg.h | 1 + include/asm-alpha/hw_irq.h | 16 + include/asm-alpha/hwrpb.h | 220 + include/asm-alpha/ide.h | 61 + include/asm-alpha/io.h | 682 + include/asm-alpha/io_trivial.h | 127 + include/asm-alpha/ioctl.h | 66 + include/asm-alpha/ioctls.h | 112 + include/asm-alpha/ipcbuf.h | 28 + include/asm-alpha/irq.h | 100 + include/asm-alpha/jensen.h | 346 + include/asm-alpha/kmap_types.h | 33 + include/asm-alpha/linkage.h | 6 + include/asm-alpha/local.h | 40 + include/asm-alpha/machvec.h | 136 + include/asm-alpha/mc146818rtc.h | 27 + include/asm-alpha/md.h | 13 + include/asm-alpha/mman.h | 50 + include/asm-alpha/mmu.h | 7 + include/asm-alpha/mmu_context.h | 261 + include/asm-alpha/mmzone.h | 131 + include/asm-alpha/module.h | 23 + include/asm-alpha/msgbuf.h | 27 + include/asm-alpha/namei.h | 17 + include/asm-alpha/numnodes.h | 7 + include/asm-alpha/page.h | 115 + include/asm-alpha/pal.h | 51 + include/asm-alpha/param.h | 32 + include/asm-alpha/parport.h | 18 + include/asm-alpha/pci.h | 261 + include/asm-alpha/percpu.h | 6 + include/asm-alpha/pgalloc.h | 78 + include/asm-alpha/pgtable.h | 369 + include/asm-alpha/poll.h | 23 + include/asm-alpha/posix_types.h | 123 + include/asm-alpha/processor.h | 118 + include/asm-alpha/ptrace.h | 82 + include/asm-alpha/reg.h | 52 + include/asm-alpha/regdef.h | 44 + include/asm-alpha/resource.h | 22 + include/asm-alpha/rtc.h | 10 + include/asm-alpha/rwsem.h | 266 + include/asm-alpha/scatterlist.h | 21 + include/asm-alpha/sections.h | 7 + include/asm-alpha/segment.h | 6 + include/asm-alpha/semaphore.h | 153 + include/asm-alpha/sembuf.h | 22 + include/asm-alpha/serial.h | 75 + include/asm-alpha/setup.h | 6 + include/asm-alpha/sfp-machine.h | 82 + include/asm-alpha/shmbuf.h | 38 + include/asm-alpha/shmparam.h | 6 + include/asm-alpha/sigcontext.h | 34 + include/asm-alpha/siginfo.h | 11 + include/asm-alpha/signal.h | 197 + include/asm-alpha/smp.h | 63 + include/asm-alpha/socket.h | 58 + include/asm-alpha/sockios.h | 15 + include/asm-alpha/spinlock.h | 212 + include/asm-alpha/stat.h | 48 + include/asm-alpha/statfs.h | 6 + include/asm-alpha/string.h | 68 + include/asm-alpha/suspend.h | 6 + include/asm-alpha/sysinfo.h | 39 + include/asm-alpha/system.h | 626 + include/asm-alpha/termbits.h | 186 + include/asm-alpha/termios.h | 164 + include/asm-alpha/thread_info.h | 98 + include/asm-alpha/timex.h | 31 + include/asm-alpha/tlb.h | 15 + include/asm-alpha/tlbflush.h | 158 + include/asm-alpha/topology.h | 48 + include/asm-alpha/types.h | 63 + include/asm-alpha/uaccess.h | 517 + include/asm-alpha/ucontext.h | 13 + include/asm-alpha/unaligned.h | 6 + include/asm-alpha/unistd.h | 656 + include/asm-alpha/user.h | 53 + include/asm-alpha/vga.h | 51 + include/asm-alpha/xor.h | 855 + include/asm-arm/a.out.h | 39 + include/asm-arm/apm.h | 65 + include/asm-arm/arch-cl7500/acornfb.h | 34 + include/asm-arm/arch-cl7500/debug-macro.S | 31 + include/asm-arm/arch-cl7500/dma.h | 22 + include/asm-arm/arch-cl7500/entry-macro.S | 3 + include/asm-arm/arch-cl7500/hardware.h | 71 + include/asm-arm/arch-cl7500/io.h | 253 + include/asm-arm/arch-cl7500/irq.h | 32 + include/asm-arm/arch-cl7500/irqs.h | 66 + include/asm-arm/arch-cl7500/memory.h | 29 + include/asm-arm/arch-cl7500/param.h | 5 + include/asm-arm/arch-cl7500/system.h | 23 + include/asm-arm/arch-cl7500/timex.h | 13 + include/asm-arm/arch-cl7500/uncompress.h | 43 + include/asm-arm/arch-cl7500/vmalloc.h | 15 + include/asm-arm/arch-clps711x/autcpu12.h | 78 + include/asm-arm/arch-clps711x/debug-macro.S | 46 + include/asm-arm/arch-clps711x/dma.h | 28 + include/asm-arm/arch-clps711x/entry-macro.S | 51 + include/asm-arm/arch-clps711x/hardware.h | 238 + include/asm-arm/arch-clps711x/io.h | 37 + include/asm-arm/arch-clps711x/irqs.h | 53 + include/asm-arm/arch-clps711x/memory.h | 128 + include/asm-arm/arch-clps711x/param.h | 19 + include/asm-arm/arch-clps711x/syspld.h | 121 + include/asm-arm/arch-clps711x/system.h | 38 + include/asm-arm/arch-clps711x/time.h | 48 + include/asm-arm/arch-clps711x/timex.h | 23 + include/asm-arm/arch-clps711x/uncompress.h | 67 + include/asm-arm/arch-clps711x/vmalloc.h | 31 + include/asm-arm/arch-ebsa110/debug-macro.S | 34 + include/asm-arm/arch-ebsa110/dma.h | 19 + include/asm-arm/arch-ebsa110/entry-macro.S | 33 + include/asm-arm/arch-ebsa110/hardware.h | 66 + include/asm-arm/arch-ebsa110/io.h | 78 + include/asm-arm/arch-ebsa110/irqs.h | 20 + include/asm-arm/arch-ebsa110/memory.h | 31 + include/asm-arm/arch-ebsa110/param.h | 4 + include/asm-arm/arch-ebsa110/system.h | 39 + include/asm-arm/arch-ebsa110/timex.h | 19 + include/asm-arm/arch-ebsa110/uncompress.h | 44 + include/asm-arm/arch-ebsa110/vmalloc.h | 21 + include/asm-arm/arch-ebsa285/debug-macro.S | 66 + include/asm-arm/arch-ebsa285/dma.h | 30 + include/asm-arm/arch-ebsa285/entry-macro.S | 105 + include/asm-arm/arch-ebsa285/hardware.h | 139 + include/asm-arm/arch-ebsa285/io.h | 45 + include/asm-arm/arch-ebsa285/irqs.h | 98 + include/asm-arm/arch-ebsa285/memory.h | 75 + include/asm-arm/arch-ebsa285/param.h | 3 + include/asm-arm/arch-ebsa285/system.h | 69 + include/asm-arm/arch-ebsa285/timex.h | 18 + include/asm-arm/arch-ebsa285/uncompress.h | 46 + include/asm-arm/arch-ebsa285/vmalloc.h | 26 + include/asm-arm/arch-epxa10db/debug-macro.S | 41 + include/asm-arm/arch-epxa10db/dma.h | 28 + include/asm-arm/arch-epxa10db/entry-macro.S | 25 + include/asm-arm/arch-epxa10db/ether00.h | 482 + include/asm-arm/arch-epxa10db/excalibur.h | 91 + include/asm-arm/arch-epxa10db/hardware.h | 64 + include/asm-arm/arch-epxa10db/int_ctrl00.h | 288 + include/asm-arm/arch-epxa10db/io.h | 39 + include/asm-arm/arch-epxa10db/irqs.h | 45 + include/asm-arm/arch-epxa10db/memory.h | 38 + include/asm-arm/arch-epxa10db/mode_ctrl00.h | 80 + include/asm-arm/arch-epxa10db/param.h | 19 + include/asm-arm/arch-epxa10db/platform.h | 7 + include/asm-arm/arch-epxa10db/pld_conf00.h | 73 + include/asm-arm/arch-epxa10db/system.h | 41 + include/asm-arm/arch-epxa10db/tdkphy.h | 209 + include/asm-arm/arch-epxa10db/timer00.h | 98 + include/asm-arm/arch-epxa10db/timex.h | 26 + include/asm-arm/arch-epxa10db/uart00.h | 181 + include/asm-arm/arch-epxa10db/uncompress.h | 54 + include/asm-arm/arch-epxa10db/vmalloc.h | 31 + include/asm-arm/arch-h720x/boards.h | 53 + include/asm-arm/arch-h720x/debug-macro.S | 40 + include/asm-arm/arch-h720x/dma.h | 26 + include/asm-arm/arch-h720x/entry-macro.S | 60 + include/asm-arm/arch-h720x/h7201-regs.h | 67 + include/asm-arm/arch-h720x/h7202-regs.h | 155 + include/asm-arm/arch-h720x/hardware.h | 192 + include/asm-arm/arch-h720x/io.h | 24 + include/asm-arm/arch-h720x/irq.h | 14 + include/asm-arm/arch-h720x/irqs.h | 116 + include/asm-arm/arch-h720x/memory.h | 31 + include/asm-arm/arch-h720x/param.h | 10 + include/asm-arm/arch-h720x/system.h | 31 + include/asm-arm/arch-h720x/timex.h | 15 + include/asm-arm/arch-h720x/uncompress.h | 39 + include/asm-arm/arch-h720x/vmalloc.h | 21 + include/asm-arm/arch-imx/debug-macro.S | 34 + include/asm-arm/arch-imx/dma.h | 71 + include/asm-arm/arch-imx/entry-macro.S | 29 + include/asm-arm/arch-imx/hardware.h | 99 + include/asm-arm/arch-imx/imx-regs.h | 548 + include/asm-arm/arch-imx/io.h | 28 + include/asm-arm/arch-imx/irq.h | 20 + include/asm-arm/arch-imx/irqs.h | 116 + include/asm-arm/arch-imx/memory.h | 38 + include/asm-arm/arch-imx/mx1ads.h | 36 + include/asm-arm/arch-imx/param.h | 19 + include/asm-arm/arch-imx/system.h | 40 + include/asm-arm/arch-imx/timex.h | 27 + include/asm-arm/arch-imx/uncompress.h | 78 + include/asm-arm/arch-imx/vmalloc.h | 32 + include/asm-arm/arch-integrator/bits.h | 61 + include/asm-arm/arch-integrator/cm.h | 36 + include/asm-arm/arch-integrator/debug-macro.S | 38 + include/asm-arm/arch-integrator/dma.h | 28 + include/asm-arm/arch-integrator/entry-macro.S | 36 + include/asm-arm/arch-integrator/hardware.h | 57 + include/asm-arm/arch-integrator/impd1.h | 18 + include/asm-arm/arch-integrator/io.h | 29 + include/asm-arm/arch-integrator/irqs.h | 82 + include/asm-arm/arch-integrator/lm.h | 23 + include/asm-arm/arch-integrator/memory.h | 39 + include/asm-arm/arch-integrator/param.h | 19 + include/asm-arm/arch-integrator/platform.h | 465 + include/asm-arm/arch-integrator/system.h | 44 + include/asm-arm/arch-integrator/timex.h | 26 + include/asm-arm/arch-integrator/uncompress.h | 53 + include/asm-arm/arch-integrator/vmalloc.h | 31 + include/asm-arm/arch-iop3xx/debug-macro.S | 48 + include/asm-arm/arch-iop3xx/dma.h | 16 + include/asm-arm/arch-iop3xx/entry-macro.S | 56 + include/asm-arm/arch-iop3xx/hardware.h | 57 + include/asm-arm/arch-iop3xx/io.h | 20 + include/asm-arm/arch-iop3xx/iop321-irqs.h | 100 + include/asm-arm/arch-iop3xx/iop321.h | 345 + include/asm-arm/arch-iop3xx/iop331-irqs.h | 136 + include/asm-arm/arch-iop3xx/iop331.h | 363 + include/asm-arm/arch-iop3xx/iq31244.h | 24 + include/asm-arm/arch-iop3xx/iq80321.h | 24 + include/asm-arm/arch-iop3xx/iq80331.h | 23 + include/asm-arm/arch-iop3xx/iq80332.h | 23 + include/asm-arm/arch-iop3xx/irqs.h | 21 + include/asm-arm/arch-iop3xx/memory.h | 41 + include/asm-arm/arch-iop3xx/param.h | 3 + include/asm-arm/arch-iop3xx/system.h | 35 + include/asm-arm/arch-iop3xx/timex.h | 21 + include/asm-arm/arch-iop3xx/uncompress.h | 57 + include/asm-arm/arch-iop3xx/vmalloc.h | 19 + include/asm-arm/arch-ixp2000/debug-macro.S | 40 + include/asm-arm/arch-ixp2000/dma.h | 18 + include/asm-arm/arch-ixp2000/enp2611.h | 28 + include/asm-arm/arch-ixp2000/entry-macro.S | 53 + include/asm-arm/arch-ixp2000/gpio.h | 55 + include/asm-arm/arch-ixp2000/hardware.h | 44 + include/asm-arm/arch-ixp2000/io.h | 150 + include/asm-arm/arch-ixp2000/irq.h | 13 + include/asm-arm/arch-ixp2000/irqs.h | 174 + include/asm-arm/arch-ixp2000/ixdp2x00.h | 93 + include/asm-arm/arch-ixp2000/ixdp2x01.h | 57 + include/asm-arm/arch-ixp2000/ixp2000-regs.h | 377 + include/asm-arm/arch-ixp2000/memory.h | 34 + include/asm-arm/arch-ixp2000/param.h | 3 + include/asm-arm/arch-ixp2000/platform.h | 166 + include/asm-arm/arch-ixp2000/system.h | 54 + include/asm-arm/arch-ixp2000/timex.h | 13 + include/asm-arm/arch-ixp2000/uncompress.h | 52 + include/asm-arm/arch-ixp2000/vmalloc.h | 23 + include/asm-arm/arch-ixp4xx/coyote.h | 36 + include/asm-arm/arch-ixp4xx/debug-macro.S | 34 + include/asm-arm/arch-ixp4xx/dma.h | 26 + include/asm-arm/arch-ixp4xx/entry-macro.S | 39 + include/asm-arm/arch-ixp4xx/gtwx5715.h | 120 + include/asm-arm/arch-ixp4xx/hardware.h | 48 + include/asm-arm/arch-ixp4xx/io.h | 388 + include/asm-arm/arch-ixp4xx/irq.h | 13 + include/asm-arm/arch-ixp4xx/irqs.h | 96 + include/asm-arm/arch-ixp4xx/ixdp425.h | 38 + include/asm-arm/arch-ixp4xx/ixp4xx-regs.h | 591 + include/asm-arm/arch-ixp4xx/memory.h | 61 + include/asm-arm/arch-ixp4xx/param.h | 3 + include/asm-arm/arch-ixp4xx/platform.h | 126 + include/asm-arm/arch-ixp4xx/prpmc1100.h | 33 + include/asm-arm/arch-ixp4xx/system.h | 42 + include/asm-arm/arch-ixp4xx/timex.h | 13 + include/asm-arm/arch-ixp4xx/uncompress.h | 64 + include/asm-arm/arch-ixp4xx/vmalloc.h | 17 + include/asm-arm/arch-l7200/aux_reg.h | 28 + include/asm-arm/arch-l7200/debug-macro.S | 40 + include/asm-arm/arch-l7200/dma.h | 24 + include/asm-arm/arch-l7200/entry-macro.S | 29 + include/asm-arm/arch-l7200/gp_timers.h | 42 + include/asm-arm/arch-l7200/gpio.h | 105 + include/asm-arm/arch-l7200/hardware.h | 60 + include/asm-arm/arch-l7200/io.h | 76 + include/asm-arm/arch-l7200/irqs.h | 56 + include/asm-arm/arch-l7200/memory.h | 23 + include/asm-arm/arch-l7200/param.h | 19 + include/asm-arm/arch-l7200/pmpcon.h | 46 + include/asm-arm/arch-l7200/pmu.h | 125 + include/asm-arm/arch-l7200/serial.h | 37 + include/asm-arm/arch-l7200/serial_l7200.h | 101 + include/asm-arm/arch-l7200/sib.h | 119 + include/asm-arm/arch-l7200/sys-clock.h | 67 + include/asm-arm/arch-l7200/system.h | 27 + include/asm-arm/arch-l7200/time.h | 72 + include/asm-arm/arch-l7200/timex.h | 20 + include/asm-arm/arch-l7200/uncompress.h | 44 + include/asm-arm/arch-l7200/vmalloc.h | 15 + include/asm-arm/arch-lh7a40x/constants.h | 88 + include/asm-arm/arch-lh7a40x/debug-macro.S | 39 + include/asm-arm/arch-lh7a40x/dma.h | 17 + include/asm-arm/arch-lh7a40x/entry-macro.S | 67 + include/asm-arm/arch-lh7a40x/hardware.h | 58 + include/asm-arm/arch-lh7a40x/io.h | 21 + include/asm-arm/arch-lh7a40x/irq.h | 11 + include/asm-arm/arch-lh7a40x/irqs.h | 196 + include/asm-arm/arch-lh7a40x/memory.h | 94 + include/asm-arm/arch-lh7a40x/param.h | 9 + include/asm-arm/arch-lh7a40x/registers.h | 193 + include/asm-arm/arch-lh7a40x/system.h | 19 + include/asm-arm/arch-lh7a40x/timex.h | 17 + include/asm-arm/arch-lh7a40x/uncompress.h | 43 + include/asm-arm/arch-lh7a40x/vmalloc.h | 21 + include/asm-arm/arch-omap/aic23.h | 112 + include/asm-arm/arch-omap/board-h2.h | 47 + include/asm-arm/arch-omap/board-h3.h | 49 + include/asm-arm/arch-omap/board-h4.h | 35 + include/asm-arm/arch-omap/board-innovator.h | 80 + include/asm-arm/arch-omap/board-netstar.h | 19 + include/asm-arm/arch-omap/board-osk.h | 41 + include/asm-arm/arch-omap/board-perseus2.h | 58 + include/asm-arm/arch-omap/board-voiceblue.h | 25 + include/asm-arm/arch-omap/board.h | 126 + include/asm-arm/arch-omap/cpu.h | 183 + include/asm-arm/arch-omap/debug-macro.S | 45 + include/asm-arm/arch-omap/dma.h | 264 + include/asm-arm/arch-omap/entry-macro.S | 32 + include/asm-arm/arch-omap/fpga.h | 196 + include/asm-arm/arch-omap/gpio.h | 69 + include/asm-arm/arch-omap/hardware.h | 324 + include/asm-arm/arch-omap/io.h | 107 + include/asm-arm/arch-omap/irqs.h | 255 + include/asm-arm/arch-omap/mcbsp.h | 257 + include/asm-arm/arch-omap/memory.h | 87 + include/asm-arm/arch-omap/mux.h | 561 + include/asm-arm/arch-omap/omap1510.h | 61 + include/asm-arm/arch-omap/omap16xx.h | 187 + include/asm-arm/arch-omap/omap730.h | 106 + include/asm-arm/arch-omap/param.h | 8 + include/asm-arm/arch-omap/pm.h | 229 + include/asm-arm/arch-omap/system.h | 20 + include/asm-arm/arch-omap/tc.h | 108 + include/asm-arm/arch-omap/timex.h | 33 + include/asm-arm/arch-omap/tps65010.h | 80 + include/asm-arm/arch-omap/uncompress.h | 82 + include/asm-arm/arch-omap/usb.h | 108 + include/asm-arm/arch-omap/vmalloc.h | 33 + include/asm-arm/arch-pxa/audio.h | 16 + include/asm-arm/arch-pxa/bitfield.h | 113 + include/asm-arm/arch-pxa/corgi.h | 120 + include/asm-arm/arch-pxa/debug-macro.S | 36 + include/asm-arm/arch-pxa/dma.h | 67 + include/asm-arm/arch-pxa/entry-macro.S | 31 + include/asm-arm/arch-pxa/hardware.h | 95 + include/asm-arm/arch-pxa/idp.h | 200 + include/asm-arm/arch-pxa/io.h | 19 + include/asm-arm/arch-pxa/irq.h | 19 + include/asm-arm/arch-pxa/irqs.h | 219 + include/asm-arm/arch-pxa/lubbock.h | 40 + include/asm-arm/arch-pxa/mainstone.h | 120 + include/asm-arm/arch-pxa/memory.h | 76 + include/asm-arm/arch-pxa/mmc.h | 19 + include/asm-arm/arch-pxa/param.h | 3 + include/asm-arm/arch-pxa/poodle.h | 70 + include/asm-arm/arch-pxa/pxa-regs.h | 2251 ++ include/asm-arm/arch-pxa/pxafb.h | 68 + include/asm-arm/arch-pxa/ssp.h | 47 + include/asm-arm/arch-pxa/system.h | 34 + include/asm-arm/arch-pxa/timex.h | 25 + include/asm-arm/arch-pxa/udc.h | 18 + include/asm-arm/arch-pxa/uncompress.h | 42 + include/asm-arm/arch-pxa/vmalloc.h | 22 + include/asm-arm/arch-rpc/acornfb.h | 140 + include/asm-arm/arch-rpc/debug-macro.S | 35 + include/asm-arm/arch-rpc/dma.h | 33 + include/asm-arm/arch-rpc/entry-macro.S | 3 + include/asm-arm/arch-rpc/hardware.h | 86 + include/asm-arm/arch-rpc/io.h | 257 + include/asm-arm/arch-rpc/irqs.h | 46 + include/asm-arm/arch-rpc/memory.h | 33 + include/asm-arm/arch-rpc/param.h | 3 + include/asm-arm/arch-rpc/system.h | 27 + include/asm-arm/arch-rpc/timex.h | 17 + include/asm-arm/arch-rpc/uncompress.h | 155 + include/asm-arm/arch-rpc/vmalloc.h | 21 + include/asm-arm/arch-s3c2410/bast-cpld.h | 58 + include/asm-arm/arch-s3c2410/bast-irq.h | 33 + include/asm-arm/arch-s3c2410/bast-map.h | 150 + include/asm-arm/arch-s3c2410/bast-pmu.h | 43 + include/asm-arm/arch-s3c2410/debug-macro.S | 99 + include/asm-arm/arch-s3c2410/dma.h | 376 + include/asm-arm/arch-s3c2410/entry-macro.S | 119 + include/asm-arm/arch-s3c2410/hardware.h | 105 + include/asm-arm/arch-s3c2410/idle.h | 28 + include/asm-arm/arch-s3c2410/iic.h | 36 + include/asm-arm/arch-s3c2410/io.h | 196 + include/asm-arm/arch-s3c2410/irqs.h | 126 + include/asm-arm/arch-s3c2410/map.h | 192 + include/asm-arm/arch-s3c2410/memory.h | 44 + include/asm-arm/arch-s3c2410/nand.h | 48 + include/asm-arm/arch-s3c2410/otom-map.h | 30 + include/asm-arm/arch-s3c2410/param.h | 27 + include/asm-arm/arch-s3c2410/regs-adc.h | 63 + include/asm-arm/arch-s3c2410/regs-clock.h | 122 + include/asm-arm/arch-s3c2410/regs-dsc.h | 183 + include/asm-arm/arch-s3c2410/regs-gpio.h | 831 + include/asm-arm/arch-s3c2410/regs-gpioj.h | 101 + include/asm-arm/arch-s3c2410/regs-iic.h | 60 + include/asm-arm/arch-s3c2410/regs-iis.h | 72 + include/asm-arm/arch-s3c2410/regs-irq.h | 44 + include/asm-arm/arch-s3c2410/regs-lcd.h | 114 + include/asm-arm/arch-s3c2410/regs-mem.h | 212 + include/asm-arm/arch-s3c2410/regs-nand.h | 43 + include/asm-arm/arch-s3c2410/regs-rtc.h | 66 + include/asm-arm/arch-s3c2410/regs-sdi.h | 118 + include/asm-arm/arch-s3c2410/regs-serial.h | 209 + include/asm-arm/arch-s3c2410/regs-spi.h | 56 + include/asm-arm/arch-s3c2410/regs-timer.h | 113 + include/asm-arm/arch-s3c2410/regs-udc.h | 164 + include/asm-arm/arch-s3c2410/regs-watchdog.h | 46 + include/asm-arm/arch-s3c2410/system.h | 90 + include/asm-arm/arch-s3c2410/timex.h | 32 + include/asm-arm/arch-s3c2410/uncompress.h | 158 + include/asm-arm/arch-s3c2410/usb-control.h | 45 + include/asm-arm/arch-s3c2410/vmalloc.h | 36 + include/asm-arm/arch-s3c2410/vr1000-cpld.h | 22 + include/asm-arm/arch-s3c2410/vr1000-irq.h | 30 + include/asm-arm/arch-s3c2410/vr1000-map.h | 116 + include/asm-arm/arch-sa1100/SA-1100.h | 2072 ++ include/asm-arm/arch-sa1100/SA-1101.h | 925 + include/asm-arm/arch-sa1100/SA-1111.h | 5 + include/asm-arm/arch-sa1100/assabet.h | 106 + include/asm-arm/arch-sa1100/badge4.h | 75 + include/asm-arm/arch-sa1100/bitfield.h | 113 + include/asm-arm/arch-sa1100/cerf.h | 29 + include/asm-arm/arch-sa1100/collie.h | 85 + include/asm-arm/arch-sa1100/debug-macro.S | 57 + include/asm-arm/arch-sa1100/dma.h | 132 + include/asm-arm/arch-sa1100/entry-macro.S | 41 + include/asm-arm/arch-sa1100/h3600.h | 164 + include/asm-arm/arch-sa1100/h3600_gpio.h | 540 + include/asm-arm/arch-sa1100/hardware.h | 83 + include/asm-arm/arch-sa1100/ide.h | 76 + include/asm-arm/arch-sa1100/io.h | 23 + include/asm-arm/arch-sa1100/irqs.h | 198 + include/asm-arm/arch-sa1100/jornada720.h | 28 + include/asm-arm/arch-sa1100/lart.h | 13 + include/asm-arm/arch-sa1100/memory.h | 108 + include/asm-arm/arch-sa1100/neponset.h | 74 + include/asm-arm/arch-sa1100/param.h | 3 + include/asm-arm/arch-sa1100/shannon.h | 43 + include/asm-arm/arch-sa1100/simpad.h | 112 + include/asm-arm/arch-sa1100/system.h | 22 + include/asm-arm/arch-sa1100/timex.h | 12 + include/asm-arm/arch-sa1100/uncompress.h | 53 + include/asm-arm/arch-sa1100/vmalloc.h | 15 + include/asm-arm/arch-shark/debug-macro.S | 31 + include/asm-arm/arch-shark/dma.h | 18 + include/asm-arm/arch-shark/entry-macro.S | 35 + include/asm-arm/arch-shark/hardware.h | 57 + include/asm-arm/arch-shark/io.h | 199 + include/asm-arm/arch-shark/irqs.h | 13 + include/asm-arm/arch-shark/memory.h | 42 + include/asm-arm/arch-shark/param.h | 5 + include/asm-arm/arch-shark/system.h | 28 + include/asm-arm/arch-shark/timex.h | 7 + include/asm-arm/arch-shark/uncompress.h | 60 + include/asm-arm/arch-shark/vmalloc.h | 15 + include/asm-arm/arch-versatile/debug-macro.S | 39 + include/asm-arm/arch-versatile/dma.h | 27 + include/asm-arm/arch-versatile/entry-macro.S | 35 + include/asm-arm/arch-versatile/hardware.h | 45 + include/asm-arm/arch-versatile/io.h | 29 + include/asm-arm/arch-versatile/irqs.h | 211 + include/asm-arm/arch-versatile/memory.h | 38 + include/asm-arm/arch-versatile/param.h | 19 + include/asm-arm/arch-versatile/platform.h | 510 + include/asm-arm/arch-versatile/system.h | 51 + include/asm-arm/arch-versatile/timex.h | 23 + include/asm-arm/arch-versatile/uncompress.h | 52 + include/asm-arm/arch-versatile/vmalloc.h | 33 + include/asm-arm/assembler.h | 117 + include/asm-arm/atomic.h | 165 + include/asm-arm/bitops.h | 416 + include/asm-arm/bug.h | 22 + include/asm-arm/bugs.h | 17 + include/asm-arm/byteorder.h | 33 + include/asm-arm/cache.h | 15 + include/asm-arm/cacheflush.h | 387 + include/asm-arm/checksum.h | 160 + include/asm-arm/cpu-multi32.h | 64 + include/asm-arm/cpu-single.h | 44 + include/asm-arm/cpu.h | 25 + include/asm-arm/cputime.h | 6 + include/asm-arm/current.h | 15 + include/asm-arm/delay.h | 42 + include/asm-arm/div64.h | 48 + include/asm-arm/dma-mapping.h | 426 + include/asm-arm/dma.h | 135 + include/asm-arm/domain.h | 52 + include/asm-arm/ecard.h | 298 + include/asm-arm/elf.h | 133 + include/asm-arm/errno.h | 6 + include/asm-arm/fcntl.h | 87 + include/asm-arm/fiq.h | 37 + include/asm-arm/floppy.h | 144 + include/asm-arm/fpstate.h | 74 + include/asm-arm/glue.h | 114 + include/asm-arm/hardirq.h | 32 + include/asm-arm/hardware.h | 18 + include/asm-arm/hardware/amba.h | 55 + include/asm-arm/hardware/amba_clcd.h | 264 + include/asm-arm/hardware/amba_kmi.h | 92 + include/asm-arm/hardware/amba_serial.h | 156 + include/asm-arm/hardware/clock.h | 121 + include/asm-arm/hardware/clps7111.h | 184 + include/asm-arm/hardware/cs89712.h | 49 + include/asm-arm/hardware/dec21285.h | 148 + include/asm-arm/hardware/entry-macro-iomd.S | 145 + include/asm-arm/hardware/ep7211.h | 40 + include/asm-arm/hardware/ep7212.h | 83 + include/asm-arm/hardware/icst307.h | 38 + include/asm-arm/hardware/icst525.h | 36 + include/asm-arm/hardware/ioc.h | 72 + include/asm-arm/hardware/iomd.h | 227 + include/asm-arm/hardware/linkup-l1110.h | 48 + include/asm-arm/hardware/locomo.h | 206 + include/asm-arm/hardware/memc.h | 26 + include/asm-arm/hardware/pci_v3.h | 186 + include/asm-arm/hardware/sa1111.h | 602 + include/asm-arm/hardware/scoop.h | 47 + include/asm-arm/hardware/ssp.h | 28 + include/asm-arm/hdreg.h | 1 + include/asm-arm/ide.h | 36 + include/asm-arm/io.h | 286 + include/asm-arm/ioctl.h | 74 + include/asm-arm/ioctls.h | 80 + include/asm-arm/ipc.h | 1 + include/asm-arm/ipcbuf.h | 29 + include/asm-arm/irq.h | 51 + include/asm-arm/kmap_types.h | 24 + include/asm-arm/leds.h | 51 + include/asm-arm/limits.h | 11 + include/asm-arm/linkage.h | 7 + include/asm-arm/local.h | 1 + include/asm-arm/locks.h | 262 + include/asm-arm/mach/arch.h | 92 + include/asm-arm/mach/dma.h | 55 + include/asm-arm/mach/flash.h | 34 + include/asm-arm/mach/irda.h | 20 + include/asm-arm/mach/irq.h | 127 + include/asm-arm/mach/map.h | 33 + include/asm-arm/mach/mmc.h | 15 + include/asm-arm/mach/pci.h | 75 + include/asm-arm/mach/serial_sa1100.h | 32 + include/asm-arm/mach/sharpsl_param.h | 37 + include/asm-arm/mach/time.h | 54 + include/asm-arm/mc146818rtc.h | 28 + include/asm-arm/memory.h | 200 + include/asm-arm/mman.h | 43 + include/asm-arm/mmu.h | 16 + include/asm-arm/mmu_context.h | 96 + include/asm-arm/mmzone.h | 30 + include/asm-arm/module.h | 18 + include/asm-arm/msgbuf.h | 31 + include/asm-arm/namei.h | 25 + include/asm-arm/numnodes.h | 24 + include/asm-arm/nwflash.h | 9 + include/asm-arm/page.h | 197 + include/asm-arm/param.h | 36 + include/asm-arm/parport.h | 18 + include/asm-arm/pci.h | 59 + include/asm-arm/percpu.h | 6 + include/asm-arm/pgalloc.h | 130 + include/asm-arm/pgtable.h | 433 + include/asm-arm/poll.h | 26 + include/asm-arm/posix_types.h | 81 + include/asm-arm/proc-fns.h | 174 + include/asm-arm/processor.h | 118 + include/asm-arm/procinfo.h | 60 + include/asm-arm/ptrace.h | 155 + include/asm-arm/resource.h | 6 + include/asm-arm/rtc.h | 46 + include/asm-arm/scatterlist.h | 25 + include/asm-arm/sections.h | 1 + include/asm-arm/segment.h | 11 + include/asm-arm/semaphore-helper.h | 84 + include/asm-arm/semaphore.h | 106 + include/asm-arm/sembuf.h | 25 + include/asm-arm/serial.h | 19 + include/asm-arm/setup.h | 218 + include/asm-arm/shmbuf.h | 42 + include/asm-arm/shmparam.h | 16 + include/asm-arm/sigcontext.h | 34 + include/asm-arm/siginfo.h | 6 + include/asm-arm/signal.h | 194 + include/asm-arm/sizes.h | 52 + include/asm-arm/smp.h | 58 + include/asm-arm/socket.h | 50 + include/asm-arm/sockios.h | 12 + include/asm-arm/spinlock.h | 169 + include/asm-arm/stat.h | 94 + include/asm-arm/statfs.h | 6 + include/asm-arm/string.h | 43 + include/asm-arm/suspend.h | 4 + include/asm-arm/system.h | 390 + include/asm-arm/termbits.h | 171 + include/asm-arm/termios.h | 108 + include/asm-arm/therm.h | 28 + include/asm-arm/thread_info.h | 147 + include/asm-arm/timex.h | 24 + include/asm-arm/tlb.h | 102 + include/asm-arm/tlbflush.h | 404 + include/asm-arm/topology.h | 6 + include/asm-arm/traps.h | 18 + include/asm-arm/types.h | 62 + include/asm-arm/uaccess.h | 438 + include/asm-arm/ucontext.h | 12 + include/asm-arm/unaligned.h | 191 + include/asm-arm/unistd.h | 558 + include/asm-arm/user.h | 84 + include/asm-arm/vfp.h | 78 + include/asm-arm/vfpmacros.h | 25 + include/asm-arm/vga.h | 12 + include/asm-arm/xor.h | 141 + include/asm-arm26/a.out.h | 38 + include/asm-arm26/assembler.h | 106 + include/asm-arm26/atomic.h | 93 + include/asm-arm26/bitops.h | 332 + include/asm-arm26/bug.h | 17 + include/asm-arm26/bugs.h | 15 + include/asm-arm26/byteorder.h | 24 + include/asm-arm26/cache.h | 11 + include/asm-arm26/cacheflush.h | 52 + include/asm-arm26/checksum.h | 160 + include/asm-arm26/constants.h | 28 + include/asm-arm26/cputime.h | 6 + include/asm-arm26/current.h | 15 + include/asm-arm26/delay.h | 34 + include/asm-arm26/div64.h | 1 + include/asm-arm26/dma-mapping.h | 2 + include/asm-arm26/dma.h | 184 + include/asm-arm26/ecard.h | 294 + include/asm-arm26/elf.h | 77 + include/asm-arm26/errno.h | 6 + include/asm-arm26/fcntl.h | 87 + include/asm-arm26/fiq.h | 37 + include/asm-arm26/floppy.h | 141 + include/asm-arm26/fpstate.h | 29 + include/asm-arm26/hardirq.h | 41 + include/asm-arm26/hardware.h | 110 + include/asm-arm26/hdreg.h | 1 + include/asm-arm26/ide.h | 34 + include/asm-arm26/io.h | 435 + include/asm-arm26/ioc.h | 72 + include/asm-arm26/ioctl.h | 74 + include/asm-arm26/ioctls.h | 81 + include/asm-arm26/ipc.h | 1 + include/asm-arm26/ipcbuf.h | 29 + include/asm-arm26/irq.h | 52 + include/asm-arm26/irqchip.h | 101 + include/asm-arm26/kmap_types.h | 12 + include/asm-arm26/leds.h | 51 + include/asm-arm26/limits.h | 11 + include/asm-arm26/linkage.h | 7 + include/asm-arm26/local.h | 2 + include/asm-arm26/locks.h | 161 + include/asm-arm26/mach-types.h | 37 + include/asm-arm26/map.h | 24 + include/asm-arm26/mc146818rtc.h | 28 + include/asm-arm26/memory.h | 101 + include/asm-arm26/mman.h | 43 + include/asm-arm26/mmu.h | 9 + include/asm-arm26/mmu_context.h | 51 + include/asm-arm26/module.h | 7 + include/asm-arm26/msgbuf.h | 31 + include/asm-arm26/namei.h | 25 + include/asm-arm26/oldlatches.h | 37 + include/asm-arm26/page.h | 115 + include/asm-arm26/param.h | 33 + include/asm-arm26/parport.h | 18 + include/asm-arm26/pci.h | 6 + include/asm-arm26/percpu.h | 6 + include/asm-arm26/pgalloc.h | 70 + include/asm-arm26/pgtable.h | 305 + include/asm-arm26/poll.h | 25 + include/asm-arm26/posix_types.h | 80 + include/asm-arm26/proc-fns.h | 49 + include/asm-arm26/processor.h | 113 + include/asm-arm26/procinfo.h | 56 + include/asm-arm26/ptrace.h | 104 + include/asm-arm26/resource.h | 6 + include/asm-arm26/scatterlist.h | 26 + include/asm-arm26/sections.h | 2 + include/asm-arm26/segment.h | 11 + include/asm-arm26/semaphore-helper.h | 84 + include/asm-arm26/semaphore.h | 103 + include/asm-arm26/sembuf.h | 25 + include/asm-arm26/serial.h | 63 + include/asm-arm26/setup.h | 205 + include/asm-arm26/shmbuf.h | 42 + include/asm-arm26/shmparam.h | 15 + include/asm-arm26/sigcontext.h | 33 + include/asm-arm26/siginfo.h | 6 + include/asm-arm26/signal.h | 201 + include/asm-arm26/sizes.h | 52 + include/asm-arm26/smp.h | 10 + include/asm-arm26/socket.h | 50 + include/asm-arm26/sockios.h | 12 + include/asm-arm26/spinlock.h | 6 + include/asm-arm26/stat.h | 77 + include/asm-arm26/statfs.h | 8 + include/asm-arm26/string.h | 43 + include/asm-arm26/suspend.h | 4 + include/asm-arm26/sysirq.h | 61 + include/asm-arm26/system.h | 252 + include/asm-arm26/termbits.h | 171 + include/asm-arm26/termios.h | 108 + include/asm-arm26/thread_info.h | 144 + include/asm-arm26/timex.h | 29 + include/asm-arm26/tlb.h | 78 + include/asm-arm26/tlbflush.h | 70 + include/asm-arm26/topology.h | 6 + include/asm-arm26/types.h | 61 + include/asm-arm26/uaccess-asm.h | 153 + include/asm-arm26/uaccess.h | 299 + include/asm-arm26/ucontext.h | 12 + include/asm-arm26/unaligned.h | 118 + include/asm-arm26/uncompress.h | 111 + include/asm-arm26/unistd.h | 500 + include/asm-arm26/user.h | 84 + include/asm-arm26/xor.h | 141 + include/asm-cris/a.out.h | 31 + include/asm-cris/arch-v10/bitops.h | 73 + include/asm-cris/arch-v10/byteorder.h | 26 + include/asm-cris/arch-v10/cache.h | 9 + include/asm-cris/arch-v10/checksum.h | 29 + include/asm-cris/arch-v10/delay.h | 20 + include/asm-cris/arch-v10/dma.h | 46 + include/asm-cris/arch-v10/elf.h | 71 + include/asm-cris/arch-v10/io.h | 193 + include/asm-cris/arch-v10/irq.h | 181 + include/asm-cris/arch-v10/mmu.h | 106 + include/asm-cris/arch-v10/offset.h | 33 + include/asm-cris/arch-v10/page.h | 31 + include/asm-cris/arch-v10/pgtable.h | 17 + include/asm-cris/arch-v10/processor.h | 62 + include/asm-cris/arch-v10/ptrace.h | 115 + include/asm-cris/arch-v10/sv_addr.agh | 7306 +++++ include/asm-cris/arch-v10/sv_addr_ag.h | 139 + include/asm-cris/arch-v10/svinto.h | 64 + include/asm-cris/arch-v10/system.h | 62 + include/asm-cris/arch-v10/thread_info.h | 12 + include/asm-cris/arch-v10/timex.h | 30 + include/asm-cris/arch-v10/tlb.h | 13 + include/asm-cris/arch-v10/uaccess.h | 660 + include/asm-cris/arch-v10/unistd.h | 148 + include/asm-cris/arch-v10/user.h | 46 + include/asm-cris/atomic.h | 150 + include/asm-cris/axisflashmap.h | 43 + include/asm-cris/bitops.h | 387 + include/asm-cris/bug.h | 4 + include/asm-cris/bugs.h | 21 + include/asm-cris/byteorder.h | 26 + include/asm-cris/cache.h | 6 + include/asm-cris/cacheflush.h | 31 + include/asm-cris/checksum.h | 87 + include/asm-cris/cputime.h | 6 + include/asm-cris/current.h | 15 + include/asm-cris/delay.h | 24 + include/asm-cris/div64.h | 1 + include/asm-cris/dma-mapping.h | 125 + include/asm-cris/dma.h | 13 + include/asm-cris/elf.h | 61 + include/asm-cris/errno.h | 6 + include/asm-cris/eshlibld.h | 114 + include/asm-cris/ethernet.h | 18 + include/asm-cris/etraxgpio.h | 104 + include/asm-cris/etraxi2c.h | 36 + include/asm-cris/fasttimer.h | 44 + include/asm-cris/fcntl.h | 90 + include/asm-cris/hardirq.h | 27 + include/asm-cris/io.h | 100 + include/asm-cris/ioctl.h | 83 + include/asm-cris/ioctls.h | 87 + include/asm-cris/ipc.h | 1 + include/asm-cris/ipcbuf.h | 29 + include/asm-cris/irq.h | 23 + include/asm-cris/kmap_types.h | 25 + include/asm-cris/linkage.h | 6 + include/asm-cris/local.h | 1 + include/asm-cris/mman.h | 45 + include/asm-cris/mmu.h | 10 + include/asm-cris/mmu_context.h | 24 + include/asm-cris/module.h | 9 + include/asm-cris/msgbuf.h | 33 + include/asm-cris/namei.h | 17 + include/asm-cris/page.h | 105 + include/asm-cris/param.h | 23 + include/asm-cris/pci.h | 13 + include/asm-cris/percpu.h | 6 + include/asm-cris/pgalloc.h | 62 + include/asm-cris/pgtable.h | 352 + include/asm-cris/poll.h | 25 + include/asm-cris/posix_types.h | 74 + include/asm-cris/processor.h | 79 + include/asm-cris/ptrace.h | 12 + include/asm-cris/resource.h | 6 + include/asm-cris/rs485.h | 20 + include/asm-cris/rtc.h | 107 + include/asm-cris/scatterlist.h | 20 + include/asm-cris/sections.h | 7 + include/asm-cris/segment.h | 8 + include/asm-cris/semaphore-helper.h | 81 + include/asm-cris/semaphore.h | 142 + include/asm-cris/sembuf.h | 25 + include/asm-cris/setup.h | 6 + include/asm-cris/shmbuf.h | 42 + include/asm-cris/shmparam.h | 8 + include/asm-cris/sigcontext.h | 24 + include/asm-cris/siginfo.h | 6 + include/asm-cris/signal.h | 188 + include/asm-cris/smp.h | 4 + include/asm-cris/socket.h | 54 + include/asm-cris/sockios.h | 12 + include/asm-cris/stat.h | 81 + include/asm-cris/statfs.h | 6 + include/asm-cris/string.h | 14 + include/asm-cris/system.h | 74 + include/asm-cris/termbits.h | 198 + include/asm-cris/termios.h | 107 + include/asm-cris/thread_info.h | 101 + include/asm-cris/timex.h | 24 + include/asm-cris/tlb.h | 17 + include/asm-cris/tlbflush.h | 43 + include/asm-cris/topology.h | 6 + include/asm-cris/types.h | 61 + include/asm-cris/uaccess.h | 446 + include/asm-cris/ucontext.h | 12 + include/asm-cris/unaligned.h | 16 + include/asm-cris/unistd.h | 392 + include/asm-cris/user.h | 52 + include/asm-frv/a.out.h | 5 + include/asm-frv/atomic.h | 417 + include/asm-frv/ax88796.h | 22 + include/asm-frv/bitops.h | 341 + include/asm-frv/bug.h | 51 + include/asm-frv/bugs.h | 14 + include/asm-frv/busctl-regs.h | 41 + include/asm-frv/byteorder.h | 13 + include/asm-frv/cache.h | 24 + include/asm-frv/cacheflush.h | 91 + include/asm-frv/checksum.h | 183 + include/asm-frv/cpu-irqs.h | 87 + include/asm-frv/cpumask.h | 6 + include/asm-frv/cputime.h | 6 + include/asm-frv/current.h | 30 + include/asm-frv/delay.h | 50 + include/asm-frv/div64.h | 1 + include/asm-frv/dm9000.h | 37 + include/asm-frv/dma-mapping.h | 184 + include/asm-frv/dma.h | 129 + include/asm-frv/elf.h | 147 + include/asm-frv/errno.h | 7 + include/asm-frv/fcntl.h | 88 + include/asm-frv/fpu.h | 12 + include/asm-frv/gdb-stub.h | 118 + include/asm-frv/gpio-regs.h | 116 + include/asm-frv/hardirq.h | 30 + include/asm-frv/highmem.h | 181 + include/asm-frv/hw_irq.h | 16 + include/asm-frv/ide.h | 43 + include/asm-frv/init.h | 12 + include/asm-frv/io.h | 290 + include/asm-frv/ioctl.h | 80 + include/asm-frv/ioctls.h | 82 + include/asm-frv/ipc.h | 1 + include/asm-frv/ipcbuf.h | 30 + include/asm-frv/irc-regs.h | 53 + include/asm-frv/irq-routing.h | 70 + include/asm-frv/irq.h | 44 + include/asm-frv/kmap_types.h | 29 + include/asm-frv/linkage.h | 7 + include/asm-frv/local.h | 6 + include/asm-frv/math-emu.h | 301 + include/asm-frv/mb-regs.h | 185 + include/asm-frv/mb86943a.h | 39 + include/asm-frv/mb93091-fpga-irqs.h | 44 + include/asm-frv/mb93093-fpga-irqs.h | 31 + include/asm-frv/mb93493-irqs.h | 52 + include/asm-frv/mb93493-regs.h | 279 + include/asm-frv/mem-layout.h | 78 + include/asm-frv/mman.h | 44 + include/asm-frv/mmu.h | 42 + include/asm-frv/mmu_context.h | 50 + include/asm-frv/module.h | 20 + include/asm-frv/msgbuf.h | 32 + include/asm-frv/namei.h | 18 + include/asm-frv/page.h | 105 + include/asm-frv/param.h | 23 + include/asm-frv/pci.h | 108 + include/asm-frv/percpu.h | 6 + include/asm-frv/pgalloc.h | 64 + include/asm-frv/pgtable.h | 555 + include/asm-frv/poll.h | 23 + include/asm-frv/posix_types.h | 66 + include/asm-frv/processor.h | 153 + include/asm-frv/ptrace.h | 86 + include/asm-frv/registers.h | 255 + include/asm-frv/resource.h | 7 + include/asm-frv/scatterlist.h | 32 + include/asm-frv/sections.h | 46 + include/asm-frv/segment.h | 46 + include/asm-frv/semaphore.h | 161 + include/asm-frv/sembuf.h | 26 + include/asm-frv/serial-regs.h | 44 + include/asm-frv/serial.h | 19 + include/asm-frv/setup.h | 25 + include/asm-frv/shmbuf.h | 43 + include/asm-frv/shmparam.h | 7 + include/asm-frv/sigcontext.h | 26 + include/asm-frv/siginfo.h | 12 + include/asm-frv/signal.h | 187 + include/asm-frv/smp.h | 10 + include/asm-frv/socket.h | 51 + include/asm-frv/sockios.h | 13 + include/asm-frv/spinlock.h | 17 + include/asm-frv/spr-regs.h | 401 + include/asm-frv/stat.h | 100 + include/asm-frv/statfs.h | 7 + include/asm-frv/string.h | 51 + include/asm-frv/suspend.h | 20 + include/asm-frv/system.h | 128 + include/asm-frv/termbits.h | 177 + include/asm-frv/termios.h | 74 + include/asm-frv/thread_info.h | 159 + include/asm-frv/timer-regs.h | 106 + include/asm-frv/timex.h | 25 + include/asm-frv/tlb.h | 23 + include/asm-frv/tlbflush.h | 77 + include/asm-frv/topology.h | 14 + include/asm-frv/types.h | 74 + include/asm-frv/uaccess.h | 318 + include/asm-frv/ucontext.h | 12 + include/asm-frv/unaligned.h | 203 + include/asm-frv/unistd.h | 501 + include/asm-frv/user.h | 80 + include/asm-frv/virtconvert.h | 42 + include/asm-generic/4level-fixup.h | 38 + include/asm-generic/bitops.h | 81 + include/asm-generic/bug.h | 34 + include/asm-generic/cputime.h | 66 + include/asm-generic/div64.h | 58 + include/asm-generic/dma-mapping-broken.h | 22 + include/asm-generic/dma-mapping.h | 309 + include/asm-generic/errno-base.h | 39 + include/asm-generic/errno.h | 105 + include/asm-generic/hdreg.h | 8 + include/asm-generic/ide_iops.h | 38 + include/asm-generic/iomap.h | 63 + include/asm-generic/ipc.h | 31 + include/asm-generic/local.h | 118 + include/asm-generic/pci-dma-compat.h | 107 + include/asm-generic/pci.h | 34 + include/asm-generic/percpu.h | 42 + include/asm-generic/pgtable-nopmd.h | 65 + include/asm-generic/pgtable-nopud.h | 61 + include/asm-generic/pgtable.h | 213 + include/asm-generic/resource.h | 88 + include/asm-generic/rtc.h | 213 + include/asm-generic/sections.h | 13 + include/asm-generic/siginfo.h | 287 + include/asm-generic/statfs.h | 51 + include/asm-generic/termios.h | 69 + include/asm-generic/tlb.h | 160 + include/asm-generic/topology.h | 48 + include/asm-generic/uaccess.h | 26 + include/asm-generic/unaligned.h | 121 + include/asm-generic/vmlinux.lds.h | 90 + include/asm-generic/xor.h | 718 + include/asm-h8300/a.out.h | 26 + include/asm-h8300/atomic.h | 113 + include/asm-h8300/bitops.h | 410 + include/asm-h8300/bootinfo.h | 2 + include/asm-h8300/bug.h | 4 + include/asm-h8300/bugs.h | 16 + include/asm-h8300/byteorder.h | 13 + include/asm-h8300/cache.h | 12 + include/asm-h8300/cachectl.h | 14 + include/asm-h8300/cacheflush.h | 38 + include/asm-h8300/checksum.h | 105 + include/asm-h8300/cputime.h | 6 + include/asm-h8300/current.h | 25 + include/asm-h8300/dbg.h | 2 + include/asm-h8300/delay.h | 38 + include/asm-h8300/div64.h | 1 + include/asm-h8300/dma-mapping.h | 1 + include/asm-h8300/dma.h | 16 + include/asm-h8300/elf.h | 107 + include/asm-h8300/errno.h | 6 + include/asm-h8300/fcntl.h | 87 + include/asm-h8300/flat.h | 26 + include/asm-h8300/fpu.h | 1 + include/asm-h8300/gpio.h | 52 + include/asm-h8300/hardirq.h | 27 + include/asm-h8300/hdreg.h | 15 + include/asm-h8300/hw_irq.h | 1 + include/asm-h8300/ide.h | 26 + include/asm-h8300/io.h | 333 + include/asm-h8300/ioctl.h | 80 + include/asm-h8300/ioctls.h | 81 + include/asm-h8300/ipc.h | 1 + include/asm-h8300/ipcbuf.h | 29 + include/asm-h8300/irq.h | 75 + include/asm-h8300/keyboard.h | 33 + include/asm-h8300/kmap_types.h | 19 + include/asm-h8300/linkage.h | 8 + include/asm-h8300/local.h | 6 + include/asm-h8300/mc146818rtc.h | 9 + include/asm-h8300/md.h | 13 + include/asm-h8300/mman.h | 40 + include/asm-h8300/mmu.h | 11 + include/asm-h8300/mmu_context.h | 32 + include/asm-h8300/module.h | 13 + include/asm-h8300/msgbuf.h | 31 + include/asm-h8300/namei.h | 17 + include/asm-h8300/page.h | 104 + include/asm-h8300/page_offset.h | 4 + include/asm-h8300/param.h | 23 + include/asm-h8300/pci.h | 29 + include/asm-h8300/percpu.h | 6 + include/asm-h8300/pgalloc.h | 8 + include/asm-h8300/pgtable.h | 79 + include/asm-h8300/poll.h | 22 + include/asm-h8300/posix_types.h | 64 + include/asm-h8300/processor.h | 135 + include/asm-h8300/ptrace.h | 64 + include/asm-h8300/regs267x.h | 336 + include/asm-h8300/regs306x.h | 212 + include/asm-h8300/resource.h | 6 + include/asm-h8300/scatterlist.h | 13 + include/asm-h8300/sections.h | 6 + include/asm-h8300/segment.h | 49 + include/asm-h8300/semaphore-helper.h | 86 + include/asm-h8300/semaphore.h | 194 + include/asm-h8300/sembuf.h | 25 + include/asm-h8300/setup.h | 6 + include/asm-h8300/sh_bios.h | 29 + include/asm-h8300/shm.h | 32 + include/asm-h8300/shmbuf.h | 42 + include/asm-h8300/shmparam.h | 6 + include/asm-h8300/sigcontext.h | 18 + include/asm-h8300/siginfo.h | 6 + include/asm-h8300/signal.h | 185 + include/asm-h8300/smp.h | 1 + include/asm-h8300/socket.h | 50 + include/asm-h8300/sockios.h | 12 + include/asm-h8300/spinlock.h | 6 + include/asm-h8300/stat.h | 78 + include/asm-h8300/statfs.h | 6 + include/asm-h8300/string.h | 44 + include/asm-h8300/system.h | 149 + include/asm-h8300/target_time.h | 4 + include/asm-h8300/termbits.h | 175 + include/asm-h8300/termios.h | 108 + include/asm-h8300/thread_info.h | 109 + include/asm-h8300/timex.h | 19 + include/asm-h8300/tlb.h | 23 + include/asm-h8300/tlbflush.h | 61 + include/asm-h8300/topology.h | 6 + include/asm-h8300/traps.h | 37 + include/asm-h8300/types.h | 67 + include/asm-h8300/uaccess.h | 171 + include/asm-h8300/ucontext.h | 12 + include/asm-h8300/unaligned.h | 16 + include/asm-h8300/unistd.h | 555 + include/asm-h8300/user.h | 76 + include/asm-h8300/virtconvert.h | 23 + include/asm-i386/8253pit.h | 12 + include/asm-i386/a.out.h | 26 + include/asm-i386/acpi.h | 190 + include/asm-i386/agp.h | 24 + include/asm-i386/apic.h | 126 + include/asm-i386/apicdef.h | 377 + include/asm-i386/arch_hooks.h | 27 + include/asm-i386/atomic.h | 236 + include/asm-i386/bitops.h | 462 + include/asm-i386/boot.h | 15 + include/asm-i386/bug.h | 25 + include/asm-i386/bugs.h | 213 + include/asm-i386/byteorder.h | 59 + include/asm-i386/cache.h | 15 + include/asm-i386/cacheflush.h | 34 + include/asm-i386/checksum.h | 192 + include/asm-i386/cpu.h | 19 + include/asm-i386/cpufeature.h | 129 + include/asm-i386/cputime.h | 6 + include/asm-i386/current.h | 15 + include/asm-i386/debugreg.h | 64 + include/asm-i386/delay.h | 26 + include/asm-i386/desc.h | 144 + include/asm-i386/div64.h | 48 + include/asm-i386/dma-mapping.h | 177 + include/asm-i386/dma.h | 298 + include/asm-i386/e820.h | 40 + include/asm-i386/elf.h | 193 + include/asm-i386/errno.h | 6 + include/asm-i386/fcntl.h | 88 + include/asm-i386/fixmap.h | 158 + include/asm-i386/floppy.h | 319 + include/asm-i386/genapic.h | 115 + include/asm-i386/hardirq.h | 24 + include/asm-i386/hdreg.h | 1 + include/asm-i386/highmem.h | 79 + include/asm-i386/hpet.h | 113 + include/asm-i386/hw_irq.h | 79 + include/asm-i386/i387.h | 115 + include/asm-i386/i8259.h | 17 + include/asm-i386/ide.h | 69 + include/asm-i386/io.h | 381 + include/asm-i386/io_apic.h | 213 + include/asm-i386/ioctl.h | 85 + include/asm-i386/ioctls.h | 83 + include/asm-i386/ipc.h | 1 + include/asm-i386/ipcbuf.h | 29 + include/asm-i386/irq.h | 41 + include/asm-i386/ist.h | 32 + include/asm-i386/kdebug.h | 50 + include/asm-i386/kmap_types.h | 31 + include/asm-i386/kprobes.h | 69 + include/asm-i386/ldt.h | 32 + include/asm-i386/linkage.h | 17 + include/asm-i386/local.h | 70 + include/asm-i386/mach-bigsmp/mach_apic.h | 167 + include/asm-i386/mach-bigsmp/mach_apicdef.h | 13 + include/asm-i386/mach-bigsmp/mach_ipi.h | 25 + include/asm-i386/mach-bigsmp/mach_mpspec.h | 8 + include/asm-i386/mach-default/apm.h | 75 + include/asm-i386/mach-default/bios_ebda.h | 15 + include/asm-i386/mach-default/do_timer.h | 85 + include/asm-i386/mach-default/entry_arch.h | 34 + include/asm-i386/mach-default/io_ports.h | 30 + include/asm-i386/mach-default/irq_vectors.h | 96 + .../mach-default/irq_vectors_limits.h | 21 + include/asm-i386/mach-default/mach_apic.h | 133 + include/asm-i386/mach-default/mach_apicdef.h | 13 + include/asm-i386/mach-default/mach_ipi.h | 30 + include/asm-i386/mach-default/mach_mpparse.h | 28 + include/asm-i386/mach-default/mach_mpspec.h | 8 + include/asm-i386/mach-default/mach_reboot.h | 30 + include/asm-i386/mach-default/mach_time.h | 122 + include/asm-i386/mach-default/mach_timer.h | 48 + include/asm-i386/mach-default/mach_traps.h | 41 + include/asm-i386/mach-default/mach_wakecpu.h | 41 + include/asm-i386/mach-default/pci-functions.h | 19 + .../asm-i386/mach-default/setup_arch_post.h | 40 + .../asm-i386/mach-default/setup_arch_pre.h | 5 + include/asm-i386/mach-default/smpboot_hooks.h | 44 + include/asm-i386/mach-es7000/mach_apic.h | 207 + include/asm-i386/mach-es7000/mach_apicdef.h | 13 + include/asm-i386/mach-es7000/mach_ipi.h | 24 + include/asm-i386/mach-es7000/mach_mpparse.h | 41 + include/asm-i386/mach-es7000/mach_mpspec.h | 8 + include/asm-i386/mach-es7000/mach_wakecpu.h | 58 + .../mach-generic/irq_vectors_limits.h | 14 + include/asm-i386/mach-generic/mach_apic.h | 32 + include/asm-i386/mach-generic/mach_apicdef.h | 11 + include/asm-i386/mach-generic/mach_ipi.h | 10 + include/asm-i386/mach-generic/mach_mpparse.h | 12 + include/asm-i386/mach-generic/mach_mpspec.h | 10 + include/asm-i386/mach-numaq/mach_apic.h | 151 + include/asm-i386/mach-numaq/mach_apicdef.h | 14 + include/asm-i386/mach-numaq/mach_ipi.h | 25 + include/asm-i386/mach-numaq/mach_mpparse.h | 29 + include/asm-i386/mach-numaq/mach_mpspec.h | 8 + include/asm-i386/mach-numaq/mach_wakecpu.h | 43 + .../asm-i386/mach-summit/irq_vectors_limits.h | 14 + include/asm-i386/mach-summit/mach_apic.h | 189 + include/asm-i386/mach-summit/mach_apicdef.h | 13 + include/asm-i386/mach-summit/mach_ipi.h | 25 + include/asm-i386/mach-summit/mach_mpparse.h | 121 + include/asm-i386/mach-summit/mach_mpspec.h | 9 + include/asm-i386/mach-visws/cobalt.h | 125 + include/asm-i386/mach-visws/do_timer.h | 52 + include/asm-i386/mach-visws/entry_arch.h | 23 + include/asm-i386/mach-visws/irq_vectors.h | 62 + include/asm-i386/mach-visws/lithium.h | 53 + include/asm-i386/mach-visws/mach_apic.h | 100 + include/asm-i386/mach-visws/mach_apicdef.h | 12 + include/asm-i386/mach-visws/piix4.h | 107 + include/asm-i386/mach-visws/setup_arch_post.h | 49 + include/asm-i386/mach-visws/setup_arch_pre.h | 5 + include/asm-i386/mach-visws/smpboot_hooks.h | 24 + include/asm-i386/mach-voyager/do_timer.h | 25 + include/asm-i386/mach-voyager/entry_arch.h | 26 + include/asm-i386/mach-voyager/irq_vectors.h | 79 + .../asm-i386/mach-voyager/setup_arch_post.h | 73 + .../asm-i386/mach-voyager/setup_arch_pre.h | 10 + include/asm-i386/math_emu.h | 35 + include/asm-i386/mc146818rtc.h | 94 + include/asm-i386/mca.h | 43 + include/asm-i386/mca_dma.h | 202 + include/asm-i386/mman.h | 43 + include/asm-i386/mmu.h | 17 + include/asm-i386/mmu_context.h | 72 + include/asm-i386/mmx.h | 14 + include/asm-i386/mmzone.h | 147 + include/asm-i386/module.h | 75 + include/asm-i386/mpspec.h | 83 + include/asm-i386/mpspec_def.h | 188 + include/asm-i386/msgbuf.h | 31 + include/asm-i386/msi.h | 22 + include/asm-i386/msr.h | 272 + include/asm-i386/mtrr.h | 107 + include/asm-i386/namei.h | 17 + include/asm-i386/nmi.h | 28 + include/asm-i386/node.h | 29 + include/asm-i386/numaq.h | 164 + include/asm-i386/numnodes.h | 18 + include/asm-i386/page.h | 153 + include/asm-i386/param.h | 23 + include/asm-i386/parport.h | 18 + include/asm-i386/pci-direct.h | 1 + include/asm-i386/pci.h | 110 + include/asm-i386/percpu.h | 6 + include/asm-i386/pgalloc.h | 50 + include/asm-i386/pgtable-2level-defs.h | 18 + include/asm-i386/pgtable-2level.h | 69 + include/asm-i386/pgtable-3level-defs.h | 22 + include/asm-i386/pgtable-3level.h | 160 + include/asm-i386/pgtable.h | 422 + include/asm-i386/poll.h | 26 + include/asm-i386/posix_types.h | 82 + include/asm-i386/processor.h | 682 + include/asm-i386/ptrace.h | 69 + include/asm-i386/resource.h | 6 + include/asm-i386/rtc.h | 10 + include/asm-i386/rwlock.h | 71 + include/asm-i386/rwsem.h | 288 + include/asm-i386/scatterlist.h | 21 + include/asm-i386/seccomp.h | 16 + include/asm-i386/sections.h | 7 + include/asm-i386/segment.h | 101 + include/asm-i386/semaphore.h | 194 + include/asm-i386/sembuf.h | 25 + include/asm-i386/serial.h | 130 + include/asm-i386/setup.h | 66 + include/asm-i386/shmbuf.h | 42 + include/asm-i386/shmparam.h | 6 + include/asm-i386/sigcontext.h | 85 + include/asm-i386/siginfo.h | 6 + include/asm-i386/signal.h | 237 + include/asm-i386/smp.h | 90 + include/asm-i386/socket.h | 50 + include/asm-i386/sockios.h | 12 + include/asm-i386/spinlock.h | 250 + include/asm-i386/srat.h | 37 + include/asm-i386/stat.h | 78 + include/asm-i386/statfs.h | 6 + include/asm-i386/string.h | 449 + include/asm-i386/suspend.h | 66 + include/asm-i386/system.h | 473 + include/asm-i386/termbits.h | 173 + include/asm-i386/termios.h | 107 + include/asm-i386/thread_info.h | 174 + include/asm-i386/timer.h | 64 + include/asm-i386/timex.h | 52 + include/asm-i386/tlb.h | 20 + include/asm-i386/tlbflush.h | 147 + include/asm-i386/topology.h | 108 + include/asm-i386/types.h | 72 + include/asm-i386/uaccess.h | 539 + include/asm-i386/ucontext.h | 12 + include/asm-i386/unaligned.h | 37 + include/asm-i386/unistd.h | 466 + include/asm-i386/user.h | 121 + include/asm-i386/vga.h | 20 + include/asm-i386/vic.h | 61 + include/asm-i386/vm86.h | 208 + include/asm-i386/voyager.h | 521 + include/asm-i386/xor.h | 883 + include/asm-ia64/a.out.h | 35 + include/asm-ia64/acpi-ext.h | 17 + include/asm-ia64/acpi.h | 112 + include/asm-ia64/agp.h | 21 + include/asm-ia64/asmmacro.h | 111 + include/asm-ia64/atomic.h | 183 + include/asm-ia64/bitops.h | 410 + include/asm-ia64/break.h | 21 + include/asm-ia64/bug.h | 15 + include/asm-ia64/bugs.h | 19 + include/asm-ia64/byteorder.h | 42 + include/asm-ia64/cache.h | 30 + include/asm-ia64/cacheflush.h | 50 + include/asm-ia64/checksum.h | 76 + include/asm-ia64/compat.h | 198 + include/asm-ia64/cpu.h | 22 + include/asm-ia64/cputime.h | 6 + include/asm-ia64/current.h | 17 + include/asm-ia64/cyclone.h | 15 + include/asm-ia64/delay.h | 97 + include/asm-ia64/div64.h | 1 + include/asm-ia64/dma-mapping.h | 70 + include/asm-ia64/dma.h | 23 + include/asm-ia64/elf.h | 259 + include/asm-ia64/errno.h | 1 + include/asm-ia64/fcntl.h | 84 + include/asm-ia64/fpswa.h | 73 + include/asm-ia64/fpu.h | 66 + include/asm-ia64/gcc_intrin.h | 597 + include/asm-ia64/hardirq.h | 38 + include/asm-ia64/hdreg.h | 14 + include/asm-ia64/hw_irq.h | 144 + include/asm-ia64/ia32.h | 38 + include/asm-ia64/ia64regs.h | 100 + include/asm-ia64/ide.h | 71 + include/asm-ia64/intel_intrin.h | 257 + include/asm-ia64/intrinsics.h | 181 + include/asm-ia64/io.h | 484 + include/asm-ia64/ioctl.h | 77 + include/asm-ia64/ioctl32.h | 1 + include/asm-ia64/ioctls.h | 89 + include/asm-ia64/iosapic.h | 110 + include/asm-ia64/ipcbuf.h | 28 + include/asm-ia64/irq.h | 43 + include/asm-ia64/kmap_types.h | 31 + include/asm-ia64/kregs.h | 163 + include/asm-ia64/linkage.h | 6 + include/asm-ia64/local.h | 50 + include/asm-ia64/machvec.h | 390 + include/asm-ia64/machvec_dig.h | 18 + include/asm-ia64/machvec_hpsim.h | 18 + include/asm-ia64/machvec_hpzx1.h | 38 + include/asm-ia64/machvec_hpzx1_swiotlb.h | 43 + include/asm-ia64/machvec_init.h | 32 + include/asm-ia64/machvec_sn2.h | 126 + include/asm-ia64/mc146818rtc.h | 10 + include/asm-ia64/mca.h | 132 + include/asm-ia64/mca_asm.h | 312 + include/asm-ia64/meminit.h | 60 + include/asm-ia64/mman.h | 51 + include/asm-ia64/mmu.h | 11 + include/asm-ia64/mmu_context.h | 170 + include/asm-ia64/mmzone.h | 32 + include/asm-ia64/module.h | 35 + include/asm-ia64/msgbuf.h | 27 + include/asm-ia64/msi.h | 20 + include/asm-ia64/namei.h | 25 + include/asm-ia64/nodedata.h | 52 + include/asm-ia64/numa.h | 74 + include/asm-ia64/numnodes.h | 15 + include/asm-ia64/page.h | 207 + include/asm-ia64/pal.h | 1564 + include/asm-ia64/param.h | 42 + include/asm-ia64/parport.h | 20 + include/asm-ia64/patch.h | 25 + include/asm-ia64/pci.h | 141 + include/asm-ia64/percpu.h | 72 + include/asm-ia64/perfmon.h | 259 + include/asm-ia64/perfmon_default_smpl.h | 83 + include/asm-ia64/pgalloc.h | 167 + include/asm-ia64/pgtable.h | 593 + include/asm-ia64/poll.h | 31 + include/asm-ia64/posix_types.h | 126 + include/asm-ia64/processor.h | 698 + include/asm-ia64/ptrace.h | 337 + include/asm-ia64/ptrace_offsets.h | 268 + include/asm-ia64/resource.h | 8 + include/asm-ia64/rse.h | 66 + include/asm-ia64/rwsem.h | 188 + include/asm-ia64/sal.h | 840 + include/asm-ia64/scatterlist.h | 28 + include/asm-ia64/sections.h | 22 + include/asm-ia64/segment.h | 6 + include/asm-ia64/semaphore.h | 102 + include/asm-ia64/sembuf.h | 22 + include/asm-ia64/serial.h | 19 + include/asm-ia64/setup.h | 6 + include/asm-ia64/shmbuf.h | 38 + include/asm-ia64/shmparam.h | 12 + include/asm-ia64/sigcontext.h | 70 + include/asm-ia64/siginfo.h | 141 + include/asm-ia64/signal.h | 185 + include/asm-ia64/smp.h | 134 + include/asm-ia64/sn/addrs.h | 238 + include/asm-ia64/sn/arch.h | 52 + include/asm-ia64/sn/bte.h | 148 + include/asm-ia64/sn/clksupport.h | 28 + include/asm-ia64/sn/fetchop.h | 85 + include/asm-ia64/sn/geo.h | 124 + include/asm-ia64/sn/intr.h | 56 + include/asm-ia64/sn/io.h | 265 + include/asm-ia64/sn/klconfig.h | 272 + include/asm-ia64/sn/l1.h | 36 + include/asm-ia64/sn/leds.h | 33 + include/asm-ia64/sn/module.h | 127 + include/asm-ia64/sn/nodepda.h | 86 + include/asm-ia64/sn/pda.h | 80 + include/asm-ia64/sn/rw_mmr.h | 74 + include/asm-ia64/sn/shub_mmr.h | 441 + include/asm-ia64/sn/shubio.h | 3476 +++ include/asm-ia64/sn/simulator.h | 27 + include/asm-ia64/sn/sn2/sn_hwperf.h | 226 + include/asm-ia64/sn/sn_cpuid.h | 144 + include/asm-ia64/sn/sn_fru.h | 44 + include/asm-ia64/sn/sn_sal.h | 1015 + include/asm-ia64/sn/sndrv.h | 47 + include/asm-ia64/sn/types.h | 25 + include/asm-ia64/socket.h | 59 + include/asm-ia64/sockios.h | 19 + include/asm-ia64/spinlock.h | 208 + include/asm-ia64/stat.h | 51 + include/asm-ia64/statfs.h | 62 + include/asm-ia64/string.h | 22 + include/asm-ia64/suspend.h | 1 + include/asm-ia64/system.h | 295 + include/asm-ia64/termbits.h | 182 + include/asm-ia64/termios.h | 113 + include/asm-ia64/thread_info.h | 94 + include/asm-ia64/timex.h | 40 + include/asm-ia64/tlb.h | 245 + include/asm-ia64/tlbflush.h | 99 + include/asm-ia64/topology.h | 90 + include/asm-ia64/types.h | 75 + include/asm-ia64/uaccess.h | 408 + include/asm-ia64/ucontext.h | 12 + include/asm-ia64/unaligned.h | 6 + include/asm-ia64/unistd.h | 399 + include/asm-ia64/unwind.h | 240 + include/asm-ia64/user.h | 58 + include/asm-ia64/ustack.h | 16 + include/asm-ia64/vga.h | 22 + include/asm-ia64/xor.h | 33 + include/asm-m32r/a.out.h | 28 + include/asm-m32r/addrspace.h | 58 + include/asm-m32r/assembler.h | 225 + include/asm-m32r/atomic.h | 295 + include/asm-m32r/bitops.h | 702 + include/asm-m32r/bug.h | 4 + include/asm-m32r/bugs.h | 21 + include/asm-m32r/byteorder.h | 19 + include/asm-m32r/cache.h | 12 + include/asm-m32r/cachectl.h | 26 + include/asm-m32r/cacheflush.h | 68 + include/asm-m32r/checksum.h | 208 + include/asm-m32r/cputime.h | 6 + include/asm-m32r/current.h | 18 + include/asm-m32r/delay.h | 28 + include/asm-m32r/div64.h | 38 + include/asm-m32r/dma-mapping.h | 23 + include/asm-m32r/dma.h | 14 + include/asm-m32r/elf.h | 136 + include/asm-m32r/errno.h | 9 + include/asm-m32r/fcntl.h | 92 + include/asm-m32r/flat.h | 145 + include/asm-m32r/hardirq.h | 37 + include/asm-m32r/hdreg.h | 1 + include/asm-m32r/hw_irq.h | 9 + include/asm-m32r/ide.h | 82 + include/asm-m32r/io.h | 232 + include/asm-m32r/ioctl.h | 78 + include/asm-m32r/ioctls.h | 88 + include/asm-m32r/ipc.h | 1 + include/asm-m32r/ipcbuf.h | 33 + include/asm-m32r/irq.h | 75 + include/asm-m32r/kmap_types.h | 34 + include/asm-m32r/linkage.h | 7 + include/asm-m32r/local.h | 6 + include/asm-m32r/m32102.h | 294 + include/asm-m32r/m32102peri.h | 468 + include/asm-m32r/m32700ut/m32700ut_lan.h | 107 + include/asm-m32r/m32700ut/m32700ut_lcd.h | 59 + include/asm-m32r/m32700ut/m32700ut_pld.h | 265 + include/asm-m32r/m32r.h | 134 + include/asm-m32r/m32r_mp_fpga.h | 313 + include/asm-m32r/mappi2/mappi2_pld.h | 151 + include/asm-m32r/mc146818rtc.h | 32 + include/asm-m32r/mman.h | 45 + include/asm-m32r/mmu.h | 21 + include/asm-m32r/mmu_context.h | 170 + include/asm-m32r/mmzone.h | 80 + include/asm-m32r/module.h | 13 + include/asm-m32r/msgbuf.h | 35 + include/asm-m32r/namei.h | 21 + include/asm-m32r/numnodes.h | 15 + include/asm-m32r/opsput/opsput_lan.h | 56 + include/asm-m32r/opsput/opsput_lcd.h | 59 + include/asm-m32r/opsput/opsput_pld.h | 259 + include/asm-m32r/page.h | 115 + include/asm-m32r/param.h | 27 + include/asm-m32r/pci.h | 10 + include/asm-m32r/percpu.h | 6 + include/asm-m32r/pgalloc.h | 78 + include/asm-m32r/pgtable-2level.h | 78 + include/asm-m32r/pgtable.h | 400 + include/asm-m32r/poll.h | 31 + include/asm-m32r/posix_types.h | 126 + include/asm-m32r/processor.h | 143 + include/asm-m32r/ptrace.h | 165 + include/asm-m32r/resource.h | 6 + include/asm-m32r/rtc.h | 70 + include/asm-m32r/scatterlist.h | 18 + include/asm-m32r/sections.h | 8 + include/asm-m32r/segment.h | 14 + include/asm-m32r/semaphore.h | 205 + include/asm-m32r/sembuf.h | 29 + include/asm-m32r/serial.h | 10 + include/asm-m32r/setup.h | 33 + include/asm-m32r/shmbuf.h | 46 + include/asm-m32r/shmparam.h | 8 + include/asm-m32r/sigcontext.h | 50 + include/asm-m32r/siginfo.h | 8 + include/asm-m32r/signal.h | 200 + include/asm-m32r/smp.h | 118 + include/asm-m32r/socket.h | 50 + include/asm-m32r/sockios.h | 14 + include/asm-m32r/spinlock.h | 380 + include/asm-m32r/stat.h | 91 + include/asm-m32r/statfs.h | 6 + include/asm-m32r/string.h | 15 + include/asm-m32r/syscall.h | 11 + include/asm-m32r/system.h | 299 + include/asm-m32r/termbits.h | 176 + include/asm-m32r/termios.h | 109 + include/asm-m32r/thread_info.h | 182 + include/asm-m32r/timex.h | 34 + include/asm-m32r/tlb.h | 20 + include/asm-m32r/tlbflush.h | 102 + include/asm-m32r/topology.h | 48 + include/asm-m32r/types.h | 64 + include/asm-m32r/uaccess.h | 753 + include/asm-m32r/ucontext.h | 14 + include/asm-m32r/unaligned.h | 25 + include/asm-m32r/unistd.h | 474 + include/asm-m32r/user.h | 59 + include/asm-m32r/vga.h | 22 + include/asm-m32r/xor.h | 8 + include/asm-m68k/a.out.h | 26 + include/asm-m68k/adb.h | 75 + include/asm-m68k/adb_iop.h | 44 + include/asm-m68k/amigahw.h | 354 + include/asm-m68k/amigaints.h | 133 + include/asm-m68k/amigayle.h | 107 + include/asm-m68k/amipcmcia.h | 110 + include/asm-m68k/apollodma.h | 248 + include/asm-m68k/apollohw.h | 104 + include/asm-m68k/atafd.h | 12 + include/asm-m68k/atafdreg.h | 79 + include/asm-m68k/atari_SLM.h | 28 + include/asm-m68k/atari_acsi.h | 37 + include/asm-m68k/atari_joystick.h | 22 + include/asm-m68k/atari_stdma.h | 23 + include/asm-m68k/atari_stram.h | 17 + include/asm-m68k/atarihw.h | 808 + include/asm-m68k/atariints.h | 215 + include/asm-m68k/atarikb.h | 40 + include/asm-m68k/atomic.h | 148 + include/asm-m68k/bitops.h | 436 + include/asm-m68k/blinken.h | 32 + include/asm-m68k/bootinfo.h | 378 + include/asm-m68k/bug.h | 27 + include/asm-m68k/bugs.h | 14 + include/asm-m68k/bvme6000hw.h | 150 + include/asm-m68k/byteorder.h | 25 + include/asm-m68k/cache.h | 13 + include/asm-m68k/cachectl.h | 14 + include/asm-m68k/cacheflush.h | 149 + include/asm-m68k/checksum.h | 150 + include/asm-m68k/contregs.h | 4 + include/asm-m68k/cputime.h | 6 + include/asm-m68k/current.h | 6 + include/asm-m68k/delay.h | 57 + include/asm-m68k/div64.h | 26 + include/asm-m68k/dma-mapping.h | 12 + include/asm-m68k/dma.h | 21 + include/asm-m68k/dsp56k.h | 35 + include/asm-m68k/dvma.h | 243 + include/asm-m68k/elf.h | 122 + include/asm-m68k/entry.h | 138 + include/asm-m68k/errno.h | 6 + include/asm-m68k/fbio.h | 1 + include/asm-m68k/fcntl.h | 87 + include/asm-m68k/floppy.h | 259 + include/asm-m68k/fpu.h | 22 + include/asm-m68k/hardirq.h | 26 + include/asm-m68k/hdreg.h | 1 + include/asm-m68k/hp300hw.h | 25 + include/asm-m68k/hw_irq.h | 6 + include/asm-m68k/hwtest.h | 15 + include/asm-m68k/ide.h | 144 + include/asm-m68k/idprom.h | 8 + include/asm-m68k/intersil.h | 48 + include/asm-m68k/io.h | 376 + include/asm-m68k/ioctl.h | 80 + include/asm-m68k/ioctls.h | 80 + include/asm-m68k/ipc.h | 1 + include/asm-m68k/ipcbuf.h | 29 + include/asm-m68k/irq.h | 131 + include/asm-m68k/kbio.h | 1 + include/asm-m68k/kmap_types.h | 21 + include/asm-m68k/linkage.h | 7 + include/asm-m68k/local.h | 6 + include/asm-m68k/mac_asc.h | 27 + include/asm-m68k/mac_baboon.h | 34 + include/asm-m68k/mac_iop.h | 162 + include/asm-m68k/mac_mouse.h | 23 + include/asm-m68k/mac_oss.h | 94 + include/asm-m68k/mac_psc.h | 248 + include/asm-m68k/mac_via.h | 268 + include/asm-m68k/machdep.h | 42 + include/asm-m68k/machines.h | 87 + include/asm-m68k/machw.h | 101 + include/asm-m68k/macintosh.h | 152 + include/asm-m68k/macints.h | 169 + include/asm-m68k/math-emu.h | 300 + include/asm-m68k/mc146818rtc.h | 26 + include/asm-m68k/md.h | 13 + include/asm-m68k/mman.h | 43 + include/asm-m68k/mmu.h | 7 + include/asm-m68k/mmu_context.h | 154 + include/asm-m68k/module.h | 7 + include/asm-m68k/motorola_pgalloc.h | 107 + include/asm-m68k/motorola_pgtable.h | 294 + include/asm-m68k/movs.h | 55 + include/asm-m68k/msgbuf.h | 31 + include/asm-m68k/mvme147hw.h | 111 + include/asm-m68k/mvme16xhw.h | 111 + include/asm-m68k/namei.h | 17 + include/asm-m68k/nubus.h | 46 + include/asm-m68k/openprom.h | 314 + include/asm-m68k/oplib.h | 297 + include/asm-m68k/page.h | 195 + include/asm-m68k/page_offset.h | 9 + include/asm-m68k/param.h | 22 + include/asm-m68k/parport.h | 26 + include/asm-m68k/pci.h | 61 + include/asm-m68k/percpu.h | 6 + include/asm-m68k/pgalloc.h | 19 + include/asm-m68k/pgtable.h | 191 + include/asm-m68k/poll.h | 23 + include/asm-m68k/posix_types.h | 65 + include/asm-m68k/processor.h | 140 + include/asm-m68k/ptrace.h | 80 + include/asm-m68k/q40_master.h | 69 + include/asm-m68k/q40ints.h | 29 + include/asm-m68k/raw_io.h | 342 + include/asm-m68k/resource.h | 6 + include/asm-m68k/rtc.h | 76 + include/asm-m68k/sbus.h | 50 + include/asm-m68k/scatterlist.h | 19 + include/asm-m68k/sections.h | 6 + include/asm-m68k/segment.h | 57 + include/asm-m68k/semaphore-helper.h | 143 + include/asm-m68k/semaphore.h | 167 + include/asm-m68k/sembuf.h | 25 + include/asm-m68k/serial.h | 79 + include/asm-m68k/setup.h | 375 + include/asm-m68k/shm.h | 32 + include/asm-m68k/shmbuf.h | 42 + include/asm-m68k/shmparam.h | 6 + include/asm-m68k/sigcontext.h | 19 + include/asm-m68k/siginfo.h | 92 + include/asm-m68k/signal.h | 220 + include/asm-m68k/socket.h | 50 + include/asm-m68k/sockios.h | 12 + include/asm-m68k/spinlock.h | 6 + include/asm-m68k/stat.h | 78 + include/asm-m68k/statfs.h | 6 + include/asm-m68k/string.h | 542 + include/asm-m68k/sun3-head.h | 12 + include/asm-m68k/sun3_pgalloc.h | 95 + include/asm-m68k/sun3_pgtable.h | 238 + include/asm-m68k/sun3ints.h | 49 + include/asm-m68k/sun3mmu.h | 170 + include/asm-m68k/sun3x.h | 27 + include/asm-m68k/sun3xflop.h | 265 + include/asm-m68k/sun3xprom.h | 43 + include/asm-m68k/suspend.h | 6 + include/asm-m68k/swim_iop.h | 221 + include/asm-m68k/system.h | 201 + include/asm-m68k/termbits.h | 175 + include/asm-m68k/termios.h | 108 + include/asm-m68k/thread_info.h | 118 + include/asm-m68k/timex.h | 18 + include/asm-m68k/tlb.h | 20 + include/asm-m68k/tlbflush.h | 230 + include/asm-m68k/topology.h | 6 + include/asm-m68k/traps.h | 265 + include/asm-m68k/types.h | 69 + include/asm-m68k/uaccess.h | 893 + include/asm-m68k/ucontext.h | 30 + include/asm-m68k/unaligned.h | 16 + include/asm-m68k/unistd.h | 465 + include/asm-m68k/user.h | 89 + include/asm-m68k/virtconvert.h | 76 + include/asm-m68k/vuid_event.h | 4 + include/asm-m68k/xor.h | 1 + include/asm-m68k/zorro.h | 45 + include/asm-m68knommu/MC68328.h | 1266 + include/asm-m68knommu/MC68332.h | 152 + include/asm-m68knommu/MC68EZ328.h | 1253 + include/asm-m68knommu/MC68VZ328.h | 1349 + include/asm-m68knommu/a.out.h | 1 + include/asm-m68knommu/anchor.h | 112 + include/asm-m68knommu/asm-offsets.h | 49 + include/asm-m68knommu/atomic.h | 134 + include/asm-m68knommu/bitops.h | 503 + include/asm-m68knommu/bootinfo.h | 2 + include/asm-m68knommu/bootstd.h | 132 + include/asm-m68knommu/bug.h | 4 + include/asm-m68knommu/bugs.h | 16 + include/asm-m68knommu/byteorder.h | 13 + include/asm-m68knommu/cache.h | 12 + include/asm-m68knommu/cachectl.h | 1 + include/asm-m68knommu/cacheflush.h | 75 + include/asm-m68knommu/checksum.h | 133 + include/asm-m68knommu/coldfire.h | 86 + include/asm-m68knommu/commproc.h | 723 + include/asm-m68knommu/cputime.h | 6 + include/asm-m68knommu/current.h | 24 + include/asm-m68knommu/dbg.h | 6 + include/asm-m68knommu/delay.h | 76 + include/asm-m68knommu/div64.h | 1 + include/asm-m68knommu/dma-mapping.h | 10 + include/asm-m68knommu/dma.h | 492 + include/asm-m68knommu/elf.h | 113 + include/asm-m68knommu/elia.h | 42 + include/asm-m68knommu/entry.h | 183 + include/asm-m68knommu/errno.h | 1 + include/asm-m68knommu/fcntl.h | 1 + include/asm-m68knommu/flat.h | 16 + include/asm-m68knommu/fpu.h | 22 + include/asm-m68knommu/hardirq.h | 25 + include/asm-m68knommu/hdreg.h | 1 + include/asm-m68knommu/hwtest.h | 1 + include/asm-m68knommu/ide.h | 444 + include/asm-m68knommu/io.h | 203 + include/asm-m68knommu/ioctl.h | 1 + include/asm-m68knommu/ioctls.h | 1 + include/asm-m68knommu/ipc.h | 1 + include/asm-m68knommu/ipcbuf.h | 1 + include/asm-m68knommu/irq.h | 128 + include/asm-m68knommu/kmap_types.h | 21 + include/asm-m68knommu/linkage.h | 1 + include/asm-m68knommu/local.h | 6 + include/asm-m68knommu/m5206sim.h | 132 + include/asm-m68knommu/m5249sim.h | 209 + include/asm-m68knommu/m5272sim.h | 79 + include/asm-m68knommu/m527xsim.h | 58 + include/asm-m68knommu/m528xsim.h | 45 + include/asm-m68knommu/m5307sim.h | 181 + include/asm-m68knommu/m5407sim.h | 157 + include/asm-m68knommu/m68360.h | 5 + include/asm-m68knommu/m68360_enet.h | 177 + include/asm-m68knommu/m68360_pram.h | 431 + include/asm-m68knommu/m68360_quicc.h | 362 + include/asm-m68knommu/m68360_regs.h | 408 + include/asm-m68knommu/machdep.h | 54 + include/asm-m68knommu/math-emu.h | 1 + include/asm-m68knommu/mc146818rtc.h | 9 + include/asm-m68knommu/mcfcache.h | 125 + include/asm-m68knommu/mcfdma.h | 145 + include/asm-m68knommu/mcfmbus.h | 78 + include/asm-m68knommu/mcfne.h | 353 + include/asm-m68knommu/mcfpci.h | 120 + include/asm-m68knommu/mcfpit.h | 63 + include/asm-m68knommu/mcfsim.h | 109 + include/asm-m68knommu/mcfsmc.h | 188 + include/asm-m68knommu/mcftimer.h | 85 + include/asm-m68knommu/mcfuart.h | 200 + include/asm-m68knommu/mcfwdebug.h | 119 + include/asm-m68knommu/md.h | 1 + include/asm-m68knommu/mman.h | 1 + include/asm-m68knommu/mmu.h | 11 + include/asm-m68knommu/mmu_context.h | 33 + include/asm-m68knommu/module.h | 1 + include/asm-m68knommu/movs.h | 1 + include/asm-m68knommu/msgbuf.h | 1 + include/asm-m68knommu/namei.h | 1 + include/asm-m68knommu/nettel.h | 109 + include/asm-m68knommu/openprom.h | 1 + include/asm-m68knommu/oplib.h | 1 + include/asm-m68knommu/page.h | 95 + include/asm-m68knommu/page_offset.h | 47 + include/asm-m68knommu/param.h | 26 + include/asm-m68knommu/pci.h | 39 + include/asm-m68knommu/percpu.h | 6 + include/asm-m68knommu/pgalloc.h | 8 + include/asm-m68knommu/pgtable.h | 76 + include/asm-m68knommu/poll.h | 1 + include/asm-m68knommu/posix_types.h | 1 + include/asm-m68knommu/processor.h | 131 + include/asm-m68knommu/ptrace.h | 91 + include/asm-m68knommu/quicc_simple.h | 52 + include/asm-m68knommu/resource.h | 1 + include/asm-m68knommu/scatterlist.h | 13 + include/asm-m68knommu/sections.h | 7 + include/asm-m68knommu/segment.h | 51 + include/asm-m68knommu/semaphore-helper.h | 83 + include/asm-m68knommu/semaphore.h | 157 + include/asm-m68knommu/sembuf.h | 1 + include/asm-m68knommu/setup.h | 5 + include/asm-m68knommu/shm.h | 1 + include/asm-m68knommu/shmbuf.h | 1 + include/asm-m68knommu/shmparam.h | 1 + include/asm-m68knommu/sigcontext.h | 16 + include/asm-m68knommu/siginfo.h | 6 + include/asm-m68knommu/signal.h | 183 + include/asm-m68knommu/smp.h | 1 + include/asm-m68knommu/socket.h | 1 + include/asm-m68knommu/sockios.h | 1 + include/asm-m68knommu/spinlock.h | 1 + include/asm-m68knommu/stat.h | 1 + include/asm-m68knommu/statfs.h | 1 + include/asm-m68knommu/string.h | 126 + include/asm-m68knommu/system.h | 286 + include/asm-m68knommu/termbits.h | 1 + include/asm-m68knommu/termios.h | 1 + include/asm-m68knommu/thread_info.h | 106 + include/asm-m68knommu/timex.h | 1 + include/asm-m68knommu/tlb.h | 1 + include/asm-m68knommu/tlbflush.h | 61 + include/asm-m68knommu/topology.h | 6 + include/asm-m68knommu/traps.h | 150 + include/asm-m68knommu/types.h | 1 + include/asm-m68knommu/uaccess.h | 182 + include/asm-m68knommu/ucontext.h | 38 + include/asm-m68knommu/unaligned.h | 24 + include/asm-m68knommu/unistd.h | 529 + include/asm-m68knommu/user.h | 1 + include/asm-mips/8253pit.h | 10 + include/asm-mips/a.out.h | 47 + include/asm-mips/addrspace.h | 187 + include/asm-mips/arc/hinv.h | 174 + include/asm-mips/arc/types.h | 87 + include/asm-mips/asm.h | 396 + include/asm-mips/asmmacro-32.h | 158 + include/asm-mips/asmmacro-64.h | 140 + include/asm-mips/asmmacro.h | 51 + include/asm-mips/atomic.h | 653 + include/asm-mips/bcache.h | 62 + include/asm-mips/bitops.h | 850 + include/asm-mips/bootinfo.h | 256 + include/asm-mips/branch.h | 38 + include/asm-mips/break.h | 33 + include/asm-mips/bug.h | 14 + include/asm-mips/bugs.h | 23 + include/asm-mips/byteorder.h | 30 + include/asm-mips/cache.h | 23 + include/asm-mips/cachectl.h | 26 + include/asm-mips/cacheflush.h | 81 + include/asm-mips/cacheops.h | 81 + include/asm-mips/checksum.h | 253 + include/asm-mips/cobalt/cobalt.h | 90 + include/asm-mips/compat.h | 144 + include/asm-mips/compiler.h | 17 + include/asm-mips/cpu-features.h | 159 + include/asm-mips/cpu-info.h | 82 + include/asm-mips/cpu.h | 222 + include/asm-mips/cputime.h | 6 + include/asm-mips/current.h | 23 + include/asm-mips/ddb5074.h | 11 + include/asm-mips/ddb5xxx/ddb5074.h | 38 + include/asm-mips/ddb5xxx/ddb5476.h | 157 + include/asm-mips/ddb5xxx/ddb5477.h | 346 + include/asm-mips/ddb5xxx/ddb5xxx.h | 273 + include/asm-mips/debug.h | 49 + include/asm-mips/dec/ecc.h | 55 + include/asm-mips/dec/interrupts.h | 125 + include/asm-mips/dec/ioasic.h | 36 + include/asm-mips/dec/ioasic_addrs.h | 151 + include/asm-mips/dec/ioasic_ints.h | 74 + include/asm-mips/dec/kn01.h | 83 + include/asm-mips/dec/kn02.h | 106 + include/asm-mips/dec/kn02ba.h | 67 + include/asm-mips/dec/kn02ca.h | 79 + include/asm-mips/dec/kn02xa.h | 75 + include/asm-mips/dec/kn03.h | 83 + include/asm-mips/dec/kn05.h | 71 + include/asm-mips/dec/kn230.h | 26 + include/asm-mips/dec/machtype.h | 27 + include/asm-mips/dec/prom.h | 173 + include/asm-mips/dec/serial.h | 36 + include/asm-mips/dec/tc.h | 43 + include/asm-mips/dec/tcinfo.h | 47 + include/asm-mips/dec/tcmodule.h | 39 + include/asm-mips/delay.h | 93 + include/asm-mips/div64.h | 127 + include/asm-mips/dma-mapping.h | 79 + include/asm-mips/dma.h | 313 + include/asm-mips/ds1286.h | 15 + include/asm-mips/elf.h | 282 + include/asm-mips/errno.h | 127 + include/asm-mips/fcntl.h | 125 + include/asm-mips/fixmap.h | 110 + include/asm-mips/floppy.h | 56 + include/asm-mips/fpregdef.h | 99 + include/asm-mips/fpu.h | 138 + include/asm-mips/fpu_emulator.h | 38 + include/asm-mips/galileo-boards/ev96100.h | 55 + include/asm-mips/galileo-boards/ev96100int.h | 12 + include/asm-mips/galileo-boards/gt96100.h | 427 + include/asm-mips/gcc/sgidefs.h | 17 + include/asm-mips/gdb-stub.h | 215 + include/asm-mips/gfx.h | 55 + include/asm-mips/gt64120.h | 561 + include/asm-mips/gt64240.h | 1235 + include/asm-mips/hardirq.h | 24 + include/asm-mips/hazards.h | 217 + include/asm-mips/hdreg.h | 1 + include/asm-mips/highmem.h | 103 + include/asm-mips/hp-lj/asic.h | 7 + include/asm-mips/hw_irq.h | 27 + include/asm-mips/i8259.h | 67 + include/asm-mips/ide.h | 13 + include/asm-mips/inst.h | 371 + include/asm-mips/interrupt.h | 134 + include/asm-mips/inventory.h | 20 + include/asm-mips/io.h | 630 + include/asm-mips/ioctl.h | 99 + include/asm-mips/ioctls.h | 105 + include/asm-mips/ip32/crime.h | 161 + include/asm-mips/ip32/ip32_ints.h | 94 + include/asm-mips/ip32/mace.h | 334 + include/asm-mips/ip32/machine.h | 21 + include/asm-mips/ipc.h | 1 + include/asm-mips/ipcbuf.h | 28 + include/asm-mips/irq.h | 55 + include/asm-mips/irq_cpu.h | 20 + include/asm-mips/isadep.h | 35 + include/asm-mips/it8172/it8172.h | 348 + include/asm-mips/it8172/it8172_cir.h | 140 + include/asm-mips/it8172/it8172_dbg.h | 38 + include/asm-mips/it8172/it8172_int.h | 144 + include/asm-mips/it8172/it8172_pci.h | 108 + include/asm-mips/it8712.h | 28 + include/asm-mips/jazz.h | 322 + include/asm-mips/jazzdma.h | 96 + include/asm-mips/jmr3927/irq.h | 62 + include/asm-mips/jmr3927/jmr3927.h | 325 + include/asm-mips/jmr3927/tx3927.h | 365 + include/asm-mips/jmr3927/txx927.h | 175 + include/asm-mips/kmap_types.h | 31 + include/asm-mips/lasat/ds1603.h | 18 + include/asm-mips/lasat/eeprom.h | 17 + include/asm-mips/lasat/head.h | 22 + include/asm-mips/lasat/lasat.h | 255 + include/asm-mips/lasat/lasatint.h | 12 + include/asm-mips/lasat/picvue.h | 15 + include/asm-mips/lasat/serial.h | 13 + include/asm-mips/linkage.h | 6 + include/asm-mips/local.h | 61 + include/asm-mips/m48t35.h | 27 + include/asm-mips/m48t37.h | 35 + include/asm-mips/mach-atlas/mc146818rtc.h | 58 + include/asm-mips/mach-au1x00/au1000.h | 1408 + include/asm-mips/mach-au1x00/au1000_dma.h | 446 + include/asm-mips/mach-au1x00/au1000_gpio.h | 56 + include/asm-mips/mach-au1x00/au1000_usbdev.h | 73 + include/asm-mips/mach-au1x00/au1100_mmc.h | 205 + include/asm-mips/mach-au1x00/au1xxx_dbdma.h | 299 + include/asm-mips/mach-au1x00/au1xxx_psc.h | 522 + include/asm-mips/mach-au1x00/timex.h | 13 + include/asm-mips/mach-db1x00/db1x00.h | 205 + include/asm-mips/mach-ddb5074/mc146818rtc.h | 31 + include/asm-mips/mach-dec/mc146818rtc.h | 46 + include/asm-mips/mach-dec/param.h | 18 + include/asm-mips/mach-ev64120/mach-gt64120.h | 61 + include/asm-mips/mach-ev96100/mach-gt64120.h | 46 + .../mach-generic/cpu-feature-overrides.h | 13 + include/asm-mips/mach-generic/floppy.h | 139 + include/asm-mips/mach-generic/ide.h | 119 + include/asm-mips/mach-generic/irq.h | 13 + include/asm-mips/mach-generic/mangle-port.h | 16 + include/asm-mips/mach-generic/mc146818rtc.h | 36 + include/asm-mips/mach-generic/param.h | 13 + include/asm-mips/mach-generic/spaces.h | 72 + include/asm-mips/mach-generic/timex.h | 22 + include/asm-mips/mach-generic/topology.h | 1 + .../mach-ip22/cpu-feature-overrides.h | 29 + include/asm-mips/mach-ip22/ds1286.h | 18 + include/asm-mips/mach-ip22/spaces.h | 55 + .../mach-ip27/cpu-feature-overrides.h | 39 + include/asm-mips/mach-ip27/irq.h | 22 + include/asm-mips/mach-ip27/mangle-port.h | 16 + include/asm-mips/mach-ip27/mmzone.h | 36 + include/asm-mips/mach-ip27/spaces.h | 34 + include/asm-mips/mach-ip27/topology.h | 38 + .../mach-ip32/cpu-feature-overrides.h | 41 + include/asm-mips/mach-ip32/mangle-port.h | 17 + include/asm-mips/mach-ip32/mc146818rtc.h | 35 + include/asm-mips/mach-ip32/spaces.h | 36 + .../asm-mips/mach-ja/cpu-feature-overrides.h | 45 + include/asm-mips/mach-ja/spaces.h | 20 + include/asm-mips/mach-jazz/floppy.h | 135 + include/asm-mips/mach-jazz/mc146818rtc.h | 34 + include/asm-mips/mach-jazz/param.h | 16 + include/asm-mips/mach-jazz/timex.h | 16 + include/asm-mips/mach-jmr3927/asm/ds1742.h | 16 + include/asm-mips/mach-lasat/mach-gt64120.h | 27 + .../mach-mips/cpu-feature-overrides.h | 67 + include/asm-mips/mach-mips/mach-gt64120.h | 28 + include/asm-mips/mach-mips/mc146818rtc.h | 48 + include/asm-mips/mach-ocelot/mach-gt64120.h | 30 + .../mach-ocelot3/cpu-feature-overrides.h | 48 + include/asm-mips/mach-pb1x00/mc146818rtc.h | 34 + include/asm-mips/mach-pb1x00/pb1000.h | 172 + include/asm-mips/mach-pb1x00/pb1100.h | 85 + include/asm-mips/mach-pb1x00/pb1500.h | 51 + include/asm-mips/mach-pb1x00/pb1550.h | 169 + .../mach-rm200/cpu-feature-overrides.h | 42 + include/asm-mips/mach-rm200/mc146818rtc.h | 17 + .../mach-sibyte/cpu-feature-overrides.h | 39 + include/asm-mips/mach-vr41xx/timex.h | 18 + .../mach-yosemite/cpu-feature-overrides.h | 45 + include/asm-mips/marvell.h | 56 + include/asm-mips/mc146818-time.h | 128 + include/asm-mips/mc146818rtc.h | 16 + include/asm-mips/mips-boards/atlas.h | 64 + include/asm-mips/mips-boards/atlasint.h | 84 + include/asm-mips/mips-boards/bonito64.h | 431 + include/asm-mips/mips-boards/generic.h | 82 + include/asm-mips/mips-boards/malta.h | 75 + include/asm-mips/mips-boards/maltaint.h | 33 + include/asm-mips/mips-boards/msc01_pci.h | 256 + include/asm-mips/mips-boards/piix4.h | 80 + include/asm-mips/mips-boards/prom.h | 49 + include/asm-mips/mips-boards/saa9730_uart.h | 69 + include/asm-mips/mips-boards/sead.h | 36 + include/asm-mips/mips-boards/seadint.h | 28 + include/asm-mips/mipsprom.h | 74 + include/asm-mips/mipsregs.h | 1018 + include/asm-mips/mman.h | 73 + include/asm-mips/mmu.h | 6 + include/asm-mips/mmu_context.h | 196 + include/asm-mips/mmzone.h | 39 + include/asm-mips/module.h | 56 + include/asm-mips/msc01_ic.h | 151 + include/asm-mips/msgbuf.h | 48 + include/asm-mips/namei.h | 26 + include/asm-mips/nile4.h | 310 + include/asm-mips/numnodes.h | 7 + include/asm-mips/paccess.h | 113 + include/asm-mips/page.h | 151 + include/asm-mips/param.h | 31 + include/asm-mips/parport.h | 15 + include/asm-mips/pci.h | 160 + include/asm-mips/pci/bridge.h | 851 + include/asm-mips/percpu.h | 6 + include/asm-mips/pgalloc.h | 125 + include/asm-mips/pgtable-32.h | 243 + include/asm-mips/pgtable-64.h | 227 + include/asm-mips/pgtable-bits.h | 149 + include/asm-mips/pgtable.h | 404 + include/asm-mips/pmon.h | 46 + include/asm-mips/poll.h | 27 + include/asm-mips/posix_types.h | 144 + include/asm-mips/prctl.h | 41 + include/asm-mips/prefetch.h | 88 + include/asm-mips/processor.h | 220 + include/asm-mips/ptrace.h | 79 + include/asm-mips/r4kcache.h | 598 + include/asm-mips/reboot.h | 16 + include/asm-mips/reg.h | 129 + include/asm-mips/regdef.h | 100 + include/asm-mips/resource.h | 36 + include/asm-mips/riscos-syscall.h | 979 + include/asm-mips/rtc.h | 37 + include/asm-mips/scatterlist.h | 23 + include/asm-mips/sections.h | 8 + include/asm-mips/segment.h | 6 + include/asm-mips/semaphore.h | 112 + include/asm-mips/sembuf.h | 22 + include/asm-mips/serial.h | 444 + include/asm-mips/setup.h | 8 + include/asm-mips/sgi/gio.h | 86 + include/asm-mips/sgi/hpc3.h | 317 + include/asm-mips/sgi/ioc.h | 200 + include/asm-mips/sgi/ip22.h | 77 + include/asm-mips/sgi/mc.h | 231 + include/asm-mips/sgi/pi1.h | 71 + include/asm-mips/sgi/sgi.h | 47 + include/asm-mips/sgialib.h | 127 + include/asm-mips/sgiarcs.h | 549 + include/asm-mips/sgidefs.h | 44 + include/asm-mips/shmbuf.h | 38 + include/asm-mips/shmparam.h | 13 + include/asm-mips/sibyte/board.h | 69 + include/asm-mips/sibyte/carmel.h | 60 + include/asm-mips/sibyte/sb1250.h | 63 + include/asm-mips/sibyte/sb1250_defs.h | 242 + include/asm-mips/sibyte/sb1250_dma.h | 594 + include/asm-mips/sibyte/sb1250_genbus.h | 276 + include/asm-mips/sibyte/sb1250_int.h | 247 + include/asm-mips/sibyte/sb1250_l2c.h | 128 + include/asm-mips/sibyte/sb1250_ldt.h | 425 + include/asm-mips/sibyte/sb1250_mac.h | 643 + include/asm-mips/sibyte/sb1250_mc.h | 548 + include/asm-mips/sibyte/sb1250_regs.h | 836 + include/asm-mips/sibyte/sb1250_scd.h | 582 + include/asm-mips/sibyte/sb1250_smbus.h | 170 + include/asm-mips/sibyte/sb1250_syncser.h | 148 + include/asm-mips/sibyte/sb1250_uart.h | 354 + include/asm-mips/sibyte/sentosa.h | 41 + include/asm-mips/sibyte/swarm.h | 71 + include/asm-mips/sibyte/trace_prof.h | 110 + include/asm-mips/sigcontext.h | 93 + include/asm-mips/siginfo.h | 132 + include/asm-mips/signal.h | 178 + include/asm-mips/sim.h | 83 + include/asm-mips/smp.h | 111 + include/asm-mips/sn/addrs.h | 458 + include/asm-mips/sn/agent.h | 47 + include/asm-mips/sn/arch.h | 66 + include/asm-mips/sn/gda.h | 107 + include/asm-mips/sn/hub.h | 16 + include/asm-mips/sn/intr.h | 129 + include/asm-mips/sn/io.h | 60 + include/asm-mips/sn/ioc3.h | 661 + include/asm-mips/sn/klconfig.h | 980 + include/asm-mips/sn/kldir.h | 248 + include/asm-mips/sn/klkernvars.h | 29 + include/asm-mips/sn/launch.h | 107 + include/asm-mips/sn/mapped_kernel.h | 59 + include/asm-mips/sn/nmi.h | 125 + include/asm-mips/sn/sn0/addrs.h | 364 + include/asm-mips/sn/sn0/arch.h | 89 + include/asm-mips/sn/sn0/hub.h | 44 + include/asm-mips/sn/sn0/hubio.h | 988 + include/asm-mips/sn/sn0/hubmd.h | 790 + include/asm-mips/sn/sn0/hubni.h | 255 + include/asm-mips/sn/sn0/hubpi.h | 427 + include/asm-mips/sn/sn0/ip27.h | 92 + include/asm-mips/sn/sn0/sn0_fru.h | 44 + include/asm-mips/sn/sn_private.h | 19 + include/asm-mips/sn/types.h | 26 + include/asm-mips/sni.h | 107 + include/asm-mips/socket.h | 102 + include/asm-mips/sockios.h | 25 + include/asm-mips/spinlock.h | 299 + include/asm-mips/stackframe.h | 346 + include/asm-mips/stat.h | 132 + include/asm-mips/statfs.h | 96 + include/asm-mips/string.h | 166 + include/asm-mips/suspend.h | 6 + include/asm-mips/sysmips.h | 25 + include/asm-mips/system.h | 438 + include/asm-mips/termbits.h | 207 + include/asm-mips/termios.h | 148 + include/asm-mips/thread_info.h | 137 + include/asm-mips/time.h | 96 + include/asm-mips/timex.h | 54 + include/asm-mips/titan_dep.h | 231 + include/asm-mips/tlb.h | 23 + include/asm-mips/tlbdebug.h | 20 + include/asm-mips/tlbflush.h | 55 + include/asm-mips/topology.h | 1 + include/asm-mips/traps.h | 24 + include/asm-mips/tx3912.h | 361 + include/asm-mips/tx4927/smsc_fdc37m81x.h | 69 + include/asm-mips/tx4927/toshiba_rbtx4927.h | 56 + include/asm-mips/tx4927/tx4927.h | 525 + include/asm-mips/tx4927/tx4927_mips.h | 4177 +++ include/asm-mips/tx4927/tx4927_pci.h | 275 + include/asm-mips/types.h | 108 + include/asm-mips/uaccess.h | 830 + include/asm-mips/ucontext.h | 21 + include/asm-mips/unaligned.h | 14 + include/asm-mips/unistd.h | 1185 + include/asm-mips/user.h | 58 + include/asm-mips/vga.h | 19 + include/asm-mips/vr4181/irq.h | 122 + include/asm-mips/vr4181/vr4181.h | 413 + include/asm-mips/vr41xx/capcella.h | 43 + include/asm-mips/vr41xx/cmbvr4133.h | 61 + include/asm-mips/vr41xx/e55.h | 43 + include/asm-mips/vr41xx/mpc30x.h | 37 + include/asm-mips/vr41xx/siu.h | 50 + include/asm-mips/vr41xx/tb0219.h | 42 + include/asm-mips/vr41xx/tb0226.h | 43 + include/asm-mips/vr41xx/vr41xx.h | 320 + include/asm-mips/vr41xx/vrc4173.h | 222 + include/asm-mips/vr41xx/workpad.h | 43 + include/asm-mips/war.h | 224 + include/asm-mips/watch.h | 35 + include/asm-mips/wbflush.h | 35 + include/asm-mips/xor.h | 1 + include/asm-mips/xtalk/xtalk.h | 52 + include/asm-mips/xtalk/xwidget.h | 167 + include/asm-mips/xxs1500.h | 35 + include/asm-parisc/a.out.h | 29 + include/asm-parisc/asmregs.h | 183 + include/asm-parisc/assembly.h | 454 + include/asm-parisc/atomic.h | 199 + include/asm-parisc/bitops.h | 520 + include/asm-parisc/bug.h | 12 + include/asm-parisc/bugs.h | 19 + include/asm-parisc/byteorder.h | 82 + include/asm-parisc/cache.h | 79 + include/asm-parisc/cacheflush.h | 182 + include/asm-parisc/checksum.h | 213 + include/asm-parisc/compat.h | 145 + include/asm-parisc/compat_rt_sigframe.h | 50 + include/asm-parisc/compat_signal.h | 2 + include/asm-parisc/compat_ucontext.h | 18 + include/asm-parisc/cputime.h | 6 + include/asm-parisc/current.h | 15 + include/asm-parisc/delay.h | 43 + include/asm-parisc/div64.h | 1 + include/asm-parisc/dma-mapping.h | 254 + include/asm-parisc/dma.h | 192 + include/asm-parisc/eisa_bus.h | 23 + include/asm-parisc/eisa_eeprom.h | 153 + include/asm-parisc/elf.h | 347 + include/asm-parisc/errno.h | 119 + include/asm-parisc/fcntl.h | 92 + include/asm-parisc/fixmap.h | 23 + include/asm-parisc/floppy.h | 277 + include/asm-parisc/grfioctl.h | 111 + include/asm-parisc/hardirq.h | 29 + include/asm-parisc/hardware.h | 132 + include/asm-parisc/hdreg.h | 1 + include/asm-parisc/hw_irq.h | 17 + include/asm-parisc/ide.h | 69 + include/asm-parisc/io.h | 418 + include/asm-parisc/ioctl.h | 93 + include/asm-parisc/ioctls.h | 86 + include/asm-parisc/iosapic.h | 53 + include/asm-parisc/ipcbuf.h | 27 + include/asm-parisc/irq.h | 55 + include/asm-parisc/kmap_types.h | 31 + include/asm-parisc/led.h | 45 + include/asm-parisc/linkage.h | 6 + include/asm-parisc/local.h | 40 + include/asm-parisc/machdep.h | 16 + include/asm-parisc/mc146818rtc.h | 9 + include/asm-parisc/mman.h | 57 + include/asm-parisc/mmu.h | 7 + include/asm-parisc/mmu_context.h | 73 + include/asm-parisc/mmzone.h | 102 + include/asm-parisc/module.h | 32 + include/asm-parisc/msgbuf.h | 37 + include/asm-parisc/namei.h | 17 + include/asm-parisc/numnodes.h | 7 + include/asm-parisc/page.h | 162 + include/asm-parisc/param.h | 27 + include/asm-parisc/parisc-device.h | 54 + include/asm-parisc/parport.h | 18 + include/asm-parisc/pci.h | 241 + include/asm-parisc/pdc.h | 781 + include/asm-parisc/pdc_chassis.h | 382 + include/asm-parisc/pdcpat.h | 337 + include/asm-parisc/percpu.h | 7 + include/asm-parisc/perf.h | 74 + include/asm-parisc/pgalloc.h | 143 + include/asm-parisc/pgtable.h | 522 + include/asm-parisc/poll.h | 26 + include/asm-parisc/posix_types.h | 133 + include/asm-parisc/processor.h | 344 + include/asm-parisc/psw.h | 62 + include/asm-parisc/ptrace.h | 56 + include/asm-parisc/real.h | 5 + include/asm-parisc/resource.h | 7 + include/asm-parisc/rt_sigframe.h | 27 + include/asm-parisc/rtc.h | 131 + include/asm-parisc/runway.h | 12 + include/asm-parisc/scatterlist.h | 23 + include/asm-parisc/sections.h | 7 + include/asm-parisc/segment.h | 6 + include/asm-parisc/semaphore-helper.h | 89 + include/asm-parisc/semaphore.h | 147 + include/asm-parisc/sembuf.h | 29 + include/asm-parisc/serial.h | 36 + include/asm-parisc/setup.h | 6 + include/asm-parisc/shmbuf.h | 58 + include/asm-parisc/shmparam.h | 8 + include/asm-parisc/sigcontext.h | 20 + include/asm-parisc/siginfo.h | 14 + include/asm-parisc/signal.h | 166 + include/asm-parisc/smp.h | 69 + include/asm-parisc/socket.h | 50 + include/asm-parisc/sockios.h | 12 + include/asm-parisc/spinlock.h | 258 + include/asm-parisc/stat.h | 100 + include/asm-parisc/statfs.h | 58 + include/asm-parisc/string.h | 10 + include/asm-parisc/superio.h | 85 + include/asm-parisc/system.h | 210 + include/asm-parisc/termbits.h | 175 + include/asm-parisc/termios.h | 106 + include/asm-parisc/thread_info.h | 80 + include/asm-parisc/timex.h | 20 + include/asm-parisc/tlb.h | 27 + include/asm-parisc/tlbflush.h | 95 + include/asm-parisc/topology.h | 6 + include/asm-parisc/traps.h | 16 + include/asm-parisc/types.h | 65 + include/asm-parisc/uaccess.h | 287 + include/asm-parisc/ucontext.h | 12 + include/asm-parisc/unaligned.h | 12 + include/asm-parisc/unistd.h | 1029 + include/asm-parisc/unwind.h | 77 + include/asm-parisc/user.h | 5 + include/asm-parisc/xor.h | 1 + include/asm-ppc/8253pit.h | 10 + include/asm-ppc/8xx_immap.h | 564 + include/asm-ppc/a.out.h | 26 + include/asm-ppc/agp.h | 13 + include/asm-ppc/amigahw.h | 17 + include/asm-ppc/amigaints.h | 133 + include/asm-ppc/amigappc.h | 85 + include/asm-ppc/amigayle.h | 1 + include/asm-ppc/amipcmcia.h | 1 + include/asm-ppc/ans-lcd.h | 11 + include/asm-ppc/atomic.h | 214 + include/asm-ppc/backlight.h | 30 + include/asm-ppc/bitops.h | 460 + include/asm-ppc/bootinfo.h | 52 + include/asm-ppc/bootx.h | 135 + include/asm-ppc/bseip.h | 38 + include/asm-ppc/btext.h | 34 + include/asm-ppc/bug.h | 55 + include/asm-ppc/bugs.h | 6 + include/asm-ppc/byteorder.h | 76 + include/asm-ppc/cache.h | 87 + include/asm-ppc/cacheflush.h | 49 + include/asm-ppc/checksum.h | 107 + include/asm-ppc/commproc.h | 695 + include/asm-ppc/cpm2.h | 1045 + include/asm-ppc/cputable.h | 127 + include/asm-ppc/cputime.h | 6 + include/asm-ppc/current.h | 11 + include/asm-ppc/dbdma.h | 102 + include/asm-ppc/delay.h | 66 + include/asm-ppc/div64.h | 1 + include/asm-ppc/dma-mapping.h | 236 + include/asm-ppc/dma.h | 371 + include/asm-ppc/elf.h | 160 + include/asm-ppc/errno.h | 11 + include/asm-ppc/fcntl.h | 93 + include/asm-ppc/floppy.h | 182 + include/asm-ppc/fsl_ocp.h | 54 + include/asm-ppc/gg2.h | 61 + include/asm-ppc/gt64260.h | 322 + include/asm-ppc/gt64260_defs.h | 1010 + include/asm-ppc/hardirq.h | 31 + include/asm-ppc/harrier.h | 45 + include/asm-ppc/hawk.h | 32 + include/asm-ppc/hawk_defs.h | 76 + include/asm-ppc/hdreg.h | 1 + include/asm-ppc/heathrow.h | 62 + include/asm-ppc/highmem.h | 137 + include/asm-ppc/hw_irq.h | 74 + include/asm-ppc/hydra.h | 102 + include/asm-ppc/i8259.h | 11 + include/asm-ppc/ibm403.h | 479 + include/asm-ppc/ibm405.h | 299 + include/asm-ppc/ibm44x.h | 599 + include/asm-ppc/ibm4xx.h | 124 + include/asm-ppc/ibm_ocp.h | 163 + include/asm-ppc/ibm_ocp_pci.h | 32 + include/asm-ppc/ide.h | 78 + include/asm-ppc/immap_85xx.h | 126 + include/asm-ppc/immap_cpm2.h | 648 + include/asm-ppc/io.h | 566 + include/asm-ppc/ioctl.h | 69 + include/asm-ppc/ioctls.h | 107 + include/asm-ppc/ipc.h | 1 + include/asm-ppc/ipcbuf.h | 29 + include/asm-ppc/ipic.h | 85 + include/asm-ppc/irq.h | 400 + include/asm-ppc/keylargo.h | 243 + include/asm-ppc/kgdb.h | 57 + include/asm-ppc/kmap_types.h | 24 + include/asm-ppc/linkage.h | 6 + include/asm-ppc/local.h | 6 + include/asm-ppc/m48t35.h | 77 + include/asm-ppc/m8260_pci.h | 186 + include/asm-ppc/machdep.h | 154 + include/asm-ppc/macio.h | 140 + include/asm-ppc/mc146818rtc.h | 31 + include/asm-ppc/md.h | 15 + include/asm-ppc/mediabay.h | 31 + include/asm-ppc/mk48t59.h | 27 + include/asm-ppc/mman.h | 44 + include/asm-ppc/mmu.h | 454 + include/asm-ppc/mmu_context.h | 197 + include/asm-ppc/module.h | 44 + include/asm-ppc/mpc10x.h | 174 + include/asm-ppc/mpc52xx.h | 445 + include/asm-ppc/mpc52xx_psc.h | 191 + include/asm-ppc/mpc8260.h | 79 + include/asm-ppc/mpc8260_pci9.h | 51 + include/asm-ppc/mpc83xx.h | 114 + include/asm-ppc/mpc85xx.h | 134 + include/asm-ppc/mpc8xx.h | 103 + include/asm-ppc/msgbuf.h | 25 + include/asm-ppc/mv64x60.h | 345 + include/asm-ppc/mv64x60_defs.h | 973 + include/asm-ppc/namei.h | 20 + include/asm-ppc/nvram.h | 73 + include/asm-ppc/ocp.h | 211 + include/asm-ppc/ocp_ids.h | 73 + include/asm-ppc/of_device.h | 74 + include/asm-ppc/ohare.h | 48 + include/asm-ppc/open_pic.h | 93 + include/asm-ppc/page.h | 169 + include/asm-ppc/param.h | 22 + include/asm-ppc/parport.h | 18 + include/asm-ppc/pc_serial.h | 127 + include/asm-ppc/pci-bridge.h | 136 + include/asm-ppc/pci.h | 108 + include/asm-ppc/percpu.h | 6 + include/asm-ppc/perfmon.h | 22 + include/asm-ppc/pgalloc.h | 44 + include/asm-ppc/pgtable.h | 776 + include/asm-ppc/pmac_feature.h | 365 + include/asm-ppc/pmac_low_i2c.h | 43 + include/asm-ppc/pnp.h | 645 + include/asm-ppc/poll.h | 23 + include/asm-ppc/posix_types.h | 111 + include/asm-ppc/ppc4xx_dma.h | 583 + include/asm-ppc/ppc4xx_pic.h | 53 + include/asm-ppc/ppc_asm.h | 342 + include/asm-ppc/ppc_sys.h | 69 + include/asm-ppc/ppcboot.h | 100 + include/asm-ppc/prep_nvram.h | 153 + include/asm-ppc/processor.h | 201 + include/asm-ppc/prom.h | 143 + include/asm-ppc/ptrace.h | 145 + include/asm-ppc/raven.h | 35 + include/asm-ppc/reg.h | 444 + include/asm-ppc/reg_booke.h | 484 + include/asm-ppc/residual.h | 350 + include/asm-ppc/resource.h | 6 + include/asm-ppc/rheap.h | 85 + include/asm-ppc/rtc.h | 95 + include/asm-ppc/rwsem.h | 172 + include/asm-ppc/scatterlist.h | 25 + include/asm-ppc/sections.h | 33 + include/asm-ppc/segment.h | 1 + include/asm-ppc/semaphore.h | 111 + include/asm-ppc/sembuf.h | 19 + include/asm-ppc/serial.h | 57 + include/asm-ppc/setup.h | 14 + include/asm-ppc/shmbuf.h | 37 + include/asm-ppc/shmparam.h | 6 + include/asm-ppc/sigcontext.h | 15 + include/asm-ppc/siginfo.h | 6 + include/asm-ppc/signal.h | 179 + include/asm-ppc/smp.h | 70 + include/asm-ppc/socket.h | 56 + include/asm-ppc/sockios.h | 17 + include/asm-ppc/spinlock.h | 215 + include/asm-ppc/stat.h | 69 + include/asm-ppc/statfs.h | 8 + include/asm-ppc/string.h | 32 + include/asm-ppc/suspend.h | 12 + include/asm-ppc/system.h | 207 + include/asm-ppc/termbits.h | 185 + include/asm-ppc/termios.h | 232 + include/asm-ppc/thread_info.h | 99 + include/asm-ppc/time.h | 157 + include/asm-ppc/timex.h | 40 + include/asm-ppc/tlb.h | 57 + include/asm-ppc/tlbflush.h | 115 + include/asm-ppc/todc.h | 490 + include/asm-ppc/topology.h | 6 + include/asm-ppc/traps.h | 1 + include/asm-ppc/types.h | 71 + include/asm-ppc/uaccess.h | 400 + include/asm-ppc/ucontext.h | 27 + include/asm-ppc/unaligned.h | 18 + include/asm-ppc/uninorth.h | 229 + include/asm-ppc/unistd.h | 488 + include/asm-ppc/user.h | 54 + include/asm-ppc/vga.h | 46 + include/asm-ppc/xmon.h | 17 + include/asm-ppc/xor.h | 1 + include/asm-ppc/xparameters.h | 18 + include/asm-ppc/zorro.h | 30 + include/asm-ppc64/8253pit.h | 10 + include/asm-ppc64/a.out.h | 41 + include/asm-ppc64/abs_addr.h | 108 + include/asm-ppc64/agp.h | 13 + include/asm-ppc64/atomic.h | 197 + include/asm-ppc64/bitops.h | 360 + include/asm-ppc64/bootinfo.h | 70 + include/asm-ppc64/btext.h | 26 + include/asm-ppc64/bug.h | 65 + include/asm-ppc64/bugs.h | 12 + include/asm-ppc64/byteorder.h | 96 + include/asm-ppc64/cache.h | 36 + include/asm-ppc64/cacheflush.h | 48 + include/asm-ppc64/checksum.h | 107 + include/asm-ppc64/compat.h | 202 + include/asm-ppc64/cputable.h | 197 + include/asm-ppc64/cputime.h | 6 + include/asm-ppc64/current.h | 16 + include/asm-ppc64/dbdma.h | 2 + include/asm-ppc64/delay.h | 48 + include/asm-ppc64/div64.h | 1 + include/asm-ppc64/dma-mapping.h | 136 + include/asm-ppc64/dma.h | 326 + include/asm-ppc64/eeh.h | 383 + include/asm-ppc64/elf.h | 399 + include/asm-ppc64/errno.h | 18 + include/asm-ppc64/fcntl.h | 89 + include/asm-ppc64/floppy.h | 106 + include/asm-ppc64/hardirq.h | 27 + include/asm-ppc64/hdreg.h | 1 + include/asm-ppc64/hvcall.h | 167 + include/asm-ppc64/hvconsole.h | 40 + include/asm-ppc64/hvcserver.h | 57 + include/asm-ppc64/hw_irq.h | 104 + include/asm-ppc64/iSeries/HvCall.h | 205 + include/asm-ppc64/iSeries/HvCallCfg.h | 213 + include/asm-ppc64/iSeries/HvCallEvent.h | 297 + include/asm-ppc64/iSeries/HvCallHpt.h | 127 + include/asm-ppc64/iSeries/HvCallPci.h | 673 + include/asm-ppc64/iSeries/HvCallSc.h | 51 + include/asm-ppc64/iSeries/HvCallSm.h | 52 + include/asm-ppc64/iSeries/HvCallXm.h | 95 + include/asm-ppc64/iSeries/HvLpConfig.h | 280 + include/asm-ppc64/iSeries/HvLpEvent.h | 144 + include/asm-ppc64/iSeries/HvReleaseData.h | 65 + include/asm-ppc64/iSeries/HvTypes.h | 127 + include/asm-ppc64/iSeries/IoHriMainStore.h | 167 + include/asm-ppc64/iSeries/IoHriProcessorVpd.h | 88 + include/asm-ppc64/iSeries/ItExtVpdPanel.h | 58 + include/asm-ppc64/iSeries/ItIplParmsReal.h | 76 + include/asm-ppc64/iSeries/ItLpNaca.h | 88 + include/asm-ppc64/iSeries/ItLpQueue.h | 92 + include/asm-ppc64/iSeries/ItLpRegSave.h | 87 + include/asm-ppc64/iSeries/ItSpCommArea.h | 39 + include/asm-ppc64/iSeries/ItVpdAreas.h | 96 + include/asm-ppc64/iSeries/LparData.h | 49 + include/asm-ppc64/iSeries/LparMap.h | 67 + include/asm-ppc64/iSeries/XmPciLpEvent.h | 18 + include/asm-ppc64/iSeries/iSeries_io.h | 46 + include/asm-ppc64/iSeries/iSeries_irq.h | 19 + include/asm-ppc64/iSeries/iSeries_pci.h | 112 + include/asm-ppc64/iSeries/iSeries_proc.h | 24 + include/asm-ppc64/iSeries/mf.h | 57 + include/asm-ppc64/iSeries/vio.h | 129 + include/asm-ppc64/ide.h | 30 + include/asm-ppc64/io.h | 458 + include/asm-ppc64/ioctl.h | 74 + include/asm-ppc64/ioctls.h | 114 + include/asm-ppc64/iommu.h | 166 + include/asm-ppc64/ipc.h | 1 + include/asm-ppc64/ipcbuf.h | 28 + include/asm-ppc64/irq.h | 115 + include/asm-ppc64/kdebug.h | 43 + include/asm-ppc64/keylargo.h | 2 + include/asm-ppc64/kmap_types.h | 23 + include/asm-ppc64/kprobes.h | 61 + include/asm-ppc64/linkage.h | 6 + include/asm-ppc64/lmb.h | 60 + include/asm-ppc64/local.h | 1 + include/asm-ppc64/lppaca.h | 132 + include/asm-ppc64/machdep.h | 185 + include/asm-ppc64/macio.h | 2 + include/asm-ppc64/mc146818rtc.h | 32 + include/asm-ppc64/memory.h | 59 + include/asm-ppc64/mman.h | 52 + include/asm-ppc64/mmu.h | 242 + include/asm-ppc64/mmu_context.h | 169 + include/asm-ppc64/mmzone.h | 94 + include/asm-ppc64/module.h | 36 + include/asm-ppc64/msgbuf.h | 27 + include/asm-ppc64/naca.h | 31 + include/asm-ppc64/namei.h | 23 + include/asm-ppc64/numnodes.h | 7 + include/asm-ppc64/nvram.h | 115 + include/asm-ppc64/of_device.h | 2 + include/asm-ppc64/pSeries_reconfig.h | 25 + include/asm-ppc64/paca.h | 119 + include/asm-ppc64/page.h | 261 + include/asm-ppc64/param.h | 29 + include/asm-ppc64/parport.h | 18 + include/asm-ppc64/pci-bridge.h | 90 + include/asm-ppc64/pci.h | 142 + include/asm-ppc64/percpu.h | 6 + include/asm-ppc64/pgalloc.h | 91 + include/asm-ppc64/pgtable.h | 602 + include/asm-ppc64/plpar_wrappers.h | 111 + include/asm-ppc64/pmac_feature.h | 2 + include/asm-ppc64/pmac_low_i2c.h | 2 + include/asm-ppc64/pmc.h | 29 + include/asm-ppc64/poll.h | 32 + include/asm-ppc64/posix_types.h | 119 + include/asm-ppc64/ppc32.h | 122 + include/asm-ppc64/ppc_asm.h | 242 + include/asm-ppc64/ppcdebug.h | 108 + include/asm-ppc64/processor.h | 667 + include/asm-ppc64/prom.h | 230 + include/asm-ppc64/ptrace-common.h | 72 + include/asm-ppc64/ptrace.h | 189 + include/asm-ppc64/resource.h | 6 + include/asm-ppc64/rtas.h | 243 + include/asm-ppc64/rwsem.h | 167 + include/asm-ppc64/scatterlist.h | 31 + include/asm-ppc64/seccomp.h | 21 + include/asm-ppc64/sections.h | 29 + include/asm-ppc64/segment.h | 6 + include/asm-ppc64/semaphore.h | 98 + include/asm-ppc64/sembuf.h | 27 + include/asm-ppc64/serial.h | 23 + include/asm-ppc64/setup.h | 6 + include/asm-ppc64/shmbuf.h | 43 + include/asm-ppc64/shmparam.h | 13 + include/asm-ppc64/sigcontext.h | 47 + include/asm-ppc64/siginfo.h | 16 + include/asm-ppc64/signal.h | 159 + include/asm-ppc64/smp.h | 91 + include/asm-ppc64/smu.h | 22 + include/asm-ppc64/socket.h | 57 + include/asm-ppc64/sockios.h | 19 + include/asm-ppc64/spinlock.h | 260 + include/asm-ppc64/sstep.h | 24 + include/asm-ppc64/stat.h | 60 + include/asm-ppc64/statfs.h | 61 + include/asm-ppc64/string.h | 35 + include/asm-ppc64/system.h | 306 + include/asm-ppc64/systemcfg.h | 64 + include/asm-ppc64/termbits.h | 193 + include/asm-ppc64/termios.h | 235 + include/asm-ppc64/thread_info.h | 125 + include/asm-ppc64/time.h | 115 + include/asm-ppc64/timex.h | 26 + include/asm-ppc64/tlb.h | 39 + include/asm-ppc64/tlbflush.h | 54 + include/asm-ppc64/topology.h | 68 + include/asm-ppc64/types.h | 80 + include/asm-ppc64/uaccess.h | 346 + include/asm-ppc64/ucontext.h | 22 + include/asm-ppc64/udbg.h | 28 + include/asm-ppc64/unaligned.h | 21 + include/asm-ppc64/uninorth.h | 2 + include/asm-ppc64/unistd.h | 482 + include/asm-ppc64/user.h | 58 + include/asm-ppc64/vdso.h | 83 + include/asm-ppc64/vga.h | 50 + include/asm-ppc64/vio.h | 103 + include/asm-ppc64/xics.h | 36 + include/asm-ppc64/xor.h | 1 + include/asm-s390/a.out.h | 38 + include/asm-s390/atomic.h | 207 + include/asm-s390/bitops.h | 1188 + include/asm-s390/bug.h | 14 + include/asm-s390/bugs.h | 22 + include/asm-s390/byteorder.h | 131 + include/asm-s390/cache.h | 20 + include/asm-s390/cacheflush.h | 26 + include/asm-s390/ccwdev.h | 192 + include/asm-s390/ccwgroup.h | 45 + include/asm-s390/checksum.h | 264 + include/asm-s390/cio.h | 281 + include/asm-s390/cmb.h | 98 + include/asm-s390/compat.h | 198 + include/asm-s390/cpcmd.h | 24 + include/asm-s390/cputime.h | 176 + include/asm-s390/current.h | 23 + include/asm-s390/dasd.h | 268 + include/asm-s390/debug.h | 249 + include/asm-s390/delay.h | 22 + include/asm-s390/div64.h | 49 + include/asm-s390/dma-mapping.h | 14 + include/asm-s390/dma.h | 16 + include/asm-s390/ebcdic.h | 49 + include/asm-s390/elf.h | 215 + include/asm-s390/errno.h | 13 + include/asm-s390/extmem.h | 32 + include/asm-s390/fcntl.h | 97 + include/asm-s390/hardirq.h | 38 + include/asm-s390/idals.h | 257 + include/asm-s390/io.h | 123 + include/asm-s390/ioctl.h | 88 + include/asm-s390/ioctls.h | 88 + include/asm-s390/ipc.h | 1 + include/asm-s390/ipcbuf.h | 31 + include/asm-s390/irq.h | 30 + include/asm-s390/kmap_types.h | 23 + include/asm-s390/linkage.h | 6 + include/asm-s390/local.h | 59 + include/asm-s390/lowcore.h | 351 + include/asm-s390/mathemu.h | 29 + include/asm-s390/mman.h | 51 + include/asm-s390/mmu.h | 7 + include/asm-s390/mmu_context.h | 54 + include/asm-s390/module.h | 46 + include/asm-s390/msgbuf.h | 37 + include/asm-s390/namei.h | 21 + include/asm-s390/page.h | 208 + include/asm-s390/param.h | 30 + include/asm-s390/pci.h | 10 + include/asm-s390/percpu.h | 70 + include/asm-s390/pgalloc.h | 168 + include/asm-s390/pgtable.h | 813 + include/asm-s390/poll.h | 34 + include/asm-s390/posix_types.h | 99 + include/asm-s390/processor.h | 355 + include/asm-s390/ptrace.h | 475 + include/asm-s390/qdio.h | 401 + include/asm-s390/qeth.h | 78 + include/asm-s390/resource.h | 15 + include/asm-s390/rwsem.h | 355 + include/asm-s390/s390_ext.h | 34 + include/asm-s390/scatterlist.h | 16 + include/asm-s390/sections.h | 6 + include/asm-s390/segment.h | 4 + include/asm-s390/semaphore.h | 110 + include/asm-s390/sembuf.h | 29 + include/asm-s390/setup.h | 82 + include/asm-s390/sfp-machine.h | 139 + include/asm-s390/shmbuf.h | 48 + include/asm-s390/shmparam.h | 13 + include/asm-s390/sigcontext.h | 69 + include/asm-s390/siginfo.h | 24 + include/asm-s390/signal.h | 197 + include/asm-s390/sigp.h | 131 + include/asm-s390/smp.h | 108 + include/asm-s390/socket.h | 58 + include/asm-s390/sockios.h | 20 + include/asm-s390/spinlock.h | 251 + include/asm-s390/stat.h | 105 + include/asm-s390/statfs.h | 71 + include/asm-s390/string.h | 137 + include/asm-s390/suspend.h | 5 + include/asm-s390/system.h | 477 + include/asm-s390/tape390.h | 39 + include/asm-s390/termbits.h | 181 + include/asm-s390/termios.h | 114 + include/asm-s390/thread_info.h | 120 + include/asm-s390/timer.h | 46 + include/asm-s390/timex.h | 34 + include/asm-s390/tlb.h | 20 + include/asm-s390/tlbflush.h | 153 + include/asm-s390/todclk.h | 23 + include/asm-s390/topology.h | 6 + include/asm-s390/types.h | 101 + include/asm-s390/uaccess.h | 436 + include/asm-s390/ucontext.h | 20 + include/asm-s390/unaligned.h | 24 + include/asm-s390/unistd.h | 605 + include/asm-s390/user.h | 77 + include/asm-s390/vtoc.h | 372 + include/asm-s390/xor.h | 1 + include/asm-sh/a.out.h | 26 + include/asm-sh/adc.h | 13 + include/asm-sh/addrspace.h | 38 + include/asm-sh/adx/io.h | 86 + include/asm-sh/atomic.h | 114 + include/asm-sh/bigsur/bigsur.h | 80 + include/asm-sh/bigsur/io.h | 35 + include/asm-sh/bigsur/serial.h | 27 + include/asm-sh/bitops.h | 476 + include/asm-sh/bug.h | 17 + include/asm-sh/bugs.h | 50 + include/asm-sh/bus-sh.h | 65 + include/asm-sh/byteorder.h | 56 + include/asm-sh/cache.h | 48 + include/asm-sh/cacheflush.h | 31 + include/asm-sh/cat68701/io.h | 22 + include/asm-sh/checksum.h | 216 + include/asm-sh/cpu-sh2/addrspace.h | 16 + include/asm-sh/cpu-sh2/cache.h | 31 + include/asm-sh/cpu-sh2/cacheflush.h | 42 + include/asm-sh/cpu-sh2/dma.h | 23 + include/asm-sh/cpu-sh2/shmparam.h | 16 + include/asm-sh/cpu-sh2/sigcontext.h | 17 + include/asm-sh/cpu-sh2/ubc.h | 32 + include/asm-sh/cpu-sh2/watchdog.h | 69 + include/asm-sh/cpu-sh3/adc.h | 28 + include/asm-sh/cpu-sh3/addrspace.h | 16 + include/asm-sh/cpu-sh3/cache.h | 37 + include/asm-sh/cpu-sh3/cacheflush.h | 87 + include/asm-sh/cpu-sh3/dac.h | 41 + include/asm-sh/cpu-sh3/dma.h | 7 + include/asm-sh/cpu-sh3/freq.h | 22 + include/asm-sh/cpu-sh3/mmu_context.h | 28 + include/asm-sh/cpu-sh3/rtc.h | 25 + include/asm-sh/cpu-sh3/shmparam.h | 16 + include/asm-sh/cpu-sh3/sigcontext.h | 17 + include/asm-sh/cpu-sh3/timer.h | 64 + include/asm-sh/cpu-sh3/ubc.h | 27 + include/asm-sh/cpu-sh3/watchdog.h | 25 + include/asm-sh/cpu-sh4/addrspace.h | 26 + include/asm-sh/cpu-sh4/cache.h | 35 + include/asm-sh/cpu-sh4/cacheflush.h | 64 + include/asm-sh/cpu-sh4/dma.h | 17 + include/asm-sh/cpu-sh4/freq.h | 22 + include/asm-sh/cpu-sh4/mmu_context.h | 39 + include/asm-sh/cpu-sh4/rtc.h | 25 + include/asm-sh/cpu-sh4/shmparam.h | 19 + include/asm-sh/cpu-sh4/sigcontext.h | 24 + include/asm-sh/cpu-sh4/sq.h | 48 + include/asm-sh/cpu-sh4/timer.h | 51 + include/asm-sh/cpu-sh4/ubc.h | 27 + include/asm-sh/cpu-sh4/watchdog.h | 25 + include/asm-sh/cputime.h | 6 + include/asm-sh/cqreek/cqreek.h | 27 + include/asm-sh/current.h | 20 + include/asm-sh/delay.h | 27 + include/asm-sh/div64.h | 1 + include/asm-sh/dma-mapping.h | 179 + include/asm-sh/dma.h | 143 + include/asm-sh/dmida/io.h | 10 + include/asm-sh/dreamcast/dma.h | 34 + include/asm-sh/dreamcast/pci.h | 25 + include/asm-sh/dreamcast/sysasic.h | 43 + include/asm-sh/ec3104/ec3104.h | 43 + include/asm-sh/ec3104/io.h | 16 + include/asm-sh/ec3104/keyboard.h | 17 + include/asm-sh/ec3104/serial.h | 22 + include/asm-sh/edosk7705/io.h | 30 + include/asm-sh/elf.h | 121 + include/asm-sh/errno.h | 6 + include/asm-sh/fcntl.h | 88 + include/asm-sh/fixmap.h | 111 + include/asm-sh/flat.h | 23 + include/asm-sh/floppy.h | 274 + include/asm-sh/freq.h | 29 + include/asm-sh/hardirq.h | 17 + include/asm-sh/harp/harp.h | 43 + include/asm-sh/harp/io.h | 10 + include/asm-sh/hd64461/hd64461.h | 203 + include/asm-sh/hd64461/io.h | 43 + include/asm-sh/hd64465/gpio.h | 46 + include/asm-sh/hd64465/hd64465.h | 257 + include/asm-sh/hd64465/io.h | 44 + include/asm-sh/hdreg.h | 1 + include/asm-sh/hp6xx/hp6xx.h | 31 + include/asm-sh/hp6xx/ide.h | 8 + include/asm-sh/hp6xx/io.h | 10 + include/asm-sh/hs7751rvoip/hs7751rvoip.h | 47 + include/asm-sh/hs7751rvoip/ide.h | 8 + include/asm-sh/hs7751rvoip/io.h | 39 + include/asm-sh/hw_irq.h | 9 + include/asm-sh/ide.h | 29 + include/asm-sh/io.h | 311 + include/asm-sh/io_generic.h | 51 + include/asm-sh/ioctl.h | 75 + include/asm-sh/ioctls.h | 99 + include/asm-sh/ipc.h | 1 + include/asm-sh/ipcbuf.h | 29 + include/asm-sh/irq-sh73180.h | 350 + include/asm-sh/irq.h | 598 + include/asm-sh/keyboard.h | 14 + include/asm-sh/kgdb.h | 131 + include/asm-sh/kmap_types.h | 33 + include/asm-sh/linkage.h | 7 + include/asm-sh/local.h | 7 + include/asm-sh/machvec.h | 73 + include/asm-sh/machvec_init.h | 54 + include/asm-sh/mc146818rtc.h | 176 + include/asm-sh/microdev/io.h | 53 + include/asm-sh/microdev/irq.h | 72 + include/asm-sh/mman.h | 43 + include/asm-sh/mmu.h | 29 + include/asm-sh/mmu_context.h | 206 + include/asm-sh/mmzone.h | 61 + include/asm-sh/module.h | 40 + include/asm-sh/mpc1211/dma.h | 304 + include/asm-sh/mpc1211/io.h | 22 + include/asm-sh/mpc1211/keyboard.h | 64 + include/asm-sh/mpc1211/m1543c.h | 200 + include/asm-sh/mpc1211/mc146818rtc.h | 6 + include/asm-sh/mpc1211/mpc1211.h | 18 + include/asm-sh/mpc1211/pci.h | 40 + include/asm-sh/msgbuf.h | 31 + include/asm-sh/namei.h | 17 + include/asm-sh/numnodes.h | 7 + include/asm-sh/overdrive/fpga.h | 15 + include/asm-sh/overdrive/gt64111.h | 109 + include/asm-sh/overdrive/io.h | 39 + include/asm-sh/overdrive/overdrive.h | 89 + include/asm-sh/page.h | 144 + include/asm-sh/param.h | 26 + include/asm-sh/pci.h | 120 + include/asm-sh/percpu.h | 6 + include/asm-sh/pgalloc.h | 88 + include/asm-sh/pgtable-2level.h | 67 + include/asm-sh/pgtable.h | 306 + include/asm-sh/poll.h | 26 + include/asm-sh/posix_types.h | 122 + include/asm-sh/processor.h | 275 + include/asm-sh/ptrace.h | 104 + include/asm-sh/resource.h | 6 + include/asm-sh/rtc.h | 29 + include/asm-sh/rts7751r2d/ide.h | 8 + include/asm-sh/rts7751r2d/io.h | 37 + include/asm-sh/rts7751r2d/rts7751r2d.h | 73 + include/asm-sh/rts7751r2d/voyagergx_reg.h | 313 + include/asm-sh/rwsem.h | 170 + include/asm-sh/saturn/io.h | 19 + include/asm-sh/saturn/smpc.h | 34 + include/asm-sh/scatterlist.h | 13 + include/asm-sh/se/io.h | 35 + include/asm-sh/se/se.h | 77 + include/asm-sh/se/smc37c93x.h | 190 + include/asm-sh/se7300/io.h | 29 + include/asm-sh/se7300/se7300.h | 61 + include/asm-sh/se73180/io.h | 32 + include/asm-sh/se73180/se73180.h | 62 + include/asm-sh/se7751/io.h | 42 + include/asm-sh/se7751/se7751.h | 68 + include/asm-sh/sections.h | 9 + include/asm-sh/segment.h | 6 + include/asm-sh/semaphore-helper.h | 89 + include/asm-sh/semaphore.h | 119 + include/asm-sh/sembuf.h | 25 + include/asm-sh/serial.h | 48 + include/asm-sh/setup.h | 8 + include/asm-sh/sh03/ide.h | 7 + include/asm-sh/sh03/io.h | 46 + include/asm-sh/sh03/sh03.h | 18 + include/asm-sh/sh2000/sh2000.h | 8 + include/asm-sh/sh_bios.h | 19 + include/asm-sh/shmbuf.h | 42 + include/asm-sh/shmparam.h | 8 + include/asm-sh/sigcontext.h | 26 + include/asm-sh/siginfo.h | 6 + include/asm-sh/signal.h | 185 + include/asm-sh/smp.h | 48 + include/asm-sh/snapgear/io.h | 92 + include/asm-sh/socket.h | 50 + include/asm-sh/sockios.h | 13 + include/asm-sh/spinlock.h | 124 + include/asm-sh/stat.h | 84 + include/asm-sh/statfs.h | 6 + include/asm-sh/string.h | 127 + include/asm-sh/system.h | 264 + include/asm-sh/systemh/7751systemh.h | 68 + include/asm-sh/systemh/io.h | 43 + include/asm-sh/termbits.h | 173 + include/asm-sh/termios.h | 106 + include/asm-sh/thread_info.h | 102 + include/asm-sh/timex.h | 18 + include/asm-sh/tlb.h | 18 + include/asm-sh/tlbflush.h | 31 + include/asm-sh/topology.h | 6 + include/asm-sh/types.h | 67 + include/asm-sh/uaccess.h | 600 + include/asm-sh/ubc.h | 60 + include/asm-sh/ucontext.h | 12 + include/asm-sh/unaligned.h | 7 + include/asm-sh/unistd.h | 523 + include/asm-sh/user.h | 60 + include/asm-sh/watchdog.h | 111 + include/asm-sh/xor.h | 1 + include/asm-sh64/a.out.h | 37 + include/asm-sh64/atomic.h | 126 + include/asm-sh64/bitops.h | 516 + include/asm-sh64/bug.h | 32 + include/asm-sh64/bugs.h | 38 + include/asm-sh64/byteorder.h | 49 + include/asm-sh64/cache.h | 141 + include/asm-sh64/cacheflush.h | 48 + include/asm-sh64/cayman.h | 20 + include/asm-sh64/checksum.h | 95 + include/asm-sh64/cpumask.h | 6 + include/asm-sh64/cputime.h | 6 + include/asm-sh64/current.h | 28 + include/asm-sh64/delay.h | 11 + include/asm-sh64/div64.h | 6 + include/asm-sh64/dma-mapping.h | 162 + include/asm-sh64/dma.h | 41 + include/asm-sh64/elf.h | 107 + include/asm-sh64/errno.h | 6 + include/asm-sh64/fcntl.h | 7 + include/asm-sh64/hardirq.h | 19 + include/asm-sh64/hardware.h | 22 + include/asm-sh64/hdreg.h | 6 + include/asm-sh64/hw_irq.h | 16 + include/asm-sh64/ide.h | 35 + include/asm-sh64/io.h | 250 + include/asm-sh64/ioctl.h | 83 + include/asm-sh64/ioctls.h | 116 + include/asm-sh64/ipc.h | 1 + include/asm-sh64/ipcbuf.h | 40 + include/asm-sh64/irq.h | 149 + include/asm-sh64/keyboard.h | 74 + include/asm-sh64/kmap_types.h | 7 + include/asm-sh64/linkage.h | 7 + include/asm-sh64/local.h | 7 + include/asm-sh64/mc146818rtc.h | 7 + include/asm-sh64/mman.h | 6 + include/asm-sh64/mmu.h | 7 + include/asm-sh64/mmu_context.h | 209 + include/asm-sh64/module.h | 20 + include/asm-sh64/msgbuf.h | 42 + include/asm-sh64/namei.h | 24 + include/asm-sh64/page.h | 137 + include/asm-sh64/param.h | 43 + include/asm-sh64/pci.h | 110 + include/asm-sh64/percpu.h | 6 + include/asm-sh64/pgalloc.h | 195 + include/asm-sh64/pgtable.h | 508 + include/asm-sh64/platform.h | 69 + include/asm-sh64/poll.h | 36 + include/asm-sh64/posix_types.h | 131 + include/asm-sh64/processor.h | 286 + include/asm-sh64/ptrace.h | 37 + include/asm-sh64/registers.h | 106 + include/asm-sh64/resource.h | 6 + include/asm-sh64/scatterlist.h | 23 + include/asm-sh64/sections.h | 7 + include/asm-sh64/segment.h | 6 + include/asm-sh64/semaphore-helper.h | 101 + include/asm-sh64/semaphore.h | 123 + include/asm-sh64/sembuf.h | 36 + include/asm-sh64/serial.h | 33 + include/asm-sh64/setup.h | 16 + include/asm-sh64/shmbuf.h | 53 + include/asm-sh64/shmparam.h | 20 + include/asm-sh64/sigcontext.h | 30 + include/asm-sh64/siginfo.h | 6 + include/asm-sh64/signal.h | 185 + include/asm-sh64/smp.h | 15 + include/asm-sh64/socket.h | 6 + include/asm-sh64/sockios.h | 24 + include/asm-sh64/spinlock.h | 17 + include/asm-sh64/stat.h | 88 + include/asm-sh64/statfs.h | 6 + include/asm-sh64/string.h | 21 + include/asm-sh64/system.h | 195 + include/asm-sh64/termbits.h | 6 + include/asm-sh64/termios.h | 117 + include/asm-sh64/thread_info.h | 87 + include/asm-sh64/timex.h | 34 + include/asm-sh64/tlb.h | 92 + include/asm-sh64/tlbflush.h | 31 + include/asm-sh64/topology.h | 6 + include/asm-sh64/types.h | 76 + include/asm-sh64/uaccess.h | 327 + include/asm-sh64/ucontext.h | 23 + include/asm-sh64/unaligned.h | 17 + include/asm-sh64/unistd.h | 560 + include/asm-sh64/user.h | 71 + include/asm-sparc/a.out.h | 98 + include/asm-sparc/apc.h | 64 + include/asm-sparc/asi.h | 112 + include/asm-sparc/asmmacro.h | 46 + include/asm-sparc/atomic.h | 158 + include/asm-sparc/audioio.h | 234 + include/asm-sparc/auxio.h | 89 + include/asm-sparc/bitext.h | 27 + include/asm-sparc/bitops.h | 537 + include/asm-sparc/bpp.h | 73 + include/asm-sparc/bsderrno.h | 94 + include/asm-sparc/btfixup.h | 208 + include/asm-sparc/bug.h | 31 + include/asm-sparc/bugs.h | 17 + include/asm-sparc/byteorder.h | 14 + include/asm-sparc/cache.h | 130 + include/asm-sparc/cacheflush.h | 85 + include/asm-sparc/checksum.h | 253 + include/asm-sparc/clock.h | 11 + include/asm-sparc/contregs.h | 54 + include/asm-sparc/cpudata.h | 26 + include/asm-sparc/cputime.h | 6 + include/asm-sparc/current.h | 31 + include/asm-sparc/cypress.h | 79 + include/asm-sparc/delay.h | 35 + include/asm-sparc/div64.h | 1 + include/asm-sparc/dma-mapping.h | 25 + include/asm-sparc/dma.h | 290 + include/asm-sparc/ebus.h | 98 + include/asm-sparc/ecc.h | 122 + include/asm-sparc/eeprom.h | 9 + include/asm-sparc/elf.h | 173 + include/asm-sparc/errno.h | 110 + include/asm-sparc/fbio.h | 297 + include/asm-sparc/fcntl.h | 89 + include/asm-sparc/fixmap.h | 111 + include/asm-sparc/floppy.h | 369 + include/asm-sparc/hardirq.h | 24 + include/asm-sparc/hdreg.h | 1 + include/asm-sparc/head.h | 125 + include/asm-sparc/highmem.h | 81 + include/asm-sparc/hw_irq.h | 6 + include/asm-sparc/ide.h | 100 + include/asm-sparc/idprom.h | 33 + include/asm-sparc/io-unit.h | 62 + include/asm-sparc/io.h | 290 + include/asm-sparc/ioctl.h | 68 + include/asm-sparc/ioctls.h | 134 + include/asm-sparc/iommu.h | 121 + include/asm-sparc/ipc.h | 1 + include/asm-sparc/ipcbuf.h | 31 + include/asm-sparc/irq.h | 191 + include/asm-sparc/jsflash.h | 39 + include/asm-sparc/kbio.h | 56 + include/asm-sparc/kdebug.h | 69 + include/asm-sparc/kgdb.h | 94 + include/asm-sparc/kmap_types.h | 21 + include/asm-sparc/linkage.h | 6 + include/asm-sparc/local.h | 6 + include/asm-sparc/machines.h | 69 + include/asm-sparc/mbus.h | 102 + include/asm-sparc/mc146818rtc.h | 29 + include/asm-sparc/memreg.h | 52 + include/asm-sparc/mman.h | 62 + include/asm-sparc/mmu.h | 7 + include/asm-sparc/mmu_context.h | 40 + include/asm-sparc/module.h | 7 + include/asm-sparc/mostek.h | 174 + include/asm-sparc/mpmbox.h | 67 + include/asm-sparc/msgbuf.h | 31 + include/asm-sparc/msi.h | 31 + include/asm-sparc/mxcc.h | 137 + include/asm-sparc/namei.h | 26 + include/asm-sparc/obio.h | 249 + include/asm-sparc/openprom.h | 258 + include/asm-sparc/openpromio.h | 69 + include/asm-sparc/oplib.h | 317 + include/asm-sparc/page.h | 181 + include/asm-sparc/param.h | 23 + include/asm-sparc/pbm.h | 46 + include/asm-sparc/pci.h | 163 + include/asm-sparc/pcic.h | 123 + include/asm-sparc/pconf.h | 25 + include/asm-sparc/percpu.h | 6 + include/asm-sparc/perfctr.h | 173 + include/asm-sparc/pgalloc.h | 69 + include/asm-sparc/pgtable.h | 465 + include/asm-sparc/pgtsrmmu.h | 298 + include/asm-sparc/pgtsun4.h | 171 + include/asm-sparc/pgtsun4c.h | 172 + include/asm-sparc/poll.h | 23 + include/asm-sparc/posix_types.h | 122 + include/asm-sparc/processor.h | 130 + include/asm-sparc/psr.h | 92 + include/asm-sparc/ptrace.h | 167 + include/asm-sparc/reg.h | 79 + include/asm-sparc/resource.h | 26 + include/asm-sparc/ross.h | 191 + include/asm-sparc/rtc.h | 27 + include/asm-sparc/sbi.h | 115 + include/asm-sparc/sbus.h | 142 + include/asm-sparc/scatterlist.h | 22 + include/asm-sparc/sections.h | 6 + include/asm-sparc/segment.h | 6 + include/asm-sparc/semaphore.h | 196 + include/asm-sparc/sembuf.h | 25 + include/asm-sparc/setup.h | 10 + include/asm-sparc/sfp-machine.h | 207 + include/asm-sparc/shmbuf.h | 42 + include/asm-sparc/shmparam.h | 12 + include/asm-sparc/sigcontext.h | 63 + include/asm-sparc/siginfo.h | 21 + include/asm-sparc/signal.h | 234 + include/asm-sparc/smp.h | 176 + include/asm-sparc/smpprim.h | 54 + include/asm-sparc/socket.h | 55 + include/asm-sparc/sockios.h | 13 + include/asm-sparc/solerrno.h | 132 + include/asm-sparc/spinlock.h | 238 + include/asm-sparc/stat.h | 77 + include/asm-sparc/statfs.h | 7 + include/asm-sparc/string.h | 205 + include/asm-sparc/sun4paddr.h | 56 + include/asm-sparc/sun4prom.h | 83 + include/asm-sparc/sunbpp.h | 80 + include/asm-sparc/svr4.h | 119 + include/asm-sparc/swift.h | 106 + include/asm-sparc/sysen.h | 15 + include/asm-sparc/system.h | 262 + include/asm-sparc/termbits.h | 234 + include/asm-sparc/termios.h | 174 + include/asm-sparc/thread_info.h | 153 + include/asm-sparc/timer.h | 110 + include/asm-sparc/timex.h | 15 + include/asm-sparc/tlb.h | 24 + include/asm-sparc/tlbflush.h | 63 + include/asm-sparc/topology.h | 6 + include/asm-sparc/traps.h | 140 + include/asm-sparc/tsunami.h | 64 + include/asm-sparc/turbosparc.h | 125 + include/asm-sparc/types.h | 63 + include/asm-sparc/uaccess.h | 389 + include/asm-sparc/unaligned.h | 6 + include/asm-sparc/unistd.h | 518 + include/asm-sparc/user.h | 60 + include/asm-sparc/vac-ops.h | 136 + include/asm-sparc/vaddrs.h | 70 + include/asm-sparc/vfc_ioctls.h | 58 + include/asm-sparc/viking.h | 253 + include/asm-sparc/vuid_event.h | 41 + include/asm-sparc/winmacro.h | 136 + include/asm-sparc/xor.h | 269 + include/asm-sparc64/a.out.h | 104 + include/asm-sparc64/agp.h | 11 + include/asm-sparc64/apb.h | 36 + include/asm-sparc64/asi.h | 145 + include/asm-sparc64/atomic.h | 86 + include/asm-sparc64/audioio.h | 234 + include/asm-sparc64/auxio.h | 98 + include/asm-sparc64/bbc.h | 225 + include/asm-sparc64/bitops.h | 294 + include/asm-sparc64/bpp.h | 73 + include/asm-sparc64/bsderrno.h | 94 + include/asm-sparc64/bug.h | 19 + include/asm-sparc64/bugs.h | 16 + include/asm-sparc64/byteorder.h | 50 + include/asm-sparc64/cache.h | 17 + include/asm-sparc64/cacheflush.h | 72 + include/asm-sparc64/chafsr.h | 242 + include/asm-sparc64/checksum.h | 173 + include/asm-sparc64/chmctrl.h | 184 + include/asm-sparc64/cmt.h | 59 + include/asm-sparc64/compat.h | 201 + include/asm-sparc64/const.h | 19 + include/asm-sparc64/cpudata.h | 31 + include/asm-sparc64/cputime.h | 6 + include/asm-sparc64/current.h | 8 + include/asm-sparc64/dcr.h | 15 + include/asm-sparc64/dcu.h | 26 + include/asm-sparc64/delay.h | 38 + include/asm-sparc64/display7seg.h | 79 + include/asm-sparc64/div64.h | 1 + include/asm-sparc64/dma-mapping.h | 27 + include/asm-sparc64/dma.h | 221 + include/asm-sparc64/ebus.h | 97 + include/asm-sparc64/elf.h | 181 + include/asm-sparc64/envctrl.h | 103 + include/asm-sparc64/errno.h | 110 + include/asm-sparc64/estate.h | 50 + include/asm-sparc64/fbio.h | 302 + include/asm-sparc64/fcntl.h | 78 + include/asm-sparc64/fhc.h | 132 + include/asm-sparc64/floppy.h | 811 + include/asm-sparc64/fpumacro.h | 33 + include/asm-sparc64/hardirq.h | 23 + include/asm-sparc64/hdreg.h | 1 + include/asm-sparc64/head.h | 59 + include/asm-sparc64/hw_irq.h | 6 + include/asm-sparc64/ide.h | 121 + include/asm-sparc64/idprom.h | 35 + include/asm-sparc64/io.h | 501 + include/asm-sparc64/ioctl.h | 68 + include/asm-sparc64/ioctls.h | 135 + include/asm-sparc64/iommu.h | 19 + include/asm-sparc64/ipc.h | 1 + include/asm-sparc64/ipcbuf.h | 28 + include/asm-sparc64/irq.h | 157 + include/asm-sparc64/isa.h | 54 + include/asm-sparc64/kbio.h | 56 + include/asm-sparc64/kdebug.h | 52 + include/asm-sparc64/kmap_types.h | 25 + include/asm-sparc64/kprobes.h | 32 + include/asm-sparc64/linkage.h | 6 + include/asm-sparc64/local.h | 40 + include/asm-sparc64/lsu.h | 20 + include/asm-sparc64/mc146818rtc.h | 35 + include/asm-sparc64/mman.h | 62 + include/asm-sparc64/mmu.h | 99 + include/asm-sparc64/mmu_context.h | 145 + include/asm-sparc64/module.h | 7 + include/asm-sparc64/mostek.h | 144 + include/asm-sparc64/msgbuf.h | 27 + include/asm-sparc64/namei.h | 26 + include/asm-sparc64/ns87303.h | 119 + include/asm-sparc64/openprom.h | 281 + include/asm-sparc64/openpromio.h | 69 + include/asm-sparc64/oplib.h | 360 + include/asm-sparc64/page.h | 172 + include/asm-sparc64/param.h | 23 + include/asm-sparc64/parport.h | 175 + include/asm-sparc64/pbm.h | 248 + include/asm-sparc64/pci.h | 264 + include/asm-sparc64/pconf.h | 25 + include/asm-sparc64/percpu.h | 49 + include/asm-sparc64/perfctr.h | 173 + include/asm-sparc64/pgalloc.h | 188 + include/asm-sparc64/pgtable.h | 464 + include/asm-sparc64/pil.h | 26 + include/asm-sparc64/poll.h | 23 + include/asm-sparc64/posix_types.h | 126 + include/asm-sparc64/processor.h | 197 + include/asm-sparc64/psrcompat.h | 44 + include/asm-sparc64/pstate.h | 90 + include/asm-sparc64/ptrace.h | 297 + include/asm-sparc64/reg.h | 56 + include/asm-sparc64/resource.h | 19 + include/asm-sparc64/rtc.h | 27 + include/asm-sparc64/rwsem-const.h | 12 + include/asm-sparc64/rwsem.h | 100 + include/asm-sparc64/sbus.h | 122 + include/asm-sparc64/scatterlist.h | 22 + include/asm-sparc64/sections.h | 9 + include/asm-sparc64/segment.h | 6 + include/asm-sparc64/semaphore.h | 57 + include/asm-sparc64/sembuf.h | 22 + include/asm-sparc64/setup.h | 10 + include/asm-sparc64/sfp-machine.h | 91 + include/asm-sparc64/shmbuf.h | 38 + include/asm-sparc64/shmparam.h | 11 + include/asm-sparc64/sigcontext.h | 88 + include/asm-sparc64/siginfo.h | 35 + include/asm-sparc64/signal.h | 276 + include/asm-sparc64/smp.h | 75 + include/asm-sparc64/socket.h | 55 + include/asm-sparc64/sockios.h | 13 + include/asm-sparc64/solerrno.h | 132 + include/asm-sparc64/spinlock.h | 310 + include/asm-sparc64/spitfire.h | 461 + include/asm-sparc64/starfire.h | 21 + include/asm-sparc64/stat.h | 63 + include/asm-sparc64/statfs.h | 55 + include/asm-sparc64/string.h | 83 + include/asm-sparc64/sunbpp.h | 80 + include/asm-sparc64/svr4.h | 120 + include/asm-sparc64/system.h | 350 + include/asm-sparc64/termbits.h | 235 + include/asm-sparc64/termios.h | 173 + include/asm-sparc64/thread_info.h | 252 + include/asm-sparc64/timer.h | 74 + include/asm-sparc64/timex.h | 17 + include/asm-sparc64/tlb.h | 128 + include/asm-sparc64/tlbflush.h | 41 + include/asm-sparc64/topology.h | 6 + include/asm-sparc64/ttable.h | 407 + include/asm-sparc64/types.h | 65 + include/asm-sparc64/uaccess.h | 335 + include/asm-sparc64/uctx.h | 71 + include/asm-sparc64/unaligned.h | 6 + include/asm-sparc64/unistd.h | 514 + include/asm-sparc64/upa.h | 110 + include/asm-sparc64/user.h | 60 + include/asm-sparc64/utrap.h | 51 + include/asm-sparc64/vga.h | 33 + include/asm-sparc64/visasm.h | 63 + include/asm-sparc64/vuid_event.h | 40 + include/asm-sparc64/watchdog.h | 31 + include/asm-sparc64/xor.h | 40 + include/asm-um/a.out.h | 20 + include/asm-um/apic.h | 4 + include/asm-um/arch-signal-i386.h | 24 + include/asm-um/archparam-i386.h | 163 + include/asm-um/archparam-ppc.h | 37 + include/asm-um/archparam-x86_64.h | 62 + include/asm-um/atomic.h | 11 + include/asm-um/bitops.h | 6 + include/asm-um/boot.h | 6 + include/asm-um/bug.h | 4 + include/asm-um/bugs.h | 6 + include/asm-um/byteorder.h | 6 + include/asm-um/cache.h | 10 + include/asm-um/cacheflush.h | 6 + include/asm-um/calling.h | 9 + include/asm-um/checksum.h | 6 + include/asm-um/cobalt.h | 6 + include/asm-um/common.lds.S | 104 + include/asm-um/cpufeature.h | 6 + include/asm-um/cputime.h | 6 + include/asm-um/current.h | 32 + include/asm-um/delay.h | 7 + include/asm-um/desc.h | 6 + include/asm-um/div64.h | 6 + include/asm-um/dma-mapping.h | 121 + include/asm-um/dma.h | 10 + include/asm-um/dwarf2.h | 11 + include/asm-um/elf.h | 37 + include/asm-um/errno.h | 6 + include/asm-um/fcntl.h | 6 + include/asm-um/fixmap.h | 97 + include/asm-um/floppy.h | 6 + include/asm-um/hardirq.h | 26 + include/asm-um/hdreg.h | 6 + include/asm-um/highmem.h | 12 + include/asm-um/hw_irq.h | 10 + include/asm-um/ide.h | 6 + include/asm-um/io.h | 36 + include/asm-um/ioctl.h | 6 + include/asm-um/ioctls.h | 6 + include/asm-um/ipc.h | 6 + include/asm-um/ipcbuf.h | 6 + include/asm-um/irq.h | 22 + include/asm-um/irq_vectors.h | 20 + include/asm-um/keyboard.h | 6 + include/asm-um/kmap_types.h | 11 + include/asm-um/linkage.h | 7 + include/asm-um/local.h | 6 + include/asm-um/locks.h | 6 + include/asm-um/mca_dma.h | 6 + include/asm-um/mman.h | 6 + include/asm-um/mmu.h | 22 + include/asm-um/mmu_context.h | 76 + include/asm-um/module-generic.h | 6 + include/asm-um/module-i386.h | 13 + include/asm-um/module-x86_64.h | 30 + include/asm-um/msgbuf.h | 6 + include/asm-um/mtrr.h | 6 + include/asm-um/namei.h | 6 + include/asm-um/page.h | 130 + include/asm-um/page_offset.h | 1 + include/asm-um/param.h | 18 + include/asm-um/pci.h | 7 + include/asm-um/pda.h | 31 + include/asm-um/percpu.h | 6 + include/asm-um/pgalloc.h | 65 + include/asm-um/pgtable-2level.h | 83 + include/asm-um/pgtable-3level.h | 173 + include/asm-um/pgtable.h | 386 + include/asm-um/poll.h | 6 + include/asm-um/posix_types.h | 6 + include/asm-um/prctl.h | 6 + include/asm-um/processor-generic.h | 150 + include/asm-um/processor-i386.h | 54 + include/asm-um/processor-ppc.h | 15 + include/asm-um/processor-x86_64.h | 44 + include/asm-um/ptrace-generic.h | 76 + include/asm-um/ptrace-i386.h | 46 + include/asm-um/ptrace-x86_64.h | 75 + include/asm-um/resource.h | 6 + include/asm-um/rwlock.h | 6 + include/asm-um/rwsem.h | 10 + include/asm-um/scatterlist.h | 6 + include/asm-um/sections.h | 7 + include/asm-um/segment.h | 4 + include/asm-um/semaphore.h | 6 + include/asm-um/sembuf.h | 6 + include/asm-um/serial.h | 6 + include/asm-um/setup.h | 9 + include/asm-um/shmbuf.h | 6 + include/asm-um/shmparam.h | 6 + include/asm-um/sigcontext-generic.h | 6 + include/asm-um/sigcontext-i386.h | 6 + include/asm-um/sigcontext-ppc.h | 10 + include/asm-um/sigcontext-x86_64.h | 22 + include/asm-um/siginfo.h | 6 + include/asm-um/signal.h | 29 + include/asm-um/smp.h | 27 + include/asm-um/socket.h | 6 + include/asm-um/sockios.h | 6 + include/asm-um/spinlock.h | 6 + include/asm-um/stat.h | 6 + include/asm-um/statfs.h | 6 + include/asm-um/string.h | 7 + include/asm-um/suspend.h | 4 + include/asm-um/system-generic.h | 47 + include/asm-um/system-i386.h | 8 + include/asm-um/system-ppc.h | 12 + include/asm-um/system-x86_64.h | 23 + include/asm-um/termbits.h | 6 + include/asm-um/termios.h | 6 + include/asm-um/thread_info.h | 93 + include/asm-um/timex.h | 13 + include/asm-um/tlb.h | 6 + include/asm-um/tlbflush.h | 48 + include/asm-um/topology.h | 6 + include/asm-um/types.h | 6 + include/asm-um/uaccess.h | 102 + include/asm-um/ucontext.h | 6 + include/asm-um/unaligned.h | 6 + include/asm-um/unistd.h | 69 + include/asm-um/user.h | 6 + include/asm-um/vga.h | 6 + include/asm-um/vm-flags-i386.h | 14 + include/asm-um/vm-flags-x86_64.h | 33 + include/asm-um/xor.h | 6 + include/asm-v850/a.out.h | 21 + include/asm-v850/anna.h | 143 + include/asm-v850/as85ep1.h | 158 + include/asm-v850/asm.h | 32 + include/asm-v850/atomic.h | 99 + include/asm-v850/bitops.h | 355 + include/asm-v850/bug.h | 22 + include/asm-v850/bugs.h | 16 + include/asm-v850/byteorder.h | 48 + include/asm-v850/cache.h | 25 + include/asm-v850/cacheflush.h | 69 + include/asm-v850/checksum.h | 115 + include/asm-v850/clinkage.h | 26 + include/asm-v850/cputime.h | 6 + include/asm-v850/current.h | 47 + include/asm-v850/delay.h | 47 + include/asm-v850/div64.h | 1 + include/asm-v850/dma-mapping.h | 12 + include/asm-v850/dma.h | 18 + include/asm-v850/elf.h | 101 + include/asm-v850/entry.h | 113 + include/asm-v850/errno.h | 6 + include/asm-v850/fcntl.h | 87 + include/asm-v850/flat.h | 131 + include/asm-v850/fpga85e2c.h | 88 + include/asm-v850/gbus_int.h | 97 + include/asm-v850/hardirq.h | 25 + include/asm-v850/highres_timer.h | 44 + include/asm-v850/hw_irq.h | 8 + include/asm-v850/io.h | 133 + include/asm-v850/ioctl.h | 80 + include/asm-v850/ioctls.h | 80 + include/asm-v850/ipc.h | 1 + include/asm-v850/ipcbuf.h | 29 + include/asm-v850/irq.h | 69 + include/asm-v850/kmap_types.h | 19 + include/asm-v850/linkage.h | 6 + include/asm-v850/local.h | 6 + include/asm-v850/ma.h | 101 + include/asm-v850/ma1.h | 50 + include/asm-v850/machdep.h | 61 + include/asm-v850/macrology.h | 17 + include/asm-v850/me2.h | 182 + include/asm-v850/mman.h | 40 + include/asm-v850/mmu.h | 22 + include/asm-v850/mmu_context.h | 11 + include/asm-v850/module.h | 62 + include/asm-v850/msgbuf.h | 31 + include/asm-v850/namei.h | 17 + include/asm-v850/page.h | 146 + include/asm-v850/param.h | 32 + include/asm-v850/pci.h | 88 + include/asm-v850/percpu.h | 14 + include/asm-v850/pgalloc.h | 22 + include/asm-v850/pgtable.h | 58 + include/asm-v850/poll.h | 23 + include/asm-v850/posix_types.h | 76 + include/asm-v850/processor.h | 120 + include/asm-v850/ptrace.h | 121 + include/asm-v850/resource.h | 6 + include/asm-v850/rte_cb.h | 85 + include/asm-v850/rte_ma1_cb.h | 128 + include/asm-v850/rte_mb_a_pci.h | 56 + include/asm-v850/rte_me2_cb.h | 202 + include/asm-v850/rte_nb85e_cb.h | 111 + include/asm-v850/scatterlist.h | 26 + include/asm-v850/sections.h | 6 + include/asm-v850/segment.h | 36 + include/asm-v850/semaphore.h | 88 + include/asm-v850/sembuf.h | 25 + include/asm-v850/serial.h | 57 + include/asm-v850/setup.h | 6 + include/asm-v850/shmbuf.h | 42 + include/asm-v850/shmparam.h | 6 + include/asm-v850/sigcontext.h | 25 + include/asm-v850/siginfo.h | 6 + include/asm-v850/signal.h | 195 + include/asm-v850/sim.h | 52 + include/asm-v850/sim85e2.h | 75 + include/asm-v850/sim85e2c.h | 26 + include/asm-v850/sim85e2s.h | 28 + include/asm-v850/simsyscall.h | 99 + include/asm-v850/socket.h | 50 + include/asm-v850/sockios.h | 12 + include/asm-v850/stat.h | 73 + include/asm-v850/statfs.h | 6 + include/asm-v850/string.h | 25 + include/asm-v850/system.h | 113 + include/asm-v850/teg.h | 101 + include/asm-v850/termbits.h | 175 + include/asm-v850/termios.h | 106 + include/asm-v850/thread_info.h | 132 + include/asm-v850/timex.h | 18 + include/asm-v850/tlb.h | 21 + include/asm-v850/tlbflush.h | 70 + include/asm-v850/topology.h | 6 + include/asm-v850/types.h | 68 + include/asm-v850/uaccess.h | 165 + include/asm-v850/ucontext.h | 14 + include/asm-v850/unaligned.h | 130 + include/asm-v850/unistd.h | 477 + include/asm-v850/user.h | 56 + include/asm-v850/v850e.h | 21 + include/asm-v850/v850e2.h | 69 + include/asm-v850/v850e2_cache.h | 74 + include/asm-v850/v850e_cache.h | 48 + include/asm-v850/v850e_intc.h | 133 + include/asm-v850/v850e_timer_c.h | 48 + include/asm-v850/v850e_timer_d.h | 62 + include/asm-v850/v850e_uart.h | 77 + include/asm-v850/v850e_uarta.h | 278 + include/asm-v850/v850e_uartb.h | 262 + include/asm-v850/v850e_utils.h | 35 + include/asm-x86_64/8253pit.h | 10 + include/asm-x86_64/a.out.h | 27 + include/asm-x86_64/acpi.h | 176 + include/asm-x86_64/agp.h | 22 + include/asm-x86_64/apic.h | 118 + include/asm-x86_64/apicdef.h | 391 + include/asm-x86_64/atomic.h | 381 + include/asm-x86_64/bitops.h | 418 + include/asm-x86_64/boot.h | 15 + include/asm-x86_64/bootsetup.h | 39 + include/asm-x86_64/bug.h | 25 + include/asm-x86_64/bugs.h | 29 + include/asm-x86_64/byteorder.h | 33 + include/asm-x86_64/cache.h | 14 + include/asm-x86_64/cacheflush.h | 30 + include/asm-x86_64/calling.h | 156 + include/asm-x86_64/checksum.h | 193 + include/asm-x86_64/compat.h | 205 + include/asm-x86_64/cpu.h | 1 + include/asm-x86_64/cpufeature.h | 104 + include/asm-x86_64/cputime.h | 6 + include/asm-x86_64/current.h | 27 + include/asm-x86_64/debugreg.h | 65 + include/asm-x86_64/delay.h | 27 + include/asm-x86_64/desc.h | 217 + include/asm-x86_64/div64.h | 1 + include/asm-x86_64/dma-mapping.h | 138 + include/asm-x86_64/dma.h | 298 + include/asm-x86_64/dwarf2.h | 42 + include/asm-x86_64/e820.h | 59 + include/asm-x86_64/elf.h | 160 + include/asm-x86_64/errno.h | 6 + include/asm-x86_64/fcntl.h | 76 + include/asm-x86_64/fixmap.h | 96 + include/asm-x86_64/floppy.h | 285 + include/asm-x86_64/fpu32.h | 10 + include/asm-x86_64/genapic.h | 35 + include/asm-x86_64/hardirq.h | 37 + include/asm-x86_64/hdreg.h | 1 + include/asm-x86_64/hpet.h | 60 + include/asm-x86_64/hw_irq.h | 144 + include/asm-x86_64/i387.h | 150 + include/asm-x86_64/ia32.h | 172 + include/asm-x86_64/ia32_unistd.h | 300 + include/asm-x86_64/ide.h | 1 + include/asm-x86_64/io.h | 341 + include/asm-x86_64/io_apic.h | 221 + include/asm-x86_64/ioctl.h | 75 + include/asm-x86_64/ioctl32.h | 1 + include/asm-x86_64/ioctls.h | 82 + include/asm-x86_64/ipcbuf.h | 29 + include/asm-x86_64/ipi.h | 113 + include/asm-x86_64/irq.h | 55 + include/asm-x86_64/kdebug.h | 53 + include/asm-x86_64/kmap_types.h | 19 + include/asm-x86_64/kprobes.h | 63 + include/asm-x86_64/ldt.h | 36 + include/asm-x86_64/linkage.h | 6 + include/asm-x86_64/local.h | 73 + include/asm-x86_64/mach_apic.h | 29 + include/asm-x86_64/mc146818rtc.h | 29 + include/asm-x86_64/mce.h | 80 + include/asm-x86_64/mman.h | 44 + include/asm-x86_64/mmsegment.h | 8 + include/asm-x86_64/mmu.h | 20 + include/asm-x86_64/mmu_context.h | 79 + include/asm-x86_64/mmx.h | 14 + include/asm-x86_64/mmzone.h | 63 + include/asm-x86_64/module.h | 10 + include/asm-x86_64/mpspec.h | 241 + include/asm-x86_64/msgbuf.h | 27 + include/asm-x86_64/msi.h | 18 + include/asm-x86_64/msr.h | 387 + include/asm-x86_64/mtrr.h | 108 + include/asm-x86_64/namei.h | 11 + include/asm-x86_64/nmi.h | 57 + include/asm-x86_64/node.h | 1 + include/asm-x86_64/numa.h | 21 + include/asm-x86_64/numnodes.h | 12 + include/asm-x86_64/page.h | 139 + include/asm-x86_64/param.h | 22 + include/asm-x86_64/parport.h | 18 + include/asm-x86_64/pci-direct.h | 48 + include/asm-x86_64/pci.h | 141 + include/asm-x86_64/pda.h | 83 + include/asm-x86_64/percpu.h | 52 + include/asm-x86_64/pgalloc.h | 105 + include/asm-x86_64/pgtable.h | 437 + include/asm-x86_64/poll.h | 26 + include/asm-x86_64/posix_types.h | 119 + include/asm-x86_64/prctl.h | 10 + include/asm-x86_64/processor.h | 462 + include/asm-x86_64/proto.h | 118 + include/asm-x86_64/ptrace.h | 114 + include/asm-x86_64/resource.h | 6 + include/asm-x86_64/rtc.h | 10 + include/asm-x86_64/rwlock.h | 86 + include/asm-x86_64/rwsem.h | 278 + include/asm-x86_64/scatterlist.h | 22 + include/asm-x86_64/seccomp.h | 24 + include/asm-x86_64/sections.h | 7 + include/asm-x86_64/segment.h | 46 + include/asm-x86_64/semaphore.h | 196 + include/asm-x86_64/sembuf.h | 25 + include/asm-x86_64/serial.h | 130 + include/asm-x86_64/setup.h | 6 + include/asm-x86_64/shmbuf.h | 38 + include/asm-x86_64/shmparam.h | 6 + include/asm-x86_64/sigcontext.h | 55 + include/asm-x86_64/sigcontext32.h | 71 + include/asm-x86_64/siginfo.h | 10 + include/asm-x86_64/signal.h | 213 + include/asm-x86_64/smp.h | 149 + include/asm-x86_64/socket.h | 50 + include/asm-x86_64/sockios.h | 12 + include/asm-x86_64/spinlock.h | 214 + include/asm-x86_64/stat.h | 44 + include/asm-x86_64/statfs.h | 58 + include/asm-x86_64/string.h | 67 + include/asm-x86_64/suspend.h | 58 + include/asm-x86_64/swiotlb.h | 40 + include/asm-x86_64/system.h | 343 + include/asm-x86_64/termbits.h | 173 + include/asm-x86_64/termios.h | 106 + include/asm-x86_64/thread_info.h | 144 + include/asm-x86_64/timex.h | 31 + include/asm-x86_64/tlb.h | 13 + include/asm-x86_64/tlbflush.h | 119 + include/asm-x86_64/topology.h | 68 + include/asm-x86_64/types.h | 60 + include/asm-x86_64/uaccess.h | 365 + include/asm-x86_64/ucontext.h | 12 + include/asm-x86_64/unaligned.h | 37 + include/asm-x86_64/unistd.h | 797 + include/asm-x86_64/user.h | 114 + include/asm-x86_64/user32.h | 69 + include/asm-x86_64/vga.h | 20 + include/asm-x86_64/vsyscall.h | 61 + include/asm-x86_64/vsyscall32.h | 20 + include/asm-x86_64/xor.h | 354 + include/linux/8250_pci.h | 2 + include/linux/a.out.h | 268 + include/linux/ac97_codec.h | 374 + include/linux/acct.h | 201 + include/linux/acpi.h | 536 + include/linux/adb.h | 104 + include/linux/adfs_fs.h | 76 + include/linux/adfs_fs_i.h | 24 + include/linux/adfs_fs_sb.h | 38 + include/linux/affs_fs.h | 7 + include/linux/affs_hardblocks.h | 66 + include/linux/agp_backend.h | 109 + include/linux/agpgart.h | 214 + include/linux/aio.h | 201 + include/linux/aio_abi.h | 92 + include/linux/amifd.h | 62 + include/linux/amifdreg.h | 81 + include/linux/amigaffs.h | 144 + include/linux/apm_bios.h | 218 + include/linux/arcdevice.h | 350 + include/linux/ata.h | 268 + include/linux/atalk.h | 245 + include/linux/atm.h | 243 + include/linux/atm_eni.h | 23 + include/linux/atm_he.h | 20 + include/linux/atm_idt77105.h | 28 + include/linux/atm_nicstar.h | 53 + include/linux/atm_suni.h | 12 + include/linux/atm_tcp.h | 75 + include/linux/atm_zatm.h | 52 + include/linux/atmapi.h | 29 + include/linux/atmarp.h | 43 + include/linux/atmbr2684.h | 101 + include/linux/atmclip.h | 21 + include/linux/atmdev.h | 489 + include/linux/atmioc.h | 41 + include/linux/atmlec.h | 88 + include/linux/atmmpc.h | 125 + include/linux/atmppp.h | 24 + include/linux/atmsap.h | 162 + include/linux/atmsvc.h | 55 + include/linux/attribute_container.h | 73 + include/linux/audit.h | 196 + include/linux/auto_fs.h | 84 + include/linux/auto_fs4.h | 57 + include/linux/awe_voice.h | 525 + include/linux/ax25.h | 116 + include/linux/b1lli.h | 73 + include/linux/b1pcmcia.h | 21 + include/linux/backing-dev.h | 104 + include/linux/backlight.h | 57 + include/linux/baycom.h | 39 + include/linux/bcd.h | 20 + include/linux/bfs_fs.h | 79 + include/linux/binfmts.h | 87 + include/linux/bio.h | 339 + include/linux/bitmap.h | 261 + include/linux/bitops.h | 159 + include/linux/blkdev.h | 759 + include/linux/blkpg.h | 57 + include/linux/blockgroup_lock.h | 60 + include/linux/bootmem.h | 96 + include/linux/bpqether.h | 41 + include/linux/buffer_head.h | 296 + include/linux/byteorder/big_endian.h | 106 + include/linux/byteorder/generic.h | 172 + include/linux/byteorder/little_endian.h | 106 + include/linux/byteorder/pdp_endian.h | 88 + include/linux/byteorder/swab.h | 192 + include/linux/byteorder/swabb.h | 137 + include/linux/cache.h | 51 + include/linux/capability.h | 360 + include/linux/capi.h | 133 + include/linux/cciss_ioctl.h | 240 + include/linux/cd1400.h | 292 + include/linux/cdev.h | 27 + include/linux/cdk.h | 486 + include/linux/cdrom.h | 1192 + include/linux/circ_buf.h | 32 + include/linux/cobalt-nvram.h | 109 + include/linux/coda.h | 788 + include/linux/coda_cache.h | 22 + include/linux/coda_fs_i.h | 55 + include/linux/coda_linux.h | 102 + include/linux/coda_proc.h | 76 + include/linux/coda_psdev.h | 103 + include/linux/coff.h | 351 + include/linux/com20020.h | 115 + include/linux/compat.h | 162 + include/linux/compat_ioctl.h | 771 + include/linux/compiler-gcc.h | 17 + include/linux/compiler-gcc2.h | 24 + include/linux/compiler-gcc3.h | 32 + include/linux/compiler-gcc4.h | 16 + include/linux/compiler-intel.h | 24 + include/linux/compiler.h | 152 + include/linux/completion.h | 42 + include/linux/comstats.h | 119 + include/linux/concap.h | 113 + include/linux/config.h | 6 + include/linux/console.h | 133 + include/linux/console_struct.h | 123 + include/linux/consolemap.h | 15 + include/linux/cpu.h | 83 + include/linux/cpufreq.h | 328 + include/linux/cpumask.h | 395 + include/linux/cpuset.h | 64 + include/linux/cramfs_fs.h | 98 + include/linux/cramfs_fs_sb.h | 20 + include/linux/crc-ccitt.h | 17 + include/linux/crc32.h | 27 + include/linux/crc32c.h | 11 + include/linux/crypto.h | 398 + include/linux/cryptohash.h | 12 + include/linux/ctype.h | 54 + include/linux/cuda.h | 36 + include/linux/cyclades.h | 827 + include/linux/cyclomx.h | 80 + include/linux/cycx_cfm.h | 101 + include/linux/cycx_drv.h | 65 + include/linux/cycx_x25.h | 125 + include/linux/dcache.h | 338 + include/linux/dcookies.h | 69 + include/linux/debugfs.h | 92 + include/linux/delay.h | 50 + include/linux/devfs_fs.h | 41 + include/linux/devfs_fs_kernel.h | 58 + include/linux/device-mapper.h | 130 + include/linux/device.h | 426 + include/linux/devpts_fs.h | 34 + include/linux/dio.h | 312 + include/linux/dirent.h | 32 + include/linux/divert.h | 132 + include/linux/dm-ioctl.h | 308 + include/linux/dma-mapping.h | 56 + include/linux/dmapool.h | 27 + include/linux/dmi.h | 47 + include/linux/dn.h | 147 + include/linux/dnotify.h | 63 + include/linux/dqblk_v1.h | 18 + include/linux/dqblk_v2.h | 20 + include/linux/dqblk_xfs.h | 159 + include/linux/ds1286.h | 54 + include/linux/dtlk.h | 104 + include/linux/dvb/audio.h | 124 + include/linux/dvb/ca.h | 90 + include/linux/dvb/dmx.h | 180 + include/linux/dvb/frontend.h | 267 + include/linux/dvb/net.h | 53 + include/linux/dvb/osd.h | 144 + include/linux/dvb/version.h | 29 + include/linux/dvb/video.h | 203 + include/linux/edd.h | 194 + include/linux/eeprom.h | 136 + include/linux/efi.h | 398 + include/linux/efs_dir.h | 42 + include/linux/efs_fs.h | 51 + include/linux/efs_fs_i.h | 68 + include/linux/efs_fs_sb.h | 62 + include/linux/efs_vh.h | 53 + include/linux/eisa.h | 107 + include/linux/elevator.h | 145 + include/linux/elf-fdpic.h | 68 + include/linux/elf.h | 449 + include/linux/elfcore.h | 129 + include/linux/err.h | 31 + include/linux/errno.h | 29 + include/linux/errqueue.h | 47 + include/linux/etherdevice.h | 88 + include/linux/ethtool.h | 471 + include/linux/eventpoll.h | 99 + include/linux/ext2_fs.h | 553 + include/linux/ext2_fs_sb.h | 58 + include/linux/ext3_fs.h | 830 + include/linux/ext3_fs_i.h | 138 + include/linux/ext3_fs_sb.h | 83 + include/linux/ext3_jbd.h | 265 + include/linux/fadvise.h | 11 + include/linux/fb.h | 932 + include/linux/fcdevice.h | 33 + include/linux/fcntl.h | 50 + include/linux/fd.h | 374 + include/linux/fd1772.h | 80 + include/linux/fddidevice.h | 33 + include/linux/fdreg.h | 137 + include/linux/file.h | 84 + include/linux/filter.h | 151 + include/linux/firmware.h | 20 + include/linux/flat.h | 100 + include/linux/font.h | 53 + include/linux/fs.h | 1677 ++ include/linux/fs_struct.h | 28 + include/linux/fsl_devices.h | 78 + include/linux/ftape-header-segment.h | 122 + include/linux/ftape-vendors.h | 137 + include/linux/ftape.h | 202 + include/linux/futex.h | 17 + include/linux/gameport.h | 198 + include/linux/gen_stats.h | 67 + include/linux/generic_serial.h | 96 + include/linux/genhd.h | 424 + include/linux/gfp.h | 134 + include/linux/hardirq.h | 106 + include/linux/harrier_defs.h | 212 + include/linux/hash.h | 58 + include/linux/hayesesp.h | 124 + include/linux/hdlc.h | 258 + include/linux/hdlc/ioctl.h | 48 + include/linux/hdlcdrv.h | 378 + include/linux/hdpu_features.h | 26 + include/linux/hdreg.h | 703 + include/linux/hdsmart.h | 124 + include/linux/hiddev.h | 240 + include/linux/highmem.h | 104 + include/linux/highuid.h | 98 + include/linux/hippidevice.h | 35 + include/linux/hpet.h | 136 + include/linux/hpfs_fs.h | 8 + include/linux/hugetlb.h | 142 + include/linux/hysdn_if.h | 33 + include/linux/i2c-algo-bit.h | 54 + include/linux/i2c-algo-ite.h | 69 + include/linux/i2c-algo-pca.h | 17 + include/linux/i2c-algo-pcf.h | 49 + include/linux/i2c-algo-sgi.h | 27 + include/linux/i2c-algo-sibyte.h | 33 + include/linux/i2c-dev.h | 48 + include/linux/i2c-id.h | 319 + include/linux/i2c-sensor.h | 263 + include/linux/i2c-vid.h | 99 + include/linux/i2c.h | 594 + include/linux/i2o-dev.h | 402 + include/linux/i2o.h | 1003 + include/linux/i8k.h | 46 + include/linux/ibmtr.h | 373 + include/linux/icmp.h | 96 + include/linux/icmpv6.h | 171 + include/linux/ide.h | 1516 + include/linux/idr.h | 78 + include/linux/if.h | 193 + include/linux/if_arcnet.h | 137 + include/linux/if_arp.h | 150 + include/linux/if_bonding.h | 117 + include/linux/if_bridge.h | 113 + include/linux/if_cablemodem.h | 22 + include/linux/if_ec.h | 72 + include/linux/if_eql.h | 84 + include/linux/if_ether.h | 115 + include/linux/if_fc.h | 50 + include/linux/if_fddi.h | 197 + include/linux/if_frad.h | 200 + include/linux/if_hippi.h | 157 + include/linux/if_infiniband.h | 29 + include/linux/if_ltalk.h | 12 + include/linux/if_packet.h | 102 + include/linux/if_plip.h | 28 + include/linux/if_ppp.h | 155 + include/linux/if_pppox.h | 175 + include/linux/if_shaper.h | 64 + include/linux/if_slip.h | 30 + include/linux/if_strip.h | 25 + include/linux/if_tr.h | 109 + include/linux/if_tun.h | 93 + include/linux/if_tunnel.h | 29 + include/linux/if_vlan.h | 398 + include/linux/if_wanpipe.h | 124 + include/linux/if_wanpipe_common.h | 60 + include/linux/igmp.h | 219 + include/linux/in.h | 253 + include/linux/in6.h | 201 + include/linux/in_route.h | 32 + include/linux/inet.h | 50 + include/linux/inetdevice.h | 190 + include/linux/init.h | 250 + include/linux/init_task.h | 125 + include/linux/initrd.h | 20 + include/linux/input.h | 1016 + include/linux/interrupt.h | 289 + include/linux/ioc4_common.h | 21 + include/linux/ioctl.h | 7 + include/linux/ioctl32.h | 37 + include/linux/ioport.h | 127 + include/linux/ip.h | 221 + include/linux/ip6_tunnel.h | 34 + include/linux/ip_mp_alg.h | 22 + include/linux/ipc.h | 75 + include/linux/ipmi.h | 602 + include/linux/ipmi_msgdefs.h | 101 + include/linux/ipmi_smi.h | 156 + include/linux/ipsec.h | 46 + include/linux/ipv6.h | 316 + include/linux/ipv6_route.h | 49 + include/linux/ipx.h | 74 + include/linux/irda.h | 222 + include/linux/irq.h | 97 + include/linux/irq_cpustat.h | 32 + include/linux/isapnp.h | 142 + include/linux/isdn.h | 638 + include/linux/isdn/capicmd.h | 115 + include/linux/isdn/capilli.h | 113 + include/linux/isdn/capiutil.h | 505 + include/linux/isdn/tpam.h | 56 + include/linux/isdn_divertif.h | 42 + include/linux/isdn_ppp.h | 249 + include/linux/isdnif.h | 547 + include/linux/isicom.h | 131 + include/linux/iso_fs.h | 312 + include/linux/iso_fs_i.h | 27 + include/linux/iso_fs_sb.h | 34 + include/linux/istallion.h | 132 + include/linux/ite_gpio.h | 66 + include/linux/ixjuser.h | 722 + include/linux/jbd.h | 1098 + include/linux/jffs.h | 224 + include/linux/jffs2.h | 157 + include/linux/jffs2_fs_i.h | 47 + include/linux/jffs2_fs_sb.h | 118 + include/linux/jhash.h | 143 + include/linux/jiffies.h | 450 + include/linux/journal-head.h | 92 + include/linux/joystick.h | 128 + include/linux/kallsyms.h | 67 + include/linux/kbd_diacr.h | 8 + include/linux/kbd_kern.h | 157 + include/linux/kd.h | 175 + include/linux/kdev_t.h | 101 + include/linux/kernel.h | 307 + include/linux/kernel_stat.h | 59 + include/linux/kernelcapi.h | 161 + include/linux/key-ui.h | 97 + include/linux/key.h | 291 + include/linux/keyboard.h | 431 + include/linux/keyctl.h | 39 + include/linux/kfifo.h | 157 + include/linux/kmalloc_sizes.h | 33 + include/linux/kmod.h | 40 + include/linux/kobj_map.h | 12 + include/linux/kobject.h | 259 + include/linux/kobject_uevent.h | 57 + include/linux/kprobes.h | 136 + include/linux/kref.h | 32 + include/linux/kthread.h | 81 + include/linux/lapb.h | 56 + include/linux/lcd.h | 56 + include/linux/libata.h | 599 + include/linux/libps2.h | 50 + include/linux/limits.h | 22 + include/linux/linkage.h | 47 + include/linux/linux_logo.h | 37 + include/linux/list.h | 707 + include/linux/llc.h | 80 + include/linux/lockd/bind.h | 36 + include/linux/lockd/debug.h | 57 + include/linux/lockd/lockd.h | 224 + include/linux/lockd/nlm.h | 58 + include/linux/lockd/share.h | 30 + include/linux/lockd/sm_inter.h | 46 + include/linux/lockd/xdr.h | 108 + include/linux/lockd/xdr4.h | 46 + include/linux/loop.h | 161 + include/linux/lp.h | 191 + include/linux/major.h | 167 + include/linux/matroxfb.h | 43 + include/linux/mbcache.h | 52 + include/linux/mc146818rtc.h | 92 + include/linux/mc6821.h | 51 + include/linux/mca-legacy.h | 67 + include/linux/mca.h | 146 + include/linux/mempolicy.h | 229 + include/linux/mempool.h | 37 + include/linux/meye.h | 66 + include/linux/mii.h | 223 + include/linux/minix_fs.h | 85 + include/linux/miscdevice.h | 52 + include/linux/mm.h | 861 + include/linux/mm_inline.h | 40 + include/linux/mman.h | 67 + include/linux/mmc/card.h | 92 + include/linux/mmc/host.h | 108 + include/linux/mmc/mmc.h | 101 + include/linux/mmc/protocol.h | 213 + include/linux/mmtimer.h | 56 + include/linux/mmzone.h | 426 + include/linux/mod_devicetable.h | 178 + include/linux/module.h | 570 + include/linux/moduleloader.h | 47 + include/linux/moduleparam.h | 182 + include/linux/mount.h | 81 + include/linux/mpage.h | 31 + include/linux/mqueue.h | 55 + include/linux/mroute.h | 226 + include/linux/msdos_fs.h | 412 + include/linux/msg.h | 96 + include/linux/mtd/blktrans.h | 72 + include/linux/mtd/cfi.h | 394 + include/linux/mtd/cfi_endian.h | 57 + include/linux/mtd/compatmac.h | 10 + include/linux/mtd/concat.h | 23 + include/linux/mtd/doc2000.h | 195 + include/linux/mtd/flashchip.h | 89 + include/linux/mtd/ftl.h | 76 + include/linux/mtd/gen_probe.h | 23 + include/linux/mtd/iflash.h | 98 + include/linux/mtd/inftl.h | 57 + include/linux/mtd/jedec.h | 66 + include/linux/mtd/map.h | 412 + include/linux/mtd/mtd.h | 226 + include/linux/mtd/nand.h | 469 + include/linux/mtd/nand_ecc.h | 30 + include/linux/mtd/nftl.h | 54 + include/linux/mtd/partitions.h | 75 + include/linux/mtd/physmap.h | 61 + include/linux/mtd/pmc551.h | 79 + include/linux/mtd/xip.h | 107 + include/linux/mtio.h | 351 + include/linux/mv643xx.h | 1313 + include/linux/n_r3964.h | 226 + include/linux/namei.h | 87 + include/linux/namespace.h | 42 + include/linux/nbd.h | 91 + include/linux/ncp.h | 201 + include/linux/ncp_fs.h | 300 + include/linux/ncp_fs_i.h | 33 + include/linux/ncp_fs_sb.h | 157 + include/linux/ncp_mount.h | 93 + include/linux/ncp_no.h | 19 + include/linux/net.h | 287 + include/linux/netdevice.h | 933 + include/linux/netfilter.h | 199 + include/linux/netfilter_arp.h | 20 + include/linux/netfilter_arp/arp_tables.h | 340 + include/linux/netfilter_arp/arpt_mangle.h | 26 + include/linux/netfilter_bridge.h | 113 + include/linux/netfilter_bridge/ebt_802_3.h | 69 + include/linux/netfilter_bridge/ebt_among.h | 65 + include/linux/netfilter_bridge/ebt_arp.h | 32 + include/linux/netfilter_bridge/ebt_arpreply.h | 11 + include/linux/netfilter_bridge/ebt_ip.h | 43 + include/linux/netfilter_bridge/ebt_limit.h | 23 + include/linux/netfilter_bridge/ebt_log.h | 17 + include/linux/netfilter_bridge/ebt_mark_m.h | 15 + include/linux/netfilter_bridge/ebt_mark_t.h | 12 + include/linux/netfilter_bridge/ebt_nat.h | 13 + include/linux/netfilter_bridge/ebt_pkttype.h | 11 + include/linux/netfilter_bridge/ebt_redirect.h | 11 + include/linux/netfilter_bridge/ebt_stp.h | 46 + include/linux/netfilter_bridge/ebt_ulog.h | 36 + include/linux/netfilter_bridge/ebt_vlan.h | 20 + include/linux/netfilter_bridge/ebtables.h | 363 + include/linux/netfilter_decnet.h | 59 + include/linux/netfilter_ipv4.h | 90 + include/linux/netfilter_ipv4/ip_conntrack.h | 314 + .../netfilter_ipv4/ip_conntrack_amanda.h | 11 + .../linux/netfilter_ipv4/ip_conntrack_core.h | 52 + .../linux/netfilter_ipv4/ip_conntrack_ftp.h | 43 + .../netfilter_ipv4/ip_conntrack_helper.h | 41 + .../linux/netfilter_ipv4/ip_conntrack_icmp.h | 11 + .../linux/netfilter_ipv4/ip_conntrack_irc.h | 32 + .../netfilter_ipv4/ip_conntrack_protocol.h | 89 + .../linux/netfilter_ipv4/ip_conntrack_sctp.h | 25 + .../linux/netfilter_ipv4/ip_conntrack_tcp.h | 51 + .../linux/netfilter_ipv4/ip_conntrack_tftp.h | 20 + .../linux/netfilter_ipv4/ip_conntrack_tuple.h | 145 + include/linux/netfilter_ipv4/ip_logging.h | 20 + include/linux/netfilter_ipv4/ip_nat.h | 87 + include/linux/netfilter_ipv4/ip_nat_core.h | 20 + include/linux/netfilter_ipv4/ip_nat_helper.h | 33 + .../linux/netfilter_ipv4/ip_nat_protocol.h | 70 + include/linux/netfilter_ipv4/ip_nat_rule.h | 23 + include/linux/netfilter_ipv4/ip_queue.h | 72 + include/linux/netfilter_ipv4/ip_tables.h | 490 + include/linux/netfilter_ipv4/ipt_CLASSIFY.h | 8 + include/linux/netfilter_ipv4/ipt_CLUSTERIP.h | 32 + include/linux/netfilter_ipv4/ipt_CONNMARK.h | 25 + include/linux/netfilter_ipv4/ipt_DSCP.h | 20 + include/linux/netfilter_ipv4/ipt_ECN.h | 31 + include/linux/netfilter_ipv4/ipt_LOG.h | 16 + include/linux/netfilter_ipv4/ipt_MARK.h | 20 + include/linux/netfilter_ipv4/ipt_REJECT.h | 20 + include/linux/netfilter_ipv4/ipt_SAME.h | 19 + include/linux/netfilter_ipv4/ipt_TCPMSS.h | 10 + include/linux/netfilter_ipv4/ipt_TOS.h | 12 + include/linux/netfilter_ipv4/ipt_ULOG.h | 49 + include/linux/netfilter_ipv4/ipt_addrtype.h | 11 + include/linux/netfilter_ipv4/ipt_ah.h | 16 + include/linux/netfilter_ipv4/ipt_comment.h | 10 + include/linux/netfilter_ipv4/ipt_connmark.h | 18 + include/linux/netfilter_ipv4/ipt_conntrack.h | 60 + include/linux/netfilter_ipv4/ipt_dscp.h | 23 + include/linux/netfilter_ipv4/ipt_ecn.h | 33 + include/linux/netfilter_ipv4/ipt_esp.h | 16 + include/linux/netfilter_ipv4/ipt_hashlimit.h | 40 + include/linux/netfilter_ipv4/ipt_helper.h | 8 + include/linux/netfilter_ipv4/ipt_iprange.h | 23 + include/linux/netfilter_ipv4/ipt_length.h | 9 + include/linux/netfilter_ipv4/ipt_limit.h | 21 + include/linux/netfilter_ipv4/ipt_mac.h | 8 + include/linux/netfilter_ipv4/ipt_mark.h | 9 + include/linux/netfilter_ipv4/ipt_multiport.h | 30 + include/linux/netfilter_ipv4/ipt_owner.h | 20 + include/linux/netfilter_ipv4/ipt_physdev.h | 24 + include/linux/netfilter_ipv4/ipt_pkttype.h | 8 + include/linux/netfilter_ipv4/ipt_realm.h | 10 + include/linux/netfilter_ipv4/ipt_recent.h | 27 + include/linux/netfilter_ipv4/ipt_sctp.h | 107 + include/linux/netfilter_ipv4/ipt_state.h | 13 + include/linux/netfilter_ipv4/ipt_tcpmss.h | 9 + include/linux/netfilter_ipv4/ipt_tos.h | 13 + include/linux/netfilter_ipv4/ipt_ttl.h | 21 + include/linux/netfilter_ipv4/listhelp.h | 125 + include/linux/netfilter_ipv4/lockhelp.h | 129 + include/linux/netfilter_ipv6.h | 71 + include/linux/netfilter_ipv6/ip6_logging.h | 20 + include/linux/netfilter_ipv6/ip6_tables.h | 461 + include/linux/netfilter_ipv6/ip6t_LOG.h | 16 + include/linux/netfilter_ipv6/ip6t_MARK.h | 8 + include/linux/netfilter_ipv6/ip6t_ah.h | 30 + include/linux/netfilter_ipv6/ip6t_esp.h | 23 + include/linux/netfilter_ipv6/ip6t_frag.h | 33 + include/linux/netfilter_ipv6/ip6t_hl.h | 22 + .../linux/netfilter_ipv6/ip6t_ipv6header.h | 27 + include/linux/netfilter_ipv6/ip6t_length.h | 10 + include/linux/netfilter_ipv6/ip6t_limit.h | 21 + include/linux/netfilter_ipv6/ip6t_mac.h | 8 + include/linux/netfilter_ipv6/ip6t_mark.h | 9 + include/linux/netfilter_ipv6/ip6t_multiport.h | 21 + include/linux/netfilter_ipv6/ip6t_opts.h | 32 + include/linux/netfilter_ipv6/ip6t_owner.h | 18 + include/linux/netfilter_ipv6/ip6t_physdev.h | 24 + include/linux/netfilter_ipv6/ip6t_rt.h | 42 + include/linux/netfilter_logging.h | 33 + include/linux/netlink.h | 188 + include/linux/netpoll.h | 67 + include/linux/netrom.h | 34 + include/linux/nfs.h | 171 + include/linux/nfs2.h | 74 + include/linux/nfs3.h | 105 + include/linux/nfs4.h | 394 + include/linux/nfs4_acl.h | 59 + include/linux/nfs4_mount.h | 70 + include/linux/nfs_fs.h | 767 + include/linux/nfs_fs_i.h | 25 + include/linux/nfs_fs_sb.h | 58 + include/linux/nfs_idmap.h | 76 + include/linux/nfs_mount.h | 65 + include/linux/nfs_page.h | 151 + include/linux/nfs_xdr.h | 735 + include/linux/nfsd/auth.h | 27 + include/linux/nfsd/cache.h | 81 + include/linux/nfsd/const.h | 45 + include/linux/nfsd/debug.h | 48 + include/linux/nfsd/export.h | 137 + include/linux/nfsd/interface.h | 13 + include/linux/nfsd/nfsd.h | 311 + include/linux/nfsd/nfsfh.h | 343 + include/linux/nfsd/state.h | 298 + include/linux/nfsd/stats.h | 44 + include/linux/nfsd/syscall.h | 125 + include/linux/nfsd/xdr.h | 172 + include/linux/nfsd/xdr3.h | 321 + include/linux/nfsd/xdr4.h | 463 + include/linux/nfsd_idmap.h | 54 + include/linux/nls.h | 64 + include/linux/nmi.h | 22 + include/linux/node.h | 33 + include/linux/nodemask.h | 356 + include/linux/notifier.h | 75 + include/linux/nubus.h | 334 + include/linux/numa.h | 16 + include/linux/nvram.h | 27 + include/linux/openprom_fs.h | 10 + include/linux/oprofile.h | 119 + include/linux/page-flags.h | 324 + include/linux/pagemap.h | 246 + include/linux/pagevec.h | 85 + include/linux/param.h | 6 + include/linux/parport.h | 552 + include/linux/parport_pc.h | 238 + include/linux/parser.h | 33 + include/linux/pci-acpi.h | 61 + include/linux/pci-dynids.h | 18 + include/linux/pci.h | 1067 + include/linux/pci_ids.h | 2562 ++ include/linux/pcieport_if.h | 74 + include/linux/percpu.h | 61 + include/linux/percpu_counter.h | 107 + include/linux/personality.h | 114 + include/linux/pfkeyv2.h | 336 + include/linux/pg.h | 63 + include/linux/phonedev.h | 26 + include/linux/pid.h | 55 + include/linux/pipe_fs_i.h | 59 + include/linux/pkt_cls.h | 426 + include/linux/pkt_sched.h | 454 + include/linux/pktcdvd.h | 275 + include/linux/platform.h | 43 + include/linux/pm.h | 233 + include/linux/pmu.h | 240 + include/linux/pnp.h | 454 + include/linux/pnpbios.h | 157 + include/linux/poll.h | 99 + include/linux/posix-timers.h | 139 + include/linux/posix_acl.h | 86 + include/linux/posix_acl_xattr.h | 55 + include/linux/posix_types.h | 49 + include/linux/ppdev.h | 101 + include/linux/ppp-comp.h | 207 + include/linux/ppp_channel.h | 81 + include/linux/ppp_defs.h | 190 + include/linux/prctl.h | 55 + include/linux/preempt.h | 62 + include/linux/prefetch.h | 69 + include/linux/prio_tree.h | 120 + include/linux/proc_fs.h | 259 + include/linux/profile.h | 104 + include/linux/ps2esdi.h | 98 + include/linux/ptrace.h | 122 + include/linux/qic117.h | 290 + include/linux/qnx4_fs.h | 150 + include/linux/qnxtypes.h | 29 + include/linux/quota.h | 327 + include/linux/quotaio_v1.h | 33 + include/linux/quotaio_v2.h | 79 + include/linux/quotaops.h | 246 + include/linux/radeonfb.h | 15 + include/linux/radix-tree.h | 71 + include/linux/raid/linear.h | 27 + include/linux/raid/md.h | 84 + include/linux/raid/md_k.h | 369 + include/linux/raid/md_p.h | 230 + include/linux/raid/md_u.h | 117 + include/linux/raid/multipath.h | 42 + include/linux/raid/raid0.h | 30 + include/linux/raid/raid1.h | 98 + include/linux/raid/raid10.h | 103 + include/linux/raid/raid5.h | 243 + include/linux/raid/xor.h | 23 + include/linux/ramfs.h | 11 + include/linux/random.h | 72 + include/linux/raw.h | 18 + include/linux/rbtree.h | 141 + include/linux/rcupdate.h | 271 + include/linux/reboot.h | 56 + include/linux/reiserfs_acl.h | 89 + include/linux/reiserfs_fs.h | 2255 ++ include/linux/reiserfs_fs_i.h | 63 + include/linux/reiserfs_fs_sb.h | 535 + include/linux/reiserfs_xattr.h | 139 + include/linux/resource.h | 70 + include/linux/rmap.h | 118 + include/linux/romfs_fs.h | 61 + include/linux/root_dev.h | 21 + include/linux/rose.h | 87 + include/linux/route.h | 70 + include/linux/rslib.h | 105 + include/linux/rtc.h | 108 + include/linux/rtnetlink.h | 842 + include/linux/rwsem-spinlock.h | 65 + include/linux/rwsem.h | 115 + include/linux/sc26198.h | 533 + include/linux/scatterlist.h | 14 + include/linux/scc.h | 253 + include/linux/sched.h | 1273 + include/linux/sctp.h | 594 + include/linux/scx200.h | 58 + include/linux/scx200_gpio.h | 96 + include/linux/sdla.h | 339 + include/linux/sdla_asy.h | 226 + include/linux/sdla_chdlc.h | 813 + include/linux/sdla_fr.h | 638 + include/linux/sdla_ppp.h | 575 + include/linux/sdla_x25.h | 772 + include/linux/sdladrv.h | 70 + include/linux/sdlapci.h | 72 + include/linux/sdlasfm.h | 104 + include/linux/seccomp.h | 34 + include/linux/securebits.h | 30 + include/linux/security.h | 2858 ++ include/linux/selection.h | 40 + include/linux/selinux_netlink.h | 37 + include/linux/sem.h | 157 + include/linux/seq_file.h | 54 + include/linux/seqlock.h | 175 + include/linux/serial.h | 188 + include/linux/serial167.h | 171 + include/linux/serialP.h | 184 + include/linux/serial_8250.h | 28 + include/linux/serial_core.h | 491 + include/linux/serial_reg.h | 325 + include/linux/serio.h | 214 + include/linux/shm.h | 108 + include/linux/shmem_fs.h | 37 + include/linux/signal.h | 224 + include/linux/skbuff.h | 1253 + include/linux/slab.h | 129 + include/linux/smb.h | 117 + include/linux/smb_fs.h | 204 + include/linux/smb_fs_i.h | 39 + include/linux/smb_fs_sb.h | 101 + include/linux/smb_mount.h | 65 + include/linux/smbno.h | 363 + include/linux/smp.h | 139 + include/linux/smp_lock.h | 54 + include/linux/snmp.h | 266 + include/linux/socket.h | 295 + include/linux/sockios.h | 143 + include/linux/som.h | 154 + include/linux/sonet.h | 75 + include/linux/sonypi.h | 158 + include/linux/sort.h | 10 + include/linux/sound.h | 42 + include/linux/soundcard.h | 1298 + include/linux/spinlock.h | 606 + include/linux/stallion.h | 154 + include/linux/stat.h | 77 + include/linux/statfs.h | 22 + include/linux/stddef.h | 20 + include/linux/stop_machine.h | 52 + include/linux/string.h | 96 + include/linux/stringify.h | 12 + include/linux/sunrpc/auth.h | 149 + include/linux/sunrpc/auth_gss.h | 97 + include/linux/sunrpc/cache.h | 312 + include/linux/sunrpc/clnt.h | 153 + include/linux/sunrpc/debug.h | 99 + include/linux/sunrpc/gss_api.h | 122 + include/linux/sunrpc/gss_asn1.h | 81 + include/linux/sunrpc/gss_err.h | 177 + include/linux/sunrpc/gss_krb5.h | 148 + include/linux/sunrpc/gss_spkm3.h | 61 + include/linux/sunrpc/msg_prot.h | 80 + include/linux/sunrpc/rpc_pipe_fs.h | 50 + include/linux/sunrpc/sched.h | 273 + include/linux/sunrpc/stats.h | 78 + include/linux/sunrpc/svc.h | 306 + include/linux/sunrpc/svcauth.h | 167 + include/linux/sunrpc/svcauth_gss.h | 27 + include/linux/sunrpc/svcsock.h | 65 + include/linux/sunrpc/timer.h | 49 + include/linux/sunrpc/types.h | 22 + include/linux/sunrpc/xdr.h | 192 + include/linux/sunrpc/xprt.h | 232 + include/linux/superhyway.h | 79 + include/linux/suspend.h | 75 + include/linux/swap.h | 293 + include/linux/swapops.h | 69 + include/linux/synclink.h | 273 + include/linux/sys.h | 29 + include/linux/syscalls.h | 509 + include/linux/sysctl.h | 898 + include/linux/sysdev.h | 94 + include/linux/sysfs.h | 182 + include/linux/sysrq.h | 60 + include/linux/sysv_fs.h | 206 + include/linux/tc_act/tc_gact.h | 34 + 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/tc_ematch/tc_em_cmp.h | 26 + include/linux/tc_ematch/tc_em_meta.h | 69 + include/linux/tc_ematch/tc_em_nbyte.h | 13 + include/linux/tcp.h | 448 + include/linux/tcp_diag.h | 127 + include/linux/telephony.h | 266 + include/linux/termios.h | 7 + include/linux/thread_info.h | 92 + include/linux/threads.h | 36 + include/linux/ticable.h | 44 + include/linux/time.h | 181 + include/linux/timer.h | 102 + include/linux/times.h | 13 + include/linux/timex.h | 320 + include/linux/tiocl.h | 38 + include/linux/topology.h | 136 + include/linux/toshiba.h | 36 + include/linux/transport_class.h | 95 + include/linux/trdevice.h | 37 + include/linux/tty.h | 412 + include/linux/tty_driver.h | 279 + include/linux/tty_flip.h | 35 + include/linux/tty_ldisc.h | 154 + include/linux/types.h | 172 + include/linux/udf_fs.h | 59 + include/linux/udf_fs_i.h | 78 + include/linux/udf_fs_sb.h | 122 + include/linux/udp.h | 63 + include/linux/ufs_fs.h | 943 + include/linux/ufs_fs_i.h | 33 + include/linux/ufs_fs_sb.h | 38 + include/linux/uinput.h | 167 + include/linux/uio.h | 66 + include/linux/ultrasound.h | 103 + include/linux/umem.h | 138 + include/linux/un.h | 11 + include/linux/unistd.h | 11 + include/linux/usb.h | 1157 + include/linux/usb_cdc.h | 192 + include/linux/usb_ch9.h | 384 + include/linux/usb_gadget.h | 878 + include/linux/usb_gadgetfs.h | 75 + include/linux/usb_otg.h | 118 + include/linux/usb_sl811.h | 26 + include/linux/usbdevice_fs.h | 168 + include/linux/user.h | 1 + include/linux/utime.h | 9 + include/linux/uts.h | 19 + include/linux/utsname.h | 36 + include/linux/vermagic.h | 23 + include/linux/vfs.h | 6 + include/linux/via.h | 22 + include/linux/video_decoder.h | 44 + include/linux/video_encoder.h | 21 + include/linux/videodev.h | 443 + include/linux/videodev2.h | 977 + include/linux/videotext.h | 125 + include/linux/vmalloc.h | 54 + include/linux/vt.h | 54 + include/linux/vt_buffer.h | 64 + include/linux/vt_kern.h | 86 + include/linux/wait.h | 460 + include/linux/wanpipe.h | 492 + include/linux/wanrouter.h | 541 + include/linux/watchdog.h | 50 + include/linux/wavefront.h | 675 + include/linux/wireless.h | 773 + include/linux/workqueue.h | 90 + include/linux/writeback.h | 118 + include/linux/x25.h | 112 + include/linux/xattr.h | 33 + include/linux/xattr_acl.h | 50 + include/linux/xfrm.h | 258 + include/linux/yam.h | 82 + include/linux/zconf.h | 45 + include/linux/zftape.h | 87 + include/linux/zlib.h | 637 + include/linux/zorro.h | 329 + include/linux/zorro_ids.h | 552 + include/linux/zutil.h | 119 + include/math-emu/double.h | 205 + include/math-emu/extended.h | 396 + include/math-emu/op-1.h | 303 + include/math-emu/op-2.h | 613 + include/math-emu/op-4.h | 692 + include/math-emu/op-8.h | 107 + include/math-emu/op-common.h | 853 + include/math-emu/quad.h | 208 + include/math-emu/single.h | 116 + include/math-emu/soft-fp.h | 181 + include/media/audiochip.h | 35 + include/media/id.h | 37 + include/media/ir-common.h | 67 + include/media/ovcamchip.h | 104 + include/media/saa6752hs.h | 75 + include/media/saa7146.h | 452 + include/media/saa7146_vv.h | 270 + include/media/tuner.h | 199 + include/media/tveeprom.h | 23 + include/media/video-buf-dvb.h | 36 + include/media/video-buf.h | 260 + include/mtd/inftl-user.h | 91 + include/mtd/jffs2-user.h | 35 + include/mtd/mtd-abi.h | 103 + include/mtd/mtd-user.h | 20 + include/mtd/nftl-user.h | 76 + include/net/act_api.h | 116 + include/net/addrconf.h | 240 + include/net/af_unix.h | 78 + include/net/ah.h | 35 + include/net/arp.h | 32 + include/net/atmclip.h | 62 + include/net/ax25.h | 385 + include/net/bluetooth/bluetooth.h | 181 + include/net/bluetooth/hci.h | 755 + include/net/bluetooth/hci_core.h | 626 + include/net/bluetooth/l2cap.h | 238 + include/net/bluetooth/rfcomm.h | 353 + include/net/bluetooth/sco.h | 79 + include/net/checksum.h | 87 + include/net/compat.h | 39 + include/net/datalink.h | 18 + include/net/dn.h | 236 + include/net/dn_dev.h | 194 + include/net/dn_fib.h | 204 + include/net/dn_neigh.h | 28 + include/net/dn_nsp.h | 209 + include/net/dn_route.h | 112 + include/net/dsfield.h | 54 + include/net/dst.h | 279 + include/net/esp.h | 59 + include/net/flow.h | 95 + include/net/gen_stats.h | 49 + include/net/icmp.h | 60 + include/net/if_inet6.h | 285 + include/net/inet_common.h | 44 + include/net/inet_ecn.h | 108 + include/net/inetpeer.h | 66 + include/net/ip.h | 353 + include/net/ip6_checksum.h | 94 + include/net/ip6_fib.h | 185 + include/net/ip6_route.h | 141 + include/net/ip6_tunnel.h | 40 + include/net/ip_fib.h | 284 + include/net/ip_mp_alg.h | 99 + include/net/ip_vs.h | 999 + include/net/ipcomp.h | 11 + include/net/ipconfig.h | 27 + include/net/ipip.h | 51 + include/net/ipv6.h | 472 + include/net/ipx.h | 161 + include/net/irda/af_irda.h | 87 + include/net/irda/crc.h | 29 + include/net/irda/discovery.h | 100 + include/net/irda/ircomm_core.h | 108 + include/net/irda/ircomm_event.h | 85 + include/net/irda/ircomm_lmp.h | 38 + include/net/irda/ircomm_param.h | 149 + include/net/irda/ircomm_ttp.h | 39 + include/net/irda/ircomm_tty.h | 139 + include/net/irda/ircomm_tty_attach.h | 94 + include/net/irda/irda.h | 117 + include/net/irda/irda_device.h | 301 + include/net/irda/iriap.h | 108 + include/net/irda/iriap_event.h | 85 + include/net/irda/irias_object.h | 108 + include/net/irda/irlan_client.h | 42 + include/net/irda/irlan_common.h | 222 + include/net/irda/irlan_eth.h | 33 + include/net/irda/irlan_event.h | 81 + include/net/irda/irlan_filter.h | 33 + include/net/irda/irlan_provider.h | 52 + include/net/irda/irlap.h | 290 + include/net/irda/irlap_event.h | 131 + include/net/irda/irlap_frame.h | 142 + include/net/irda/irlmp.h | 295 + include/net/irda/irlmp_event.h | 98 + include/net/irda/irlmp_frame.h | 63 + include/net/irda/irmod.h | 109 + include/net/irda/irqueue.h | 96 + include/net/irda/irttp.h | 210 + include/net/irda/parameters.h | 102 + include/net/irda/qos.h | 104 + include/net/irda/timer.h | 104 + include/net/irda/wrapper.h | 58 + include/net/iw_handler.h | 540 + include/net/lapb.h | 152 + include/net/llc.h | 99 + include/net/llc_c_ac.h | 202 + include/net/llc_c_ev.h | 269 + include/net/llc_c_st.h | 48 + include/net/llc_conn.h | 119 + include/net/llc_if.h | 101 + include/net/llc_pdu.h | 436 + include/net/llc_s_ac.h | 39 + include/net/llc_s_ev.h | 67 + include/net/llc_s_st.h | 32 + include/net/llc_sap.h | 29 + include/net/ndisc.h | 135 + include/net/neighbour.h | 370 + include/net/netrom.h | 242 + include/net/p8022.h | 10 + include/net/pkt_act.h | 275 + include/net/pkt_cls.h | 366 + include/net/pkt_sched.h | 249 + include/net/protocol.h | 99 + include/net/psnap.h | 7 + include/net/raw.h | 42 + include/net/rawv6.h | 27 + include/net/rose.h | 235 + include/net/route.h | 205 + include/net/sch_generic.h | 175 + include/net/scm.h | 71 + include/net/sctp/command.h | 211 + include/net/sctp/constants.h | 432 + include/net/sctp/sctp.h | 620 + include/net/sctp/sm.h | 442 + include/net/sctp/structs.h | 1752 ++ include/net/sctp/tsnmap.h | 207 + include/net/sctp/ulpevent.h | 162 + include/net/sctp/ulpqueue.h | 92 + include/net/sctp/user.h | 589 + include/net/slhc_vj.h | 188 + include/net/snmp.h | 145 + include/net/sock.h | 1297 + include/net/syncppp.h | 105 + include/net/tc_act/tc_gact.h | 17 + 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 | 2022 ++ include/net/tcp_ecn.h | 126 + include/net/transp_v6.h | 53 + include/net/udp.h | 99 + include/net/x25.h | 273 + include/net/x25device.h | 17 + include/net/xfrm.h | 905 + include/pcmcia/bulkmem.h | 41 + include/pcmcia/ciscode.h | 123 + include/pcmcia/cisreg.h | 120 + include/pcmcia/cistpl.h | 605 + include/pcmcia/cs.h | 427 + include/pcmcia/cs_types.h | 52 + include/pcmcia/ds.h | 200 + include/pcmcia/mem_op.h | 116 + include/pcmcia/ss.h | 265 + include/pcmcia/version.h | 4 + include/rxrpc/call.h | 212 + include/rxrpc/connection.h | 83 + include/rxrpc/krxiod.h | 27 + include/rxrpc/krxsecd.h | 22 + include/rxrpc/krxtimod.h | 45 + include/rxrpc/message.h | 71 + include/rxrpc/packet.h | 127 + include/rxrpc/peer.h | 82 + include/rxrpc/rxrpc.h | 36 + include/rxrpc/transport.h | 106 + include/rxrpc/types.h | 41 + include/scsi/scsi.h | 412 + include/scsi/scsi_cmnd.h | 165 + include/scsi/scsi_dbg.h | 21 + include/scsi/scsi_device.h | 282 + include/scsi/scsi_devinfo.h | 31 + include/scsi/scsi_driver.h | 31 + include/scsi/scsi_eh.h | 63 + include/scsi/scsi_host.h | 642 + include/scsi/scsi_ioctl.h | 50 + include/scsi/scsi_request.h | 73 + include/scsi/scsi_tcq.h | 134 + include/scsi/scsi_transport.h | 48 + include/scsi/scsi_transport_fc.h | 442 + include/scsi/scsi_transport_iscsi.h | 178 + include/scsi/scsi_transport_spi.h | 135 + include/scsi/scsicam.h | 19 + include/scsi/sg.h | 326 + include/sound/ac97_codec.h | 598 + include/sound/ad1816a.h | 174 + include/sound/ad1848.h | 206 + include/sound/ainstr_fm.h | 130 + include/sound/ainstr_gf1.h | 225 + include/sound/ainstr_iw.h | 373 + include/sound/ainstr_simple.h | 156 + include/sound/ak4114.h | 205 + include/sound/ak4117.h | 191 + include/sound/ak4531_codec.h | 80 + include/sound/ak4xxx-adda.h | 69 + include/sound/asequencer.h | 908 + include/sound/asound.h | 927 + include/sound/asound_fm.h | 115 + include/sound/asoundef.h | 227 + include/sound/control.h | 162 + include/sound/core.h | 502 + include/sound/cs4231.h | 366 + include/sound/cs46xx.h | 1756 ++ include/sound/cs46xx_dsp_scb_types.h | 1216 + include/sound/cs46xx_dsp_spos.h | 233 + include/sound/cs46xx_dsp_task_types.h | 253 + include/sound/cs8403.h | 257 + include/sound/cs8427.h | 196 + include/sound/driver.h | 64 + include/sound/emu10k1.h | 1544 + include/sound/emu10k1_synth.h | 39 + include/sound/emu8000.h | 120 + include/sound/emu8000_reg.h | 207 + include/sound/emux_legacy.h | 146 + include/sound/emux_synth.h | 243 + include/sound/es1688.h | 123 + include/sound/gus.h | 718 + include/sound/hdsp.h | 110 + include/sound/hwdep.h | 73 + include/sound/i2c.h | 102 + include/sound/info.h | 193 + include/sound/initval.h | 103 + include/sound/memalloc.h | 118 + include/sound/minors.h | 89 + include/sound/mixer_oss.h | 76 + include/sound/mpu401.h | 115 + include/sound/opl3.h | 339 + include/sound/opl4.h | 32 + include/sound/pcm-indirect.h | 177 + include/sound/pcm.h | 1040 + include/sound/pcm_oss.h | 87 + include/sound/pcm_params.h | 366 + include/sound/rawmidi.h | 180 + include/sound/sb.h | 360 + include/sound/sb16_csp.h | 167 + include/sound/seq_device.h | 88 + include/sound/seq_instr.h | 112 + include/sound/seq_kernel.h | 191 + include/sound/seq_midi_emul.h | 195 + include/sound/seq_midi_event.h | 56 + include/sound/seq_oss.h | 102 + include/sound/seq_oss_legacy.h | 31 + include/sound/seq_virmidi.h | 84 + include/sound/sfnt_info.h | 214 + include/sound/snd_wavefront.h | 141 + include/sound/soundfont.h | 130 + include/sound/sscape_ioctl.h | 21 + include/sound/tea575x-tuner.h | 53 + include/sound/tea6330t.h | 42 + include/sound/timer.h | 157 + include/sound/trident.h | 479 + include/sound/uda1341.h | 233 + include/sound/util_mem.h | 64 + include/sound/version.h | 3 + include/sound/vx_core.h | 562 + include/sound/wavefront.h | 695 + include/sound/wavefront_fx.h | 9 + include/sound/ymfpci.h | 396 + include/video/aty128.h | 422 + include/video/cirrus.h | 122 + include/video/cvisionppc.h | 51 + include/video/edid.h | 27 + include/video/epson1355.h | 64 + include/video/gbe.h | 317 + include/video/iga.h | 24 + include/video/kyro.h | 92 + include/video/mach64.h | 1377 + include/video/maxinefb.h | 38 + include/video/neomagic.h | 207 + include/video/newport.h | 582 + include/video/permedia2.h | 233 + include/video/pm3fb.h | 1241 + include/video/pmag-ba-fb.h | 24 + include/video/pmagb-b-fb.h | 32 + include/video/radeon.h | 1985 ++ include/video/s1d13xxxfb.h | 166 + include/video/s3blit.h | 79 + include/video/sgivw.h | 682 + include/video/sisfb.h | 198 + include/video/sstfb.h | 354 + include/video/tdfx.h | 192 + include/video/tgafb.h | 238 + include/video/trident.h | 175 + include/video/tx3912.h | 62 + include/video/vga.h | 482 + include/video/w100fb.h | 21 + init/Kconfig | 463 + init/Makefile | 28 + init/calibrate.c | 79 + init/do_mounts.c | 430 + init/do_mounts.h | 92 + init/do_mounts_devfs.c | 137 + init/do_mounts_initrd.c | 121 + init/do_mounts_md.c | 290 + init/do_mounts_rd.c | 429 + init/initramfs.c | 500 + init/main.c | 713 + init/version.c | 33 + ipc/Makefile | 9 + ipc/compat.c | 687 + ipc/compat_mq.c | 146 + ipc/mqueue.c | 1252 + ipc/msg.c | 862 + ipc/msgutil.c | 127 + ipc/sem.c | 1384 + ipc/shm.c | 917 + ipc/util.c | 580 + ipc/util.h | 81 + kernel/Makefile | 53 + kernel/acct.c | 561 + kernel/audit.c | 839 + kernel/auditsc.c | 1015 + kernel/capability.c | 220 + kernel/compat.c | 860 + kernel/configs.c | 118 + kernel/cpu.c | 193 + kernel/cpuset.c | 1564 + kernel/dma.c | 158 + kernel/exec_domain.c | 209 + kernel/exit.c | 1527 + kernel/extable.c | 67 + kernel/fork.c | 1274 + kernel/futex.c | 798 + kernel/intermodule.c | 182 + kernel/irq/Makefile | 5 + kernel/irq/autoprobe.c | 189 + kernel/irq/handle.c | 193 + kernel/irq/internals.h | 18 + kernel/irq/manage.c | 349 + kernel/irq/proc.c | 159 + kernel/irq/spurious.c | 96 + kernel/itimer.c | 241 + kernel/kallsyms.c | 411 + kernel/kfifo.c | 168 + kernel/kmod.c | 256 + kernel/kprobes.c | 157 + kernel/ksysfs.c | 57 + kernel/kthread.c | 202 + kernel/module.c | 2108 ++ kernel/panic.c | 157 + kernel/params.c | 721 + kernel/pid.c | 292 + kernel/posix-cpu-timers.c | 1559 + kernel/posix-timers.c | 1584 + kernel/power/Kconfig | 74 + kernel/power/Makefile | 11 + kernel/power/console.c | 58 + kernel/power/disk.c | 431 + kernel/power/main.c | 269 + kernel/power/pm.c | 265 + kernel/power/power.h | 52 + kernel/power/poweroff.c | 45 + kernel/power/process.c | 121 + kernel/power/smp.c | 85 + kernel/power/swsusp.c | 1433 + kernel/printk.c | 996 + kernel/profile.c | 563 + kernel/ptrace.c | 389 + kernel/rcupdate.c | 470 + kernel/resource.c | 551 + kernel/sched.c | 5004 ++++ kernel/seccomp.c | 56 + kernel/signal.c | 2662 ++ kernel/softirq.c | 496 + kernel/spinlock.c | 371 + kernel/stop_machine.c | 212 + kernel/sys.c | 1725 ++ kernel/sys_ni.c | 86 + kernel/sysctl.c | 2337 ++ kernel/time.c | 599 + kernel/timer.c | 1611 + kernel/uid16.c | 196 + kernel/user.c | 189 + kernel/wait.c | 246 + kernel/workqueue.c | 555 + lib/Kconfig | 61 + lib/Kconfig.debug | 159 + lib/Makefile | 45 + lib/bitmap.c | 595 + lib/bust_spinlocks.c | 39 + lib/cmdline.c | 120 + lib/crc-ccitt.c | 69 + lib/crc32.c | 529 + lib/crc32defs.h | 32 + lib/ctype.c | 36 + lib/dec_and_lock.c | 40 + lib/div64.c | 61 + lib/dump_stack.c | 15 + lib/errno.c | 7 + lib/extable.c | 79 + lib/find_next_bit.c | 55 + lib/gen_crc32table.c | 82 + lib/halfmd4.c | 66 + lib/idr.c | 408 + lib/inflate.c | 1210 + lib/int_sqrt.c | 32 + lib/iomap.c | 212 + lib/kernel_lock.c | 264 + lib/kobject.c | 544 + lib/kobject_uevent.c | 369 + lib/kref.c | 64 + lib/libcrc32c.c | 200 + lib/parser.c | 220 + lib/prio_tree.c | 484 + lib/radix-tree.c | 807 + lib/rbtree.c | 394 + 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 + lib/rwsem-spinlock.c | 344 + lib/rwsem.c | 268 + lib/sha1.c | 96 + lib/sort.c | 119 + lib/string.c | 601 + lib/vsprintf.c | 846 + lib/zlib_deflate/Makefile | 11 + lib/zlib_deflate/deflate.c | 1268 + lib/zlib_deflate/deflate_syms.c | 21 + lib/zlib_deflate/deftree.c | 1113 + lib/zlib_deflate/defutil.h | 334 + lib/zlib_inflate/Makefile | 19 + lib/zlib_inflate/infblock.c | 361 + lib/zlib_inflate/infblock.h | 44 + lib/zlib_inflate/infcodes.c | 202 + lib/zlib_inflate/infcodes.h | 33 + lib/zlib_inflate/inffast.c | 176 + lib/zlib_inflate/inffast.h | 17 + lib/zlib_inflate/inflate.c | 248 + lib/zlib_inflate/inflate_syms.c | 22 + lib/zlib_inflate/inflate_sync.c | 148 + lib/zlib_inflate/inftrees.c | 412 + lib/zlib_inflate/inftrees.h | 64 + lib/zlib_inflate/infutil.c | 88 + lib/zlib_inflate/infutil.h | 197 + mm/Makefile | 20 + mm/bootmem.c | 400 + mm/fadvise.c | 111 + mm/filemap.c | 2306 ++ mm/fremap.c | 256 + mm/highmem.c | 607 + mm/hugetlb.c | 260 + mm/internal.h | 13 + mm/madvise.c | 242 + mm/memory.c | 2165 ++ mm/mempolicy.c | 1138 + mm/mempool.c | 290 + mm/mincore.c | 191 + mm/mlock.c | 253 + mm/mmap.c | 2082 ++ mm/mprotect.c | 282 + mm/mremap.c | 426 + mm/msync.c | 236 + mm/nommu.c | 1180 + mm/oom_kill.c | 292 + mm/page-writeback.c | 819 + mm/page_alloc.c | 2220 ++ mm/page_io.c | 160 + mm/pdflush.c | 228 + mm/prio_tree.c | 207 + mm/readahead.c | 557 + mm/rmap.c | 862 + mm/shmem.c | 2326 ++ mm/slab.c | 3060 ++ mm/swap.c | 485 + mm/swap_state.c | 382 + mm/swapfile.c | 1672 ++ mm/thrash.c | 102 + mm/tiny-shmem.c | 122 + mm/truncate.c | 336 + mm/vmalloc.c | 588 + mm/vmscan.c | 1311 + net/802/Makefile | 15 + net/802/fc.c | 130 + net/802/fddi.c | 210 + net/802/hippi.c | 234 + net/802/p8022.c | 65 + net/802/p8023.c | 61 + net/802/psnap.c | 159 + net/802/sysctl_net_802.c | 33 + net/802/tr.c | 645 + net/8021q/Makefile | 12 + net/8021q/vlan.c | 774 + net/8021q/vlan.h | 72 + net/8021q/vlan_dev.c | 890 + net/8021q/vlanproc.c | 357 + net/8021q/vlanproc.h | 19 + net/Kconfig | 646 + net/Makefile | 48 + net/TUNABLE | 50 + net/appletalk/Makefile | 9 + net/appletalk/aarp.c | 1069 + net/appletalk/atalk_proc.c | 321 + net/appletalk/ddp.c | 1931 ++ net/appletalk/dev.c | 43 + net/appletalk/sysctl_net_atalk.c | 83 + net/atm/Makefile | 18 + net/atm/addr.c | 134 + net/atm/addr.h | 18 + net/atm/atm_misc.c | 106 + net/atm/br2684.c | 824 + net/atm/clip.c | 1045 + net/atm/common.c | 804 + net/atm/common.h | 50 + net/atm/ioctl.c | 139 + net/atm/ipcommon.c | 61 + net/atm/ipcommon.h | 22 + net/atm/lec.c | 2538 ++ net/atm/lec.h | 142 + net/atm/lec_arpc.h | 92 + net/atm/mpc.c | 1514 + net/atm/mpc.h | 53 + net/atm/mpoa_caches.c | 576 + net/atm/mpoa_caches.h | 96 + net/atm/mpoa_proc.c | 305 + net/atm/pppoatm.c | 369 + net/atm/proc.c | 514 + net/atm/protocols.h | 13 + net/atm/pvc.c | 155 + net/atm/raw.c | 98 + net/atm/resources.c | 432 + net/atm/resources.h | 46 + net/atm/signaling.c | 280 + net/atm/signaling.h | 30 + net/atm/svc.c | 674 + net/ax25/Kconfig | 110 + net/ax25/Makefile | 11 + net/ax25/TODO | 24 + net/ax25/af_ax25.c | 2050 ++ net/ax25/ax25_addr.c | 290 + net/ax25/ax25_dev.c | 208 + net/ax25/ax25_ds_in.c | 305 + net/ax25/ax25_ds_subr.c | 212 + net/ax25/ax25_ds_timer.c | 241 + net/ax25/ax25_iface.c | 266 + net/ax25/ax25_in.c | 470 + net/ax25/ax25_ip.c | 225 + net/ax25/ax25_out.c | 383 + net/ax25/ax25_route.c | 534 + net/ax25/ax25_std_in.c | 449 + net/ax25/ax25_std_subr.c | 88 + net/ax25/ax25_std_timer.c | 177 + net/ax25/ax25_subr.c | 295 + net/ax25/ax25_timer.c | 243 + net/ax25/ax25_uid.c | 228 + net/ax25/sysctl_net_ax25.c | 262 + net/bluetooth/Kconfig | 63 + net/bluetooth/Makefile | 13 + net/bluetooth/af_bluetooth.c | 355 + net/bluetooth/bnep/Kconfig | 24 + net/bluetooth/bnep/Makefile | 7 + net/bluetooth/bnep/bnep.h | 184 + net/bluetooth/bnep/core.c | 713 + net/bluetooth/bnep/netdev.c | 247 + net/bluetooth/bnep/sock.c | 237 + net/bluetooth/cmtp/Kconfig | 11 + net/bluetooth/cmtp/Makefile | 7 + net/bluetooth/cmtp/capi.c | 600 + net/bluetooth/cmtp/cmtp.h | 135 + net/bluetooth/cmtp/core.c | 504 + net/bluetooth/cmtp/sock.c | 226 + net/bluetooth/hci_conn.c | 471 + net/bluetooth/hci_core.c | 1434 + net/bluetooth/hci_event.c | 1044 + net/bluetooth/hci_sock.c | 707 + net/bluetooth/hci_sysfs.c | 153 + net/bluetooth/hidp/Kconfig | 12 + net/bluetooth/hidp/Makefile | 7 + net/bluetooth/hidp/core.c | 772 + net/bluetooth/hidp/hidp.h | 167 + net/bluetooth/hidp/sock.c | 232 + net/bluetooth/l2cap.c | 2329 ++ net/bluetooth/lib.c | 178 + net/bluetooth/rfcomm/Kconfig | 17 + net/bluetooth/rfcomm/Makefile | 8 + net/bluetooth/rfcomm/core.c | 2127 ++ net/bluetooth/rfcomm/crc.c | 71 + net/bluetooth/rfcomm/sock.c | 1010 + net/bluetooth/rfcomm/tty.c | 930 + net/bluetooth/sco.c | 1071 + net/bridge/Makefile | 15 + net/bridge/br.c | 69 + net/bridge/br_device.c | 104 + net/bridge/br_fdb.c | 368 + net/bridge/br_forward.c | 159 + net/bridge/br_if.c | 388 + net/bridge/br_input.c | 144 + net/bridge/br_ioctl.c | 410 + net/bridge/br_netfilter.c | 1087 + net/bridge/br_notify.c | 87 + net/bridge/br_private.h | 244 + net/bridge/br_private_stp.h | 58 + net/bridge/br_stp.c | 459 + net/bridge/br_stp_bpdu.c | 205 + net/bridge/br_stp_if.c | 225 + net/bridge/br_stp_timer.c | 188 + net/bridge/br_sysfs_br.c | 364 + net/bridge/br_sysfs_if.c | 269 + net/bridge/netfilter/Kconfig | 211 + net/bridge/netfilter/Makefile | 32 + net/bridge/netfilter/ebt_802_3.c | 73 + net/bridge/netfilter/ebt_among.c | 228 + net/bridge/netfilter/ebt_arp.c | 140 + net/bridge/netfilter/ebt_arpreply.c | 97 + net/bridge/netfilter/ebt_dnat.c | 76 + net/bridge/netfilter/ebt_ip.c | 122 + net/bridge/netfilter/ebt_limit.c | 113 + net/bridge/netfilter/ebt_log.c | 171 + net/bridge/netfilter/ebt_mark.c | 68 + net/bridge/netfilter/ebt_mark_m.c | 62 + net/bridge/netfilter/ebt_pkttype.c | 59 + net/bridge/netfilter/ebt_redirect.c | 81 + net/bridge/netfilter/ebt_snat.c | 76 + net/bridge/netfilter/ebt_stp.c | 194 + net/bridge/netfilter/ebt_ulog.c | 295 + net/bridge/netfilter/ebt_vlan.c | 195 + net/bridge/netfilter/ebtable_broute.c | 86 + net/bridge/netfilter/ebtable_filter.c | 123 + net/bridge/netfilter/ebtable_nat.c | 130 + net/bridge/netfilter/ebtables.c | 1507 + net/compat.c | 605 + net/core/Makefile | 17 + net/core/datagram.c | 482 + net/core/dev.c | 3359 +++ net/core/dev_mcast.c | 299 + net/core/dst.c | 276 + net/core/dv.c | 548 + net/core/ethtool.c | 819 + net/core/filter.c | 432 + net/core/flow.c | 371 + net/core/gen_estimator.c | 250 + net/core/gen_stats.c | 239 + net/core/iovec.c | 239 + net/core/link_watch.c | 137 + net/core/neighbour.c | 2362 ++ net/core/net-sysfs.c | 461 + net/core/netfilter.c | 799 + net/core/netpoll.c | 735 + net/core/pktgen.c | 3132 ++ net/core/rtnetlink.c | 711 + net/core/scm.c | 291 + net/core/skbuff.c | 1460 + net/core/sock.c | 1565 + net/core/stream.c | 287 + net/core/sysctl_net_core.c | 182 + net/core/utils.c | 155 + net/core/wireless.c | 1459 + net/decnet/Kconfig | 27 + net/decnet/Makefile | 10 + net/decnet/README | 8 + net/decnet/TODO | 41 + net/decnet/af_decnet.c | 2405 ++ net/decnet/dn_dev.c | 1481 + net/decnet/dn_fib.c | 802 + net/decnet/dn_neigh.c | 627 + net/decnet/dn_nsp_in.c | 934 + net/decnet/dn_nsp_out.c | 782 + net/decnet/dn_route.c | 1840 ++ net/decnet/dn_rules.c | 416 + net/decnet/dn_table.c | 825 + net/decnet/dn_timer.c | 109 + net/decnet/netfilter/Kconfig | 15 + net/decnet/netfilter/Makefile | 6 + net/decnet/netfilter/dn_rtmsg.c | 167 + net/decnet/sysctl_net_decnet.c | 480 + net/econet/Makefile | 7 + net/econet/af_econet.c | 1129 + net/ethernet/Makefile | 8 + net/ethernet/eth.c | 308 + net/ethernet/pe2.c | 40 + net/ethernet/sysctl_net_ether.c | 13 + net/ipv4/Kconfig | 411 + net/ipv4/Makefile | 33 + net/ipv4/af_inet.c | 1188 + net/ipv4/ah4.c | 335 + net/ipv4/arp.c | 1425 + net/ipv4/datagram.c | 73 + net/ipv4/devinet.c | 1508 + net/ipv4/esp4.c | 510 + net/ipv4/fib_frontend.c | 611 + net/ipv4/fib_hash.c | 1086 + net/ipv4/fib_lookup.h | 43 + net/ipv4/fib_rules.c | 437 + net/ipv4/fib_semantics.c | 1332 + net/ipv4/icmp.c | 1143 + net/ipv4/igmp.c | 2473 ++ net/ipv4/inetpeer.c | 460 + net/ipv4/ip_forward.c | 127 + net/ipv4/ip_fragment.c | 691 + net/ipv4/ip_gre.c | 1290 + net/ipv4/ip_input.c | 431 + net/ipv4/ip_options.c | 625 + net/ipv4/ip_output.c | 1359 + net/ipv4/ip_sockglue.c | 1093 + net/ipv4/ipcomp.c | 524 + net/ipv4/ipconfig.c | 1507 + net/ipv4/ipip.c | 905 + net/ipv4/ipmr.c | 1900 ++ net/ipv4/ipvs/Kconfig | 244 + net/ipv4/ipvs/Makefile | 34 + net/ipv4/ipvs/ip_vs_app.c | 658 + net/ipv4/ipvs/ip_vs_conn.c | 920 + net/ipv4/ipvs/ip_vs_core.c | 1191 + net/ipv4/ipvs/ip_vs_ctl.c | 2391 ++ net/ipv4/ipvs/ip_vs_dh.c | 258 + net/ipv4/ipvs/ip_vs_est.c | 200 + net/ipv4/ipvs/ip_vs_ftp.c | 400 + net/ipv4/ipvs/ip_vs_lblc.c | 624 + net/ipv4/ipvs/ip_vs_lblcr.c | 888 + net/ipv4/ipvs/ip_vs_lc.c | 123 + net/ipv4/ipvs/ip_vs_nq.c | 161 + net/ipv4/ipvs/ip_vs_proto.c | 244 + net/ipv4/ipvs/ip_vs_proto_ah.c | 177 + net/ipv4/ipvs/ip_vs_proto_esp.c | 175 + net/ipv4/ipvs/ip_vs_proto_icmp.c | 182 + net/ipv4/ipvs/ip_vs_proto_tcp.c | 640 + net/ipv4/ipvs/ip_vs_proto_udp.c | 427 + net/ipv4/ipvs/ip_vs_rr.c | 118 + net/ipv4/ipvs/ip_vs_sched.c | 251 + net/ipv4/ipvs/ip_vs_sed.c | 163 + net/ipv4/ipvs/ip_vs_sh.c | 255 + net/ipv4/ipvs/ip_vs_sync.c | 892 + net/ipv4/ipvs/ip_vs_wlc.c | 151 + net/ipv4/ipvs/ip_vs_wrr.c | 235 + net/ipv4/ipvs/ip_vs_xmit.c | 563 + net/ipv4/multipath.c | 55 + net/ipv4/multipath_drr.c | 265 + net/ipv4/multipath_random.c | 128 + net/ipv4/multipath_rr.c | 115 + net/ipv4/multipath_wrandom.c | 344 + net/ipv4/netfilter/Kconfig | 696 + net/ipv4/netfilter/Makefile | 89 + net/ipv4/netfilter/arp_tables.c | 1333 + net/ipv4/netfilter/arpt_mangle.c | 104 + net/ipv4/netfilter/arptable_filter.c | 214 + net/ipv4/netfilter/ip_conntrack_amanda.c | 167 + net/ipv4/netfilter/ip_conntrack_core.c | 1247 + net/ipv4/netfilter/ip_conntrack_ftp.c | 501 + net/ipv4/netfilter/ip_conntrack_irc.c | 313 + .../netfilter/ip_conntrack_proto_generic.c | 75 + net/ipv4/netfilter/ip_conntrack_proto_icmp.c | 279 + net/ipv4/netfilter/ip_conntrack_proto_sctp.c | 649 + net/ipv4/netfilter/ip_conntrack_proto_tcp.c | 1098 + net/ipv4/netfilter/ip_conntrack_proto_udp.c | 146 + net/ipv4/netfilter/ip_conntrack_standalone.c | 961 + net/ipv4/netfilter/ip_conntrack_tftp.c | 159 + net/ipv4/netfilter/ip_nat_amanda.c | 88 + net/ipv4/netfilter/ip_nat_core.c | 556 + net/ipv4/netfilter/ip_nat_ftp.c | 183 + net/ipv4/netfilter/ip_nat_helper.c | 430 + net/ipv4/netfilter/ip_nat_irc.c | 125 + net/ipv4/netfilter/ip_nat_proto_icmp.c | 115 + net/ipv4/netfilter/ip_nat_proto_tcp.c | 178 + net/ipv4/netfilter/ip_nat_proto_udp.c | 165 + net/ipv4/netfilter/ip_nat_proto_unknown.c | 70 + net/ipv4/netfilter/ip_nat_rule.c | 319 + net/ipv4/netfilter/ip_nat_snmp_basic.c | 1347 + net/ipv4/netfilter/ip_nat_standalone.c | 349 + net/ipv4/netfilter/ip_nat_tftp.c | 70 + net/ipv4/netfilter/ip_queue.c | 741 + net/ipv4/netfilter/ip_tables.c | 1964 ++ net/ipv4/netfilter/ipt_CLASSIFY.c | 92 + net/ipv4/netfilter/ipt_CLUSTERIP.c | 761 + net/ipv4/netfilter/ipt_CONNMARK.c | 118 + net/ipv4/netfilter/ipt_DSCP.c | 106 + net/ipv4/netfilter/ipt_ECN.c | 175 + net/ipv4/netfilter/ipt_LOG.c | 485 + net/ipv4/netfilter/ipt_MARK.c | 162 + net/ipv4/netfilter/ipt_MASQUERADE.c | 207 + net/ipv4/netfilter/ipt_NETMAP.c | 117 + net/ipv4/netfilter/ipt_NOTRACK.c | 76 + net/ipv4/netfilter/ipt_REDIRECT.c | 129 + net/ipv4/netfilter/ipt_REJECT.c | 335 + net/ipv4/netfilter/ipt_SAME.c | 211 + net/ipv4/netfilter/ipt_TCPMSS.c | 262 + net/ipv4/netfilter/ipt_TOS.c | 105 + net/ipv4/netfilter/ipt_ULOG.c | 419 + net/ipv4/netfilter/ipt_addrtype.c | 77 + net/ipv4/netfilter/ipt_ah.c | 117 + net/ipv4/netfilter/ipt_comment.c | 59 + net/ipv4/netfilter/ipt_connmark.c | 81 + net/ipv4/netfilter/ipt_conntrack.c | 136 + net/ipv4/netfilter/ipt_dscp.c | 63 + net/ipv4/netfilter/ipt_ecn.c | 131 + net/ipv4/netfilter/ipt_esp.c | 118 + net/ipv4/netfilter/ipt_hashlimit.c | 731 + net/ipv4/netfilter/ipt_helper.c | 113 + net/ipv4/netfilter/ipt_iprange.c | 99 + net/ipv4/netfilter/ipt_length.c | 64 + net/ipv4/netfilter/ipt_limit.c | 157 + net/ipv4/netfilter/ipt_mac.c | 79 + net/ipv4/netfilter/ipt_mark.c | 64 + net/ipv4/netfilter/ipt_multiport.c | 212 + net/ipv4/netfilter/ipt_owner.c | 217 + net/ipv4/netfilter/ipt_physdev.c | 134 + net/ipv4/netfilter/ipt_pkttype.c | 70 + net/ipv4/netfilter/ipt_realm.c | 76 + net/ipv4/netfilter/ipt_recent.c | 1002 + net/ipv4/netfilter/ipt_sctp.c | 203 + net/ipv4/netfilter/ipt_state.c | 74 + net/ipv4/netfilter/ipt_tcpmss.c | 127 + net/ipv4/netfilter/ipt_tos.c | 64 + net/ipv4/netfilter/ipt_ttl.c | 79 + net/ipv4/netfilter/iptable_filter.c | 194 + net/ipv4/netfilter/iptable_mangle.c | 260 + net/ipv4/netfilter/iptable_raw.c | 156 + net/ipv4/proc.c | 382 + net/ipv4/protocol.c | 101 + net/ipv4/raw.c | 888 + net/ipv4/route.c | 3177 ++ net/ipv4/syncookies.c | 279 + net/ipv4/sysctl_net_ipv4.c | 698 + net/ipv4/tcp.c | 2386 ++ net/ipv4/tcp_diag.c | 802 + net/ipv4/tcp_input.c | 4959 ++++ net/ipv4/tcp_ipv4.c | 2663 ++ net/ipv4/tcp_minisocks.c | 1077 + net/ipv4/tcp_output.c | 1739 ++ net/ipv4/tcp_timer.c | 656 + net/ipv4/udp.c | 1575 + net/ipv4/utils.c | 59 + net/ipv4/xfrm4_input.c | 160 + net/ipv4/xfrm4_output.c | 141 + net/ipv4/xfrm4_policy.c | 281 + net/ipv4/xfrm4_state.c | 126 + net/ipv4/xfrm4_tunnel.c | 144 + net/ipv6/Kconfig | 79 + net/ipv6/Makefile | 25 + net/ipv6/addrconf.c | 3615 +++ net/ipv6/af_inet6.c | 867 + net/ipv6/ah6.c | 478 + net/ipv6/anycast.c | 594 + net/ipv6/datagram.c | 600 + net/ipv6/esp6.c | 424 + net/ipv6/exthdrs.c | 575 + net/ipv6/exthdrs_core.c | 109 + net/ipv6/icmp.c | 822 + net/ipv6/ip6_fib.c | 1225 + net/ipv6/ip6_flowlabel.c | 706 + net/ipv6/ip6_input.c | 269 + net/ipv6/ip6_output.c | 1197 + net/ipv6/ip6_tunnel.c | 1163 + net/ipv6/ipcomp6.c | 524 + net/ipv6/ipv6_sockglue.c | 704 + net/ipv6/ipv6_syms.c | 41 + net/ipv6/mcast.c | 2499 ++ net/ipv6/ndisc.c | 1690 ++ net/ipv6/netfilter/Kconfig | 242 + net/ipv6/netfilter/Makefile | 26 + net/ipv6/netfilter/ip6_queue.c | 741 + net/ipv6/netfilter/ip6_tables.c | 1970 ++ net/ipv6/netfilter/ip6t_LOG.c | 509 + net/ipv6/netfilter/ip6t_MARK.c | 78 + net/ipv6/netfilter/ip6t_ah.c | 208 + net/ipv6/netfilter/ip6t_dst.c | 298 + net/ipv6/netfilter/ip6t_esp.c | 181 + net/ipv6/netfilter/ip6t_eui64.c | 101 + net/ipv6/netfilter/ip6t_frag.c | 229 + net/ipv6/netfilter/ip6t_hbh.c | 298 + net/ipv6/netfilter/ip6t_hl.c | 80 + net/ipv6/netfilter/ip6t_ipv6header.c | 167 + net/ipv6/netfilter/ip6t_length.c | 66 + net/ipv6/netfilter/ip6t_limit.c | 147 + net/ipv6/netfilter/ip6t_mac.c | 80 + net/ipv6/netfilter/ip6t_mark.c | 66 + net/ipv6/netfilter/ip6t_multiport.c | 125 + net/ipv6/netfilter/ip6t_owner.c | 174 + net/ipv6/netfilter/ip6t_physdev.c | 135 + net/ipv6/netfilter/ip6t_rt.c | 301 + net/ipv6/netfilter/ip6table_filter.c | 214 + net/ipv6/netfilter/ip6table_mangle.c | 287 + net/ipv6/netfilter/ip6table_raw.c | 182 + net/ipv6/proc.c | 303 + net/ipv6/protocol.c | 86 + net/ipv6/raw.c | 1157 + net/ipv6/reassembly.c | 771 + net/ipv6/route.c | 2131 ++ net/ipv6/sit.c | 833 + net/ipv6/sysctl_net_ipv6.c | 125 + net/ipv6/tcp_ipv6.c | 2265 ++ net/ipv6/udp.c | 1075 + net/ipv6/xfrm6_input.c | 150 + net/ipv6/xfrm6_output.c | 143 + net/ipv6/xfrm6_policy.c | 295 + net/ipv6/xfrm6_state.c | 136 + net/ipv6/xfrm6_tunnel.c | 543 + net/ipx/ChangeLog | 101 + net/ipx/Kconfig | 31 + net/ipx/Makefile | 8 + net/ipx/af_ipx.c | 2024 ++ net/ipx/ipx_proc.c | 408 + net/ipx/ipx_route.c | 293 + net/ipx/sysctl_net_ipx.c | 62 + net/irda/Kconfig | 96 + net/irda/Makefile | 15 + net/irda/af_irda.c | 2586 ++ net/irda/discovery.c | 419 + net/irda/ircomm/Kconfig | 12 + net/irda/ircomm/Makefile | 8 + net/irda/ircomm/ircomm_core.c | 587 + net/irda/ircomm/ircomm_event.c | 251 + net/irda/ircomm/ircomm_lmp.c | 372 + net/irda/ircomm/ircomm_param.c | 511 + net/irda/ircomm/ircomm_ttp.c | 369 + net/irda/ircomm/ircomm_tty.c | 1405 + net/irda/ircomm/ircomm_tty_attach.c | 1006 + net/irda/ircomm/ircomm_tty_ioctl.c | 428 + net/irda/irda_device.c | 489 + net/irda/iriap.c | 1089 + net/irda/iriap_event.c | 502 + net/irda/irias_object.c | 580 + net/irda/irlan/Kconfig | 14 + net/irda/irlan/Makefile | 7 + net/irda/irlan/irlan_client.c | 576 + net/irda/irlan/irlan_client_event.c | 533 + net/irda/irlan/irlan_common.c | 1200 + net/irda/irlan/irlan_eth.c | 387 + net/irda/irlan/irlan_event.c | 60 + net/irda/irlan/irlan_filter.c | 246 + net/irda/irlan/irlan_provider.c | 413 + net/irda/irlan/irlan_provider_event.c | 241 + net/irda/irlap.c | 1258 + net/irda/irlap_event.c | 2334 ++ net/irda/irlap_frame.c | 1437 + net/irda/irlmp.c | 2041 ++ net/irda/irlmp_event.c | 912 + net/irda/irlmp_frame.c | 491 + net/irda/irmod.c | 185 + net/irda/irnet/Kconfig | 13 + net/irda/irnet/Makefile | 7 + net/irda/irnet/irnet.h | 529 + net/irda/irnet/irnet_irda.c | 1866 ++ net/irda/irnet/irnet_irda.h | 186 + net/irda/irnet/irnet_ppp.c | 1142 + net/irda/irnet/irnet_ppp.h | 119 + net/irda/irproc.c | 100 + net/irda/irqueue.c | 915 + net/irda/irsysctl.c | 297 + net/irda/irttp.c | 1912 ++ net/irda/parameters.c | 589 + net/irda/qos.c | 774 + net/irda/timer.c | 233 + net/irda/wrapper.c | 491 + net/key/Makefile | 5 + net/key/af_key.c | 2903 ++ net/lapb/Makefile | 7 + net/lapb/lapb_iface.c | 449 + net/lapb/lapb_in.c | 724 + net/lapb/lapb_out.c | 224 + net/lapb/lapb_subr.c | 313 + net/lapb/lapb_timer.c | 189 + net/llc/Kconfig | 10 + net/llc/Makefile | 24 + net/llc/af_llc.c | 1079 + net/llc/llc_c_ac.c | 1514 + net/llc/llc_c_ev.c | 769 + net/llc/llc_c_st.c | 4946 +++ net/llc/llc_conn.c | 915 + net/llc/llc_core.c | 179 + net/llc/llc_if.c | 157 + net/llc/llc_input.c | 189 + net/llc/llc_output.c | 107 + net/llc/llc_output.h | 20 + net/llc/llc_pdu.c | 372 + net/llc/llc_proc.c | 267 + net/llc/llc_s_ac.c | 205 + net/llc/llc_s_ev.c | 115 + net/llc/llc_s_st.c | 183 + net/llc/llc_sap.c | 316 + net/llc/llc_station.c | 713 + net/netlink/Makefile | 5 + net/netlink/af_netlink.c | 1454 + net/netrom/Makefile | 9 + net/netrom/af_netrom.c | 1485 + net/netrom/nr_dev.c | 220 + net/netrom/nr_in.c | 290 + net/netrom/nr_loopback.c | 76 + net/netrom/nr_out.c | 274 + net/netrom/nr_route.c | 1041 + net/netrom/nr_subr.c | 283 + net/netrom/nr_timer.c | 260 + net/netrom/sysctl_net_netrom.c | 189 + net/nonet.c | 30 + net/packet/Makefile | 5 + net/packet/af_packet.c | 1907 ++ net/rose/Makefile | 9 + net/rose/af_rose.c | 1589 + net/rose/rose_dev.c | 154 + net/rose/rose_in.c | 297 + net/rose/rose_link.c | 288 + net/rose/rose_loopback.c | 111 + net/rose/rose_out.c | 126 + net/rose/rose_route.c | 1343 + net/rose/rose_subr.c | 519 + net/rose/rose_timer.c | 216 + net/rose/sysctl_net_rose.c | 169 + net/rxrpc/Makefile | 25 + net/rxrpc/call.c | 2278 ++ net/rxrpc/connection.c | 778 + net/rxrpc/internal.h | 106 + net/rxrpc/krxiod.c | 261 + net/rxrpc/krxsecd.c | 270 + net/rxrpc/krxtimod.c | 203 + net/rxrpc/main.c | 180 + net/rxrpc/peer.c | 399 + net/rxrpc/proc.c | 617 + net/rxrpc/rxrpc_syms.c | 35 + net/rxrpc/sysctl.c | 122 + net/rxrpc/transport.c | 854 + net/sched/Kconfig | 508 + net/sched/Makefile | 41 + net/sched/act_api.c | 894 + net/sched/cls_api.c | 642 + net/sched/cls_basic.c | 303 + net/sched/cls_fw.c | 378 + net/sched/cls_route.c | 639 + net/sched/cls_rsvp.c | 43 + net/sched/cls_rsvp.h | 667 + net/sched/cls_rsvp6.c | 44 + net/sched/cls_tcindex.c | 537 + net/sched/cls_u32.c | 828 + net/sched/em_cmp.c | 101 + net/sched/em_meta.c | 661 + net/sched/em_nbyte.c | 82 + net/sched/em_u32.c | 63 + net/sched/ematch.c | 524 + net/sched/estimator.c | 197 + net/sched/gact.c | 231 + net/sched/ipt.c | 326 + net/sched/mirred.c | 276 + net/sched/pedit.c | 288 + net/sched/police.c | 612 + net/sched/sch_api.c | 1296 + net/sched/sch_atm.c | 735 + net/sched/sch_cbq.c | 2124 ++ net/sched/sch_dsmark.c | 479 + net/sched/sch_fifo.c | 212 + net/sched/sch_generic.c | 609 + net/sched/sch_gred.c | 630 + net/sched/sch_hfsc.c | 1822 ++ net/sched/sch_htb.c | 1759 ++ net/sched/sch_ingress.c | 436 + net/sched/sch_netem.c | 598 + net/sched/sch_prio.c | 444 + net/sched/sch_red.c | 459 + net/sched/sch_sfq.c | 497 + net/sched/sch_tbf.c | 543 + net/sched/sch_teql.c | 511 + net/sctp/Kconfig | 89 + net/sctp/Makefile | 17 + net/sctp/associola.c | 1205 + net/sctp/bind_addr.c | 417 + net/sctp/chunk.c | 309 + net/sctp/command.c | 81 + net/sctp/crc32c.c | 220 + net/sctp/debug.c | 191 + net/sctp/endpointola.c | 389 + net/sctp/input.c | 913 + net/sctp/inqueue.c | 204 + net/sctp/ipv6.c | 1013 + net/sctp/objcnt.c | 140 + net/sctp/output.c | 646 + net/sctp/outqueue.c | 1734 ++ net/sctp/primitive.c | 219 + net/sctp/proc.c | 288 + net/sctp/protocol.c | 1240 + net/sctp/sm_make_chunk.c | 2766 ++ net/sctp/sm_sideeffect.c | 1395 + net/sctp/sm_statefuns.c | 5238 ++++ net/sctp/sm_statetable.c | 1004 + net/sctp/socket.c | 4797 +++ net/sctp/ssnmap.c | 131 + net/sctp/sysctl.c | 251 + net/sctp/transport.c | 514 + net/sctp/tsnmap.c | 417 + net/sctp/ulpevent.c | 942 + net/sctp/ulpqueue.c | 864 + net/socket.c | 2088 ++ net/sunrpc/Makefile | 15 + net/sunrpc/auth.c | 395 + net/sunrpc/auth_gss/Makefile | 18 + net/sunrpc/auth_gss/auth_gss.c | 1152 + net/sunrpc/auth_gss/gss_generic_token.c | 235 + net/sunrpc/auth_gss/gss_krb5_crypto.c | 209 + net/sunrpc/auth_gss/gss_krb5_mech.c | 275 + net/sunrpc/auth_gss/gss_krb5_seal.c | 176 + net/sunrpc/auth_gss/gss_krb5_seqnum.c | 88 + net/sunrpc/auth_gss/gss_krb5_unseal.c | 202 + net/sunrpc/auth_gss/gss_mech_switch.c | 301 + net/sunrpc/auth_gss/gss_spkm3_mech.c | 300 + net/sunrpc/auth_gss/gss_spkm3_seal.c | 132 + net/sunrpc/auth_gss/gss_spkm3_token.c | 266 + net/sunrpc/auth_gss/gss_spkm3_unseal.c | 128 + net/sunrpc/auth_gss/svcauth_gss.c | 1080 + net/sunrpc/auth_null.c | 143 + net/sunrpc/auth_unix.c | 242 + net/sunrpc/cache.c | 1189 + net/sunrpc/clnt.c | 1085 + net/sunrpc/pmap_clnt.c | 298 + net/sunrpc/rpc_pipe.c | 838 + net/sunrpc/sched.c | 1119 + net/sunrpc/stats.c | 175 + net/sunrpc/sunrpc_syms.c | 185 + net/sunrpc/svc.c | 490 + net/sunrpc/svcauth.c | 216 + net/sunrpc/svcauth_unix.c | 502 + net/sunrpc/svcsock.c | 1585 + net/sunrpc/sysctl.c | 193 + net/sunrpc/timer.c | 107 + net/sunrpc/xdr.c | 917 + net/sunrpc/xprt.c | 1678 ++ net/sysctl_net.c | 65 + net/unix/Makefile | 8 + net/unix/af_unix.c | 2098 ++ net/unix/garbage.c | 312 + net/unix/sysctl_net_unix.c | 60 + net/wanrouter/Makefile | 7 + net/wanrouter/af_wanpipe.c | 2611 ++ net/wanrouter/patchlevel | 1 + net/wanrouter/wanmain.c | 888 + net/wanrouter/wanproc.c | 381 + net/x25/Makefile | 10 + net/x25/af_x25.c | 1435 + net/x25/sysctl_net_x25.c | 107 + net/x25/x25_dev.c | 207 + net/x25/x25_facilities.c | 231 + net/x25/x25_in.c | 361 + net/x25/x25_link.c | 401 + net/x25/x25_out.c | 226 + net/x25/x25_proc.c | 256 + net/x25/x25_route.c | 221 + net/x25/x25_subr.c | 374 + net/x25/x25_timer.c | 176 + net/xfrm/Kconfig | 12 + net/xfrm/Makefile | 7 + net/xfrm/xfrm_algo.c | 729 + net/xfrm/xfrm_input.c | 89 + net/xfrm/xfrm_policy.c | 1367 + net/xfrm/xfrm_state.c | 1037 + net/xfrm/xfrm_user.c | 1253 + scripts/Lindent | 2 + scripts/Makefile | 22 + scripts/Makefile.build | 330 + scripts/Makefile.clean | 94 + scripts/Makefile.host | 155 + scripts/Makefile.lib | 267 + scripts/Makefile.modinst | 29 + scripts/Makefile.modpost | 110 + scripts/basic/Makefile | 18 + scripts/basic/docproc.c | 398 + scripts/basic/fixdep.c | 390 + scripts/basic/split-include.c | 226 + scripts/bin2c.c | 36 + scripts/binoffset.c | 163 + scripts/checkconfig.pl | 65 + scripts/checkincludes.pl | 24 + scripts/checkstack.pl | 123 + scripts/checkversion.pl | 72 + scripts/conmakehash.c | 293 + scripts/extract-ikconfig | 77 + scripts/gcc-version.sh | 14 + scripts/gen_initramfs_list.sh | 203 + scripts/genksyms/Makefile | 49 + scripts/genksyms/genksyms.c | 591 + scripts/genksyms/genksyms.h | 104 + scripts/genksyms/keywords.c_shipped | 145 + scripts/genksyms/keywords.gperf | 50 + scripts/genksyms/lex.c_shipped | 2084 ++ scripts/genksyms/lex.l | 407 + scripts/genksyms/parse.c_shipped | 1577 + scripts/genksyms/parse.h_shipped | 46 + scripts/genksyms/parse.y | 469 + scripts/kallsyms.c | 686 + scripts/kconfig/Makefile | 208 + scripts/kconfig/conf.c | 583 + scripts/kconfig/confdata.c | 460 + scripts/kconfig/expr.c | 1099 + scripts/kconfig/expr.h | 195 + scripts/kconfig/gconf.c | 1639 + scripts/kconfig/gconf.glade | 543 + scripts/kconfig/images.c | 326 + scripts/kconfig/kconfig_load.c | 35 + scripts/kconfig/lex.zconf.c_shipped | 3688 +++ scripts/kconfig/lkc.h | 123 + scripts/kconfig/lkc_proto.h | 40 + scripts/kconfig/mconf.c | 1090 + scripts/kconfig/menu.c | 390 + scripts/kconfig/qconf.cc | 1407 + scripts/kconfig/qconf.h | 263 + scripts/kconfig/symbol.c | 816 + scripts/kconfig/util.c | 109 + scripts/kconfig/zconf.l | 366 + scripts/kconfig/zconf.tab.c_shipped | 2130 ++ scripts/kconfig/zconf.tab.h_shipped | 125 + scripts/kconfig/zconf.y | 690 + scripts/kernel-doc | 1831 ++ scripts/ksymoops/README | 8 + scripts/lxdialog/BIG.FAT.WARNING | 4 + scripts/lxdialog/Makefile | 42 + scripts/lxdialog/checklist.c | 373 + scripts/lxdialog/colors.h | 155 + scripts/lxdialog/dialog.h | 187 + scripts/lxdialog/inputbox.c | 240 + scripts/lxdialog/lxdialog.c | 226 + scripts/lxdialog/menubox.c | 445 + scripts/lxdialog/msgbox.c | 85 + scripts/lxdialog/textbox.c | 556 + scripts/lxdialog/util.c | 359 + scripts/lxdialog/yesno.c | 118 + scripts/makelst | 31 + scripts/makeman | 185 + scripts/mkcompile_h | 78 + scripts/mkmakefile | 31 + scripts/mksysmap | 44 + scripts/mkuboot.sh | 16 + scripts/mkversion | 6 + scripts/mod/Makefile | 16 + scripts/mod/empty.c | 1 + scripts/mod/file2alias.c | 308 + scripts/mod/mk_elfconfig.c | 65 + scripts/mod/modpost.c | 797 + scripts/mod/modpost.h | 107 + scripts/mod/sumversion.c | 498 + scripts/namespace.pl | 454 + scripts/package/Makefile | 89 + scripts/package/builddeb | 79 + scripts/package/mkspec | 82 + scripts/patch-kernel | 257 + scripts/pnmtologo.c | 508 + scripts/reference_discarded.pl | 110 + scripts/reference_init.pl | 107 + scripts/show_delta | 129 + scripts/split-man | 112 + scripts/ver_linux | 95 + security/Kconfig | 91 + security/Makefile | 19 + security/capability.c | 104 + security/commoncap.c | 345 + security/dummy.c | 996 + security/keys/Makefile | 14 + security/keys/compat.c | 78 + security/keys/internal.h | 123 + security/keys/key.c | 1040 + security/keys/keyctl.c | 987 + security/keys/keyring.c | 895 + security/keys/proc.c | 251 + security/keys/process_keys.c | 665 + security/keys/request_key.c | 359 + security/keys/user_defined.c | 191 + security/root_plug.c | 142 + security/seclvl.c | 747 + security/security.c | 203 + security/selinux/Kconfig | 97 + security/selinux/Makefile | 12 + security/selinux/avc.c | 949 + security/selinux/hooks.c | 4565 +++ security/selinux/include/av_inherit.h | 30 + security/selinux/include/av_perm_to_string.h | 232 + security/selinux/include/av_permissions.h | 902 + security/selinux/include/avc.h | 137 + security/selinux/include/avc_ss.h | 14 + security/selinux/include/class_to_string.h | 58 + .../selinux/include/common_perm_to_string.h | 58 + security/selinux/include/conditional.h | 22 + security/selinux/include/flask.h | 95 + .../selinux/include/initial_sid_to_string.h | 33 + security/selinux/include/netif.h | 21 + security/selinux/include/objsec.h | 112 + security/selinux/include/security.h | 97 + security/selinux/netif.c | 270 + security/selinux/netlink.c | 113 + security/selinux/nlmsgtab.c | 156 + security/selinux/selinuxfs.c | 1340 + security/selinux/ss/Makefile | 9 + security/selinux/ss/avtab.c | 399 + security/selinux/ss/avtab.h | 85 + security/selinux/ss/conditional.c | 489 + security/selinux/ss/conditional.h | 77 + security/selinux/ss/constraint.h | 61 + security/selinux/ss/context.h | 107 + security/selinux/ss/ebitmap.c | 293 + security/selinux/ss/ebitmap.h | 48 + security/selinux/ss/hashtab.c | 167 + security/selinux/ss/hashtab.h | 87 + security/selinux/ss/mls.c | 527 + security/selinux/ss/mls.h | 42 + security/selinux/ss/mls_types.h | 56 + security/selinux/ss/policydb.c | 1843 ++ security/selinux/ss/policydb.h | 275 + security/selinux/ss/services.c | 1777 ++ security/selinux/ss/services.h | 15 + security/selinux/ss/sidtab.c | 305 + security/selinux/ss/sidtab.h | 59 + security/selinux/ss/symtab.c | 44 + security/selinux/ss/symtab.h | 23 + sound/Kconfig | 89 + sound/Makefile | 13 + sound/arm/Kconfig | 18 + sound/arm/Makefile | 8 + sound/arm/sa11xx-uda1341.c | 973 + sound/core/Kconfig | 133 + sound/core/Makefile | 33 + sound/core/control.c | 1375 + sound/core/control_compat.c | 412 + sound/core/device.c | 240 + sound/core/hwdep.c | 524 + sound/core/hwdep_compat.c | 77 + sound/core/info.c | 989 + sound/core/info_oss.c | 137 + sound/core/init.c | 887 + sound/core/isadma.c | 103 + sound/core/memalloc.c | 663 + sound/core/memory.c | 306 + sound/core/misc.c | 76 + sound/core/oss/Makefile | 12 + sound/core/oss/copy.c | 87 + sound/core/oss/io.c | 134 + sound/core/oss/linear.c | 158 + sound/core/oss/mixer_oss.c | 1340 + sound/core/oss/mulaw.c | 308 + sound/core/oss/pcm_oss.c | 2530 ++ sound/core/oss/pcm_plugin.c | 921 + sound/core/oss/pcm_plugin.h | 250 + sound/core/oss/plugin_ops.h | 536 + sound/core/oss/rate.c | 378 + sound/core/oss/route.c | 519 + sound/core/pcm.c | 1074 + sound/core/pcm_compat.c | 513 + sound/core/pcm_lib.c | 2612 ++ sound/core/pcm_memory.c | 363 + sound/core/pcm_misc.c | 481 + sound/core/pcm_native.c | 3364 +++ sound/core/pcm_timer.c | 161 + sound/core/rawmidi.c | 1680 ++ sound/core/rawmidi_compat.c | 120 + sound/core/rtctimer.c | 188 + sound/core/seq/Makefile | 44 + sound/core/seq/instr/Makefile | 23 + sound/core/seq/instr/ainstr_fm.c | 156 + sound/core/seq/instr/ainstr_gf1.c | 358 + sound/core/seq/instr/ainstr_iw.c | 622 + sound/core/seq/instr/ainstr_simple.c | 215 + sound/core/seq/oss/Makefile | 10 + sound/core/seq/oss/seq_oss.c | 317 + sound/core/seq/oss/seq_oss_device.h | 198 + sound/core/seq/oss/seq_oss_event.c | 447 + sound/core/seq/oss/seq_oss_event.h | 112 + sound/core/seq/oss/seq_oss_init.c | 555 + sound/core/seq/oss/seq_oss_ioctl.c | 209 + sound/core/seq/oss/seq_oss_midi.c | 710 + sound/core/seq/oss/seq_oss_midi.h | 49 + sound/core/seq/oss/seq_oss_readq.c | 234 + sound/core/seq/oss/seq_oss_readq.h | 56 + sound/core/seq/oss/seq_oss_rw.c | 216 + sound/core/seq/oss/seq_oss_synth.c | 659 + sound/core/seq/oss/seq_oss_synth.h | 49 + sound/core/seq/oss/seq_oss_timer.c | 283 + sound/core/seq/oss/seq_oss_timer.h | 70 + sound/core/seq/oss/seq_oss_writeq.c | 170 + sound/core/seq/oss/seq_oss_writeq.h | 50 + sound/core/seq/seq.c | 147 + sound/core/seq/seq_clientmgr.c | 2503 ++ sound/core/seq/seq_clientmgr.h | 104 + sound/core/seq/seq_compat.c | 137 + sound/core/seq/seq_device.c | 575 + sound/core/seq/seq_dummy.c | 273 + sound/core/seq/seq_fifo.c | 264 + sound/core/seq/seq_fifo.h | 72 + sound/core/seq/seq_info.c | 75 + sound/core/seq/seq_info.h | 36 + sound/core/seq/seq_instr.c | 653 + sound/core/seq/seq_lock.c | 48 + sound/core/seq/seq_lock.h | 33 + sound/core/seq/seq_memory.c | 510 + sound/core/seq/seq_memory.h | 104 + sound/core/seq/seq_midi.c | 489 + sound/core/seq/seq_midi_emul.c | 735 + sound/core/seq/seq_midi_event.c | 539 + sound/core/seq/seq_ports.c | 674 + sound/core/seq/seq_ports.h | 128 + sound/core/seq/seq_prioq.c | 449 + sound/core/seq/seq_prioq.h | 62 + sound/core/seq/seq_queue.c | 783 + sound/core/seq/seq_queue.h | 140 + sound/core/seq/seq_system.c | 190 + sound/core/seq/seq_system.h | 46 + sound/core/seq/seq_timer.c | 435 + sound/core/seq/seq_timer.h | 141 + sound/core/seq/seq_virmidi.c | 551 + sound/core/sgbuf.c | 111 + sound/core/sound.c | 491 + sound/core/sound_oss.c | 250 + sound/core/timer.c | 1901 ++ sound/core/timer_compat.c | 119 + sound/core/wrappers.c | 50 + sound/drivers/Kconfig | 98 + sound/drivers/Makefile | 17 + sound/drivers/dummy.c | 643 + sound/drivers/mpu401/Makefile | 12 + sound/drivers/mpu401/mpu401.c | 229 + sound/drivers/mpu401/mpu401_uart.c | 541 + sound/drivers/mtpav.c | 795 + sound/drivers/opl3/Makefile | 22 + sound/drivers/opl3/opl3_drums.c | 223 + sound/drivers/opl3/opl3_lib.c | 558 + sound/drivers/opl3/opl3_midi.c | 873 + sound/drivers/opl3/opl3_oss.c | 356 + sound/drivers/opl3/opl3_seq.c | 314 + sound/drivers/opl3/opl3_synth.c | 447 + sound/drivers/opl3/opl3_voice.h | 52 + sound/drivers/opl4/Makefile | 18 + sound/drivers/opl4/opl4_lib.c | 281 + sound/drivers/opl4/opl4_local.h | 232 + sound/drivers/opl4/opl4_mixer.c | 95 + sound/drivers/opl4/opl4_proc.c | 166 + sound/drivers/opl4/opl4_seq.c | 223 + sound/drivers/opl4/opl4_synth.c | 630 + sound/drivers/opl4/yrw801.c | 961 + sound/drivers/serial-u16550.c | 990 + sound/drivers/virmidi.c | 159 + sound/drivers/vx/Makefile | 8 + sound/drivers/vx/vx_cmd.c | 109 + sound/drivers/vx/vx_cmd.h | 246 + sound/drivers/vx/vx_core.c | 837 + sound/drivers/vx/vx_hwdep.c | 249 + sound/drivers/vx/vx_mixer.c | 1000 + sound/drivers/vx/vx_pcm.c | 1312 + sound/drivers/vx/vx_uer.c | 321 + sound/i2c/Makefile | 18 + sound/i2c/cs8427.c | 572 + sound/i2c/i2c.c | 333 + sound/i2c/l3/Makefile | 8 + sound/i2c/l3/uda1341.c | 830 + sound/i2c/other/Makefile | 16 + sound/i2c/other/ak4114.c | 580 + sound/i2c/other/ak4117.c | 559 + sound/i2c/other/ak4xxx-adda.c | 501 + sound/i2c/other/tea575x-tuner.c | 233 + sound/i2c/tea6330t.c | 369 + sound/isa/Kconfig | 377 + sound/isa/Makefile | 26 + sound/isa/ad1816a/Makefile | 10 + sound/isa/ad1816a/ad1816a.c | 312 + sound/isa/ad1816a/ad1816a_lib.c | 974 + sound/isa/ad1848/Makefile | 15 + sound/isa/ad1848/ad1848.c | 151 + sound/isa/ad1848/ad1848_lib.c | 1279 + sound/isa/als100.c | 336 + sound/isa/azt2320.c | 366 + sound/isa/cmi8330.c | 633 + sound/isa/cs423x/Makefile | 25 + sound/isa/cs423x/cs4231.c | 169 + sound/isa/cs423x/cs4231_lib.c | 1964 ++ sound/isa/cs423x/cs4232.c | 2 + sound/isa/cs423x/cs4236.c | 608 + sound/isa/cs423x/cs4236_lib.c | 970 + sound/isa/dt019x.c | 327 + sound/isa/es1688/Makefile | 11 + sound/isa/es1688/es1688.c | 204 + sound/isa/es1688/es1688_lib.c | 1062 + sound/isa/es18xx.c | 2224 ++ sound/isa/gus/Makefile | 36 + sound/isa/gus/gus_dma.c | 244 + sound/isa/gus/gus_dram.c | 103 + sound/isa/gus/gus_instr.c | 173 + sound/isa/gus/gus_io.c | 531 + sound/isa/gus/gus_irq.c | 142 + sound/isa/gus/gus_main.c | 514 + sound/isa/gus/gus_mem.c | 353 + sound/isa/gus/gus_mem_proc.c | 135 + sound/isa/gus/gus_mixer.c | 199 + sound/isa/gus/gus_pcm.c | 903 + sound/isa/gus/gus_reset.c | 413 + sound/isa/gus/gus_sample.c | 155 + sound/isa/gus/gus_simple.c | 634 + sound/isa/gus/gus_synth.c | 329 + sound/isa/gus/gus_tables.h | 86 + sound/isa/gus/gus_timer.c | 204 + sound/isa/gus/gus_uart.c | 257 + sound/isa/gus/gus_volume.c | 210 + sound/isa/gus/gusclassic.c | 260 + sound/isa/gus/gusextreme.c | 374 + sound/isa/gus/gusmax.c | 400 + sound/isa/gus/interwave-stb.c | 2 + sound/isa/gus/interwave.c | 969 + sound/isa/opl3sa2.c | 860 + sound/isa/opti9xx/Makefile | 13 + sound/isa/opti9xx/opti92x-ad1848.c | 2226 ++ sound/isa/opti9xx/opti92x-cs4231.c | 2 + sound/isa/opti9xx/opti93x.c | 3 + sound/isa/sb/Makefile | 39 + sound/isa/sb/emu8000.c | 1170 + sound/isa/sb/emu8000_callback.c | 543 + sound/isa/sb/emu8000_local.h | 43 + sound/isa/sb/emu8000_patch.c | 303 + sound/isa/sb/emu8000_pcm.c | 704 + sound/isa/sb/emu8000_synth.c | 134 + sound/isa/sb/es968.c | 235 + sound/isa/sb/sb16.c | 678 + sound/isa/sb/sb16_csp.c | 1175 + sound/isa/sb/sb16_csp_codecs.h | 949 + sound/isa/sb/sb16_main.c | 916 + sound/isa/sb/sb8.c | 223 + sound/isa/sb/sb8_main.c | 565 + sound/isa/sb/sb8_midi.c | 293 + sound/isa/sb/sb_common.c | 313 + sound/isa/sb/sb_mixer.c | 844 + sound/isa/sb/sbawe.c | 2 + sound/isa/sgalaxy.c | 322 + sound/isa/sscape.c | 1517 + sound/isa/wavefront/Makefile | 9 + sound/isa/wavefront/wavefront.c | 716 + sound/isa/wavefront/wavefront_fx.c | 1019 + sound/isa/wavefront/wavefront_midi.c | 570 + sound/isa/wavefront/wavefront_synth.c | 2243 ++ sound/last.c | 42 + sound/mips/Kconfig | 15 + sound/mips/Makefile | 8 + sound/mips/au1x00.c | 686 + sound/oss/CHANGELOG | 369 + sound/oss/COPYING | 339 + sound/oss/Kconfig | 1120 + sound/oss/Makefile | 187 + sound/oss/README.FIRST | 6 + sound/oss/ac97.c | 452 + sound/oss/ac97.h | 204 + sound/oss/ac97_codec.c | 1576 + sound/oss/ac97_plugin_ad1980.c | 126 + sound/oss/aci.c | 711 + sound/oss/aci.h | 57 + sound/oss/ad1816.c | 1369 + sound/oss/ad1848.c | 3159 ++ sound/oss/ad1848.h | 25 + sound/oss/ad1848_mixer.h | 253 + sound/oss/ad1889.c | 1103 + sound/oss/ad1889.h | 134 + sound/oss/adlib_card.c | 73 + sound/oss/aedsp16.c | 1381 + sound/oss/ali5455.c | 3733 +++ sound/oss/au1000.c | 2214 ++ sound/oss/au1550_ac97.c | 2119 ++ sound/oss/audio.c | 983 + sound/oss/audio_syms.c | 16 + sound/oss/awe_hw.h | 99 + sound/oss/awe_wave.c | 6147 ++++ sound/oss/awe_wave.h | 77 + sound/oss/bin2hex.c | 39 + sound/oss/btaudio.c | 1136 + sound/oss/cmpci.c | 3378 +++ sound/oss/coproc.h | 12 + sound/oss/cs4232.c | 520 + sound/oss/cs4281/Makefile | 6 + sound/oss/cs4281/cs4281_hwdefs.h | 1234 + sound/oss/cs4281/cs4281_wrapper-24.c | 41 + sound/oss/cs4281/cs4281m.c | 4505 +++ sound/oss/cs4281/cs4281pm-24.c | 84 + sound/oss/cs4281/cs4281pm.h | 74 + sound/oss/cs461x.h | 1691 ++ sound/oss/cs461x_image.h | 322 + sound/oss/cs46xx.c | 5794 ++++ sound/oss/cs46xx_wrapper-24.h | 56 + sound/oss/cs46xxpm-24.h | 52 + sound/oss/cs46xxpm.h | 70 + sound/oss/dev_table.c | 214 + sound/oss/dev_table.h | 405 + sound/oss/dm.h | 79 + sound/oss/dmabuf.c | 1298 + sound/oss/dmasound/Kconfig | 58 + sound/oss/dmasound/Makefile | 13 + sound/oss/dmasound/awacs_defs.h | 251 + sound/oss/dmasound/dac3550a.c | 210 + sound/oss/dmasound/dmasound.h | 277 + sound/oss/dmasound/dmasound_atari.c | 1600 + sound/oss/dmasound/dmasound_awacs.c | 3176 ++ sound/oss/dmasound/dmasound_core.c | 1829 ++ sound/oss/dmasound/dmasound_paula.c | 743 + sound/oss/dmasound/dmasound_q40.c | 634 + sound/oss/dmasound/tas3001c.c | 850 + sound/oss/dmasound/tas3001c.h | 64 + sound/oss/dmasound/tas3001c_tables.c | 375 + sound/oss/dmasound/tas3004.c | 1140 + sound/oss/dmasound/tas3004.h | 77 + sound/oss/dmasound/tas3004_tables.c | 301 + sound/oss/dmasound/tas_common.c | 214 + sound/oss/dmasound/tas_common.h | 284 + sound/oss/dmasound/tas_eq_prefs.h | 24 + sound/oss/dmasound/tas_ioctl.h | 24 + sound/oss/dmasound/trans_16.c | 897 + sound/oss/emu10k1/8010.h | 737 + sound/oss/emu10k1/Makefile | 17 + sound/oss/emu10k1/audio.c | 1588 + sound/oss/emu10k1/audio.h | 44 + sound/oss/emu10k1/cardmi.c | 832 + sound/oss/emu10k1/cardmi.h | 97 + sound/oss/emu10k1/cardmo.c | 229 + sound/oss/emu10k1/cardmo.h | 62 + sound/oss/emu10k1/cardwi.c | 373 + sound/oss/emu10k1/cardwi.h | 91 + sound/oss/emu10k1/cardwo.c | 643 + sound/oss/emu10k1/cardwo.h | 90 + sound/oss/emu10k1/ecard.c | 157 + sound/oss/emu10k1/ecard.h | 113 + sound/oss/emu10k1/efxmgr.c | 220 + sound/oss/emu10k1/efxmgr.h | 270 + sound/oss/emu10k1/emuadxmg.c | 104 + sound/oss/emu10k1/hwaccess.c | 507 + sound/oss/emu10k1/hwaccess.h | 247 + sound/oss/emu10k1/icardmid.h | 163 + sound/oss/emu10k1/icardwav.h | 53 + sound/oss/emu10k1/irqmgr.c | 113 + sound/oss/emu10k1/irqmgr.h | 52 + sound/oss/emu10k1/main.c | 1475 + sound/oss/emu10k1/midi.c | 613 + sound/oss/emu10k1/midi.h | 78 + sound/oss/emu10k1/mixer.c | 690 + sound/oss/emu10k1/passthrough.c | 236 + sound/oss/emu10k1/passthrough.h | 99 + sound/oss/emu10k1/recmgr.c | 147 + sound/oss/emu10k1/recmgr.h | 48 + sound/oss/emu10k1/timer.c | 176 + sound/oss/emu10k1/timer.h | 54 + sound/oss/emu10k1/voicemgr.c | 398 + sound/oss/emu10k1/voicemgr.h | 103 + sound/oss/es1370.c | 2789 ++ sound/oss/es1371.c | 3097 ++ sound/oss/esssolo1.c | 2497 ++ sound/oss/forte.c | 2137 ++ sound/oss/gus.h | 24 + sound/oss/gus_card.c | 293 + sound/oss/gus_hw.h | 50 + sound/oss/gus_linearvol.h | 18 + sound/oss/gus_midi.c | 256 + sound/oss/gus_vol.c | 153 + sound/oss/gus_wave.c | 3464 +++ sound/oss/hal2.c | 1557 + sound/oss/hal2.h | 248 + sound/oss/harmony.c | 1330 + sound/oss/hex2hex.c | 101 + sound/oss/i810_audio.c | 3658 +++ sound/oss/ics2101.c | 247 + sound/oss/ite8172.c | 2259 ++ sound/oss/iwmem.h | 36 + sound/oss/kahlua.c | 232 + sound/oss/mad16.c | 1097 + sound/oss/maestro.c | 3832 +++ sound/oss/maestro.h | 60 + sound/oss/maestro3.c | 2973 ++ sound/oss/maestro3.h | 821 + sound/oss/maui.c | 478 + sound/oss/midi_ctrl.h | 22 + sound/oss/midi_syms.c | 29 + sound/oss/midi_synth.c | 697 + sound/oss/midi_synth.h | 47 + sound/oss/midibuf.c | 431 + sound/oss/mpu401.c | 1826 ++ sound/oss/mpu401.h | 14 + sound/oss/msnd.c | 419 + sound/oss/msnd.h | 280 + sound/oss/msnd_classic.c | 3 + sound/oss/msnd_classic.h | 188 + sound/oss/msnd_pinnacle.c | 1922 ++ sound/oss/msnd_pinnacle.h | 249 + sound/oss/nec_vrc5477.c | 2059 ++ sound/oss/nm256.h | 295 + sound/oss/nm256_audio.c | 1707 ++ sound/oss/nm256_coeff.h | 4697 +++ sound/oss/opl3.c | 1257 + sound/oss/opl3.h | 5 + sound/oss/opl3_hw.h | 246 + sound/oss/opl3sa.c | 329 + sound/oss/opl3sa2.c | 1129 + sound/oss/os.h | 51 + sound/oss/pas2.h | 17 + sound/oss/pas2_card.c | 458 + sound/oss/pas2_midi.c | 262 + sound/oss/pas2_mixer.c | 336 + sound/oss/pas2_pcm.c | 437 + sound/oss/pss.c | 1283 + sound/oss/rme96xx.c | 1861 ++ sound/oss/rme96xx.h | 78 + sound/oss/sb.h | 185 + sound/oss/sb_audio.c | 1098 + sound/oss/sb_card.c | 347 + sound/oss/sb_card.h | 149 + sound/oss/sb_common.c | 1291 + sound/oss/sb_ess.c | 1832 ++ sound/oss/sb_ess.h | 34 + sound/oss/sb_midi.c | 205 + sound/oss/sb_mixer.c | 768 + sound/oss/sb_mixer.h | 105 + sound/oss/sequencer.c | 1684 ++ sound/oss/sequencer_syms.c | 30 + sound/oss/sgalaxy.c | 207 + sound/oss/sh_dac_audio.c | 325 + sound/oss/skeleton.c | 219 + sound/oss/sonicvibes.c | 2792 ++ sound/oss/sound_calls.h | 90 + sound/oss/sound_config.h | 154 + sound/oss/sound_firmware.h | 2 + sound/oss/sound_syms.c | 50 + sound/oss/sound_timer.c | 323 + sound/oss/soundcard.c | 751 + sound/oss/soundvers.h | 2 + sound/oss/sscape.c | 1485 + sound/oss/swarm_cs4297a.c | 2742 ++ sound/oss/sys_timer.c | 289 + sound/oss/trident.c | 4628 +++ sound/oss/trident.h | 358 + sound/oss/trix.c | 525 + sound/oss/tuning.h | 29 + sound/oss/uart401.c | 481 + sound/oss/uart6850.c | 362 + sound/oss/ulaw.h | 69 + sound/oss/v_midi.c | 291 + sound/oss/v_midi.h | 15 + sound/oss/via82cxxx_audio.c | 3615 +++ sound/oss/vidc.c | 561 + sound/oss/vidc.h | 67 + sound/oss/vidc_fill.S | 218 + sound/oss/vwsnd.c | 3486 +++ sound/oss/waveartist.c | 2035 ++ sound/oss/waveartist.h | 92 + sound/oss/wavfront.c | 3538 +++ sound/oss/wf_midi.c | 880 + sound/oss/ymfpci.c | 2691 ++ sound/oss/ymfpci.h | 360 + sound/oss/ymfpci_image.h | 1565 + sound/oss/yss225.c | 319 + sound/oss/yss225.h | 24 + sound/parisc/Kconfig | 15 + sound/parisc/Makefile | 8 + sound/parisc/harmony.c | 993 + sound/parisc/harmony.h | 151 + sound/pci/Kconfig | 528 + sound/pci/Makefile | 64 + sound/pci/ac97/Makefile | 18 + sound/pci/ac97/ac97_codec.c | 2579 ++ sound/pci/ac97/ac97_id.h | 62 + sound/pci/ac97/ac97_local.h | 83 + sound/pci/ac97/ac97_patch.c | 2309 ++ sound/pci/ac97/ac97_patch.h | 59 + sound/pci/ac97/ac97_pcm.c | 700 + sound/pci/ac97/ac97_proc.c | 449 + sound/pci/ac97/ak4531_codec.c | 437 + sound/pci/ali5451/Makefile | 9 + sound/pci/ali5451/ali5451.c | 2282 ++ sound/pci/als4000.c | 789 + sound/pci/atiixp.c | 1657 ++ sound/pci/atiixp_modem.c | 1344 + sound/pci/au88x0/Makefile | 7 + sound/pci/au88x0/au8810.c | 17 + sound/pci/au88x0/au8810.h | 229 + sound/pci/au88x0/au8820.c | 15 + sound/pci/au88x0/au8820.h | 209 + sound/pci/au88x0/au8830.c | 18 + sound/pci/au88x0/au8830.h | 256 + sound/pci/au88x0/au88x0.c | 388 + sound/pci/au88x0/au88x0.h | 284 + sound/pci/au88x0/au88x0_a3d.c | 914 + sound/pci/au88x0/au88x0_a3d.h | 123 + sound/pci/au88x0/au88x0_a3ddata.c | 91 + sound/pci/au88x0/au88x0_core.c | 2837 ++ sound/pci/au88x0/au88x0_eq.c | 937 + sound/pci/au88x0/au88x0_eq.h | 46 + sound/pci/au88x0/au88x0_eqdata.c | 112 + sound/pci/au88x0/au88x0_game.c | 135 + sound/pci/au88x0/au88x0_mixer.c | 33 + sound/pci/au88x0/au88x0_mpu401.c | 112 + sound/pci/au88x0/au88x0_pcm.c | 548 + sound/pci/au88x0/au88x0_sb.h | 40 + sound/pci/au88x0/au88x0_synth.c | 395 + sound/pci/au88x0/au88x0_wt.h | 65 + sound/pci/au88x0/au88x0_xtalk.c | 787 + sound/pci/au88x0/au88x0_xtalk.h | 61 + sound/pci/azt3328.c | 1536 + sound/pci/azt3328.h | 165 + sound/pci/bt87x.c | 930 + sound/pci/ca0106/Makefile | 3 + sound/pci/ca0106/ca0106.h | 549 + sound/pci/ca0106/ca0106_main.c | 1283 + sound/pci/ca0106/ca0106_mixer.c | 634 + sound/pci/ca0106/ca0106_proc.c | 436 + sound/pci/cmipci.c | 2956 ++ sound/pci/cs4281.c | 2136 ++ sound/pci/cs46xx/Makefile | 12 + sound/pci/cs46xx/cs46xx.c | 183 + sound/pci/cs46xx/cs46xx_image.h | 3468 +++ sound/pci/cs46xx/cs46xx_lib.c | 3922 +++ sound/pci/cs46xx/cs46xx_lib.h | 182 + sound/pci/cs46xx/dsp_spos.c | 1892 ++ sound/pci/cs46xx/dsp_spos.h | 225 + sound/pci/cs46xx/dsp_spos_scb_lib.c | 1750 ++ sound/pci/cs46xx/imgs/cwc4630.h | 320 + sound/pci/cs46xx/imgs/cwcasync.h | 176 + sound/pci/cs46xx/imgs/cwcbinhack.h | 48 + sound/pci/cs46xx/imgs/cwcdma.asp | 169 + sound/pci/cs46xx/imgs/cwcdma.h | 68 + sound/pci/cs46xx/imgs/cwcemb80.h | 1607 + sound/pci/cs46xx/imgs/cwcsnoop.h | 46 + sound/pci/emu10k1/Makefile | 23 + sound/pci/emu10k1/emu10k1.c | 240 + sound/pci/emu10k1/emu10k1_callback.c | 540 + sound/pci/emu10k1/emu10k1_main.c | 875 + sound/pci/emu10k1/emu10k1_patch.c | 223 + sound/pci/emu10k1/emu10k1_synth.c | 120 + sound/pci/emu10k1/emu10k1_synth_local.h | 38 + sound/pci/emu10k1/emu10k1x.c | 1643 + sound/pci/emu10k1/emufx.c | 2320 ++ sound/pci/emu10k1/emumixer.c | 955 + sound/pci/emu10k1/emumpu401.c | 374 + sound/pci/emu10k1/emupcm.c | 1724 ++ sound/pci/emu10k1/emuproc.c | 568 + sound/pci/emu10k1/io.c | 404 + sound/pci/emu10k1/irq.c | 189 + sound/pci/emu10k1/memory.c | 564 + sound/pci/emu10k1/p16v.c | 736 + sound/pci/emu10k1/p16v.h | 299 + sound/pci/emu10k1/timer.c | 97 + sound/pci/emu10k1/voice.c | 152 + sound/pci/ens1370.c | 2413 ++ sound/pci/ens1371.c | 2 + sound/pci/es1938.c | 1773 ++ sound/pci/es1968.c | 2807 ++ sound/pci/fm801.c | 1480 + sound/pci/hda/Makefile | 7 + sound/pci/hda/hda_codec.c | 1856 ++ sound/pci/hda/hda_codec.h | 604 + sound/pci/hda/hda_generic.c | 906 + sound/pci/hda/hda_intel.c | 1449 + sound/pci/hda/hda_local.h | 161 + sound/pci/hda/hda_patch.h | 17 + sound/pci/hda/hda_proc.c | 298 + sound/pci/hda/patch_analog.c | 445 + sound/pci/hda/patch_cmedia.c | 621 + sound/pci/hda/patch_realtek.c | 1503 + sound/pci/ice1712/Makefile | 12 + sound/pci/ice1712/ak4xxx.c | 194 + sound/pci/ice1712/amp.c | 65 + sound/pci/ice1712/amp.h | 34 + sound/pci/ice1712/aureon.c | 1948 ++ sound/pci/ice1712/aureon.h | 56 + sound/pci/ice1712/delta.c | 771 + sound/pci/ice1712/delta.h | 150 + sound/pci/ice1712/envy24ht.h | 215 + sound/pci/ice1712/ews.c | 1036 + sound/pci/ice1712/ews.h | 84 + sound/pci/ice1712/hoontech.c | 326 + sound/pci/ice1712/hoontech.h | 77 + sound/pci/ice1712/ice1712.c | 2760 ++ sound/pci/ice1712/ice1712.h | 494 + sound/pci/ice1712/ice1724.c | 2340 ++ sound/pci/ice1712/juli.c | 230 + sound/pci/ice1712/juli.h | 10 + sound/pci/ice1712/phase.c | 138 + sound/pci/ice1712/phase.h | 34 + sound/pci/ice1712/pontis.c | 849 + sound/pci/ice1712/pontis.h | 33 + sound/pci/ice1712/prodigy192.c | 524 + sound/pci/ice1712/prodigy192.h | 11 + sound/pci/ice1712/revo.c | 205 + sound/pci/ice1712/revo.h | 48 + sound/pci/ice1712/stac946x.h | 25 + sound/pci/ice1712/vt1720_mobo.c | 115 + sound/pci/ice1712/vt1720_mobo.h | 39 + sound/pci/intel8x0.c | 2855 ++ sound/pci/intel8x0m.c | 1462 + sound/pci/korg1212/Makefile | 9 + sound/pci/korg1212/korg1212-firmware.h | 987 + sound/pci/korg1212/korg1212.c | 2553 ++ sound/pci/maestro3.c | 2714 ++ sound/pci/mixart/Makefile | 8 + sound/pci/mixart/mixart.c | 1443 + sound/pci/mixart/mixart.h | 242 + sound/pci/mixart/mixart_core.c | 588 + sound/pci/mixart/mixart_core.h | 607 + sound/pci/mixart/mixart_hwdep.c | 647 + sound/pci/mixart/mixart_hwdep.h | 145 + sound/pci/mixart/mixart_mixer.c | 1136 + sound/pci/mixart/mixart_mixer.h | 31 + sound/pci/nm256/Makefile | 9 + sound/pci/nm256/nm256.c | 1657 ++ sound/pci/nm256/nm256_coef.c | 4607 +++ sound/pci/rme32.c | 2043 ++ sound/pci/rme96.c | 2449 ++ sound/pci/rme9652/Makefile | 11 + sound/pci/rme9652/hdsp.c | 5206 ++++ sound/pci/rme9652/rme9652.c | 2676 ++ sound/pci/sonicvibes.c | 1534 + sound/pci/trident/Makefile | 19 + sound/pci/trident/trident.c | 196 + sound/pci/trident/trident_main.c | 3991 +++ sound/pci/trident/trident_memory.c | 476 + sound/pci/trident/trident_synth.c | 1031 + sound/pci/via82xx.c | 2346 ++ sound/pci/via82xx_modem.c | 1245 + sound/pci/vx222/Makefile | 8 + sound/pci/vx222/vx222.c | 272 + sound/pci/vx222/vx222.h | 114 + sound/pci/vx222/vx222_ops.c | 1004 + sound/pci/ymfpci/Makefile | 9 + sound/pci/ymfpci/ymfpci.c | 372 + sound/pci/ymfpci/ymfpci_image.h | 1565 + sound/pci/ymfpci/ymfpci_main.c | 2273 ++ sound/pcmcia/Kconfig | 39 + sound/pcmcia/Makefile | 6 + sound/pcmcia/pdaudiocf/Makefile | 8 + sound/pcmcia/pdaudiocf/pdaudiocf.c | 404 + sound/pcmcia/pdaudiocf/pdaudiocf.h | 145 + sound/pcmcia/pdaudiocf/pdaudiocf_core.c | 291 + sound/pcmcia/pdaudiocf/pdaudiocf_irq.c | 325 + sound/pcmcia/pdaudiocf/pdaudiocf_pcm.c | 361 + sound/pcmcia/vx/Makefile | 11 + sound/pcmcia/vx/vx_entry.c | 384 + sound/pcmcia/vx/vxp440.c | 14 + sound/pcmcia/vx/vxp_mixer.c | 148 + sound/pcmcia/vx/vxp_ops.c | 614 + sound/pcmcia/vx/vxpocket.c | 164 + sound/pcmcia/vx/vxpocket.h | 118 + sound/ppc/Kconfig | 23 + sound/ppc/Makefile | 9 + sound/ppc/awacs.c | 903 + sound/ppc/awacs.h | 192 + sound/ppc/beep.c | 262 + sound/ppc/burgundy.c | 439 + sound/ppc/burgundy.h | 95 + sound/ppc/daca.c | 283 + sound/ppc/keywest.c | 143 + sound/ppc/pmac.c | 1328 + sound/ppc/pmac.h | 214 + sound/ppc/powermac.c | 159 + sound/ppc/tumbler.c | 1175 + sound/ppc/tumbler_volume.h | 250 + sound/sound_core.c | 583 + sound/sound_firmware.c | 76 + sound/sparc/Kconfig | 18 + sound/sparc/Makefile | 12 + sound/sparc/amd7930.c | 1146 + sound/sparc/cs4231.c | 2245 ++ sound/synth/Makefile | 20 + sound/synth/emux/Makefile | 20 + sound/synth/emux/emux.c | 173 + sound/synth/emux/emux_effect.c | 308 + sound/synth/emux/emux_hwdep.c | 171 + sound/synth/emux/emux_nrpn.c | 392 + sound/synth/emux/emux_oss.c | 497 + sound/synth/emux/emux_proc.c | 138 + sound/synth/emux/emux_seq.c | 428 + sound/synth/emux/emux_synth.c | 963 + sound/synth/emux/emux_voice.h | 88 + sound/synth/emux/soundfont.c | 1462 + sound/synth/util_mem.c | 207 + sound/usb/Kconfig | 32 + sound/usb/Makefile | 12 + sound/usb/usbaudio.c | 3337 +++ sound/usb/usbaudio.h | 251 + sound/usb/usbmidi.c | 1564 + sound/usb/usbmixer.c | 1545 + sound/usb/usbmixer_maps.c | 135 + sound/usb/usbquirks.h | 1202 + sound/usb/usx2y/Makefile | 3 + sound/usb/usx2y/usX2Yhwdep.c | 280 + sound/usb/usx2y/usX2Yhwdep.h | 6 + sound/usb/usx2y/usbus428ctldefs.h | 108 + sound/usb/usx2y/usbusx2y.c | 461 + sound/usb/usx2y/usbusx2y.h | 84 + sound/usb/usx2y/usbusx2yaudio.c | 1026 + sound/usb/usx2y/usx2y.h | 51 + sound/usb/usx2y/usx2yhwdeppcm.c | 807 + sound/usb/usx2y/usx2yhwdeppcm.h | 21 + usr/Makefile | 65 + usr/gen_init_cpio.c | 512 + usr/initramfs_data.S | 30 + 17291 files changed, 6718755 insertions(+) create mode 100644 COPYING create mode 100644 CREDITS create mode 100644 Documentation/00-INDEX create mode 100644 Documentation/BK-usage/00-INDEX create mode 100644 Documentation/BK-usage/bk-kernel-howto.txt create mode 100755 Documentation/BK-usage/bk-make-sum create mode 100755 Documentation/BK-usage/bksend create mode 100755 Documentation/BK-usage/bz64wrap create mode 100755 Documentation/BK-usage/cpcset create mode 100755 Documentation/BK-usage/cset-to-linus create mode 100755 Documentation/BK-usage/csets-to-patches create mode 100755 Documentation/BK-usage/gcapatch create mode 100755 Documentation/BK-usage/unbz64wrap create mode 100644 Documentation/BUG-HUNTING create mode 100644 Documentation/Changes create mode 100644 Documentation/CodingStyle create mode 100644 Documentation/DMA-API.txt create mode 100644 Documentation/DMA-mapping.txt create mode 100644 Documentation/DocBook/Makefile create mode 100644 Documentation/DocBook/deviceiobook.tmpl create mode 100644 Documentation/DocBook/gadget.tmpl create mode 100644 Documentation/DocBook/journal-api.tmpl create mode 100644 Documentation/DocBook/kernel-api.tmpl create mode 100644 Documentation/DocBook/kernel-hacking.tmpl create mode 100644 Documentation/DocBook/kernel-locking.tmpl create mode 100644 Documentation/DocBook/libata.tmpl create mode 100644 Documentation/DocBook/librs.tmpl create mode 100644 Documentation/DocBook/lsm.tmpl create mode 100644 Documentation/DocBook/man/Makefile create mode 100644 Documentation/DocBook/mcabook.tmpl create mode 100644 Documentation/DocBook/mtdnand.tmpl create mode 100644 Documentation/DocBook/procfs-guide.tmpl create mode 100644 Documentation/DocBook/procfs_example.c create mode 100644 Documentation/DocBook/scsidrivers.tmpl create mode 100644 Documentation/DocBook/sis900.tmpl create mode 100644 Documentation/DocBook/tulip-user.tmpl create mode 100644 Documentation/DocBook/usb.tmpl create mode 100644 Documentation/DocBook/via-audio.tmpl create mode 100644 Documentation/DocBook/videobook.tmpl create mode 100644 Documentation/DocBook/wanbook.tmpl create mode 100644 Documentation/DocBook/writing_usb_driver.tmpl create mode 100644 Documentation/DocBook/z8530book.tmpl create mode 100644 Documentation/IO-mapping.txt create mode 100644 Documentation/IPMI.txt create mode 100644 Documentation/IRQ-affinity.txt create mode 100644 Documentation/MSI-HOWTO.txt create mode 100644 Documentation/ManagementStyle create mode 100644 Documentation/PCIEBUS-HOWTO.txt create mode 100644 Documentation/RCU/RTFP.txt create mode 100644 Documentation/RCU/UP.txt create mode 100644 Documentation/RCU/arrayRCU.txt create mode 100644 Documentation/RCU/checklist.txt create mode 100644 Documentation/RCU/listRCU.txt create mode 100644 Documentation/RCU/rcu.txt create mode 100644 Documentation/README.DAC960 create mode 100644 Documentation/README.cycladesZ create mode 100644 Documentation/SAK.txt create mode 100644 Documentation/SecurityBugs create mode 100644 Documentation/SubmittingDrivers create mode 100644 Documentation/SubmittingPatches create mode 100644 Documentation/VGA-softcursor.txt create mode 100644 Documentation/aoe/aoe.txt create mode 100644 Documentation/aoe/autoload.sh create mode 100644 Documentation/aoe/mkdevs.sh create mode 100644 Documentation/aoe/mkshelf.sh create mode 100644 Documentation/aoe/status.sh create mode 100644 Documentation/aoe/udev-install.sh create mode 100644 Documentation/aoe/udev.txt create mode 100644 Documentation/arm/00-INDEX create mode 100644 Documentation/arm/Booting create mode 100644 Documentation/arm/IXP2000 create mode 100644 Documentation/arm/IXP4xx create mode 100644 Documentation/arm/Interrupts create mode 100644 Documentation/arm/Netwinder create mode 100644 Documentation/arm/Porting create mode 100644 Documentation/arm/README create mode 100644 Documentation/arm/SA1100/ADSBitsy create mode 100644 Documentation/arm/SA1100/Assabet create mode 100644 Documentation/arm/SA1100/Brutus create mode 100644 Documentation/arm/SA1100/CERF create mode 100644 Documentation/arm/SA1100/FreeBird create mode 100644 Documentation/arm/SA1100/GraphicsClient create mode 100644 Documentation/arm/SA1100/GraphicsMaster create mode 100644 Documentation/arm/SA1100/HUW_WEBPANEL create mode 100644 Documentation/arm/SA1100/Itsy create mode 100644 Documentation/arm/SA1100/LART create mode 100644 Documentation/arm/SA1100/PLEB create mode 100644 Documentation/arm/SA1100/Pangolin create mode 100644 Documentation/arm/SA1100/Tifon create mode 100644 Documentation/arm/SA1100/Victor create mode 100644 Documentation/arm/SA1100/Yopy create mode 100644 Documentation/arm/SA1100/empeg create mode 100644 Documentation/arm/SA1100/nanoEngine create mode 100644 Documentation/arm/SA1100/serial_UART create mode 100644 Documentation/arm/Samsung-S3C24XX/EB2410ITX.txt create mode 100644 Documentation/arm/Samsung-S3C24XX/GPIO.txt create mode 100644 Documentation/arm/Samsung-S3C24XX/H1940.txt create mode 100644 Documentation/arm/Samsung-S3C24XX/Overview.txt create mode 100644 Documentation/arm/Samsung-S3C24XX/SMDK2440.txt create mode 100644 Documentation/arm/Samsung-S3C24XX/Suspend.txt create mode 100644 Documentation/arm/Setup create mode 100644 Documentation/arm/Sharp-LH/CompactFlash create mode 100644 Documentation/arm/Sharp-LH/IOBarrier create mode 100644 Documentation/arm/Sharp-LH/KEV7A400 create mode 100644 Documentation/arm/Sharp-LH/LPD7A400 create mode 100644 Documentation/arm/Sharp-LH/LPD7A40X create mode 100644 Documentation/arm/Sharp-LH/SDRAM create mode 100644 Documentation/arm/Sharp-LH/VectoredInterruptController create mode 100644 Documentation/arm/VFP/release-notes.txt create mode 100644 Documentation/arm/empeg/README create mode 100644 Documentation/arm/empeg/ir.txt create mode 100644 Documentation/arm/empeg/mkdevs create mode 100644 Documentation/arm/mem_alignment create mode 100644 Documentation/arm/memory.txt create mode 100644 Documentation/arm/nwfpe/NOTES create mode 100644 Documentation/arm/nwfpe/README create mode 100644 Documentation/arm/nwfpe/README.FPE create mode 100644 Documentation/arm/nwfpe/TODO create mode 100644 Documentation/atomic_ops.txt create mode 100644 Documentation/basic_profiling.txt create mode 100644 Documentation/binfmt_misc.txt create mode 100644 Documentation/block/as-iosched.txt create mode 100644 Documentation/block/biodoc.txt create mode 100644 Documentation/block/deadline-iosched.txt create mode 100644 Documentation/block/request.txt create mode 100644 Documentation/cachetlb.txt create mode 100644 Documentation/cciss.txt create mode 100644 Documentation/cdrom/00-INDEX create mode 100644 Documentation/cdrom/Makefile create mode 100644 Documentation/cdrom/aztcd create mode 100644 Documentation/cdrom/cdrom-standard.tex create mode 100644 Documentation/cdrom/cdu31a create mode 100644 Documentation/cdrom/cm206 create mode 100644 Documentation/cdrom/gscd create mode 100644 Documentation/cdrom/ide-cd create mode 100644 Documentation/cdrom/isp16 create mode 100644 Documentation/cdrom/mcdx create mode 100644 Documentation/cdrom/optcd create mode 100644 Documentation/cdrom/packet-writing.txt create mode 100644 Documentation/cdrom/sbpcd create mode 100644 Documentation/cdrom/sjcd create mode 100644 Documentation/cdrom/sonycd535 create mode 100644 Documentation/cli-sti-removal.txt create mode 100644 Documentation/computone.txt create mode 100644 Documentation/cpqarray.txt create mode 100644 Documentation/cpu-freq/amd-powernow.txt create mode 100644 Documentation/cpu-freq/core.txt create mode 100644 Documentation/cpu-freq/cpu-drivers.txt create mode 100644 Documentation/cpu-freq/cpufreq-nforce2.txt create mode 100644 Documentation/cpu-freq/governors.txt create mode 100644 Documentation/cpu-freq/index.txt create mode 100644 Documentation/cpu-freq/user-guide.txt create mode 100644 Documentation/cpusets.txt create mode 100644 Documentation/cris/README create mode 100644 Documentation/crypto/api-intro.txt create mode 100644 Documentation/crypto/descore-readme.txt create mode 100644 Documentation/debugging-modules.txt create mode 100644 Documentation/device-mapper/dm-io.txt create mode 100644 Documentation/device-mapper/kcopyd.txt create mode 100644 Documentation/device-mapper/linear.txt create mode 100644 Documentation/device-mapper/striped.txt create mode 100644 Documentation/device-mapper/zero.txt create mode 100644 Documentation/devices.txt create mode 100644 Documentation/digiepca.txt create mode 100644 Documentation/dnotify.txt create mode 100644 Documentation/driver-model/binding.txt create mode 100644 Documentation/driver-model/bus.txt create mode 100644 Documentation/driver-model/class.txt create mode 100644 Documentation/driver-model/device.txt create mode 100644 Documentation/driver-model/driver.txt create mode 100644 Documentation/driver-model/interface.txt create mode 100644 Documentation/driver-model/overview.txt create mode 100644 Documentation/driver-model/platform.txt create mode 100644 Documentation/driver-model/porting.txt create mode 100644 Documentation/dvb/README.dibusb create mode 100644 Documentation/dvb/avermedia.txt create mode 100644 Documentation/dvb/bt8xx.txt create mode 100644 Documentation/dvb/cards.txt create mode 100644 Documentation/dvb/contributors.txt create mode 100644 Documentation/dvb/faq.txt create mode 100644 Documentation/dvb/get_dvb_firmware create mode 100644 Documentation/dvb/readme.txt create mode 100644 Documentation/dvb/ttusb-dec.txt create mode 100644 Documentation/dvb/udev.txt create mode 100644 Documentation/early-userspace/README create mode 100644 Documentation/early-userspace/buffer-format.txt create mode 100644 Documentation/eisa.txt create mode 100644 Documentation/exception.txt create mode 100644 Documentation/fb/00-INDEX create mode 100644 Documentation/fb/aty128fb.txt create mode 100644 Documentation/fb/cirrusfb.txt create mode 100644 Documentation/fb/framebuffer.txt create mode 100644 Documentation/fb/intel810.txt create mode 100644 Documentation/fb/internals.txt create mode 100644 Documentation/fb/matroxfb.txt create mode 100644 Documentation/fb/modedb.txt create mode 100644 Documentation/fb/pvr2fb.txt create mode 100644 Documentation/fb/pxafb.txt create mode 100644 Documentation/fb/sa1100fb.txt create mode 100644 Documentation/fb/sisfb.txt create mode 100644 Documentation/fb/sstfb.txt create mode 100644 Documentation/fb/tgafb.txt create mode 100644 Documentation/fb/tridentfb.txt create mode 100644 Documentation/fb/vesafb.txt create mode 100644 Documentation/feature-removal-schedule.txt create mode 100644 Documentation/filesystems/00-INDEX create mode 100644 Documentation/filesystems/Exporting create mode 100644 Documentation/filesystems/Locking create mode 100644 Documentation/filesystems/adfs.txt create mode 100644 Documentation/filesystems/affs.txt create mode 100644 Documentation/filesystems/afs.txt create mode 100644 Documentation/filesystems/automount-support.txt create mode 100644 Documentation/filesystems/befs.txt create mode 100644 Documentation/filesystems/bfs.txt create mode 100644 Documentation/filesystems/cifs.txt create mode 100644 Documentation/filesystems/coda.txt create mode 100644 Documentation/filesystems/cramfs.txt create mode 100644 Documentation/filesystems/devfs/ChangeLog create mode 100644 Documentation/filesystems/devfs/README create mode 100644 Documentation/filesystems/devfs/ToDo create mode 100644 Documentation/filesystems/devfs/boot-options create mode 100644 Documentation/filesystems/directory-locking create mode 100644 Documentation/filesystems/ext2.txt create mode 100644 Documentation/filesystems/ext3.txt create mode 100644 Documentation/filesystems/hfs.txt create mode 100644 Documentation/filesystems/hpfs.txt create mode 100644 Documentation/filesystems/isofs.txt create mode 100644 Documentation/filesystems/jfs.txt create mode 100644 Documentation/filesystems/ncpfs.txt create mode 100644 Documentation/filesystems/ntfs.txt create mode 100644 Documentation/filesystems/porting create mode 100644 Documentation/filesystems/proc.txt create mode 100644 Documentation/filesystems/romfs.txt create mode 100644 Documentation/filesystems/smbfs.txt create mode 100644 Documentation/filesystems/sysfs-pci.txt create mode 100644 Documentation/filesystems/sysfs.txt create mode 100644 Documentation/filesystems/sysv-fs.txt create mode 100644 Documentation/filesystems/tmpfs.txt create mode 100644 Documentation/filesystems/udf.txt create mode 100644 Documentation/filesystems/ufs.txt create mode 100644 Documentation/filesystems/vfat.txt create mode 100644 Documentation/filesystems/vfs.txt create mode 100644 Documentation/filesystems/xfs.txt create mode 100644 Documentation/firmware_class/README create mode 100644 Documentation/firmware_class/firmware_sample_driver.c create mode 100644 Documentation/firmware_class/firmware_sample_firmware_class.c create mode 100644 Documentation/firmware_class/hotplug-script create mode 100644 Documentation/floppy.txt create mode 100644 Documentation/ftape.txt create mode 100644 Documentation/fujitsu/frv/README.txt create mode 100644 Documentation/fujitsu/frv/atomic-ops.txt create mode 100644 Documentation/fujitsu/frv/booting.txt create mode 100644 Documentation/fujitsu/frv/clock.txt create mode 100644 Documentation/fujitsu/frv/configuring.txt create mode 100644 Documentation/fujitsu/frv/features.txt create mode 100644 Documentation/fujitsu/frv/gdbinit create mode 100644 Documentation/fujitsu/frv/gdbstub.txt create mode 100644 Documentation/fujitsu/frv/mmu-layout.txt create mode 100644 Documentation/hayes-esp.txt create mode 100644 Documentation/highuid.txt create mode 100644 Documentation/hpet.txt create mode 100644 Documentation/hw_random.txt create mode 100644 Documentation/i2c/busses/i2c-ali1535 create mode 100644 Documentation/i2c/busses/i2c-ali1563 create mode 100644 Documentation/i2c/busses/i2c-ali15x3 create mode 100644 Documentation/i2c/busses/i2c-amd756 create mode 100644 Documentation/i2c/busses/i2c-amd8111 create mode 100644 Documentation/i2c/busses/i2c-i801 create mode 100644 Documentation/i2c/busses/i2c-i810 create mode 100644 Documentation/i2c/busses/i2c-nforce2 create mode 100644 Documentation/i2c/busses/i2c-parport create mode 100644 Documentation/i2c/busses/i2c-parport-light create mode 100644 Documentation/i2c/busses/i2c-pca-isa create mode 100644 Documentation/i2c/busses/i2c-piix4 create mode 100644 Documentation/i2c/busses/i2c-prosavage create mode 100644 Documentation/i2c/busses/i2c-savage4 create mode 100644 Documentation/i2c/busses/i2c-sis5595 create mode 100644 Documentation/i2c/busses/i2c-sis630 create mode 100644 Documentation/i2c/busses/i2c-sis69x create mode 100644 Documentation/i2c/busses/i2c-via create mode 100644 Documentation/i2c/busses/i2c-viapro create mode 100644 Documentation/i2c/busses/i2c-voodoo3 create mode 100644 Documentation/i2c/busses/scx200_acb create mode 100644 Documentation/i2c/chips/smsc47b397.txt create mode 100644 Documentation/i2c/dev-interface create mode 100644 Documentation/i2c/functionality create mode 100644 Documentation/i2c/i2c-protocol create mode 100644 Documentation/i2c/i2c-stub create mode 100644 Documentation/i2c/porting-clients create mode 100644 Documentation/i2c/smbus-protocol create mode 100644 Documentation/i2c/summary create mode 100644 Documentation/i2c/sysfs-interface create mode 100644 Documentation/i2c/ten-bit-addresses create mode 100644 Documentation/i2c/writing-clients create mode 100644 Documentation/i2o/README create mode 100644 Documentation/i2o/ioctl create mode 100644 Documentation/i386/IO-APIC.txt create mode 100644 Documentation/i386/boot.txt create mode 100644 Documentation/i386/usb-legacy-support.txt create mode 100644 Documentation/i386/zero-page.txt create mode 100644 Documentation/ia64/IRQ-redir.txt create mode 100644 Documentation/ia64/README create mode 100644 Documentation/ia64/efirtc.txt create mode 100644 Documentation/ia64/fsys.txt create mode 100644 Documentation/ia64/serial.txt create mode 100644 Documentation/ibm-acpi.txt create mode 100644 Documentation/ide.txt create mode 100644 Documentation/infiniband/ipoib.txt create mode 100644 Documentation/infiniband/sysfs.txt create mode 100644 Documentation/infiniband/user_mad.txt create mode 100644 Documentation/initrd.txt create mode 100644 Documentation/input/amijoy.txt create mode 100644 Documentation/input/atarikbd.txt create mode 100644 Documentation/input/cd32.txt create mode 100644 Documentation/input/cs461x.txt create mode 100644 Documentation/input/ff.txt create mode 100644 Documentation/input/gameport-programming.txt create mode 100644 Documentation/input/iforce-protocol.txt create mode 100644 Documentation/input/input-programming.txt create mode 100644 Documentation/input/input.txt create mode 100644 Documentation/input/interactive.fig create mode 100644 Documentation/input/joystick-api.txt create mode 100644 Documentation/input/joystick-parport.txt create mode 100644 Documentation/input/joystick.txt create mode 100644 Documentation/input/shape.fig create mode 100644 Documentation/input/xpad.txt create mode 100644 Documentation/io_ordering.txt create mode 100644 Documentation/ioctl-number.txt create mode 100644 Documentation/ioctl/cdrom.txt create mode 100644 Documentation/ioctl/hdio.txt create mode 100644 Documentation/iostats.txt create mode 100644 Documentation/isapnp.txt create mode 100644 Documentation/isdn/00-INDEX create mode 100644 Documentation/isdn/CREDITS create mode 100644 Documentation/isdn/HiSax.cert create mode 100644 Documentation/isdn/INTERFACE create mode 100644 Documentation/isdn/INTERFACE.fax create mode 100644 Documentation/isdn/README create mode 100644 Documentation/isdn/README.FAQ create mode 100644 Documentation/isdn/README.HiSax create mode 100644 Documentation/isdn/README.act2000 create mode 100644 Documentation/isdn/README.audio create mode 100644 Documentation/isdn/README.avmb1 create mode 100644 Documentation/isdn/README.concap create mode 100644 Documentation/isdn/README.diversion create mode 100644 Documentation/isdn/README.fax create mode 100644 Documentation/isdn/README.hfc-pci create mode 100644 Documentation/isdn/README.hysdn create mode 100644 Documentation/isdn/README.icn create mode 100644 Documentation/isdn/README.pcbit create mode 100644 Documentation/isdn/README.sc create mode 100644 Documentation/isdn/README.syncppp create mode 100644 Documentation/isdn/README.x25 create mode 100644 Documentation/isdn/syncPPP.FAQ create mode 100644 Documentation/java.txt create mode 100644 Documentation/kbuild/00-INDEX create mode 100644 Documentation/kbuild/kconfig-language.txt create mode 100644 Documentation/kbuild/makefiles.txt create mode 100644 Documentation/kbuild/modules.txt create mode 100644 Documentation/kernel-doc-nano-HOWTO.txt create mode 100644 Documentation/kernel-docs.txt create mode 100644 Documentation/kernel-parameters.txt create mode 100644 Documentation/keys.txt create mode 100644 Documentation/kobject.txt create mode 100644 Documentation/laptop-mode.txt create mode 100644 Documentation/ldm.txt create mode 100644 Documentation/locks.txt create mode 100644 Documentation/logo.gif create mode 100644 Documentation/logo.txt create mode 100644 Documentation/m68k/00-INDEX create mode 100644 Documentation/m68k/README.buddha create mode 100644 Documentation/m68k/kernel-options.txt create mode 100644 Documentation/magic-number.txt create mode 100644 Documentation/mandatory.txt create mode 100644 Documentation/mca.txt create mode 100644 Documentation/md.txt create mode 100644 Documentation/memory.txt create mode 100644 Documentation/mips/GT64120.README create mode 100644 Documentation/mips/pci/pci.README create mode 100644 Documentation/mips/time.README create mode 100644 Documentation/mono.txt create mode 100644 Documentation/moxa-smartio create mode 100644 Documentation/mtrr.txt create mode 100644 Documentation/nbd.txt create mode 100644 Documentation/networking/00-INDEX create mode 100644 Documentation/networking/3c359.txt create mode 100644 Documentation/networking/3c505.txt create mode 100644 Documentation/networking/3c509.txt create mode 100644 Documentation/networking/6pack.txt create mode 100644 Documentation/networking/Configurable create mode 100644 Documentation/networking/DLINK.txt create mode 100644 Documentation/networking/NAPI_HOWTO.txt create mode 100644 Documentation/networking/PLIP.txt create mode 100644 Documentation/networking/README.sb1000 create mode 100644 Documentation/networking/TODO create mode 100644 Documentation/networking/alias.txt create mode 100644 Documentation/networking/arcnet-hardware.txt create mode 100644 Documentation/networking/arcnet.txt create mode 100644 Documentation/networking/atm.txt create mode 100644 Documentation/networking/ax25.txt create mode 100644 Documentation/networking/baycom.txt create mode 100644 Documentation/networking/bonding.txt create mode 100644 Documentation/networking/bridge.txt create mode 100644 Documentation/networking/comx.txt create mode 100644 Documentation/networking/cops.txt create mode 100644 Documentation/networking/cs89x0.txt create mode 100644 Documentation/networking/de4x5.txt create mode 100644 Documentation/networking/decnet.txt create mode 100644 Documentation/networking/depca.txt create mode 100644 Documentation/networking/dgrs.txt create mode 100644 Documentation/networking/dl2k.txt create mode 100644 Documentation/networking/dmfe.txt create mode 100644 Documentation/networking/driver.txt create mode 100644 Documentation/networking/e100.txt create mode 100644 Documentation/networking/e1000.txt create mode 100644 Documentation/networking/eql.txt create mode 100644 Documentation/networking/ewrk3.txt create mode 100644 Documentation/networking/filter.txt create mode 100644 Documentation/networking/fore200e.txt create mode 100644 Documentation/networking/framerelay.txt create mode 100644 Documentation/networking/gen_stats.txt create mode 100644 Documentation/networking/generic-hdlc.txt create mode 100644 Documentation/networking/ifenslave.c create mode 100644 Documentation/networking/ip-sysctl.txt create mode 100644 Documentation/networking/ip_dynaddr.txt create mode 100644 Documentation/networking/ipddp.txt create mode 100644 Documentation/networking/iphase.txt create mode 100644 Documentation/networking/irda.txt create mode 100644 Documentation/networking/ixgb.txt create mode 100644 Documentation/networking/lapb-module.txt create mode 100644 Documentation/networking/ltpc.txt create mode 100644 Documentation/networking/multicast.txt create mode 100644 Documentation/networking/ncsa-telnet create mode 100644 Documentation/networking/net-modules.txt create mode 100644 Documentation/networking/netconsole.txt create mode 100644 Documentation/networking/netdevices.txt create mode 100644 Documentation/networking/netif-msg.txt create mode 100644 Documentation/networking/olympic.txt create mode 100644 Documentation/networking/packet_mmap.txt create mode 100644 Documentation/networking/pktgen.txt create mode 100644 Documentation/networking/policy-routing.txt create mode 100644 Documentation/networking/ppp_generic.txt create mode 100644 Documentation/networking/proc_net_tcp.txt create mode 100644 Documentation/networking/pt.txt create mode 100644 Documentation/networking/ray_cs.txt create mode 100644 Documentation/networking/routing.txt create mode 100644 Documentation/networking/s2io.txt create mode 100644 Documentation/networking/sctp.txt create mode 100644 Documentation/networking/shaper.txt create mode 100644 Documentation/networking/sis900.txt create mode 100644 Documentation/networking/sk98lin.txt create mode 100644 Documentation/networking/skfp.txt create mode 100644 Documentation/networking/slicecom.hun create mode 100644 Documentation/networking/slicecom.txt create mode 100644 Documentation/networking/smc9.txt create mode 100644 Documentation/networking/smctr.txt create mode 100644 Documentation/networking/tcp.txt create mode 100644 Documentation/networking/tlan.txt create mode 100644 Documentation/networking/tms380tr.txt create mode 100644 Documentation/networking/tuntap.txt create mode 100644 Documentation/networking/vortex.txt create mode 100644 Documentation/networking/wan-router.txt create mode 100644 Documentation/networking/wanpipe.txt create mode 100644 Documentation/networking/wavelan.txt create mode 100644 Documentation/networking/x25-iface.txt create mode 100644 Documentation/networking/x25.txt create mode 100644 Documentation/networking/z8530drv.txt create mode 100644 Documentation/nfsroot.txt create mode 100644 Documentation/nmi_watchdog.txt create mode 100644 Documentation/nommu-mmap.txt create mode 100644 Documentation/numastat.txt create mode 100644 Documentation/oops-tracing.txt create mode 100644 Documentation/paride.txt create mode 100644 Documentation/parisc/00-INDEX create mode 100644 Documentation/parisc/debugging create mode 100644 Documentation/parisc/registers create mode 100644 Documentation/parport-lowlevel.txt create mode 100644 Documentation/parport.txt create mode 100644 Documentation/pci.txt create mode 100644 Documentation/pm.txt create mode 100644 Documentation/pnp.txt create mode 100644 Documentation/power/devices.txt create mode 100644 Documentation/power/interface.txt create mode 100644 Documentation/power/kernel_threads.txt create mode 100644 Documentation/power/pci.txt create mode 100644 Documentation/power/states.txt create mode 100644 Documentation/power/swsusp.txt create mode 100644 Documentation/power/tricks.txt create mode 100644 Documentation/power/video.txt create mode 100644 Documentation/power/video_extension.txt create mode 100644 Documentation/powerpc/00-INDEX create mode 100644 Documentation/powerpc/SBC8260_memory_mapping.txt create mode 100644 Documentation/powerpc/cpu_features.txt create mode 100644 Documentation/powerpc/eeh-pci-error-recovery.txt create mode 100644 Documentation/powerpc/hvcs.txt create mode 100644 Documentation/powerpc/mpc52xx.txt create mode 100644 Documentation/powerpc/ppc_htab.txt create mode 100644 Documentation/powerpc/smp.txt create mode 100644 Documentation/powerpc/sound.txt create mode 100644 Documentation/powerpc/zImage_layout.txt create mode 100644 Documentation/preempt-locking.txt create mode 100644 Documentation/prio_tree.txt create mode 100644 Documentation/ramdisk.txt create mode 100644 Documentation/riscom8.txt create mode 100644 Documentation/rocket.txt create mode 100644 Documentation/rpc-cache.txt create mode 100644 Documentation/rtc.txt create mode 100644 Documentation/s390/3270.ChangeLog create mode 100644 Documentation/s390/3270.txt create mode 100644 Documentation/s390/CommonIO create mode 100644 Documentation/s390/DASD create mode 100644 Documentation/s390/Debugging390.txt create mode 100644 Documentation/s390/TAPE create mode 100644 Documentation/s390/cds.txt create mode 100644 Documentation/s390/config3270.sh create mode 100644 Documentation/s390/crypto/crypto-API.txt create mode 100644 Documentation/s390/driver-model.txt create mode 100644 Documentation/s390/monreader.txt create mode 100644 Documentation/s390/s390dbf.txt create mode 100644 Documentation/sched-coding.txt create mode 100644 Documentation/sched-design.txt create mode 100644 Documentation/sched-domains.txt create mode 100644 Documentation/sched-stats.txt create mode 100644 Documentation/scsi/00-INDEX create mode 100644 Documentation/scsi/53c700.txt create mode 100644 Documentation/scsi/BusLogic.txt create mode 100644 Documentation/scsi/ChangeLog.1992-1997 create mode 100644 Documentation/scsi/ChangeLog.ips create mode 100644 Documentation/scsi/ChangeLog.megaraid create mode 100644 Documentation/scsi/ChangeLog.ncr53c8xx create mode 100644 Documentation/scsi/ChangeLog.sym53c8xx create mode 100644 Documentation/scsi/ChangeLog.sym53c8xx_2 create mode 100644 Documentation/scsi/FlashPoint.txt create mode 100644 Documentation/scsi/LICENSE.FlashPoint create mode 100644 Documentation/scsi/Mylex.txt create mode 100644 Documentation/scsi/NinjaSCSI.txt create mode 100644 Documentation/scsi/aha152x.txt create mode 100644 Documentation/scsi/aic79xx.txt create mode 100644 Documentation/scsi/aic7xxx.txt create mode 100644 Documentation/scsi/aic7xxx_old.txt create mode 100644 Documentation/scsi/cpqfc.txt create mode 100644 Documentation/scsi/dc395x.txt create mode 100644 Documentation/scsi/dpti.txt create mode 100644 Documentation/scsi/dtc3x80.txt create mode 100644 Documentation/scsi/g_NCR5380.txt create mode 100644 Documentation/scsi/ibmmca.txt create mode 100644 Documentation/scsi/in2000.txt create mode 100644 Documentation/scsi/megaraid.txt create mode 100644 Documentation/scsi/ncr53c7xx.txt create mode 100644 Documentation/scsi/ncr53c8xx.txt create mode 100644 Documentation/scsi/osst.txt create mode 100644 Documentation/scsi/ppa.txt create mode 100644 Documentation/scsi/qla2xxx.revision.notes create mode 100644 Documentation/scsi/qlogicfas.txt create mode 100644 Documentation/scsi/qlogicisp.txt create mode 100644 Documentation/scsi/scsi-generic.txt create mode 100644 Documentation/scsi/scsi.txt create mode 100644 Documentation/scsi/scsi_mid_low_api.txt create mode 100644 Documentation/scsi/st.txt create mode 100644 Documentation/scsi/sym53c500_cs.txt create mode 100644 Documentation/scsi/sym53c8xx_2.txt create mode 100644 Documentation/scsi/tmscsim.txt create mode 100644 Documentation/seclvl.txt create mode 100644 Documentation/serial-console.txt create mode 100644 Documentation/serial/driver create mode 100644 Documentation/sgi-visws.txt create mode 100644 Documentation/sh/kgdb.txt create mode 100644 Documentation/sh/new-machine.txt create mode 100644 Documentation/smart-config.txt create mode 100644 Documentation/smp.txt create mode 100644 Documentation/sonypi.txt create mode 100644 Documentation/sound/alsa/ALSA-Configuration.txt create mode 100644 Documentation/sound/alsa/Audigy-mixer.txt create mode 100644 Documentation/sound/alsa/Bt87x.txt create mode 100644 Documentation/sound/alsa/CMIPCI.txt create mode 100644 Documentation/sound/alsa/ControlNames.txt create mode 100644 Documentation/sound/alsa/DocBook/alsa-driver-api.tmpl create mode 100644 Documentation/sound/alsa/DocBook/writing-an-alsa-driver.tmpl create mode 100644 Documentation/sound/alsa/Joystick.txt create mode 100644 Documentation/sound/alsa/MIXART.txt create mode 100644 Documentation/sound/alsa/OSS-Emulation.txt create mode 100644 Documentation/sound/alsa/Procfile.txt create mode 100644 Documentation/sound/alsa/SB-Live-mixer.txt create mode 100644 Documentation/sound/alsa/VIA82xx-mixer.txt create mode 100644 Documentation/sound/alsa/hda_codec.txt create mode 100644 Documentation/sound/alsa/seq_oss.html create mode 100644 Documentation/sound/alsa/serial-u16550.txt create mode 100644 Documentation/sound/oss/AD1816 create mode 100644 Documentation/sound/oss/ALS create mode 100644 Documentation/sound/oss/AWE32 create mode 100644 Documentation/sound/oss/AudioExcelDSP16 create mode 100644 Documentation/sound/oss/CMI8330 create mode 100644 Documentation/sound/oss/CMI8338 create mode 100644 Documentation/sound/oss/CS4232 create mode 100644 Documentation/sound/oss/ESS create mode 100644 Documentation/sound/oss/ESS1868 create mode 100644 Documentation/sound/oss/INSTALL.awe create mode 100644 Documentation/sound/oss/Introduction create mode 100644 Documentation/sound/oss/MAD16 create mode 100644 Documentation/sound/oss/Maestro create mode 100644 Documentation/sound/oss/Maestro3 create mode 100644 Documentation/sound/oss/MultiSound create mode 100644 Documentation/sound/oss/NEWS create mode 100644 Documentation/sound/oss/NM256 create mode 100644 Documentation/sound/oss/OPL3 create mode 100644 Documentation/sound/oss/OPL3-SA create mode 100644 Documentation/sound/oss/OPL3-SA2 create mode 100644 Documentation/sound/oss/Opti create mode 100644 Documentation/sound/oss/PAS16 create mode 100644 Documentation/sound/oss/PSS create mode 100644 Documentation/sound/oss/PSS-updates create mode 100644 Documentation/sound/oss/README.OSS create mode 100644 Documentation/sound/oss/README.awe create mode 100644 Documentation/sound/oss/README.modules create mode 100644 Documentation/sound/oss/README.ymfsb create mode 100644 Documentation/sound/oss/SoundPro create mode 100644 Documentation/sound/oss/Soundblaster create mode 100644 Documentation/sound/oss/Tropez+ create mode 100644 Documentation/sound/oss/VIA-chipset create mode 100644 Documentation/sound/oss/VIBRA16 create mode 100644 Documentation/sound/oss/WaveArtist create mode 100644 Documentation/sound/oss/Wavefront create mode 100644 Documentation/sound/oss/btaudio create mode 100644 Documentation/sound/oss/cs46xx create mode 100644 Documentation/sound/oss/es1370 create mode 100644 Documentation/sound/oss/es1371 create mode 100644 Documentation/sound/oss/mwave create mode 100644 Documentation/sound/oss/rme96xx create mode 100644 Documentation/sound/oss/solo1 create mode 100644 Documentation/sound/oss/sonicvibes create mode 100644 Documentation/sound/oss/ultrasound create mode 100644 Documentation/sound/oss/vwsnd create mode 100644 Documentation/sparc/README-2.5 create mode 100644 Documentation/sparc/sbus_drivers.txt create mode 100644 Documentation/sparse.txt create mode 100644 Documentation/specialix.txt create mode 100644 Documentation/spinlocks.txt create mode 100644 Documentation/stable_api_nonsense.txt create mode 100644 Documentation/stallion.txt create mode 100644 Documentation/svga.txt create mode 100644 Documentation/sx.txt create mode 100644 Documentation/sysctl/README create mode 100644 Documentation/sysctl/abi.txt create mode 100644 Documentation/sysctl/fs.txt create mode 100644 Documentation/sysctl/kernel.txt create mode 100644 Documentation/sysctl/sunrpc.txt create mode 100644 Documentation/sysctl/vm.txt create mode 100644 Documentation/sysrq.txt create mode 100644 Documentation/telephony/ixj.txt create mode 100644 Documentation/time_interpolators.txt create mode 100644 Documentation/tipar.txt create mode 100644 Documentation/tty.txt create mode 100644 Documentation/uml/UserModeLinux-HOWTO.txt create mode 100644 Documentation/unicode.txt create mode 100644 Documentation/usb/CREDITS create mode 100644 Documentation/usb/URB.txt create mode 100644 Documentation/usb/acm.txt create mode 100644 Documentation/usb/auerswald.txt create mode 100644 Documentation/usb/bluetooth.txt create mode 100644 Documentation/usb/dma.txt create mode 100644 Documentation/usb/ehci.txt create mode 100644 Documentation/usb/error-codes.txt create mode 100644 Documentation/usb/gadget_serial.txt create mode 100644 Documentation/usb/hiddev.txt create mode 100644 Documentation/usb/hotplug.txt create mode 100644 Documentation/usb/ibmcam.txt create mode 100644 Documentation/usb/linux.inf create mode 100644 Documentation/usb/mtouchusb.txt create mode 100644 Documentation/usb/ohci.txt create mode 100644 Documentation/usb/ov511.txt create mode 100644 Documentation/usb/proc_usb_info.txt create mode 100644 Documentation/usb/rio.txt create mode 100644 Documentation/usb/se401.txt create mode 100644 Documentation/usb/sn9c102.txt create mode 100644 Documentation/usb/stv680.txt create mode 100644 Documentation/usb/uhci.txt create mode 100644 Documentation/usb/usb-help.txt create mode 100644 Documentation/usb/usb-serial.txt create mode 100644 Documentation/usb/usbmon.txt create mode 100644 Documentation/usb/w9968cf.txt create mode 100644 Documentation/video4linux/API.html create mode 100644 Documentation/video4linux/CARDLIST.bttv create mode 100644 Documentation/video4linux/CARDLIST.saa7134 create mode 100644 Documentation/video4linux/CARDLIST.tuner create mode 100644 Documentation/video4linux/CQcam.txt create mode 100644 Documentation/video4linux/README.cpia create mode 100644 Documentation/video4linux/README.cx88 create mode 100644 Documentation/video4linux/README.ir create mode 100644 Documentation/video4linux/README.saa7134 create mode 100644 Documentation/video4linux/Zoran create mode 100644 Documentation/video4linux/bttv/CONTRIBUTORS create mode 100644 Documentation/video4linux/bttv/Cards create mode 100644 Documentation/video4linux/bttv/ICs create mode 100644 Documentation/video4linux/bttv/Insmod-options create mode 100644 Documentation/video4linux/bttv/MAKEDEV create mode 100644 Documentation/video4linux/bttv/Modprobe.conf create mode 100644 Documentation/video4linux/bttv/Modules.conf create mode 100644 Documentation/video4linux/bttv/PROBLEMS create mode 100644 Documentation/video4linux/bttv/README create mode 100644 Documentation/video4linux/bttv/README.WINVIEW create mode 100644 Documentation/video4linux/bttv/README.freeze create mode 100644 Documentation/video4linux/bttv/README.quirks create mode 100644 Documentation/video4linux/bttv/Sound-FAQ create mode 100644 Documentation/video4linux/bttv/Specs create mode 100644 Documentation/video4linux/bttv/THANKS create mode 100644 Documentation/video4linux/bttv/Tuners create mode 100644 Documentation/video4linux/meye.txt create mode 100644 Documentation/video4linux/radiotrack.txt create mode 100644 Documentation/video4linux/w9966.txt create mode 100644 Documentation/video4linux/zr36120.txt create mode 100644 Documentation/vm/balance create mode 100644 Documentation/vm/hugetlbpage.txt create mode 100644 Documentation/vm/locking create mode 100644 Documentation/vm/numa create mode 100644 Documentation/vm/overcommit-accounting create mode 100644 Documentation/voyager.txt create mode 100644 Documentation/w1/w1.generic create mode 100644 Documentation/watchdog/pcwd-watchdog.txt create mode 100644 Documentation/watchdog/watchdog-api.txt create mode 100644 Documentation/watchdog/watchdog.txt create mode 100644 Documentation/x86_64/boot-options.txt create mode 100644 Documentation/x86_64/mm.txt create mode 100644 Documentation/xterm-linux.xpm create mode 100644 Documentation/zorro.txt create mode 100644 MAINTAINERS create mode 100644 Makefile create mode 100644 README create mode 100644 REPORTING-BUGS create mode 100644 arch/alpha/Kconfig create mode 100644 arch/alpha/Kconfig.debug create mode 100644 arch/alpha/Makefile create mode 100644 arch/alpha/boot/Makefile create mode 100644 arch/alpha/boot/bootloader.lds create mode 100644 arch/alpha/boot/bootp.c create mode 100644 arch/alpha/boot/bootpz.c create mode 100644 arch/alpha/boot/head.S create mode 100644 arch/alpha/boot/main.c create mode 100644 arch/alpha/boot/misc.c create mode 100644 arch/alpha/boot/tools/mkbb.c create mode 100644 arch/alpha/boot/tools/objstrip.c create mode 100644 arch/alpha/defconfig create mode 100644 arch/alpha/kernel/Makefile create mode 100644 arch/alpha/kernel/alpha_ksyms.c create mode 100644 arch/alpha/kernel/asm-offsets.c create mode 100644 arch/alpha/kernel/console.c create mode 100644 arch/alpha/kernel/core_apecs.c create mode 100644 arch/alpha/kernel/core_cia.c create mode 100644 arch/alpha/kernel/core_irongate.c create mode 100644 arch/alpha/kernel/core_lca.c create mode 100644 arch/alpha/kernel/core_marvel.c create mode 100644 arch/alpha/kernel/core_mcpcia.c create mode 100644 arch/alpha/kernel/core_polaris.c create mode 100644 arch/alpha/kernel/core_t2.c create mode 100644 arch/alpha/kernel/core_titan.c create mode 100644 arch/alpha/kernel/core_tsunami.c create mode 100644 arch/alpha/kernel/core_wildfire.c create mode 100644 arch/alpha/kernel/entry.S create mode 100644 arch/alpha/kernel/err_common.c create mode 100644 arch/alpha/kernel/err_ev6.c create mode 100644 arch/alpha/kernel/err_ev7.c create mode 100644 arch/alpha/kernel/err_impl.h create mode 100644 arch/alpha/kernel/err_marvel.c create mode 100644 arch/alpha/kernel/err_titan.c create mode 100644 arch/alpha/kernel/es1888.c create mode 100644 arch/alpha/kernel/gct.c create mode 100644 arch/alpha/kernel/head.S create mode 100644 arch/alpha/kernel/init_task.c create mode 100644 arch/alpha/kernel/io.c create mode 100644 arch/alpha/kernel/irq.c create mode 100644 arch/alpha/kernel/irq_alpha.c create mode 100644 arch/alpha/kernel/irq_i8259.c create mode 100644 arch/alpha/kernel/irq_impl.h create mode 100644 arch/alpha/kernel/irq_pyxis.c create mode 100644 arch/alpha/kernel/irq_srm.c create mode 100644 arch/alpha/kernel/machvec_impl.h create mode 100644 arch/alpha/kernel/module.c create mode 100644 arch/alpha/kernel/ns87312.c create mode 100644 arch/alpha/kernel/osf_sys.c create mode 100644 arch/alpha/kernel/pci-noop.c create mode 100644 arch/alpha/kernel/pci.c create mode 100644 arch/alpha/kernel/pci_impl.h create mode 100644 arch/alpha/kernel/pci_iommu.c create mode 100644 arch/alpha/kernel/process.c create mode 100644 arch/alpha/kernel/proto.h create mode 100644 arch/alpha/kernel/ptrace.c create mode 100644 arch/alpha/kernel/semaphore.c create mode 100644 arch/alpha/kernel/setup.c create mode 100644 arch/alpha/kernel/signal.c create mode 100644 arch/alpha/kernel/smc37c669.c create mode 100644 arch/alpha/kernel/smc37c93x.c create mode 100644 arch/alpha/kernel/smp.c create mode 100644 arch/alpha/kernel/srm_env.c create mode 100644 arch/alpha/kernel/srmcons.c create mode 100644 arch/alpha/kernel/sys_alcor.c create mode 100644 arch/alpha/kernel/sys_cabriolet.c create mode 100644 arch/alpha/kernel/sys_dp264.c create mode 100644 arch/alpha/kernel/sys_eb64p.c create mode 100644 arch/alpha/kernel/sys_eiger.c create mode 100644 arch/alpha/kernel/sys_jensen.c create mode 100644 arch/alpha/kernel/sys_marvel.c create mode 100644 arch/alpha/kernel/sys_miata.c create mode 100644 arch/alpha/kernel/sys_mikasa.c create mode 100644 arch/alpha/kernel/sys_nautilus.c create mode 100644 arch/alpha/kernel/sys_noritake.c create mode 100644 arch/alpha/kernel/sys_rawhide.c create mode 100644 arch/alpha/kernel/sys_ruffian.c create mode 100644 arch/alpha/kernel/sys_rx164.c create mode 100644 arch/alpha/kernel/sys_sable.c create mode 100644 arch/alpha/kernel/sys_sio.c create mode 100644 arch/alpha/kernel/sys_sx164.c create mode 100644 arch/alpha/kernel/sys_takara.c create mode 100644 arch/alpha/kernel/sys_titan.c create mode 100644 arch/alpha/kernel/sys_wildfire.c create mode 100644 arch/alpha/kernel/systbls.S create mode 100644 arch/alpha/kernel/time.c create mode 100644 arch/alpha/kernel/traps.c create mode 100644 arch/alpha/kernel/vmlinux.lds.S create mode 100644 arch/alpha/lib/Makefile create mode 100644 arch/alpha/lib/callback_srm.S create mode 100644 arch/alpha/lib/checksum.c create mode 100644 arch/alpha/lib/clear_page.S create mode 100644 arch/alpha/lib/clear_user.S create mode 100644 arch/alpha/lib/copy_page.S create mode 100644 arch/alpha/lib/copy_user.S create mode 100644 arch/alpha/lib/csum_ipv6_magic.S create mode 100644 arch/alpha/lib/csum_partial_copy.c create mode 100644 arch/alpha/lib/dbg_current.S create mode 100644 arch/alpha/lib/dbg_stackcheck.S create mode 100644 arch/alpha/lib/dbg_stackkill.S create mode 100644 arch/alpha/lib/dec_and_lock.c create mode 100644 arch/alpha/lib/divide.S create mode 100644 arch/alpha/lib/ev6-clear_page.S create mode 100644 arch/alpha/lib/ev6-clear_user.S create mode 100644 arch/alpha/lib/ev6-copy_page.S create mode 100644 arch/alpha/lib/ev6-copy_user.S create mode 100644 arch/alpha/lib/ev6-csum_ipv6_magic.S create mode 100644 arch/alpha/lib/ev6-divide.S create mode 100644 arch/alpha/lib/ev6-memchr.S create mode 100644 arch/alpha/lib/ev6-memcpy.S create mode 100644 arch/alpha/lib/ev6-memset.S create mode 100644 arch/alpha/lib/ev6-strncpy_from_user.S create mode 100644 arch/alpha/lib/ev6-stxcpy.S create mode 100644 arch/alpha/lib/ev6-stxncpy.S create mode 100644 arch/alpha/lib/ev67-strcat.S create mode 100644 arch/alpha/lib/ev67-strchr.S create mode 100644 arch/alpha/lib/ev67-strlen.S create mode 100644 arch/alpha/lib/ev67-strlen_user.S create mode 100644 arch/alpha/lib/ev67-strncat.S create mode 100644 arch/alpha/lib/ev67-strrchr.S create mode 100644 arch/alpha/lib/fpreg.c create mode 100644 arch/alpha/lib/memchr.S create mode 100644 arch/alpha/lib/memcpy.c create mode 100644 arch/alpha/lib/memmove.S create mode 100644 arch/alpha/lib/memset.S create mode 100644 arch/alpha/lib/srm_printk.c create mode 100644 arch/alpha/lib/srm_puts.c create mode 100644 arch/alpha/lib/stacktrace.c create mode 100644 arch/alpha/lib/strcasecmp.c create mode 100644 arch/alpha/lib/strcat.S create mode 100644 arch/alpha/lib/strchr.S create mode 100644 arch/alpha/lib/strcpy.S create mode 100644 arch/alpha/lib/strlen.S create mode 100644 arch/alpha/lib/strlen_user.S create mode 100644 arch/alpha/lib/strncat.S create mode 100644 arch/alpha/lib/strncpy.S create mode 100644 arch/alpha/lib/strncpy_from_user.S create mode 100644 arch/alpha/lib/strrchr.S create mode 100644 arch/alpha/lib/stxcpy.S create mode 100644 arch/alpha/lib/stxncpy.S create mode 100644 arch/alpha/lib/udelay.c create mode 100644 arch/alpha/math-emu/Makefile create mode 100644 arch/alpha/math-emu/math.c create mode 100644 arch/alpha/math-emu/qrnnd.S create mode 100644 arch/alpha/math-emu/sfp-util.h create mode 100644 arch/alpha/mm/Makefile create mode 100644 arch/alpha/mm/extable.c create mode 100644 arch/alpha/mm/fault.c create mode 100644 arch/alpha/mm/init.c create mode 100644 arch/alpha/mm/numa.c create mode 100644 arch/alpha/mm/remap.c create mode 100644 arch/alpha/oprofile/Kconfig create mode 100644 arch/alpha/oprofile/Makefile create mode 100644 arch/alpha/oprofile/common.c create mode 100644 arch/alpha/oprofile/op_impl.h create mode 100644 arch/alpha/oprofile/op_model_ev4.c create mode 100644 arch/alpha/oprofile/op_model_ev5.c create mode 100644 arch/alpha/oprofile/op_model_ev6.c create mode 100644 arch/alpha/oprofile/op_model_ev67.c create mode 100644 arch/arm/Kconfig create mode 100644 arch/arm/Kconfig.debug create mode 100644 arch/arm/Makefile create mode 100644 arch/arm/boot/Makefile create mode 100644 arch/arm/boot/bootp/Makefile create mode 100644 arch/arm/boot/bootp/bootp.lds create mode 100644 arch/arm/boot/bootp/init.S create mode 100644 arch/arm/boot/bootp/initrd.S create mode 100644 arch/arm/boot/bootp/kernel.S create mode 100644 arch/arm/boot/compressed/Makefile create mode 100644 arch/arm/boot/compressed/Makefile.debug create mode 100644 arch/arm/boot/compressed/big-endian.S create mode 100644 arch/arm/boot/compressed/head-clps7500.S create mode 100644 arch/arm/boot/compressed/head-epxa10db.S create mode 100644 arch/arm/boot/compressed/head-l7200.S create mode 100644 arch/arm/boot/compressed/head-sa1100.S create mode 100644 arch/arm/boot/compressed/head-shark.S create mode 100644 arch/arm/boot/compressed/head-sharpsl.S create mode 100644 arch/arm/boot/compressed/head-xscale.S create mode 100644 arch/arm/boot/compressed/head.S create mode 100644 arch/arm/boot/compressed/ice-dcc.S create mode 100644 arch/arm/boot/compressed/ll_char_wr.S create mode 100644 arch/arm/boot/compressed/misc.c create mode 100644 arch/arm/boot/compressed/ofw-shark.c create mode 100644 arch/arm/boot/compressed/piggy.S create mode 100644 arch/arm/boot/compressed/vmlinux.lds.in create mode 100644 arch/arm/boot/install.sh create mode 100644 arch/arm/common/Kconfig create mode 100644 arch/arm/common/Makefile create mode 100644 arch/arm/common/amba.c create mode 100644 arch/arm/common/dmabounce.c create mode 100644 arch/arm/common/icst307.c create mode 100644 arch/arm/common/icst525.c create mode 100644 arch/arm/common/locomo.c create mode 100644 arch/arm/common/rtctime.c create mode 100644 arch/arm/common/sa1111.c create mode 100644 arch/arm/common/scoop.c create mode 100644 arch/arm/common/sharpsl_param.c create mode 100644 arch/arm/common/time-acorn.c create mode 100644 arch/arm/common/via82c505.c create mode 100644 arch/arm/configs/assabet_defconfig create mode 100644 arch/arm/configs/badge4_defconfig create mode 100644 arch/arm/configs/bast_defconfig create mode 100644 arch/arm/configs/cerfcube_defconfig create mode 100644 arch/arm/configs/clps7500_defconfig create mode 100644 arch/arm/configs/ebsa110_defconfig create mode 100644 arch/arm/configs/edb7211_defconfig create mode 100644 arch/arm/configs/enp2611_defconfig create mode 100644 arch/arm/configs/ep80219_defconfig create mode 100644 arch/arm/configs/epxa10db_defconfig create mode 100644 arch/arm/configs/footbridge_defconfig create mode 100644 arch/arm/configs/fortunet_defconfig create mode 100644 arch/arm/configs/h3600_defconfig create mode 100644 arch/arm/configs/h7201_defconfig create mode 100644 arch/arm/configs/h7202_defconfig create mode 100644 arch/arm/configs/hackkit_defconfig create mode 100644 arch/arm/configs/integrator_defconfig create mode 100644 arch/arm/configs/iq31244_defconfig create mode 100644 arch/arm/configs/iq80321_defconfig create mode 100644 arch/arm/configs/iq80331_defconfig create mode 100644 arch/arm/configs/iq80332_defconfig create mode 100644 arch/arm/configs/ixdp2400_defconfig create mode 100644 arch/arm/configs/ixdp2401_defconfig create mode 100644 arch/arm/configs/ixdp2800_defconfig create mode 100644 arch/arm/configs/ixdp2801_defconfig create mode 100644 arch/arm/configs/ixp4xx_defconfig create mode 100644 arch/arm/configs/jornada720_defconfig create mode 100644 arch/arm/configs/lart_defconfig create mode 100644 arch/arm/configs/lpd7a400_defconfig create mode 100644 arch/arm/configs/lpd7a404_defconfig create mode 100644 arch/arm/configs/lubbock_defconfig create mode 100644 arch/arm/configs/lusl7200_defconfig create mode 100644 arch/arm/configs/mainstone_defconfig create mode 100644 arch/arm/configs/mx1ads_defconfig create mode 100644 arch/arm/configs/neponset_defconfig create mode 100644 arch/arm/configs/netwinder_defconfig create mode 100644 arch/arm/configs/omap_h2_1610_defconfig create mode 100644 arch/arm/configs/omnimeter_defconfig create mode 100644 arch/arm/configs/pleb_defconfig create mode 100644 arch/arm/configs/pxa255-idp_defconfig create mode 100644 arch/arm/configs/rpc_defconfig create mode 100644 arch/arm/configs/s3c2410_defconfig create mode 100644 arch/arm/configs/shannon_defconfig create mode 100644 arch/arm/configs/shark_defconfig create mode 100644 arch/arm/configs/simpad_defconfig create mode 100644 arch/arm/configs/smdk2410_defconfig create mode 100644 arch/arm/configs/versatile_defconfig create mode 100644 arch/arm/kernel/Makefile create mode 100644 arch/arm/kernel/apm.c create mode 100644 arch/arm/kernel/arch.c create mode 100644 arch/arm/kernel/armksyms.c create mode 100644 arch/arm/kernel/arthur.c create mode 100644 arch/arm/kernel/asm-offsets.c create mode 100644 arch/arm/kernel/bios32.c create mode 100644 arch/arm/kernel/calls.S create mode 100644 arch/arm/kernel/compat.c create mode 100644 arch/arm/kernel/debug.S create mode 100644 arch/arm/kernel/dma-isa.c create mode 100644 arch/arm/kernel/dma.c create mode 100644 arch/arm/kernel/ecard.c create mode 100644 arch/arm/kernel/entry-armv.S create mode 100644 arch/arm/kernel/entry-common.S create mode 100644 arch/arm/kernel/entry-header.S create mode 100644 arch/arm/kernel/fiq.c create mode 100644 arch/arm/kernel/head.S create mode 100644 arch/arm/kernel/init_task.c create mode 100644 arch/arm/kernel/io.c create mode 100644 arch/arm/kernel/irq.c create mode 100644 arch/arm/kernel/isa.c create mode 100644 arch/arm/kernel/iwmmxt.S create mode 100644 arch/arm/kernel/module.c create mode 100644 arch/arm/kernel/process.c create mode 100644 arch/arm/kernel/ptrace.c create mode 100644 arch/arm/kernel/ptrace.h create mode 100644 arch/arm/kernel/semaphore.c create mode 100644 arch/arm/kernel/setup.c create mode 100644 arch/arm/kernel/signal.c create mode 100644 arch/arm/kernel/smp.c create mode 100644 arch/arm/kernel/sys_arm.c create mode 100644 arch/arm/kernel/time.c create mode 100644 arch/arm/kernel/traps.c create mode 100644 arch/arm/kernel/vmlinux.lds.S create mode 100644 arch/arm/lib/Makefile create mode 100644 arch/arm/lib/ashldi3.c create mode 100644 arch/arm/lib/ashrdi3.c create mode 100644 arch/arm/lib/backtrace.S create mode 100644 arch/arm/lib/changebit.S create mode 100644 arch/arm/lib/clearbit.S create mode 100644 arch/arm/lib/copy_page.S create mode 100644 arch/arm/lib/csumipv6.S create mode 100644 arch/arm/lib/csumpartial.S create mode 100644 arch/arm/lib/csumpartialcopy.S create mode 100644 arch/arm/lib/csumpartialcopygeneric.S create mode 100644 arch/arm/lib/csumpartialcopyuser.S create mode 100644 arch/arm/lib/delay.S create mode 100644 arch/arm/lib/div64.S create mode 100644 arch/arm/lib/ecard.S create mode 100644 arch/arm/lib/findbit.S create mode 100644 arch/arm/lib/floppydma.S create mode 100644 arch/arm/lib/gcclib.h create mode 100644 arch/arm/lib/getuser.S create mode 100644 arch/arm/lib/io-acorn.S create mode 100644 arch/arm/lib/io-readsb.S create mode 100644 arch/arm/lib/io-readsl.S create mode 100644 arch/arm/lib/io-readsw-armv3.S create mode 100644 arch/arm/lib/io-readsw-armv4.S create mode 100644 arch/arm/lib/io-shark.c create mode 100644 arch/arm/lib/io-writesb.S create mode 100644 arch/arm/lib/io-writesl.S create mode 100644 arch/arm/lib/io-writesw-armv3.S create mode 100644 arch/arm/lib/io-writesw-armv4.S create mode 100644 arch/arm/lib/lib1funcs.S create mode 100644 arch/arm/lib/longlong.h create mode 100644 arch/arm/lib/lshrdi3.c create mode 100644 arch/arm/lib/memchr.S create mode 100644 arch/arm/lib/memcpy.S create mode 100644 arch/arm/lib/memset.S create mode 100644 arch/arm/lib/memzero.S create mode 100644 arch/arm/lib/muldi3.c create mode 100644 arch/arm/lib/putuser.S create mode 100644 arch/arm/lib/setbit.S create mode 100644 arch/arm/lib/strchr.S create mode 100644 arch/arm/lib/strncpy_from_user.S create mode 100644 arch/arm/lib/strnlen_user.S create mode 100644 arch/arm/lib/strrchr.S create mode 100644 arch/arm/lib/testchangebit.S create mode 100644 arch/arm/lib/testclearbit.S create mode 100644 arch/arm/lib/testsetbit.S create mode 100644 arch/arm/lib/uaccess.S create mode 100644 arch/arm/lib/ucmpdi2.c create mode 100644 arch/arm/lib/udivdi3.c create mode 100644 arch/arm/mach-clps711x/Kconfig create mode 100644 arch/arm/mach-clps711x/Makefile create mode 100644 arch/arm/mach-clps711x/Makefile.boot create mode 100644 arch/arm/mach-clps711x/autcpu12.c create mode 100644 arch/arm/mach-clps711x/cdb89712.c create mode 100644 arch/arm/mach-clps711x/ceiva.c create mode 100644 arch/arm/mach-clps711x/clep7312.c create mode 100644 arch/arm/mach-clps711x/common.h create mode 100644 arch/arm/mach-clps711x/dma.c create mode 100644 arch/arm/mach-clps711x/edb7211-arch.c create mode 100644 arch/arm/mach-clps711x/edb7211-mm.c create mode 100644 arch/arm/mach-clps711x/fortunet.c create mode 100644 arch/arm/mach-clps711x/irq.c create mode 100644 arch/arm/mach-clps711x/mm.c create mode 100644 arch/arm/mach-clps711x/p720t-leds.c create mode 100644 arch/arm/mach-clps711x/p720t.c create mode 100644 arch/arm/mach-clps711x/time.c create mode 100644 arch/arm/mach-clps7500/Makefile create mode 100644 arch/arm/mach-clps7500/Makefile.boot create mode 100644 arch/arm/mach-clps7500/core.c create mode 100644 arch/arm/mach-ebsa110/Makefile create mode 100644 arch/arm/mach-ebsa110/Makefile.boot create mode 100644 arch/arm/mach-ebsa110/core.c create mode 100644 arch/arm/mach-ebsa110/io.c create mode 100644 arch/arm/mach-ebsa110/leds.c create mode 100644 arch/arm/mach-epxa10db/Kconfig create mode 100644 arch/arm/mach-epxa10db/Makefile create mode 100644 arch/arm/mach-epxa10db/Makefile.boot create mode 100644 arch/arm/mach-epxa10db/arch.c create mode 100644 arch/arm/mach-epxa10db/dma.c create mode 100644 arch/arm/mach-epxa10db/irq.c create mode 100644 arch/arm/mach-epxa10db/mm.c create mode 100644 arch/arm/mach-epxa10db/time.c create mode 100644 arch/arm/mach-footbridge/Kconfig create mode 100644 arch/arm/mach-footbridge/Makefile create mode 100644 arch/arm/mach-footbridge/Makefile.boot create mode 100644 arch/arm/mach-footbridge/cats-hw.c create mode 100644 arch/arm/mach-footbridge/cats-pci.c create mode 100644 arch/arm/mach-footbridge/co285.c create mode 100644 arch/arm/mach-footbridge/common.c create mode 100644 arch/arm/mach-footbridge/common.h create mode 100644 arch/arm/mach-footbridge/dc21285-timer.c create mode 100644 arch/arm/mach-footbridge/dc21285.c create mode 100644 arch/arm/mach-footbridge/dma.c create mode 100644 arch/arm/mach-footbridge/ebsa285-leds.c create mode 100644 arch/arm/mach-footbridge/ebsa285-pci.c create mode 100644 arch/arm/mach-footbridge/ebsa285.c create mode 100644 arch/arm/mach-footbridge/isa-irq.c create mode 100644 arch/arm/mach-footbridge/isa-timer.c create mode 100644 arch/arm/mach-footbridge/isa.c create mode 100644 arch/arm/mach-footbridge/netwinder-hw.c create mode 100644 arch/arm/mach-footbridge/netwinder-leds.c create mode 100644 arch/arm/mach-footbridge/netwinder-pci.c create mode 100644 arch/arm/mach-footbridge/personal-pci.c create mode 100644 arch/arm/mach-footbridge/personal.c create mode 100644 arch/arm/mach-footbridge/time.c create mode 100644 arch/arm/mach-h720x/Kconfig create mode 100644 arch/arm/mach-h720x/Makefile create mode 100644 arch/arm/mach-h720x/Makefile.boot create mode 100644 arch/arm/mach-h720x/common.c create mode 100644 arch/arm/mach-h720x/common.h create mode 100644 arch/arm/mach-h720x/cpu-h7201.c create mode 100644 arch/arm/mach-h720x/cpu-h7202.c create mode 100644 arch/arm/mach-h720x/h7201-eval.c create mode 100644 arch/arm/mach-h720x/h7202-eval.c create mode 100644 arch/arm/mach-imx/Kconfig create mode 100644 arch/arm/mach-imx/Makefile create mode 100644 arch/arm/mach-imx/Makefile.boot create mode 100644 arch/arm/mach-imx/dma.c create mode 100644 arch/arm/mach-imx/generic.c create mode 100644 arch/arm/mach-imx/generic.h create mode 100644 arch/arm/mach-imx/irq.c create mode 100644 arch/arm/mach-imx/leds-mx1ads.c create mode 100644 arch/arm/mach-imx/leds.c create mode 100644 arch/arm/mach-imx/leds.h create mode 100644 arch/arm/mach-imx/mx1ads.c create mode 100644 arch/arm/mach-imx/time.c create mode 100644 arch/arm/mach-integrator/Kconfig create mode 100644 arch/arm/mach-integrator/Makefile create mode 100644 arch/arm/mach-integrator/Makefile.boot create mode 100644 arch/arm/mach-integrator/clock.c create mode 100644 arch/arm/mach-integrator/clock.h create mode 100644 arch/arm/mach-integrator/common.h create mode 100644 arch/arm/mach-integrator/core.c create mode 100644 arch/arm/mach-integrator/cpu.c create mode 100644 arch/arm/mach-integrator/dma.c create mode 100644 arch/arm/mach-integrator/impd1.c create mode 100644 arch/arm/mach-integrator/integrator_ap.c create mode 100644 arch/arm/mach-integrator/integrator_cp.c create mode 100644 arch/arm/mach-integrator/leds.c create mode 100644 arch/arm/mach-integrator/lm.c create mode 100644 arch/arm/mach-integrator/pci.c create mode 100644 arch/arm/mach-integrator/pci_v3.c create mode 100644 arch/arm/mach-integrator/time.c create mode 100644 arch/arm/mach-iop3xx/Kconfig create mode 100644 arch/arm/mach-iop3xx/Makefile create mode 100644 arch/arm/mach-iop3xx/Makefile.boot create mode 100644 arch/arm/mach-iop3xx/common.c create mode 100644 arch/arm/mach-iop3xx/iop321-irq.c create mode 100644 arch/arm/mach-iop3xx/iop321-pci.c create mode 100644 arch/arm/mach-iop3xx/iop321-setup.c create mode 100644 arch/arm/mach-iop3xx/iop321-time.c create mode 100644 arch/arm/mach-iop3xx/iop331-irq.c create mode 100644 arch/arm/mach-iop3xx/iop331-pci.c create mode 100644 arch/arm/mach-iop3xx/iop331-setup.c create mode 100644 arch/arm/mach-iop3xx/iop331-time.c create mode 100644 arch/arm/mach-iop3xx/iq31244-mm.c create mode 100644 arch/arm/mach-iop3xx/iq31244-pci.c create mode 100644 arch/arm/mach-iop3xx/iq80321-mm.c create mode 100644 arch/arm/mach-iop3xx/iq80321-pci.c create mode 100644 arch/arm/mach-iop3xx/iq80331-mm.c create mode 100644 arch/arm/mach-iop3xx/iq80331-pci.c create mode 100644 arch/arm/mach-iop3xx/iq80332-mm.c create mode 100644 arch/arm/mach-iop3xx/iq80332-pci.c create mode 100644 arch/arm/mach-ixp2000/Kconfig create mode 100644 arch/arm/mach-ixp2000/Makefile create mode 100644 arch/arm/mach-ixp2000/Makefile.boot create mode 100644 arch/arm/mach-ixp2000/core.c create mode 100644 arch/arm/mach-ixp2000/enp2611.c create mode 100644 arch/arm/mach-ixp2000/ixdp2400.c create mode 100644 arch/arm/mach-ixp2000/ixdp2800.c create mode 100644 arch/arm/mach-ixp2000/ixdp2x00.c create mode 100644 arch/arm/mach-ixp2000/ixdp2x01.c create mode 100644 arch/arm/mach-ixp2000/pci.c create mode 100644 arch/arm/mach-ixp4xx/Kconfig create mode 100644 arch/arm/mach-ixp4xx/Makefile create mode 100644 arch/arm/mach-ixp4xx/Makefile.boot create mode 100644 arch/arm/mach-ixp4xx/common-pci.c create mode 100644 arch/arm/mach-ixp4xx/common.c create mode 100644 arch/arm/mach-ixp4xx/coyote-pci.c create mode 100644 arch/arm/mach-ixp4xx/coyote-setup.c create mode 100644 arch/arm/mach-ixp4xx/gtwx5715-pci.c create mode 100644 arch/arm/mach-ixp4xx/gtwx5715-setup.c create mode 100644 arch/arm/mach-ixp4xx/ixdp425-pci.c create mode 100644 arch/arm/mach-ixp4xx/ixdp425-setup.c create mode 100644 arch/arm/mach-ixp4xx/ixdpg425-pci.c create mode 100644 arch/arm/mach-l7200/Makefile create mode 100644 arch/arm/mach-l7200/Makefile.boot create mode 100644 arch/arm/mach-l7200/core.c create mode 100644 arch/arm/mach-lh7a40x/Kconfig create mode 100644 arch/arm/mach-lh7a40x/Makefile create mode 100644 arch/arm/mach-lh7a40x/Makefile.boot create mode 100644 arch/arm/mach-lh7a40x/arch-kev7a400.c create mode 100644 arch/arm/mach-lh7a40x/arch-lpd7a40x.c create mode 100644 arch/arm/mach-lh7a40x/common.h create mode 100644 arch/arm/mach-lh7a40x/irq-kev7a400.c create mode 100644 arch/arm/mach-lh7a40x/irq-lh7a400.c create mode 100644 arch/arm/mach-lh7a40x/irq-lh7a404.c create mode 100644 arch/arm/mach-lh7a40x/irq-lpd7a40x.c create mode 100644 arch/arm/mach-lh7a40x/time.c create mode 100644 arch/arm/mach-omap/Kconfig create mode 100644 arch/arm/mach-omap/Makefile create mode 100644 arch/arm/mach-omap/Makefile.boot create mode 100644 arch/arm/mach-omap/board-generic.c create mode 100644 arch/arm/mach-omap/board-h2.c create mode 100644 arch/arm/mach-omap/board-h3.c create mode 100644 arch/arm/mach-omap/board-innovator.c create mode 100644 arch/arm/mach-omap/board-netstar.c create mode 100644 arch/arm/mach-omap/board-osk.c create mode 100644 arch/arm/mach-omap/board-perseus2.c create mode 100644 arch/arm/mach-omap/board-voiceblue.c create mode 100644 arch/arm/mach-omap/clock.c create mode 100644 arch/arm/mach-omap/clock.h create mode 100644 arch/arm/mach-omap/common.c create mode 100644 arch/arm/mach-omap/common.h create mode 100644 arch/arm/mach-omap/dma.c create mode 100644 arch/arm/mach-omap/fpga.c create mode 100644 arch/arm/mach-omap/gpio.c create mode 100644 arch/arm/mach-omap/irq.c create mode 100644 arch/arm/mach-omap/leds-h2p2-debug.c create mode 100644 arch/arm/mach-omap/leds-innovator.c create mode 100644 arch/arm/mach-omap/leds-osk.c create mode 100644 arch/arm/mach-omap/leds.c create mode 100644 arch/arm/mach-omap/leds.h create mode 100644 arch/arm/mach-omap/mcbsp.c create mode 100644 arch/arm/mach-omap/mux.c create mode 100644 arch/arm/mach-omap/ocpi.c create mode 100644 arch/arm/mach-omap/pm.c create mode 100644 arch/arm/mach-omap/sleep.S create mode 100644 arch/arm/mach-omap/time.c create mode 100644 arch/arm/mach-omap/usb.c create mode 100644 arch/arm/mach-pxa/Kconfig create mode 100644 arch/arm/mach-pxa/Makefile create mode 100644 arch/arm/mach-pxa/Makefile.boot create mode 100644 arch/arm/mach-pxa/corgi.c create mode 100644 arch/arm/mach-pxa/corgi_ssp.c create mode 100644 arch/arm/mach-pxa/dma.c create mode 100644 arch/arm/mach-pxa/generic.c create mode 100644 arch/arm/mach-pxa/generic.h create mode 100644 arch/arm/mach-pxa/idp.c create mode 100644 arch/arm/mach-pxa/irq.c create mode 100644 arch/arm/mach-pxa/leds-idp.c create mode 100644 arch/arm/mach-pxa/leds-lubbock.c create mode 100644 arch/arm/mach-pxa/leds-mainstone.c create mode 100644 arch/arm/mach-pxa/leds.c create mode 100644 arch/arm/mach-pxa/leds.h create mode 100644 arch/arm/mach-pxa/lubbock.c create mode 100644 arch/arm/mach-pxa/mainstone.c create mode 100644 arch/arm/mach-pxa/pm.c create mode 100644 arch/arm/mach-pxa/poodle.c create mode 100644 arch/arm/mach-pxa/pxa25x.c create mode 100644 arch/arm/mach-pxa/pxa27x.c create mode 100644 arch/arm/mach-pxa/sleep.S create mode 100644 arch/arm/mach-pxa/ssp.c create mode 100644 arch/arm/mach-pxa/time.c create mode 100644 arch/arm/mach-rpc/Makefile create mode 100644 arch/arm/mach-rpc/Makefile.boot create mode 100644 arch/arm/mach-rpc/dma.c create mode 100644 arch/arm/mach-rpc/irq.c create mode 100644 arch/arm/mach-rpc/riscpc.c create mode 100644 arch/arm/mach-s3c2410/Kconfig create mode 100644 arch/arm/mach-s3c2410/Makefile create mode 100644 arch/arm/mach-s3c2410/Makefile.boot create mode 100644 arch/arm/mach-s3c2410/bast-irq.c create mode 100644 arch/arm/mach-s3c2410/bast.h create mode 100644 arch/arm/mach-s3c2410/clock.c create mode 100644 arch/arm/mach-s3c2410/clock.h create mode 100644 arch/arm/mach-s3c2410/cpu.c create mode 100644 arch/arm/mach-s3c2410/cpu.h create mode 100644 arch/arm/mach-s3c2410/devs.c create mode 100644 arch/arm/mach-s3c2410/devs.h create mode 100644 arch/arm/mach-s3c2410/dma.c create mode 100644 arch/arm/mach-s3c2410/gpio.c create mode 100644 arch/arm/mach-s3c2410/irq.c create mode 100644 arch/arm/mach-s3c2410/mach-bast.c create mode 100644 arch/arm/mach-s3c2410/mach-h1940.c create mode 100644 arch/arm/mach-s3c2410/mach-n30.c create mode 100644 arch/arm/mach-s3c2410/mach-nexcoder.c create mode 100644 arch/arm/mach-s3c2410/mach-otom.c create mode 100644 arch/arm/mach-s3c2410/mach-rx3715.c create mode 100644 arch/arm/mach-s3c2410/mach-smdk2410.c create mode 100644 arch/arm/mach-s3c2410/mach-smdk2440.c create mode 100644 arch/arm/mach-s3c2410/mach-vr1000.c create mode 100644 arch/arm/mach-s3c2410/pm.c create mode 100644 arch/arm/mach-s3c2410/pm.h create mode 100644 arch/arm/mach-s3c2410/s3c2410.c create mode 100644 arch/arm/mach-s3c2410/s3c2410.h create mode 100644 arch/arm/mach-s3c2410/s3c2440-dsc.c create mode 100644 arch/arm/mach-s3c2410/s3c2440.c create mode 100644 arch/arm/mach-s3c2410/s3c2440.h create mode 100644 arch/arm/mach-s3c2410/sleep.S create mode 100644 arch/arm/mach-s3c2410/time.c create mode 100644 arch/arm/mach-s3c2410/usb-simtec.c create mode 100644 arch/arm/mach-s3c2410/usb-simtec.h create mode 100644 arch/arm/mach-sa1100/Kconfig create mode 100644 arch/arm/mach-sa1100/Makefile create mode 100644 arch/arm/mach-sa1100/Makefile.boot create mode 100644 arch/arm/mach-sa1100/assabet.c create mode 100644 arch/arm/mach-sa1100/badge4.c create mode 100644 arch/arm/mach-sa1100/cerf.c create mode 100644 arch/arm/mach-sa1100/collie.c create mode 100644 arch/arm/mach-sa1100/cpu-sa1100.c create mode 100644 arch/arm/mach-sa1100/cpu-sa1110.c create mode 100644 arch/arm/mach-sa1100/dma.c create mode 100644 arch/arm/mach-sa1100/generic.c create mode 100644 arch/arm/mach-sa1100/generic.h create mode 100644 arch/arm/mach-sa1100/h3600.c create mode 100644 arch/arm/mach-sa1100/hackkit.c create mode 100644 arch/arm/mach-sa1100/irq.c create mode 100644 arch/arm/mach-sa1100/jornada720.c create mode 100644 arch/arm/mach-sa1100/lart.c create mode 100644 arch/arm/mach-sa1100/leds-assabet.c create mode 100644 arch/arm/mach-sa1100/leds-badge4.c create mode 100644 arch/arm/mach-sa1100/leds-cerf.c create mode 100644 arch/arm/mach-sa1100/leds-hackkit.c create mode 100644 arch/arm/mach-sa1100/leds-lart.c create mode 100644 arch/arm/mach-sa1100/leds-simpad.c create mode 100644 arch/arm/mach-sa1100/leds.c create mode 100644 arch/arm/mach-sa1100/leds.h create mode 100644 arch/arm/mach-sa1100/neponset.c create mode 100644 arch/arm/mach-sa1100/pleb.c create mode 100644 arch/arm/mach-sa1100/pm.c create mode 100644 arch/arm/mach-sa1100/shannon.c create mode 100644 arch/arm/mach-sa1100/simpad.c create mode 100644 arch/arm/mach-sa1100/sleep.S create mode 100644 arch/arm/mach-sa1100/ssp.c create mode 100644 arch/arm/mach-sa1100/time.c create mode 100644 arch/arm/mach-shark/Makefile create mode 100644 arch/arm/mach-shark/Makefile.boot create mode 100644 arch/arm/mach-shark/core.c create mode 100644 arch/arm/mach-shark/dma.c create mode 100644 arch/arm/mach-shark/irq.c create mode 100644 arch/arm/mach-shark/leds.c create mode 100644 arch/arm/mach-shark/pci.c create mode 100644 arch/arm/mach-versatile/Kconfig create mode 100644 arch/arm/mach-versatile/Makefile create mode 100644 arch/arm/mach-versatile/Makefile.boot create mode 100644 arch/arm/mach-versatile/clock.c create mode 100644 arch/arm/mach-versatile/clock.h create mode 100644 arch/arm/mach-versatile/core.c create mode 100644 arch/arm/mach-versatile/core.h create mode 100644 arch/arm/mach-versatile/versatile_ab.c create mode 100644 arch/arm/mach-versatile/versatile_pb.c create mode 100644 arch/arm/mm/Kconfig create mode 100644 arch/arm/mm/Makefile create mode 100644 arch/arm/mm/abort-ev4.S create mode 100644 arch/arm/mm/abort-ev4t.S create mode 100644 arch/arm/mm/abort-ev5t.S create mode 100644 arch/arm/mm/abort-ev5tj.S create mode 100644 arch/arm/mm/abort-ev6.S create mode 100644 arch/arm/mm/abort-lv4t.S create mode 100644 arch/arm/mm/abort-macro.S create mode 100644 arch/arm/mm/alignment.c create mode 100644 arch/arm/mm/blockops.c create mode 100644 arch/arm/mm/cache-v3.S create mode 100644 arch/arm/mm/cache-v4.S create mode 100644 arch/arm/mm/cache-v4wb.S create mode 100644 arch/arm/mm/cache-v4wt.S create mode 100644 arch/arm/mm/cache-v6.S create mode 100644 arch/arm/mm/consistent.c create mode 100644 arch/arm/mm/copypage-v3.S create mode 100644 arch/arm/mm/copypage-v4mc.S create mode 100644 arch/arm/mm/copypage-v4wb.S create mode 100644 arch/arm/mm/copypage-v4wt.S create mode 100644 arch/arm/mm/copypage-v6.c create mode 100644 arch/arm/mm/copypage-xscale.S create mode 100644 arch/arm/mm/discontig.c create mode 100644 arch/arm/mm/extable.c create mode 100644 arch/arm/mm/fault-armv.c create mode 100644 arch/arm/mm/fault.c create mode 100644 arch/arm/mm/fault.h create mode 100644 arch/arm/mm/flush.c create mode 100644 arch/arm/mm/init.c create mode 100644 arch/arm/mm/ioremap.c create mode 100644 arch/arm/mm/minicache.c create mode 100644 arch/arm/mm/mm-armv.c create mode 100644 arch/arm/mm/mmap.c create mode 100644 arch/arm/mm/mmu.c create mode 100644 arch/arm/mm/proc-arm1020.S create mode 100644 arch/arm/mm/proc-arm1020e.S create mode 100644 arch/arm/mm/proc-arm1022.S create mode 100644 arch/arm/mm/proc-arm1026.S create mode 100644 arch/arm/mm/proc-arm6_7.S create mode 100644 arch/arm/mm/proc-arm720.S create mode 100644 arch/arm/mm/proc-arm920.S create mode 100644 arch/arm/mm/proc-arm922.S create mode 100644 arch/arm/mm/proc-arm925.S create mode 100644 arch/arm/mm/proc-arm926.S create mode 100644 arch/arm/mm/proc-macros.S create mode 100644 arch/arm/mm/proc-sa110.S create mode 100644 arch/arm/mm/proc-sa1100.S create mode 100644 arch/arm/mm/proc-syms.c create mode 100644 arch/arm/mm/proc-v6.S create mode 100644 arch/arm/mm/proc-xscale.S create mode 100644 arch/arm/mm/tlb-v3.S create mode 100644 arch/arm/mm/tlb-v4.S create mode 100644 arch/arm/mm/tlb-v4wb.S create mode 100644 arch/arm/mm/tlb-v4wbi.S create mode 100644 arch/arm/mm/tlb-v6.S create mode 100644 arch/arm/nwfpe/ARM-gcc.h create mode 100644 arch/arm/nwfpe/ChangeLog create mode 100644 arch/arm/nwfpe/Makefile create mode 100644 arch/arm/nwfpe/double_cpdo.c create mode 100644 arch/arm/nwfpe/entry.S create mode 100644 arch/arm/nwfpe/entry26.S create mode 100644 arch/arm/nwfpe/extended_cpdo.c create mode 100644 arch/arm/nwfpe/fpa11.c create mode 100644 arch/arm/nwfpe/fpa11.h create mode 100644 arch/arm/nwfpe/fpa11.inl create mode 100644 arch/arm/nwfpe/fpa11_cpdo.c create mode 100644 arch/arm/nwfpe/fpa11_cpdt.c create mode 100644 arch/arm/nwfpe/fpa11_cprt.c create mode 100644 arch/arm/nwfpe/fpmodule.c create mode 100644 arch/arm/nwfpe/fpmodule.h create mode 100644 arch/arm/nwfpe/fpmodule.inl create mode 100644 arch/arm/nwfpe/fpopcode.c create mode 100644 arch/arm/nwfpe/fpopcode.h create mode 100644 arch/arm/nwfpe/fpsr.h create mode 100644 arch/arm/nwfpe/milieu.h create mode 100644 arch/arm/nwfpe/single_cpdo.c create mode 100644 arch/arm/nwfpe/softfloat-macros create mode 100644 arch/arm/nwfpe/softfloat-specialize create mode 100644 arch/arm/nwfpe/softfloat.c create mode 100644 arch/arm/nwfpe/softfloat.h create mode 100644 arch/arm/oprofile/Kconfig create mode 100644 arch/arm/oprofile/Makefile create mode 100644 arch/arm/oprofile/common.c create mode 100644 arch/arm/oprofile/init.c create mode 100644 arch/arm/oprofile/op_arm_model.h create mode 100644 arch/arm/oprofile/op_counter.h create mode 100644 arch/arm/oprofile/op_model_xscale.c create mode 100644 arch/arm/tools/Makefile create mode 100644 arch/arm/tools/gen-mach-types create mode 100644 arch/arm/tools/mach-types create mode 100644 arch/arm/vfp/Makefile create mode 100644 arch/arm/vfp/entry.S create mode 100644 arch/arm/vfp/vfp.h create mode 100644 arch/arm/vfp/vfpdouble.c create mode 100644 arch/arm/vfp/vfphw.S create mode 100644 arch/arm/vfp/vfpinstr.h create mode 100644 arch/arm/vfp/vfpmodule.c create mode 100644 arch/arm/vfp/vfpsingle.c create mode 100644 arch/arm26/ACKNOWLEDGEMENTS create mode 100644 arch/arm26/Kconfig create mode 100644 arch/arm26/Kconfig.debug create mode 100644 arch/arm26/Makefile create mode 100644 arch/arm26/boot/Makefile create mode 100644 arch/arm26/boot/compressed/Makefile create mode 100644 arch/arm26/boot/compressed/head.S create mode 100644 arch/arm26/boot/compressed/hw-bse.c create mode 100644 arch/arm26/boot/compressed/ll_char_wr.S create mode 100644 arch/arm26/boot/compressed/misc.c create mode 100644 arch/arm26/boot/compressed/uncompress.h create mode 100644 arch/arm26/boot/compressed/vmlinux.lds.in create mode 100644 arch/arm26/boot/install.sh create mode 100644 arch/arm26/defconfig create mode 100644 arch/arm26/kernel/Makefile create mode 100644 arch/arm26/kernel/armksyms.c create mode 100644 arch/arm26/kernel/asm-offsets.c create mode 100644 arch/arm26/kernel/calls.S create mode 100644 arch/arm26/kernel/compat.c create mode 100644 arch/arm26/kernel/dma.c create mode 100644 arch/arm26/kernel/ecard.c create mode 100644 arch/arm26/kernel/entry.S create mode 100644 arch/arm26/kernel/fiq.c create mode 100644 arch/arm26/kernel/head.S create mode 100644 arch/arm26/kernel/init_task.c create mode 100644 arch/arm26/kernel/irq.c create mode 100644 arch/arm26/kernel/process.c create mode 100644 arch/arm26/kernel/ptrace.c create mode 100644 arch/arm26/kernel/ptrace.h create mode 100644 arch/arm26/kernel/semaphore.c create mode 100644 arch/arm26/kernel/setup.c create mode 100644 arch/arm26/kernel/signal.c create mode 100644 arch/arm26/kernel/sys_arm.c create mode 100644 arch/arm26/kernel/time.c create mode 100644 arch/arm26/kernel/traps.c create mode 100644 arch/arm26/kernel/vmlinux-arm26-xip.lds.in create mode 100644 arch/arm26/kernel/vmlinux-arm26.lds.in create mode 100644 arch/arm26/kernel/vmlinux.lds.S create mode 100644 arch/arm26/lib/Makefile create mode 100644 arch/arm26/lib/ashldi3.c create mode 100644 arch/arm26/lib/ashrdi3.c create mode 100644 arch/arm26/lib/backtrace.S create mode 100644 arch/arm26/lib/changebit.S create mode 100644 arch/arm26/lib/clearbit.S create mode 100644 arch/arm26/lib/copy_page.S create mode 100644 arch/arm26/lib/csumipv6.S create mode 100644 arch/arm26/lib/csumpartial.S create mode 100644 arch/arm26/lib/csumpartialcopy.S create mode 100644 arch/arm26/lib/csumpartialcopygeneric.S create mode 100644 arch/arm26/lib/csumpartialcopyuser.S create mode 100644 arch/arm26/lib/delay.S create mode 100644 arch/arm26/lib/ecard.S create mode 100644 arch/arm26/lib/findbit.S create mode 100644 arch/arm26/lib/floppydma.S create mode 100644 arch/arm26/lib/gcclib.h create mode 100644 arch/arm26/lib/getuser.S create mode 100644 arch/arm26/lib/io-acorn.S create mode 100644 arch/arm26/lib/io-readsb.S create mode 100644 arch/arm26/lib/io-readsl.S create mode 100644 arch/arm26/lib/io-readsw.S create mode 100644 arch/arm26/lib/io-writesb.S create mode 100644 arch/arm26/lib/io-writesl.S create mode 100644 arch/arm26/lib/io-writesw.S create mode 100644 arch/arm26/lib/kbd.c create mode 100644 arch/arm26/lib/lib1funcs.S create mode 100644 arch/arm26/lib/longlong.h create mode 100644 arch/arm26/lib/lshrdi3.c create mode 100644 arch/arm26/lib/memchr.S create mode 100644 arch/arm26/lib/memcpy.S create mode 100644 arch/arm26/lib/memset.S create mode 100644 arch/arm26/lib/memzero.S create mode 100644 arch/arm26/lib/muldi3.c create mode 100644 arch/arm26/lib/putuser.S create mode 100644 arch/arm26/lib/setbit.S create mode 100644 arch/arm26/lib/strchr.S create mode 100644 arch/arm26/lib/strrchr.S create mode 100644 arch/arm26/lib/testchangebit.S create mode 100644 arch/arm26/lib/testclearbit.S create mode 100644 arch/arm26/lib/testsetbit.S create mode 100644 arch/arm26/lib/uaccess-kernel.S create mode 100644 arch/arm26/lib/uaccess-user.S create mode 100644 arch/arm26/lib/ucmpdi2.c create mode 100644 arch/arm26/lib/udivdi3.c create mode 100644 arch/arm26/machine/Makefile create mode 100644 arch/arm26/machine/dma.c create mode 100644 arch/arm26/machine/irq.c create mode 100644 arch/arm26/machine/latches.c create mode 100644 arch/arm26/mm/Makefile create mode 100644 arch/arm26/mm/extable.c create mode 100644 arch/arm26/mm/fault.c create mode 100644 arch/arm26/mm/fault.h create mode 100644 arch/arm26/mm/init.c create mode 100644 arch/arm26/mm/memc.c create mode 100644 arch/arm26/mm/proc-funcs.S create mode 100644 arch/arm26/mm/small_page.c create mode 100644 arch/arm26/nwfpe/ARM-gcc.h create mode 100644 arch/arm26/nwfpe/ChangeLog create mode 100644 arch/arm26/nwfpe/Makefile create mode 100644 arch/arm26/nwfpe/double_cpdo.c create mode 100644 arch/arm26/nwfpe/entry.S create mode 100644 arch/arm26/nwfpe/extended_cpdo.c create mode 100644 arch/arm26/nwfpe/fpa11.c create mode 100644 arch/arm26/nwfpe/fpa11.h create mode 100644 arch/arm26/nwfpe/fpa11.inl create mode 100644 arch/arm26/nwfpe/fpa11_cpdo.c create mode 100644 arch/arm26/nwfpe/fpa11_cpdt.c create mode 100644 arch/arm26/nwfpe/fpa11_cprt.c create mode 100644 arch/arm26/nwfpe/fpmodule.c create mode 100644 arch/arm26/nwfpe/fpmodule.h create mode 100644 arch/arm26/nwfpe/fpmodule.inl create mode 100644 arch/arm26/nwfpe/fpopcode.c create mode 100644 arch/arm26/nwfpe/fpopcode.h create mode 100644 arch/arm26/nwfpe/fpsr.h create mode 100644 arch/arm26/nwfpe/milieu.h create mode 100644 arch/arm26/nwfpe/single_cpdo.c create mode 100644 arch/arm26/nwfpe/softfloat-macros create mode 100644 arch/arm26/nwfpe/softfloat-specialize create mode 100644 arch/arm26/nwfpe/softfloat.c create mode 100644 arch/arm26/nwfpe/softfloat.h create mode 100644 arch/cris/Kconfig create mode 100644 arch/cris/Kconfig.debug create mode 100644 arch/cris/Makefile create mode 100644 arch/cris/arch-v10/Kconfig create mode 100644 arch/cris/arch-v10/README.mm create mode 100644 arch/cris/arch-v10/boot/Makefile create mode 100644 arch/cris/arch-v10/boot/compressed/Makefile create mode 100644 arch/cris/arch-v10/boot/compressed/README create mode 100644 arch/cris/arch-v10/boot/compressed/decompress.ld create mode 100644 arch/cris/arch-v10/boot/compressed/head.S create mode 100644 arch/cris/arch-v10/boot/compressed/misc.c create mode 100644 arch/cris/arch-v10/boot/rescue/Makefile create mode 100644 arch/cris/arch-v10/boot/rescue/head.S create mode 100644 arch/cris/arch-v10/boot/rescue/kimagerescue.S create mode 100644 arch/cris/arch-v10/boot/rescue/rescue.ld create mode 100644 arch/cris/arch-v10/boot/rescue/testrescue.S create mode 100644 arch/cris/arch-v10/boot/tools/build.c create mode 100644 arch/cris/arch-v10/defconfig create mode 100644 arch/cris/arch-v10/drivers/Kconfig create mode 100644 arch/cris/arch-v10/drivers/Makefile create mode 100644 arch/cris/arch-v10/drivers/axisflashmap.c create mode 100644 arch/cris/arch-v10/drivers/ds1302.c create mode 100644 arch/cris/arch-v10/drivers/eeprom.c create mode 100644 arch/cris/arch-v10/drivers/gpio.c create mode 100644 arch/cris/arch-v10/drivers/i2c.c create mode 100644 arch/cris/arch-v10/drivers/i2c.h create mode 100644 arch/cris/arch-v10/drivers/pcf8563.c create mode 100644 arch/cris/arch-v10/kernel/Makefile create mode 100644 arch/cris/arch-v10/kernel/asm-offsets.c create mode 100644 arch/cris/arch-v10/kernel/crisksyms.c create mode 100644 arch/cris/arch-v10/kernel/debugport.c create mode 100644 arch/cris/arch-v10/kernel/entry.S create mode 100644 arch/cris/arch-v10/kernel/fasttimer.c create mode 100644 arch/cris/arch-v10/kernel/head.S create mode 100644 arch/cris/arch-v10/kernel/irq.c create mode 100644 arch/cris/arch-v10/kernel/kgdb.c create mode 100644 arch/cris/arch-v10/kernel/process.c create mode 100644 arch/cris/arch-v10/kernel/ptrace.c create mode 100644 arch/cris/arch-v10/kernel/setup.c create mode 100644 arch/cris/arch-v10/kernel/shadows.c create mode 100644 arch/cris/arch-v10/kernel/signal.c create mode 100644 arch/cris/arch-v10/kernel/time.c create mode 100644 arch/cris/arch-v10/kernel/traps.c create mode 100644 arch/cris/arch-v10/lib/Makefile create mode 100644 arch/cris/arch-v10/lib/checksum.S create mode 100644 arch/cris/arch-v10/lib/checksumcopy.S create mode 100644 arch/cris/arch-v10/lib/csumcpfruser.S create mode 100644 arch/cris/arch-v10/lib/dmacopy.c create mode 100644 arch/cris/arch-v10/lib/dram_init.S create mode 100644 arch/cris/arch-v10/lib/hw_settings.S create mode 100644 arch/cris/arch-v10/lib/memset.c create mode 100644 arch/cris/arch-v10/lib/old_checksum.c create mode 100644 arch/cris/arch-v10/lib/string.c create mode 100644 arch/cris/arch-v10/lib/usercopy.c create mode 100644 arch/cris/arch-v10/mm/Makefile create mode 100644 arch/cris/arch-v10/mm/fault.c create mode 100644 arch/cris/arch-v10/mm/init.c create mode 100644 arch/cris/arch-v10/mm/tlb.c create mode 100644 arch/cris/arch-v10/output_arch.ld create mode 100644 arch/cris/arch-v10/vmlinux.lds.S create mode 100644 arch/cris/defconfig create mode 100644 arch/cris/kernel/Makefile create mode 100644 arch/cris/kernel/crisksyms.c create mode 100644 arch/cris/kernel/irq.c create mode 100644 arch/cris/kernel/module.c create mode 100644 arch/cris/kernel/process.c create mode 100644 arch/cris/kernel/ptrace.c create mode 100644 arch/cris/kernel/semaphore.c create mode 100644 arch/cris/kernel/setup.c create mode 100644 arch/cris/kernel/sys_cris.c create mode 100644 arch/cris/kernel/time.c create mode 100644 arch/cris/kernel/traps.c create mode 100644 arch/cris/mm/Makefile create mode 100644 arch/cris/mm/fault.c create mode 100644 arch/cris/mm/init.c create mode 100644 arch/cris/mm/ioremap.c create mode 100644 arch/cris/mm/tlb.c create mode 100644 arch/frv/Kconfig create mode 100644 arch/frv/Kconfig.debug create mode 100644 arch/frv/Makefile create mode 100644 arch/frv/boot/Makefile create mode 100644 arch/frv/kernel/Makefile create mode 100644 arch/frv/kernel/break.S create mode 100644 arch/frv/kernel/cmode.S create mode 100644 arch/frv/kernel/debug-stub.c create mode 100644 arch/frv/kernel/dma.c create mode 100644 arch/frv/kernel/entry-table.S create mode 100644 arch/frv/kernel/entry.S create mode 100644 arch/frv/kernel/frv_ksyms.c create mode 100644 arch/frv/kernel/gdb-io.c create mode 100644 arch/frv/kernel/gdb-io.h create mode 100644 arch/frv/kernel/gdb-stub.c create mode 100644 arch/frv/kernel/head-mmu-fr451.S create mode 100644 arch/frv/kernel/head-uc-fr401.S create mode 100644 arch/frv/kernel/head-uc-fr451.S create mode 100644 arch/frv/kernel/head-uc-fr555.S create mode 100644 arch/frv/kernel/head.S create mode 100644 arch/frv/kernel/head.inc create mode 100644 arch/frv/kernel/init_task.c create mode 100644 arch/frv/kernel/irq-mb93091.c create mode 100644 arch/frv/kernel/irq-mb93093.c create mode 100644 arch/frv/kernel/irq-mb93493.c create mode 100644 arch/frv/kernel/irq-routing.c create mode 100644 arch/frv/kernel/irq.c create mode 100644 arch/frv/kernel/kernel_thread.S create mode 100644 arch/frv/kernel/local.h create mode 100644 arch/frv/kernel/pm-mb93093.c create mode 100644 arch/frv/kernel/pm.c create mode 100644 arch/frv/kernel/process.c create mode 100644 arch/frv/kernel/ptrace.c create mode 100644 arch/frv/kernel/semaphore.c create mode 100644 arch/frv/kernel/setup.c create mode 100644 arch/frv/kernel/signal.c create mode 100644 arch/frv/kernel/sleep.S create mode 100644 arch/frv/kernel/switch_to.S create mode 100644 arch/frv/kernel/sys_frv.c create mode 100644 arch/frv/kernel/sysctl.c create mode 100644 arch/frv/kernel/time.c create mode 100644 arch/frv/kernel/traps.c create mode 100644 arch/frv/kernel/uaccess.c create mode 100644 arch/frv/kernel/vmlinux.lds.S create mode 100644 arch/frv/lib/Makefile create mode 100644 arch/frv/lib/__ashldi3.S create mode 100644 arch/frv/lib/__ashrdi3.S create mode 100644 arch/frv/lib/__lshrdi3.S create mode 100644 arch/frv/lib/__muldi3.S create mode 100644 arch/frv/lib/__negdi2.S create mode 100644 arch/frv/lib/atomic-ops.S create mode 100644 arch/frv/lib/cache.S create mode 100644 arch/frv/lib/checksum.c create mode 100644 arch/frv/lib/insl_ns.S create mode 100644 arch/frv/lib/insl_sw.S create mode 100644 arch/frv/lib/memcpy.S create mode 100644 arch/frv/lib/memset.S create mode 100644 arch/frv/lib/outsl_ns.S create mode 100644 arch/frv/lib/outsl_sw.S create mode 100644 arch/frv/mb93090-mb00/Makefile create mode 100644 arch/frv/mb93090-mb00/pci-dma-nommu.c create mode 100644 arch/frv/mb93090-mb00/pci-dma.c create mode 100644 arch/frv/mb93090-mb00/pci-frv.c create mode 100644 arch/frv/mb93090-mb00/pci-frv.h create mode 100644 arch/frv/mb93090-mb00/pci-irq.c create mode 100644 arch/frv/mb93090-mb00/pci-vdk.c create mode 100644 arch/frv/mm/Makefile create mode 100644 arch/frv/mm/cache-page.c create mode 100644 arch/frv/mm/dma-alloc.c create mode 100644 arch/frv/mm/elf-fdpic.c create mode 100644 arch/frv/mm/extable.c create mode 100644 arch/frv/mm/fault.c create mode 100644 arch/frv/mm/highmem.c create mode 100644 arch/frv/mm/init.c create mode 100644 arch/frv/mm/kmap.c create mode 100644 arch/frv/mm/mmu-context.c create mode 100644 arch/frv/mm/pgalloc.c create mode 100644 arch/frv/mm/tlb-flush.S create mode 100644 arch/frv/mm/tlb-miss.S create mode 100644 arch/frv/mm/unaligned.c create mode 100644 arch/h8300/Kconfig create mode 100644 arch/h8300/Kconfig.cpu create mode 100644 arch/h8300/Kconfig.debug create mode 100644 arch/h8300/Kconfig.ide create mode 100644 arch/h8300/Makefile create mode 100644 arch/h8300/README create mode 100644 arch/h8300/boot/Makefile create mode 100644 arch/h8300/defconfig create mode 100644 arch/h8300/kernel/Makefile create mode 100644 arch/h8300/kernel/asm-offsets.c create mode 100644 arch/h8300/kernel/gpio.c create mode 100644 arch/h8300/kernel/h8300_ksyms.c create mode 100644 arch/h8300/kernel/init_task.c create mode 100644 arch/h8300/kernel/ints.c create mode 100644 arch/h8300/kernel/module.c create mode 100644 arch/h8300/kernel/process.c create mode 100644 arch/h8300/kernel/ptrace.c create mode 100644 arch/h8300/kernel/semaphore.c create mode 100644 arch/h8300/kernel/setup.c create mode 100644 arch/h8300/kernel/signal.c create mode 100644 arch/h8300/kernel/sys_h8300.c create mode 100644 arch/h8300/kernel/syscalls.S create mode 100644 arch/h8300/kernel/time.c create mode 100644 arch/h8300/kernel/traps.c create mode 100644 arch/h8300/kernel/vmlinux.lds.S create mode 100644 arch/h8300/lib/Makefile create mode 100644 arch/h8300/lib/abs.S create mode 100644 arch/h8300/lib/ashrdi3.c create mode 100644 arch/h8300/lib/checksum.c create mode 100644 arch/h8300/lib/memcpy.S create mode 100644 arch/h8300/lib/memset.S create mode 100644 arch/h8300/lib/romfs.S create mode 100644 arch/h8300/mm/Makefile create mode 100644 arch/h8300/mm/fault.c create mode 100644 arch/h8300/mm/init.c create mode 100644 arch/h8300/mm/kmap.c create mode 100644 arch/h8300/mm/memory.c create mode 100644 arch/h8300/platform/h8300h/Makefile create mode 100644 arch/h8300/platform/h8300h/aki3068net/Makefile create mode 100644 arch/h8300/platform/h8300h/aki3068net/crt0_ram.S create mode 100644 arch/h8300/platform/h8300h/aki3068net/timer.c create mode 100644 arch/h8300/platform/h8300h/entry.S create mode 100644 arch/h8300/platform/h8300h/generic/Makefile create mode 100644 arch/h8300/platform/h8300h/generic/crt0_ram.S create mode 100644 arch/h8300/platform/h8300h/generic/crt0_rom.S create mode 100644 arch/h8300/platform/h8300h/generic/timer.c create mode 100644 arch/h8300/platform/h8300h/h8max/Makefile create mode 100644 arch/h8300/platform/h8300h/h8max/crt0_ram.S create mode 100644 arch/h8300/platform/h8300h/h8max/timer.c create mode 100644 arch/h8300/platform/h8300h/ints_h8300h.c create mode 100644 arch/h8300/platform/h8300h/ptrace_h8300h.c create mode 100644 arch/h8300/platform/h8s/Makefile create mode 100644 arch/h8300/platform/h8s/edosk2674/Makefile create mode 100644 arch/h8300/platform/h8s/edosk2674/crt0_ram.S create mode 100644 arch/h8300/platform/h8s/edosk2674/crt0_rom.S create mode 100644 arch/h8300/platform/h8s/edosk2674/timer.c create mode 100644 arch/h8300/platform/h8s/entry.S create mode 100644 arch/h8300/platform/h8s/generic/Makefile create mode 100644 arch/h8300/platform/h8s/generic/crt0_ram.S create mode 100644 arch/h8300/platform/h8s/generic/crt0_rom.S create mode 100644 arch/h8300/platform/h8s/generic/timer.c create mode 100644 arch/h8300/platform/h8s/ints.c create mode 100644 arch/h8300/platform/h8s/ints_h8s.c create mode 100644 arch/h8300/platform/h8s/ptrace_h8s.c create mode 100644 arch/i386/Kconfig create mode 100644 arch/i386/Kconfig.debug create mode 100644 arch/i386/Makefile create mode 100644 arch/i386/boot/Makefile create mode 100644 arch/i386/boot/bootsect.S create mode 100644 arch/i386/boot/compressed/Makefile create mode 100644 arch/i386/boot/compressed/head.S create mode 100644 arch/i386/boot/compressed/misc.c create mode 100644 arch/i386/boot/compressed/vmlinux.scr create mode 100644 arch/i386/boot/edd.S create mode 100644 arch/i386/boot/install.sh create mode 100644 arch/i386/boot/mtools.conf.in create mode 100644 arch/i386/boot/setup.S create mode 100644 arch/i386/boot/tools/build.c create mode 100644 arch/i386/boot/video.S create mode 100644 arch/i386/crypto/Makefile create mode 100644 arch/i386/crypto/aes-i586-asm.S create mode 100644 arch/i386/crypto/aes.c create mode 100644 arch/i386/defconfig create mode 100644 arch/i386/kernel/Makefile create mode 100644 arch/i386/kernel/acpi/Makefile create mode 100644 arch/i386/kernel/acpi/boot.c create mode 100644 arch/i386/kernel/acpi/earlyquirk.c create mode 100644 arch/i386/kernel/acpi/sleep.c create mode 100644 arch/i386/kernel/acpi/wakeup.S create mode 100644 arch/i386/kernel/apic.c create mode 100644 arch/i386/kernel/apm.c create mode 100644 arch/i386/kernel/asm-offsets.c create mode 100644 arch/i386/kernel/bootflag.c create mode 100644 arch/i386/kernel/cpu/Makefile create mode 100644 arch/i386/kernel/cpu/amd.c create mode 100644 arch/i386/kernel/cpu/centaur.c create mode 100644 arch/i386/kernel/cpu/changelog create mode 100644 arch/i386/kernel/cpu/common.c create mode 100644 arch/i386/kernel/cpu/cpu.h create mode 100644 arch/i386/kernel/cpu/cpufreq/Kconfig create mode 100644 arch/i386/kernel/cpu/cpufreq/Makefile create mode 100644 arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.c create mode 100644 arch/i386/kernel/cpu/cpufreq/cpufreq-nforce2.c create mode 100644 arch/i386/kernel/cpu/cpufreq/elanfreq.c create mode 100644 arch/i386/kernel/cpu/cpufreq/gx-suspmod.c create mode 100644 arch/i386/kernel/cpu/cpufreq/longhaul.c create mode 100644 arch/i386/kernel/cpu/cpufreq/longhaul.h create mode 100644 arch/i386/kernel/cpu/cpufreq/longrun.c create mode 100644 arch/i386/kernel/cpu/cpufreq/p4-clockmod.c create mode 100644 arch/i386/kernel/cpu/cpufreq/powernow-k6.c create mode 100644 arch/i386/kernel/cpu/cpufreq/powernow-k7.c create mode 100644 arch/i386/kernel/cpu/cpufreq/powernow-k7.h create mode 100644 arch/i386/kernel/cpu/cpufreq/powernow-k8.c create mode 100644 arch/i386/kernel/cpu/cpufreq/powernow-k8.h create mode 100644 arch/i386/kernel/cpu/cpufreq/speedstep-centrino.c create mode 100644 arch/i386/kernel/cpu/cpufreq/speedstep-est-common.h create mode 100644 arch/i386/kernel/cpu/cpufreq/speedstep-ich.c create mode 100644 arch/i386/kernel/cpu/cpufreq/speedstep-lib.c create mode 100644 arch/i386/kernel/cpu/cpufreq/speedstep-lib.h create mode 100644 arch/i386/kernel/cpu/cpufreq/speedstep-smi.c create mode 100644 arch/i386/kernel/cpu/cyrix.c create mode 100644 arch/i386/kernel/cpu/intel.c create mode 100644 arch/i386/kernel/cpu/intel_cacheinfo.c create mode 100644 arch/i386/kernel/cpu/mcheck/Makefile create mode 100644 arch/i386/kernel/cpu/mcheck/k7.c create mode 100644 arch/i386/kernel/cpu/mcheck/mce.c create mode 100644 arch/i386/kernel/cpu/mcheck/mce.h create mode 100644 arch/i386/kernel/cpu/mcheck/non-fatal.c create mode 100644 arch/i386/kernel/cpu/mcheck/p4.c create mode 100644 arch/i386/kernel/cpu/mcheck/p5.c create mode 100644 arch/i386/kernel/cpu/mcheck/p6.c create mode 100644 arch/i386/kernel/cpu/mcheck/winchip.c create mode 100644 arch/i386/kernel/cpu/mtrr/Makefile create mode 100644 arch/i386/kernel/cpu/mtrr/amd.c create mode 100644 arch/i386/kernel/cpu/mtrr/centaur.c create mode 100644 arch/i386/kernel/cpu/mtrr/changelog create mode 100644 arch/i386/kernel/cpu/mtrr/cyrix.c create mode 100644 arch/i386/kernel/cpu/mtrr/generic.c create mode 100644 arch/i386/kernel/cpu/mtrr/if.c create mode 100644 arch/i386/kernel/cpu/mtrr/main.c create mode 100644 arch/i386/kernel/cpu/mtrr/mtrr.h create mode 100644 arch/i386/kernel/cpu/mtrr/state.c create mode 100644 arch/i386/kernel/cpu/nexgen.c create mode 100644 arch/i386/kernel/cpu/proc.c create mode 100644 arch/i386/kernel/cpu/rise.c create mode 100644 arch/i386/kernel/cpu/transmeta.c create mode 100644 arch/i386/kernel/cpu/umc.c create mode 100644 arch/i386/kernel/cpuid.c create mode 100644 arch/i386/kernel/dmi_scan.c create mode 100644 arch/i386/kernel/doublefault.c create mode 100644 arch/i386/kernel/early_printk.c create mode 100644 arch/i386/kernel/efi.c create mode 100644 arch/i386/kernel/efi_stub.S create mode 100644 arch/i386/kernel/entry.S create mode 100644 arch/i386/kernel/head.S create mode 100644 arch/i386/kernel/i386_ksyms.c create mode 100644 arch/i386/kernel/i387.c create mode 100644 arch/i386/kernel/i8259.c create mode 100644 arch/i386/kernel/init_task.c create mode 100644 arch/i386/kernel/io_apic.c create mode 100644 arch/i386/kernel/ioport.c create mode 100644 arch/i386/kernel/irq.c create mode 100644 arch/i386/kernel/kprobes.c create mode 100644 arch/i386/kernel/ldt.c create mode 100644 arch/i386/kernel/mca.c create mode 100644 arch/i386/kernel/microcode.c create mode 100644 arch/i386/kernel/module.c create mode 100644 arch/i386/kernel/mpparse.c create mode 100644 arch/i386/kernel/msr.c create mode 100644 arch/i386/kernel/nmi.c create mode 100644 arch/i386/kernel/numaq.c create mode 100644 arch/i386/kernel/pci-dma.c create mode 100644 arch/i386/kernel/process.c create mode 100644 arch/i386/kernel/ptrace.c create mode 100644 arch/i386/kernel/quirks.c create mode 100644 arch/i386/kernel/reboot.c create mode 100644 arch/i386/kernel/scx200.c create mode 100644 arch/i386/kernel/semaphore.c create mode 100644 arch/i386/kernel/setup.c create mode 100644 arch/i386/kernel/sigframe.h create mode 100644 arch/i386/kernel/signal.c create mode 100644 arch/i386/kernel/smp.c create mode 100644 arch/i386/kernel/smpboot.c create mode 100644 arch/i386/kernel/srat.c create mode 100644 arch/i386/kernel/summit.c create mode 100644 arch/i386/kernel/sys_i386.c create mode 100644 arch/i386/kernel/sysenter.c create mode 100644 arch/i386/kernel/time.c create mode 100644 arch/i386/kernel/time_hpet.c create mode 100644 arch/i386/kernel/timers/Makefile create mode 100644 arch/i386/kernel/timers/common.c create mode 100644 arch/i386/kernel/timers/timer.c create mode 100644 arch/i386/kernel/timers/timer_cyclone.c create mode 100644 arch/i386/kernel/timers/timer_hpet.c create mode 100644 arch/i386/kernel/timers/timer_none.c create mode 100644 arch/i386/kernel/timers/timer_pit.c create mode 100644 arch/i386/kernel/timers/timer_pm.c create mode 100644 arch/i386/kernel/timers/timer_tsc.c create mode 100644 arch/i386/kernel/trampoline.S create mode 100644 arch/i386/kernel/traps.c create mode 100644 arch/i386/kernel/vm86.c create mode 100644 arch/i386/kernel/vmlinux.lds.S create mode 100644 arch/i386/kernel/vsyscall-int80.S create mode 100644 arch/i386/kernel/vsyscall-sigreturn.S create mode 100644 arch/i386/kernel/vsyscall-sysenter.S create mode 100644 arch/i386/kernel/vsyscall.S create mode 100644 arch/i386/kernel/vsyscall.lds.S create mode 100644 arch/i386/lib/Makefile create mode 100644 arch/i386/lib/bitops.c create mode 100644 arch/i386/lib/checksum.S create mode 100644 arch/i386/lib/dec_and_lock.c create mode 100644 arch/i386/lib/delay.c create mode 100644 arch/i386/lib/getuser.S create mode 100644 arch/i386/lib/memcpy.c create mode 100644 arch/i386/lib/mmx.c create mode 100644 arch/i386/lib/putuser.S create mode 100644 arch/i386/lib/strstr.c create mode 100644 arch/i386/lib/usercopy.c create mode 100644 arch/i386/mach-default/Makefile create mode 100644 arch/i386/mach-default/setup.c create mode 100644 arch/i386/mach-default/topology.c create mode 100644 arch/i386/mach-es7000/Makefile create mode 100644 arch/i386/mach-es7000/es7000.h create mode 100644 arch/i386/mach-es7000/es7000plat.c create mode 100644 arch/i386/mach-generic/Makefile create mode 100644 arch/i386/mach-generic/bigsmp.c create mode 100644 arch/i386/mach-generic/default.c create mode 100644 arch/i386/mach-generic/es7000.c create mode 100644 arch/i386/mach-generic/probe.c create mode 100644 arch/i386/mach-generic/summit.c create mode 100644 arch/i386/mach-visws/Makefile create mode 100644 arch/i386/mach-visws/mpparse.c create mode 100644 arch/i386/mach-visws/reboot.c create mode 100644 arch/i386/mach-visws/setup.c create mode 100644 arch/i386/mach-visws/traps.c create mode 100644 arch/i386/mach-visws/visws_apic.c create mode 100644 arch/i386/mach-voyager/Makefile create mode 100644 arch/i386/mach-voyager/setup.c create mode 100644 arch/i386/mach-voyager/voyager_basic.c create mode 100644 arch/i386/mach-voyager/voyager_cat.c create mode 100644 arch/i386/mach-voyager/voyager_smp.c create mode 100644 arch/i386/mach-voyager/voyager_thread.c create mode 100644 arch/i386/math-emu/Makefile create mode 100644 arch/i386/math-emu/README create mode 100644 arch/i386/math-emu/control_w.h create mode 100644 arch/i386/math-emu/div_Xsig.S create mode 100644 arch/i386/math-emu/div_small.S create mode 100644 arch/i386/math-emu/errors.c create mode 100644 arch/i386/math-emu/exception.h create mode 100644 arch/i386/math-emu/fpu_arith.c create mode 100644 arch/i386/math-emu/fpu_asm.h create mode 100644 arch/i386/math-emu/fpu_aux.c create mode 100644 arch/i386/math-emu/fpu_emu.h create mode 100644 arch/i386/math-emu/fpu_entry.c create mode 100644 arch/i386/math-emu/fpu_etc.c create mode 100644 arch/i386/math-emu/fpu_proto.h create mode 100644 arch/i386/math-emu/fpu_system.h create mode 100644 arch/i386/math-emu/fpu_tags.c create mode 100644 arch/i386/math-emu/fpu_trig.c create mode 100644 arch/i386/math-emu/get_address.c create mode 100644 arch/i386/math-emu/load_store.c create mode 100644 arch/i386/math-emu/mul_Xsig.S create mode 100644 arch/i386/math-emu/poly.h create mode 100644 arch/i386/math-emu/poly_2xm1.c create mode 100644 arch/i386/math-emu/poly_atan.c create mode 100644 arch/i386/math-emu/poly_l2.c create mode 100644 arch/i386/math-emu/poly_sin.c create mode 100644 arch/i386/math-emu/poly_tan.c create mode 100644 arch/i386/math-emu/polynom_Xsig.S create mode 100644 arch/i386/math-emu/reg_add_sub.c create mode 100644 arch/i386/math-emu/reg_compare.c create mode 100644 arch/i386/math-emu/reg_constant.c create mode 100644 arch/i386/math-emu/reg_constant.h create mode 100644 arch/i386/math-emu/reg_convert.c create mode 100644 arch/i386/math-emu/reg_divide.c create mode 100644 arch/i386/math-emu/reg_ld_str.c create mode 100644 arch/i386/math-emu/reg_mul.c create mode 100644 arch/i386/math-emu/reg_norm.S create mode 100644 arch/i386/math-emu/reg_round.S create mode 100644 arch/i386/math-emu/reg_u_add.S create mode 100644 arch/i386/math-emu/reg_u_div.S create mode 100644 arch/i386/math-emu/reg_u_mul.S create mode 100644 arch/i386/math-emu/reg_u_sub.S create mode 100644 arch/i386/math-emu/round_Xsig.S create mode 100644 arch/i386/math-emu/shr_Xsig.S create mode 100644 arch/i386/math-emu/status_w.h create mode 100644 arch/i386/math-emu/version.h create mode 100644 arch/i386/math-emu/wm_shrx.S create mode 100644 arch/i386/math-emu/wm_sqrt.S create mode 100644 arch/i386/mm/Makefile create mode 100644 arch/i386/mm/boot_ioremap.c create mode 100644 arch/i386/mm/discontig.c create mode 100644 arch/i386/mm/extable.c create mode 100644 arch/i386/mm/fault.c create mode 100644 arch/i386/mm/highmem.c create mode 100644 arch/i386/mm/hugetlbpage.c create mode 100644 arch/i386/mm/init.c create mode 100644 arch/i386/mm/ioremap.c create mode 100644 arch/i386/mm/mmap.c create mode 100644 arch/i386/mm/pageattr.c create mode 100644 arch/i386/mm/pgtable.c create mode 100644 arch/i386/oprofile/Kconfig create mode 100644 arch/i386/oprofile/Makefile create mode 100644 arch/i386/oprofile/backtrace.c create mode 100644 arch/i386/oprofile/init.c create mode 100644 arch/i386/oprofile/nmi_int.c create mode 100644 arch/i386/oprofile/nmi_timer_int.c create mode 100644 arch/i386/oprofile/op_counter.h create mode 100644 arch/i386/oprofile/op_model_athlon.c create mode 100644 arch/i386/oprofile/op_model_p4.c create mode 100644 arch/i386/oprofile/op_model_ppro.c create mode 100644 arch/i386/oprofile/op_x86_model.h create mode 100644 arch/i386/pci/Makefile create mode 100644 arch/i386/pci/acpi.c create mode 100644 arch/i386/pci/common.c create mode 100644 arch/i386/pci/direct.c create mode 100644 arch/i386/pci/fixup.c create mode 100644 arch/i386/pci/i386.c create mode 100644 arch/i386/pci/irq.c create mode 100644 arch/i386/pci/legacy.c create mode 100644 arch/i386/pci/mmconfig.c create mode 100644 arch/i386/pci/numa.c create mode 100644 arch/i386/pci/pcbios.c create mode 100644 arch/i386/pci/pci.h create mode 100644 arch/i386/pci/visws.c create mode 100644 arch/i386/power/Makefile create mode 100644 arch/i386/power/cpu.c create mode 100644 arch/i386/power/swsusp.S create mode 100644 arch/ia64/Kconfig create mode 100644 arch/ia64/Kconfig.debug create mode 100644 arch/ia64/Makefile create mode 100644 arch/ia64/configs/bigsur_defconfig create mode 100644 arch/ia64/configs/sim_defconfig create mode 100644 arch/ia64/configs/sn2_defconfig create mode 100644 arch/ia64/configs/tiger_defconfig create mode 100644 arch/ia64/configs/zx1_defconfig create mode 100644 arch/ia64/defconfig create mode 100644 arch/ia64/dig/Makefile create mode 100644 arch/ia64/dig/machvec.c create mode 100644 arch/ia64/dig/setup.c create mode 100644 arch/ia64/hp/common/Makefile create mode 100644 arch/ia64/hp/common/hwsw_iommu.c create mode 100644 arch/ia64/hp/common/sba_iommu.c create mode 100644 arch/ia64/hp/sim/Kconfig create mode 100644 arch/ia64/hp/sim/Makefile create mode 100644 arch/ia64/hp/sim/boot/Makefile create mode 100644 arch/ia64/hp/sim/boot/boot_head.S create mode 100644 arch/ia64/hp/sim/boot/bootloader.c create mode 100644 arch/ia64/hp/sim/boot/bootloader.lds create mode 100644 arch/ia64/hp/sim/boot/fw-emu.c create mode 100644 arch/ia64/hp/sim/boot/ssc.h create mode 100644 arch/ia64/hp/sim/hpsim.S create mode 100644 arch/ia64/hp/sim/hpsim_console.c create mode 100644 arch/ia64/hp/sim/hpsim_irq.c create mode 100644 arch/ia64/hp/sim/hpsim_machvec.c create mode 100644 arch/ia64/hp/sim/hpsim_setup.c create mode 100644 arch/ia64/hp/sim/hpsim_ssc.h create mode 100644 arch/ia64/hp/sim/simeth.c create mode 100644 arch/ia64/hp/sim/simscsi.c create mode 100644 arch/ia64/hp/sim/simserial.c create mode 100644 arch/ia64/hp/zx1/Makefile create mode 100644 arch/ia64/hp/zx1/hpzx1_machvec.c create mode 100644 arch/ia64/hp/zx1/hpzx1_swiotlb_machvec.c create mode 100644 arch/ia64/ia32/Makefile create mode 100644 arch/ia64/ia32/binfmt_elf32.c create mode 100644 arch/ia64/ia32/elfcore32.h create mode 100644 arch/ia64/ia32/ia32_entry.S create mode 100644 arch/ia64/ia32/ia32_ioctl.c create mode 100644 arch/ia64/ia32/ia32_ldt.c create mode 100644 arch/ia64/ia32/ia32_signal.c create mode 100644 arch/ia64/ia32/ia32_support.c create mode 100644 arch/ia64/ia32/ia32_traps.c create mode 100644 arch/ia64/ia32/ia32priv.h create mode 100644 arch/ia64/ia32/sys_ia32.c create mode 100644 arch/ia64/install.sh create mode 100644 arch/ia64/kernel/Makefile create mode 100644 arch/ia64/kernel/acpi-ext.c create mode 100644 arch/ia64/kernel/acpi.c create mode 100644 arch/ia64/kernel/asm-offsets.c create mode 100644 arch/ia64/kernel/brl_emu.c create mode 100644 arch/ia64/kernel/cyclone.c create mode 100644 arch/ia64/kernel/domain.c create mode 100644 arch/ia64/kernel/efi.c create mode 100644 arch/ia64/kernel/efi_stub.S create mode 100644 arch/ia64/kernel/entry.S create mode 100644 arch/ia64/kernel/entry.h create mode 100644 arch/ia64/kernel/fsys.S create mode 100644 arch/ia64/kernel/gate-data.S create mode 100644 arch/ia64/kernel/gate.S create mode 100644 arch/ia64/kernel/gate.lds.S create mode 100644 arch/ia64/kernel/head.S create mode 100644 arch/ia64/kernel/ia64_ksyms.c create mode 100644 arch/ia64/kernel/init_task.c create mode 100644 arch/ia64/kernel/iosapic.c create mode 100644 arch/ia64/kernel/irq.c create mode 100644 arch/ia64/kernel/irq_ia64.c create mode 100644 arch/ia64/kernel/irq_lsapic.c create mode 100644 arch/ia64/kernel/ivt.S create mode 100644 arch/ia64/kernel/machvec.c create mode 100644 arch/ia64/kernel/mca.c create mode 100644 arch/ia64/kernel/mca_asm.S create mode 100644 arch/ia64/kernel/mca_drv.c create mode 100644 arch/ia64/kernel/mca_drv.h create mode 100644 arch/ia64/kernel/mca_drv_asm.S create mode 100644 arch/ia64/kernel/minstate.h create mode 100644 arch/ia64/kernel/module.c create mode 100644 arch/ia64/kernel/pal.S create mode 100644 arch/ia64/kernel/palinfo.c create mode 100644 arch/ia64/kernel/patch.c create mode 100644 arch/ia64/kernel/perfmon.c create mode 100644 arch/ia64/kernel/perfmon_default_smpl.c create mode 100644 arch/ia64/kernel/perfmon_generic.h create mode 100644 arch/ia64/kernel/perfmon_itanium.h create mode 100644 arch/ia64/kernel/perfmon_mckinley.h create mode 100644 arch/ia64/kernel/process.c create mode 100644 arch/ia64/kernel/ptrace.c create mode 100644 arch/ia64/kernel/sal.c create mode 100644 arch/ia64/kernel/salinfo.c create mode 100644 arch/ia64/kernel/semaphore.c create mode 100644 arch/ia64/kernel/setup.c create mode 100644 arch/ia64/kernel/sigframe.h create mode 100644 arch/ia64/kernel/signal.c create mode 100644 arch/ia64/kernel/smp.c create mode 100644 arch/ia64/kernel/smpboot.c create mode 100644 arch/ia64/kernel/sys_ia64.c create mode 100644 arch/ia64/kernel/time.c create mode 100644 arch/ia64/kernel/topology.c create mode 100644 arch/ia64/kernel/traps.c create mode 100644 arch/ia64/kernel/unaligned.c create mode 100644 arch/ia64/kernel/unwind.c create mode 100644 arch/ia64/kernel/unwind_decoder.c create mode 100644 arch/ia64/kernel/unwind_i.h create mode 100644 arch/ia64/kernel/vmlinux.lds.S create mode 100644 arch/ia64/lib/Makefile create mode 100644 arch/ia64/lib/bitop.c create mode 100644 arch/ia64/lib/carta_random.S create mode 100644 arch/ia64/lib/checksum.c create mode 100644 arch/ia64/lib/clear_page.S create mode 100644 arch/ia64/lib/clear_user.S create mode 100644 arch/ia64/lib/copy_page.S create mode 100644 arch/ia64/lib/copy_page_mck.S create mode 100644 arch/ia64/lib/copy_user.S create mode 100644 arch/ia64/lib/csum_partial_copy.c create mode 100644 arch/ia64/lib/dec_and_lock.c create mode 100644 arch/ia64/lib/do_csum.S create mode 100644 arch/ia64/lib/flush.S create mode 100644 arch/ia64/lib/idiv32.S create mode 100644 arch/ia64/lib/idiv64.S create mode 100644 arch/ia64/lib/io.c create mode 100644 arch/ia64/lib/ip_fast_csum.S create mode 100644 arch/ia64/lib/memcpy.S create mode 100644 arch/ia64/lib/memcpy_mck.S create mode 100644 arch/ia64/lib/memset.S create mode 100644 arch/ia64/lib/strlen.S create mode 100644 arch/ia64/lib/strlen_user.S create mode 100644 arch/ia64/lib/strncpy_from_user.S create mode 100644 arch/ia64/lib/strnlen_user.S create mode 100644 arch/ia64/lib/swiotlb.c create mode 100644 arch/ia64/lib/xor.S create mode 100644 arch/ia64/mm/Makefile create mode 100644 arch/ia64/mm/contig.c create mode 100644 arch/ia64/mm/discontig.c create mode 100644 arch/ia64/mm/extable.c create mode 100644 arch/ia64/mm/fault.c create mode 100644 arch/ia64/mm/hugetlbpage.c create mode 100644 arch/ia64/mm/init.c create mode 100644 arch/ia64/mm/numa.c create mode 100644 arch/ia64/mm/tlb.c create mode 100644 arch/ia64/module.lds create mode 100644 arch/ia64/oprofile/Kconfig create mode 100644 arch/ia64/oprofile/Makefile create mode 100644 arch/ia64/oprofile/backtrace.c create mode 100644 arch/ia64/oprofile/init.c create mode 100644 arch/ia64/oprofile/perfmon.c create mode 100644 arch/ia64/pci/Makefile create mode 100644 arch/ia64/pci/pci.c create mode 100755 arch/ia64/scripts/check-gas create mode 100644 arch/ia64/scripts/check-gas-asm.S create mode 100644 arch/ia64/scripts/check-model.c create mode 100644 arch/ia64/scripts/check-segrel.S create mode 100644 arch/ia64/scripts/check-segrel.lds create mode 100644 arch/ia64/scripts/check-serialize.S create mode 100644 arch/ia64/scripts/check-text-align.S create mode 100755 arch/ia64/scripts/toolchain-flags create mode 100755 arch/ia64/scripts/unwcheck.py create mode 100644 arch/ia64/sn/Makefile create mode 100644 arch/ia64/sn/include/ioerror.h create mode 100644 arch/ia64/sn/include/pci/pcibr_provider.h create mode 100644 arch/ia64/sn/include/pci/pcibus_provider_defs.h create mode 100644 arch/ia64/sn/include/pci/pcidev.h create mode 100644 arch/ia64/sn/include/pci/pic.h create mode 100644 arch/ia64/sn/include/pci/tiocp.h create mode 100644 arch/ia64/sn/include/tio.h create mode 100644 arch/ia64/sn/include/xtalk/hubdev.h create mode 100644 arch/ia64/sn/include/xtalk/xbow.h create mode 100644 arch/ia64/sn/include/xtalk/xwidgetdev.h create mode 100644 arch/ia64/sn/kernel/Makefile create mode 100644 arch/ia64/sn/kernel/bte.c create mode 100644 arch/ia64/sn/kernel/bte_error.c create mode 100644 arch/ia64/sn/kernel/huberror.c create mode 100644 arch/ia64/sn/kernel/idle.c create mode 100644 arch/ia64/sn/kernel/io_init.c create mode 100644 arch/ia64/sn/kernel/iomv.c create mode 100644 arch/ia64/sn/kernel/irq.c create mode 100644 arch/ia64/sn/kernel/klconflib.c create mode 100644 arch/ia64/sn/kernel/machvec.c create mode 100644 arch/ia64/sn/kernel/mca.c create mode 100644 arch/ia64/sn/kernel/setup.c create mode 100644 arch/ia64/sn/kernel/sn2/Makefile create mode 100644 arch/ia64/sn/kernel/sn2/cache.c create mode 100644 arch/ia64/sn/kernel/sn2/io.c create mode 100644 arch/ia64/sn/kernel/sn2/prominfo_proc.c create mode 100644 arch/ia64/sn/kernel/sn2/ptc_deadlock.S create mode 100644 arch/ia64/sn/kernel/sn2/sn2_smp.c create mode 100644 arch/ia64/sn/kernel/sn2/sn_hwperf.c create mode 100644 arch/ia64/sn/kernel/sn2/sn_proc_fs.c create mode 100644 arch/ia64/sn/kernel/sn2/timer.c create mode 100644 arch/ia64/sn/kernel/sn2/timer_interrupt.c create mode 100644 arch/ia64/sn/pci/Makefile create mode 100644 arch/ia64/sn/pci/pci_dma.c create mode 100644 arch/ia64/sn/pci/pcibr/Makefile create mode 100644 arch/ia64/sn/pci/pcibr/pcibr_ate.c create mode 100644 arch/ia64/sn/pci/pcibr/pcibr_dma.c create mode 100644 arch/ia64/sn/pci/pcibr/pcibr_provider.c create mode 100644 arch/ia64/sn/pci/pcibr/pcibr_reg.c create mode 100644 arch/m32r/Kconfig create mode 100644 arch/m32r/Kconfig.debug create mode 100644 arch/m32r/Makefile create mode 100644 arch/m32r/boot/Makefile create mode 100644 arch/m32r/boot/compressed/Makefile create mode 100644 arch/m32r/boot/compressed/boot.h create mode 100644 arch/m32r/boot/compressed/head.S create mode 100644 arch/m32r/boot/compressed/install.sh create mode 100644 arch/m32r/boot/compressed/m32r_sio.c create mode 100644 arch/m32r/boot/compressed/misc.c create mode 100644 arch/m32r/boot/compressed/vmlinux.lds.S create mode 100644 arch/m32r/boot/compressed/vmlinux.scr create mode 100644 arch/m32r/boot/setup.S create mode 100644 arch/m32r/defconfig create mode 100644 arch/m32r/kernel/Makefile create mode 100644 arch/m32r/kernel/align.c create mode 100644 arch/m32r/kernel/entry.S create mode 100644 arch/m32r/kernel/head.S create mode 100644 arch/m32r/kernel/init_task.c create mode 100644 arch/m32r/kernel/io_m32700ut.c create mode 100644 arch/m32r/kernel/io_mappi.c create mode 100644 arch/m32r/kernel/io_mappi2.c create mode 100644 arch/m32r/kernel/io_oaks32r.c create mode 100644 arch/m32r/kernel/io_opsput.c create mode 100644 arch/m32r/kernel/io_usrv.c create mode 100644 arch/m32r/kernel/irq.c create mode 100644 arch/m32r/kernel/m32r_ksyms.c create mode 100644 arch/m32r/kernel/module.c create mode 100644 arch/m32r/kernel/process.c create mode 100644 arch/m32r/kernel/ptrace.c create mode 100644 arch/m32r/kernel/semaphore.c create mode 100644 arch/m32r/kernel/setup.c create mode 100644 arch/m32r/kernel/setup_m32700ut.c create mode 100644 arch/m32r/kernel/setup_mappi.c create mode 100644 arch/m32r/kernel/setup_mappi2.c create mode 100644 arch/m32r/kernel/setup_oaks32r.c create mode 100644 arch/m32r/kernel/setup_opsput.c create mode 100644 arch/m32r/kernel/setup_usrv.c create mode 100644 arch/m32r/kernel/signal.c create mode 100644 arch/m32r/kernel/smp.c create mode 100644 arch/m32r/kernel/smpboot.c create mode 100644 arch/m32r/kernel/sys_m32r.c create mode 100644 arch/m32r/kernel/time.c create mode 100644 arch/m32r/kernel/traps.c create mode 100644 arch/m32r/kernel/vmlinux.lds.S create mode 100644 arch/m32r/lib/Makefile create mode 100644 arch/m32r/lib/ashxdi3.S create mode 100644 arch/m32r/lib/checksum.S create mode 100644 arch/m32r/lib/csum_partial_copy.c create mode 100644 arch/m32r/lib/delay.c create mode 100644 arch/m32r/lib/getuser.S create mode 100644 arch/m32r/lib/memcpy.S create mode 100644 arch/m32r/lib/memset.S create mode 100644 arch/m32r/lib/putuser.S create mode 100644 arch/m32r/lib/strlen.S create mode 100644 arch/m32r/lib/usercopy.c create mode 100644 arch/m32r/m32700ut/defconfig.m32700ut.smp create mode 100644 arch/m32r/m32700ut/defconfig.m32700ut.up create mode 100644 arch/m32r/m32700ut/dot.gdbinit_200MHz_16MB create mode 100644 arch/m32r/m32700ut/dot.gdbinit_300MHz_32MB create mode 100644 arch/m32r/m32700ut/dot.gdbinit_400MHz_32MB create mode 100644 arch/m32r/mappi/defconfig.nommu create mode 100644 arch/m32r/mappi/defconfig.smp create mode 100644 arch/m32r/mappi/defconfig.up create mode 100644 arch/m32r/mappi/dot.gdbinit create mode 100644 arch/m32r/mappi/dot.gdbinit.nommu create mode 100644 arch/m32r/mappi/dot.gdbinit.smp create mode 100644 arch/m32r/mappi2/defconfig.vdec2 create mode 100644 arch/m32r/mappi2/dot.gdbinit.vdec2 create mode 100644 arch/m32r/mm/Makefile create mode 100644 arch/m32r/mm/cache.c create mode 100644 arch/m32r/mm/discontig.c create mode 100644 arch/m32r/mm/extable.c create mode 100644 arch/m32r/mm/fault-nommu.c create mode 100644 arch/m32r/mm/fault.c create mode 100644 arch/m32r/mm/init.c create mode 100644 arch/m32r/mm/ioremap-nommu.c create mode 100644 arch/m32r/mm/ioremap.c create mode 100644 arch/m32r/mm/mmu.S create mode 100644 arch/m32r/mm/page.S create mode 100644 arch/m32r/oaks32r/defconfig.nommu create mode 100644 arch/m32r/oaks32r/dot.gdbinit.nommu create mode 100644 arch/m32r/oprofile/Kconfig create mode 100644 arch/m32r/oprofile/Makefile create mode 100644 arch/m32r/oprofile/init.c create mode 100644 arch/m32r/opsput/defconfig.opsput create mode 100644 arch/m32r/opsput/dot.gdbinit create mode 100644 arch/m68k/Kconfig create mode 100644 arch/m68k/Kconfig.debug create mode 100644 arch/m68k/Makefile create mode 100644 arch/m68k/amiga/Makefile create mode 100644 arch/m68k/amiga/amiga_ksyms.c create mode 100644 arch/m68k/amiga/amiints.c create mode 100644 arch/m68k/amiga/amisound.c create mode 100644 arch/m68k/amiga/chipram.c create mode 100644 arch/m68k/amiga/cia.c create mode 100644 arch/m68k/amiga/config.c create mode 100644 arch/m68k/amiga/pcmcia.c create mode 100644 arch/m68k/apollo/Makefile create mode 100644 arch/m68k/apollo/config.c create mode 100644 arch/m68k/apollo/dma.c create mode 100644 arch/m68k/apollo/dn_ints.c create mode 100644 arch/m68k/atari/Makefile create mode 100644 arch/m68k/atari/ataints.c create mode 100644 arch/m68k/atari/atari_ksyms.c create mode 100644 arch/m68k/atari/atasound.c create mode 100644 arch/m68k/atari/atasound.h create mode 100644 arch/m68k/atari/config.c create mode 100644 arch/m68k/atari/debug.c create mode 100644 arch/m68k/atari/hades-pci.c create mode 100644 arch/m68k/atari/stdma.c create mode 100644 arch/m68k/atari/stram.c create mode 100644 arch/m68k/atari/time.c create mode 100644 arch/m68k/bvme6000/Makefile create mode 100644 arch/m68k/bvme6000/bvmeints.c create mode 100644 arch/m68k/bvme6000/config.c create mode 100644 arch/m68k/bvme6000/rtc.c create mode 100644 arch/m68k/configs/amiga_defconfig create mode 100644 arch/m68k/configs/apollo_defconfig create mode 100644 arch/m68k/configs/atari_defconfig create mode 100644 arch/m68k/configs/bvme6000_defconfig create mode 100644 arch/m68k/configs/hp300_defconfig create mode 100644 arch/m68k/configs/mac_defconfig create mode 100644 arch/m68k/configs/mvme147_defconfig create mode 100644 arch/m68k/configs/mvme16x_defconfig create mode 100644 arch/m68k/configs/q40_defconfig create mode 100644 arch/m68k/configs/sun3_defconfig create mode 100644 arch/m68k/configs/sun3x_defconfig create mode 100644 arch/m68k/defconfig create mode 100644 arch/m68k/fpsp040/Makefile create mode 100644 arch/m68k/fpsp040/README create mode 100644 arch/m68k/fpsp040/bindec.S create mode 100644 arch/m68k/fpsp040/binstr.S create mode 100644 arch/m68k/fpsp040/bugfix.S create mode 100644 arch/m68k/fpsp040/decbin.S create mode 100644 arch/m68k/fpsp040/do_func.S create mode 100644 arch/m68k/fpsp040/fpsp.h create mode 100644 arch/m68k/fpsp040/gen_except.S create mode 100644 arch/m68k/fpsp040/get_op.S create mode 100644 arch/m68k/fpsp040/kernel_ex.S create mode 100644 arch/m68k/fpsp040/res_func.S create mode 100644 arch/m68k/fpsp040/round.S create mode 100644 arch/m68k/fpsp040/sacos.S create mode 100644 arch/m68k/fpsp040/sasin.S create mode 100644 arch/m68k/fpsp040/satan.S create mode 100644 arch/m68k/fpsp040/satanh.S create mode 100644 arch/m68k/fpsp040/scale.S create mode 100644 arch/m68k/fpsp040/scosh.S create mode 100644 arch/m68k/fpsp040/setox.S create mode 100644 arch/m68k/fpsp040/sgetem.S create mode 100644 arch/m68k/fpsp040/sint.S create mode 100644 arch/m68k/fpsp040/skeleton.S create mode 100644 arch/m68k/fpsp040/slog2.S create mode 100644 arch/m68k/fpsp040/slogn.S create mode 100644 arch/m68k/fpsp040/smovecr.S create mode 100644 arch/m68k/fpsp040/srem_mod.S create mode 100644 arch/m68k/fpsp040/ssin.S create mode 100644 arch/m68k/fpsp040/ssinh.S create mode 100644 arch/m68k/fpsp040/stan.S create mode 100644 arch/m68k/fpsp040/stanh.S create mode 100644 arch/m68k/fpsp040/sto_res.S create mode 100644 arch/m68k/fpsp040/stwotox.S create mode 100644 arch/m68k/fpsp040/tbldo.S create mode 100644 arch/m68k/fpsp040/util.S create mode 100644 arch/m68k/fpsp040/x_bsun.S create mode 100644 arch/m68k/fpsp040/x_fline.S create mode 100644 arch/m68k/fpsp040/x_operr.S create mode 100644 arch/m68k/fpsp040/x_ovfl.S create mode 100644 arch/m68k/fpsp040/x_snan.S create mode 100644 arch/m68k/fpsp040/x_store.S create mode 100644 arch/m68k/fpsp040/x_unfl.S create mode 100644 arch/m68k/fpsp040/x_unimp.S create mode 100644 arch/m68k/fpsp040/x_unsupp.S create mode 100644 arch/m68k/hp300/Makefile create mode 100644 arch/m68k/hp300/README.hp300 create mode 100644 arch/m68k/hp300/config.c create mode 100644 arch/m68k/hp300/hp300map.map create mode 100644 arch/m68k/hp300/ints.c create mode 100644 arch/m68k/hp300/ints.h create mode 100644 arch/m68k/hp300/ksyms.c create mode 100644 arch/m68k/hp300/reboot.S create mode 100644 arch/m68k/hp300/time.c create mode 100644 arch/m68k/hp300/time.h create mode 100644 arch/m68k/ifpsp060/CHANGES create mode 100644 arch/m68k/ifpsp060/MISC create mode 100644 arch/m68k/ifpsp060/Makefile create mode 100644 arch/m68k/ifpsp060/README create mode 100644 arch/m68k/ifpsp060/TEST.DOC create mode 100644 arch/m68k/ifpsp060/fplsp.doc create mode 100644 arch/m68k/ifpsp060/fplsp.sa create mode 100644 arch/m68k/ifpsp060/fpsp.doc create mode 100644 arch/m68k/ifpsp060/fpsp.sa create mode 100644 arch/m68k/ifpsp060/fskeleton.S create mode 100644 arch/m68k/ifpsp060/ftest.sa create mode 100644 arch/m68k/ifpsp060/ilsp.doc create mode 100644 arch/m68k/ifpsp060/ilsp.sa create mode 100644 arch/m68k/ifpsp060/iskeleton.S create mode 100644 arch/m68k/ifpsp060/isp.doc create mode 100644 arch/m68k/ifpsp060/isp.sa create mode 100644 arch/m68k/ifpsp060/itest.sa create mode 100644 arch/m68k/ifpsp060/os.S create mode 100644 arch/m68k/ifpsp060/pfpsp.sa create mode 100644 arch/m68k/ifpsp060/src/README-SRC create mode 100644 arch/m68k/ifpsp060/src/fplsp.S create mode 100644 arch/m68k/ifpsp060/src/fpsp.S create mode 100644 arch/m68k/ifpsp060/src/ftest.S create mode 100644 arch/m68k/ifpsp060/src/ilsp.S create mode 100644 arch/m68k/ifpsp060/src/isp.S create mode 100644 arch/m68k/ifpsp060/src/itest.S create mode 100644 arch/m68k/ifpsp060/src/pfpsp.S create mode 100644 arch/m68k/kernel/Makefile create mode 100644 arch/m68k/kernel/asm-offsets.c create mode 100644 arch/m68k/kernel/bios32.c create mode 100644 arch/m68k/kernel/entry.S create mode 100644 arch/m68k/kernel/head.S create mode 100644 arch/m68k/kernel/ints.c create mode 100644 arch/m68k/kernel/m68k_ksyms.c create mode 100644 arch/m68k/kernel/module.c create mode 100644 arch/m68k/kernel/process.c create mode 100644 arch/m68k/kernel/ptrace.c create mode 100644 arch/m68k/kernel/semaphore.c create mode 100644 arch/m68k/kernel/setup.c create mode 100644 arch/m68k/kernel/signal.c create mode 100644 arch/m68k/kernel/sun3-head.S create mode 100644 arch/m68k/kernel/sys_m68k.c create mode 100644 arch/m68k/kernel/time.c create mode 100644 arch/m68k/kernel/traps.c create mode 100644 arch/m68k/kernel/vmlinux-std.lds create mode 100644 arch/m68k/kernel/vmlinux-sun3.lds create mode 100644 arch/m68k/kernel/vmlinux.lds.S create mode 100644 arch/m68k/lib/Makefile create mode 100644 arch/m68k/lib/ashldi3.c create mode 100644 arch/m68k/lib/ashrdi3.c create mode 100644 arch/m68k/lib/checksum.c create mode 100644 arch/m68k/lib/lshrdi3.c create mode 100644 arch/m68k/lib/memcmp.c create mode 100644 arch/m68k/lib/memcpy.c create mode 100644 arch/m68k/lib/memset.c create mode 100644 arch/m68k/lib/muldi3.c create mode 100644 arch/m68k/lib/semaphore.S create mode 100644 arch/m68k/mac/Makefile create mode 100644 arch/m68k/mac/baboon.c create mode 100644 arch/m68k/mac/bootparse.c create mode 100644 arch/m68k/mac/config.c create mode 100644 arch/m68k/mac/debug.c create mode 100644 arch/m68k/mac/iop.c create mode 100644 arch/m68k/mac/mac_ksyms.c create mode 100644 arch/m68k/mac/mac_penguin.S create mode 100644 arch/m68k/mac/macboing.c create mode 100644 arch/m68k/mac/macints.c create mode 100644 arch/m68k/mac/misc.c create mode 100644 arch/m68k/mac/oss.c create mode 100644 arch/m68k/mac/psc.c create mode 100644 arch/m68k/mac/via.c create mode 100644 arch/m68k/math-emu/Makefile create mode 100644 arch/m68k/math-emu/fp_arith.c create mode 100644 arch/m68k/math-emu/fp_arith.h create mode 100644 arch/m68k/math-emu/fp_cond.S create mode 100644 arch/m68k/math-emu/fp_decode.h create mode 100644 arch/m68k/math-emu/fp_emu.h create mode 100644 arch/m68k/math-emu/fp_entry.S create mode 100644 arch/m68k/math-emu/fp_log.c create mode 100644 arch/m68k/math-emu/fp_move.S create mode 100644 arch/m68k/math-emu/fp_movem.S create mode 100644 arch/m68k/math-emu/fp_scan.S create mode 100644 arch/m68k/math-emu/fp_trig.c create mode 100644 arch/m68k/math-emu/fp_trig.h create mode 100644 arch/m68k/math-emu/fp_util.S create mode 100644 arch/m68k/math-emu/multi_arith.h create mode 100644 arch/m68k/mm/Makefile create mode 100644 arch/m68k/mm/fault.c create mode 100644 arch/m68k/mm/hwtest.c create mode 100644 arch/m68k/mm/init.c create mode 100644 arch/m68k/mm/kmap.c create mode 100644 arch/m68k/mm/memory.c create mode 100644 arch/m68k/mm/motorola.c create mode 100644 arch/m68k/mm/sun3kmap.c create mode 100644 arch/m68k/mm/sun3mmu.c create mode 100644 arch/m68k/mvme147/147ints.c create mode 100644 arch/m68k/mvme147/Makefile create mode 100644 arch/m68k/mvme147/config.c create mode 100644 arch/m68k/mvme16x/16xints.c create mode 100644 arch/m68k/mvme16x/Makefile create mode 100644 arch/m68k/mvme16x/config.c create mode 100644 arch/m68k/mvme16x/mvme16x_ksyms.c create mode 100644 arch/m68k/mvme16x/rtc.c create mode 100644 arch/m68k/q40/Makefile create mode 100644 arch/m68k/q40/README create mode 100644 arch/m68k/q40/config.c create mode 100644 arch/m68k/q40/q40ints.c create mode 100644 arch/m68k/sun3/Makefile create mode 100644 arch/m68k/sun3/config.c create mode 100644 arch/m68k/sun3/dvma.c create mode 100644 arch/m68k/sun3/idprom.c create mode 100644 arch/m68k/sun3/intersil.c create mode 100644 arch/m68k/sun3/leds.c create mode 100644 arch/m68k/sun3/mmu_emu.c create mode 100644 arch/m68k/sun3/prom/Makefile create mode 100644 arch/m68k/sun3/prom/console.c create mode 100644 arch/m68k/sun3/prom/init.c create mode 100644 arch/m68k/sun3/prom/misc.c create mode 100644 arch/m68k/sun3/prom/printf.c create mode 100644 arch/m68k/sun3/sbus.c create mode 100644 arch/m68k/sun3/sun3_ksyms.c create mode 100644 arch/m68k/sun3/sun3dvma.c create mode 100644 arch/m68k/sun3/sun3ints.c create mode 100644 arch/m68k/sun3x/Makefile create mode 100644 arch/m68k/sun3x/config.c create mode 100644 arch/m68k/sun3x/dvma.c create mode 100644 arch/m68k/sun3x/prom.c create mode 100644 arch/m68k/sun3x/time.c create mode 100644 arch/m68k/sun3x/time.h create mode 100644 arch/m68k/tools/amiga/Makefile create mode 100644 arch/m68k/tools/amiga/dmesg.c create mode 100644 arch/m68knommu/Kconfig create mode 100644 arch/m68knommu/Kconfig.debug create mode 100644 arch/m68knommu/Makefile create mode 100644 arch/m68knommu/defconfig create mode 100644 arch/m68knommu/kernel/Makefile create mode 100644 arch/m68knommu/kernel/asm-offsets.c create mode 100644 arch/m68knommu/kernel/comempci.c create mode 100644 arch/m68knommu/kernel/dma.c create mode 100644 arch/m68knommu/kernel/entry.S create mode 100644 arch/m68knommu/kernel/init_task.c create mode 100644 arch/m68knommu/kernel/m68k_ksyms.c create mode 100644 arch/m68knommu/kernel/module.c create mode 100644 arch/m68knommu/kernel/process.c create mode 100644 arch/m68knommu/kernel/ptrace.c create mode 100644 arch/m68knommu/kernel/semaphore.c create mode 100644 arch/m68knommu/kernel/setup.c create mode 100644 arch/m68knommu/kernel/signal.c create mode 100644 arch/m68knommu/kernel/sys_m68k.c create mode 100644 arch/m68knommu/kernel/syscalltable.S create mode 100644 arch/m68knommu/kernel/time.c create mode 100644 arch/m68knommu/kernel/traps.c create mode 100644 arch/m68knommu/kernel/vmlinux.lds.S create mode 100644 arch/m68knommu/lib/Makefile create mode 100644 arch/m68knommu/lib/ashldi3.c create mode 100644 arch/m68knommu/lib/ashrdi3.c create mode 100644 arch/m68knommu/lib/checksum.c create mode 100644 arch/m68knommu/lib/delay.c create mode 100644 arch/m68knommu/lib/divsi3.S create mode 100644 arch/m68knommu/lib/lshrdi3.c create mode 100644 arch/m68knommu/lib/memcpy.c create mode 100644 arch/m68knommu/lib/memset.c create mode 100644 arch/m68knommu/lib/modsi3.S create mode 100644 arch/m68knommu/lib/muldi3.c create mode 100644 arch/m68knommu/lib/mulsi3.S create mode 100644 arch/m68knommu/lib/semaphore.S create mode 100644 arch/m68knommu/lib/udivsi3.S create mode 100644 arch/m68knommu/lib/umodsi3.S create mode 100644 arch/m68knommu/mm/Makefile create mode 100644 arch/m68knommu/mm/fault.c create mode 100644 arch/m68knommu/mm/init.c create mode 100644 arch/m68knommu/mm/kmap.c create mode 100644 arch/m68knommu/mm/memory.c create mode 100644 arch/m68knommu/platform/5206/Makefile create mode 100644 arch/m68knommu/platform/5206/config.c create mode 100644 arch/m68knommu/platform/5206e/Makefile create mode 100644 arch/m68knommu/platform/5206e/config.c create mode 100644 arch/m68knommu/platform/5249/Makefile create mode 100644 arch/m68knommu/platform/5249/config.c create mode 100644 arch/m68knommu/platform/5272/Makefile create mode 100644 arch/m68knommu/platform/5272/config.c create mode 100644 arch/m68knommu/platform/527x/Makefile create mode 100644 arch/m68knommu/platform/527x/config.c create mode 100644 arch/m68knommu/platform/528x/Makefile create mode 100644 arch/m68knommu/platform/528x/config.c create mode 100644 arch/m68knommu/platform/5307/Makefile create mode 100644 arch/m68knommu/platform/5307/config.c create mode 100644 arch/m68knommu/platform/5307/entry.S create mode 100644 arch/m68knommu/platform/5307/head.S create mode 100644 arch/m68knommu/platform/5307/ints.c create mode 100644 arch/m68knommu/platform/5307/pit.c create mode 100644 arch/m68knommu/platform/5307/timers.c create mode 100644 arch/m68knommu/platform/5307/vectors.c create mode 100644 arch/m68knommu/platform/5407/Makefile create mode 100644 arch/m68knommu/platform/5407/config.c create mode 100644 arch/m68knommu/platform/68328/Makefile create mode 100644 arch/m68knommu/platform/68328/bootlogo.h create mode 100644 arch/m68knommu/platform/68328/bootlogo.pl create mode 100644 arch/m68knommu/platform/68328/config.c create mode 100644 arch/m68knommu/platform/68328/entry.S create mode 100644 arch/m68knommu/platform/68328/head-pilot.S create mode 100644 arch/m68knommu/platform/68328/head-ram.S create mode 100644 arch/m68knommu/platform/68328/head-rom.S create mode 100644 arch/m68knommu/platform/68328/ints.c create mode 100644 arch/m68knommu/platform/68360/Makefile create mode 100644 arch/m68knommu/platform/68360/commproc.c create mode 100644 arch/m68knommu/platform/68360/config.c create mode 100644 arch/m68knommu/platform/68360/entry.S create mode 100644 arch/m68knommu/platform/68360/ints.c create mode 100644 arch/m68knommu/platform/68EZ328/Makefile create mode 100644 arch/m68knommu/platform/68EZ328/bootlogo.h create mode 100644 arch/m68knommu/platform/68EZ328/config.c create mode 100644 arch/m68knommu/platform/68VZ328/Makefile create mode 100644 arch/m68knommu/platform/68VZ328/de2/config.c create mode 100644 arch/m68knommu/platform/68VZ328/ucdimm/config.c create mode 100644 arch/m68knommu/platform/Makefile create mode 100644 arch/mips/Kconfig create mode 100644 arch/mips/Kconfig.debug create mode 100644 arch/mips/Makefile create mode 100644 arch/mips/arc/Makefile create mode 100644 arch/mips/arc/arc_con.c create mode 100644 arch/mips/arc/cmdline.c create mode 100644 arch/mips/arc/console.c create mode 100644 arch/mips/arc/env.c create mode 100644 arch/mips/arc/file.c create mode 100644 arch/mips/arc/identify.c create mode 100644 arch/mips/arc/init.c create mode 100644 arch/mips/arc/memory.c create mode 100644 arch/mips/arc/misc.c create mode 100644 arch/mips/arc/promlib.c create mode 100644 arch/mips/arc/salone.c create mode 100644 arch/mips/arc/time.c create mode 100644 arch/mips/arc/tree.c create mode 100644 arch/mips/au1000/common/Makefile create mode 100644 arch/mips/au1000/common/au1xxx_irqmap.c create mode 100644 arch/mips/au1000/common/clocks.c create mode 100644 arch/mips/au1000/common/cputable.c create mode 100644 arch/mips/au1000/common/dbdma.c create mode 100644 arch/mips/au1000/common/dbg_io.c create mode 100644 arch/mips/au1000/common/dma.c create mode 100644 arch/mips/au1000/common/int-handler.S create mode 100644 arch/mips/au1000/common/irq.c create mode 100644 arch/mips/au1000/common/pci.c create mode 100644 arch/mips/au1000/common/platform.c create mode 100644 arch/mips/au1000/common/power.c create mode 100644 arch/mips/au1000/common/prom.c create mode 100644 arch/mips/au1000/common/puts.c create mode 100644 arch/mips/au1000/common/reset.c create mode 100644 arch/mips/au1000/common/setup.c create mode 100644 arch/mips/au1000/common/sleeper.S create mode 100644 arch/mips/au1000/common/time.c create mode 100644 arch/mips/au1000/common/usbdev.c create mode 100644 arch/mips/au1000/csb250/Makefile create mode 100644 arch/mips/au1000/csb250/board_setup.c create mode 100644 arch/mips/au1000/csb250/init.c create mode 100644 arch/mips/au1000/csb250/irqmap.c create mode 100644 arch/mips/au1000/db1x00/Makefile create mode 100644 arch/mips/au1000/db1x00/board_setup.c create mode 100644 arch/mips/au1000/db1x00/init.c create mode 100644 arch/mips/au1000/db1x00/irqmap.c create mode 100644 arch/mips/au1000/db1x00/mirage_ts.c create mode 100644 arch/mips/au1000/hydrogen3/Makefile create mode 100644 arch/mips/au1000/hydrogen3/board_setup.c create mode 100644 arch/mips/au1000/hydrogen3/init.c create mode 100644 arch/mips/au1000/hydrogen3/irqmap.c create mode 100644 arch/mips/au1000/mtx-1/Makefile create mode 100644 arch/mips/au1000/mtx-1/board_setup.c create mode 100644 arch/mips/au1000/mtx-1/init.c create mode 100644 arch/mips/au1000/mtx-1/irqmap.c create mode 100644 arch/mips/au1000/pb1000/Makefile create mode 100644 arch/mips/au1000/pb1000/board_setup.c create mode 100644 arch/mips/au1000/pb1000/init.c create mode 100644 arch/mips/au1000/pb1000/irqmap.c create mode 100644 arch/mips/au1000/pb1100/Makefile create mode 100644 arch/mips/au1000/pb1100/board_setup.c create mode 100644 arch/mips/au1000/pb1100/init.c create mode 100644 arch/mips/au1000/pb1100/irqmap.c create mode 100644 arch/mips/au1000/pb1500/Makefile create mode 100644 arch/mips/au1000/pb1500/board_setup.c create mode 100644 arch/mips/au1000/pb1500/init.c create mode 100644 arch/mips/au1000/pb1500/irqmap.c create mode 100644 arch/mips/au1000/pb1550/Makefile create mode 100644 arch/mips/au1000/pb1550/board_setup.c create mode 100644 arch/mips/au1000/pb1550/init.c create mode 100644 arch/mips/au1000/pb1550/irqmap.c create mode 100644 arch/mips/au1000/xxs1500/Makefile create mode 100644 arch/mips/au1000/xxs1500/board_setup.c create mode 100644 arch/mips/au1000/xxs1500/init.c create mode 100644 arch/mips/au1000/xxs1500/irqmap.c create mode 100644 arch/mips/boot/Makefile create mode 100644 arch/mips/boot/addinitrd.c create mode 100644 arch/mips/boot/ecoff.h create mode 100644 arch/mips/boot/elf2ecoff.c create mode 100644 arch/mips/cobalt/Makefile create mode 100644 arch/mips/cobalt/int-handler.S create mode 100644 arch/mips/cobalt/irq.c create mode 100644 arch/mips/cobalt/promcon.c create mode 100644 arch/mips/cobalt/reset.c create mode 100644 arch/mips/cobalt/setup.c create mode 100644 arch/mips/configs/atlas_defconfig create mode 100644 arch/mips/configs/capcella_defconfig create mode 100644 arch/mips/configs/cobalt_defconfig create mode 100644 arch/mips/configs/db1000_defconfig create mode 100644 arch/mips/configs/db1100_defconfig create mode 100644 arch/mips/configs/db1500_defconfig create mode 100644 arch/mips/configs/db1550_defconfig create mode 100644 arch/mips/configs/ddb5476_defconfig create mode 100644 arch/mips/configs/ddb5477_defconfig create mode 100644 arch/mips/configs/decstation_defconfig create mode 100644 arch/mips/configs/e55_defconfig create mode 100644 arch/mips/configs/ev64120_defconfig create mode 100644 arch/mips/configs/ev96100_defconfig create mode 100644 arch/mips/configs/ip22_defconfig create mode 100644 arch/mips/configs/ip27_defconfig create mode 100644 arch/mips/configs/ip32_defconfig create mode 100644 arch/mips/configs/it8172_defconfig create mode 100644 arch/mips/configs/ivr_defconfig create mode 100644 arch/mips/configs/jaguar-atx_defconfig create mode 100644 arch/mips/configs/jmr3927_defconfig create mode 100644 arch/mips/configs/lasat200_defconfig create mode 100644 arch/mips/configs/malta_defconfig create mode 100644 arch/mips/configs/mpc30x_defconfig create mode 100644 arch/mips/configs/ocelot_3_defconfig create mode 100644 arch/mips/configs/ocelot_c_defconfig create mode 100644 arch/mips/configs/ocelot_defconfig create mode 100644 arch/mips/configs/ocelot_g_defconfig create mode 100644 arch/mips/configs/osprey_defconfig create mode 100644 arch/mips/configs/pb1100_defconfig create mode 100644 arch/mips/configs/pb1500_defconfig create mode 100644 arch/mips/configs/pb1550_defconfig create mode 100644 arch/mips/configs/rm200_defconfig create mode 100644 arch/mips/configs/sb1250-swarm_defconfig create mode 100644 arch/mips/configs/sead_defconfig create mode 100644 arch/mips/configs/tb0226_defconfig create mode 100644 arch/mips/configs/tb0229_defconfig create mode 100644 arch/mips/configs/workpad_defconfig create mode 100644 arch/mips/configs/yosemite_defconfig create mode 100644 arch/mips/ddb5xxx/common/Makefile create mode 100644 arch/mips/ddb5xxx/common/nile4.c create mode 100644 arch/mips/ddb5xxx/common/prom.c create mode 100644 arch/mips/ddb5xxx/common/rtc_ds1386.c create mode 100644 arch/mips/ddb5xxx/ddb5074/Makefile create mode 100644 arch/mips/ddb5xxx/ddb5074/int-handler.S create mode 100644 arch/mips/ddb5xxx/ddb5074/irq.c create mode 100644 arch/mips/ddb5xxx/ddb5074/nile4_pic.c create mode 100644 arch/mips/ddb5xxx/ddb5074/setup.c create mode 100644 arch/mips/ddb5xxx/ddb5476/Makefile create mode 100644 arch/mips/ddb5xxx/ddb5476/dbg_io.c create mode 100644 arch/mips/ddb5xxx/ddb5476/int-handler.S create mode 100644 arch/mips/ddb5xxx/ddb5476/irq.c create mode 100644 arch/mips/ddb5xxx/ddb5476/nile4_pic.c create mode 100644 arch/mips/ddb5xxx/ddb5476/setup.c create mode 100644 arch/mips/ddb5xxx/ddb5476/vrc5476_irq.c create mode 100644 arch/mips/ddb5xxx/ddb5477/Makefile create mode 100644 arch/mips/ddb5xxx/ddb5477/debug.c create mode 100644 arch/mips/ddb5xxx/ddb5477/int-handler.S create mode 100644 arch/mips/ddb5xxx/ddb5477/irq.c create mode 100644 arch/mips/ddb5xxx/ddb5477/irq_5477.c create mode 100644 arch/mips/ddb5xxx/ddb5477/kgdb_io.c create mode 100644 arch/mips/ddb5xxx/ddb5477/lcd44780.c create mode 100644 arch/mips/ddb5xxx/ddb5477/lcd44780.h create mode 100644 arch/mips/ddb5xxx/ddb5477/setup.c create mode 100644 arch/mips/dec/Makefile create mode 100644 arch/mips/dec/boot/Makefile create mode 100644 arch/mips/dec/boot/decstation.c create mode 100644 arch/mips/dec/boot/ld.ecoff create mode 100644 arch/mips/dec/ecc-berr.c create mode 100644 arch/mips/dec/int-handler.S create mode 100644 arch/mips/dec/ioasic-irq.c create mode 100644 arch/mips/dec/kn02-irq.c create mode 100644 arch/mips/dec/prom/Makefile create mode 100644 arch/mips/dec/prom/call_o32.S create mode 100644 arch/mips/dec/prom/cmdline.c create mode 100644 arch/mips/dec/prom/console.c create mode 100644 arch/mips/dec/prom/dectypes.h create mode 100644 arch/mips/dec/prom/identify.c create mode 100644 arch/mips/dec/prom/init.c create mode 100644 arch/mips/dec/prom/locore.S create mode 100644 arch/mips/dec/prom/memory.c create mode 100644 arch/mips/dec/promcon.c create mode 100644 arch/mips/dec/reset.c create mode 100644 arch/mips/dec/setup.c create mode 100644 arch/mips/dec/time.c create mode 100644 arch/mips/dec/wbflush.c create mode 100644 arch/mips/defconfig create mode 100644 arch/mips/galileo-boards/ev96100/Makefile create mode 100644 arch/mips/galileo-boards/ev96100/init.c create mode 100644 arch/mips/galileo-boards/ev96100/int-handler.S create mode 100644 arch/mips/galileo-boards/ev96100/irq.c create mode 100644 arch/mips/galileo-boards/ev96100/puts.c create mode 100644 arch/mips/galileo-boards/ev96100/reset.c create mode 100644 arch/mips/galileo-boards/ev96100/setup.c create mode 100644 arch/mips/galileo-boards/ev96100/time.c create mode 100644 arch/mips/gt64120/common/Makefile create mode 100644 arch/mips/gt64120/common/pci.c create mode 100644 arch/mips/gt64120/common/time.c create mode 100644 arch/mips/gt64120/ev64120/Makefile create mode 100644 arch/mips/gt64120/ev64120/int-handler.S create mode 100644 arch/mips/gt64120/ev64120/irq.c create mode 100644 arch/mips/gt64120/ev64120/promcon.c create mode 100644 arch/mips/gt64120/ev64120/reset.c create mode 100644 arch/mips/gt64120/ev64120/serialGT.c create mode 100644 arch/mips/gt64120/ev64120/setup.c create mode 100644 arch/mips/gt64120/momenco_ocelot/Makefile create mode 100644 arch/mips/gt64120/momenco_ocelot/dbg_io.c create mode 100644 arch/mips/gt64120/momenco_ocelot/int-handler.S create mode 100644 arch/mips/gt64120/momenco_ocelot/irq.c create mode 100644 arch/mips/gt64120/momenco_ocelot/ocelot_pld.h create mode 100644 arch/mips/gt64120/momenco_ocelot/prom.c create mode 100644 arch/mips/gt64120/momenco_ocelot/reset.c create mode 100644 arch/mips/gt64120/momenco_ocelot/setup.c create mode 100644 arch/mips/ite-boards/generic/Makefile create mode 100644 arch/mips/ite-boards/generic/dbg_io.c create mode 100644 arch/mips/ite-boards/generic/int-handler.S create mode 100644 arch/mips/ite-boards/generic/irq.c create mode 100644 arch/mips/ite-boards/generic/it8172_cir.c create mode 100644 arch/mips/ite-boards/generic/it8172_setup.c create mode 100644 arch/mips/ite-boards/generic/lpc.c create mode 100644 arch/mips/ite-boards/generic/pmon_prom.c create mode 100644 arch/mips/ite-boards/generic/puts.c create mode 100644 arch/mips/ite-boards/generic/reset.c create mode 100644 arch/mips/ite-boards/generic/time.c create mode 100644 arch/mips/ite-boards/ivr/Makefile create mode 100644 arch/mips/ite-boards/ivr/README create mode 100644 arch/mips/ite-boards/ivr/init.c create mode 100644 arch/mips/ite-boards/qed-4n-s01b/Makefile create mode 100644 arch/mips/ite-boards/qed-4n-s01b/README create mode 100644 arch/mips/ite-boards/qed-4n-s01b/init.c create mode 100644 arch/mips/jazz/Makefile create mode 100644 arch/mips/jazz/int-handler.S create mode 100644 arch/mips/jazz/io.c create mode 100644 arch/mips/jazz/irq.c create mode 100644 arch/mips/jazz/jazzdma.c create mode 100644 arch/mips/jazz/reset.c create mode 100644 arch/mips/jazz/setup.c create mode 100644 arch/mips/jmr3927/common/Makefile create mode 100644 arch/mips/jmr3927/common/prom.c create mode 100644 arch/mips/jmr3927/common/puts.c create mode 100644 arch/mips/jmr3927/common/rtc_ds1742.c create mode 100644 arch/mips/jmr3927/rbhma3100/Makefile create mode 100644 arch/mips/jmr3927/rbhma3100/init.c create mode 100644 arch/mips/jmr3927/rbhma3100/int-handler.S create mode 100644 arch/mips/jmr3927/rbhma3100/irq.c create mode 100644 arch/mips/jmr3927/rbhma3100/kgdb_io.c create mode 100644 arch/mips/jmr3927/rbhma3100/setup.c create mode 100644 arch/mips/kernel/Makefile create mode 100644 arch/mips/kernel/binfmt_elfn32.c create mode 100644 arch/mips/kernel/binfmt_elfo32.c create mode 100644 arch/mips/kernel/branch.c create mode 100644 arch/mips/kernel/cpu-bugs64.c create mode 100644 arch/mips/kernel/cpu-probe.c create mode 100644 arch/mips/kernel/entry.S create mode 100644 arch/mips/kernel/gdb-low.S create mode 100644 arch/mips/kernel/gdb-stub.c create mode 100644 arch/mips/kernel/genex.S create mode 100644 arch/mips/kernel/genrtc.c create mode 100644 arch/mips/kernel/head.S create mode 100644 arch/mips/kernel/i8259.c create mode 100644 arch/mips/kernel/init_task.c create mode 100644 arch/mips/kernel/ioctl32.c create mode 100644 arch/mips/kernel/irix5sys.S create mode 100644 arch/mips/kernel/irixelf.c create mode 100644 arch/mips/kernel/irixinv.c create mode 100644 arch/mips/kernel/irixioctl.c create mode 100644 arch/mips/kernel/irixsig.c create mode 100644 arch/mips/kernel/irq-msc01.c create mode 100644 arch/mips/kernel/irq-mv6434x.c create mode 100644 arch/mips/kernel/irq-rm7000.c create mode 100644 arch/mips/kernel/irq-rm9000.c create mode 100644 arch/mips/kernel/irq.c create mode 100644 arch/mips/kernel/irq_cpu.c create mode 100644 arch/mips/kernel/linux32.c create mode 100644 arch/mips/kernel/mips_ksyms.c create mode 100644 arch/mips/kernel/module-elf32.c create mode 100644 arch/mips/kernel/module-elf64.c create mode 100644 arch/mips/kernel/module.c create mode 100644 arch/mips/kernel/offset.c create mode 100644 arch/mips/kernel/proc.c create mode 100644 arch/mips/kernel/process.c create mode 100644 arch/mips/kernel/ptrace.c create mode 100644 arch/mips/kernel/ptrace32.c create mode 100644 arch/mips/kernel/r2300_fpu.S create mode 100644 arch/mips/kernel/r2300_switch.S create mode 100644 arch/mips/kernel/r4k_fpu.S create mode 100644 arch/mips/kernel/r4k_switch.S create mode 100644 arch/mips/kernel/r6000_fpu.S create mode 100644 arch/mips/kernel/reset.c create mode 100644 arch/mips/kernel/scall32-o32.S create mode 100644 arch/mips/kernel/scall64-64.S create mode 100644 arch/mips/kernel/scall64-n32.S create mode 100644 arch/mips/kernel/scall64-o32.S create mode 100644 arch/mips/kernel/semaphore.c create mode 100644 arch/mips/kernel/setup.c create mode 100644 arch/mips/kernel/signal-common.h create mode 100644 arch/mips/kernel/signal.c create mode 100644 arch/mips/kernel/signal32.c create mode 100644 arch/mips/kernel/signal_n32.c create mode 100644 arch/mips/kernel/smp.c create mode 100644 arch/mips/kernel/syscall.c create mode 100644 arch/mips/kernel/sysirix.c create mode 100644 arch/mips/kernel/time.c create mode 100644 arch/mips/kernel/traps.c create mode 100644 arch/mips/kernel/unaligned.c create mode 100644 arch/mips/kernel/vmlinux.lds.S create mode 100644 arch/mips/lasat/Makefile create mode 100644 arch/mips/lasat/at93c.c create mode 100644 arch/mips/lasat/at93c.h create mode 100644 arch/mips/lasat/ds1603.c create mode 100644 arch/mips/lasat/ds1603.h create mode 100644 arch/mips/lasat/image/Makefile create mode 100644 arch/mips/lasat/image/head.S create mode 100644 arch/mips/lasat/image/romscript.normal create mode 100644 arch/mips/lasat/interrupt.c create mode 100644 arch/mips/lasat/lasatIRQ.S create mode 100644 arch/mips/lasat/lasat_board.c create mode 100644 arch/mips/lasat/lasat_models.h create mode 100644 arch/mips/lasat/picvue.c create mode 100644 arch/mips/lasat/picvue.h create mode 100644 arch/mips/lasat/picvue_proc.c create mode 100644 arch/mips/lasat/prom.c create mode 100644 arch/mips/lasat/prom.h create mode 100644 arch/mips/lasat/reset.c create mode 100644 arch/mips/lasat/setup.c create mode 100644 arch/mips/lasat/sysctl.c create mode 100644 arch/mips/lasat/sysctl.h create mode 100644 arch/mips/lib-32/Makefile create mode 100644 arch/mips/lib-32/csum_partial.S create mode 100644 arch/mips/lib-32/dump_tlb.c create mode 100644 arch/mips/lib-32/memset.S create mode 100644 arch/mips/lib-32/r3k_dump_tlb.c create mode 100644 arch/mips/lib-32/watch.S create mode 100644 arch/mips/lib-64/Makefile create mode 100644 arch/mips/lib-64/csum_partial.S create mode 100644 arch/mips/lib-64/dump_tlb.c create mode 100644 arch/mips/lib-64/memset.S create mode 100644 arch/mips/lib-64/watch.S create mode 100644 arch/mips/lib/Makefile create mode 100644 arch/mips/lib/csum_partial_copy.c create mode 100644 arch/mips/lib/dec_and_lock.c create mode 100644 arch/mips/lib/iomap.c create mode 100644 arch/mips/lib/memcpy.S create mode 100644 arch/mips/lib/promlib.c create mode 100644 arch/mips/lib/strlen_user.S create mode 100644 arch/mips/lib/strncpy_user.S create mode 100644 arch/mips/lib/strnlen_user.S create mode 100644 arch/mips/math-emu/Makefile create mode 100644 arch/mips/math-emu/cp1emu.c create mode 100644 arch/mips/math-emu/dp_add.c create mode 100644 arch/mips/math-emu/dp_cmp.c create mode 100644 arch/mips/math-emu/dp_div.c create mode 100644 arch/mips/math-emu/dp_fint.c create mode 100644 arch/mips/math-emu/dp_flong.c create mode 100644 arch/mips/math-emu/dp_frexp.c create mode 100644 arch/mips/math-emu/dp_fsp.c create mode 100644 arch/mips/math-emu/dp_logb.c create mode 100644 arch/mips/math-emu/dp_modf.c create mode 100644 arch/mips/math-emu/dp_mul.c create mode 100644 arch/mips/math-emu/dp_scalb.c create mode 100644 arch/mips/math-emu/dp_simple.c create mode 100644 arch/mips/math-emu/dp_sqrt.c create mode 100644 arch/mips/math-emu/dp_sub.c create mode 100644 arch/mips/math-emu/dp_tint.c create mode 100644 arch/mips/math-emu/dp_tlong.c create mode 100644 arch/mips/math-emu/dsemul.c create mode 100644 arch/mips/math-emu/dsemul.h create mode 100644 arch/mips/math-emu/ieee754.c create mode 100644 arch/mips/math-emu/ieee754.h create mode 100644 arch/mips/math-emu/ieee754d.c create mode 100644 arch/mips/math-emu/ieee754dp.c create mode 100644 arch/mips/math-emu/ieee754dp.h create mode 100644 arch/mips/math-emu/ieee754int.h create mode 100644 arch/mips/math-emu/ieee754m.c create mode 100644 arch/mips/math-emu/ieee754sp.c create mode 100644 arch/mips/math-emu/ieee754sp.h create mode 100644 arch/mips/math-emu/ieee754xcpt.c create mode 100644 arch/mips/math-emu/kernel_linkage.c create mode 100644 arch/mips/math-emu/sp_add.c create mode 100644 arch/mips/math-emu/sp_cmp.c create mode 100644 arch/mips/math-emu/sp_div.c create mode 100644 arch/mips/math-emu/sp_fdp.c create mode 100644 arch/mips/math-emu/sp_fint.c create mode 100644 arch/mips/math-emu/sp_flong.c create mode 100644 arch/mips/math-emu/sp_frexp.c create mode 100644 arch/mips/math-emu/sp_logb.c create mode 100644 arch/mips/math-emu/sp_modf.c create mode 100644 arch/mips/math-emu/sp_mul.c create mode 100644 arch/mips/math-emu/sp_scalb.c create mode 100644 arch/mips/math-emu/sp_simple.c create mode 100644 arch/mips/math-emu/sp_sqrt.c create mode 100644 arch/mips/math-emu/sp_sub.c create mode 100644 arch/mips/math-emu/sp_tint.c create mode 100644 arch/mips/math-emu/sp_tlong.c create mode 100644 arch/mips/mips-boards/atlas/Makefile create mode 100644 arch/mips/mips-boards/atlas/atlas_gdb.c create mode 100644 arch/mips/mips-boards/atlas/atlas_int.c create mode 100644 arch/mips/mips-boards/atlas/atlas_setup.c create mode 100644 arch/mips/mips-boards/generic/Makefile create mode 100644 arch/mips/mips-boards/generic/cmdline.c create mode 100644 arch/mips/mips-boards/generic/display.c create mode 100644 arch/mips/mips-boards/generic/gdb_hook.c create mode 100644 arch/mips/mips-boards/generic/init.c create mode 100644 arch/mips/mips-boards/generic/memory.c create mode 100644 arch/mips/mips-boards/generic/mipsIRQ.S create mode 100644 arch/mips/mips-boards/generic/pci.c create mode 100644 arch/mips/mips-boards/generic/printf.c create mode 100644 arch/mips/mips-boards/generic/reset.c create mode 100644 arch/mips/mips-boards/generic/time.c create mode 100644 arch/mips/mips-boards/malta/Makefile create mode 100644 arch/mips/mips-boards/malta/malta_int.c create mode 100644 arch/mips/mips-boards/malta/malta_setup.c create mode 100644 arch/mips/mips-boards/sead/Makefile create mode 100644 arch/mips/mips-boards/sead/sead_int.c create mode 100644 arch/mips/mips-boards/sead/sead_setup.c create mode 100644 arch/mips/mm/Makefile create mode 100644 arch/mips/mm/c-r3k.c create mode 100644 arch/mips/mm/c-r4k.c create mode 100644 arch/mips/mm/c-sb1.c create mode 100644 arch/mips/mm/c-tx39.c create mode 100644 arch/mips/mm/cache.c create mode 100644 arch/mips/mm/cerr-sb1.c create mode 100644 arch/mips/mm/cex-gen.S create mode 100644 arch/mips/mm/cex-sb1.S create mode 100644 arch/mips/mm/dma-coherent.c create mode 100644 arch/mips/mm/dma-ip27.c create mode 100644 arch/mips/mm/dma-ip32.c create mode 100644 arch/mips/mm/dma-noncoherent.c create mode 100644 arch/mips/mm/extable.c create mode 100644 arch/mips/mm/fault.c create mode 100644 arch/mips/mm/highmem.c create mode 100644 arch/mips/mm/init.c create mode 100644 arch/mips/mm/ioremap.c create mode 100644 arch/mips/mm/pg-r4k.c create mode 100644 arch/mips/mm/pg-sb1.c create mode 100644 arch/mips/mm/pgtable-32.c create mode 100644 arch/mips/mm/pgtable-64.c create mode 100644 arch/mips/mm/pgtable.c create mode 100644 arch/mips/mm/sc-ip22.c create mode 100644 arch/mips/mm/sc-r5k.c create mode 100644 arch/mips/mm/sc-rm7k.c create mode 100644 arch/mips/mm/tlb-andes.c create mode 100644 arch/mips/mm/tlb-r3k.c create mode 100644 arch/mips/mm/tlb-r4k.c create mode 100644 arch/mips/mm/tlb-r8k.c create mode 100644 arch/mips/mm/tlb-sb1.c create mode 100644 arch/mips/mm/tlbex-fault.S create mode 100644 arch/mips/mm/tlbex.c create mode 100644 arch/mips/momentum/jaguar_atx/Makefile create mode 100644 arch/mips/momentum/jaguar_atx/dbg_io.c create mode 100644 arch/mips/momentum/jaguar_atx/int-handler.S create mode 100644 arch/mips/momentum/jaguar_atx/irq.c create mode 100644 arch/mips/momentum/jaguar_atx/ja-console.c create mode 100644 arch/mips/momentum/jaguar_atx/jaguar_atx_fpga.h create mode 100644 arch/mips/momentum/jaguar_atx/prom.c create mode 100644 arch/mips/momentum/jaguar_atx/reset.c create mode 100644 arch/mips/momentum/jaguar_atx/setup.c create mode 100644 arch/mips/momentum/ocelot_3/Makefile create mode 100644 arch/mips/momentum/ocelot_3/int-handler.S create mode 100644 arch/mips/momentum/ocelot_3/irq.c create mode 100644 arch/mips/momentum/ocelot_3/ocelot_3_fpga.h create mode 100644 arch/mips/momentum/ocelot_3/prom.c create mode 100644 arch/mips/momentum/ocelot_3/reset.c create mode 100644 arch/mips/momentum/ocelot_3/setup.c create mode 100644 arch/mips/momentum/ocelot_c/Makefile create mode 100644 arch/mips/momentum/ocelot_c/cpci-irq.c create mode 100644 arch/mips/momentum/ocelot_c/dbg_io.c create mode 100644 arch/mips/momentum/ocelot_c/int-handler.S create mode 100644 arch/mips/momentum/ocelot_c/irq.c create mode 100644 arch/mips/momentum/ocelot_c/ocelot_c_fpga.h create mode 100644 arch/mips/momentum/ocelot_c/prom.c create mode 100644 arch/mips/momentum/ocelot_c/reset.c create mode 100644 arch/mips/momentum/ocelot_c/setup.c create mode 100644 arch/mips/momentum/ocelot_c/uart-irq.c create mode 100644 arch/mips/momentum/ocelot_g/Makefile create mode 100644 arch/mips/momentum/ocelot_g/dbg_io.c create mode 100644 arch/mips/momentum/ocelot_g/gt-irq.c create mode 100644 arch/mips/momentum/ocelot_g/int-handler.S create mode 100644 arch/mips/momentum/ocelot_g/irq.c create mode 100644 arch/mips/momentum/ocelot_g/ocelot_pld.h create mode 100644 arch/mips/momentum/ocelot_g/prom.c create mode 100644 arch/mips/momentum/ocelot_g/reset.c create mode 100644 arch/mips/momentum/ocelot_g/setup.c create mode 100644 arch/mips/oprofile/Kconfig create mode 100644 arch/mips/oprofile/Makefile create mode 100644 arch/mips/oprofile/common.c create mode 100644 arch/mips/oprofile/op_impl.h create mode 100644 arch/mips/oprofile/op_model_rm9000.c create mode 100644 arch/mips/pci/Makefile create mode 100644 arch/mips/pci/fixup-atlas.c create mode 100644 arch/mips/pci/fixup-au1000.c create mode 100644 arch/mips/pci/fixup-capcella.c create mode 100644 arch/mips/pci/fixup-cobalt.c create mode 100644 arch/mips/pci/fixup-ddb5074.c create mode 100644 arch/mips/pci/fixup-ddb5477.c create mode 100644 arch/mips/pci/fixup-ev64120.c create mode 100644 arch/mips/pci/fixup-ev96100.c create mode 100644 arch/mips/pci/fixup-ip32.c create mode 100644 arch/mips/pci/fixup-ite8172g.c create mode 100644 arch/mips/pci/fixup-ivr.c create mode 100644 arch/mips/pci/fixup-jaguar.c create mode 100644 arch/mips/pci/fixup-jmr3927.c create mode 100644 arch/mips/pci/fixup-malta.c create mode 100644 arch/mips/pci/fixup-mpc30x.c create mode 100644 arch/mips/pci/fixup-ocelot-c.c create mode 100644 arch/mips/pci/fixup-ocelot-g.c create mode 100644 arch/mips/pci/fixup-ocelot.c create mode 100644 arch/mips/pci/fixup-ocelot3.c create mode 100644 arch/mips/pci/fixup-rbtx4927.c create mode 100644 arch/mips/pci/fixup-sb1250.c create mode 100644 arch/mips/pci/fixup-sni.c create mode 100644 arch/mips/pci/fixup-tb0219.c create mode 100644 arch/mips/pci/fixup-tb0226.c create mode 100644 arch/mips/pci/fixup-vr4133.c create mode 100644 arch/mips/pci/fixup-yosemite.c create mode 100644 arch/mips/pci/ops-au1000.c create mode 100644 arch/mips/pci/ops-bonito64.c create mode 100644 arch/mips/pci/ops-ddb5074.c create mode 100644 arch/mips/pci/ops-ddb5476.c create mode 100644 arch/mips/pci/ops-ddb5477.c create mode 100644 arch/mips/pci/ops-gt64111.c create mode 100644 arch/mips/pci/ops-gt64120.c create mode 100644 arch/mips/pci/ops-gt96100.c create mode 100644 arch/mips/pci/ops-it8172.c create mode 100644 arch/mips/pci/ops-mace.c create mode 100644 arch/mips/pci/ops-marvell.c create mode 100644 arch/mips/pci/ops-msc.c create mode 100644 arch/mips/pci/ops-nile4.c create mode 100644 arch/mips/pci/ops-sni.c create mode 100644 arch/mips/pci/ops-titan-ht.c create mode 100644 arch/mips/pci/ops-titan.c create mode 100644 arch/mips/pci/ops-tx3927.c create mode 100644 arch/mips/pci/ops-tx4927.c create mode 100644 arch/mips/pci/ops-vr41xx.c create mode 100644 arch/mips/pci/pci-ddb5074.c create mode 100644 arch/mips/pci/pci-ddb5476.c create mode 100644 arch/mips/pci/pci-ddb5477.c create mode 100644 arch/mips/pci/pci-ev96100.c create mode 100644 arch/mips/pci/pci-ip27.c create mode 100644 arch/mips/pci/pci-ip32.c create mode 100644 arch/mips/pci/pci-jmr3927.c create mode 100644 arch/mips/pci/pci-lasat.c create mode 100644 arch/mips/pci/pci-ocelot-c.c create mode 100644 arch/mips/pci/pci-ocelot-g.c create mode 100644 arch/mips/pci/pci-ocelot.c create mode 100644 arch/mips/pci/pci-sb1250.c create mode 100644 arch/mips/pci/pci-vr41xx.c create mode 100644 arch/mips/pci/pci-vr41xx.h create mode 100644 arch/mips/pci/pci-yosemite.c create mode 100644 arch/mips/pci/pci.c create mode 100644 arch/mips/pmc-sierra/yosemite/Makefile create mode 100644 arch/mips/pmc-sierra/yosemite/atmel_read_eeprom.c create mode 100644 arch/mips/pmc-sierra/yosemite/atmel_read_eeprom.h create mode 100644 arch/mips/pmc-sierra/yosemite/dbg_io.c create mode 100644 arch/mips/pmc-sierra/yosemite/ht-irq.c create mode 100644 arch/mips/pmc-sierra/yosemite/ht.c create mode 100644 arch/mips/pmc-sierra/yosemite/i2c-yosemite.c create mode 100644 arch/mips/pmc-sierra/yosemite/i2c-yosemite.h create mode 100644 arch/mips/pmc-sierra/yosemite/irq-handler.S create mode 100644 arch/mips/pmc-sierra/yosemite/irq.c create mode 100644 arch/mips/pmc-sierra/yosemite/prom.c create mode 100644 arch/mips/pmc-sierra/yosemite/py-console.c create mode 100644 arch/mips/pmc-sierra/yosemite/setup.c create mode 100644 arch/mips/pmc-sierra/yosemite/setup.h create mode 100644 arch/mips/pmc-sierra/yosemite/smp.c create mode 100644 arch/mips/sgi-ip22/Makefile create mode 100644 arch/mips/sgi-ip22/ip22-berr.c create mode 100644 arch/mips/sgi-ip22/ip22-eisa.c create mode 100644 arch/mips/sgi-ip22/ip22-hpc.c create mode 100644 arch/mips/sgi-ip22/ip22-int.c create mode 100644 arch/mips/sgi-ip22/ip22-irq.S create mode 100644 arch/mips/sgi-ip22/ip22-mc.c create mode 100644 arch/mips/sgi-ip22/ip22-nvram.c create mode 100644 arch/mips/sgi-ip22/ip22-reset.c create mode 100644 arch/mips/sgi-ip22/ip22-setup.c create mode 100644 arch/mips/sgi-ip22/ip22-time.c create mode 100644 arch/mips/sgi-ip27/Makefile create mode 100644 arch/mips/sgi-ip27/TODO create mode 100644 arch/mips/sgi-ip27/ip27-berr.c create mode 100644 arch/mips/sgi-ip27/ip27-console.c create mode 100644 arch/mips/sgi-ip27/ip27-dbgio.c create mode 100644 arch/mips/sgi-ip27/ip27-hubio.c create mode 100644 arch/mips/sgi-ip27/ip27-init.c create mode 100644 arch/mips/sgi-ip27/ip27-irq-glue.S create mode 100644 arch/mips/sgi-ip27/ip27-irq.c create mode 100644 arch/mips/sgi-ip27/ip27-klconfig.c create mode 100644 arch/mips/sgi-ip27/ip27-klnuma.c create mode 100644 arch/mips/sgi-ip27/ip27-memory.c create mode 100644 arch/mips/sgi-ip27/ip27-nmi.c create mode 100644 arch/mips/sgi-ip27/ip27-reset.c create mode 100644 arch/mips/sgi-ip27/ip27-smp.c create mode 100644 arch/mips/sgi-ip27/ip27-timer.c create mode 100644 arch/mips/sgi-ip27/ip27-xtalk.c create mode 100644 arch/mips/sgi-ip32/Makefile create mode 100644 arch/mips/sgi-ip32/crime.c create mode 100644 arch/mips/sgi-ip32/ip32-berr.c create mode 100644 arch/mips/sgi-ip32/ip32-irq-glue.S create mode 100644 arch/mips/sgi-ip32/ip32-irq.c create mode 100644 arch/mips/sgi-ip32/ip32-memory.c create mode 100644 arch/mips/sgi-ip32/ip32-reset.c create mode 100644 arch/mips/sgi-ip32/ip32-setup.c create mode 100644 arch/mips/sibyte/cfe/Makefile create mode 100644 arch/mips/sibyte/cfe/cfe_api.c create mode 100644 arch/mips/sibyte/cfe/cfe_api.h create mode 100644 arch/mips/sibyte/cfe/cfe_api_int.h create mode 100644 arch/mips/sibyte/cfe/cfe_error.h create mode 100644 arch/mips/sibyte/cfe/console.c create mode 100644 arch/mips/sibyte/cfe/setup.c create mode 100644 arch/mips/sibyte/cfe/smp.c create mode 100644 arch/mips/sibyte/sb1250/Makefile create mode 100644 arch/mips/sibyte/sb1250/bcm1250_tbprof.c create mode 100644 arch/mips/sibyte/sb1250/bus_watcher.c create mode 100644 arch/mips/sibyte/sb1250/irq.c create mode 100644 arch/mips/sibyte/sb1250/irq_handler.S create mode 100644 arch/mips/sibyte/sb1250/prom.c create mode 100644 arch/mips/sibyte/sb1250/setup.c create mode 100644 arch/mips/sibyte/sb1250/smp.c create mode 100644 arch/mips/sibyte/sb1250/time.c create mode 100644 arch/mips/sibyte/swarm/Makefile create mode 100644 arch/mips/sibyte/swarm/dbg_io.c create mode 100644 arch/mips/sibyte/swarm/rtc_m41t81.c create mode 100644 arch/mips/sibyte/swarm/rtc_xicor1241.c create mode 100644 arch/mips/sibyte/swarm/setup.c create mode 100644 arch/mips/sibyte/swarm/time.c create mode 100644 arch/mips/sni/Makefile create mode 100644 arch/mips/sni/int-handler.S create mode 100644 arch/mips/sni/irq.c create mode 100644 arch/mips/sni/pcimt_scache.c create mode 100644 arch/mips/sni/reset.c create mode 100644 arch/mips/sni/setup.c create mode 100644 arch/mips/tx4927/common/Makefile create mode 100644 arch/mips/tx4927/common/tx4927_dbgio.c create mode 100644 arch/mips/tx4927/common/tx4927_irq.c create mode 100644 arch/mips/tx4927/common/tx4927_irq_handler.S create mode 100644 arch/mips/tx4927/common/tx4927_prom.c create mode 100644 arch/mips/tx4927/common/tx4927_setup.c create mode 100644 arch/mips/tx4927/toshiba_rbtx4927/Makefile create mode 100644 arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_irq.c create mode 100644 arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_prom.c create mode 100644 arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c create mode 100644 arch/mips/vr4181/common/Makefile create mode 100644 arch/mips/vr4181/common/int_handler.S create mode 100644 arch/mips/vr4181/common/irq.c create mode 100644 arch/mips/vr4181/common/serial.c create mode 100644 arch/mips/vr4181/common/time.c create mode 100644 arch/mips/vr4181/osprey/Makefile create mode 100644 arch/mips/vr4181/osprey/dbg_io.c create mode 100644 arch/mips/vr4181/osprey/prom.c create mode 100644 arch/mips/vr4181/osprey/reset.c create mode 100644 arch/mips/vr4181/osprey/setup.c create mode 100644 arch/mips/vr41xx/casio-e55/Makefile create mode 100644 arch/mips/vr41xx/casio-e55/setup.c create mode 100644 arch/mips/vr41xx/common/Makefile create mode 100644 arch/mips/vr41xx/common/bcu.c create mode 100644 arch/mips/vr41xx/common/cmu.c create mode 100644 arch/mips/vr41xx/common/giu.c create mode 100644 arch/mips/vr41xx/common/icu.c create mode 100644 arch/mips/vr41xx/common/init.c create mode 100644 arch/mips/vr41xx/common/int-handler.S create mode 100644 arch/mips/vr41xx/common/pmu.c create mode 100644 arch/mips/vr41xx/common/vrc4173.c create mode 100644 arch/mips/vr41xx/ibm-workpad/Makefile create mode 100644 arch/mips/vr41xx/ibm-workpad/setup.c create mode 100644 arch/mips/vr41xx/nec-cmbvr4133/Makefile create mode 100644 arch/mips/vr41xx/nec-cmbvr4133/init.c create mode 100644 arch/mips/vr41xx/nec-cmbvr4133/irq.c create mode 100644 arch/mips/vr41xx/nec-cmbvr4133/m1535plus.c create mode 100644 arch/mips/vr41xx/nec-cmbvr4133/setup.c create mode 100644 arch/mips/vr41xx/tanbac-tb0226/Makefile create mode 100644 arch/mips/vr41xx/tanbac-tb0226/setup.c create mode 100644 arch/mips/vr41xx/tanbac-tb0229/Makefile create mode 100644 arch/mips/vr41xx/tanbac-tb0229/setup.c create mode 100644 arch/mips/vr41xx/victor-mpc30x/Makefile create mode 100644 arch/mips/vr41xx/victor-mpc30x/setup.c create mode 100644 arch/mips/vr41xx/zao-capcella/Makefile create mode 100644 arch/mips/vr41xx/zao-capcella/setup.c create mode 100644 arch/parisc/Kconfig create mode 100644 arch/parisc/Kconfig.debug create mode 100644 arch/parisc/Makefile create mode 100644 arch/parisc/configs/712_defconfig create mode 100644 arch/parisc/configs/a500_defconfig create mode 100644 arch/parisc/configs/b180_defconfig create mode 100644 arch/parisc/configs/c3000_defconfig create mode 100644 arch/parisc/defconfig create mode 100644 arch/parisc/defpalo.conf create mode 100644 arch/parisc/hpux/Makefile create mode 100644 arch/parisc/hpux/entry_hpux.S create mode 100644 arch/parisc/hpux/fs.c create mode 100644 arch/parisc/hpux/gate.S create mode 100644 arch/parisc/hpux/ioctl.c create mode 100644 arch/parisc/hpux/sys_hpux.c create mode 100644 arch/parisc/hpux/wrappers.S create mode 100644 arch/parisc/install.sh create mode 100644 arch/parisc/kernel/Makefile create mode 100644 arch/parisc/kernel/asm-offsets.c create mode 100644 arch/parisc/kernel/binfmt_elf32.c create mode 100644 arch/parisc/kernel/cache.c create mode 100644 arch/parisc/kernel/drivers.c create mode 100644 arch/parisc/kernel/entry.S create mode 100644 arch/parisc/kernel/firmware.c create mode 100644 arch/parisc/kernel/hardware.c create mode 100644 arch/parisc/kernel/head.S create mode 100644 arch/parisc/kernel/hpmc.S create mode 100644 arch/parisc/kernel/init_task.c create mode 100644 arch/parisc/kernel/inventory.c create mode 100644 arch/parisc/kernel/ioctl32.c create mode 100644 arch/parisc/kernel/irq.c create mode 100644 arch/parisc/kernel/module.c create mode 100644 arch/parisc/kernel/pa7300lc.c create mode 100644 arch/parisc/kernel/pacache.S create mode 100644 arch/parisc/kernel/parisc_ksyms.c create mode 100644 arch/parisc/kernel/pci-dma.c create mode 100644 arch/parisc/kernel/pci.c create mode 100644 arch/parisc/kernel/pdc_chassis.c create mode 100644 arch/parisc/kernel/pdc_cons.c create mode 100644 arch/parisc/kernel/perf.c create mode 100644 arch/parisc/kernel/perf_asm.S create mode 100644 arch/parisc/kernel/perf_images.h create mode 100644 arch/parisc/kernel/process.c create mode 100644 arch/parisc/kernel/processor.c create mode 100644 arch/parisc/kernel/ptrace.c create mode 100644 arch/parisc/kernel/real2.S create mode 100644 arch/parisc/kernel/semaphore.c create mode 100644 arch/parisc/kernel/setup.c create mode 100644 arch/parisc/kernel/signal.c create mode 100644 arch/parisc/kernel/signal32.c create mode 100644 arch/parisc/kernel/signal32.h create mode 100644 arch/parisc/kernel/smp.c create mode 100644 arch/parisc/kernel/sys32.h create mode 100644 arch/parisc/kernel/sys_parisc.c create mode 100644 arch/parisc/kernel/sys_parisc32.c create mode 100644 arch/parisc/kernel/syscall.S create mode 100644 arch/parisc/kernel/syscall_table.S create mode 100644 arch/parisc/kernel/time.c create mode 100644 arch/parisc/kernel/topology.c create mode 100644 arch/parisc/kernel/traps.c create mode 100644 arch/parisc/kernel/unaligned.c create mode 100644 arch/parisc/kernel/unwind.c create mode 100644 arch/parisc/kernel/vmlinux.lds.S create mode 100644 arch/parisc/lib/Makefile create mode 100644 arch/parisc/lib/bitops.c create mode 100644 arch/parisc/lib/checksum.c create mode 100644 arch/parisc/lib/debuglocks.c create mode 100644 arch/parisc/lib/fixup.S create mode 100644 arch/parisc/lib/io.c create mode 100644 arch/parisc/lib/iomap.c create mode 100644 arch/parisc/lib/lusercopy.S create mode 100644 arch/parisc/lib/memcpy.c create mode 100644 arch/parisc/lib/memset.c create mode 100644 arch/parisc/math-emu/Makefile create mode 100644 arch/parisc/math-emu/README create mode 100644 arch/parisc/math-emu/cnv_float.h create mode 100644 arch/parisc/math-emu/dbl_float.h create mode 100644 arch/parisc/math-emu/decode_exc.c create mode 100644 arch/parisc/math-emu/denormal.c create mode 100644 arch/parisc/math-emu/dfadd.c create mode 100644 arch/parisc/math-emu/dfcmp.c create mode 100644 arch/parisc/math-emu/dfdiv.c create mode 100644 arch/parisc/math-emu/dfmpy.c create mode 100644 arch/parisc/math-emu/dfrem.c create mode 100644 arch/parisc/math-emu/dfsqrt.c create mode 100644 arch/parisc/math-emu/dfsub.c create mode 100644 arch/parisc/math-emu/driver.c create mode 100644 arch/parisc/math-emu/fcnvff.c create mode 100644 arch/parisc/math-emu/fcnvfu.c create mode 100644 arch/parisc/math-emu/fcnvfut.c create mode 100644 arch/parisc/math-emu/fcnvfx.c create mode 100644 arch/parisc/math-emu/fcnvfxt.c create mode 100644 arch/parisc/math-emu/fcnvuf.c create mode 100644 arch/parisc/math-emu/fcnvxf.c create mode 100644 arch/parisc/math-emu/float.h create mode 100644 arch/parisc/math-emu/fmpyfadd.c create mode 100644 arch/parisc/math-emu/fpbits.h create mode 100644 arch/parisc/math-emu/fpu.h create mode 100644 arch/parisc/math-emu/fpudispatch.c create mode 100644 arch/parisc/math-emu/frnd.c create mode 100644 arch/parisc/math-emu/hppa.h create mode 100644 arch/parisc/math-emu/math-emu.h create mode 100644 arch/parisc/math-emu/sfadd.c create mode 100644 arch/parisc/math-emu/sfcmp.c create mode 100644 arch/parisc/math-emu/sfdiv.c create mode 100644 arch/parisc/math-emu/sfmpy.c create mode 100644 arch/parisc/math-emu/sfrem.c create mode 100644 arch/parisc/math-emu/sfsqrt.c create mode 100644 arch/parisc/math-emu/sfsub.c create mode 100644 arch/parisc/math-emu/sgl_float.h create mode 100644 arch/parisc/mm/Makefile create mode 100644 arch/parisc/mm/fault.c create mode 100644 arch/parisc/mm/init.c create mode 100644 arch/parisc/mm/ioremap.c create mode 100644 arch/parisc/mm/kmap.c create mode 100644 arch/parisc/nm create mode 100644 arch/parisc/oprofile/Kconfig create mode 100644 arch/parisc/oprofile/Makefile create mode 100644 arch/parisc/oprofile/init.c create mode 100644 arch/ppc/4xx_io/Makefile create mode 100644 arch/ppc/4xx_io/serial_sicc.c create mode 100644 arch/ppc/8260_io/Kconfig create mode 100644 arch/ppc/8260_io/Makefile create mode 100644 arch/ppc/8260_io/enet.c create mode 100644 arch/ppc/8260_io/fcc_enet.c create mode 100644 arch/ppc/8xx_io/Kconfig create mode 100644 arch/ppc/8xx_io/Makefile create mode 100644 arch/ppc/8xx_io/commproc.c create mode 100644 arch/ppc/8xx_io/cs4218.h create mode 100644 arch/ppc/8xx_io/cs4218_tdm.c create mode 100644 arch/ppc/8xx_io/enet.c create mode 100644 arch/ppc/8xx_io/fec.c create mode 100644 arch/ppc/8xx_io/micropatch.c create mode 100644 arch/ppc/Kconfig create mode 100644 arch/ppc/Kconfig.debug create mode 100644 arch/ppc/Makefile create mode 100644 arch/ppc/amiga/Makefile create mode 100644 arch/ppc/amiga/amiga_ksyms.c create mode 100644 arch/ppc/amiga/amiints.c create mode 100644 arch/ppc/amiga/amisound.c create mode 100644 arch/ppc/amiga/bootinfo.c create mode 100644 arch/ppc/amiga/chipram.c create mode 100644 arch/ppc/amiga/cia.c create mode 100644 arch/ppc/amiga/config.c create mode 100644 arch/ppc/amiga/ints.c create mode 100644 arch/ppc/amiga/pcmcia.c create mode 100644 arch/ppc/amiga/time.c create mode 100644 arch/ppc/boot/Makefile create mode 100644 arch/ppc/boot/common/Makefile create mode 100644 arch/ppc/boot/common/bootinfo.c create mode 100644 arch/ppc/boot/common/crt0.S create mode 100644 arch/ppc/boot/common/misc-common.c create mode 100644 arch/ppc/boot/common/ns16550.c create mode 100644 arch/ppc/boot/common/serial_stub.c create mode 100644 arch/ppc/boot/common/string.S create mode 100644 arch/ppc/boot/common/util.S create mode 100644 arch/ppc/boot/images/Makefile create mode 100644 arch/ppc/boot/include/cpc700.h create mode 100644 arch/ppc/boot/include/iso_font.h create mode 100644 arch/ppc/boot/include/mpc10x.h create mode 100644 arch/ppc/boot/include/mpsc_defs.h create mode 100644 arch/ppc/boot/include/nonstdio.h create mode 100644 arch/ppc/boot/include/of1275.h create mode 100644 arch/ppc/boot/include/rs6000.h create mode 100644 arch/ppc/boot/include/serial.h create mode 100644 arch/ppc/boot/ld.script create mode 100644 arch/ppc/boot/lib/Makefile create mode 100644 arch/ppc/boot/lib/div64.S create mode 100644 arch/ppc/boot/lib/kbd.c create mode 100644 arch/ppc/boot/lib/vreset.c create mode 100644 arch/ppc/boot/of1275/Makefile create mode 100644 arch/ppc/boot/of1275/claim.c create mode 100644 arch/ppc/boot/of1275/enter.c create mode 100644 arch/ppc/boot/of1275/exit.c create mode 100644 arch/ppc/boot/of1275/finddevice.c create mode 100644 arch/ppc/boot/of1275/getprop.c create mode 100644 arch/ppc/boot/of1275/map.c create mode 100644 arch/ppc/boot/of1275/ofinit.c create mode 100644 arch/ppc/boot/of1275/ofstdio.c create mode 100644 arch/ppc/boot/of1275/read.c create mode 100644 arch/ppc/boot/of1275/release.c create mode 100644 arch/ppc/boot/of1275/write.c create mode 100644 arch/ppc/boot/openfirmware/Makefile create mode 100644 arch/ppc/boot/openfirmware/chrpmain.c create mode 100644 arch/ppc/boot/openfirmware/coffmain.c create mode 100644 arch/ppc/boot/openfirmware/common.c create mode 100644 arch/ppc/boot/openfirmware/dummy.c create mode 100644 arch/ppc/boot/openfirmware/misc.S create mode 100644 arch/ppc/boot/openfirmware/newworldmain.c create mode 100644 arch/ppc/boot/openfirmware/start.c create mode 100644 arch/ppc/boot/simple/Makefile create mode 100644 arch/ppc/boot/simple/chrpmap.c create mode 100644 arch/ppc/boot/simple/clear.S create mode 100644 arch/ppc/boot/simple/cpc700_memory.c create mode 100644 arch/ppc/boot/simple/dummy.c create mode 100644 arch/ppc/boot/simple/embed_config.c create mode 100644 arch/ppc/boot/simple/head.S create mode 100644 arch/ppc/boot/simple/iic.c create mode 100644 arch/ppc/boot/simple/m8260_tty.c create mode 100644 arch/ppc/boot/simple/m8xx_tty.c create mode 100644 arch/ppc/boot/simple/misc-chestnut.c create mode 100644 arch/ppc/boot/simple/misc-cpci690.c create mode 100644 arch/ppc/boot/simple/misc-embedded.c create mode 100644 arch/ppc/boot/simple/misc-ev64260.c create mode 100644 arch/ppc/boot/simple/misc-katana.c create mode 100644 arch/ppc/boot/simple/misc-mv64x60.c create mode 100644 arch/ppc/boot/simple/misc-prep.c create mode 100644 arch/ppc/boot/simple/misc-radstone_ppc7d.c create mode 100644 arch/ppc/boot/simple/misc-spruce.c create mode 100644 arch/ppc/boot/simple/misc.c create mode 100644 arch/ppc/boot/simple/mpc10x_memory.c create mode 100644 arch/ppc/boot/simple/mpc52xx_tty.c create mode 100644 arch/ppc/boot/simple/mv64x60_tty.c create mode 100644 arch/ppc/boot/simple/openbios.c create mode 100644 arch/ppc/boot/simple/pci.c create mode 100644 arch/ppc/boot/simple/pibs.c create mode 100644 arch/ppc/boot/simple/prepmap.c create mode 100644 arch/ppc/boot/simple/qspan_pci.c create mode 100644 arch/ppc/boot/simple/relocate.S create mode 100644 arch/ppc/boot/simple/rw4/ppc_40x.h create mode 100644 arch/ppc/boot/simple/rw4/rw4_init.S create mode 100644 arch/ppc/boot/simple/rw4/rw4_init_brd.S create mode 100644 arch/ppc/boot/simple/rw4/stb.h create mode 100644 arch/ppc/boot/utils/addRamDisk.c create mode 100644 arch/ppc/boot/utils/addSystemMap.c create mode 100644 arch/ppc/boot/utils/addnote.c create mode 100644 arch/ppc/boot/utils/elf.pl create mode 100644 arch/ppc/boot/utils/hack-coff.c create mode 100644 arch/ppc/boot/utils/mkbugboot.c create mode 100644 arch/ppc/boot/utils/mknote.c create mode 100644 arch/ppc/boot/utils/mkprep.c create mode 100644 arch/ppc/boot/utils/mktree.c create mode 100644 arch/ppc/configs/FADS_defconfig create mode 100644 arch/ppc/configs/IVMS8_defconfig create mode 100644 arch/ppc/configs/SM850_defconfig create mode 100644 arch/ppc/configs/SPD823TS_defconfig create mode 100644 arch/ppc/configs/TQM823L_defconfig create mode 100644 arch/ppc/configs/TQM8260_defconfig create mode 100644 arch/ppc/configs/TQM850L_defconfig create mode 100644 arch/ppc/configs/TQM860L_defconfig create mode 100644 arch/ppc/configs/adir_defconfig create mode 100644 arch/ppc/configs/ads8272_defconfig create mode 100644 arch/ppc/configs/apus_defconfig create mode 100644 arch/ppc/configs/ash_defconfig create mode 100644 arch/ppc/configs/beech_defconfig create mode 100644 arch/ppc/configs/bseip_defconfig create mode 100644 arch/ppc/configs/bubinga_defconfig create mode 100644 arch/ppc/configs/cedar_defconfig create mode 100644 arch/ppc/configs/chestnut_defconfig create mode 100644 arch/ppc/configs/common_defconfig create mode 100644 arch/ppc/configs/cpci405_defconfig create mode 100644 arch/ppc/configs/cpci690_defconfig create mode 100644 arch/ppc/configs/ebony_defconfig create mode 100644 arch/ppc/configs/ep405_defconfig create mode 100644 arch/ppc/configs/est8260_defconfig create mode 100644 arch/ppc/configs/ev64260_defconfig create mode 100644 arch/ppc/configs/gemini_defconfig create mode 100644 arch/ppc/configs/hdpu_defconfig create mode 100644 arch/ppc/configs/ibmchrp_defconfig create mode 100644 arch/ppc/configs/k2_defconfig create mode 100644 arch/ppc/configs/katana_defconfig create mode 100644 arch/ppc/configs/lite5200_defconfig create mode 100644 arch/ppc/configs/lopec_defconfig create mode 100644 arch/ppc/configs/luan_defconfig create mode 100644 arch/ppc/configs/mbx_defconfig create mode 100644 arch/ppc/configs/mcpn765_defconfig create mode 100644 arch/ppc/configs/menf1_defconfig create mode 100644 arch/ppc/configs/mpc834x_sys_defconfig create mode 100644 arch/ppc/configs/mpc8540_ads_defconfig create mode 100644 arch/ppc/configs/mpc8555_cds_defconfig create mode 100644 arch/ppc/configs/mpc8560_ads_defconfig create mode 100644 arch/ppc/configs/mvme5100_defconfig create mode 100644 arch/ppc/configs/oak_defconfig create mode 100644 arch/ppc/configs/ocotea_defconfig create mode 100644 arch/ppc/configs/pcore_defconfig create mode 100644 arch/ppc/configs/pmac_defconfig create mode 100644 arch/ppc/configs/power3_defconfig create mode 100644 arch/ppc/configs/pplus_defconfig create mode 100644 arch/ppc/configs/prpmc750_defconfig create mode 100644 arch/ppc/configs/prpmc800_defconfig create mode 100644 arch/ppc/configs/radstone_ppc7d_defconfig create mode 100644 arch/ppc/configs/rainier_defconfig create mode 100644 arch/ppc/configs/redwood5_defconfig create mode 100644 arch/ppc/configs/redwood6_defconfig create mode 100644 arch/ppc/configs/redwood_defconfig create mode 100644 arch/ppc/configs/rpx8260_defconfig create mode 100644 arch/ppc/configs/rpxcllf_defconfig create mode 100644 arch/ppc/configs/rpxlite_defconfig create mode 100644 arch/ppc/configs/sandpoint_defconfig create mode 100644 arch/ppc/configs/spruce_defconfig create mode 100644 arch/ppc/configs/stx_gp3_defconfig create mode 100644 arch/ppc/configs/sycamore_defconfig create mode 100644 arch/ppc/configs/walnut_defconfig create mode 100644 arch/ppc/kernel/Makefile create mode 100644 arch/ppc/kernel/align.c create mode 100644 arch/ppc/kernel/asm-offsets.c create mode 100644 arch/ppc/kernel/bitops.c create mode 100644 arch/ppc/kernel/cpu_setup_6xx.S create mode 100644 arch/ppc/kernel/cpu_setup_power4.S create mode 100644 arch/ppc/kernel/cputable.c create mode 100644 arch/ppc/kernel/dma-mapping.c create mode 100644 arch/ppc/kernel/entry.S create mode 100644 arch/ppc/kernel/find_name.c create mode 100644 arch/ppc/kernel/head.S create mode 100644 arch/ppc/kernel/head_44x.S create mode 100644 arch/ppc/kernel/head_4xx.S create mode 100644 arch/ppc/kernel/head_8xx.S create mode 100644 arch/ppc/kernel/head_booke.h create mode 100644 arch/ppc/kernel/head_fsl_booke.S create mode 100644 arch/ppc/kernel/idle.c create mode 100644 arch/ppc/kernel/idle_6xx.S create mode 100644 arch/ppc/kernel/idle_power4.S create mode 100644 arch/ppc/kernel/irq.c create mode 100644 arch/ppc/kernel/l2cr.S create mode 100644 arch/ppc/kernel/misc.S create mode 100644 arch/ppc/kernel/module.c create mode 100644 arch/ppc/kernel/pci.c create mode 100644 arch/ppc/kernel/perfmon.c create mode 100644 arch/ppc/kernel/perfmon_fsl_booke.c create mode 100644 arch/ppc/kernel/ppc-stub.c create mode 100644 arch/ppc/kernel/ppc_htab.c create mode 100644 arch/ppc/kernel/ppc_ksyms.c create mode 100644 arch/ppc/kernel/process.c create mode 100644 arch/ppc/kernel/ptrace.c create mode 100644 arch/ppc/kernel/semaphore.c create mode 100644 arch/ppc/kernel/setup.c create mode 100644 arch/ppc/kernel/signal.c create mode 100644 arch/ppc/kernel/smp-tbsync.c create mode 100644 arch/ppc/kernel/smp.c create mode 100644 arch/ppc/kernel/softemu8xx.c create mode 100644 arch/ppc/kernel/swsusp.S create mode 100644 arch/ppc/kernel/syscalls.c create mode 100644 arch/ppc/kernel/temp.c create mode 100644 arch/ppc/kernel/time.c create mode 100644 arch/ppc/kernel/traps.c create mode 100644 arch/ppc/kernel/vecemu.c create mode 100644 arch/ppc/kernel/vector.S create mode 100644 arch/ppc/kernel/vmlinux.lds.S create mode 100644 arch/ppc/lib/Makefile create mode 100644 arch/ppc/lib/checksum.S create mode 100644 arch/ppc/lib/dec_and_lock.c create mode 100644 arch/ppc/lib/div64.S create mode 100644 arch/ppc/lib/locks.c create mode 100644 arch/ppc/lib/rheap.c create mode 100644 arch/ppc/lib/strcase.c create mode 100644 arch/ppc/lib/string.S create mode 100644 arch/ppc/math-emu/Makefile create mode 100644 arch/ppc/math-emu/double.h create mode 100644 arch/ppc/math-emu/fabs.c create mode 100644 arch/ppc/math-emu/fadd.c create mode 100644 arch/ppc/math-emu/fadds.c create mode 100644 arch/ppc/math-emu/fcmpo.c create mode 100644 arch/ppc/math-emu/fcmpu.c create mode 100644 arch/ppc/math-emu/fctiw.c create mode 100644 arch/ppc/math-emu/fctiwz.c create mode 100644 arch/ppc/math-emu/fdiv.c create mode 100644 arch/ppc/math-emu/fdivs.c create mode 100644 arch/ppc/math-emu/fmadd.c create mode 100644 arch/ppc/math-emu/fmadds.c create mode 100644 arch/ppc/math-emu/fmr.c create mode 100644 arch/ppc/math-emu/fmsub.c create mode 100644 arch/ppc/math-emu/fmsubs.c create mode 100644 arch/ppc/math-emu/fmul.c create mode 100644 arch/ppc/math-emu/fmuls.c create mode 100644 arch/ppc/math-emu/fnabs.c create mode 100644 arch/ppc/math-emu/fneg.c create mode 100644 arch/ppc/math-emu/fnmadd.c create mode 100644 arch/ppc/math-emu/fnmadds.c create mode 100644 arch/ppc/math-emu/fnmsub.c create mode 100644 arch/ppc/math-emu/fnmsubs.c create mode 100644 arch/ppc/math-emu/fres.c create mode 100644 arch/ppc/math-emu/frsp.c create mode 100644 arch/ppc/math-emu/frsqrte.c create mode 100644 arch/ppc/math-emu/fsel.c create mode 100644 arch/ppc/math-emu/fsqrt.c create mode 100644 arch/ppc/math-emu/fsqrts.c create mode 100644 arch/ppc/math-emu/fsub.c create mode 100644 arch/ppc/math-emu/fsubs.c create mode 100644 arch/ppc/math-emu/lfd.c create mode 100644 arch/ppc/math-emu/lfs.c create mode 100644 arch/ppc/math-emu/math.c create mode 100644 arch/ppc/math-emu/mcrfs.c create mode 100644 arch/ppc/math-emu/mffs.c create mode 100644 arch/ppc/math-emu/mtfsb0.c create mode 100644 arch/ppc/math-emu/mtfsb1.c create mode 100644 arch/ppc/math-emu/mtfsf.c create mode 100644 arch/ppc/math-emu/mtfsfi.c create mode 100644 arch/ppc/math-emu/op-1.h create mode 100644 arch/ppc/math-emu/op-2.h create mode 100644 arch/ppc/math-emu/op-4.h create mode 100644 arch/ppc/math-emu/op-common.h create mode 100644 arch/ppc/math-emu/sfp-machine.h create mode 100644 arch/ppc/math-emu/single.h create mode 100644 arch/ppc/math-emu/soft-fp.h create mode 100644 arch/ppc/math-emu/stfd.c create mode 100644 arch/ppc/math-emu/stfiwx.c create mode 100644 arch/ppc/math-emu/stfs.c create mode 100644 arch/ppc/math-emu/types.c create mode 100644 arch/ppc/math-emu/udivmodti4.c create mode 100644 arch/ppc/mm/44x_mmu.c create mode 100644 arch/ppc/mm/4xx_mmu.c create mode 100644 arch/ppc/mm/Makefile create mode 100644 arch/ppc/mm/fault.c create mode 100644 arch/ppc/mm/fsl_booke_mmu.c create mode 100644 arch/ppc/mm/hashtable.S create mode 100644 arch/ppc/mm/init.c create mode 100644 arch/ppc/mm/mem_pieces.c create mode 100644 arch/ppc/mm/mem_pieces.h create mode 100644 arch/ppc/mm/mmu_context.c create mode 100644 arch/ppc/mm/mmu_decl.h create mode 100644 arch/ppc/mm/pgtable.c create mode 100644 arch/ppc/mm/ppc_mmu.c create mode 100644 arch/ppc/mm/tlb.c create mode 100644 arch/ppc/oprofile/Kconfig create mode 100644 arch/ppc/oprofile/Makefile create mode 100644 arch/ppc/oprofile/common.c create mode 100644 arch/ppc/oprofile/op_impl.h create mode 100644 arch/ppc/oprofile/op_model_fsl_booke.c create mode 100644 arch/ppc/platforms/4xx/Kconfig create mode 100644 arch/ppc/platforms/4xx/Makefile create mode 100644 arch/ppc/platforms/4xx/ash.c create mode 100644 arch/ppc/platforms/4xx/ash.h create mode 100644 arch/ppc/platforms/4xx/bubinga.c create mode 100644 arch/ppc/platforms/4xx/bubinga.h create mode 100644 arch/ppc/platforms/4xx/cpci405.c create mode 100644 arch/ppc/platforms/4xx/cpci405.h create mode 100644 arch/ppc/platforms/4xx/ebony.c create mode 100644 arch/ppc/platforms/4xx/ebony.h create mode 100644 arch/ppc/platforms/4xx/ep405.c create mode 100644 arch/ppc/platforms/4xx/ep405.h create mode 100644 arch/ppc/platforms/4xx/ibm405ep.c create mode 100644 arch/ppc/platforms/4xx/ibm405ep.h create mode 100644 arch/ppc/platforms/4xx/ibm405gp.c create mode 100644 arch/ppc/platforms/4xx/ibm405gp.h create mode 100644 arch/ppc/platforms/4xx/ibm405gpr.c create mode 100644 arch/ppc/platforms/4xx/ibm405gpr.h create mode 100644 arch/ppc/platforms/4xx/ibm440gp.c create mode 100644 arch/ppc/platforms/4xx/ibm440gp.h create mode 100644 arch/ppc/platforms/4xx/ibm440gx.c create mode 100644 arch/ppc/platforms/4xx/ibm440gx.h create mode 100644 arch/ppc/platforms/4xx/ibm440sp.c create mode 100644 arch/ppc/platforms/4xx/ibm440sp.h create mode 100644 arch/ppc/platforms/4xx/ibmnp405h.c create mode 100644 arch/ppc/platforms/4xx/ibmnp405h.h create mode 100644 arch/ppc/platforms/4xx/ibmstb4.c create mode 100644 arch/ppc/platforms/4xx/ibmstb4.h create mode 100644 arch/ppc/platforms/4xx/ibmstbx25.c create mode 100644 arch/ppc/platforms/4xx/ibmstbx25.h create mode 100644 arch/ppc/platforms/4xx/luan.c create mode 100644 arch/ppc/platforms/4xx/luan.h create mode 100644 arch/ppc/platforms/4xx/oak.c create mode 100644 arch/ppc/platforms/4xx/oak.h create mode 100644 arch/ppc/platforms/4xx/oak_setup.h create mode 100644 arch/ppc/platforms/4xx/ocotea.c create mode 100644 arch/ppc/platforms/4xx/ocotea.h create mode 100644 arch/ppc/platforms/4xx/redwood5.c create mode 100644 arch/ppc/platforms/4xx/redwood5.h create mode 100644 arch/ppc/platforms/4xx/redwood6.c create mode 100644 arch/ppc/platforms/4xx/redwood6.h create mode 100644 arch/ppc/platforms/4xx/sycamore.c create mode 100644 arch/ppc/platforms/4xx/sycamore.h create mode 100644 arch/ppc/platforms/4xx/virtex-ii_pro.c create mode 100644 arch/ppc/platforms/4xx/virtex-ii_pro.h create mode 100644 arch/ppc/platforms/4xx/walnut.c create mode 100644 arch/ppc/platforms/4xx/walnut.h create mode 100644 arch/ppc/platforms/4xx/xilinx_ml300.c create mode 100644 arch/ppc/platforms/4xx/xilinx_ml300.h create mode 100644 arch/ppc/platforms/4xx/xparameters/xparameters_ml300.h create mode 100644 arch/ppc/platforms/83xx/Makefile create mode 100644 arch/ppc/platforms/83xx/mpc834x_sys.c create mode 100644 arch/ppc/platforms/83xx/mpc834x_sys.h create mode 100644 arch/ppc/platforms/85xx/Kconfig create mode 100644 arch/ppc/platforms/85xx/Makefile create mode 100644 arch/ppc/platforms/85xx/mpc8540_ads.c create mode 100644 arch/ppc/platforms/85xx/mpc8540_ads.h create mode 100644 arch/ppc/platforms/85xx/mpc8555_cds.h create mode 100644 arch/ppc/platforms/85xx/mpc8560_ads.c create mode 100644 arch/ppc/platforms/85xx/mpc8560_ads.h create mode 100644 arch/ppc/platforms/85xx/mpc85xx_ads_common.c create mode 100644 arch/ppc/platforms/85xx/mpc85xx_ads_common.h create mode 100644 arch/ppc/platforms/85xx/mpc85xx_cds_common.c create mode 100644 arch/ppc/platforms/85xx/mpc85xx_cds_common.h create mode 100644 arch/ppc/platforms/85xx/sbc8560.c create mode 100644 arch/ppc/platforms/85xx/sbc8560.h create mode 100644 arch/ppc/platforms/85xx/sbc85xx.c create mode 100644 arch/ppc/platforms/85xx/sbc85xx.h create mode 100644 arch/ppc/platforms/85xx/stx_gp3.c create mode 100644 arch/ppc/platforms/85xx/stx_gp3.h create mode 100644 arch/ppc/platforms/Makefile create mode 100644 arch/ppc/platforms/adir.h create mode 100644 arch/ppc/platforms/adir_pci.c create mode 100644 arch/ppc/platforms/adir_pic.c create mode 100644 arch/ppc/platforms/adir_setup.c create mode 100644 arch/ppc/platforms/apus_pci.c create mode 100644 arch/ppc/platforms/apus_pci.h create mode 100644 arch/ppc/platforms/apus_setup.c create mode 100644 arch/ppc/platforms/bseip.h create mode 100644 arch/ppc/platforms/ccm.h create mode 100644 arch/ppc/platforms/chestnut.c create mode 100644 arch/ppc/platforms/chestnut.h create mode 100644 arch/ppc/platforms/chrp_pci.c create mode 100644 arch/ppc/platforms/chrp_pegasos_eth.c create mode 100644 arch/ppc/platforms/chrp_setup.c create mode 100644 arch/ppc/platforms/chrp_smp.c create mode 100644 arch/ppc/platforms/chrp_time.c create mode 100644 arch/ppc/platforms/cpci690.c create mode 100644 arch/ppc/platforms/cpci690.h create mode 100644 arch/ppc/platforms/est8260.h create mode 100644 arch/ppc/platforms/ev64260.c create mode 100644 arch/ppc/platforms/ev64260.h create mode 100644 arch/ppc/platforms/fads.h create mode 100644 arch/ppc/platforms/gemini.h create mode 100644 arch/ppc/platforms/gemini_pci.c create mode 100644 arch/ppc/platforms/gemini_prom.S create mode 100644 arch/ppc/platforms/gemini_serial.h create mode 100644 arch/ppc/platforms/gemini_setup.c create mode 100644 arch/ppc/platforms/hdpu.c create mode 100644 arch/ppc/platforms/hdpu.h create mode 100644 arch/ppc/platforms/hermes.h create mode 100644 arch/ppc/platforms/ip860.h create mode 100644 arch/ppc/platforms/ivms8.h create mode 100644 arch/ppc/platforms/k2.c create mode 100644 arch/ppc/platforms/k2.h create mode 100644 arch/ppc/platforms/katana.c create mode 100644 arch/ppc/platforms/katana.h create mode 100644 arch/ppc/platforms/lantec.h create mode 100644 arch/ppc/platforms/lite5200.c create mode 100644 arch/ppc/platforms/lite5200.h create mode 100644 arch/ppc/platforms/lopec.c create mode 100644 arch/ppc/platforms/lopec.h create mode 100644 arch/ppc/platforms/lwmon.h create mode 100644 arch/ppc/platforms/mbx.h create mode 100644 arch/ppc/platforms/mcpn765.c create mode 100644 arch/ppc/platforms/mcpn765.h create mode 100644 arch/ppc/platforms/mpc5200.c create mode 100644 arch/ppc/platforms/mvme5100.c create mode 100644 arch/ppc/platforms/mvme5100.h create mode 100644 arch/ppc/platforms/pal4.h create mode 100644 arch/ppc/platforms/pal4_pci.c create mode 100644 arch/ppc/platforms/pal4_serial.h create mode 100644 arch/ppc/platforms/pal4_setup.c create mode 100644 arch/ppc/platforms/pcore.c create mode 100644 arch/ppc/platforms/pcore.h create mode 100644 arch/ppc/platforms/pcu_e.h create mode 100644 arch/ppc/platforms/pmac_backlight.c create mode 100644 arch/ppc/platforms/pmac_cache.S create mode 100644 arch/ppc/platforms/pmac_cpufreq.c create mode 100644 arch/ppc/platforms/pmac_feature.c create mode 100644 arch/ppc/platforms/pmac_low_i2c.c create mode 100644 arch/ppc/platforms/pmac_nvram.c create mode 100644 arch/ppc/platforms/pmac_pci.c create mode 100644 arch/ppc/platforms/pmac_pic.c create mode 100644 arch/ppc/platforms/pmac_pic.h create mode 100644 arch/ppc/platforms/pmac_setup.c create mode 100644 arch/ppc/platforms/pmac_sleep.S create mode 100644 arch/ppc/platforms/pmac_smp.c create mode 100644 arch/ppc/platforms/pmac_time.c create mode 100644 arch/ppc/platforms/powerpmc250.c create mode 100644 arch/ppc/platforms/powerpmc250.h create mode 100644 arch/ppc/platforms/pplus.c create mode 100644 arch/ppc/platforms/pplus.h create mode 100644 arch/ppc/platforms/pq2ads.c create mode 100644 arch/ppc/platforms/pq2ads.h create mode 100644 arch/ppc/platforms/prep_pci.c create mode 100644 arch/ppc/platforms/prep_setup.c create mode 100644 arch/ppc/platforms/prpmc750.c create mode 100644 arch/ppc/platforms/prpmc750.h create mode 100644 arch/ppc/platforms/prpmc800.c create mode 100644 arch/ppc/platforms/prpmc800.h create mode 100644 arch/ppc/platforms/radstone_ppc7d.c create mode 100644 arch/ppc/platforms/radstone_ppc7d.h create mode 100644 arch/ppc/platforms/residual.c create mode 100644 arch/ppc/platforms/rpx8260.h create mode 100644 arch/ppc/platforms/rpxclassic.h create mode 100644 arch/ppc/platforms/rpxhiox.h create mode 100644 arch/ppc/platforms/rpxlite.h create mode 100644 arch/ppc/platforms/sandpoint.c create mode 100644 arch/ppc/platforms/sandpoint.h create mode 100644 arch/ppc/platforms/sbc82xx.c create mode 100644 arch/ppc/platforms/sbc82xx.h create mode 100644 arch/ppc/platforms/sbs8260.h create mode 100644 arch/ppc/platforms/spd8xx.h create mode 100644 arch/ppc/platforms/spruce.c create mode 100644 arch/ppc/platforms/spruce.h create mode 100644 arch/ppc/platforms/tqm8260.h create mode 100644 arch/ppc/platforms/tqm8260_setup.c create mode 100644 arch/ppc/platforms/tqm8xx.h create mode 100644 arch/ppc/syslib/Makefile create mode 100644 arch/ppc/syslib/btext.c create mode 100644 arch/ppc/syslib/cpc700.h create mode 100644 arch/ppc/syslib/cpc700_pic.c create mode 100644 arch/ppc/syslib/cpc710.h create mode 100644 arch/ppc/syslib/cpm2_common.c create mode 100644 arch/ppc/syslib/cpm2_pic.c create mode 100644 arch/ppc/syslib/cpm2_pic.h create mode 100644 arch/ppc/syslib/dcr.S create mode 100644 arch/ppc/syslib/gen550.h create mode 100644 arch/ppc/syslib/gen550_dbg.c create mode 100644 arch/ppc/syslib/gen550_kgdb.c create mode 100644 arch/ppc/syslib/gt64260_pic.c create mode 100644 arch/ppc/syslib/harrier.c create mode 100644 arch/ppc/syslib/hawk_common.c create mode 100644 arch/ppc/syslib/i8259.c create mode 100644 arch/ppc/syslib/ibm440gp_common.c create mode 100644 arch/ppc/syslib/ibm440gp_common.h create mode 100644 arch/ppc/syslib/ibm440gx_common.c create mode 100644 arch/ppc/syslib/ibm440gx_common.h create mode 100644 arch/ppc/syslib/ibm440sp_common.c create mode 100644 arch/ppc/syslib/ibm440sp_common.h create mode 100644 arch/ppc/syslib/ibm44x_common.c create mode 100644 arch/ppc/syslib/ibm44x_common.h create mode 100644 arch/ppc/syslib/ibm_ocp.c create mode 100644 arch/ppc/syslib/indirect_pci.c create mode 100644 arch/ppc/syslib/ipic.c create mode 100644 arch/ppc/syslib/ipic.h create mode 100644 arch/ppc/syslib/m8260_pci.c create mode 100644 arch/ppc/syslib/m8260_pci.h create mode 100644 arch/ppc/syslib/m8260_pci_erratum9.c create mode 100644 arch/ppc/syslib/m8260_setup.c create mode 100644 arch/ppc/syslib/m8xx_setup.c create mode 100644 arch/ppc/syslib/m8xx_wdt.c create mode 100644 arch/ppc/syslib/m8xx_wdt.h create mode 100644 arch/ppc/syslib/mpc10x_common.c create mode 100644 arch/ppc/syslib/mpc52xx_devices.c create mode 100644 arch/ppc/syslib/mpc52xx_pci.c create mode 100644 arch/ppc/syslib/mpc52xx_pci.h create mode 100644 arch/ppc/syslib/mpc52xx_pic.c create mode 100644 arch/ppc/syslib/mpc52xx_setup.c create mode 100644 arch/ppc/syslib/mpc52xx_sys.c create mode 100644 arch/ppc/syslib/mpc83xx_devices.c create mode 100644 arch/ppc/syslib/mpc83xx_sys.c create mode 100644 arch/ppc/syslib/mpc85xx_devices.c create mode 100644 arch/ppc/syslib/mpc85xx_sys.c create mode 100644 arch/ppc/syslib/mv64360_pic.c create mode 100644 arch/ppc/syslib/mv64x60.c create mode 100644 arch/ppc/syslib/mv64x60_dbg.c create mode 100644 arch/ppc/syslib/mv64x60_win.c create mode 100644 arch/ppc/syslib/ocp.c create mode 100644 arch/ppc/syslib/of_device.c create mode 100644 arch/ppc/syslib/open_pic.c create mode 100644 arch/ppc/syslib/open_pic2.c create mode 100644 arch/ppc/syslib/open_pic_defs.h create mode 100644 arch/ppc/syslib/pci_auto.c create mode 100644 arch/ppc/syslib/ppc403_pic.c create mode 100644 arch/ppc/syslib/ppc405_pci.c create mode 100644 arch/ppc/syslib/ppc4xx_dma.c create mode 100644 arch/ppc/syslib/ppc4xx_kgdb.c create mode 100644 arch/ppc/syslib/ppc4xx_pic.c create mode 100644 arch/ppc/syslib/ppc4xx_pm.c create mode 100644 arch/ppc/syslib/ppc4xx_setup.c create mode 100644 arch/ppc/syslib/ppc4xx_sgdma.c create mode 100644 arch/ppc/syslib/ppc83xx_setup.c create mode 100644 arch/ppc/syslib/ppc83xx_setup.h create mode 100644 arch/ppc/syslib/ppc85xx_common.c create mode 100644 arch/ppc/syslib/ppc85xx_common.h create mode 100644 arch/ppc/syslib/ppc85xx_setup.c create mode 100644 arch/ppc/syslib/ppc85xx_setup.h create mode 100644 arch/ppc/syslib/ppc8xx_pic.c create mode 100644 arch/ppc/syslib/ppc8xx_pic.h create mode 100644 arch/ppc/syslib/ppc_sys.c create mode 100644 arch/ppc/syslib/prep_nvram.c create mode 100644 arch/ppc/syslib/prom.c create mode 100644 arch/ppc/syslib/prom_init.c create mode 100644 arch/ppc/syslib/qspan_pci.c create mode 100644 arch/ppc/syslib/todc_time.c create mode 100644 arch/ppc/syslib/xilinx_pic.c create mode 100644 arch/ppc/xmon/Makefile create mode 100644 arch/ppc/xmon/adb.c create mode 100644 arch/ppc/xmon/ansidecl.h create mode 100644 arch/ppc/xmon/nonstdio.h create mode 100644 arch/ppc/xmon/ppc-dis.c create mode 100644 arch/ppc/xmon/ppc-opc.c create mode 100644 arch/ppc/xmon/ppc.h create mode 100644 arch/ppc/xmon/privinst.h create mode 100644 arch/ppc/xmon/setjmp.c create mode 100644 arch/ppc/xmon/start.c create mode 100644 arch/ppc/xmon/start_8xx.c create mode 100644 arch/ppc/xmon/subr_prf.c create mode 100644 arch/ppc/xmon/xmon.c create mode 100644 arch/ppc64/Kconfig create mode 100644 arch/ppc64/Kconfig.debug create mode 100644 arch/ppc64/Makefile create mode 100644 arch/ppc64/boot/Makefile create mode 100644 arch/ppc64/boot/README create mode 100644 arch/ppc64/boot/addRamDisk.c create mode 100644 arch/ppc64/boot/addnote.c create mode 100644 arch/ppc64/boot/crt0.S create mode 100644 arch/ppc64/boot/div64.S create mode 100644 arch/ppc64/boot/install.sh create mode 100644 arch/ppc64/boot/main.c create mode 100644 arch/ppc64/boot/mknote.c create mode 100644 arch/ppc64/boot/piggyback.c create mode 100644 arch/ppc64/boot/ppc32-types.h create mode 100644 arch/ppc64/boot/prom.c create mode 100644 arch/ppc64/boot/start.c create mode 100644 arch/ppc64/boot/string.S create mode 100644 arch/ppc64/boot/zImage.lds create mode 100644 arch/ppc64/boot/zlib.c create mode 100644 arch/ppc64/boot/zlib.h create mode 100644 arch/ppc64/configs/g5_defconfig create mode 100644 arch/ppc64/configs/iSeries_defconfig create mode 100644 arch/ppc64/configs/maple_defconfig create mode 100644 arch/ppc64/configs/pSeries_defconfig create mode 100644 arch/ppc64/defconfig create mode 100644 arch/ppc64/kernel/HvCall.c create mode 100644 arch/ppc64/kernel/HvLpConfig.c create mode 100644 arch/ppc64/kernel/HvLpEvent.c create mode 100644 arch/ppc64/kernel/ItLpQueue.c create mode 100644 arch/ppc64/kernel/LparData.c create mode 100644 arch/ppc64/kernel/Makefile create mode 100644 arch/ppc64/kernel/XmPciLpEvent.c create mode 100644 arch/ppc64/kernel/align.c create mode 100644 arch/ppc64/kernel/asm-offsets.c create mode 100644 arch/ppc64/kernel/binfmt_elf32.c create mode 100644 arch/ppc64/kernel/bitops.c create mode 100644 arch/ppc64/kernel/btext.c create mode 100644 arch/ppc64/kernel/cpu_setup_power4.S create mode 100644 arch/ppc64/kernel/cputable.c create mode 100644 arch/ppc64/kernel/dma.c create mode 100644 arch/ppc64/kernel/eeh.c create mode 100644 arch/ppc64/kernel/entry.S create mode 100644 arch/ppc64/kernel/head.S create mode 100644 arch/ppc64/kernel/hvCall.S create mode 100644 arch/ppc64/kernel/hvconsole.c create mode 100644 arch/ppc64/kernel/hvcserver.c create mode 100644 arch/ppc64/kernel/i8259.c create mode 100644 arch/ppc64/kernel/i8259.h create mode 100644 arch/ppc64/kernel/iSeries_VpdInfo.c create mode 100644 arch/ppc64/kernel/iSeries_htab.c create mode 100644 arch/ppc64/kernel/iSeries_iommu.c create mode 100644 arch/ppc64/kernel/iSeries_irq.c create mode 100644 arch/ppc64/kernel/iSeries_pci.c create mode 100644 arch/ppc64/kernel/iSeries_pci_reset.c create mode 100644 arch/ppc64/kernel/iSeries_proc.c create mode 100644 arch/ppc64/kernel/iSeries_setup.c create mode 100644 arch/ppc64/kernel/iSeries_setup.h create mode 100644 arch/ppc64/kernel/iSeries_smp.c create mode 100644 arch/ppc64/kernel/idle.c create mode 100644 arch/ppc64/kernel/idle_power4.S create mode 100644 arch/ppc64/kernel/init_task.c create mode 100644 arch/ppc64/kernel/ioctl32.c create mode 100644 arch/ppc64/kernel/iomap.c create mode 100644 arch/ppc64/kernel/iommu.c create mode 100644 arch/ppc64/kernel/irq.c create mode 100644 arch/ppc64/kernel/kprobes.c create mode 100644 arch/ppc64/kernel/lmb.c create mode 100644 arch/ppc64/kernel/lparcfg.c create mode 100644 arch/ppc64/kernel/maple_pci.c create mode 100644 arch/ppc64/kernel/maple_setup.c create mode 100644 arch/ppc64/kernel/maple_time.c create mode 100644 arch/ppc64/kernel/mf.c create mode 100644 arch/ppc64/kernel/misc.S create mode 100644 arch/ppc64/kernel/module.c create mode 100644 arch/ppc64/kernel/mpic.c create mode 100644 arch/ppc64/kernel/mpic.h create mode 100644 arch/ppc64/kernel/nvram.c create mode 100644 arch/ppc64/kernel/of_device.c create mode 100644 arch/ppc64/kernel/pSeries_hvCall.S create mode 100644 arch/ppc64/kernel/pSeries_iommu.c create mode 100644 arch/ppc64/kernel/pSeries_lpar.c create mode 100644 arch/ppc64/kernel/pSeries_nvram.c create mode 100644 arch/ppc64/kernel/pSeries_pci.c create mode 100644 arch/ppc64/kernel/pSeries_reconfig.c create mode 100644 arch/ppc64/kernel/pSeries_setup.c create mode 100644 arch/ppc64/kernel/pSeries_smp.c create mode 100644 arch/ppc64/kernel/pacaData.c create mode 100644 arch/ppc64/kernel/pci.c create mode 100644 arch/ppc64/kernel/pci.h create mode 100644 arch/ppc64/kernel/pci_direct_iommu.c create mode 100644 arch/ppc64/kernel/pci_dn.c create mode 100644 arch/ppc64/kernel/pci_iommu.c create mode 100644 arch/ppc64/kernel/pmac.h create mode 100644 arch/ppc64/kernel/pmac_feature.c create mode 100644 arch/ppc64/kernel/pmac_low_i2c.c create mode 100644 arch/ppc64/kernel/pmac_nvram.c create mode 100644 arch/ppc64/kernel/pmac_pci.c create mode 100644 arch/ppc64/kernel/pmac_setup.c create mode 100644 arch/ppc64/kernel/pmac_smp.c create mode 100644 arch/ppc64/kernel/pmac_time.c create mode 100644 arch/ppc64/kernel/pmc.c create mode 100644 arch/ppc64/kernel/ppc_ksyms.c create mode 100644 arch/ppc64/kernel/proc_ppc64.c create mode 100644 arch/ppc64/kernel/process.c create mode 100644 arch/ppc64/kernel/prom.c create mode 100644 arch/ppc64/kernel/prom_init.c create mode 100644 arch/ppc64/kernel/ptrace.c create mode 100644 arch/ppc64/kernel/ptrace32.c create mode 100644 arch/ppc64/kernel/ras.c create mode 100644 arch/ppc64/kernel/rtas-proc.c create mode 100644 arch/ppc64/kernel/rtas.c create mode 100644 arch/ppc64/kernel/rtas_flash.c create mode 100644 arch/ppc64/kernel/rtasd.c create mode 100644 arch/ppc64/kernel/rtc.c create mode 100644 arch/ppc64/kernel/scanlog.c create mode 100644 arch/ppc64/kernel/semaphore.c create mode 100644 arch/ppc64/kernel/setup.c create mode 100644 arch/ppc64/kernel/signal.c create mode 100644 arch/ppc64/kernel/signal32.c create mode 100644 arch/ppc64/kernel/smp-tbsync.c create mode 100644 arch/ppc64/kernel/smp.c create mode 100644 arch/ppc64/kernel/sys_ppc32.c create mode 100644 arch/ppc64/kernel/syscalls.c create mode 100644 arch/ppc64/kernel/sysfs.c create mode 100644 arch/ppc64/kernel/time.c create mode 100644 arch/ppc64/kernel/traps.c create mode 100644 arch/ppc64/kernel/u3_iommu.c create mode 100644 arch/ppc64/kernel/udbg.c create mode 100644 arch/ppc64/kernel/vdso.c create mode 100644 arch/ppc64/kernel/vdso32/Makefile create mode 100644 arch/ppc64/kernel/vdso32/cacheflush.S create mode 100644 arch/ppc64/kernel/vdso32/datapage.S create mode 100644 arch/ppc64/kernel/vdso32/gettimeofday.S create mode 100644 arch/ppc64/kernel/vdso32/sigtramp.S create mode 100644 arch/ppc64/kernel/vdso32/vdso32.lds.S create mode 100644 arch/ppc64/kernel/vdso32/vdso32_wrapper.S create mode 100644 arch/ppc64/kernel/vdso64/Makefile create mode 100644 arch/ppc64/kernel/vdso64/cacheflush.S create mode 100644 arch/ppc64/kernel/vdso64/datapage.S create mode 100644 arch/ppc64/kernel/vdso64/gettimeofday.S create mode 100644 arch/ppc64/kernel/vdso64/sigtramp.S create mode 100644 arch/ppc64/kernel/vdso64/vdso64.lds.S create mode 100644 arch/ppc64/kernel/vdso64/vdso64_wrapper.S create mode 100644 arch/ppc64/kernel/vecemu.c create mode 100644 arch/ppc64/kernel/vector.S create mode 100644 arch/ppc64/kernel/vio.c create mode 100644 arch/ppc64/kernel/viopath.c create mode 100644 arch/ppc64/kernel/vmlinux.lds.S create mode 100644 arch/ppc64/kernel/xics.c create mode 100644 arch/ppc64/lib/Makefile create mode 100644 arch/ppc64/lib/checksum.S create mode 100644 arch/ppc64/lib/copypage.S create mode 100644 arch/ppc64/lib/copyuser.S create mode 100644 arch/ppc64/lib/dec_and_lock.c create mode 100644 arch/ppc64/lib/e2a.c create mode 100644 arch/ppc64/lib/locks.c create mode 100644 arch/ppc64/lib/memcpy.S create mode 100644 arch/ppc64/lib/sstep.c create mode 100644 arch/ppc64/lib/strcase.c create mode 100644 arch/ppc64/lib/string.S create mode 100644 arch/ppc64/lib/usercopy.c create mode 100644 arch/ppc64/mm/Makefile create mode 100644 arch/ppc64/mm/fault.c create mode 100644 arch/ppc64/mm/hash_low.S create mode 100644 arch/ppc64/mm/hash_native.c create mode 100644 arch/ppc64/mm/hash_utils.c create mode 100644 arch/ppc64/mm/hugetlbpage.c create mode 100644 arch/ppc64/mm/imalloc.c create mode 100644 arch/ppc64/mm/init.c create mode 100644 arch/ppc64/mm/mmap.c create mode 100644 arch/ppc64/mm/numa.c create mode 100644 arch/ppc64/mm/slb.c create mode 100644 arch/ppc64/mm/slb_low.S create mode 100644 arch/ppc64/mm/stab.c create mode 100644 arch/ppc64/mm/tlb.c create mode 100644 arch/ppc64/oprofile/Kconfig create mode 100644 arch/ppc64/oprofile/Makefile create mode 100644 arch/ppc64/oprofile/common.c create mode 100644 arch/ppc64/oprofile/op_impl.h create mode 100644 arch/ppc64/oprofile/op_model_power4.c create mode 100644 arch/ppc64/oprofile/op_model_rs64.c create mode 100644 arch/ppc64/xmon/Makefile create mode 100644 arch/ppc64/xmon/ansidecl.h create mode 100644 arch/ppc64/xmon/nonstdio.h create mode 100644 arch/ppc64/xmon/ppc-dis.c create mode 100644 arch/ppc64/xmon/ppc-opc.c create mode 100644 arch/ppc64/xmon/ppc.h create mode 100644 arch/ppc64/xmon/privinst.h create mode 100644 arch/ppc64/xmon/setjmp.S create mode 100644 arch/ppc64/xmon/start.c create mode 100644 arch/ppc64/xmon/subr_prf.c create mode 100644 arch/ppc64/xmon/xmon.c create mode 100644 arch/s390/Kconfig create mode 100644 arch/s390/Kconfig.debug create mode 100644 arch/s390/Makefile create mode 100644 arch/s390/appldata/Makefile create mode 100644 arch/s390/appldata/appldata.h create mode 100644 arch/s390/appldata/appldata_base.c create mode 100644 arch/s390/appldata/appldata_mem.c create mode 100644 arch/s390/appldata/appldata_net_sum.c create mode 100644 arch/s390/appldata/appldata_os.c create mode 100644 arch/s390/boot/Makefile create mode 100644 arch/s390/boot/install.sh create mode 100644 arch/s390/crypto/Makefile create mode 100644 arch/s390/crypto/crypt_z990.h create mode 100644 arch/s390/crypto/crypt_z990_query.c create mode 100644 arch/s390/crypto/crypto_des.h create mode 100644 arch/s390/crypto/des_check_key.c create mode 100644 arch/s390/crypto/des_z990.c create mode 100644 arch/s390/crypto/sha1_z990.c create mode 100644 arch/s390/defconfig create mode 100644 arch/s390/kernel/Makefile create mode 100644 arch/s390/kernel/asm-offsets.c create mode 100644 arch/s390/kernel/binfmt_elf32.c create mode 100644 arch/s390/kernel/bitmap.S create mode 100644 arch/s390/kernel/compat_exec_domain.c create mode 100644 arch/s390/kernel/compat_ioctl.c create mode 100644 arch/s390/kernel/compat_linux.c create mode 100644 arch/s390/kernel/compat_linux.h create mode 100644 arch/s390/kernel/compat_ptrace.h create mode 100644 arch/s390/kernel/compat_signal.c create mode 100644 arch/s390/kernel/compat_wrapper.S create mode 100644 arch/s390/kernel/cpcmd.c create mode 100644 arch/s390/kernel/debug.c create mode 100644 arch/s390/kernel/ebcdic.c create mode 100644 arch/s390/kernel/entry.S create mode 100644 arch/s390/kernel/entry64.S create mode 100644 arch/s390/kernel/head.S create mode 100644 arch/s390/kernel/head64.S create mode 100644 arch/s390/kernel/init_task.c create mode 100644 arch/s390/kernel/irq.c create mode 100644 arch/s390/kernel/module.c create mode 100644 arch/s390/kernel/process.c create mode 100644 arch/s390/kernel/profile.c create mode 100644 arch/s390/kernel/ptrace.c create mode 100644 arch/s390/kernel/reipl.S create mode 100644 arch/s390/kernel/reipl64.S create mode 100644 arch/s390/kernel/s390_ext.c create mode 100644 arch/s390/kernel/s390_ksyms.c create mode 100644 arch/s390/kernel/semaphore.c create mode 100644 arch/s390/kernel/setup.c create mode 100644 arch/s390/kernel/signal.c create mode 100644 arch/s390/kernel/smp.c create mode 100644 arch/s390/kernel/sys_s390.c create mode 100644 arch/s390/kernel/syscalls.S create mode 100644 arch/s390/kernel/time.c create mode 100644 arch/s390/kernel/traps.c create mode 100644 arch/s390/kernel/vmlinux.lds.S create mode 100644 arch/s390/kernel/vtime.c create mode 100644 arch/s390/lib/Makefile create mode 100644 arch/s390/lib/delay.c create mode 100644 arch/s390/lib/string.c create mode 100644 arch/s390/lib/uaccess.S create mode 100644 arch/s390/lib/uaccess64.S create mode 100644 arch/s390/math-emu/Makefile create mode 100644 arch/s390/math-emu/math.c create mode 100644 arch/s390/math-emu/qrnnd.S create mode 100644 arch/s390/math-emu/sfp-util.h create mode 100644 arch/s390/mm/Makefile create mode 100644 arch/s390/mm/cmm.c create mode 100644 arch/s390/mm/extmem.c create mode 100644 arch/s390/mm/fault.c create mode 100644 arch/s390/mm/init.c create mode 100644 arch/s390/mm/ioremap.c create mode 100644 arch/s390/mm/mmap.c create mode 100644 arch/s390/oprofile/Kconfig create mode 100644 arch/s390/oprofile/Makefile create mode 100644 arch/s390/oprofile/init.c create mode 100644 arch/sh/Kconfig create mode 100644 arch/sh/Kconfig.debug create mode 100644 arch/sh/Makefile create mode 100644 arch/sh/boards/adx/Makefile create mode 100644 arch/sh/boards/adx/irq.c create mode 100644 arch/sh/boards/adx/irq_maskreg.c create mode 100644 arch/sh/boards/adx/setup.c create mode 100644 arch/sh/boards/bigsur/Makefile create mode 100644 arch/sh/boards/bigsur/io.c create mode 100644 arch/sh/boards/bigsur/irq.c create mode 100644 arch/sh/boards/bigsur/led.c create mode 100644 arch/sh/boards/bigsur/setup.c create mode 100644 arch/sh/boards/cat68701/Makefile create mode 100644 arch/sh/boards/cat68701/irq.c create mode 100644 arch/sh/boards/cat68701/setup.c create mode 100644 arch/sh/boards/cqreek/Makefile create mode 100644 arch/sh/boards/cqreek/irq.c create mode 100644 arch/sh/boards/cqreek/setup.c create mode 100644 arch/sh/boards/dmida/Makefile create mode 100644 arch/sh/boards/dmida/mach.c create mode 100644 arch/sh/boards/dreamcast/Makefile create mode 100644 arch/sh/boards/dreamcast/irq.c create mode 100644 arch/sh/boards/dreamcast/rtc.c create mode 100644 arch/sh/boards/dreamcast/setup.c create mode 100644 arch/sh/boards/ec3104/Makefile create mode 100644 arch/sh/boards/ec3104/io.c create mode 100644 arch/sh/boards/ec3104/irq.c create mode 100644 arch/sh/boards/ec3104/setup.c create mode 100644 arch/sh/boards/harp/Makefile create mode 100644 arch/sh/boards/harp/irq.c create mode 100644 arch/sh/boards/harp/led.c create mode 100644 arch/sh/boards/harp/mach.c create mode 100644 arch/sh/boards/harp/pcidma.c create mode 100644 arch/sh/boards/harp/setup.c create mode 100644 arch/sh/boards/hp6xx/hp620/Makefile create mode 100644 arch/sh/boards/hp6xx/hp620/mach.c create mode 100644 arch/sh/boards/hp6xx/hp620/setup.c create mode 100644 arch/sh/boards/hp6xx/hp680/Makefile create mode 100644 arch/sh/boards/hp6xx/hp680/mach.c create mode 100644 arch/sh/boards/hp6xx/hp680/setup.c create mode 100644 arch/sh/boards/hp6xx/hp690/Makefile create mode 100644 arch/sh/boards/hp6xx/hp690/mach.c create mode 100644 arch/sh/boards/mpc1211/Makefile create mode 100644 arch/sh/boards/mpc1211/led.c create mode 100644 arch/sh/boards/mpc1211/pci.c create mode 100644 arch/sh/boards/mpc1211/rtc.c create mode 100644 arch/sh/boards/mpc1211/setup.c create mode 100644 arch/sh/boards/overdrive/Makefile create mode 100644 arch/sh/boards/overdrive/fpga.c create mode 100644 arch/sh/boards/overdrive/galileo.c create mode 100644 arch/sh/boards/overdrive/io.c create mode 100644 arch/sh/boards/overdrive/irq.c create mode 100644 arch/sh/boards/overdrive/led.c create mode 100644 arch/sh/boards/overdrive/mach.c create mode 100644 arch/sh/boards/overdrive/pcidma.c create mode 100644 arch/sh/boards/overdrive/setup.c create mode 100644 arch/sh/boards/overdrive/time.c create mode 100644 arch/sh/boards/renesas/edosk7705/Makefile create mode 100644 arch/sh/boards/renesas/edosk7705/io.c create mode 100644 arch/sh/boards/renesas/edosk7705/setup.c create mode 100644 arch/sh/boards/renesas/hs7751rvoip/Makefile create mode 100644 arch/sh/boards/renesas/hs7751rvoip/io.c create mode 100644 arch/sh/boards/renesas/hs7751rvoip/irq.c create mode 100644 arch/sh/boards/renesas/hs7751rvoip/led.c create mode 100644 arch/sh/boards/renesas/hs7751rvoip/mach.c create mode 100644 arch/sh/boards/renesas/hs7751rvoip/pci.c create mode 100644 arch/sh/boards/renesas/hs7751rvoip/setup.c create mode 100644 arch/sh/boards/renesas/rts7751r2d/Makefile create mode 100644 arch/sh/boards/renesas/rts7751r2d/io.c create mode 100644 arch/sh/boards/renesas/rts7751r2d/irq.c create mode 100644 arch/sh/boards/renesas/rts7751r2d/led.c create mode 100644 arch/sh/boards/renesas/rts7751r2d/mach.c create mode 100644 arch/sh/boards/renesas/rts7751r2d/setup.c create mode 100644 arch/sh/boards/renesas/systemh/Makefile create mode 100644 arch/sh/boards/renesas/systemh/io.c create mode 100644 arch/sh/boards/renesas/systemh/irq.c create mode 100644 arch/sh/boards/renesas/systemh/setup.c create mode 100644 arch/sh/boards/saturn/Makefile create mode 100644 arch/sh/boards/saturn/io.c create mode 100644 arch/sh/boards/saturn/irq.c create mode 100644 arch/sh/boards/saturn/setup.c create mode 100644 arch/sh/boards/saturn/smp.c create mode 100644 arch/sh/boards/se/7300/Makefile create mode 100644 arch/sh/boards/se/7300/io.c create mode 100644 arch/sh/boards/se/7300/irq.c create mode 100644 arch/sh/boards/se/7300/led.c create mode 100644 arch/sh/boards/se/7300/setup.c create mode 100644 arch/sh/boards/se/73180/Makefile create mode 100644 arch/sh/boards/se/73180/io.c create mode 100644 arch/sh/boards/se/73180/irq.c create mode 100644 arch/sh/boards/se/73180/led.c create mode 100644 arch/sh/boards/se/73180/setup.c create mode 100644 arch/sh/boards/se/770x/Makefile create mode 100644 arch/sh/boards/se/770x/io.c create mode 100644 arch/sh/boards/se/770x/irq.c create mode 100644 arch/sh/boards/se/770x/led.c create mode 100644 arch/sh/boards/se/770x/mach.c create mode 100644 arch/sh/boards/se/770x/setup.c create mode 100644 arch/sh/boards/se/7751/Makefile create mode 100644 arch/sh/boards/se/7751/io.c create mode 100644 arch/sh/boards/se/7751/irq.c create mode 100644 arch/sh/boards/se/7751/led.c create mode 100644 arch/sh/boards/se/7751/mach.c create mode 100644 arch/sh/boards/se/7751/pci.c create mode 100644 arch/sh/boards/se/7751/setup.c create mode 100644 arch/sh/boards/sh03/Makefile create mode 100644 arch/sh/boards/sh03/led.c create mode 100644 arch/sh/boards/sh03/rtc.c create mode 100644 arch/sh/boards/sh03/setup.c create mode 100644 arch/sh/boards/sh2000/Makefile create mode 100644 arch/sh/boards/sh2000/setup.c create mode 100644 arch/sh/boards/snapgear/Makefile create mode 100644 arch/sh/boards/snapgear/io.c create mode 100644 arch/sh/boards/snapgear/rtc.c create mode 100644 arch/sh/boards/snapgear/setup.c create mode 100644 arch/sh/boards/superh/microdev/Makefile create mode 100644 arch/sh/boards/superh/microdev/io.c create mode 100644 arch/sh/boards/superh/microdev/irq.c create mode 100644 arch/sh/boards/superh/microdev/led.c create mode 100644 arch/sh/boards/superh/microdev/setup.c create mode 100644 arch/sh/boards/unknown/Makefile create mode 100644 arch/sh/boards/unknown/io.c create mode 100644 arch/sh/boards/unknown/mach.c create mode 100644 arch/sh/boards/unknown/setup.c create mode 100644 arch/sh/boot/Makefile create mode 100644 arch/sh/boot/compressed/Makefile create mode 100644 arch/sh/boot/compressed/head.S create mode 100644 arch/sh/boot/compressed/install.sh create mode 100644 arch/sh/boot/compressed/misc.c create mode 100644 arch/sh/boot/compressed/vmlinux.scr create mode 100644 arch/sh/cchips/Kconfig create mode 100644 arch/sh/cchips/hd6446x/hd64461/Makefile create mode 100644 arch/sh/cchips/hd6446x/hd64461/io.c create mode 100644 arch/sh/cchips/hd6446x/hd64461/setup.c create mode 100644 arch/sh/cchips/hd6446x/hd64465/Makefile create mode 100644 arch/sh/cchips/hd6446x/hd64465/gpio.c create mode 100644 arch/sh/cchips/hd6446x/hd64465/io.c create mode 100644 arch/sh/cchips/hd6446x/hd64465/setup.c create mode 100644 arch/sh/cchips/voyagergx/Makefile create mode 100644 arch/sh/cchips/voyagergx/consistent.c create mode 100644 arch/sh/cchips/voyagergx/irq.c create mode 100644 arch/sh/cchips/voyagergx/setup.c create mode 100644 arch/sh/configs/adx_defconfig create mode 100644 arch/sh/configs/cqreek_defconfig create mode 100644 arch/sh/configs/dreamcast_defconfig create mode 100644 arch/sh/configs/hp680_defconfig create mode 100644 arch/sh/configs/microdev_defconfig create mode 100644 arch/sh/configs/rts7751r2d_defconfig create mode 100644 arch/sh/configs/se7300_defconfig create mode 100644 arch/sh/configs/se73180_defconfig create mode 100644 arch/sh/configs/se7705_defconfig create mode 100644 arch/sh/configs/se7750_defconfig create mode 100644 arch/sh/configs/se7751_defconfig create mode 100644 arch/sh/configs/sh03_defconfig create mode 100644 arch/sh/configs/snapgear_defconfig create mode 100644 arch/sh/configs/systemh_defconfig create mode 100644 arch/sh/drivers/Makefile create mode 100644 arch/sh/drivers/dma/Kconfig create mode 100644 arch/sh/drivers/dma/Makefile create mode 100644 arch/sh/drivers/dma/dma-api.c create mode 100644 arch/sh/drivers/dma/dma-g2.c create mode 100644 arch/sh/drivers/dma/dma-isa.c create mode 100644 arch/sh/drivers/dma/dma-pvr2.c create mode 100644 arch/sh/drivers/dma/dma-sh.c create mode 100644 arch/sh/drivers/dma/dma-sh.h create mode 100644 arch/sh/drivers/dma/dma-sysfs.c create mode 100644 arch/sh/drivers/pci/Kconfig create mode 100644 arch/sh/drivers/pci/Makefile create mode 100644 arch/sh/drivers/pci/dma-dreamcast.c create mode 100644 arch/sh/drivers/pci/fixups-dreamcast.c create mode 100644 arch/sh/drivers/pci/fixups-rts7751r2d.c create mode 100644 arch/sh/drivers/pci/fixups-sh03.c create mode 100644 arch/sh/drivers/pci/ops-bigsur.c create mode 100644 arch/sh/drivers/pci/ops-dreamcast.c create mode 100644 arch/sh/drivers/pci/ops-rts7751r2d.c create mode 100644 arch/sh/drivers/pci/ops-sh03.c create mode 100644 arch/sh/drivers/pci/ops-snapgear.c create mode 100644 arch/sh/drivers/pci/pci-auto.c create mode 100644 arch/sh/drivers/pci/pci-sh7751.c create mode 100644 arch/sh/drivers/pci/pci-sh7751.h create mode 100644 arch/sh/drivers/pci/pci-st40.c create mode 100644 arch/sh/drivers/pci/pci-st40.h create mode 100644 arch/sh/drivers/pci/pci.c create mode 100644 arch/sh/kernel/Makefile create mode 100644 arch/sh/kernel/asm-offsets.c create mode 100644 arch/sh/kernel/cf-enabler.c create mode 100644 arch/sh/kernel/cpu/Makefile create mode 100644 arch/sh/kernel/cpu/adc.c create mode 100644 arch/sh/kernel/cpu/bus.c create mode 100644 arch/sh/kernel/cpu/init.c create mode 100644 arch/sh/kernel/cpu/irq_imask.c create mode 100644 arch/sh/kernel/cpu/irq_ipr.c create mode 100644 arch/sh/kernel/cpu/rtc.c create mode 100644 arch/sh/kernel/cpu/sh2/Makefile create mode 100644 arch/sh/kernel/cpu/sh2/probe.c create mode 100644 arch/sh/kernel/cpu/sh3/Makefile create mode 100644 arch/sh/kernel/cpu/sh3/ex.S create mode 100644 arch/sh/kernel/cpu/sh3/probe.c create mode 100644 arch/sh/kernel/cpu/sh4/Makefile create mode 100644 arch/sh/kernel/cpu/sh4/ex.S create mode 100644 arch/sh/kernel/cpu/sh4/fpu.c create mode 100644 arch/sh/kernel/cpu/sh4/irq_intc2.c create mode 100644 arch/sh/kernel/cpu/sh4/probe.c create mode 100644 arch/sh/kernel/cpu/sh4/sq.c create mode 100644 arch/sh/kernel/cpu/ubc.S create mode 100644 arch/sh/kernel/cpufreq.c create mode 100644 arch/sh/kernel/early_printk.c create mode 100644 arch/sh/kernel/entry.S create mode 100644 arch/sh/kernel/head.S create mode 100644 arch/sh/kernel/init_task.c create mode 100644 arch/sh/kernel/io.c create mode 100644 arch/sh/kernel/io_generic.c create mode 100644 arch/sh/kernel/irq.c create mode 100644 arch/sh/kernel/kgdb_jmp.S create mode 100644 arch/sh/kernel/kgdb_stub.c create mode 100644 arch/sh/kernel/module.c create mode 100644 arch/sh/kernel/process.c create mode 100644 arch/sh/kernel/ptrace.c create mode 100644 arch/sh/kernel/semaphore.c create mode 100644 arch/sh/kernel/setup.c create mode 100644 arch/sh/kernel/sh_bios.c create mode 100644 arch/sh/kernel/sh_ksyms.c create mode 100644 arch/sh/kernel/signal.c create mode 100644 arch/sh/kernel/smp.c create mode 100644 arch/sh/kernel/sys_sh.c create mode 100644 arch/sh/kernel/time.c create mode 100644 arch/sh/kernel/traps.c create mode 100644 arch/sh/kernel/vmlinux.lds.S create mode 100644 arch/sh/lib/Makefile create mode 100644 arch/sh/lib/checksum.S create mode 100644 arch/sh/lib/delay.c create mode 100644 arch/sh/lib/div64-generic.c create mode 100644 arch/sh/lib/div64.S create mode 100644 arch/sh/lib/memchr.S create mode 100644 arch/sh/lib/memcpy-sh4.S create mode 100644 arch/sh/lib/memcpy.S create mode 100644 arch/sh/lib/memmove.S create mode 100644 arch/sh/lib/memset.S create mode 100644 arch/sh/lib/strcasecmp.c create mode 100644 arch/sh/lib/strlen.S create mode 100644 arch/sh/lib/udivdi3.c create mode 100644 arch/sh/mm/Makefile create mode 100644 arch/sh/mm/cache-sh2.c create mode 100644 arch/sh/mm/cache-sh3.c create mode 100644 arch/sh/mm/cache-sh4.c create mode 100644 arch/sh/mm/cache-sh7705.c create mode 100644 arch/sh/mm/clear_page.S create mode 100644 arch/sh/mm/consistent.c create mode 100644 arch/sh/mm/copy_page.S create mode 100644 arch/sh/mm/extable.c create mode 100644 arch/sh/mm/fault-nommu.c create mode 100644 arch/sh/mm/fault.c create mode 100644 arch/sh/mm/hugetlbpage.c create mode 100644 arch/sh/mm/init.c create mode 100644 arch/sh/mm/ioremap.c create mode 100644 arch/sh/mm/pg-dma.c create mode 100644 arch/sh/mm/pg-nommu.c create mode 100644 arch/sh/mm/pg-sh4.c create mode 100644 arch/sh/mm/pg-sh7705.c create mode 100644 arch/sh/mm/tlb-nommu.c create mode 100644 arch/sh/mm/tlb-sh3.c create mode 100644 arch/sh/mm/tlb-sh4.c create mode 100644 arch/sh/oprofile/Kconfig create mode 100644 arch/sh/oprofile/Makefile create mode 100644 arch/sh/oprofile/op_model_null.c create mode 100644 arch/sh/oprofile/op_model_sh7750.c create mode 100644 arch/sh/ramdisk/Makefile create mode 100644 arch/sh/ramdisk/ld.script create mode 100644 arch/sh/tools/Makefile create mode 100644 arch/sh/tools/gen-mach-types create mode 100644 arch/sh/tools/mach-types create mode 100644 arch/sh64/Kconfig create mode 100644 arch/sh64/Kconfig.debug create mode 100644 arch/sh64/Makefile create mode 100644 arch/sh64/boot/Makefile create mode 100644 arch/sh64/boot/compressed/Makefile create mode 100644 arch/sh64/boot/compressed/cache.c create mode 100644 arch/sh64/boot/compressed/head.S create mode 100644 arch/sh64/boot/compressed/install.sh create mode 100644 arch/sh64/boot/compressed/misc.c create mode 100644 arch/sh64/boot/compressed/vmlinux.lds.S create mode 100644 arch/sh64/configs/cayman_defconfig create mode 100644 arch/sh64/kernel/Makefile create mode 100644 arch/sh64/kernel/alphanum.c create mode 100644 arch/sh64/kernel/asm-offsets.c create mode 100644 arch/sh64/kernel/dma.c create mode 100644 arch/sh64/kernel/early_printk.c create mode 100644 arch/sh64/kernel/entry.S create mode 100644 arch/sh64/kernel/fpu.c create mode 100644 arch/sh64/kernel/head.S create mode 100644 arch/sh64/kernel/init_task.c create mode 100644 arch/sh64/kernel/irq.c create mode 100644 arch/sh64/kernel/irq_intc.c create mode 100644 arch/sh64/kernel/led.c create mode 100644 arch/sh64/kernel/module.c create mode 100644 arch/sh64/kernel/pci-dma.c create mode 100644 arch/sh64/kernel/pci_sh5.c create mode 100644 arch/sh64/kernel/pci_sh5.h create mode 100644 arch/sh64/kernel/pcibios.c create mode 100644 arch/sh64/kernel/process.c create mode 100644 arch/sh64/kernel/ptrace.c create mode 100644 arch/sh64/kernel/semaphore.c create mode 100644 arch/sh64/kernel/setup.c create mode 100644 arch/sh64/kernel/sh_ksyms.c create mode 100644 arch/sh64/kernel/signal.c create mode 100644 arch/sh64/kernel/switchto.S create mode 100644 arch/sh64/kernel/sys_sh64.c create mode 100644 arch/sh64/kernel/syscalls.S create mode 100644 arch/sh64/kernel/time.c create mode 100644 arch/sh64/kernel/traps.c create mode 100644 arch/sh64/kernel/unwind.c create mode 100644 arch/sh64/kernel/vmlinux.lds.S create mode 100644 arch/sh64/lib/Makefile create mode 100644 arch/sh64/lib/c-checksum.c create mode 100644 arch/sh64/lib/copy_user_memcpy.S create mode 100644 arch/sh64/lib/dbg.c create mode 100644 arch/sh64/lib/io.c create mode 100644 arch/sh64/lib/iomap.c create mode 100644 arch/sh64/lib/memcpy.c create mode 100644 arch/sh64/lib/page_clear.S create mode 100644 arch/sh64/lib/page_copy.S create mode 100644 arch/sh64/lib/panic.c create mode 100644 arch/sh64/lib/udelay.c create mode 100644 arch/sh64/mach-cayman/Makefile create mode 100644 arch/sh64/mach-cayman/iomap.c create mode 100644 arch/sh64/mach-cayman/irq.c create mode 100644 arch/sh64/mach-cayman/led.c create mode 100644 arch/sh64/mach-cayman/setup.c create mode 100644 arch/sh64/mach-harp/Makefile create mode 100644 arch/sh64/mach-harp/setup.c create mode 100644 arch/sh64/mach-romram/Makefile create mode 100644 arch/sh64/mach-romram/setup.c create mode 100644 arch/sh64/mach-sim/Makefile create mode 100644 arch/sh64/mach-sim/setup.c create mode 100644 arch/sh64/mm/Makefile create mode 100644 arch/sh64/mm/cache.c create mode 100644 arch/sh64/mm/extable.c create mode 100644 arch/sh64/mm/fault.c create mode 100644 arch/sh64/mm/hugetlbpage.c create mode 100644 arch/sh64/mm/init.c create mode 100644 arch/sh64/mm/ioremap.c create mode 100644 arch/sh64/mm/tlb.c create mode 100644 arch/sh64/mm/tlbmiss.c create mode 100644 arch/sh64/oprofile/Kconfig create mode 100644 arch/sh64/oprofile/Makefile create mode 100644 arch/sh64/oprofile/op_model_null.c create mode 100644 arch/sparc/Kconfig create mode 100644 arch/sparc/Kconfig.debug create mode 100644 arch/sparc/Makefile create mode 100644 arch/sparc/boot/Makefile create mode 100644 arch/sparc/boot/btfixupprep.c create mode 100644 arch/sparc/boot/piggyback.c create mode 100644 arch/sparc/defconfig create mode 100644 arch/sparc/kernel/Makefile create mode 100644 arch/sparc/kernel/apc.c create mode 100644 arch/sparc/kernel/asm-offsets.c create mode 100644 arch/sparc/kernel/auxio.c create mode 100644 arch/sparc/kernel/cpu.c create mode 100644 arch/sparc/kernel/devices.c create mode 100644 arch/sparc/kernel/ebus.c create mode 100644 arch/sparc/kernel/entry.S create mode 100644 arch/sparc/kernel/errtbls.c create mode 100644 arch/sparc/kernel/etrap.S create mode 100644 arch/sparc/kernel/head.S create mode 100644 arch/sparc/kernel/idprom.c create mode 100644 arch/sparc/kernel/init_task.c create mode 100644 arch/sparc/kernel/ioport.c create mode 100644 arch/sparc/kernel/irq.c create mode 100644 arch/sparc/kernel/module.c create mode 100644 arch/sparc/kernel/muldiv.c create mode 100644 arch/sparc/kernel/pcic.c create mode 100644 arch/sparc/kernel/pmc.c create mode 100644 arch/sparc/kernel/process.c create mode 100644 arch/sparc/kernel/ptrace.c create mode 100644 arch/sparc/kernel/rtrap.S create mode 100644 arch/sparc/kernel/sclow.S create mode 100644 arch/sparc/kernel/semaphore.c create mode 100644 arch/sparc/kernel/setup.c create mode 100644 arch/sparc/kernel/signal.c create mode 100644 arch/sparc/kernel/smp.c create mode 100644 arch/sparc/kernel/sparc-stub.c create mode 100644 arch/sparc/kernel/sparc_ksyms.c create mode 100644 arch/sparc/kernel/sun4c_irq.c create mode 100644 arch/sparc/kernel/sun4d_irq.c create mode 100644 arch/sparc/kernel/sun4d_smp.c create mode 100644 arch/sparc/kernel/sun4m_irq.c create mode 100644 arch/sparc/kernel/sun4m_smp.c create mode 100644 arch/sparc/kernel/sun4setup.c create mode 100644 arch/sparc/kernel/sunos_asm.S create mode 100644 arch/sparc/kernel/sunos_ioctl.c create mode 100644 arch/sparc/kernel/sys_solaris.c create mode 100644 arch/sparc/kernel/sys_sparc.c create mode 100644 arch/sparc/kernel/sys_sunos.c create mode 100644 arch/sparc/kernel/systbls.S create mode 100644 arch/sparc/kernel/tadpole.c create mode 100644 arch/sparc/kernel/tick14.c create mode 100644 arch/sparc/kernel/time.c create mode 100644 arch/sparc/kernel/trampoline.S create mode 100644 arch/sparc/kernel/traps.c create mode 100644 arch/sparc/kernel/unaligned.c create mode 100644 arch/sparc/kernel/vmlinux.lds.S create mode 100644 arch/sparc/kernel/windows.c create mode 100644 arch/sparc/kernel/wof.S create mode 100644 arch/sparc/kernel/wuf.S create mode 100644 arch/sparc/lib/COPYING.LIB create mode 100644 arch/sparc/lib/Makefile create mode 100644 arch/sparc/lib/ashldi3.S create mode 100644 arch/sparc/lib/ashrdi3.S create mode 100644 arch/sparc/lib/atomic.S create mode 100644 arch/sparc/lib/atomic32.c create mode 100644 arch/sparc/lib/bitext.c create mode 100644 arch/sparc/lib/bitops.S create mode 100644 arch/sparc/lib/blockops.S create mode 100644 arch/sparc/lib/checksum.S create mode 100644 arch/sparc/lib/copy_user.S create mode 100644 arch/sparc/lib/debuglocks.c create mode 100644 arch/sparc/lib/divdi3.S create mode 100644 arch/sparc/lib/locks.S create mode 100644 arch/sparc/lib/lshrdi3.S create mode 100644 arch/sparc/lib/memcmp.S create mode 100644 arch/sparc/lib/memcpy.S create mode 100644 arch/sparc/lib/memscan.S create mode 100644 arch/sparc/lib/memset.S create mode 100644 arch/sparc/lib/mul.S create mode 100644 arch/sparc/lib/muldi3.S create mode 100644 arch/sparc/lib/rem.S create mode 100644 arch/sparc/lib/rwsem.S create mode 100644 arch/sparc/lib/sdiv.S create mode 100644 arch/sparc/lib/strlen.S create mode 100644 arch/sparc/lib/strlen_user.S create mode 100644 arch/sparc/lib/strncmp.S create mode 100644 arch/sparc/lib/strncpy_from_user.S create mode 100644 arch/sparc/lib/udiv.S create mode 100644 arch/sparc/lib/udivdi3.S create mode 100644 arch/sparc/lib/umul.S create mode 100644 arch/sparc/lib/urem.S create mode 100644 arch/sparc/math-emu/Makefile create mode 100644 arch/sparc/math-emu/ashldi3.S create mode 100644 arch/sparc/math-emu/math.c create mode 100644 arch/sparc/math-emu/sfp-util.h create mode 100644 arch/sparc/mm/Makefile create mode 100644 arch/sparc/mm/btfixup.c create mode 100644 arch/sparc/mm/extable.c create mode 100644 arch/sparc/mm/fault.c create mode 100644 arch/sparc/mm/generic.c create mode 100644 arch/sparc/mm/highmem.c create mode 100644 arch/sparc/mm/hypersparc.S create mode 100644 arch/sparc/mm/init.c create mode 100644 arch/sparc/mm/io-unit.c create mode 100644 arch/sparc/mm/iommu.c create mode 100644 arch/sparc/mm/loadmmu.c create mode 100644 arch/sparc/mm/nosrmmu.c create mode 100644 arch/sparc/mm/nosun4c.c create mode 100644 arch/sparc/mm/srmmu.c create mode 100644 arch/sparc/mm/sun4c.c create mode 100644 arch/sparc/mm/swift.S create mode 100644 arch/sparc/mm/tsunami.S create mode 100644 arch/sparc/mm/viking.S create mode 100644 arch/sparc/prom/Makefile create mode 100644 arch/sparc/prom/bootstr.c create mode 100644 arch/sparc/prom/console.c create mode 100644 arch/sparc/prom/devmap.c create mode 100644 arch/sparc/prom/devops.c create mode 100644 arch/sparc/prom/init.c create mode 100644 arch/sparc/prom/memory.c create mode 100644 arch/sparc/prom/misc.c create mode 100644 arch/sparc/prom/mp.c create mode 100644 arch/sparc/prom/palloc.c create mode 100644 arch/sparc/prom/printf.c create mode 100644 arch/sparc/prom/ranges.c create mode 100644 arch/sparc/prom/segment.c create mode 100644 arch/sparc/prom/sun4prom.c create mode 100644 arch/sparc/prom/tree.c create mode 100644 arch/sparc64/Kconfig create mode 100644 arch/sparc64/Kconfig.debug create mode 100644 arch/sparc64/Makefile create mode 100644 arch/sparc64/boot/Makefile create mode 100644 arch/sparc64/boot/piggyback.c create mode 100644 arch/sparc64/defconfig create mode 100644 arch/sparc64/kernel/Makefile create mode 100644 arch/sparc64/kernel/auxio.c create mode 100644 arch/sparc64/kernel/binfmt_aout32.c create mode 100644 arch/sparc64/kernel/binfmt_elf32.c create mode 100644 arch/sparc64/kernel/central.c create mode 100644 arch/sparc64/kernel/chmc.c create mode 100644 arch/sparc64/kernel/cpu.c create mode 100644 arch/sparc64/kernel/devices.c create mode 100644 arch/sparc64/kernel/dtlb_backend.S create mode 100644 arch/sparc64/kernel/dtlb_base.S create mode 100644 arch/sparc64/kernel/dtlb_prot.S create mode 100644 arch/sparc64/kernel/ebus.c create mode 100644 arch/sparc64/kernel/entry.S create mode 100644 arch/sparc64/kernel/etrap.S create mode 100644 arch/sparc64/kernel/head.S create mode 100644 arch/sparc64/kernel/idprom.c create mode 100644 arch/sparc64/kernel/init_task.c create mode 100644 arch/sparc64/kernel/ioctl32.c create mode 100644 arch/sparc64/kernel/iommu_common.c create mode 100644 arch/sparc64/kernel/iommu_common.h create mode 100644 arch/sparc64/kernel/irq.c create mode 100644 arch/sparc64/kernel/isa.c create mode 100644 arch/sparc64/kernel/itlb_base.S create mode 100644 arch/sparc64/kernel/kprobes.c create mode 100644 arch/sparc64/kernel/module.c create mode 100644 arch/sparc64/kernel/pci.c create mode 100644 arch/sparc64/kernel/pci_common.c create mode 100644 arch/sparc64/kernel/pci_impl.h create mode 100644 arch/sparc64/kernel/pci_iommu.c create mode 100644 arch/sparc64/kernel/pci_psycho.c create mode 100644 arch/sparc64/kernel/pci_sabre.c create mode 100644 arch/sparc64/kernel/pci_schizo.c create mode 100644 arch/sparc64/kernel/power.c create mode 100644 arch/sparc64/kernel/process.c create mode 100644 arch/sparc64/kernel/ptrace.c create mode 100644 arch/sparc64/kernel/rtrap.S create mode 100644 arch/sparc64/kernel/sbus.c create mode 100644 arch/sparc64/kernel/semaphore.c create mode 100644 arch/sparc64/kernel/setup.c create mode 100644 arch/sparc64/kernel/signal.c create mode 100644 arch/sparc64/kernel/signal32.c create mode 100644 arch/sparc64/kernel/smp.c create mode 100644 arch/sparc64/kernel/sparc64_ksyms.c create mode 100644 arch/sparc64/kernel/starfire.c create mode 100644 arch/sparc64/kernel/sunos_ioctl32.c create mode 100644 arch/sparc64/kernel/sys32.S create mode 100644 arch/sparc64/kernel/sys_sparc.c create mode 100644 arch/sparc64/kernel/sys_sparc32.c create mode 100644 arch/sparc64/kernel/sys_sunos32.c create mode 100644 arch/sparc64/kernel/systbls.S create mode 100644 arch/sparc64/kernel/time.c create mode 100644 arch/sparc64/kernel/trampoline.S create mode 100644 arch/sparc64/kernel/traps.c create mode 100644 arch/sparc64/kernel/ttable.S create mode 100644 arch/sparc64/kernel/unaligned.c create mode 100644 arch/sparc64/kernel/us2e_cpufreq.c create mode 100644 arch/sparc64/kernel/us3_cpufreq.c create mode 100644 arch/sparc64/kernel/vmlinux.lds.S create mode 100644 arch/sparc64/kernel/winfixup.S create mode 100644 arch/sparc64/lib/Makefile create mode 100644 arch/sparc64/lib/PeeCeeI.c create mode 100644 arch/sparc64/lib/U1copy_from_user.S create mode 100644 arch/sparc64/lib/U1copy_to_user.S create mode 100644 arch/sparc64/lib/U1memcpy.S create mode 100644 arch/sparc64/lib/U3copy_from_user.S create mode 100644 arch/sparc64/lib/U3copy_to_user.S create mode 100644 arch/sparc64/lib/U3memcpy.S create mode 100644 arch/sparc64/lib/U3patch.S create mode 100644 arch/sparc64/lib/VISsave.S create mode 100644 arch/sparc64/lib/atomic.S create mode 100644 arch/sparc64/lib/bitops.S create mode 100644 arch/sparc64/lib/bzero.S create mode 100644 arch/sparc64/lib/checksum.S create mode 100644 arch/sparc64/lib/clear_page.S create mode 100644 arch/sparc64/lib/copy_in_user.S create mode 100644 arch/sparc64/lib/copy_page.S create mode 100644 arch/sparc64/lib/csum_copy.S create mode 100644 arch/sparc64/lib/csum_copy_from_user.S create mode 100644 arch/sparc64/lib/csum_copy_to_user.S create mode 100644 arch/sparc64/lib/debuglocks.c create mode 100644 arch/sparc64/lib/dec_and_lock.S create mode 100644 arch/sparc64/lib/delay.c create mode 100644 arch/sparc64/lib/find_bit.c create mode 100644 arch/sparc64/lib/iomap.c create mode 100644 arch/sparc64/lib/ipcsum.S create mode 100644 arch/sparc64/lib/mcount.S create mode 100644 arch/sparc64/lib/memcmp.S create mode 100644 arch/sparc64/lib/memmove.S create mode 100644 arch/sparc64/lib/memscan.S create mode 100644 arch/sparc64/lib/rwsem.S create mode 100644 arch/sparc64/lib/strlen.S create mode 100644 arch/sparc64/lib/strlen_user.S create mode 100644 arch/sparc64/lib/strncmp.S create mode 100644 arch/sparc64/lib/strncpy_from_user.S create mode 100644 arch/sparc64/lib/user_fixup.c create mode 100644 arch/sparc64/lib/xor.S create mode 100644 arch/sparc64/math-emu/Makefile create mode 100644 arch/sparc64/math-emu/math.c create mode 100644 arch/sparc64/math-emu/sfp-util.h create mode 100644 arch/sparc64/mm/Makefile create mode 100644 arch/sparc64/mm/extable.c create mode 100644 arch/sparc64/mm/fault.c create mode 100644 arch/sparc64/mm/generic.c create mode 100644 arch/sparc64/mm/hugetlbpage.c create mode 100644 arch/sparc64/mm/init.c create mode 100644 arch/sparc64/mm/tlb.c create mode 100644 arch/sparc64/mm/ultra.S create mode 100644 arch/sparc64/oprofile/Kconfig create mode 100644 arch/sparc64/oprofile/Makefile create mode 100644 arch/sparc64/oprofile/init.c create mode 100644 arch/sparc64/prom/Makefile create mode 100644 arch/sparc64/prom/bootstr.c create mode 100644 arch/sparc64/prom/cif.S create mode 100644 arch/sparc64/prom/console.c create mode 100644 arch/sparc64/prom/devops.c create mode 100644 arch/sparc64/prom/init.c create mode 100644 arch/sparc64/prom/map.S create mode 100644 arch/sparc64/prom/memory.c create mode 100644 arch/sparc64/prom/misc.c create mode 100644 arch/sparc64/prom/p1275.c create mode 100644 arch/sparc64/prom/printf.c create mode 100644 arch/sparc64/prom/tree.c create mode 100644 arch/sparc64/solaris/Makefile create mode 100644 arch/sparc64/solaris/conv.h create mode 100644 arch/sparc64/solaris/entry64.S create mode 100644 arch/sparc64/solaris/fs.c create mode 100644 arch/sparc64/solaris/ioctl.c create mode 100644 arch/sparc64/solaris/ipc.c create mode 100644 arch/sparc64/solaris/misc.c create mode 100644 arch/sparc64/solaris/signal.c create mode 100644 arch/sparc64/solaris/signal.h create mode 100644 arch/sparc64/solaris/socket.c create mode 100644 arch/sparc64/solaris/socksys.c create mode 100644 arch/sparc64/solaris/socksys.h create mode 100644 arch/sparc64/solaris/systbl.S create mode 100644 arch/sparc64/solaris/timod.c create mode 100644 arch/um/Kconfig create mode 100644 arch/um/Kconfig.debug create mode 100644 arch/um/Kconfig_char create mode 100644 arch/um/Kconfig_i386 create mode 100644 arch/um/Kconfig_net create mode 100644 arch/um/Kconfig_scsi create mode 100644 arch/um/Kconfig_x86_64 create mode 100644 arch/um/Makefile create mode 100644 arch/um/Makefile-i386 create mode 100644 arch/um/Makefile-ia64 create mode 100644 arch/um/Makefile-os-Linux create mode 100644 arch/um/Makefile-ppc create mode 100644 arch/um/Makefile-skas create mode 100644 arch/um/Makefile-tt create mode 100644 arch/um/Makefile-x86_64 create mode 100644 arch/um/config.release create mode 100644 arch/um/defconfig create mode 100644 arch/um/drivers/Makefile create mode 100644 arch/um/drivers/chan_kern.c create mode 100644 arch/um/drivers/chan_user.c create mode 100644 arch/um/drivers/cow.h create mode 100644 arch/um/drivers/cow_sys.h create mode 100644 arch/um/drivers/cow_user.c create mode 100644 arch/um/drivers/daemon.h create mode 100644 arch/um/drivers/daemon_kern.c create mode 100644 arch/um/drivers/daemon_user.c create mode 100644 arch/um/drivers/fd.c create mode 100644 arch/um/drivers/harddog_kern.c create mode 100644 arch/um/drivers/harddog_user.c create mode 100644 arch/um/drivers/hostaudio_kern.c create mode 100644 arch/um/drivers/line.c create mode 100644 arch/um/drivers/mcast.h create mode 100644 arch/um/drivers/mcast_kern.c create mode 100644 arch/um/drivers/mcast_user.c create mode 100644 arch/um/drivers/mconsole_kern.c create mode 100644 arch/um/drivers/mconsole_user.c create mode 100644 arch/um/drivers/mmapper_kern.c create mode 100644 arch/um/drivers/net_kern.c create mode 100644 arch/um/drivers/net_user.c create mode 100644 arch/um/drivers/null.c create mode 100644 arch/um/drivers/pcap_kern.c create mode 100644 arch/um/drivers/pcap_user.c create mode 100644 arch/um/drivers/pcap_user.h create mode 100644 arch/um/drivers/port.h create mode 100644 arch/um/drivers/port_kern.c create mode 100644 arch/um/drivers/port_user.c create mode 100644 arch/um/drivers/pty.c create mode 100644 arch/um/drivers/random.c create mode 100644 arch/um/drivers/slip.h create mode 100644 arch/um/drivers/slip_kern.c create mode 100644 arch/um/drivers/slip_proto.h create mode 100644 arch/um/drivers/slip_user.c create mode 100644 arch/um/drivers/slirp.h create mode 100644 arch/um/drivers/slirp_kern.c create mode 100644 arch/um/drivers/slirp_user.c create mode 100644 arch/um/drivers/ssl.c create mode 100644 arch/um/drivers/ssl.h create mode 100644 arch/um/drivers/stderr_console.c create mode 100644 arch/um/drivers/stdio_console.c create mode 100644 arch/um/drivers/stdio_console.h create mode 100644 arch/um/drivers/tty.c create mode 100644 arch/um/drivers/ubd_kern.c create mode 100644 arch/um/drivers/ubd_user.c create mode 100644 arch/um/drivers/xterm.c create mode 100644 arch/um/drivers/xterm.h create mode 100644 arch/um/drivers/xterm_kern.c create mode 100644 arch/um/include/2_5compat.h create mode 100644 arch/um/include/chan_kern.h create mode 100644 arch/um/include/chan_user.h create mode 100644 arch/um/include/choose-mode.h create mode 100644 arch/um/include/elf_user.h create mode 100644 arch/um/include/frame_kern.h create mode 100644 arch/um/include/helper.h create mode 100644 arch/um/include/init.h create mode 100644 arch/um/include/initrd.h create mode 100644 arch/um/include/irq_kern.h create mode 100644 arch/um/include/irq_user.h create mode 100644 arch/um/include/kern.h create mode 100644 arch/um/include/kern_util.h create mode 100644 arch/um/include/line.h create mode 100644 arch/um/include/mconsole.h create mode 100644 arch/um/include/mconsole_kern.h create mode 100644 arch/um/include/mem.h create mode 100644 arch/um/include/mem_kern.h create mode 100644 arch/um/include/mem_user.h create mode 100644 arch/um/include/mode.h create mode 100644 arch/um/include/mode_kern.h create mode 100644 arch/um/include/net_kern.h create mode 100644 arch/um/include/net_user.h create mode 100644 arch/um/include/os.h create mode 100644 arch/um/include/process.h create mode 100644 arch/um/include/ptrace_user.h create mode 100644 arch/um/include/registers.h create mode 100644 arch/um/include/sigcontext.h create mode 100644 arch/um/include/sigio.h create mode 100644 arch/um/include/signal_kern.h create mode 100644 arch/um/include/signal_user.h create mode 100644 arch/um/include/skas_ptrace.h create mode 100644 arch/um/include/syscall_user.h create mode 100644 arch/um/include/sysdep-i386/checksum.h create mode 100644 arch/um/include/sysdep-i386/ptrace.h create mode 100644 arch/um/include/sysdep-i386/ptrace_user.h create mode 100644 arch/um/include/sysdep-i386/sigcontext.h create mode 100644 arch/um/include/sysdep-i386/signal.h create mode 100644 arch/um/include/sysdep-i386/syscalls.h create mode 100644 arch/um/include/sysdep-ia64/ptrace.h create mode 100644 arch/um/include/sysdep-ia64/sigcontext.h create mode 100644 arch/um/include/sysdep-ia64/syscalls.h create mode 100644 arch/um/include/sysdep-ppc/ptrace.h create mode 100644 arch/um/include/sysdep-ppc/sigcontext.h create mode 100644 arch/um/include/sysdep-ppc/syscalls.h create mode 100644 arch/um/include/sysdep-x86_64/checksum.h create mode 100644 arch/um/include/sysdep-x86_64/ptrace.h create mode 100644 arch/um/include/sysdep-x86_64/ptrace_user.h create mode 100644 arch/um/include/sysdep-x86_64/sigcontext.h create mode 100644 arch/um/include/sysdep-x86_64/signal.h create mode 100644 arch/um/include/sysdep-x86_64/syscalls.h create mode 100644 arch/um/include/sysrq.h create mode 100644 arch/um/include/tempfile.h create mode 100644 arch/um/include/time_user.h create mode 100644 arch/um/include/tlb.h create mode 100644 arch/um/include/ubd_user.h create mode 100644 arch/um/include/um_mmu.h create mode 100644 arch/um/include/um_uaccess.h create mode 100644 arch/um/include/umid.h create mode 100644 arch/um/include/uml_uaccess.h create mode 100644 arch/um/include/user.h create mode 100644 arch/um/include/user_util.h create mode 100644 arch/um/kernel/Makefile create mode 100644 arch/um/kernel/checksum.c create mode 100644 arch/um/kernel/config.c.in create mode 100644 arch/um/kernel/dyn.lds.S create mode 100644 arch/um/kernel/exec_kern.c create mode 100644 arch/um/kernel/exitcode.c create mode 100644 arch/um/kernel/gmon_syms.c create mode 100644 arch/um/kernel/gprof_syms.c create mode 100644 arch/um/kernel/helper.c create mode 100644 arch/um/kernel/init_task.c create mode 100644 arch/um/kernel/initrd_kern.c create mode 100644 arch/um/kernel/initrd_user.c create mode 100644 arch/um/kernel/irq.c create mode 100644 arch/um/kernel/irq_user.c create mode 100644 arch/um/kernel/ksyms.c create mode 100644 arch/um/kernel/main.c create mode 100644 arch/um/kernel/mem.c create mode 100644 arch/um/kernel/mem_user.c create mode 100644 arch/um/kernel/physmem.c create mode 100644 arch/um/kernel/process.c create mode 100644 arch/um/kernel/process_kern.c create mode 100644 arch/um/kernel/ptrace.c create mode 100644 arch/um/kernel/reboot.c create mode 100644 arch/um/kernel/resource.c create mode 100644 arch/um/kernel/sigio_kern.c create mode 100644 arch/um/kernel/sigio_user.c create mode 100644 arch/um/kernel/signal_kern.c create mode 100644 arch/um/kernel/signal_user.c create mode 100644 arch/um/kernel/skas/Makefile create mode 100644 arch/um/kernel/skas/exec_kern.c create mode 100644 arch/um/kernel/skas/include/mmu-skas.h create mode 100644 arch/um/kernel/skas/include/mode-skas.h create mode 100644 arch/um/kernel/skas/include/mode_kern-skas.h create mode 100644 arch/um/kernel/skas/include/proc_mm.h create mode 100644 arch/um/kernel/skas/include/skas.h create mode 100644 arch/um/kernel/skas/include/uaccess-skas.h create mode 100644 arch/um/kernel/skas/mem.c create mode 100644 arch/um/kernel/skas/mem_user.c create mode 100644 arch/um/kernel/skas/mmu.c create mode 100644 arch/um/kernel/skas/process.c create mode 100644 arch/um/kernel/skas/process_kern.c create mode 100644 arch/um/kernel/skas/syscall_kern.c create mode 100644 arch/um/kernel/skas/syscall_user.c create mode 100644 arch/um/kernel/skas/time.c create mode 100644 arch/um/kernel/skas/tlb.c create mode 100644 arch/um/kernel/skas/trap_user.c create mode 100644 arch/um/kernel/skas/uaccess.c create mode 100644 arch/um/kernel/skas/util/Makefile create mode 100644 arch/um/kernel/skas/util/mk_ptregs-i386.c create mode 100644 arch/um/kernel/skas/util/mk_ptregs-x86_64.c create mode 100644 arch/um/kernel/smp.c create mode 100644 arch/um/kernel/sys_call_table.c create mode 100644 arch/um/kernel/syscall_kern.c create mode 100644 arch/um/kernel/syscall_user.c create mode 100644 arch/um/kernel/sysrq.c create mode 100644 arch/um/kernel/tempfile.c create mode 100644 arch/um/kernel/time.c create mode 100644 arch/um/kernel/time_kern.c create mode 100644 arch/um/kernel/tlb.c create mode 100644 arch/um/kernel/trap_kern.c create mode 100644 arch/um/kernel/trap_user.c create mode 100644 arch/um/kernel/tt/Makefile create mode 100644 arch/um/kernel/tt/exec_kern.c create mode 100644 arch/um/kernel/tt/exec_user.c create mode 100644 arch/um/kernel/tt/gdb.c create mode 100644 arch/um/kernel/tt/gdb_kern.c create mode 100644 arch/um/kernel/tt/include/debug.h create mode 100644 arch/um/kernel/tt/include/mmu-tt.h create mode 100644 arch/um/kernel/tt/include/mode-tt.h create mode 100644 arch/um/kernel/tt/include/mode_kern-tt.h create mode 100644 arch/um/kernel/tt/include/tt.h create mode 100644 arch/um/kernel/tt/include/uaccess-tt.h create mode 100644 arch/um/kernel/tt/ksyms.c create mode 100644 arch/um/kernel/tt/mem.c create mode 100644 arch/um/kernel/tt/mem_user.c create mode 100644 arch/um/kernel/tt/process_kern.c create mode 100644 arch/um/kernel/tt/ptproxy/Makefile create mode 100644 arch/um/kernel/tt/ptproxy/proxy.c create mode 100644 arch/um/kernel/tt/ptproxy/ptproxy.h create mode 100644 arch/um/kernel/tt/ptproxy/ptrace.c create mode 100644 arch/um/kernel/tt/ptproxy/sysdep.c create mode 100644 arch/um/kernel/tt/ptproxy/sysdep.h create mode 100644 arch/um/kernel/tt/ptproxy/wait.c create mode 100644 arch/um/kernel/tt/ptproxy/wait.h create mode 100644 arch/um/kernel/tt/syscall_kern.c create mode 100644 arch/um/kernel/tt/syscall_user.c create mode 100644 arch/um/kernel/tt/time.c create mode 100644 arch/um/kernel/tt/tlb.c create mode 100644 arch/um/kernel/tt/tracer.c create mode 100644 arch/um/kernel/tt/trap_user.c create mode 100644 arch/um/kernel/tt/uaccess.c create mode 100644 arch/um/kernel/tt/uaccess_user.c create mode 100644 arch/um/kernel/tt/unmap.c create mode 100644 arch/um/kernel/tty_log.c create mode 100644 arch/um/kernel/uaccess_user.c create mode 100644 arch/um/kernel/um_arch.c create mode 100644 arch/um/kernel/umid.c create mode 100644 arch/um/kernel/uml.lds.S create mode 100644 arch/um/kernel/user_util.c create mode 100644 arch/um/os-Linux/Makefile create mode 100644 arch/um/os-Linux/drivers/Makefile create mode 100644 arch/um/os-Linux/drivers/etap.h create mode 100644 arch/um/os-Linux/drivers/ethertap_kern.c create mode 100644 arch/um/os-Linux/drivers/ethertap_user.c create mode 100644 arch/um/os-Linux/drivers/tuntap.h create mode 100644 arch/um/os-Linux/drivers/tuntap_kern.c create mode 100644 arch/um/os-Linux/drivers/tuntap_user.c create mode 100644 arch/um/os-Linux/elf_aux.c create mode 100644 arch/um/os-Linux/file.c create mode 100644 arch/um/os-Linux/include/file.h create mode 100644 arch/um/os-Linux/process.c create mode 100644 arch/um/os-Linux/signal.c create mode 100644 arch/um/os-Linux/sys-i386/Makefile create mode 100644 arch/um/os-Linux/sys-i386/registers.c create mode 100644 arch/um/os-Linux/sys-x86_64/Makefile create mode 100644 arch/um/os-Linux/sys-x86_64/registers.c create mode 100644 arch/um/os-Linux/time.c create mode 100644 arch/um/os-Linux/tty.c create mode 100644 arch/um/os-Linux/user_syms.c create mode 100644 arch/um/os-Linux/util/Makefile create mode 100644 arch/um/os-Linux/util/mk_user_constants.c create mode 100644 arch/um/scripts/Makefile.rules create mode 100644 arch/um/sys-i386/Makefile create mode 100644 arch/um/sys-i386/bugs.c create mode 100644 arch/um/sys-i386/checksum.S create mode 100644 arch/um/sys-i386/delay.c create mode 100644 arch/um/sys-i386/fault.c create mode 100644 arch/um/sys-i386/ksyms.c create mode 100644 arch/um/sys-i386/ldt.c create mode 100644 arch/um/sys-i386/ptrace.c create mode 100644 arch/um/sys-i386/ptrace_user.c create mode 100644 arch/um/sys-i386/sigcontext.c create mode 100644 arch/um/sys-i386/signal.c create mode 100644 arch/um/sys-i386/syscalls.c create mode 100644 arch/um/sys-i386/sysrq.c create mode 100644 arch/um/sys-i386/util/Makefile create mode 100644 arch/um/sys-i386/util/mk_sc.c create mode 100644 arch/um/sys-i386/util/mk_thread_kern.c create mode 100644 arch/um/sys-i386/util/mk_thread_user.c create mode 100644 arch/um/sys-ia64/Makefile create mode 100644 arch/um/sys-ppc/Makefile create mode 100644 arch/um/sys-ppc/misc.S create mode 100644 arch/um/sys-ppc/miscthings.c create mode 100644 arch/um/sys-ppc/ptrace.c create mode 100644 arch/um/sys-ppc/ptrace_user.c create mode 100644 arch/um/sys-ppc/sigcontext.c create mode 100644 arch/um/sys-ppc/sysrq.c create mode 100644 arch/um/sys-x86_64/Makefile create mode 100644 arch/um/sys-x86_64/bugs.c create mode 100644 arch/um/sys-x86_64/delay.c create mode 100644 arch/um/sys-x86_64/fault.c create mode 100644 arch/um/sys-x86_64/mem.c create mode 100644 arch/um/sys-x86_64/ptrace.c create mode 100644 arch/um/sys-x86_64/ptrace_user.c create mode 100644 arch/um/sys-x86_64/sigcontext.c create mode 100644 arch/um/sys-x86_64/signal.c create mode 100644 arch/um/sys-x86_64/syscalls.c create mode 100644 arch/um/sys-x86_64/sysrq.c create mode 100644 arch/um/sys-x86_64/util/Makefile create mode 100644 arch/um/sys-x86_64/util/mk_sc.c create mode 100644 arch/um/sys-x86_64/util/mk_thread_kern.c create mode 100644 arch/um/sys-x86_64/util/mk_thread_user.c create mode 100644 arch/um/util/Makefile create mode 100644 arch/um/util/mk_constants_kern.c create mode 100644 arch/um/util/mk_constants_user.c create mode 100644 arch/um/util/mk_task_kern.c create mode 100644 arch/um/util/mk_task_user.c create mode 100644 arch/v850/Kconfig create mode 100644 arch/v850/Kconfig.debug create mode 100644 arch/v850/Makefile create mode 100644 arch/v850/README create mode 100644 arch/v850/kernel/Makefile create mode 100644 arch/v850/kernel/anna-rom.ld create mode 100644 arch/v850/kernel/anna.c create mode 100644 arch/v850/kernel/anna.ld create mode 100644 arch/v850/kernel/as85ep1-rom.ld create mode 100644 arch/v850/kernel/as85ep1.c create mode 100644 arch/v850/kernel/as85ep1.ld create mode 100644 arch/v850/kernel/asm-consts.c create mode 100644 arch/v850/kernel/bug.c create mode 100644 arch/v850/kernel/entry.S create mode 100644 arch/v850/kernel/fpga85e2c.c create mode 100644 arch/v850/kernel/fpga85e2c.ld create mode 100644 arch/v850/kernel/gbus_int.c create mode 100644 arch/v850/kernel/head.S create mode 100644 arch/v850/kernel/highres_timer.c create mode 100644 arch/v850/kernel/init_task.c create mode 100644 arch/v850/kernel/intv.S create mode 100644 arch/v850/kernel/irq.c create mode 100644 arch/v850/kernel/ma.c create mode 100644 arch/v850/kernel/mach.c create mode 100644 arch/v850/kernel/mach.h create mode 100644 arch/v850/kernel/me2.c create mode 100644 arch/v850/kernel/memcons.c create mode 100644 arch/v850/kernel/module.c create mode 100644 arch/v850/kernel/process.c create mode 100644 arch/v850/kernel/procfs.c create mode 100644 arch/v850/kernel/ptrace.c create mode 100644 arch/v850/kernel/rte_cb.c create mode 100644 arch/v850/kernel/rte_cb_leds.c create mode 100644 arch/v850/kernel/rte_cb_multi.c create mode 100644 arch/v850/kernel/rte_ma1_cb-rom.ld create mode 100644 arch/v850/kernel/rte_ma1_cb.c create mode 100644 arch/v850/kernel/rte_ma1_cb.ld create mode 100644 arch/v850/kernel/rte_mb_a_pci.c create mode 100644 arch/v850/kernel/rte_me2_cb.c create mode 100644 arch/v850/kernel/rte_me2_cb.ld create mode 100644 arch/v850/kernel/rte_nb85e_cb-multi.ld create mode 100644 arch/v850/kernel/rte_nb85e_cb.c create mode 100644 arch/v850/kernel/rte_nb85e_cb.ld create mode 100644 arch/v850/kernel/semaphore.c create mode 100644 arch/v850/kernel/setup.c create mode 100644 arch/v850/kernel/signal.c create mode 100644 arch/v850/kernel/sim.c create mode 100644 arch/v850/kernel/sim.ld create mode 100644 arch/v850/kernel/sim85e2.c create mode 100644 arch/v850/kernel/sim85e2.ld create mode 100644 arch/v850/kernel/simcons.c create mode 100644 arch/v850/kernel/syscalls.c create mode 100644 arch/v850/kernel/teg.c create mode 100644 arch/v850/kernel/time.c create mode 100644 arch/v850/kernel/v850_ksyms.c create mode 100644 arch/v850/kernel/v850e2_cache.c create mode 100644 arch/v850/kernel/v850e_cache.c create mode 100644 arch/v850/kernel/v850e_intc.c create mode 100644 arch/v850/kernel/v850e_timer_d.c create mode 100644 arch/v850/kernel/v850e_utils.c create mode 100644 arch/v850/kernel/vmlinux.lds.S create mode 100644 arch/v850/lib/Makefile create mode 100644 arch/v850/lib/ashldi3.c create mode 100644 arch/v850/lib/ashrdi3.c create mode 100644 arch/v850/lib/checksum.c create mode 100644 arch/v850/lib/lshrdi3.c create mode 100644 arch/v850/lib/memcpy.c create mode 100644 arch/v850/lib/memset.c create mode 100644 arch/v850/lib/muldi3.c create mode 100644 arch/v850/lib/negdi2.c create mode 100644 arch/x86_64/Kconfig create mode 100644 arch/x86_64/Kconfig.debug create mode 100644 arch/x86_64/Makefile create mode 100644 arch/x86_64/boot/Makefile create mode 100644 arch/x86_64/boot/bootsect.S create mode 100644 arch/x86_64/boot/compressed/Makefile create mode 100644 arch/x86_64/boot/compressed/head.S create mode 100644 arch/x86_64/boot/compressed/misc.c create mode 100644 arch/x86_64/boot/compressed/miscsetup.h create mode 100644 arch/x86_64/boot/compressed/vmlinux.scr create mode 100644 arch/x86_64/boot/install.sh create mode 100644 arch/x86_64/boot/mtools.conf.in create mode 100644 arch/x86_64/boot/setup.S create mode 100644 arch/x86_64/boot/tools/build.c create mode 100644 arch/x86_64/boot/video.S create mode 100644 arch/x86_64/defconfig create mode 100644 arch/x86_64/ia32/Makefile create mode 100644 arch/x86_64/ia32/fpu32.c create mode 100644 arch/x86_64/ia32/ia32_aout.c create mode 100644 arch/x86_64/ia32/ia32_binfmt.c create mode 100644 arch/x86_64/ia32/ia32_ioctl.c create mode 100644 arch/x86_64/ia32/ia32_signal.c create mode 100644 arch/x86_64/ia32/ia32entry.S create mode 100644 arch/x86_64/ia32/ipc32.c create mode 100644 arch/x86_64/ia32/ptrace32.c create mode 100644 arch/x86_64/ia32/sys_ia32.c create mode 100644 arch/x86_64/ia32/syscall32.c create mode 100644 arch/x86_64/ia32/tls32.c create mode 100644 arch/x86_64/ia32/vsyscall-sigreturn.S create mode 100644 arch/x86_64/ia32/vsyscall-syscall.S create mode 100644 arch/x86_64/ia32/vsyscall-sysenter.S create mode 100644 arch/x86_64/ia32/vsyscall.lds create mode 100644 arch/x86_64/kernel/Makefile create mode 100644 arch/x86_64/kernel/acpi/Makefile create mode 100644 arch/x86_64/kernel/acpi/sleep.c create mode 100644 arch/x86_64/kernel/acpi/wakeup.S create mode 100644 arch/x86_64/kernel/aperture.c create mode 100644 arch/x86_64/kernel/apic.c create mode 100644 arch/x86_64/kernel/asm-offsets.c create mode 100644 arch/x86_64/kernel/cpufreq/Kconfig create mode 100644 arch/x86_64/kernel/cpufreq/Makefile create mode 100644 arch/x86_64/kernel/e820.c create mode 100644 arch/x86_64/kernel/early_printk.c create mode 100644 arch/x86_64/kernel/entry.S create mode 100644 arch/x86_64/kernel/genapic.c create mode 100644 arch/x86_64/kernel/genapic_cluster.c create mode 100644 arch/x86_64/kernel/genapic_flat.c create mode 100644 arch/x86_64/kernel/head.S create mode 100644 arch/x86_64/kernel/head64.c create mode 100644 arch/x86_64/kernel/i387.c create mode 100644 arch/x86_64/kernel/i8259.c create mode 100644 arch/x86_64/kernel/init_task.c create mode 100644 arch/x86_64/kernel/io_apic.c create mode 100644 arch/x86_64/kernel/ioport.c create mode 100644 arch/x86_64/kernel/irq.c create mode 100644 arch/x86_64/kernel/kprobes.c create mode 100644 arch/x86_64/kernel/ldt.c create mode 100644 arch/x86_64/kernel/mce.c create mode 100644 arch/x86_64/kernel/mce_intel.c create mode 100644 arch/x86_64/kernel/module.c create mode 100644 arch/x86_64/kernel/mpparse.c create mode 100644 arch/x86_64/kernel/msr.c create mode 100644 arch/x86_64/kernel/nmi.c create mode 100644 arch/x86_64/kernel/pci-dma.c create mode 100644 arch/x86_64/kernel/pci-gart.c create mode 100644 arch/x86_64/kernel/pci-nommu.c create mode 100644 arch/x86_64/kernel/process.c create mode 100644 arch/x86_64/kernel/ptrace.c create mode 100644 arch/x86_64/kernel/reboot.c create mode 100644 arch/x86_64/kernel/semaphore.c create mode 100644 arch/x86_64/kernel/setup.c create mode 100644 arch/x86_64/kernel/setup64.c create mode 100644 arch/x86_64/kernel/signal.c create mode 100644 arch/x86_64/kernel/smp.c create mode 100644 arch/x86_64/kernel/smpboot.c create mode 100644 arch/x86_64/kernel/suspend.c create mode 100644 arch/x86_64/kernel/suspend_asm.S create mode 100644 arch/x86_64/kernel/sys_x86_64.c create mode 100644 arch/x86_64/kernel/syscall.c create mode 100644 arch/x86_64/kernel/time.c create mode 100644 arch/x86_64/kernel/trampoline.S create mode 100644 arch/x86_64/kernel/traps.c create mode 100644 arch/x86_64/kernel/vmlinux.lds.S create mode 100644 arch/x86_64/kernel/vsyscall.c create mode 100644 arch/x86_64/kernel/x8664_ksyms.c create mode 100644 arch/x86_64/lib/Makefile create mode 100644 arch/x86_64/lib/bitops.c create mode 100644 arch/x86_64/lib/bitstr.c create mode 100644 arch/x86_64/lib/clear_page.S create mode 100644 arch/x86_64/lib/copy_page.S create mode 100644 arch/x86_64/lib/copy_user.S create mode 100644 arch/x86_64/lib/csum-copy.S create mode 100644 arch/x86_64/lib/csum-partial.c create mode 100644 arch/x86_64/lib/csum-wrappers.c create mode 100644 arch/x86_64/lib/dec_and_lock.c create mode 100644 arch/x86_64/lib/delay.c create mode 100644 arch/x86_64/lib/getuser.S create mode 100644 arch/x86_64/lib/io.c create mode 100644 arch/x86_64/lib/memcpy.S create mode 100644 arch/x86_64/lib/memmove.c create mode 100644 arch/x86_64/lib/memset.S create mode 100644 arch/x86_64/lib/putuser.S create mode 100644 arch/x86_64/lib/thunk.S create mode 100644 arch/x86_64/lib/usercopy.c create mode 100644 arch/x86_64/mm/Makefile create mode 100644 arch/x86_64/mm/extable.c create mode 100644 arch/x86_64/mm/fault.c create mode 100644 arch/x86_64/mm/init.c create mode 100644 arch/x86_64/mm/ioremap.c create mode 100644 arch/x86_64/mm/k8topology.c create mode 100644 arch/x86_64/mm/numa.c create mode 100644 arch/x86_64/mm/pageattr.c create mode 100644 arch/x86_64/mm/srat.c create mode 100644 arch/x86_64/oprofile/Kconfig create mode 100644 arch/x86_64/oprofile/Makefile create mode 100644 arch/x86_64/pci/Makefile create mode 100644 arch/x86_64/pci/Makefile-BUS create mode 100644 arch/x86_64/pci/k8-bus.c create mode 100644 arch/x86_64/pci/mmconfig.c create mode 100644 crypto/Kconfig create mode 100644 crypto/Makefile create mode 100644 crypto/aes.c create mode 100644 crypto/anubis.c create mode 100644 crypto/api.c create mode 100644 crypto/arc4.c create mode 100644 crypto/blowfish.c create mode 100644 crypto/cast5.c create mode 100644 crypto/cast6.c create mode 100644 crypto/cipher.c create mode 100644 crypto/compress.c create mode 100644 crypto/crc32c.c create mode 100644 crypto/crypto_null.c create mode 100644 crypto/deflate.c create mode 100644 crypto/des.c create mode 100644 crypto/digest.c create mode 100644 crypto/hmac.c create mode 100644 crypto/internal.h create mode 100644 crypto/khazad.c create mode 100644 crypto/md4.c create mode 100644 crypto/md5.c create mode 100644 crypto/michael_mic.c create mode 100644 crypto/proc.c create mode 100644 crypto/scatterwalk.c create mode 100644 crypto/scatterwalk.h create mode 100644 crypto/serpent.c create mode 100644 crypto/sha1.c create mode 100644 crypto/sha256.c create mode 100644 crypto/sha512.c create mode 100644 crypto/tcrypt.c create mode 100644 crypto/tcrypt.h create mode 100644 crypto/tea.c create mode 100644 crypto/tgr192.c create mode 100644 crypto/twofish.c create mode 100644 crypto/wp512.c create mode 100644 drivers/Kconfig create mode 100644 drivers/Makefile create mode 100644 drivers/acorn/README create mode 100644 drivers/acorn/block/Kconfig create mode 100644 drivers/acorn/block/Makefile create mode 100644 drivers/acorn/block/fd1772.c create mode 100644 drivers/acorn/block/fd1772dma.S create mode 100644 drivers/acorn/block/mfm.S create mode 100644 drivers/acorn/block/mfmhd.c create mode 100644 drivers/acorn/char/Makefile create mode 100644 drivers/acorn/char/defkeymap-l7200.c create mode 100644 drivers/acorn/char/i2c.c create mode 100644 drivers/acorn/char/pcf8583.c create mode 100644 drivers/acorn/char/pcf8583.h create mode 100644 drivers/acpi/Kconfig create mode 100644 drivers/acpi/Makefile create mode 100644 drivers/acpi/ac.c create mode 100644 drivers/acpi/acpi_memhotplug.c create mode 100644 drivers/acpi/asus_acpi.c create mode 100644 drivers/acpi/battery.c create mode 100644 drivers/acpi/blacklist.c create mode 100644 drivers/acpi/bus.c create mode 100644 drivers/acpi/button.c create mode 100644 drivers/acpi/container.c create mode 100644 drivers/acpi/debug.c create mode 100644 drivers/acpi/dispatcher/Makefile create mode 100644 drivers/acpi/dispatcher/dsfield.c create mode 100644 drivers/acpi/dispatcher/dsinit.c create mode 100644 drivers/acpi/dispatcher/dsmethod.c create mode 100644 drivers/acpi/dispatcher/dsmthdat.c create mode 100644 drivers/acpi/dispatcher/dsobject.c create mode 100644 drivers/acpi/dispatcher/dsopcode.c create mode 100644 drivers/acpi/dispatcher/dsutils.c create mode 100644 drivers/acpi/dispatcher/dswexec.c create mode 100644 drivers/acpi/dispatcher/dswload.c create mode 100644 drivers/acpi/dispatcher/dswscope.c create mode 100644 drivers/acpi/dispatcher/dswstate.c create mode 100644 drivers/acpi/ec.c create mode 100644 drivers/acpi/event.c create mode 100644 drivers/acpi/events/Makefile create mode 100644 drivers/acpi/events/evevent.c create mode 100644 drivers/acpi/events/evgpe.c create mode 100644 drivers/acpi/events/evgpeblk.c create mode 100644 drivers/acpi/events/evmisc.c create mode 100644 drivers/acpi/events/evregion.c create mode 100644 drivers/acpi/events/evrgnini.c create mode 100644 drivers/acpi/events/evsci.c create mode 100644 drivers/acpi/events/evxface.c create mode 100644 drivers/acpi/events/evxfevnt.c create mode 100644 drivers/acpi/events/evxfregn.c create mode 100644 drivers/acpi/executer/Makefile create mode 100644 drivers/acpi/executer/exconfig.c create mode 100644 drivers/acpi/executer/exconvrt.c create mode 100644 drivers/acpi/executer/excreate.c create mode 100644 drivers/acpi/executer/exdump.c create mode 100644 drivers/acpi/executer/exfield.c create mode 100644 drivers/acpi/executer/exfldio.c create mode 100644 drivers/acpi/executer/exmisc.c create mode 100644 drivers/acpi/executer/exmutex.c create mode 100644 drivers/acpi/executer/exnames.c create mode 100644 drivers/acpi/executer/exoparg1.c create mode 100644 drivers/acpi/executer/exoparg2.c create mode 100644 drivers/acpi/executer/exoparg3.c create mode 100644 drivers/acpi/executer/exoparg6.c create mode 100644 drivers/acpi/executer/exprep.c create mode 100644 drivers/acpi/executer/exregion.c create mode 100644 drivers/acpi/executer/exresnte.c create mode 100644 drivers/acpi/executer/exresolv.c create mode 100644 drivers/acpi/executer/exresop.c create mode 100644 drivers/acpi/executer/exstore.c create mode 100644 drivers/acpi/executer/exstoren.c create mode 100644 drivers/acpi/executer/exstorob.c create mode 100644 drivers/acpi/executer/exsystem.c create mode 100644 drivers/acpi/executer/exutils.c create mode 100644 drivers/acpi/fan.c create mode 100644 drivers/acpi/hardware/Makefile create mode 100644 drivers/acpi/hardware/hwacpi.c create mode 100644 drivers/acpi/hardware/hwgpe.c create mode 100644 drivers/acpi/hardware/hwregs.c create mode 100644 drivers/acpi/hardware/hwsleep.c create mode 100644 drivers/acpi/hardware/hwtimer.c create mode 100644 drivers/acpi/ibm_acpi.c create mode 100644 drivers/acpi/motherboard.c create mode 100644 drivers/acpi/namespace/Makefile create mode 100644 drivers/acpi/namespace/nsaccess.c create mode 100644 drivers/acpi/namespace/nsalloc.c create mode 100644 drivers/acpi/namespace/nsdump.c create mode 100644 drivers/acpi/namespace/nsdumpdv.c create mode 100644 drivers/acpi/namespace/nseval.c create mode 100644 drivers/acpi/namespace/nsinit.c create mode 100644 drivers/acpi/namespace/nsload.c create mode 100644 drivers/acpi/namespace/nsnames.c create mode 100644 drivers/acpi/namespace/nsobject.c create mode 100644 drivers/acpi/namespace/nsparse.c create mode 100644 drivers/acpi/namespace/nssearch.c create mode 100644 drivers/acpi/namespace/nsutils.c create mode 100644 drivers/acpi/namespace/nswalk.c create mode 100644 drivers/acpi/namespace/nsxfeval.c create mode 100644 drivers/acpi/namespace/nsxfname.c create mode 100644 drivers/acpi/namespace/nsxfobj.c create mode 100644 drivers/acpi/numa.c create mode 100644 drivers/acpi/osl.c create mode 100644 drivers/acpi/parser/Makefile create mode 100644 drivers/acpi/parser/psargs.c create mode 100644 drivers/acpi/parser/psopcode.c create mode 100644 drivers/acpi/parser/psparse.c create mode 100644 drivers/acpi/parser/psscope.c create mode 100644 drivers/acpi/parser/pstree.c create mode 100644 drivers/acpi/parser/psutils.c create mode 100644 drivers/acpi/parser/pswalk.c create mode 100644 drivers/acpi/parser/psxface.c create mode 100644 drivers/acpi/pci_bind.c create mode 100644 drivers/acpi/pci_irq.c create mode 100644 drivers/acpi/pci_link.c create mode 100644 drivers/acpi/pci_root.c create mode 100644 drivers/acpi/power.c create mode 100644 drivers/acpi/processor_core.c create mode 100644 drivers/acpi/processor_idle.c create mode 100644 drivers/acpi/processor_perflib.c create mode 100644 drivers/acpi/processor_thermal.c create mode 100644 drivers/acpi/processor_throttling.c create mode 100644 drivers/acpi/resources/Makefile create mode 100644 drivers/acpi/resources/rsaddr.c create mode 100644 drivers/acpi/resources/rscalc.c create mode 100644 drivers/acpi/resources/rscreate.c create mode 100644 drivers/acpi/resources/rsdump.c create mode 100644 drivers/acpi/resources/rsio.c create mode 100644 drivers/acpi/resources/rsirq.c create mode 100644 drivers/acpi/resources/rslist.c create mode 100644 drivers/acpi/resources/rsmemory.c create mode 100644 drivers/acpi/resources/rsmisc.c create mode 100644 drivers/acpi/resources/rsutils.c create mode 100644 drivers/acpi/resources/rsxface.c create mode 100644 drivers/acpi/scan.c create mode 100644 drivers/acpi/sleep/Makefile create mode 100644 drivers/acpi/sleep/main.c create mode 100644 drivers/acpi/sleep/poweroff.c create mode 100644 drivers/acpi/sleep/proc.c create mode 100644 drivers/acpi/sleep/sleep.h create mode 100644 drivers/acpi/sleep/wakeup.c create mode 100644 drivers/acpi/system.c create mode 100644 drivers/acpi/tables.c create mode 100644 drivers/acpi/tables/Makefile create mode 100644 drivers/acpi/tables/tbconvrt.c create mode 100644 drivers/acpi/tables/tbget.c create mode 100644 drivers/acpi/tables/tbgetall.c create mode 100644 drivers/acpi/tables/tbinstal.c create mode 100644 drivers/acpi/tables/tbrsdt.c create mode 100644 drivers/acpi/tables/tbutils.c create mode 100644 drivers/acpi/tables/tbxface.c create mode 100644 drivers/acpi/tables/tbxfroot.c create mode 100644 drivers/acpi/thermal.c create mode 100644 drivers/acpi/toshiba_acpi.c create mode 100644 drivers/acpi/utilities/Makefile create mode 100644 drivers/acpi/utilities/utalloc.c create mode 100644 drivers/acpi/utilities/utcopy.c create mode 100644 drivers/acpi/utilities/utdebug.c create mode 100644 drivers/acpi/utilities/utdelete.c create mode 100644 drivers/acpi/utilities/uteval.c create mode 100644 drivers/acpi/utilities/utglobal.c create mode 100644 drivers/acpi/utilities/utinit.c create mode 100644 drivers/acpi/utilities/utmath.c create mode 100644 drivers/acpi/utilities/utmisc.c create mode 100644 drivers/acpi/utilities/utobject.c create mode 100644 drivers/acpi/utilities/utxface.c create mode 100644 drivers/acpi/utils.c create mode 100644 drivers/acpi/video.c create mode 100644 drivers/atm/Kconfig create mode 100644 drivers/atm/Makefile create mode 100644 drivers/atm/ambassador.c create mode 100644 drivers/atm/ambassador.h create mode 100644 drivers/atm/atmdev_init.c create mode 100644 drivers/atm/atmsar11.data create mode 100644 drivers/atm/atmsar11.regions create mode 100644 drivers/atm/atmsar11.start create mode 100644 drivers/atm/atmtcp.c create mode 100644 drivers/atm/eni.c create mode 100644 drivers/atm/eni.h create mode 100644 drivers/atm/firestream.c create mode 100644 drivers/atm/firestream.h create mode 100644 drivers/atm/fore200e.c create mode 100644 drivers/atm/fore200e.h create mode 100644 drivers/atm/fore200e_firmware_copyright create mode 100644 drivers/atm/fore200e_mkfirm.c create mode 100644 drivers/atm/he.c create mode 100644 drivers/atm/he.h create mode 100644 drivers/atm/horizon.c create mode 100644 drivers/atm/horizon.h create mode 100644 drivers/atm/idt77105.c create mode 100644 drivers/atm/idt77105.h create mode 100644 drivers/atm/idt77252.c create mode 100644 drivers/atm/idt77252.h create mode 100644 drivers/atm/idt77252_tables.h create mode 100644 drivers/atm/iphase.c create mode 100644 drivers/atm/iphase.h create mode 100644 drivers/atm/lanai.c create mode 100644 drivers/atm/midway.h create mode 100644 drivers/atm/nicstar.c create mode 100644 drivers/atm/nicstar.h create mode 100644 drivers/atm/nicstarmac.c create mode 100644 drivers/atm/nicstarmac.copyright create mode 100644 drivers/atm/pca200e.data create mode 100644 drivers/atm/pca200e_ecd.data create mode 100644 drivers/atm/sba200e_ecd.data create mode 100644 drivers/atm/suni.c create mode 100644 drivers/atm/suni.h create mode 100644 drivers/atm/tonga.h create mode 100644 drivers/atm/uPD98401.h create mode 100644 drivers/atm/uPD98402.c create mode 100644 drivers/atm/uPD98402.h create mode 100644 drivers/atm/zatm.c create mode 100644 drivers/atm/zatm.h create mode 100644 drivers/atm/zeprom.h create mode 100644 drivers/base/Kconfig create mode 100644 drivers/base/Makefile create mode 100644 drivers/base/attribute_container.c create mode 100644 drivers/base/base.h create mode 100644 drivers/base/bus.c create mode 100644 drivers/base/class.c create mode 100644 drivers/base/class_simple.c create mode 100644 drivers/base/core.c create mode 100644 drivers/base/cpu.c create mode 100644 drivers/base/dmapool.c create mode 100644 drivers/base/driver.c create mode 100644 drivers/base/firmware.c create mode 100644 drivers/base/firmware_class.c create mode 100644 drivers/base/init.c create mode 100644 drivers/base/interface.c create mode 100644 drivers/base/map.c create mode 100644 drivers/base/node.c create mode 100644 drivers/base/platform.c create mode 100644 drivers/base/power/Makefile create mode 100644 drivers/base/power/main.c create mode 100644 drivers/base/power/power.h create mode 100644 drivers/base/power/resume.c create mode 100644 drivers/base/power/runtime.c create mode 100644 drivers/base/power/shutdown.c create mode 100644 drivers/base/power/suspend.c create mode 100644 drivers/base/power/sysfs.c create mode 100644 drivers/base/sys.c create mode 100644 drivers/base/transport_class.c create mode 100644 drivers/block/DAC960.c create mode 100644 drivers/block/DAC960.h create mode 100644 drivers/block/Kconfig create mode 100644 drivers/block/Kconfig.iosched create mode 100644 drivers/block/Makefile create mode 100644 drivers/block/acsi.c create mode 100644 drivers/block/acsi_slm.c create mode 100644 drivers/block/amiflop.c create mode 100644 drivers/block/aoe/Makefile create mode 100644 drivers/block/aoe/aoe.h create mode 100644 drivers/block/aoe/aoeblk.c create mode 100644 drivers/block/aoe/aoechr.c create mode 100644 drivers/block/aoe/aoecmd.c create mode 100644 drivers/block/aoe/aoedev.c create mode 100644 drivers/block/aoe/aoemain.c create mode 100644 drivers/block/aoe/aoenet.c create mode 100644 drivers/block/as-iosched.c create mode 100644 drivers/block/ataflop.c create mode 100644 drivers/block/cciss.c create mode 100644 drivers/block/cciss.h create mode 100644 drivers/block/cciss_cmd.h create mode 100644 drivers/block/cciss_scsi.c create mode 100644 drivers/block/cciss_scsi.h create mode 100644 drivers/block/cfq-iosched.c create mode 100644 drivers/block/cpqarray.c create mode 100644 drivers/block/cpqarray.h create mode 100644 drivers/block/cryptoloop.c create mode 100644 drivers/block/deadline-iosched.c create mode 100644 drivers/block/elevator.c create mode 100644 drivers/block/floppy.c create mode 100644 drivers/block/genhd.c create mode 100644 drivers/block/ida_cmd.h create mode 100644 drivers/block/ida_ioctl.h create mode 100644 drivers/block/ioctl.c create mode 100644 drivers/block/ll_rw_blk.c create mode 100644 drivers/block/loop.c create mode 100644 drivers/block/nbd.c create mode 100644 drivers/block/noop-iosched.c create mode 100644 drivers/block/paride/Kconfig create mode 100644 drivers/block/paride/Makefile create mode 100644 drivers/block/paride/Transition-notes create mode 100644 drivers/block/paride/aten.c create mode 100644 drivers/block/paride/bpck.c create mode 100644 drivers/block/paride/bpck6.c create mode 100644 drivers/block/paride/comm.c create mode 100644 drivers/block/paride/dstr.c create mode 100644 drivers/block/paride/epat.c create mode 100644 drivers/block/paride/epia.c create mode 100644 drivers/block/paride/fit2.c create mode 100644 drivers/block/paride/fit3.c create mode 100644 drivers/block/paride/friq.c create mode 100644 drivers/block/paride/frpw.c create mode 100644 drivers/block/paride/jumbo create mode 100644 drivers/block/paride/kbic.c create mode 100644 drivers/block/paride/ktti.c create mode 100644 drivers/block/paride/mkd create mode 100644 drivers/block/paride/on20.c create mode 100644 drivers/block/paride/on26.c create mode 100644 drivers/block/paride/paride.c create mode 100644 drivers/block/paride/paride.h create mode 100644 drivers/block/paride/pcd.c create mode 100644 drivers/block/paride/pd.c create mode 100644 drivers/block/paride/pf.c create mode 100644 drivers/block/paride/pg.c create mode 100644 drivers/block/paride/ppc6lnx.c create mode 100644 drivers/block/paride/pseudo.h create mode 100644 drivers/block/paride/pt.c create mode 100644 drivers/block/pktcdvd.c create mode 100644 drivers/block/ps2esdi.c create mode 100644 drivers/block/rd.c create mode 100644 drivers/block/scsi_ioctl.c create mode 100644 drivers/block/smart1,2.h create mode 100644 drivers/block/swim3.c create mode 100644 drivers/block/swim_iop.c create mode 100644 drivers/block/sx8.c create mode 100644 drivers/block/ub.c create mode 100644 drivers/block/umem.c create mode 100644 drivers/block/viodasd.c create mode 100644 drivers/block/xd.c create mode 100644 drivers/block/xd.h create mode 100644 drivers/block/z2ram.c create mode 100644 drivers/bluetooth/Kconfig create mode 100644 drivers/bluetooth/Makefile create mode 100644 drivers/bluetooth/bcm203x.c create mode 100644 drivers/bluetooth/bfusb.c create mode 100644 drivers/bluetooth/bluecard_cs.c create mode 100644 drivers/bluetooth/bpa10x.c create mode 100644 drivers/bluetooth/bt3c_cs.c create mode 100644 drivers/bluetooth/btuart_cs.c create mode 100644 drivers/bluetooth/dtl1_cs.c create mode 100644 drivers/bluetooth/hci_bcsp.c create mode 100644 drivers/bluetooth/hci_bcsp.h create mode 100644 drivers/bluetooth/hci_h4.c create mode 100644 drivers/bluetooth/hci_h4.h create mode 100644 drivers/bluetooth/hci_ldisc.c create mode 100644 drivers/bluetooth/hci_uart.h create mode 100644 drivers/bluetooth/hci_usb.c create mode 100644 drivers/bluetooth/hci_usb.h create mode 100644 drivers/bluetooth/hci_vhci.c create mode 100644 drivers/bluetooth/hci_vhci.h create mode 100644 drivers/cdrom/Kconfig create mode 100644 drivers/cdrom/Makefile create mode 100644 drivers/cdrom/aztcd.c create mode 100644 drivers/cdrom/aztcd.h create mode 100644 drivers/cdrom/cdrom.c create mode 100644 drivers/cdrom/cdu31a.c create mode 100644 drivers/cdrom/cdu31a.h create mode 100644 drivers/cdrom/cm206.c create mode 100644 drivers/cdrom/cm206.h create mode 100644 drivers/cdrom/gscd.c create mode 100644 drivers/cdrom/gscd.h create mode 100644 drivers/cdrom/isp16.c create mode 100644 drivers/cdrom/isp16.h create mode 100644 drivers/cdrom/mcdx.c create mode 100644 drivers/cdrom/mcdx.h create mode 100644 drivers/cdrom/optcd.c create mode 100644 drivers/cdrom/optcd.h create mode 100644 drivers/cdrom/sbpcd.c create mode 100644 drivers/cdrom/sbpcd.h create mode 100644 drivers/cdrom/sjcd.c create mode 100644 drivers/cdrom/sjcd.h create mode 100644 drivers/cdrom/sonycd535.c create mode 100644 drivers/cdrom/sonycd535.h create mode 100644 drivers/cdrom/viocd.c create mode 100644 drivers/char/ChangeLog create mode 100644 drivers/char/Kconfig create mode 100644 drivers/char/Makefile create mode 100644 drivers/char/agp/Kconfig create mode 100644 drivers/char/agp/Makefile create mode 100644 drivers/char/agp/agp.h create mode 100644 drivers/char/agp/ali-agp.c create mode 100644 drivers/char/agp/alpha-agp.c create mode 100644 drivers/char/agp/amd-k7-agp.c create mode 100644 drivers/char/agp/amd64-agp.c create mode 100644 drivers/char/agp/ati-agp.c create mode 100644 drivers/char/agp/backend.c create mode 100644 drivers/char/agp/efficeon-agp.c create mode 100644 drivers/char/agp/frontend.c create mode 100644 drivers/char/agp/generic.c create mode 100644 drivers/char/agp/hp-agp.c create mode 100644 drivers/char/agp/i460-agp.c create mode 100644 drivers/char/agp/intel-agp.c create mode 100644 drivers/char/agp/isoch.c create mode 100644 drivers/char/agp/nvidia-agp.c create mode 100644 drivers/char/agp/sgi-agp.c create mode 100644 drivers/char/agp/sis-agp.c create mode 100644 drivers/char/agp/sworks-agp.c create mode 100644 drivers/char/agp/uninorth-agp.c create mode 100644 drivers/char/agp/via-agp.c create mode 100644 drivers/char/amiserial.c create mode 100644 drivers/char/applicom.c create mode 100644 drivers/char/applicom.h create mode 100644 drivers/char/cd1865.h create mode 100644 drivers/char/consolemap.c create mode 100644 drivers/char/cp437.uni create mode 100644 drivers/char/cyclades.c create mode 100644 drivers/char/decserial.c create mode 100644 drivers/char/defkeymap.c_shipped create mode 100644 drivers/char/defkeymap.map create mode 100644 drivers/char/digi.h create mode 100644 drivers/char/digi1.h create mode 100644 drivers/char/digiFep1.h create mode 100644 drivers/char/digiPCI.h create mode 100644 drivers/char/drm/Kconfig create mode 100644 drivers/char/drm/Makefile create mode 100644 drivers/char/drm/README.drm create mode 100644 drivers/char/drm/ati_pcigart.c create mode 100644 drivers/char/drm/drm.h create mode 100644 drivers/char/drm/drmP.h create mode 100644 drivers/char/drm/drm_agpsupport.c create mode 100644 drivers/char/drm/drm_auth.c create mode 100644 drivers/char/drm/drm_bufs.c create mode 100644 drivers/char/drm/drm_context.c create mode 100644 drivers/char/drm/drm_core.h create mode 100644 drivers/char/drm/drm_dma.c create mode 100644 drivers/char/drm/drm_drawable.c create mode 100644 drivers/char/drm/drm_drv.c create mode 100644 drivers/char/drm/drm_fops.c create mode 100644 drivers/char/drm/drm_init.c create mode 100644 drivers/char/drm/drm_ioctl.c create mode 100644 drivers/char/drm/drm_irq.c create mode 100644 drivers/char/drm/drm_lock.c create mode 100644 drivers/char/drm/drm_memory.c create mode 100644 drivers/char/drm/drm_memory.h create mode 100644 drivers/char/drm/drm_memory_debug.h create mode 100644 drivers/char/drm/drm_os_linux.h create mode 100644 drivers/char/drm/drm_pci.c create mode 100644 drivers/char/drm/drm_pciids.h create mode 100644 drivers/char/drm/drm_proc.c create mode 100644 drivers/char/drm/drm_sarea.h create mode 100644 drivers/char/drm/drm_scatter.c create mode 100644 drivers/char/drm/drm_stub.c create mode 100644 drivers/char/drm/drm_sysfs.c create mode 100644 drivers/char/drm/drm_vm.c create mode 100644 drivers/char/drm/ffb_context.c create mode 100644 drivers/char/drm/ffb_drv.c create mode 100644 drivers/char/drm/ffb_drv.h create mode 100644 drivers/char/drm/gamma_context.h create mode 100644 drivers/char/drm/gamma_dma.c create mode 100644 drivers/char/drm/gamma_drm.h create mode 100644 drivers/char/drm/gamma_drv.c create mode 100644 drivers/char/drm/gamma_drv.h create mode 100644 drivers/char/drm/gamma_lists.h create mode 100644 drivers/char/drm/gamma_lock.h create mode 100644 drivers/char/drm/gamma_old_dma.h create mode 100644 drivers/char/drm/i810_dma.c create mode 100644 drivers/char/drm/i810_drm.h create mode 100644 drivers/char/drm/i810_drv.c create mode 100644 drivers/char/drm/i810_drv.h create mode 100644 drivers/char/drm/i830_dma.c create mode 100644 drivers/char/drm/i830_drm.h create mode 100644 drivers/char/drm/i830_drv.c create mode 100644 drivers/char/drm/i830_drv.h create mode 100644 drivers/char/drm/i830_irq.c create mode 100644 drivers/char/drm/i915_dma.c create mode 100644 drivers/char/drm/i915_drm.h create mode 100644 drivers/char/drm/i915_drv.c create mode 100644 drivers/char/drm/i915_drv.h create mode 100644 drivers/char/drm/i915_irq.c create mode 100644 drivers/char/drm/i915_mem.c create mode 100644 drivers/char/drm/mga_dma.c create mode 100644 drivers/char/drm/mga_drm.h create mode 100644 drivers/char/drm/mga_drv.c create mode 100644 drivers/char/drm/mga_drv.h create mode 100644 drivers/char/drm/mga_irq.c create mode 100644 drivers/char/drm/mga_state.c create mode 100644 drivers/char/drm/mga_ucode.h create mode 100644 drivers/char/drm/mga_warp.c create mode 100644 drivers/char/drm/r128_cce.c create mode 100644 drivers/char/drm/r128_drm.h create mode 100644 drivers/char/drm/r128_drv.c create mode 100644 drivers/char/drm/r128_drv.h create mode 100644 drivers/char/drm/r128_irq.c create mode 100644 drivers/char/drm/r128_state.c create mode 100644 drivers/char/drm/radeon_cp.c create mode 100644 drivers/char/drm/radeon_drm.h create mode 100644 drivers/char/drm/radeon_drv.c create mode 100644 drivers/char/drm/radeon_drv.h create mode 100644 drivers/char/drm/radeon_irq.c create mode 100644 drivers/char/drm/radeon_mem.c create mode 100644 drivers/char/drm/radeon_state.c create mode 100644 drivers/char/drm/sis_drm.h create mode 100644 drivers/char/drm/sis_drv.c create mode 100644 drivers/char/drm/sis_drv.h create mode 100644 drivers/char/drm/sis_ds.c create mode 100644 drivers/char/drm/sis_ds.h create mode 100644 drivers/char/drm/sis_mm.c create mode 100644 drivers/char/drm/tdfx_drv.c create mode 100644 drivers/char/drm/tdfx_drv.h create mode 100644 drivers/char/ds1286.c create mode 100644 drivers/char/ds1302.c create mode 100644 drivers/char/ds1620.c create mode 100644 drivers/char/dsp56k.c create mode 100644 drivers/char/dtlk.c create mode 100644 drivers/char/ec3104_keyb.c create mode 100644 drivers/char/efirtc.c create mode 100644 drivers/char/epca.c create mode 100644 drivers/char/epca.h create mode 100644 drivers/char/epcaconfig.h create mode 100644 drivers/char/esp.c create mode 100644 drivers/char/ftape/Kconfig create mode 100644 drivers/char/ftape/Makefile create mode 100644 drivers/char/ftape/README.PCI create mode 100644 drivers/char/ftape/RELEASE-NOTES create mode 100644 drivers/char/ftape/compressor/Makefile create mode 100644 drivers/char/ftape/compressor/lzrw3.c create mode 100644 drivers/char/ftape/compressor/lzrw3.h create mode 100644 drivers/char/ftape/compressor/zftape-compress.c create mode 100644 drivers/char/ftape/compressor/zftape-compress.h create mode 100644 drivers/char/ftape/lowlevel/Makefile create mode 100644 drivers/char/ftape/lowlevel/fc-10.c create mode 100644 drivers/char/ftape/lowlevel/fc-10.h create mode 100644 drivers/char/ftape/lowlevel/fdc-io.c create mode 100644 drivers/char/ftape/lowlevel/fdc-io.h create mode 100644 drivers/char/ftape/lowlevel/fdc-isr.c create mode 100644 drivers/char/ftape/lowlevel/fdc-isr.h create mode 100644 drivers/char/ftape/lowlevel/ftape-bsm.c create mode 100644 drivers/char/ftape/lowlevel/ftape-bsm.h create mode 100644 drivers/char/ftape/lowlevel/ftape-buffer.c create mode 100644 drivers/char/ftape/lowlevel/ftape-buffer.h create mode 100644 drivers/char/ftape/lowlevel/ftape-calibr.c create mode 100644 drivers/char/ftape/lowlevel/ftape-calibr.h create mode 100644 drivers/char/ftape/lowlevel/ftape-ctl.c create mode 100644 drivers/char/ftape/lowlevel/ftape-ctl.h create mode 100644 drivers/char/ftape/lowlevel/ftape-ecc.c create mode 100644 drivers/char/ftape/lowlevel/ftape-ecc.h create mode 100644 drivers/char/ftape/lowlevel/ftape-format.c create mode 100644 drivers/char/ftape/lowlevel/ftape-format.h create mode 100644 drivers/char/ftape/lowlevel/ftape-init.c create mode 100644 drivers/char/ftape/lowlevel/ftape-init.h create mode 100644 drivers/char/ftape/lowlevel/ftape-io.c create mode 100644 drivers/char/ftape/lowlevel/ftape-io.h create mode 100644 drivers/char/ftape/lowlevel/ftape-proc.c create mode 100644 drivers/char/ftape/lowlevel/ftape-proc.h create mode 100644 drivers/char/ftape/lowlevel/ftape-read.c create mode 100644 drivers/char/ftape/lowlevel/ftape-read.h create mode 100644 drivers/char/ftape/lowlevel/ftape-rw.c create mode 100644 drivers/char/ftape/lowlevel/ftape-rw.h create mode 100644 drivers/char/ftape/lowlevel/ftape-setup.c create mode 100644 drivers/char/ftape/lowlevel/ftape-tracing.c create mode 100644 drivers/char/ftape/lowlevel/ftape-tracing.h create mode 100644 drivers/char/ftape/lowlevel/ftape-write.c create mode 100644 drivers/char/ftape/lowlevel/ftape-write.h create mode 100644 drivers/char/ftape/lowlevel/ftape_syms.c create mode 100644 drivers/char/ftape/zftape/Makefile create mode 100644 drivers/char/ftape/zftape/zftape-buffers.c create mode 100644 drivers/char/ftape/zftape/zftape-buffers.h create mode 100644 drivers/char/ftape/zftape/zftape-ctl.c create mode 100644 drivers/char/ftape/zftape/zftape-ctl.h create mode 100644 drivers/char/ftape/zftape/zftape-eof.c create mode 100644 drivers/char/ftape/zftape/zftape-eof.h create mode 100644 drivers/char/ftape/zftape/zftape-init.c create mode 100644 drivers/char/ftape/zftape/zftape-init.h create mode 100644 drivers/char/ftape/zftape/zftape-read.c create mode 100644 drivers/char/ftape/zftape/zftape-read.h create mode 100644 drivers/char/ftape/zftape/zftape-rw.c create mode 100644 drivers/char/ftape/zftape/zftape-rw.h create mode 100644 drivers/char/ftape/zftape/zftape-vtbl.c create mode 100644 drivers/char/ftape/zftape/zftape-vtbl.h create mode 100644 drivers/char/ftape/zftape/zftape-write.c create mode 100644 drivers/char/ftape/zftape/zftape-write.h create mode 100644 drivers/char/ftape/zftape/zftape_syms.c create mode 100644 drivers/char/generic_nvram.c create mode 100644 drivers/char/generic_serial.c create mode 100644 drivers/char/genrtc.c create mode 100644 drivers/char/hangcheck-timer.c create mode 100644 drivers/char/hpet.c create mode 100644 drivers/char/hvc_console.c create mode 100644 drivers/char/hvcs.c create mode 100644 drivers/char/hvsi.c create mode 100644 drivers/char/hw_random.c create mode 100644 drivers/char/i8k.c create mode 100644 drivers/char/ip2.c create mode 100644 drivers/char/ip2/fip_firm.h create mode 100644 drivers/char/ip2/i2cmd.c create mode 100644 drivers/char/ip2/i2cmd.h create mode 100644 drivers/char/ip2/i2ellis.c create mode 100644 drivers/char/ip2/i2ellis.h create mode 100644 drivers/char/ip2/i2hw.h create mode 100644 drivers/char/ip2/i2lib.c create mode 100644 drivers/char/ip2/i2lib.h create mode 100644 drivers/char/ip2/i2os.h create mode 100644 drivers/char/ip2/i2pack.h create mode 100644 drivers/char/ip2/ip2.h create mode 100644 drivers/char/ip2/ip2ioctl.h create mode 100644 drivers/char/ip2/ip2trace.h create mode 100644 drivers/char/ip2/ip2types.h create mode 100644 drivers/char/ip27-rtc.c create mode 100644 drivers/char/ip2main.c create mode 100644 drivers/char/ipmi/Kconfig create mode 100644 drivers/char/ipmi/Makefile create mode 100644 drivers/char/ipmi/ipmi_bt_sm.c create mode 100644 drivers/char/ipmi/ipmi_devintf.c create mode 100644 drivers/char/ipmi/ipmi_kcs_sm.c create mode 100644 drivers/char/ipmi/ipmi_msghandler.c create mode 100644 drivers/char/ipmi/ipmi_poweroff.c create mode 100644 drivers/char/ipmi/ipmi_si_intf.c create mode 100644 drivers/char/ipmi/ipmi_si_sm.h create mode 100644 drivers/char/ipmi/ipmi_smic_sm.c create mode 100644 drivers/char/ipmi/ipmi_watchdog.c create mode 100644 drivers/char/isicom.c create mode 100644 drivers/char/istallion.c create mode 100644 drivers/char/ite_gpio.c create mode 100644 drivers/char/keyboard.c create mode 100644 drivers/char/lcd.c create mode 100644 drivers/char/lcd.h create mode 100644 drivers/char/lp.c create mode 100644 drivers/char/mem.c create mode 100644 drivers/char/misc.c create mode 100644 drivers/char/mmtimer.c create mode 100644 drivers/char/moxa.c create mode 100644 drivers/char/mwave/3780i.c create mode 100644 drivers/char/mwave/3780i.h create mode 100644 drivers/char/mwave/Makefile create mode 100644 drivers/char/mwave/README create mode 100644 drivers/char/mwave/mwavedd.c create mode 100644 drivers/char/mwave/mwavedd.h create mode 100644 drivers/char/mwave/mwavepub.h create mode 100644 drivers/char/mwave/smapi.c create mode 100644 drivers/char/mwave/smapi.h create mode 100644 drivers/char/mwave/tp3780i.c create mode 100644 drivers/char/mwave/tp3780i.h create mode 100644 drivers/char/mxser.c create mode 100644 drivers/char/mxser.h create mode 100644 drivers/char/n_hdlc.c create mode 100644 drivers/char/n_r3964.c create mode 100644 drivers/char/n_tty.c create mode 100644 drivers/char/nvram.c create mode 100644 drivers/char/nwbutton.c create mode 100644 drivers/char/nwbutton.h create mode 100644 drivers/char/nwflash.c create mode 100644 drivers/char/pcmcia/Kconfig create mode 100644 drivers/char/pcmcia/Makefile create mode 100644 drivers/char/pcmcia/synclink_cs.c create mode 100644 drivers/char/ppdev.c create mode 100644 drivers/char/pty.c create mode 100644 drivers/char/qtronix.c create mode 100644 drivers/char/qtronixmap.c_shipped create mode 100644 drivers/char/qtronixmap.map create mode 100644 drivers/char/random.c create mode 100644 drivers/char/raw.c create mode 100644 drivers/char/rio/Makefile create mode 100644 drivers/char/rio/board.h create mode 100644 drivers/char/rio/bootpkt.h create mode 100644 drivers/char/rio/brates.h create mode 100644 drivers/char/rio/chan.h create mode 100644 drivers/char/rio/cirrus.h create mode 100644 drivers/char/rio/cmd.h create mode 100644 drivers/char/rio/cmdblk.h create mode 100644 drivers/char/rio/cmdpkt.h create mode 100644 drivers/char/rio/control.h create mode 100644 drivers/char/rio/daemon.h create mode 100644 drivers/char/rio/data.h create mode 100644 drivers/char/rio/debug.h create mode 100644 drivers/char/rio/defaults.h create mode 100644 drivers/char/rio/eisa.h create mode 100644 drivers/char/rio/enable.h create mode 100644 drivers/char/rio/error.h create mode 100644 drivers/char/rio/errors.h create mode 100644 drivers/char/rio/formpkt.h create mode 100644 drivers/char/rio/func.h create mode 100644 drivers/char/rio/host.h create mode 100644 drivers/char/rio/hosthw.h create mode 100644 drivers/char/rio/link.h create mode 100644 drivers/char/rio/linux_compat.h create mode 100644 drivers/char/rio/list.h create mode 100644 drivers/char/rio/lrt.h create mode 100644 drivers/char/rio/ltt.h create mode 100644 drivers/char/rio/lttwake.h create mode 100644 drivers/char/rio/map.h create mode 100644 drivers/char/rio/mca.h create mode 100644 drivers/char/rio/mesg.h create mode 100644 drivers/char/rio/param.h create mode 100644 drivers/char/rio/parmmap.h create mode 100644 drivers/char/rio/pci.h create mode 100644 drivers/char/rio/phb.h create mode 100644 drivers/char/rio/pkt.h create mode 100644 drivers/char/rio/poll.h create mode 100644 drivers/char/rio/port.h create mode 100644 drivers/char/rio/proto.h create mode 100644 drivers/char/rio/protsts.h create mode 100644 drivers/char/rio/qbuf.h create mode 100644 drivers/char/rio/rio.h create mode 100644 drivers/char/rio/rio_linux.c create mode 100644 drivers/char/rio/rio_linux.h create mode 100644 drivers/char/rio/rioboard.h create mode 100644 drivers/char/rio/rioboot.c create mode 100644 drivers/char/rio/riocmd.c create mode 100644 drivers/char/rio/rioctrl.c create mode 100644 drivers/char/rio/riodrvr.h create mode 100644 drivers/char/rio/rioinfo.h create mode 100644 drivers/char/rio/rioinit.c create mode 100644 drivers/char/rio/riointr.c create mode 100644 drivers/char/rio/rioioctl.h create mode 100644 drivers/char/rio/riolocks.h create mode 100644 drivers/char/rio/rioparam.c create mode 100644 drivers/char/rio/riopcicopy.c create mode 100644 drivers/char/rio/rioroute.c create mode 100644 drivers/char/rio/riospace.h create mode 100644 drivers/char/rio/riotable.c create mode 100644 drivers/char/rio/riotime.h create mode 100644 drivers/char/rio/riotty.c create mode 100644 drivers/char/rio/riotypes.h create mode 100644 drivers/char/rio/riowinif.h create mode 100644 drivers/char/rio/riscos.h create mode 100644 drivers/char/rio/rom.h create mode 100644 drivers/char/rio/route.h create mode 100644 drivers/char/rio/rtahw.h create mode 100644 drivers/char/rio/rup.h create mode 100644 drivers/char/rio/rupstat.h create mode 100644 drivers/char/rio/sam.h create mode 100644 drivers/char/rio/selftest.h create mode 100644 drivers/char/rio/space.h create mode 100644 drivers/char/rio/sysmap.h create mode 100644 drivers/char/rio/timeouts.h create mode 100644 drivers/char/rio/top.h create mode 100644 drivers/char/rio/typdef.h create mode 100644 drivers/char/rio/unixrup.h create mode 100644 drivers/char/riscom8.c create mode 100644 drivers/char/riscom8.h create mode 100644 drivers/char/riscom8_reg.h create mode 100644 drivers/char/rocket.c create mode 100644 drivers/char/rocket.h create mode 100644 drivers/char/rocket_int.h create mode 100644 drivers/char/rtc.c create mode 100644 drivers/char/s3c2410-rtc.c create mode 100644 drivers/char/scan_keyb.c create mode 100644 drivers/char/scan_keyb.h create mode 100644 drivers/char/scc.h create mode 100644 drivers/char/scx200_gpio.c create mode 100644 drivers/char/selection.c create mode 100644 drivers/char/ser_a2232.c create mode 100644 drivers/char/ser_a2232.h create mode 100644 drivers/char/ser_a2232fw.ax create mode 100644 drivers/char/ser_a2232fw.h create mode 100644 drivers/char/serial167.c create mode 100644 drivers/char/snsc.c create mode 100644 drivers/char/snsc.h create mode 100644 drivers/char/sonypi.c create mode 100644 drivers/char/specialix.c create mode 100644 drivers/char/specialix_io8.h create mode 100644 drivers/char/stallion.c create mode 100644 drivers/char/sx.c create mode 100644 drivers/char/sx.h create mode 100644 drivers/char/sxboards.h create mode 100644 drivers/char/sxwindow.h create mode 100644 drivers/char/synclink.c create mode 100644 drivers/char/synclinkmp.c create mode 100644 drivers/char/sysrq.c create mode 100644 drivers/char/tb0219.c create mode 100644 drivers/char/tipar.c create mode 100644 drivers/char/toshiba.c create mode 100644 drivers/char/tpm/Kconfig create mode 100644 drivers/char/tpm/Makefile create mode 100644 drivers/char/tpm/tpm.c create mode 100644 drivers/char/tpm/tpm.h create mode 100644 drivers/char/tpm/tpm_atmel.c create mode 100644 drivers/char/tpm/tpm_nsc.c create mode 100644 drivers/char/tty_io.c create mode 100644 drivers/char/tty_ioctl.c create mode 100644 drivers/char/vc_screen.c create mode 100644 drivers/char/viocons.c create mode 100644 drivers/char/viotape.c create mode 100644 drivers/char/vme_scc.c create mode 100644 drivers/char/vr41xx_rtc.c create mode 100644 drivers/char/vt.c create mode 100644 drivers/char/vt_ioctl.c create mode 100644 drivers/char/watchdog/Kconfig create mode 100644 drivers/char/watchdog/Makefile create mode 100644 drivers/char/watchdog/acquirewdt.c create mode 100644 drivers/char/watchdog/advantechwdt.c create mode 100644 drivers/char/watchdog/alim1535_wdt.c create mode 100644 drivers/char/watchdog/alim7101_wdt.c create mode 100644 drivers/char/watchdog/cpu5wdt.c create mode 100644 drivers/char/watchdog/eurotechwdt.c create mode 100644 drivers/char/watchdog/i8xx_tco.c create mode 100644 drivers/char/watchdog/i8xx_tco.h create mode 100644 drivers/char/watchdog/ib700wdt.c create mode 100644 drivers/char/watchdog/indydog.c create mode 100644 drivers/char/watchdog/ixp2000_wdt.c create mode 100644 drivers/char/watchdog/ixp4xx_wdt.c create mode 100644 drivers/char/watchdog/machzwd.c create mode 100644 drivers/char/watchdog/mixcomwd.c create mode 100644 drivers/char/watchdog/mpc8xx_wdt.c create mode 100644 drivers/char/watchdog/pcwd.c create mode 100644 drivers/char/watchdog/pcwd_pci.c create mode 100644 drivers/char/watchdog/pcwd_usb.c create mode 100644 drivers/char/watchdog/s3c2410_wdt.c create mode 100644 drivers/char/watchdog/sa1100_wdt.c create mode 100644 drivers/char/watchdog/sbc60xxwdt.c create mode 100644 drivers/char/watchdog/sc1200wdt.c create mode 100644 drivers/char/watchdog/sc520_wdt.c create mode 100644 drivers/char/watchdog/scx200_wdt.c create mode 100644 drivers/char/watchdog/shwdt.c create mode 100644 drivers/char/watchdog/softdog.c create mode 100644 drivers/char/watchdog/w83627hf_wdt.c create mode 100644 drivers/char/watchdog/w83877f_wdt.c create mode 100644 drivers/char/watchdog/wafer5823wdt.c create mode 100644 drivers/char/watchdog/wd501p.h create mode 100644 drivers/char/watchdog/wdt.c create mode 100644 drivers/char/watchdog/wdt285.c create mode 100644 drivers/char/watchdog/wdt977.c create mode 100644 drivers/char/watchdog/wdt_pci.c create mode 100644 drivers/cpufreq/Kconfig create mode 100644 drivers/cpufreq/Makefile create mode 100644 drivers/cpufreq/cpufreq.c create mode 100644 drivers/cpufreq/cpufreq_ondemand.c create mode 100644 drivers/cpufreq/cpufreq_performance.c create mode 100644 drivers/cpufreq/cpufreq_powersave.c create mode 100644 drivers/cpufreq/cpufreq_stats.c create mode 100644 drivers/cpufreq/cpufreq_userspace.c create mode 100644 drivers/cpufreq/freq_table.c create mode 100644 drivers/crypto/Kconfig create mode 100644 drivers/crypto/Makefile create mode 100644 drivers/crypto/padlock-aes.c create mode 100644 drivers/crypto/padlock-generic.c create mode 100644 drivers/crypto/padlock.h create mode 100644 drivers/dio/Makefile create mode 100644 drivers/dio/dio-driver.c create mode 100644 drivers/dio/dio-sysfs.c create mode 100644 drivers/dio/dio.c create mode 100644 drivers/eisa/Kconfig create mode 100644 drivers/eisa/Makefile create mode 100644 drivers/eisa/eisa-bus.c create mode 100644 drivers/eisa/eisa.ids create mode 100644 drivers/eisa/pci_eisa.c create mode 100644 drivers/eisa/virtual_root.c create mode 100644 drivers/fc4/Kconfig create mode 100644 drivers/fc4/Makefile create mode 100644 drivers/fc4/fc-al.h create mode 100644 drivers/fc4/fc.c create mode 100644 drivers/fc4/fc.h create mode 100644 drivers/fc4/fc_syms.c create mode 100644 drivers/fc4/fcp.h create mode 100644 drivers/fc4/fcp_impl.h create mode 100644 drivers/fc4/soc.c create mode 100644 drivers/fc4/soc.h create mode 100644 drivers/fc4/socal.c create mode 100644 drivers/fc4/socal.h create mode 100644 drivers/firmware/Kconfig create mode 100644 drivers/firmware/Makefile create mode 100644 drivers/firmware/edd.c create mode 100644 drivers/firmware/efivars.c create mode 100644 drivers/firmware/pcdp.c create mode 100644 drivers/firmware/pcdp.h create mode 100644 drivers/i2c/Kconfig create mode 100644 drivers/i2c/Makefile create mode 100644 drivers/i2c/algos/Kconfig create mode 100644 drivers/i2c/algos/Makefile create mode 100644 drivers/i2c/algos/i2c-algo-bit.c create mode 100644 drivers/i2c/algos/i2c-algo-ite.c create mode 100644 drivers/i2c/algos/i2c-algo-ite.h create mode 100644 drivers/i2c/algos/i2c-algo-pca.c create mode 100644 drivers/i2c/algos/i2c-algo-pca.h create mode 100644 drivers/i2c/algos/i2c-algo-pcf.c create mode 100644 drivers/i2c/algos/i2c-algo-pcf.h create mode 100644 drivers/i2c/algos/i2c-algo-sgi.c create mode 100644 drivers/i2c/algos/i2c-algo-sibyte.c create mode 100644 drivers/i2c/busses/Kconfig create mode 100644 drivers/i2c/busses/Makefile create mode 100644 drivers/i2c/busses/i2c-ali1535.c create mode 100644 drivers/i2c/busses/i2c-ali1563.c create mode 100644 drivers/i2c/busses/i2c-ali15x3.c create mode 100644 drivers/i2c/busses/i2c-amd756-s4882.c create mode 100644 drivers/i2c/busses/i2c-amd756.c create mode 100644 drivers/i2c/busses/i2c-amd8111.c create mode 100644 drivers/i2c/busses/i2c-au1550.c create mode 100644 drivers/i2c/busses/i2c-au1550.h create mode 100644 drivers/i2c/busses/i2c-elektor.c create mode 100644 drivers/i2c/busses/i2c-frodo.c create mode 100644 drivers/i2c/busses/i2c-hydra.c create mode 100644 drivers/i2c/busses/i2c-i801.c create mode 100644 drivers/i2c/busses/i2c-i810.c create mode 100644 drivers/i2c/busses/i2c-ibm_iic.c create mode 100644 drivers/i2c/busses/i2c-ibm_iic.h create mode 100644 drivers/i2c/busses/i2c-iop3xx.c create mode 100644 drivers/i2c/busses/i2c-iop3xx.h create mode 100644 drivers/i2c/busses/i2c-isa.c create mode 100644 drivers/i2c/busses/i2c-ite.c create mode 100644 drivers/i2c/busses/i2c-ixp2000.c create mode 100644 drivers/i2c/busses/i2c-ixp4xx.c create mode 100644 drivers/i2c/busses/i2c-keywest.c create mode 100644 drivers/i2c/busses/i2c-keywest.h create mode 100644 drivers/i2c/busses/i2c-mpc.c create mode 100644 drivers/i2c/busses/i2c-mv64xxx.c create mode 100644 drivers/i2c/busses/i2c-nforce2.c create mode 100644 drivers/i2c/busses/i2c-parport-light.c create mode 100644 drivers/i2c/busses/i2c-parport.c create mode 100644 drivers/i2c/busses/i2c-parport.h create mode 100644 drivers/i2c/busses/i2c-pca-isa.c create mode 100644 drivers/i2c/busses/i2c-piix4.c create mode 100644 drivers/i2c/busses/i2c-prosavage.c create mode 100644 drivers/i2c/busses/i2c-rpx.c create mode 100644 drivers/i2c/busses/i2c-s3c2410.c create mode 100644 drivers/i2c/busses/i2c-savage4.c create mode 100644 drivers/i2c/busses/i2c-sibyte.c create mode 100644 drivers/i2c/busses/i2c-sis5595.c create mode 100644 drivers/i2c/busses/i2c-sis630.c create mode 100644 drivers/i2c/busses/i2c-sis96x.c create mode 100644 drivers/i2c/busses/i2c-stub.c create mode 100644 drivers/i2c/busses/i2c-via.c create mode 100644 drivers/i2c/busses/i2c-viapro.c create mode 100644 drivers/i2c/busses/i2c-voodoo3.c create mode 100644 drivers/i2c/busses/scx200_acb.c create mode 100644 drivers/i2c/busses/scx200_i2c.c create mode 100644 drivers/i2c/chips/Kconfig create mode 100644 drivers/i2c/chips/Makefile create mode 100644 drivers/i2c/chips/adm1021.c create mode 100644 drivers/i2c/chips/adm1025.c create mode 100644 drivers/i2c/chips/adm1026.c create mode 100644 drivers/i2c/chips/adm1031.c create mode 100644 drivers/i2c/chips/asb100.c create mode 100644 drivers/i2c/chips/ds1337.c create mode 100644 drivers/i2c/chips/ds1621.c create mode 100644 drivers/i2c/chips/eeprom.c create mode 100644 drivers/i2c/chips/fscher.c create mode 100644 drivers/i2c/chips/fscpos.c create mode 100644 drivers/i2c/chips/gl518sm.c create mode 100644 drivers/i2c/chips/gl520sm.c create mode 100644 drivers/i2c/chips/isp1301_omap.c create mode 100644 drivers/i2c/chips/it87.c create mode 100644 drivers/i2c/chips/lm63.c create mode 100644 drivers/i2c/chips/lm75.c create mode 100644 drivers/i2c/chips/lm75.h create mode 100644 drivers/i2c/chips/lm77.c create mode 100644 drivers/i2c/chips/lm78.c create mode 100644 drivers/i2c/chips/lm80.c create mode 100644 drivers/i2c/chips/lm83.c create mode 100644 drivers/i2c/chips/lm85.c create mode 100644 drivers/i2c/chips/lm87.c create mode 100644 drivers/i2c/chips/lm90.c create mode 100644 drivers/i2c/chips/lm92.c create mode 100644 drivers/i2c/chips/m41t00.c create mode 100644 drivers/i2c/chips/max1619.c create mode 100644 drivers/i2c/chips/pc87360.c create mode 100644 drivers/i2c/chips/pcf8574.c create mode 100644 drivers/i2c/chips/pcf8591.c create mode 100644 drivers/i2c/chips/rtc8564.c create mode 100644 drivers/i2c/chips/rtc8564.h create mode 100644 drivers/i2c/chips/sis5595.c create mode 100644 drivers/i2c/chips/smsc47b397.c create mode 100644 drivers/i2c/chips/smsc47m1.c create mode 100644 drivers/i2c/chips/via686a.c create mode 100644 drivers/i2c/chips/w83627hf.c create mode 100644 drivers/i2c/chips/w83781d.c create mode 100644 drivers/i2c/chips/w83l785ts.c create mode 100644 drivers/i2c/i2c-core.c create mode 100644 drivers/i2c/i2c-dev.c create mode 100644 drivers/i2c/i2c-sensor-detect.c create mode 100644 drivers/i2c/i2c-sensor-vid.c create mode 100644 drivers/ide/Kconfig create mode 100644 drivers/ide/Makefile create mode 100644 drivers/ide/arm/Makefile create mode 100644 drivers/ide/arm/bast-ide.c create mode 100644 drivers/ide/arm/icside.c create mode 100644 drivers/ide/arm/ide_arm.c create mode 100644 drivers/ide/arm/rapide.c create mode 100644 drivers/ide/cris/Makefile create mode 100644 drivers/ide/cris/ide-v10.c create mode 100644 drivers/ide/h8300/ide-h8300.c create mode 100644 drivers/ide/ide-cd.c create mode 100644 drivers/ide/ide-cd.h create mode 100644 drivers/ide/ide-disk.c create mode 100644 drivers/ide/ide-dma.c create mode 100644 drivers/ide/ide-floppy.c create mode 100644 drivers/ide/ide-generic.c create mode 100644 drivers/ide/ide-io.c create mode 100644 drivers/ide/ide-iops.c create mode 100644 drivers/ide/ide-lib.c create mode 100644 drivers/ide/ide-pnp.c create mode 100644 drivers/ide/ide-probe.c create mode 100644 drivers/ide/ide-proc.c create mode 100644 drivers/ide/ide-tape.c create mode 100644 drivers/ide/ide-taskfile.c create mode 100644 drivers/ide/ide-timing.h create mode 100644 drivers/ide/ide.c create mode 100644 drivers/ide/legacy/Makefile create mode 100644 drivers/ide/legacy/ali14xx.c create mode 100644 drivers/ide/legacy/buddha.c create mode 100644 drivers/ide/legacy/dtc2278.c create mode 100644 drivers/ide/legacy/falconide.c create mode 100644 drivers/ide/legacy/gayle.c create mode 100644 drivers/ide/legacy/hd.c create mode 100644 drivers/ide/legacy/ht6560b.c create mode 100644 drivers/ide/legacy/ide-cs.c create mode 100644 drivers/ide/legacy/macide.c create mode 100644 drivers/ide/legacy/q40ide.c create mode 100644 drivers/ide/legacy/qd65xx.c create mode 100644 drivers/ide/legacy/qd65xx.h create mode 100644 drivers/ide/legacy/umc8672.c create mode 100644 drivers/ide/pci/Makefile create mode 100644 drivers/ide/pci/aec62xx.c create mode 100644 drivers/ide/pci/alim15x3.c create mode 100644 drivers/ide/pci/amd74xx.c create mode 100644 drivers/ide/pci/atiixp.c create mode 100644 drivers/ide/pci/cmd640.c create mode 100644 drivers/ide/pci/cmd64x.c create mode 100644 drivers/ide/pci/cs5520.c create mode 100644 drivers/ide/pci/cs5530.c create mode 100644 drivers/ide/pci/cy82c693.c create mode 100644 drivers/ide/pci/generic.c create mode 100644 drivers/ide/pci/hpt34x.c create mode 100644 drivers/ide/pci/hpt366.c create mode 100644 drivers/ide/pci/it8172.c create mode 100644 drivers/ide/pci/ns87415.c create mode 100644 drivers/ide/pci/opti621.c create mode 100644 drivers/ide/pci/pdc202xx_new.c create mode 100644 drivers/ide/pci/pdc202xx_old.c create mode 100644 drivers/ide/pci/piix.c create mode 100644 drivers/ide/pci/rz1000.c create mode 100644 drivers/ide/pci/sc1200.c create mode 100644 drivers/ide/pci/serverworks.c create mode 100644 drivers/ide/pci/sgiioc4.c create mode 100644 drivers/ide/pci/siimage.c create mode 100644 drivers/ide/pci/sis5513.c create mode 100644 drivers/ide/pci/sl82c105.c create mode 100644 drivers/ide/pci/slc90e66.c create mode 100644 drivers/ide/pci/triflex.c create mode 100644 drivers/ide/pci/trm290.c create mode 100644 drivers/ide/pci/via82cxxx.c create mode 100644 drivers/ide/ppc/mpc8xx.c create mode 100644 drivers/ide/ppc/pmac.c create mode 100644 drivers/ide/setup-pci.c create mode 100644 drivers/ieee1394/Kconfig create mode 100644 drivers/ieee1394/Makefile create mode 100644 drivers/ieee1394/amdtp.c create mode 100644 drivers/ieee1394/amdtp.h create mode 100644 drivers/ieee1394/cmp.c create mode 100644 drivers/ieee1394/cmp.h create mode 100644 drivers/ieee1394/config_roms.c create mode 100644 drivers/ieee1394/config_roms.h create mode 100644 drivers/ieee1394/csr.c create mode 100644 drivers/ieee1394/csr.h create mode 100644 drivers/ieee1394/csr1212.c create mode 100644 drivers/ieee1394/csr1212.h create mode 100644 drivers/ieee1394/dma.c create mode 100644 drivers/ieee1394/dma.h create mode 100644 drivers/ieee1394/dv1394-private.h create mode 100644 drivers/ieee1394/dv1394.c create mode 100644 drivers/ieee1394/dv1394.h create mode 100644 drivers/ieee1394/eth1394.c create mode 100644 drivers/ieee1394/eth1394.h create mode 100644 drivers/ieee1394/highlevel.c create mode 100644 drivers/ieee1394/highlevel.h create mode 100644 drivers/ieee1394/hosts.c create mode 100644 drivers/ieee1394/hosts.h create mode 100644 drivers/ieee1394/ieee1394-ioctl.h create mode 100644 drivers/ieee1394/ieee1394.h create mode 100644 drivers/ieee1394/ieee1394_core.c create mode 100644 drivers/ieee1394/ieee1394_core.h create mode 100644 drivers/ieee1394/ieee1394_hotplug.h create mode 100644 drivers/ieee1394/ieee1394_transactions.c create mode 100644 drivers/ieee1394/ieee1394_transactions.h create mode 100644 drivers/ieee1394/ieee1394_types.h create mode 100644 drivers/ieee1394/iso.c create mode 100644 drivers/ieee1394/iso.h create mode 100644 drivers/ieee1394/nodemgr.c create mode 100644 drivers/ieee1394/nodemgr.h create mode 100644 drivers/ieee1394/ohci1394.c create mode 100644 drivers/ieee1394/ohci1394.h create mode 100644 drivers/ieee1394/oui.db create mode 100644 drivers/ieee1394/oui2c.sh create mode 100644 drivers/ieee1394/pcilynx.c create mode 100644 drivers/ieee1394/pcilynx.h create mode 100644 drivers/ieee1394/raw1394-private.h create mode 100644 drivers/ieee1394/raw1394.c create mode 100644 drivers/ieee1394/raw1394.h create mode 100644 drivers/ieee1394/sbp2.c create mode 100644 drivers/ieee1394/sbp2.h create mode 100644 drivers/ieee1394/video1394.c create mode 100644 drivers/ieee1394/video1394.h create mode 100644 drivers/infiniband/Kconfig create mode 100644 drivers/infiniband/Makefile create mode 100644 drivers/infiniband/core/Makefile create mode 100644 drivers/infiniband/core/agent.c create mode 100644 drivers/infiniband/core/agent.h create mode 100644 drivers/infiniband/core/agent_priv.h create mode 100644 drivers/infiniband/core/cache.c create mode 100644 drivers/infiniband/core/core_priv.h create mode 100644 drivers/infiniband/core/device.c create mode 100644 drivers/infiniband/core/fmr_pool.c create mode 100644 drivers/infiniband/core/mad.c create mode 100644 drivers/infiniband/core/mad_priv.h create mode 100644 drivers/infiniband/core/packer.c create mode 100644 drivers/infiniband/core/sa_query.c create mode 100644 drivers/infiniband/core/smi.c create mode 100644 drivers/infiniband/core/smi.h create mode 100644 drivers/infiniband/core/sysfs.c create mode 100644 drivers/infiniband/core/ud_header.c create mode 100644 drivers/infiniband/core/user_mad.c create mode 100644 drivers/infiniband/core/verbs.c create mode 100644 drivers/infiniband/hw/mthca/Kconfig create mode 100644 drivers/infiniband/hw/mthca/Makefile create mode 100644 drivers/infiniband/hw/mthca/mthca_allocator.c create mode 100644 drivers/infiniband/hw/mthca/mthca_av.c create mode 100644 drivers/infiniband/hw/mthca/mthca_cmd.c create mode 100644 drivers/infiniband/hw/mthca/mthca_cmd.h create mode 100644 drivers/infiniband/hw/mthca/mthca_config_reg.h create mode 100644 drivers/infiniband/hw/mthca/mthca_cq.c create mode 100644 drivers/infiniband/hw/mthca/mthca_dev.h create mode 100644 drivers/infiniband/hw/mthca/mthca_doorbell.h create mode 100644 drivers/infiniband/hw/mthca/mthca_eq.c create mode 100644 drivers/infiniband/hw/mthca/mthca_mad.c create mode 100644 drivers/infiniband/hw/mthca/mthca_main.c create mode 100644 drivers/infiniband/hw/mthca/mthca_mcg.c create mode 100644 drivers/infiniband/hw/mthca/mthca_memfree.c create mode 100644 drivers/infiniband/hw/mthca/mthca_memfree.h create mode 100644 drivers/infiniband/hw/mthca/mthca_mr.c create mode 100644 drivers/infiniband/hw/mthca/mthca_pd.c create mode 100644 drivers/infiniband/hw/mthca/mthca_profile.c create mode 100644 drivers/infiniband/hw/mthca/mthca_profile.h create mode 100644 drivers/infiniband/hw/mthca/mthca_provider.c create mode 100644 drivers/infiniband/hw/mthca/mthca_provider.h create mode 100644 drivers/infiniband/hw/mthca/mthca_qp.c create mode 100644 drivers/infiniband/hw/mthca/mthca_reset.c create mode 100644 drivers/infiniband/hw/mthca/mthca_uar.c create mode 100644 drivers/infiniband/include/ib_cache.h create mode 100644 drivers/infiniband/include/ib_fmr_pool.h create mode 100644 drivers/infiniband/include/ib_mad.h create mode 100644 drivers/infiniband/include/ib_pack.h create mode 100644 drivers/infiniband/include/ib_sa.h create mode 100644 drivers/infiniband/include/ib_smi.h create mode 100644 drivers/infiniband/include/ib_user_mad.h create mode 100644 drivers/infiniband/include/ib_verbs.h create mode 100644 drivers/infiniband/ulp/ipoib/Kconfig create mode 100644 drivers/infiniband/ulp/ipoib/Makefile create mode 100644 drivers/infiniband/ulp/ipoib/ipoib.h create mode 100644 drivers/infiniband/ulp/ipoib/ipoib_fs.c create mode 100644 drivers/infiniband/ulp/ipoib/ipoib_ib.c create mode 100644 drivers/infiniband/ulp/ipoib/ipoib_main.c create mode 100644 drivers/infiniband/ulp/ipoib/ipoib_multicast.c create mode 100644 drivers/infiniband/ulp/ipoib/ipoib_verbs.c create mode 100644 drivers/infiniband/ulp/ipoib/ipoib_vlan.c create mode 100644 drivers/input/Kconfig create mode 100644 drivers/input/Makefile create mode 100644 drivers/input/evbug.c create mode 100644 drivers/input/evdev.c create mode 100644 drivers/input/gameport/Kconfig create mode 100644 drivers/input/gameport/Makefile create mode 100644 drivers/input/gameport/cs461x.c create mode 100644 drivers/input/gameport/emu10k1-gp.c create mode 100644 drivers/input/gameport/fm801-gp.c create mode 100644 drivers/input/gameport/gameport.c create mode 100644 drivers/input/gameport/lightning.c create mode 100644 drivers/input/gameport/ns558.c create mode 100644 drivers/input/gameport/vortex.c create mode 100644 drivers/input/input.c create mode 100644 drivers/input/joydev.c create mode 100644 drivers/input/joystick/Kconfig create mode 100644 drivers/input/joystick/Makefile create mode 100644 drivers/input/joystick/a3d.c create mode 100644 drivers/input/joystick/adi.c create mode 100644 drivers/input/joystick/amijoy.c create mode 100644 drivers/input/joystick/analog.c create mode 100644 drivers/input/joystick/cobra.c create mode 100644 drivers/input/joystick/db9.c create mode 100644 drivers/input/joystick/gamecon.c create mode 100644 drivers/input/joystick/gf2k.c create mode 100644 drivers/input/joystick/grip.c create mode 100644 drivers/input/joystick/grip_mp.c create mode 100644 drivers/input/joystick/guillemot.c create mode 100644 drivers/input/joystick/iforce/Kconfig create mode 100644 drivers/input/joystick/iforce/Makefile create mode 100644 drivers/input/joystick/iforce/iforce-ff.c create mode 100644 drivers/input/joystick/iforce/iforce-main.c create mode 100644 drivers/input/joystick/iforce/iforce-packets.c create mode 100644 drivers/input/joystick/iforce/iforce-serio.c create mode 100644 drivers/input/joystick/iforce/iforce-usb.c create mode 100644 drivers/input/joystick/iforce/iforce.h create mode 100644 drivers/input/joystick/interact.c create mode 100644 drivers/input/joystick/joydump.c create mode 100644 drivers/input/joystick/magellan.c create mode 100644 drivers/input/joystick/sidewinder.c create mode 100644 drivers/input/joystick/spaceball.c create mode 100644 drivers/input/joystick/spaceorb.c create mode 100644 drivers/input/joystick/stinger.c create mode 100644 drivers/input/joystick/tmdc.c create mode 100644 drivers/input/joystick/turbografx.c create mode 100644 drivers/input/joystick/twidjoy.c create mode 100644 drivers/input/joystick/warrior.c create mode 100644 drivers/input/keyboard/Kconfig create mode 100644 drivers/input/keyboard/Makefile create mode 100644 drivers/input/keyboard/amikbd.c create mode 100644 drivers/input/keyboard/atkbd.c create mode 100644 drivers/input/keyboard/corgikbd.c create mode 100644 drivers/input/keyboard/hil_kbd.c create mode 100644 drivers/input/keyboard/hilkbd.c create mode 100644 drivers/input/keyboard/hpps2atkbd.h create mode 100644 drivers/input/keyboard/lkkbd.c create mode 100644 drivers/input/keyboard/locomokbd.c create mode 100644 drivers/input/keyboard/maple_keyb.c create mode 100644 drivers/input/keyboard/newtonkbd.c create mode 100644 drivers/input/keyboard/sunkbd.c create mode 100644 drivers/input/keyboard/xtkbd.c create mode 100644 drivers/input/misc/Kconfig create mode 100644 drivers/input/misc/Makefile create mode 100644 drivers/input/misc/hp_sdc_rtc.c create mode 100644 drivers/input/misc/m68kspkr.c create mode 100644 drivers/input/misc/pcspkr.c create mode 100644 drivers/input/misc/sparcspkr.c create mode 100644 drivers/input/misc/uinput.c create mode 100644 drivers/input/mouse/Kconfig create mode 100644 drivers/input/mouse/Makefile create mode 100644 drivers/input/mouse/alps.c create mode 100644 drivers/input/mouse/alps.h create mode 100644 drivers/input/mouse/amimouse.c create mode 100644 drivers/input/mouse/hil_ptr.c create mode 100644 drivers/input/mouse/inport.c create mode 100644 drivers/input/mouse/logibm.c create mode 100644 drivers/input/mouse/logips2pp.c create mode 100644 drivers/input/mouse/logips2pp.h create mode 100644 drivers/input/mouse/maplemouse.c create mode 100644 drivers/input/mouse/pc110pad.c create mode 100644 drivers/input/mouse/psmouse-base.c create mode 100644 drivers/input/mouse/psmouse.h create mode 100644 drivers/input/mouse/rpcmouse.c create mode 100644 drivers/input/mouse/sermouse.c create mode 100644 drivers/input/mouse/synaptics.c create mode 100644 drivers/input/mouse/synaptics.h create mode 100644 drivers/input/mouse/vsxxxaa.c create mode 100644 drivers/input/mousedev.c create mode 100644 drivers/input/power.c create mode 100644 drivers/input/serio/Kconfig create mode 100644 drivers/input/serio/Makefile create mode 100644 drivers/input/serio/ambakmi.c create mode 100644 drivers/input/serio/ct82c710.c create mode 100644 drivers/input/serio/gscps2.c create mode 100644 drivers/input/serio/hil_mlc.c create mode 100644 drivers/input/serio/hp_sdc.c create mode 100644 drivers/input/serio/hp_sdc_mlc.c create mode 100644 drivers/input/serio/i8042-io.h create mode 100644 drivers/input/serio/i8042-ip22io.h create mode 100644 drivers/input/serio/i8042-jazzio.h create mode 100644 drivers/input/serio/i8042-ppcio.h create mode 100644 drivers/input/serio/i8042-sparcio.h create mode 100644 drivers/input/serio/i8042-x86ia64io.h create mode 100644 drivers/input/serio/i8042.c create mode 100644 drivers/input/serio/i8042.h create mode 100644 drivers/input/serio/libps2.c create mode 100644 drivers/input/serio/maceps2.c create mode 100644 drivers/input/serio/parkbd.c create mode 100644 drivers/input/serio/pcips2.c create mode 100644 drivers/input/serio/q40kbd.c create mode 100644 drivers/input/serio/rpckbd.c create mode 100644 drivers/input/serio/sa1111ps2.c create mode 100644 drivers/input/serio/serio.c create mode 100644 drivers/input/serio/serio_raw.c create mode 100644 drivers/input/serio/serport.c create mode 100644 drivers/input/touchscreen/Kconfig create mode 100644 drivers/input/touchscreen/Makefile create mode 100644 drivers/input/touchscreen/corgi_ts.c create mode 100644 drivers/input/touchscreen/elo.c create mode 100644 drivers/input/touchscreen/gunze.c create mode 100644 drivers/input/touchscreen/h3600_ts_input.c create mode 100644 drivers/input/touchscreen/hp680_ts_input.c create mode 100644 drivers/input/touchscreen/mk712.c create mode 100644 drivers/input/touchscreen/mtouch.c create mode 100644 drivers/input/tsdev.c create mode 100644 drivers/isdn/Kconfig create mode 100644 drivers/isdn/Makefile create mode 100644 drivers/isdn/act2000/Kconfig create mode 100644 drivers/isdn/act2000/Makefile create mode 100644 drivers/isdn/act2000/act2000.h create mode 100644 drivers/isdn/act2000/act2000_isa.c create mode 100644 drivers/isdn/act2000/act2000_isa.h create mode 100644 drivers/isdn/act2000/capi.c create mode 100644 drivers/isdn/act2000/capi.h create mode 100644 drivers/isdn/act2000/module.c create mode 100644 drivers/isdn/capi/Kconfig create mode 100644 drivers/isdn/capi/Makefile create mode 100644 drivers/isdn/capi/capi.c create mode 100644 drivers/isdn/capi/capidrv.c create mode 100644 drivers/isdn/capi/capidrv.h create mode 100644 drivers/isdn/capi/capifs.c create mode 100644 drivers/isdn/capi/capifs.h create mode 100644 drivers/isdn/capi/capilib.c create mode 100644 drivers/isdn/capi/capiutil.c create mode 100644 drivers/isdn/capi/kcapi.c create mode 100644 drivers/isdn/capi/kcapi.h create mode 100644 drivers/isdn/capi/kcapi_proc.c create mode 100644 drivers/isdn/divert/Makefile create mode 100644 drivers/isdn/divert/divert_init.c create mode 100644 drivers/isdn/divert/divert_procfs.c create mode 100644 drivers/isdn/divert/isdn_divert.c create mode 100644 drivers/isdn/divert/isdn_divert.h create mode 100644 drivers/isdn/hardware/Kconfig create mode 100644 drivers/isdn/hardware/Makefile create mode 100644 drivers/isdn/hardware/avm/Kconfig create mode 100644 drivers/isdn/hardware/avm/Makefile create mode 100644 drivers/isdn/hardware/avm/avm_cs.c create mode 100644 drivers/isdn/hardware/avm/avmcard.h create mode 100644 drivers/isdn/hardware/avm/b1.c create mode 100644 drivers/isdn/hardware/avm/b1dma.c create mode 100644 drivers/isdn/hardware/avm/b1isa.c create mode 100644 drivers/isdn/hardware/avm/b1pci.c create mode 100644 drivers/isdn/hardware/avm/b1pcmcia.c create mode 100644 drivers/isdn/hardware/avm/c4.c create mode 100644 drivers/isdn/hardware/avm/t1isa.c create mode 100644 drivers/isdn/hardware/avm/t1pci.c create mode 100644 drivers/isdn/hardware/eicon/Kconfig create mode 100644 drivers/isdn/hardware/eicon/Makefile create mode 100644 drivers/isdn/hardware/eicon/adapter.h create mode 100644 drivers/isdn/hardware/eicon/capi20.h create mode 100644 drivers/isdn/hardware/eicon/capidtmf.c create mode 100644 drivers/isdn/hardware/eicon/capidtmf.h create mode 100644 drivers/isdn/hardware/eicon/capifunc.c create mode 100644 drivers/isdn/hardware/eicon/capifunc.h create mode 100644 drivers/isdn/hardware/eicon/capimain.c create mode 100644 drivers/isdn/hardware/eicon/cardtype.h create mode 100644 drivers/isdn/hardware/eicon/cp_vers.h create mode 100644 drivers/isdn/hardware/eicon/dadapter.c create mode 100644 drivers/isdn/hardware/eicon/dadapter.h create mode 100644 drivers/isdn/hardware/eicon/dbgioctl.h create mode 100644 drivers/isdn/hardware/eicon/debug.c create mode 100644 drivers/isdn/hardware/eicon/debug_if.h create mode 100644 drivers/isdn/hardware/eicon/debuglib.c create mode 100644 drivers/isdn/hardware/eicon/debuglib.h create mode 100644 drivers/isdn/hardware/eicon/dfifo.h create mode 100644 drivers/isdn/hardware/eicon/di.c create mode 100644 drivers/isdn/hardware/eicon/di.h create mode 100644 drivers/isdn/hardware/eicon/di_dbg.h create mode 100644 drivers/isdn/hardware/eicon/di_defs.h create mode 100644 drivers/isdn/hardware/eicon/did_vers.h create mode 100644 drivers/isdn/hardware/eicon/diddfunc.c create mode 100644 drivers/isdn/hardware/eicon/diva.c create mode 100644 drivers/isdn/hardware/eicon/diva.h create mode 100644 drivers/isdn/hardware/eicon/diva_didd.c create mode 100644 drivers/isdn/hardware/eicon/diva_dma.c create mode 100644 drivers/isdn/hardware/eicon/diva_dma.h create mode 100644 drivers/isdn/hardware/eicon/diva_pci.h create mode 100644 drivers/isdn/hardware/eicon/divacapi.h create mode 100644 drivers/isdn/hardware/eicon/divamnt.c create mode 100644 drivers/isdn/hardware/eicon/divasfunc.c create mode 100644 drivers/isdn/hardware/eicon/divasi.c create mode 100644 drivers/isdn/hardware/eicon/divasmain.c create mode 100644 drivers/isdn/hardware/eicon/divasproc.c create mode 100644 drivers/isdn/hardware/eicon/divasync.h create mode 100644 drivers/isdn/hardware/eicon/dqueue.c create mode 100644 drivers/isdn/hardware/eicon/dqueue.h create mode 100644 drivers/isdn/hardware/eicon/dsp_defs.h create mode 100644 drivers/isdn/hardware/eicon/dsp_tst.h create mode 100644 drivers/isdn/hardware/eicon/dspdids.h create mode 100644 drivers/isdn/hardware/eicon/dsrv4bri.h create mode 100644 drivers/isdn/hardware/eicon/dsrv_bri.h create mode 100644 drivers/isdn/hardware/eicon/dsrv_pri.h create mode 100644 drivers/isdn/hardware/eicon/entity.h create mode 100644 drivers/isdn/hardware/eicon/helpers.h create mode 100644 drivers/isdn/hardware/eicon/idifunc.c create mode 100644 drivers/isdn/hardware/eicon/io.c create mode 100644 drivers/isdn/hardware/eicon/io.h create mode 100644 drivers/isdn/hardware/eicon/istream.c create mode 100644 drivers/isdn/hardware/eicon/kst_ifc.h create mode 100644 drivers/isdn/hardware/eicon/main_if.h create mode 100644 drivers/isdn/hardware/eicon/maintidi.c create mode 100644 drivers/isdn/hardware/eicon/maintidi.h create mode 100644 drivers/isdn/hardware/eicon/man_defs.h create mode 100644 drivers/isdn/hardware/eicon/mdm_msg.h create mode 100644 drivers/isdn/hardware/eicon/message.c create mode 100644 drivers/isdn/hardware/eicon/mi_pc.h create mode 100644 drivers/isdn/hardware/eicon/mntfunc.c create mode 100644 drivers/isdn/hardware/eicon/os_4bri.c create mode 100644 drivers/isdn/hardware/eicon/os_4bri.h create mode 100644 drivers/isdn/hardware/eicon/os_bri.c create mode 100644 drivers/isdn/hardware/eicon/os_bri.h create mode 100644 drivers/isdn/hardware/eicon/os_capi.h create mode 100644 drivers/isdn/hardware/eicon/os_pri.c create mode 100644 drivers/isdn/hardware/eicon/os_pri.h create mode 100644 drivers/isdn/hardware/eicon/pc.h create mode 100644 drivers/isdn/hardware/eicon/pc_init.h create mode 100644 drivers/isdn/hardware/eicon/pc_maint.h create mode 100644 drivers/isdn/hardware/eicon/pkmaint.h create mode 100644 drivers/isdn/hardware/eicon/platform.h create mode 100644 drivers/isdn/hardware/eicon/pr_pc.h create mode 100644 drivers/isdn/hardware/eicon/s_4bri.c create mode 100644 drivers/isdn/hardware/eicon/s_bri.c create mode 100644 drivers/isdn/hardware/eicon/s_pri.c create mode 100644 drivers/isdn/hardware/eicon/sdp_hdr.h create mode 100644 drivers/isdn/hardware/eicon/um_idi.c create mode 100644 drivers/isdn/hardware/eicon/um_idi.h create mode 100644 drivers/isdn/hardware/eicon/um_xdi.h create mode 100644 drivers/isdn/hardware/eicon/xdi_adapter.h create mode 100644 drivers/isdn/hardware/eicon/xdi_msg.h create mode 100644 drivers/isdn/hardware/eicon/xdi_vers.h create mode 100644 drivers/isdn/hisax/Kconfig create mode 100644 drivers/isdn/hisax/Makefile create mode 100644 drivers/isdn/hisax/amd7930_fn.c create mode 100644 drivers/isdn/hisax/amd7930_fn.h create mode 100644 drivers/isdn/hisax/arcofi.c create mode 100644 drivers/isdn/hisax/arcofi.h create mode 100644 drivers/isdn/hisax/asuscom.c create mode 100644 drivers/isdn/hisax/avm_a1.c create mode 100644 drivers/isdn/hisax/avm_a1p.c create mode 100644 drivers/isdn/hisax/avm_pci.c create mode 100644 drivers/isdn/hisax/avma1_cs.c create mode 100644 drivers/isdn/hisax/bkm_a4t.c create mode 100644 drivers/isdn/hisax/bkm_a8.c create mode 100644 drivers/isdn/hisax/bkm_ax.h create mode 100644 drivers/isdn/hisax/callc.c create mode 100644 drivers/isdn/hisax/config.c create mode 100644 drivers/isdn/hisax/diva.c create mode 100644 drivers/isdn/hisax/elsa.c create mode 100644 drivers/isdn/hisax/elsa_cs.c create mode 100644 drivers/isdn/hisax/elsa_ser.c create mode 100644 drivers/isdn/hisax/enternow.h create mode 100644 drivers/isdn/hisax/enternow_pci.c create mode 100644 drivers/isdn/hisax/fsm.c create mode 100644 drivers/isdn/hisax/fsm.h create mode 100644 drivers/isdn/hisax/gazel.c create mode 100644 drivers/isdn/hisax/hfc4s8s_l1.c create mode 100644 drivers/isdn/hisax/hfc4s8s_l1.h create mode 100644 drivers/isdn/hisax/hfc_2bds0.c create mode 100644 drivers/isdn/hisax/hfc_2bds0.h create mode 100644 drivers/isdn/hisax/hfc_2bs0.c create mode 100644 drivers/isdn/hisax/hfc_2bs0.h create mode 100644 drivers/isdn/hisax/hfc_pci.c create mode 100644 drivers/isdn/hisax/hfc_pci.h create mode 100644 drivers/isdn/hisax/hfc_sx.c create mode 100644 drivers/isdn/hisax/hfc_sx.h create mode 100644 drivers/isdn/hisax/hfc_usb.c create mode 100644 drivers/isdn/hisax/hfc_usb.h create mode 100644 drivers/isdn/hisax/hfcscard.c create mode 100644 drivers/isdn/hisax/hisax.h create mode 100644 drivers/isdn/hisax/hisax_cfg.h create mode 100644 drivers/isdn/hisax/hisax_debug.h create mode 100644 drivers/isdn/hisax/hisax_fcpcipnp.c create mode 100644 drivers/isdn/hisax/hisax_fcpcipnp.h create mode 100644 drivers/isdn/hisax/hisax_if.h create mode 100644 drivers/isdn/hisax/hisax_isac.c create mode 100644 drivers/isdn/hisax/hisax_isac.h create mode 100644 drivers/isdn/hisax/hscx.c create mode 100644 drivers/isdn/hisax/hscx.h create mode 100644 drivers/isdn/hisax/hscx_irq.c create mode 100644 drivers/isdn/hisax/icc.c create mode 100644 drivers/isdn/hisax/icc.h create mode 100644 drivers/isdn/hisax/ipac.h create mode 100644 drivers/isdn/hisax/ipacx.c create mode 100644 drivers/isdn/hisax/ipacx.h create mode 100644 drivers/isdn/hisax/isac.c create mode 100644 drivers/isdn/hisax/isac.h create mode 100644 drivers/isdn/hisax/isar.c create mode 100644 drivers/isdn/hisax/isar.h create mode 100644 drivers/isdn/hisax/isdnhdlc.c create mode 100644 drivers/isdn/hisax/isdnhdlc.h create mode 100644 drivers/isdn/hisax/isdnl1.c create mode 100644 drivers/isdn/hisax/isdnl1.h create mode 100644 drivers/isdn/hisax/isdnl2.c create mode 100644 drivers/isdn/hisax/isdnl2.h create mode 100644 drivers/isdn/hisax/isdnl3.c create mode 100644 drivers/isdn/hisax/isdnl3.h create mode 100644 drivers/isdn/hisax/isurf.c create mode 100644 drivers/isdn/hisax/ix1_micro.c create mode 100644 drivers/isdn/hisax/jade.c create mode 100644 drivers/isdn/hisax/jade.h create mode 100644 drivers/isdn/hisax/jade_irq.c create mode 100644 drivers/isdn/hisax/l3_1tr6.c create mode 100644 drivers/isdn/hisax/l3_1tr6.h create mode 100644 drivers/isdn/hisax/l3dss1.c create mode 100644 drivers/isdn/hisax/l3dss1.h create mode 100644 drivers/isdn/hisax/l3ni1.c create mode 100644 drivers/isdn/hisax/l3ni1.h create mode 100644 drivers/isdn/hisax/lmgr.c create mode 100644 drivers/isdn/hisax/mic.c create mode 100644 drivers/isdn/hisax/netjet.c create mode 100644 drivers/isdn/hisax/netjet.h create mode 100644 drivers/isdn/hisax/niccy.c create mode 100644 drivers/isdn/hisax/nj_s.c create mode 100644 drivers/isdn/hisax/nj_u.c create mode 100644 drivers/isdn/hisax/q931.c create mode 100644 drivers/isdn/hisax/s0box.c create mode 100644 drivers/isdn/hisax/saphir.c create mode 100644 drivers/isdn/hisax/sedlbauer.c create mode 100644 drivers/isdn/hisax/sedlbauer_cs.c create mode 100644 drivers/isdn/hisax/sportster.c create mode 100644 drivers/isdn/hisax/st5481.h create mode 100644 drivers/isdn/hisax/st5481_b.c create mode 100644 drivers/isdn/hisax/st5481_d.c create mode 100644 drivers/isdn/hisax/st5481_hdlc.c create mode 100644 drivers/isdn/hisax/st5481_hdlc.h create mode 100644 drivers/isdn/hisax/st5481_init.c create mode 100644 drivers/isdn/hisax/st5481_usb.c create mode 100644 drivers/isdn/hisax/tei.c create mode 100644 drivers/isdn/hisax/teleint.c create mode 100644 drivers/isdn/hisax/teles0.c create mode 100644 drivers/isdn/hisax/teles3.c create mode 100644 drivers/isdn/hisax/teles_cs.c create mode 100644 drivers/isdn/hisax/telespci.c create mode 100644 drivers/isdn/hisax/w6692.c create mode 100644 drivers/isdn/hisax/w6692.h create mode 100644 drivers/isdn/hysdn/Kconfig create mode 100644 drivers/isdn/hysdn/Makefile create mode 100644 drivers/isdn/hysdn/boardergo.c create mode 100644 drivers/isdn/hysdn/boardergo.h create mode 100644 drivers/isdn/hysdn/hycapi.c create mode 100644 drivers/isdn/hysdn/hysdn_boot.c create mode 100644 drivers/isdn/hysdn/hysdn_defs.h create mode 100644 drivers/isdn/hysdn/hysdn_init.c create mode 100644 drivers/isdn/hysdn/hysdn_net.c create mode 100644 drivers/isdn/hysdn/hysdn_pof.h create mode 100644 drivers/isdn/hysdn/hysdn_procconf.c create mode 100644 drivers/isdn/hysdn/hysdn_proclog.c create mode 100644 drivers/isdn/hysdn/hysdn_sched.c create mode 100644 drivers/isdn/hysdn/ince1pc.h create mode 100644 drivers/isdn/i4l/Kconfig create mode 100644 drivers/isdn/i4l/Makefile create mode 100644 drivers/isdn/i4l/isdn_audio.c create mode 100644 drivers/isdn/i4l/isdn_audio.h create mode 100644 drivers/isdn/i4l/isdn_bsdcomp.c create mode 100644 drivers/isdn/i4l/isdn_common.c create mode 100644 drivers/isdn/i4l/isdn_common.h create mode 100644 drivers/isdn/i4l/isdn_concap.c create mode 100644 drivers/isdn/i4l/isdn_concap.h create mode 100644 drivers/isdn/i4l/isdn_net.c create mode 100644 drivers/isdn/i4l/isdn_net.h create mode 100644 drivers/isdn/i4l/isdn_ppp.c create mode 100644 drivers/isdn/i4l/isdn_ppp.h create mode 100644 drivers/isdn/i4l/isdn_tty.c create mode 100644 drivers/isdn/i4l/isdn_tty.h create mode 100644 drivers/isdn/i4l/isdn_ttyfax.c create mode 100644 drivers/isdn/i4l/isdn_ttyfax.h create mode 100644 drivers/isdn/i4l/isdn_v110.c create mode 100644 drivers/isdn/i4l/isdn_v110.h create mode 100644 drivers/isdn/i4l/isdn_x25iface.c create mode 100644 drivers/isdn/i4l/isdn_x25iface.h create mode 100644 drivers/isdn/icn/Kconfig create mode 100644 drivers/isdn/icn/Makefile create mode 100644 drivers/isdn/icn/icn.c create mode 100644 drivers/isdn/icn/icn.h create mode 100644 drivers/isdn/isdnloop/Makefile create mode 100644 drivers/isdn/isdnloop/isdnloop.c create mode 100644 drivers/isdn/isdnloop/isdnloop.h create mode 100644 drivers/isdn/pcbit/Kconfig create mode 100644 drivers/isdn/pcbit/Makefile create mode 100644 drivers/isdn/pcbit/callbacks.c create mode 100644 drivers/isdn/pcbit/callbacks.h create mode 100644 drivers/isdn/pcbit/capi.c create mode 100644 drivers/isdn/pcbit/capi.h create mode 100644 drivers/isdn/pcbit/drv.c create mode 100644 drivers/isdn/pcbit/edss1.c create mode 100644 drivers/isdn/pcbit/edss1.h create mode 100644 drivers/isdn/pcbit/layer2.c create mode 100644 drivers/isdn/pcbit/layer2.h create mode 100644 drivers/isdn/pcbit/module.c create mode 100644 drivers/isdn/pcbit/pcbit.h create mode 100644 drivers/isdn/sc/Kconfig create mode 100644 drivers/isdn/sc/Makefile create mode 100644 drivers/isdn/sc/card.h create mode 100644 drivers/isdn/sc/command.c create mode 100644 drivers/isdn/sc/debug.c create mode 100644 drivers/isdn/sc/debug.h create mode 100644 drivers/isdn/sc/event.c create mode 100644 drivers/isdn/sc/hardware.h create mode 100644 drivers/isdn/sc/includes.h create mode 100644 drivers/isdn/sc/init.c create mode 100644 drivers/isdn/sc/interrupt.c create mode 100644 drivers/isdn/sc/ioctl.c create mode 100644 drivers/isdn/sc/message.c create mode 100644 drivers/isdn/sc/message.h create mode 100644 drivers/isdn/sc/packet.c create mode 100644 drivers/isdn/sc/scioc.h create mode 100644 drivers/isdn/sc/shmem.c create mode 100644 drivers/isdn/sc/timer.c create mode 100644 drivers/macintosh/Kconfig create mode 100644 drivers/macintosh/Makefile create mode 100644 drivers/macintosh/adb-iop.c create mode 100644 drivers/macintosh/adb.c create mode 100644 drivers/macintosh/adbhid.c create mode 100644 drivers/macintosh/ans-lcd.c create mode 100644 drivers/macintosh/apm_emu.c create mode 100644 drivers/macintosh/mac_hid.c create mode 100644 drivers/macintosh/macio-adb.c create mode 100644 drivers/macintosh/macio_asic.c create mode 100644 drivers/macintosh/macserial.c create mode 100644 drivers/macintosh/macserial.h create mode 100644 drivers/macintosh/mediabay.c create mode 100644 drivers/macintosh/nvram.c create mode 100644 drivers/macintosh/smu.c create mode 100644 drivers/macintosh/therm_adt746x.c create mode 100644 drivers/macintosh/therm_pm72.c create mode 100644 drivers/macintosh/therm_pm72.h create mode 100644 drivers/macintosh/therm_windtunnel.c create mode 100644 drivers/macintosh/via-cuda.c create mode 100644 drivers/macintosh/via-macii.c create mode 100644 drivers/macintosh/via-maciisi.c create mode 100644 drivers/macintosh/via-pmu.c create mode 100644 drivers/macintosh/via-pmu68k.c create mode 100644 drivers/mca/Kconfig create mode 100644 drivers/mca/Makefile create mode 100644 drivers/mca/mca-bus.c create mode 100644 drivers/mca/mca-device.c create mode 100644 drivers/mca/mca-driver.c create mode 100644 drivers/mca/mca-legacy.c create mode 100644 drivers/mca/mca-proc.c create mode 100644 drivers/md/Kconfig create mode 100644 drivers/md/Makefile create mode 100644 drivers/md/dm-bio-list.h create mode 100644 drivers/md/dm-bio-record.h create mode 100644 drivers/md/dm-crypt.c create mode 100644 drivers/md/dm-emc.c create mode 100644 drivers/md/dm-exception-store.c create mode 100644 drivers/md/dm-hw-handler.c create mode 100644 drivers/md/dm-hw-handler.h create mode 100644 drivers/md/dm-io.c create mode 100644 drivers/md/dm-io.h create mode 100644 drivers/md/dm-ioctl.c create mode 100644 drivers/md/dm-linear.c create mode 100644 drivers/md/dm-log.c create mode 100644 drivers/md/dm-log.h create mode 100644 drivers/md/dm-mpath.c create mode 100644 drivers/md/dm-mpath.h create mode 100644 drivers/md/dm-path-selector.c create mode 100644 drivers/md/dm-path-selector.h create mode 100644 drivers/md/dm-raid1.c create mode 100644 drivers/md/dm-round-robin.c create mode 100644 drivers/md/dm-snap.c create mode 100644 drivers/md/dm-snap.h create mode 100644 drivers/md/dm-stripe.c create mode 100644 drivers/md/dm-table.c create mode 100644 drivers/md/dm-target.c create mode 100644 drivers/md/dm-zero.c create mode 100644 drivers/md/dm.c create mode 100644 drivers/md/dm.h create mode 100644 drivers/md/faulty.c create mode 100644 drivers/md/kcopyd.c create mode 100644 drivers/md/kcopyd.h create mode 100644 drivers/md/linear.c create mode 100644 drivers/md/md.c create mode 100644 drivers/md/mktables.c create mode 100644 drivers/md/multipath.c create mode 100644 drivers/md/raid0.c create mode 100644 drivers/md/raid1.c create mode 100644 drivers/md/raid10.c create mode 100644 drivers/md/raid5.c create mode 100644 drivers/md/raid6.h create mode 100644 drivers/md/raid6algos.c create mode 100644 drivers/md/raid6altivec.uc create mode 100644 drivers/md/raid6int.uc create mode 100644 drivers/md/raid6main.c create mode 100644 drivers/md/raid6mmx.c create mode 100644 drivers/md/raid6recov.c create mode 100644 drivers/md/raid6sse1.c create mode 100644 drivers/md/raid6sse2.c create mode 100644 drivers/md/raid6test/Makefile create mode 100644 drivers/md/raid6test/test.c create mode 100644 drivers/md/raid6x86.h create mode 100644 drivers/md/unroll.pl create mode 100644 drivers/md/xor.c create mode 100644 drivers/media/Kconfig create mode 100644 drivers/media/Makefile create mode 100644 drivers/media/common/Kconfig create mode 100644 drivers/media/common/Makefile create mode 100644 drivers/media/common/ir-common.c create mode 100644 drivers/media/common/saa7146_core.c create mode 100644 drivers/media/common/saa7146_fops.c create mode 100644 drivers/media/common/saa7146_hlp.c create mode 100644 drivers/media/common/saa7146_i2c.c create mode 100644 drivers/media/common/saa7146_vbi.c create mode 100644 drivers/media/common/saa7146_video.c create mode 100644 drivers/media/common/saa7146_vv_ksyms.c create mode 100644 drivers/media/dvb/Kconfig create mode 100644 drivers/media/dvb/Makefile create mode 100644 drivers/media/dvb/b2c2/Kconfig create mode 100644 drivers/media/dvb/b2c2/Makefile create mode 100644 drivers/media/dvb/b2c2/b2c2-common.c create mode 100644 drivers/media/dvb/b2c2/b2c2-usb-core.c create mode 100644 drivers/media/dvb/b2c2/skystar2.c create mode 100644 drivers/media/dvb/bt8xx/Kconfig create mode 100644 drivers/media/dvb/bt8xx/Makefile create mode 100644 drivers/media/dvb/bt8xx/bt878.c create mode 100644 drivers/media/dvb/bt8xx/bt878.h create mode 100644 drivers/media/dvb/bt8xx/dst.c create mode 100644 drivers/media/dvb/bt8xx/dst.h create mode 100644 drivers/media/dvb/bt8xx/dst_priv.h create mode 100644 drivers/media/dvb/bt8xx/dvb-bt8xx.c create mode 100644 drivers/media/dvb/bt8xx/dvb-bt8xx.h create mode 100644 drivers/media/dvb/cinergyT2/Kconfig create mode 100644 drivers/media/dvb/cinergyT2/Makefile create mode 100644 drivers/media/dvb/cinergyT2/cinergyT2.c create mode 100644 drivers/media/dvb/dibusb/Kconfig create mode 100644 drivers/media/dvb/dibusb/Makefile create mode 100644 drivers/media/dvb/dibusb/dvb-dibusb-core.c create mode 100644 drivers/media/dvb/dibusb/dvb-dibusb-dvb.c create mode 100644 drivers/media/dvb/dibusb/dvb-dibusb-fe-i2c.c create mode 100644 drivers/media/dvb/dibusb/dvb-dibusb-firmware.c create mode 100644 drivers/media/dvb/dibusb/dvb-dibusb-remote.c create mode 100644 drivers/media/dvb/dibusb/dvb-dibusb-usb.c create mode 100644 drivers/media/dvb/dibusb/dvb-dibusb.h create mode 100644 drivers/media/dvb/dibusb/dvb-fe-dtt200u.c create mode 100644 drivers/media/dvb/dvb-core/Kconfig create mode 100644 drivers/media/dvb/dvb-core/Makefile create mode 100644 drivers/media/dvb/dvb-core/demux.h create mode 100644 drivers/media/dvb/dvb-core/dmxdev.c create mode 100644 drivers/media/dvb/dvb-core/dmxdev.h create mode 100644 drivers/media/dvb/dvb-core/dvb_ca_en50221.c create mode 100644 drivers/media/dvb/dvb-core/dvb_ca_en50221.h create mode 100644 drivers/media/dvb/dvb-core/dvb_demux.c create mode 100644 drivers/media/dvb/dvb-core/dvb_demux.h create mode 100644 drivers/media/dvb/dvb-core/dvb_filter.c create mode 100644 drivers/media/dvb/dvb-core/dvb_filter.h create mode 100644 drivers/media/dvb/dvb-core/dvb_frontend.c create mode 100644 drivers/media/dvb/dvb-core/dvb_frontend.h create mode 100644 drivers/media/dvb/dvb-core/dvb_net.c create mode 100644 drivers/media/dvb/dvb-core/dvb_net.h create mode 100644 drivers/media/dvb/dvb-core/dvb_ringbuffer.c create mode 100644 drivers/media/dvb/dvb-core/dvb_ringbuffer.h create mode 100644 drivers/media/dvb/dvb-core/dvbdev.c create mode 100644 drivers/media/dvb/dvb-core/dvbdev.h create mode 100644 drivers/media/dvb/frontends/Kconfig create mode 100644 drivers/media/dvb/frontends/Makefile create mode 100644 drivers/media/dvb/frontends/at76c651.c create mode 100644 drivers/media/dvb/frontends/at76c651.h create mode 100644 drivers/media/dvb/frontends/cx22700.c create mode 100644 drivers/media/dvb/frontends/cx22700.h create mode 100644 drivers/media/dvb/frontends/cx22702.c create mode 100644 drivers/media/dvb/frontends/cx22702.h create mode 100644 drivers/media/dvb/frontends/cx24110.c create mode 100644 drivers/media/dvb/frontends/cx24110.h create mode 100644 drivers/media/dvb/frontends/dib3000-common.c create mode 100644 drivers/media/dvb/frontends/dib3000-common.h create mode 100644 drivers/media/dvb/frontends/dib3000.h create mode 100644 drivers/media/dvb/frontends/dib3000mb.c create mode 100644 drivers/media/dvb/frontends/dib3000mb_priv.h create mode 100644 drivers/media/dvb/frontends/dib3000mc.c create mode 100644 drivers/media/dvb/frontends/dib3000mc_priv.h create mode 100644 drivers/media/dvb/frontends/dvb-pll.c create mode 100644 drivers/media/dvb/frontends/dvb-pll.h create mode 100644 drivers/media/dvb/frontends/dvb_dummy_fe.c create mode 100644 drivers/media/dvb/frontends/dvb_dummy_fe.h create mode 100644 drivers/media/dvb/frontends/l64781.c create mode 100644 drivers/media/dvb/frontends/l64781.h create mode 100644 drivers/media/dvb/frontends/mt312.c create mode 100644 drivers/media/dvb/frontends/mt312.h create mode 100644 drivers/media/dvb/frontends/mt312_priv.h create mode 100644 drivers/media/dvb/frontends/mt352.c create mode 100644 drivers/media/dvb/frontends/mt352.h create mode 100644 drivers/media/dvb/frontends/mt352_priv.h create mode 100644 drivers/media/dvb/frontends/nxt2002.c create mode 100644 drivers/media/dvb/frontends/nxt2002.h create mode 100644 drivers/media/dvb/frontends/nxt6000.c create mode 100644 drivers/media/dvb/frontends/nxt6000.h create mode 100644 drivers/media/dvb/frontends/nxt6000_priv.h create mode 100644 drivers/media/dvb/frontends/or51132.c create mode 100644 drivers/media/dvb/frontends/or51132.h create mode 100644 drivers/media/dvb/frontends/or51211.c create mode 100644 drivers/media/dvb/frontends/or51211.h create mode 100644 drivers/media/dvb/frontends/sp8870.c create mode 100644 drivers/media/dvb/frontends/sp8870.h create mode 100644 drivers/media/dvb/frontends/sp887x.c create mode 100644 drivers/media/dvb/frontends/sp887x.h create mode 100644 drivers/media/dvb/frontends/stv0297.c create mode 100644 drivers/media/dvb/frontends/stv0297.h create mode 100644 drivers/media/dvb/frontends/stv0299.c create mode 100644 drivers/media/dvb/frontends/stv0299.h create mode 100644 drivers/media/dvb/frontends/tda10021.c create mode 100644 drivers/media/dvb/frontends/tda10021.h create mode 100644 drivers/media/dvb/frontends/tda1004x.c create mode 100644 drivers/media/dvb/frontends/tda1004x.h create mode 100644 drivers/media/dvb/frontends/tda8083.c create mode 100644 drivers/media/dvb/frontends/tda8083.h create mode 100644 drivers/media/dvb/frontends/tda80xx.c create mode 100644 drivers/media/dvb/frontends/tda80xx.h create mode 100644 drivers/media/dvb/frontends/ves1820.c create mode 100644 drivers/media/dvb/frontends/ves1820.h create mode 100644 drivers/media/dvb/frontends/ves1x93.c create mode 100644 drivers/media/dvb/frontends/ves1x93.h create mode 100644 drivers/media/dvb/ttpci/Kconfig create mode 100644 drivers/media/dvb/ttpci/Makefile create mode 100644 drivers/media/dvb/ttpci/av7110.c create mode 100644 drivers/media/dvb/ttpci/av7110.h create mode 100644 drivers/media/dvb/ttpci/av7110_av.c create mode 100644 drivers/media/dvb/ttpci/av7110_av.h create mode 100644 drivers/media/dvb/ttpci/av7110_ca.c create mode 100644 drivers/media/dvb/ttpci/av7110_ca.h create mode 100644 drivers/media/dvb/ttpci/av7110_hw.c create mode 100644 drivers/media/dvb/ttpci/av7110_hw.h create mode 100644 drivers/media/dvb/ttpci/av7110_ipack.c create mode 100644 drivers/media/dvb/ttpci/av7110_ipack.h create mode 100644 drivers/media/dvb/ttpci/av7110_ir.c create mode 100644 drivers/media/dvb/ttpci/av7110_v4l.c create mode 100644 drivers/media/dvb/ttpci/budget-av.c create mode 100644 drivers/media/dvb/ttpci/budget-ci.c create mode 100644 drivers/media/dvb/ttpci/budget-core.c create mode 100644 drivers/media/dvb/ttpci/budget-patch.c create mode 100644 drivers/media/dvb/ttpci/budget.c create mode 100644 drivers/media/dvb/ttpci/budget.h create mode 100644 drivers/media/dvb/ttpci/fdump.c create mode 100644 drivers/media/dvb/ttpci/ttpci-eeprom.c create mode 100644 drivers/media/dvb/ttpci/ttpci-eeprom.h create mode 100644 drivers/media/dvb/ttusb-budget/Kconfig create mode 100644 drivers/media/dvb/ttusb-budget/Makefile create mode 100644 drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c create mode 100644 drivers/media/dvb/ttusb-budget/dvb-ttusb-dspbootcode.h create mode 100644 drivers/media/dvb/ttusb-dec/Kconfig create mode 100644 drivers/media/dvb/ttusb-dec/Makefile create mode 100644 drivers/media/dvb/ttusb-dec/ttusb_dec.c create mode 100644 drivers/media/dvb/ttusb-dec/ttusbdecfe.c create mode 100644 drivers/media/dvb/ttusb-dec/ttusbdecfe.h create mode 100644 drivers/media/radio/Kconfig create mode 100644 drivers/media/radio/Makefile create mode 100644 drivers/media/radio/miropcm20-radio.c create mode 100644 drivers/media/radio/miropcm20-rds-core.c create mode 100644 drivers/media/radio/miropcm20-rds-core.h create mode 100644 drivers/media/radio/miropcm20-rds.c create mode 100644 drivers/media/radio/radio-aimslab.c create mode 100644 drivers/media/radio/radio-aztech.c create mode 100644 drivers/media/radio/radio-cadet.c create mode 100644 drivers/media/radio/radio-gemtek-pci.c create mode 100644 drivers/media/radio/radio-gemtek.c create mode 100644 drivers/media/radio/radio-maestro.c create mode 100644 drivers/media/radio/radio-maxiradio.c create mode 100644 drivers/media/radio/radio-rtrack2.c create mode 100644 drivers/media/radio/radio-sf16fmi.c create mode 100644 drivers/media/radio/radio-sf16fmr2.c create mode 100644 drivers/media/radio/radio-terratec.c create mode 100644 drivers/media/radio/radio-trust.c create mode 100644 drivers/media/radio/radio-typhoon.c create mode 100644 drivers/media/radio/radio-zoltrix.c create mode 100644 drivers/media/video/Kconfig create mode 100644 drivers/media/video/Makefile create mode 100644 drivers/media/video/adv7170.c create mode 100644 drivers/media/video/adv7175.c create mode 100644 drivers/media/video/arv.c create mode 100644 drivers/media/video/bt819.c create mode 100644 drivers/media/video/bt832.c create mode 100644 drivers/media/video/bt832.h create mode 100644 drivers/media/video/bt848.h create mode 100644 drivers/media/video/bt856.c create mode 100644 drivers/media/video/btcx-risc.c create mode 100644 drivers/media/video/btcx-risc.h create mode 100644 drivers/media/video/bttv-cards.c create mode 100644 drivers/media/video/bttv-driver.c create mode 100644 drivers/media/video/bttv-gpio.c create mode 100644 drivers/media/video/bttv-i2c.c create mode 100644 drivers/media/video/bttv-if.c create mode 100644 drivers/media/video/bttv-risc.c create mode 100644 drivers/media/video/bttv-vbi.c create mode 100644 drivers/media/video/bttv.h create mode 100644 drivers/media/video/bttvp.h create mode 100644 drivers/media/video/bw-qcam.c create mode 100644 drivers/media/video/bw-qcam.h create mode 100644 drivers/media/video/c-qcam.c create mode 100644 drivers/media/video/cpia.c create mode 100644 drivers/media/video/cpia.h create mode 100644 drivers/media/video/cpia_pp.c create mode 100644 drivers/media/video/cpia_usb.c create mode 100644 drivers/media/video/cs8420.h create mode 100644 drivers/media/video/cx88/Makefile create mode 100644 drivers/media/video/cx88/cx88-blackbird.c create mode 100644 drivers/media/video/cx88/cx88-cards.c create mode 100644 drivers/media/video/cx88/cx88-core.c create mode 100644 drivers/media/video/cx88/cx88-dvb.c create mode 100644 drivers/media/video/cx88/cx88-i2c.c create mode 100644 drivers/media/video/cx88/cx88-input.c create mode 100644 drivers/media/video/cx88/cx88-mpeg.c create mode 100644 drivers/media/video/cx88/cx88-reg.h create mode 100644 drivers/media/video/cx88/cx88-tvaudio.c create mode 100644 drivers/media/video/cx88/cx88-vbi.c create mode 100644 drivers/media/video/cx88/cx88-video.c create mode 100644 drivers/media/video/cx88/cx88.h create mode 100644 drivers/media/video/dpc7146.c create mode 100644 drivers/media/video/hexium_gemini.c create mode 100644 drivers/media/video/hexium_orion.c create mode 100644 drivers/media/video/ibmmpeg2.h create mode 100644 drivers/media/video/ir-kbd-gpio.c create mode 100644 drivers/media/video/ir-kbd-i2c.c create mode 100644 drivers/media/video/meye.c create mode 100644 drivers/media/video/meye.h create mode 100644 drivers/media/video/msp3400.c create mode 100644 drivers/media/video/msp3400.h create mode 100644 drivers/media/video/mt20xx.c create mode 100644 drivers/media/video/mxb.c create mode 100644 drivers/media/video/mxb.h create mode 100644 drivers/media/video/ovcamchip/Makefile create mode 100644 drivers/media/video/ovcamchip/ov6x20.c create mode 100644 drivers/media/video/ovcamchip/ov6x30.c create mode 100644 drivers/media/video/ovcamchip/ov76be.c create mode 100644 drivers/media/video/ovcamchip/ov7x10.c create mode 100644 drivers/media/video/ovcamchip/ov7x20.c create mode 100644 drivers/media/video/ovcamchip/ovcamchip_core.c create mode 100644 drivers/media/video/ovcamchip/ovcamchip_priv.h create mode 100644 drivers/media/video/planb.c create mode 100644 drivers/media/video/planb.h create mode 100644 drivers/media/video/pms.c create mode 100644 drivers/media/video/saa5246a.c create mode 100644 drivers/media/video/saa5246a.h create mode 100644 drivers/media/video/saa5249.c create mode 100644 drivers/media/video/saa7110.c create mode 100644 drivers/media/video/saa7111.c create mode 100644 drivers/media/video/saa7114.c create mode 100644 drivers/media/video/saa7121.h create mode 100644 drivers/media/video/saa7134/Makefile create mode 100644 drivers/media/video/saa7134/saa6752hs.c create mode 100644 drivers/media/video/saa7134/saa7134-cards.c create mode 100644 drivers/media/video/saa7134/saa7134-core.c create mode 100644 drivers/media/video/saa7134/saa7134-dvb.c create mode 100644 drivers/media/video/saa7134/saa7134-empress.c create mode 100644 drivers/media/video/saa7134/saa7134-i2c.c create mode 100644 drivers/media/video/saa7134/saa7134-input.c create mode 100644 drivers/media/video/saa7134/saa7134-oss.c create mode 100644 drivers/media/video/saa7134/saa7134-reg.h create mode 100644 drivers/media/video/saa7134/saa7134-ts.c create mode 100644 drivers/media/video/saa7134/saa7134-tvaudio.c create mode 100644 drivers/media/video/saa7134/saa7134-vbi.c create mode 100644 drivers/media/video/saa7134/saa7134-video.c create mode 100644 drivers/media/video/saa7134/saa7134.h create mode 100644 drivers/media/video/saa7146.h create mode 100644 drivers/media/video/saa7146reg.h create mode 100644 drivers/media/video/saa7185.c create mode 100644 drivers/media/video/saa7196.h create mode 100644 drivers/media/video/stradis.c create mode 100644 drivers/media/video/tda7432.c create mode 100644 drivers/media/video/tda8290.c create mode 100644 drivers/media/video/tda9840.c create mode 100644 drivers/media/video/tda9840.h create mode 100644 drivers/media/video/tda9875.c create mode 100644 drivers/media/video/tda9887.c create mode 100644 drivers/media/video/tea6415c.c create mode 100644 drivers/media/video/tea6415c.h create mode 100644 drivers/media/video/tea6420.c create mode 100644 drivers/media/video/tea6420.h create mode 100644 drivers/media/video/tuner-3036.c create mode 100644 drivers/media/video/tuner-core.c create mode 100644 drivers/media/video/tuner-simple.c create mode 100644 drivers/media/video/tvaudio.c create mode 100644 drivers/media/video/tvaudio.h create mode 100644 drivers/media/video/tveeprom.c create mode 100644 drivers/media/video/tvmixer.c create mode 100644 drivers/media/video/v4l1-compat.c create mode 100644 drivers/media/video/v4l2-common.c create mode 100644 drivers/media/video/video-buf-dvb.c create mode 100644 drivers/media/video/video-buf.c create mode 100644 drivers/media/video/videocodec.c create mode 100644 drivers/media/video/videocodec.h create mode 100644 drivers/media/video/videodev.c create mode 100644 drivers/media/video/vino.c create mode 100644 drivers/media/video/vino.h create mode 100644 drivers/media/video/vpx3220.c create mode 100644 drivers/media/video/w9966.c create mode 100644 drivers/media/video/zoran.h create mode 100644 drivers/media/video/zoran_card.c create mode 100644 drivers/media/video/zoran_card.h create mode 100644 drivers/media/video/zoran_device.c create mode 100644 drivers/media/video/zoran_device.h create mode 100644 drivers/media/video/zoran_driver.c create mode 100644 drivers/media/video/zoran_procfs.c create mode 100644 drivers/media/video/zoran_procfs.h create mode 100644 drivers/media/video/zr36016.c create mode 100644 drivers/media/video/zr36016.h create mode 100644 drivers/media/video/zr36050.c create mode 100644 drivers/media/video/zr36050.h create mode 100644 drivers/media/video/zr36057.h create mode 100644 drivers/media/video/zr36060.c create mode 100644 drivers/media/video/zr36060.h create mode 100644 drivers/media/video/zr36120.c create mode 100644 drivers/media/video/zr36120.h create mode 100644 drivers/media/video/zr36120_i2c.c create mode 100644 drivers/media/video/zr36120_mem.c create mode 100644 drivers/media/video/zr36120_mem.h create mode 100644 drivers/message/Makefile create mode 100644 drivers/message/fusion/Kconfig create mode 100644 drivers/message/fusion/Makefile create mode 100644 drivers/message/fusion/linux_compat.h create mode 100644 drivers/message/fusion/lsi/fc_log.h create mode 100644 drivers/message/fusion/lsi/mpi.h create mode 100644 drivers/message/fusion/lsi/mpi_cnfg.h create mode 100644 drivers/message/fusion/lsi/mpi_fc.h create mode 100644 drivers/message/fusion/lsi/mpi_history.txt create mode 100644 drivers/message/fusion/lsi/mpi_inb.h create mode 100644 drivers/message/fusion/lsi/mpi_init.h create mode 100644 drivers/message/fusion/lsi/mpi_ioc.h create mode 100644 drivers/message/fusion/lsi/mpi_lan.h create mode 100644 drivers/message/fusion/lsi/mpi_raid.h create mode 100644 drivers/message/fusion/lsi/mpi_sas.h create mode 100644 drivers/message/fusion/lsi/mpi_targ.h create mode 100644 drivers/message/fusion/lsi/mpi_tool.h create mode 100644 drivers/message/fusion/lsi/mpi_type.h create mode 100644 drivers/message/fusion/mptbase.c create mode 100644 drivers/message/fusion/mptbase.h create mode 100644 drivers/message/fusion/mptctl.c create mode 100644 drivers/message/fusion/mptctl.h create mode 100644 drivers/message/fusion/mptlan.c create mode 100644 drivers/message/fusion/mptlan.h create mode 100644 drivers/message/fusion/mptscsih.c create mode 100644 drivers/message/fusion/mptscsih.h create mode 100644 drivers/message/i2o/Kconfig create mode 100644 drivers/message/i2o/Makefile create mode 100644 drivers/message/i2o/README create mode 100644 drivers/message/i2o/README.ioctl create mode 100644 drivers/message/i2o/debug.c create mode 100644 drivers/message/i2o/device.c create mode 100644 drivers/message/i2o/driver.c create mode 100644 drivers/message/i2o/exec-osm.c create mode 100644 drivers/message/i2o/i2o_block.c create mode 100644 drivers/message/i2o/i2o_block.h create mode 100644 drivers/message/i2o/i2o_config.c create mode 100644 drivers/message/i2o/i2o_lan.h create mode 100644 drivers/message/i2o/i2o_proc.c create mode 100644 drivers/message/i2o/i2o_scsi.c create mode 100644 drivers/message/i2o/iop.c create mode 100644 drivers/message/i2o/pci.c create mode 100644 drivers/misc/Kconfig create mode 100644 drivers/misc/Makefile create mode 100644 drivers/misc/hdpuftrs/Makefile create mode 100644 drivers/misc/hdpuftrs/hdpu_cpustate.c create mode 100644 drivers/misc/hdpuftrs/hdpu_nexus.c create mode 100644 drivers/misc/ibmasm/Makefile create mode 100644 drivers/misc/ibmasm/command.c create mode 100644 drivers/misc/ibmasm/dot_command.c create mode 100644 drivers/misc/ibmasm/dot_command.h create mode 100644 drivers/misc/ibmasm/event.c create mode 100644 drivers/misc/ibmasm/heartbeat.c create mode 100644 drivers/misc/ibmasm/i2o.h create mode 100644 drivers/misc/ibmasm/ibmasm.h create mode 100644 drivers/misc/ibmasm/ibmasmfs.c create mode 100644 drivers/misc/ibmasm/lowlevel.c create mode 100644 drivers/misc/ibmasm/lowlevel.h create mode 100644 drivers/misc/ibmasm/module.c create mode 100644 drivers/misc/ibmasm/r_heartbeat.c create mode 100644 drivers/misc/ibmasm/remote.c create mode 100644 drivers/misc/ibmasm/remote.h create mode 100644 drivers/misc/ibmasm/uart.c create mode 100644 drivers/mmc/Kconfig create mode 100644 drivers/mmc/Makefile create mode 100644 drivers/mmc/mmc.c create mode 100644 drivers/mmc/mmc.h create mode 100644 drivers/mmc/mmc_block.c create mode 100644 drivers/mmc/mmc_queue.c create mode 100644 drivers/mmc/mmc_queue.h create mode 100644 drivers/mmc/mmc_sysfs.c create mode 100644 drivers/mmc/mmci.c create mode 100644 drivers/mmc/mmci.h create mode 100644 drivers/mmc/pxamci.c create mode 100644 drivers/mmc/pxamci.h create mode 100644 drivers/mmc/wbsd.c create mode 100644 drivers/mmc/wbsd.h create mode 100644 drivers/mtd/Kconfig create mode 100644 drivers/mtd/Makefile create mode 100644 drivers/mtd/afs.c create mode 100644 drivers/mtd/chips/Kconfig create mode 100644 drivers/mtd/chips/Makefile create mode 100644 drivers/mtd/chips/amd_flash.c create mode 100644 drivers/mtd/chips/cfi_cmdset_0001.c create mode 100644 drivers/mtd/chips/cfi_cmdset_0002.c create mode 100644 drivers/mtd/chips/cfi_cmdset_0020.c create mode 100644 drivers/mtd/chips/cfi_probe.c create mode 100644 drivers/mtd/chips/cfi_util.c create mode 100644 drivers/mtd/chips/chipreg.c create mode 100644 drivers/mtd/chips/fwh_lock.h create mode 100644 drivers/mtd/chips/gen_probe.c create mode 100644 drivers/mtd/chips/jedec.c create mode 100644 drivers/mtd/chips/jedec_probe.c create mode 100644 drivers/mtd/chips/map_absent.c create mode 100644 drivers/mtd/chips/map_ram.c create mode 100644 drivers/mtd/chips/map_rom.c create mode 100644 drivers/mtd/chips/sharp.c create mode 100644 drivers/mtd/cmdlinepart.c create mode 100644 drivers/mtd/devices/Kconfig create mode 100644 drivers/mtd/devices/Makefile create mode 100644 drivers/mtd/devices/blkmtd.c create mode 100644 drivers/mtd/devices/block2mtd.c create mode 100644 drivers/mtd/devices/doc2000.c create mode 100644 drivers/mtd/devices/doc2001.c create mode 100644 drivers/mtd/devices/doc2001plus.c create mode 100644 drivers/mtd/devices/docecc.c create mode 100644 drivers/mtd/devices/docprobe.c create mode 100644 drivers/mtd/devices/lart.c create mode 100644 drivers/mtd/devices/ms02-nv.c create mode 100644 drivers/mtd/devices/ms02-nv.h create mode 100644 drivers/mtd/devices/mtdram.c create mode 100644 drivers/mtd/devices/phram.c create mode 100644 drivers/mtd/devices/pmc551.c create mode 100644 drivers/mtd/devices/slram.c create mode 100644 drivers/mtd/ftl.c create mode 100644 drivers/mtd/inftlcore.c create mode 100644 drivers/mtd/inftlmount.c create mode 100644 drivers/mtd/maps/Kconfig create mode 100644 drivers/mtd/maps/Makefile create mode 100644 drivers/mtd/maps/amd76xrom.c create mode 100644 drivers/mtd/maps/arctic-mtd.c create mode 100644 drivers/mtd/maps/autcpu12-nvram.c create mode 100644 drivers/mtd/maps/bast-flash.c create mode 100644 drivers/mtd/maps/beech-mtd.c create mode 100644 drivers/mtd/maps/cdb89712.c create mode 100644 drivers/mtd/maps/ceiva.c create mode 100644 drivers/mtd/maps/cfi_flagadm.c create mode 100644 drivers/mtd/maps/cstm_mips_ixx.c create mode 100644 drivers/mtd/maps/db1550-flash.c create mode 100644 drivers/mtd/maps/db1x00-flash.c create mode 100644 drivers/mtd/maps/dbox2-flash.c create mode 100644 drivers/mtd/maps/dc21285.c create mode 100644 drivers/mtd/maps/dilnetpc.c create mode 100644 drivers/mtd/maps/dmv182.c create mode 100644 drivers/mtd/maps/ebony.c create mode 100644 drivers/mtd/maps/edb7312.c create mode 100644 drivers/mtd/maps/elan-104nc.c create mode 100644 drivers/mtd/maps/epxa10db-flash.c create mode 100644 drivers/mtd/maps/fortunet.c create mode 100644 drivers/mtd/maps/h720x-flash.c create mode 100644 drivers/mtd/maps/ichxrom.c create mode 100644 drivers/mtd/maps/impa7.c create mode 100644 drivers/mtd/maps/integrator-flash.c create mode 100644 drivers/mtd/maps/ipaq-flash.c create mode 100644 drivers/mtd/maps/iq80310.c create mode 100644 drivers/mtd/maps/ixp2000.c create mode 100644 drivers/mtd/maps/ixp4xx.c create mode 100644 drivers/mtd/maps/l440gx.c create mode 100644 drivers/mtd/maps/lasat.c create mode 100644 drivers/mtd/maps/lubbock-flash.c create mode 100644 drivers/mtd/maps/map_funcs.c create mode 100644 drivers/mtd/maps/mbx860.c create mode 100644 drivers/mtd/maps/mpc1211.c create mode 100644 drivers/mtd/maps/netsc520.c create mode 100644 drivers/mtd/maps/nettel.c create mode 100644 drivers/mtd/maps/ocelot.c create mode 100644 drivers/mtd/maps/ocotea.c create mode 100644 drivers/mtd/maps/octagon-5066.c create mode 100644 drivers/mtd/maps/omap-toto-flash.c create mode 100644 drivers/mtd/maps/pb1550-flash.c create mode 100644 drivers/mtd/maps/pb1xxx-flash.c create mode 100644 drivers/mtd/maps/pci.c create mode 100644 drivers/mtd/maps/pcmciamtd.c create mode 100644 drivers/mtd/maps/physmap.c create mode 100644 drivers/mtd/maps/pnc2000.c create mode 100644 drivers/mtd/maps/redwood.c create mode 100644 drivers/mtd/maps/rpxlite.c create mode 100644 drivers/mtd/maps/sa1100-flash.c create mode 100644 drivers/mtd/maps/sbc8240.c create mode 100644 drivers/mtd/maps/sbc_gxx.c create mode 100644 drivers/mtd/maps/sc520cdp.c create mode 100644 drivers/mtd/maps/scb2_flash.c create mode 100644 drivers/mtd/maps/scx200_docflash.c create mode 100644 drivers/mtd/maps/sharpsl-flash.c create mode 100644 drivers/mtd/maps/solutionengine.c create mode 100644 drivers/mtd/maps/sun_uflash.c create mode 100644 drivers/mtd/maps/tqm8xxl.c create mode 100644 drivers/mtd/maps/ts5500_flash.c create mode 100644 drivers/mtd/maps/tsunami_flash.c create mode 100644 drivers/mtd/maps/uclinux.c create mode 100644 drivers/mtd/maps/vmax301.c create mode 100644 drivers/mtd/maps/walnut.c create mode 100644 drivers/mtd/maps/wr_sbc82xx_flash.c create mode 100644 drivers/mtd/mtd_blkdevs.c create mode 100644 drivers/mtd/mtdblock.c create mode 100644 drivers/mtd/mtdblock_ro.c create mode 100644 drivers/mtd/mtdchar.c create mode 100644 drivers/mtd/mtdconcat.c create mode 100644 drivers/mtd/mtdcore.c create mode 100644 drivers/mtd/mtdpart.c create mode 100644 drivers/mtd/nand/Kconfig create mode 100644 drivers/mtd/nand/Makefile create mode 100644 drivers/mtd/nand/au1550nd.c create mode 100644 drivers/mtd/nand/autcpu12.c create mode 100644 drivers/mtd/nand/diskonchip.c create mode 100644 drivers/mtd/nand/edb7312.c create mode 100644 drivers/mtd/nand/h1910.c create mode 100644 drivers/mtd/nand/nand_base.c create mode 100644 drivers/mtd/nand/nand_bbt.c create mode 100644 drivers/mtd/nand/nand_ecc.c create mode 100644 drivers/mtd/nand/nand_ids.c create mode 100644 drivers/mtd/nand/nandsim.c create mode 100644 drivers/mtd/nand/ppchameleonevb.c create mode 100644 drivers/mtd/nand/rtc_from4.c create mode 100644 drivers/mtd/nand/s3c2410.c create mode 100755 drivers/mtd/nand/sharpsl.c create mode 100644 drivers/mtd/nand/spia.c create mode 100644 drivers/mtd/nand/toto.c create mode 100644 drivers/mtd/nand/tx4925ndfmc.c create mode 100644 drivers/mtd/nand/tx4938ndfmc.c create mode 100644 drivers/mtd/nftlcore.c create mode 100644 drivers/mtd/nftlmount.c create mode 100644 drivers/mtd/redboot.c create mode 100644 drivers/net/3c501.c create mode 100644 drivers/net/3c501.h create mode 100644 drivers/net/3c503.c create mode 100644 drivers/net/3c503.h create mode 100644 drivers/net/3c505.c create mode 100644 drivers/net/3c505.h create mode 100644 drivers/net/3c507.c create mode 100644 drivers/net/3c509.c create mode 100644 drivers/net/3c515.c create mode 100644 drivers/net/3c523.c create mode 100644 drivers/net/3c523.h create mode 100644 drivers/net/3c527.c create mode 100644 drivers/net/3c527.h create mode 100644 drivers/net/3c59x.c create mode 100644 drivers/net/7990.c create mode 100644 drivers/net/7990.h create mode 100644 drivers/net/8139cp.c create mode 100644 drivers/net/8139too.c create mode 100644 drivers/net/82596.c create mode 100644 drivers/net/8390.c create mode 100644 drivers/net/8390.h create mode 100644 drivers/net/Kconfig create mode 100644 drivers/net/LICENSE.SRC create mode 100644 drivers/net/Makefile create mode 100644 drivers/net/Space.c create mode 100644 drivers/net/a2065.c create mode 100644 drivers/net/a2065.h create mode 100644 drivers/net/ac3200.c create mode 100644 drivers/net/acenic.c create mode 100644 drivers/net/acenic.h create mode 100644 drivers/net/acenic_firmware.h create mode 100755 drivers/net/amd8111e.c create mode 100755 drivers/net/amd8111e.h create mode 100644 drivers/net/apne.c create mode 100644 drivers/net/appletalk/Kconfig create mode 100644 drivers/net/appletalk/Makefile create mode 100644 drivers/net/appletalk/cops.c create mode 100644 drivers/net/appletalk/cops.h create mode 100644 drivers/net/appletalk/cops_ffdrv.h create mode 100644 drivers/net/appletalk/cops_ltdrv.h create mode 100644 drivers/net/appletalk/ipddp.c create mode 100644 drivers/net/appletalk/ipddp.h create mode 100644 drivers/net/appletalk/ltpc.c create mode 100644 drivers/net/appletalk/ltpc.h create mode 100644 drivers/net/arcnet/Kconfig create mode 100644 drivers/net/arcnet/Makefile create mode 100644 drivers/net/arcnet/arc-rawmode.c create mode 100644 drivers/net/arcnet/arc-rimi.c create mode 100644 drivers/net/arcnet/arcnet.c create mode 100644 drivers/net/arcnet/capmode.c create mode 100644 drivers/net/arcnet/com20020-isa.c create mode 100644 drivers/net/arcnet/com20020-pci.c create mode 100644 drivers/net/arcnet/com20020.c create mode 100644 drivers/net/arcnet/com90io.c create mode 100644 drivers/net/arcnet/com90xx.c create mode 100644 drivers/net/arcnet/rfc1051.c create mode 100644 drivers/net/arcnet/rfc1201.c create mode 100644 drivers/net/ariadne.c create mode 100644 drivers/net/ariadne.h create mode 100644 drivers/net/arm/Kconfig create mode 100644 drivers/net/arm/Makefile create mode 100644 drivers/net/arm/am79c961a.c create mode 100644 drivers/net/arm/am79c961a.h create mode 100644 drivers/net/arm/ether00.c create mode 100644 drivers/net/arm/ether1.c create mode 100644 drivers/net/arm/ether1.h create mode 100644 drivers/net/arm/ether3.c create mode 100644 drivers/net/arm/ether3.h create mode 100644 drivers/net/arm/etherh.c create mode 100644 drivers/net/at1700.c create mode 100644 drivers/net/atari_bionet.c create mode 100644 drivers/net/atari_pamsnet.c create mode 100644 drivers/net/atarilance.c create mode 100644 drivers/net/atp.c create mode 100644 drivers/net/atp.h create mode 100644 drivers/net/au1000_eth.c create mode 100644 drivers/net/au1000_eth.h create mode 100644 drivers/net/b44.c create mode 100644 drivers/net/b44.h create mode 100644 drivers/net/bmac.c create mode 100644 drivers/net/bmac.h create mode 100644 drivers/net/bonding/Makefile create mode 100644 drivers/net/bonding/bond_3ad.c create mode 100644 drivers/net/bonding/bond_3ad.h create mode 100644 drivers/net/bonding/bond_alb.c create mode 100644 drivers/net/bonding/bond_alb.h create mode 100644 drivers/net/bonding/bond_main.c create mode 100644 drivers/net/bonding/bonding.h create mode 100644 drivers/net/bsd_comp.c create mode 100644 drivers/net/cris/Makefile create mode 100644 drivers/net/cris/eth_v10.c create mode 100644 drivers/net/cs89x0.c create mode 100644 drivers/net/cs89x0.h create mode 100644 drivers/net/de600.c create mode 100644 drivers/net/de600.h create mode 100644 drivers/net/de620.c create mode 100644 drivers/net/de620.h create mode 100644 drivers/net/declance.c create mode 100644 drivers/net/defxx.c create mode 100644 drivers/net/defxx.h create mode 100644 drivers/net/depca.c create mode 100644 drivers/net/depca.h create mode 100644 drivers/net/dgrs.c create mode 100644 drivers/net/dgrs.h create mode 100644 drivers/net/dgrs_asstruct.h create mode 100644 drivers/net/dgrs_bcomm.h create mode 100644 drivers/net/dgrs_es4h.h create mode 100644 drivers/net/dgrs_ether.h create mode 100644 drivers/net/dgrs_firmware.c create mode 100644 drivers/net/dgrs_i82596.h create mode 100644 drivers/net/dgrs_plx9060.h create mode 100644 drivers/net/dl2k.c create mode 100644 drivers/net/dl2k.h create mode 100644 drivers/net/dummy.c create mode 100644 drivers/net/e100.c create mode 100644 drivers/net/e1000/LICENSE create mode 100644 drivers/net/e1000/Makefile create mode 100644 drivers/net/e1000/e1000.h create mode 100644 drivers/net/e1000/e1000_ethtool.c create mode 100644 drivers/net/e1000/e1000_hw.c create mode 100644 drivers/net/e1000/e1000_hw.h create mode 100644 drivers/net/e1000/e1000_main.c create mode 100644 drivers/net/e1000/e1000_osdep.h create mode 100644 drivers/net/e1000/e1000_param.c create mode 100644 drivers/net/e2100.c create mode 100644 drivers/net/eepro.c create mode 100644 drivers/net/eepro100.c create mode 100644 drivers/net/eexpress.c create mode 100644 drivers/net/eexpress.h create mode 100644 drivers/net/epic100.c create mode 100644 drivers/net/eql.c create mode 100644 drivers/net/es3210.c create mode 100644 drivers/net/eth16i.c create mode 100644 drivers/net/ewrk3.c create mode 100644 drivers/net/ewrk3.h create mode 100644 drivers/net/fealnx.c create mode 100644 drivers/net/fec.c create mode 100644 drivers/net/fec.h create mode 100644 drivers/net/fec_8xx/Kconfig create mode 100644 drivers/net/fec_8xx/Makefile create mode 100644 drivers/net/fec_8xx/fec_8xx-netta.c create mode 100644 drivers/net/fec_8xx/fec_8xx.h create mode 100644 drivers/net/fec_8xx/fec_main.c create mode 100644 drivers/net/fec_8xx/fec_mii.c create mode 100644 drivers/net/fmv18x.c create mode 100644 drivers/net/forcedeth.c create mode 100644 drivers/net/gianfar.c create mode 100644 drivers/net/gianfar.h create mode 100644 drivers/net/gianfar_ethtool.c create mode 100644 drivers/net/gianfar_phy.c create mode 100644 drivers/net/gianfar_phy.h create mode 100644 drivers/net/gt64240eth.h create mode 100644 drivers/net/gt96100eth.c create mode 100644 drivers/net/gt96100eth.h create mode 100644 drivers/net/hamachi.c create mode 100644 drivers/net/hamradio/6pack.c create mode 100644 drivers/net/hamradio/Kconfig create mode 100644 drivers/net/hamradio/Makefile create mode 100644 drivers/net/hamradio/baycom_epp.c create mode 100644 drivers/net/hamradio/baycom_par.c create mode 100644 drivers/net/hamradio/baycom_ser_fdx.c create mode 100644 drivers/net/hamradio/baycom_ser_hdx.c create mode 100644 drivers/net/hamradio/bpqether.c create mode 100644 drivers/net/hamradio/dmascc.c create mode 100644 drivers/net/hamradio/hdlcdrv.c create mode 100644 drivers/net/hamradio/mkiss.c create mode 100644 drivers/net/hamradio/mkiss.h create mode 100644 drivers/net/hamradio/scc.c create mode 100644 drivers/net/hamradio/yam.c create mode 100644 drivers/net/hamradio/yam1200.h create mode 100644 drivers/net/hamradio/yam9600.h create mode 100644 drivers/net/hamradio/z8530.h create mode 100644 drivers/net/hp-plus.c create mode 100644 drivers/net/hp.c create mode 100644 drivers/net/hp100.c create mode 100644 drivers/net/hp100.h create mode 100644 drivers/net/hplance.c create mode 100644 drivers/net/hplance.h create mode 100644 drivers/net/hydra.c create mode 100644 drivers/net/hydra.h create mode 100644 drivers/net/ibm_emac/Makefile create mode 100644 drivers/net/ibm_emac/ibm_emac.h create mode 100644 drivers/net/ibm_emac/ibm_emac_core.c create mode 100644 drivers/net/ibm_emac/ibm_emac_core.h create mode 100644 drivers/net/ibm_emac/ibm_emac_debug.c create mode 100644 drivers/net/ibm_emac/ibm_emac_mal.c create mode 100644 drivers/net/ibm_emac/ibm_emac_mal.h create mode 100644 drivers/net/ibm_emac/ibm_emac_phy.c create mode 100644 drivers/net/ibm_emac/ibm_emac_phy.h create mode 100644 drivers/net/ibm_emac/ibm_emac_rgmii.h create mode 100644 drivers/net/ibm_emac/ibm_emac_tah.h create mode 100644 drivers/net/ibm_emac/ibm_emac_zmii.h create mode 100644 drivers/net/ibmlana.c create mode 100644 drivers/net/ibmlana.h create mode 100644 drivers/net/ibmveth.c create mode 100644 drivers/net/ibmveth.h create mode 100644 drivers/net/ioc3-eth.c create mode 100644 drivers/net/irda/Kconfig create mode 100644 drivers/net/irda/Makefile create mode 100644 drivers/net/irda/act200l-sir.c create mode 100644 drivers/net/irda/act200l.c create mode 100644 drivers/net/irda/actisys-sir.c create mode 100644 drivers/net/irda/actisys.c create mode 100644 drivers/net/irda/ali-ircc.c create mode 100644 drivers/net/irda/ali-ircc.h create mode 100644 drivers/net/irda/au1000_ircc.h create mode 100644 drivers/net/irda/au1k_ir.c create mode 100644 drivers/net/irda/donauboe.c create mode 100644 drivers/net/irda/donauboe.h create mode 100644 drivers/net/irda/ep7211_ir.c create mode 100644 drivers/net/irda/esi-sir.c create mode 100644 drivers/net/irda/esi.c create mode 100644 drivers/net/irda/girbil-sir.c create mode 100644 drivers/net/irda/girbil.c create mode 100644 drivers/net/irda/irda-usb.c create mode 100644 drivers/net/irda/irda-usb.h create mode 100644 drivers/net/irda/irport.c create mode 100644 drivers/net/irda/irport.h create mode 100644 drivers/net/irda/irtty-sir.c create mode 100644 drivers/net/irda/irtty-sir.h create mode 100644 drivers/net/irda/litelink-sir.c create mode 100644 drivers/net/irda/litelink.c create mode 100644 drivers/net/irda/ma600-sir.c create mode 100644 drivers/net/irda/ma600.c create mode 100644 drivers/net/irda/mcp2120-sir.c create mode 100644 drivers/net/irda/mcp2120.c create mode 100644 drivers/net/irda/nsc-ircc.c create mode 100644 drivers/net/irda/nsc-ircc.h create mode 100644 drivers/net/irda/old_belkin-sir.c create mode 100644 drivers/net/irda/old_belkin.c create mode 100644 drivers/net/irda/sa1100_ir.c create mode 100644 drivers/net/irda/sir-dev.h create mode 100644 drivers/net/irda/sir_core.c create mode 100644 drivers/net/irda/sir_dev.c create mode 100644 drivers/net/irda/sir_dongle.c create mode 100644 drivers/net/irda/sir_kthread.c create mode 100644 drivers/net/irda/smsc-ircc2.c create mode 100644 drivers/net/irda/smsc-ircc2.h create mode 100644 drivers/net/irda/smsc-sio.h create mode 100644 drivers/net/irda/stir4200.c create mode 100644 drivers/net/irda/tekram-sir.c create mode 100644 drivers/net/irda/tekram.c create mode 100644 drivers/net/irda/via-ircc.c create mode 100644 drivers/net/irda/via-ircc.h create mode 100644 drivers/net/irda/vlsi_ir.c create mode 100644 drivers/net/irda/vlsi_ir.h create mode 100644 drivers/net/irda/w83977af.h create mode 100644 drivers/net/irda/w83977af_ir.c create mode 100644 drivers/net/irda/w83977af_ir.h create mode 100644 drivers/net/isa-skeleton.c create mode 100644 drivers/net/iseries_veth.c create mode 100644 drivers/net/iseries_veth.h create mode 100644 drivers/net/ixgb/Makefile create mode 100644 drivers/net/ixgb/ixgb.h create mode 100644 drivers/net/ixgb/ixgb_ee.c create mode 100644 drivers/net/ixgb/ixgb_ee.h create mode 100644 drivers/net/ixgb/ixgb_ethtool.c create mode 100644 drivers/net/ixgb/ixgb_hw.c create mode 100644 drivers/net/ixgb/ixgb_hw.h create mode 100644 drivers/net/ixgb/ixgb_ids.h create mode 100644 drivers/net/ixgb/ixgb_main.c create mode 100644 drivers/net/ixgb/ixgb_osdep.h create mode 100644 drivers/net/ixgb/ixgb_param.c create mode 100644 drivers/net/jazzsonic.c create mode 100644 drivers/net/lance.c create mode 100644 drivers/net/lasi_82596.c create mode 100644 drivers/net/lne390.c create mode 100644 drivers/net/loopback.c create mode 100644 drivers/net/lp486e.c create mode 100644 drivers/net/mac8390.c create mode 100644 drivers/net/mac89x0.c create mode 100644 drivers/net/mace.c create mode 100644 drivers/net/mace.h create mode 100644 drivers/net/macmace.c create mode 100644 drivers/net/macsonic.c create mode 100644 drivers/net/meth.c create mode 100644 drivers/net/meth.h create mode 100644 drivers/net/mii.c create mode 100644 drivers/net/mv643xx_eth.c create mode 100644 drivers/net/mv643xx_eth.h create mode 100644 drivers/net/mvme147.c create mode 100644 drivers/net/myri_code.h create mode 100644 drivers/net/myri_sbus.c create mode 100644 drivers/net/myri_sbus.h create mode 100644 drivers/net/natsemi.c create mode 100644 drivers/net/ne-h8300.c create mode 100644 drivers/net/ne.c create mode 100644 drivers/net/ne2.c create mode 100644 drivers/net/ne2k-pci.c create mode 100644 drivers/net/ne3210.c create mode 100644 drivers/net/netconsole.c create mode 100644 drivers/net/ni5010.c create mode 100644 drivers/net/ni5010.h create mode 100644 drivers/net/ni52.c create mode 100644 drivers/net/ni52.h create mode 100644 drivers/net/ni65.c create mode 100644 drivers/net/ni65.h create mode 100644 drivers/net/ns83820.c create mode 100644 drivers/net/oaknet.c create mode 100644 drivers/net/pci-skeleton.c create mode 100644 drivers/net/pcmcia/3c574_cs.c create mode 100644 drivers/net/pcmcia/3c589_cs.c create mode 100644 drivers/net/pcmcia/Kconfig create mode 100644 drivers/net/pcmcia/Makefile create mode 100644 drivers/net/pcmcia/axnet_cs.c create mode 100644 drivers/net/pcmcia/com20020_cs.c create mode 100644 drivers/net/pcmcia/fmvj18x_cs.c create mode 100644 drivers/net/pcmcia/ibmtr_cs.c create mode 100644 drivers/net/pcmcia/nmclan_cs.c create mode 100644 drivers/net/pcmcia/ositech.h create mode 100644 drivers/net/pcmcia/pcnet_cs.c create mode 100644 drivers/net/pcmcia/smc91c92_cs.c create mode 100644 drivers/net/pcmcia/xirc2ps_cs.c create mode 100644 drivers/net/pcnet32.c create mode 100644 drivers/net/plip.c create mode 100644 drivers/net/ppp_async.c create mode 100644 drivers/net/ppp_deflate.c create mode 100644 drivers/net/ppp_generic.c create mode 100644 drivers/net/ppp_synctty.c create mode 100644 drivers/net/pppoe.c create mode 100644 drivers/net/pppox.c create mode 100644 drivers/net/r8169.c create mode 100644 drivers/net/rrunner.c create mode 100644 drivers/net/rrunner.h create mode 100644 drivers/net/s2io-regs.h create mode 100644 drivers/net/s2io.c create mode 100644 drivers/net/s2io.h create mode 100644 drivers/net/saa9730.c create mode 100644 drivers/net/saa9730.h create mode 100644 drivers/net/sb1000.c create mode 100644 drivers/net/sb1250-mac.c create mode 100644 drivers/net/seeq8005.c create mode 100644 drivers/net/seeq8005.h create mode 100644 drivers/net/sgiseeq.c create mode 100644 drivers/net/sgiseeq.h create mode 100644 drivers/net/shaper.c create mode 100644 drivers/net/sis900.c create mode 100644 drivers/net/sis900.h create mode 100644 drivers/net/sk98lin/Makefile create mode 100644 drivers/net/sk98lin/h/lm80.h create mode 100644 drivers/net/sk98lin/h/skaddr.h create mode 100644 drivers/net/sk98lin/h/skcsum.h create mode 100644 drivers/net/sk98lin/h/skdebug.h create mode 100644 drivers/net/sk98lin/h/skdrv1st.h create mode 100644 drivers/net/sk98lin/h/skdrv2nd.h create mode 100644 drivers/net/sk98lin/h/skerror.h create mode 100644 drivers/net/sk98lin/h/skgedrv.h create mode 100644 drivers/net/sk98lin/h/skgehw.h create mode 100644 drivers/net/sk98lin/h/skgehwt.h create mode 100644 drivers/net/sk98lin/h/skgei2c.h create mode 100644 drivers/net/sk98lin/h/skgeinit.h create mode 100644 drivers/net/sk98lin/h/skgepnm2.h create mode 100644 drivers/net/sk98lin/h/skgepnmi.h create mode 100644 drivers/net/sk98lin/h/skgesirq.h create mode 100644 drivers/net/sk98lin/h/ski2c.h create mode 100644 drivers/net/sk98lin/h/skqueue.h create mode 100644 drivers/net/sk98lin/h/skrlmt.h create mode 100644 drivers/net/sk98lin/h/sktimer.h create mode 100644 drivers/net/sk98lin/h/sktypes.h create mode 100644 drivers/net/sk98lin/h/skversion.h create mode 100644 drivers/net/sk98lin/h/skvpd.h create mode 100644 drivers/net/sk98lin/h/xmac_ii.h create mode 100644 drivers/net/sk98lin/skaddr.c create mode 100644 drivers/net/sk98lin/skcsum.c create mode 100644 drivers/net/sk98lin/skdim.c create mode 100644 drivers/net/sk98lin/skethtool.c create mode 100644 drivers/net/sk98lin/skge.c create mode 100644 drivers/net/sk98lin/skgehwt.c create mode 100644 drivers/net/sk98lin/skgeinit.c create mode 100644 drivers/net/sk98lin/skgemib.c create mode 100644 drivers/net/sk98lin/skgepnmi.c create mode 100644 drivers/net/sk98lin/skgesirq.c create mode 100644 drivers/net/sk98lin/ski2c.c create mode 100644 drivers/net/sk98lin/sklm80.c create mode 100644 drivers/net/sk98lin/skproc.c create mode 100644 drivers/net/sk98lin/skqueue.c create mode 100644 drivers/net/sk98lin/skrlmt.c create mode 100644 drivers/net/sk98lin/sktimer.c create mode 100644 drivers/net/sk98lin/skvpd.c create mode 100644 drivers/net/sk98lin/skxmac2.c create mode 100644 drivers/net/sk_g16.c create mode 100644 drivers/net/sk_g16.h create mode 100644 drivers/net/sk_mca.c create mode 100644 drivers/net/sk_mca.h create mode 100644 drivers/net/skfp/Makefile create mode 100644 drivers/net/skfp/can.c create mode 100644 drivers/net/skfp/cfm.c create mode 100644 drivers/net/skfp/drvfbi.c create mode 100644 drivers/net/skfp/ecm.c create mode 100644 drivers/net/skfp/ess.c create mode 100644 drivers/net/skfp/fplustm.c create mode 100644 drivers/net/skfp/h/cmtdef.h create mode 100644 drivers/net/skfp/h/fddi.h create mode 100644 drivers/net/skfp/h/fddimib.h create mode 100644 drivers/net/skfp/h/fplustm.h create mode 100644 drivers/net/skfp/h/hwmtm.h create mode 100644 drivers/net/skfp/h/lnkstat.h create mode 100644 drivers/net/skfp/h/mbuf.h create mode 100644 drivers/net/skfp/h/osdef1st.h create mode 100644 drivers/net/skfp/h/sba.h create mode 100644 drivers/net/skfp/h/sba_def.h create mode 100644 drivers/net/skfp/h/skfbi.h create mode 100644 drivers/net/skfp/h/skfbiinc.h create mode 100644 drivers/net/skfp/h/smc.h create mode 100644 drivers/net/skfp/h/smt.h create mode 100644 drivers/net/skfp/h/smt_p.h create mode 100644 drivers/net/skfp/h/smtstate.h create mode 100644 drivers/net/skfp/h/supern_2.h create mode 100644 drivers/net/skfp/h/targethw.h create mode 100644 drivers/net/skfp/h/targetos.h create mode 100644 drivers/net/skfp/h/types.h create mode 100644 drivers/net/skfp/hwmtm.c create mode 100644 drivers/net/skfp/hwt.c create mode 100644 drivers/net/skfp/lnkstat.c create mode 100644 drivers/net/skfp/pcmplc.c create mode 100644 drivers/net/skfp/pmf.c create mode 100644 drivers/net/skfp/queue.c create mode 100644 drivers/net/skfp/rmt.c create mode 100644 drivers/net/skfp/skfddi.c create mode 100644 drivers/net/skfp/smt.c create mode 100644 drivers/net/skfp/smtdef.c create mode 100644 drivers/net/skfp/smtinit.c create mode 100644 drivers/net/skfp/smtparse.c create mode 100644 drivers/net/skfp/smttimer.c create mode 100644 drivers/net/skfp/srf.c create mode 100644 drivers/net/slhc.c create mode 100644 drivers/net/slip.c create mode 100644 drivers/net/slip.h create mode 100644 drivers/net/smc-mca.c create mode 100644 drivers/net/smc-mca.h create mode 100644 drivers/net/smc-ultra.c create mode 100644 drivers/net/smc-ultra32.c create mode 100644 drivers/net/smc9194.c create mode 100644 drivers/net/smc9194.h create mode 100644 drivers/net/smc91x.c create mode 100644 drivers/net/smc91x.h create mode 100644 drivers/net/sonic.c create mode 100644 drivers/net/sonic.h create mode 100644 drivers/net/starfire.c create mode 100644 drivers/net/starfire_firmware.pl create mode 100644 drivers/net/stnic.c create mode 100644 drivers/net/sun3_82586.c create mode 100644 drivers/net/sun3_82586.h create mode 100644 drivers/net/sun3lance.c create mode 100644 drivers/net/sunbmac.c create mode 100644 drivers/net/sunbmac.h create mode 100644 drivers/net/sundance.c create mode 100644 drivers/net/sungem.c create mode 100644 drivers/net/sungem.h create mode 100644 drivers/net/sungem_phy.c create mode 100644 drivers/net/sungem_phy.h create mode 100644 drivers/net/sunhme.c create mode 100644 drivers/net/sunhme.h create mode 100644 drivers/net/sunlance.c create mode 100644 drivers/net/sunqe.c create mode 100644 drivers/net/sunqe.h create mode 100644 drivers/net/tc35815.c create mode 100644 drivers/net/tg3.c create mode 100644 drivers/net/tg3.h create mode 100644 drivers/net/tlan.c create mode 100644 drivers/net/tlan.h create mode 100644 drivers/net/tokenring/3c359.c create mode 100644 drivers/net/tokenring/3c359.h create mode 100644 drivers/net/tokenring/3c359_microcode.h create mode 100644 drivers/net/tokenring/Kconfig create mode 100644 drivers/net/tokenring/Makefile create mode 100644 drivers/net/tokenring/abyss.c create mode 100644 drivers/net/tokenring/abyss.h create mode 100644 drivers/net/tokenring/ibmtr.c create mode 100644 drivers/net/tokenring/lanstreamer.c create mode 100644 drivers/net/tokenring/lanstreamer.h create mode 100644 drivers/net/tokenring/madgemc.c create mode 100644 drivers/net/tokenring/madgemc.h create mode 100644 drivers/net/tokenring/olympic.c create mode 100644 drivers/net/tokenring/olympic.h create mode 100644 drivers/net/tokenring/proteon.c create mode 100644 drivers/net/tokenring/skisa.c create mode 100644 drivers/net/tokenring/smctr.c create mode 100644 drivers/net/tokenring/smctr.h create mode 100644 drivers/net/tokenring/smctr_firmware.h create mode 100644 drivers/net/tokenring/tms380tr.c create mode 100644 drivers/net/tokenring/tms380tr.h create mode 100644 drivers/net/tokenring/tmspci.c create mode 100644 drivers/net/tulip/21142.c create mode 100644 drivers/net/tulip/Kconfig create mode 100644 drivers/net/tulip/Makefile create mode 100644 drivers/net/tulip/de2104x.c create mode 100644 drivers/net/tulip/de4x5.c create mode 100644 drivers/net/tulip/de4x5.h create mode 100644 drivers/net/tulip/dmfe.c create mode 100644 drivers/net/tulip/eeprom.c create mode 100644 drivers/net/tulip/interrupt.c create mode 100644 drivers/net/tulip/media.c create mode 100644 drivers/net/tulip/pnic.c create mode 100644 drivers/net/tulip/pnic2.c create mode 100644 drivers/net/tulip/timer.c create mode 100644 drivers/net/tulip/tulip.h create mode 100644 drivers/net/tulip/tulip_core.c create mode 100644 drivers/net/tulip/winbond-840.c create mode 100644 drivers/net/tulip/xircom_cb.c create mode 100644 drivers/net/tulip/xircom_tulip_cb.c create mode 100644 drivers/net/tun.c create mode 100644 drivers/net/typhoon-firmware.h create mode 100644 drivers/net/typhoon.c create mode 100644 drivers/net/typhoon.h create mode 100644 drivers/net/via-rhine.c create mode 100644 drivers/net/via-velocity.c create mode 100644 drivers/net/via-velocity.h create mode 100644 drivers/net/wan/Kconfig create mode 100644 drivers/net/wan/Makefile create mode 100644 drivers/net/wan/c101.c create mode 100644 drivers/net/wan/cosa.c create mode 100644 drivers/net/wan/cosa.h create mode 100644 drivers/net/wan/cycx_drv.c create mode 100644 drivers/net/wan/cycx_main.c create mode 100644 drivers/net/wan/cycx_x25.c create mode 100644 drivers/net/wan/dlci.c create mode 100644 drivers/net/wan/dscc4.c create mode 100644 drivers/net/wan/farsync.c create mode 100644 drivers/net/wan/farsync.h create mode 100644 drivers/net/wan/hd64570.h create mode 100644 drivers/net/wan/hd64572.h create mode 100644 drivers/net/wan/hd6457x.c create mode 100644 drivers/net/wan/hdlc_cisco.c create mode 100644 drivers/net/wan/hdlc_fr.c create mode 100644 drivers/net/wan/hdlc_generic.c create mode 100644 drivers/net/wan/hdlc_ppp.c create mode 100644 drivers/net/wan/hdlc_raw.c create mode 100644 drivers/net/wan/hdlc_raw_eth.c create mode 100644 drivers/net/wan/hdlc_x25.c create mode 100644 drivers/net/wan/hostess_sv11.c create mode 100644 drivers/net/wan/lapbether.c create mode 100644 drivers/net/wan/lmc/Makefile create mode 100644 drivers/net/wan/lmc/lmc.h create mode 100644 drivers/net/wan/lmc/lmc_debug.c create mode 100644 drivers/net/wan/lmc/lmc_debug.h create mode 100644 drivers/net/wan/lmc/lmc_ioctl.h create mode 100644 drivers/net/wan/lmc/lmc_main.c create mode 100644 drivers/net/wan/lmc/lmc_media.c create mode 100644 drivers/net/wan/lmc/lmc_media.h create mode 100644 drivers/net/wan/lmc/lmc_prot.h create mode 100644 drivers/net/wan/lmc/lmc_proto.c create mode 100644 drivers/net/wan/lmc/lmc_proto.h create mode 100644 drivers/net/wan/lmc/lmc_var.h create mode 100644 drivers/net/wan/n2.c create mode 100644 drivers/net/wan/pc300-falc-lh.h create mode 100644 drivers/net/wan/pc300.h create mode 100644 drivers/net/wan/pc300_drv.c create mode 100644 drivers/net/wan/pc300_tty.c create mode 100644 drivers/net/wan/pci200syn.c create mode 100644 drivers/net/wan/sbni.c create mode 100644 drivers/net/wan/sbni.h create mode 100644 drivers/net/wan/sdla.c create mode 100644 drivers/net/wan/sdla_chdlc.c create mode 100644 drivers/net/wan/sdla_fr.c create mode 100644 drivers/net/wan/sdla_ft1.c create mode 100644 drivers/net/wan/sdla_ppp.c create mode 100644 drivers/net/wan/sdla_x25.c create mode 100644 drivers/net/wan/sdladrv.c create mode 100644 drivers/net/wan/sdlamain.c create mode 100644 drivers/net/wan/sealevel.c create mode 100644 drivers/net/wan/syncppp.c create mode 100644 drivers/net/wan/wanpipe_multppp.c create mode 100644 drivers/net/wan/wanxl.c create mode 100644 drivers/net/wan/wanxl.h create mode 100644 drivers/net/wan/wanxlfw.S create mode 100644 drivers/net/wan/wanxlfw.inc_shipped create mode 100644 drivers/net/wan/x25_asy.c create mode 100644 drivers/net/wan/x25_asy.h create mode 100644 drivers/net/wan/z85230.c create mode 100644 drivers/net/wan/z85230.h create mode 100644 drivers/net/wd.c create mode 100644 drivers/net/wireless/Kconfig create mode 100644 drivers/net/wireless/Makefile create mode 100644 drivers/net/wireless/README create mode 100644 drivers/net/wireless/airo.c create mode 100644 drivers/net/wireless/airo_cs.c create mode 100644 drivers/net/wireless/airport.c create mode 100644 drivers/net/wireless/arlan-main.c create mode 100644 drivers/net/wireless/arlan-proc.c create mode 100644 drivers/net/wireless/arlan.h create mode 100644 drivers/net/wireless/atmel.c create mode 100644 drivers/net/wireless/atmel.h create mode 100644 drivers/net/wireless/atmel_cs.c create mode 100644 drivers/net/wireless/atmel_pci.c create mode 100644 drivers/net/wireless/hermes.c create mode 100644 drivers/net/wireless/hermes.h create mode 100644 drivers/net/wireless/hermes_rid.h create mode 100644 drivers/net/wireless/i82586.h create mode 100644 drivers/net/wireless/i82593.h create mode 100644 drivers/net/wireless/ieee802_11.h create mode 100644 drivers/net/wireless/netwave_cs.c create mode 100644 drivers/net/wireless/orinoco.c create mode 100644 drivers/net/wireless/orinoco.h create mode 100644 drivers/net/wireless/orinoco_cs.c create mode 100644 drivers/net/wireless/orinoco_pci.c create mode 100644 drivers/net/wireless/orinoco_plx.c create mode 100644 drivers/net/wireless/orinoco_tmd.c create mode 100644 drivers/net/wireless/prism54/Makefile create mode 100644 drivers/net/wireless/prism54/isl_38xx.c create mode 100644 drivers/net/wireless/prism54/isl_38xx.h create mode 100644 drivers/net/wireless/prism54/isl_ioctl.c create mode 100644 drivers/net/wireless/prism54/isl_ioctl.h create mode 100644 drivers/net/wireless/prism54/isl_oid.h create mode 100644 drivers/net/wireless/prism54/islpci_dev.c create mode 100644 drivers/net/wireless/prism54/islpci_dev.h create mode 100644 drivers/net/wireless/prism54/islpci_eth.c create mode 100644 drivers/net/wireless/prism54/islpci_eth.h create mode 100644 drivers/net/wireless/prism54/islpci_hotplug.c create mode 100644 drivers/net/wireless/prism54/islpci_mgt.c create mode 100644 drivers/net/wireless/prism54/islpci_mgt.h create mode 100644 drivers/net/wireless/prism54/oid_mgt.c create mode 100644 drivers/net/wireless/prism54/oid_mgt.h create mode 100644 drivers/net/wireless/prism54/prismcompat.h create mode 100644 drivers/net/wireless/ray_cs.c create mode 100644 drivers/net/wireless/ray_cs.h create mode 100644 drivers/net/wireless/rayctl.h create mode 100644 drivers/net/wireless/strip.c create mode 100644 drivers/net/wireless/todo.txt create mode 100644 drivers/net/wireless/wavelan.c create mode 100644 drivers/net/wireless/wavelan.h create mode 100644 drivers/net/wireless/wavelan.p.h create mode 100644 drivers/net/wireless/wavelan_cs.c create mode 100644 drivers/net/wireless/wavelan_cs.h create mode 100644 drivers/net/wireless/wavelan_cs.p.h create mode 100644 drivers/net/wireless/wl3501.h create mode 100644 drivers/net/wireless/wl3501_cs.c create mode 100644 drivers/net/yellowfin.c create mode 100644 drivers/net/znet.c create mode 100644 drivers/net/zorro8390.c create mode 100644 drivers/nubus/Makefile create mode 100644 drivers/nubus/nubus.c create mode 100644 drivers/nubus/nubus_syms.c create mode 100644 drivers/nubus/proc.c create mode 100644 drivers/oprofile/buffer_sync.c create mode 100644 drivers/oprofile/buffer_sync.h create mode 100644 drivers/oprofile/cpu_buffer.c create mode 100644 drivers/oprofile/cpu_buffer.h create mode 100644 drivers/oprofile/event_buffer.c create mode 100644 drivers/oprofile/event_buffer.h create mode 100644 drivers/oprofile/oprof.c create mode 100644 drivers/oprofile/oprof.h create mode 100644 drivers/oprofile/oprofile_files.c create mode 100644 drivers/oprofile/oprofile_stats.c create mode 100644 drivers/oprofile/oprofile_stats.h create mode 100644 drivers/oprofile/oprofilefs.c create mode 100644 drivers/oprofile/timer_int.c create mode 100644 drivers/parisc/Kconfig create mode 100644 drivers/parisc/Makefile create mode 100644 drivers/parisc/README.dino create mode 100644 drivers/parisc/asp.c create mode 100644 drivers/parisc/ccio-dma.c create mode 100644 drivers/parisc/ccio-rm-dma.c create mode 100644 drivers/parisc/dino.c create mode 100644 drivers/parisc/eisa.c create mode 100644 drivers/parisc/eisa_eeprom.c create mode 100644 drivers/parisc/eisa_enumerator.c create mode 100644 drivers/parisc/gsc.c create mode 100644 drivers/parisc/gsc.h create mode 100644 drivers/parisc/hppb.c create mode 100644 drivers/parisc/iommu-helpers.h create mode 100644 drivers/parisc/iosapic.c create mode 100644 drivers/parisc/iosapic_private.h create mode 100644 drivers/parisc/lasi.c create mode 100644 drivers/parisc/lba_pci.c create mode 100644 drivers/parisc/led.c create mode 100644 drivers/parisc/pdc_stable.c create mode 100644 drivers/parisc/power.c create mode 100644 drivers/parisc/sba_iommu.c create mode 100644 drivers/parisc/superio.c create mode 100644 drivers/parisc/wax.c create mode 100644 drivers/parport/BUGS-parport create mode 100644 drivers/parport/ChangeLog create mode 100644 drivers/parport/Kconfig create mode 100644 drivers/parport/Makefile create mode 100644 drivers/parport/TODO-parport create mode 100644 drivers/parport/daisy.c create mode 100644 drivers/parport/ieee1284.c create mode 100644 drivers/parport/ieee1284_ops.c create mode 100644 drivers/parport/multiface.h create mode 100644 drivers/parport/parport_amiga.c create mode 100644 drivers/parport/parport_arc.c create mode 100644 drivers/parport/parport_atari.c create mode 100644 drivers/parport/parport_cs.c create mode 100644 drivers/parport/parport_gsc.c create mode 100644 drivers/parport/parport_gsc.h create mode 100644 drivers/parport/parport_mfc3.c create mode 100644 drivers/parport/parport_pc.c create mode 100644 drivers/parport/parport_serial.c create mode 100644 drivers/parport/parport_sunbpp.c create mode 100644 drivers/parport/probe.c create mode 100644 drivers/parport/procfs.c create mode 100644 drivers/parport/share.c create mode 100644 drivers/pci/Kconfig create mode 100644 drivers/pci/Makefile create mode 100644 drivers/pci/access.c create mode 100644 drivers/pci/bus.c create mode 100644 drivers/pci/gen-devlist.c create mode 100644 drivers/pci/hotplug.c create mode 100644 drivers/pci/hotplug/Kconfig create mode 100644 drivers/pci/hotplug/Makefile create mode 100644 drivers/pci/hotplug/acpiphp.h create mode 100644 drivers/pci/hotplug/acpiphp_core.c create mode 100644 drivers/pci/hotplug/acpiphp_glue.c create mode 100644 drivers/pci/hotplug/acpiphp_ibm.c create mode 100644 drivers/pci/hotplug/acpiphp_pci.c create mode 100644 drivers/pci/hotplug/acpiphp_res.c create mode 100644 drivers/pci/hotplug/cpci_hotplug.h create mode 100644 drivers/pci/hotplug/cpci_hotplug_core.c create mode 100644 drivers/pci/hotplug/cpci_hotplug_pci.c create mode 100644 drivers/pci/hotplug/cpcihp_generic.c create mode 100644 drivers/pci/hotplug/cpcihp_zt5550.c create mode 100644 drivers/pci/hotplug/cpcihp_zt5550.h create mode 100644 drivers/pci/hotplug/cpqphp.h create mode 100644 drivers/pci/hotplug/cpqphp_core.c create mode 100644 drivers/pci/hotplug/cpqphp_ctrl.c create mode 100644 drivers/pci/hotplug/cpqphp_nvram.c create mode 100644 drivers/pci/hotplug/cpqphp_nvram.h create mode 100644 drivers/pci/hotplug/cpqphp_pci.c create mode 100644 drivers/pci/hotplug/cpqphp_sysfs.c create mode 100644 drivers/pci/hotplug/fakephp.c create mode 100644 drivers/pci/hotplug/ibmphp.h create mode 100644 drivers/pci/hotplug/ibmphp_core.c create mode 100644 drivers/pci/hotplug/ibmphp_ebda.c create mode 100644 drivers/pci/hotplug/ibmphp_hpc.c create mode 100644 drivers/pci/hotplug/ibmphp_pci.c create mode 100644 drivers/pci/hotplug/ibmphp_res.c create mode 100644 drivers/pci/hotplug/pci_hotplug.h create mode 100644 drivers/pci/hotplug/pci_hotplug_core.c create mode 100644 drivers/pci/hotplug/pciehp.h create mode 100644 drivers/pci/hotplug/pciehp_core.c create mode 100644 drivers/pci/hotplug/pciehp_ctrl.c create mode 100644 drivers/pci/hotplug/pciehp_hpc.c create mode 100644 drivers/pci/hotplug/pciehp_pci.c create mode 100644 drivers/pci/hotplug/pciehprm.h create mode 100644 drivers/pci/hotplug/pciehprm_acpi.c create mode 100644 drivers/pci/hotplug/pciehprm_nonacpi.c create mode 100644 drivers/pci/hotplug/pciehprm_nonacpi.h create mode 100644 drivers/pci/hotplug/pcihp_skeleton.c create mode 100644 drivers/pci/hotplug/rpadlpar.h create mode 100644 drivers/pci/hotplug/rpadlpar_core.c create mode 100644 drivers/pci/hotplug/rpadlpar_sysfs.c create mode 100644 drivers/pci/hotplug/rpaphp.h create mode 100644 drivers/pci/hotplug/rpaphp_core.c create mode 100644 drivers/pci/hotplug/rpaphp_pci.c create mode 100644 drivers/pci/hotplug/rpaphp_slot.c create mode 100644 drivers/pci/hotplug/rpaphp_vio.c create mode 100644 drivers/pci/hotplug/shpchp.h create mode 100644 drivers/pci/hotplug/shpchp_core.c create mode 100644 drivers/pci/hotplug/shpchp_ctrl.c create mode 100644 drivers/pci/hotplug/shpchp_hpc.c create mode 100644 drivers/pci/hotplug/shpchp_pci.c create mode 100644 drivers/pci/hotplug/shpchp_sysfs.c create mode 100644 drivers/pci/hotplug/shpchprm.h create mode 100644 drivers/pci/hotplug/shpchprm_acpi.c create mode 100644 drivers/pci/hotplug/shpchprm_legacy.c create mode 100644 drivers/pci/hotplug/shpchprm_legacy.h create mode 100644 drivers/pci/hotplug/shpchprm_nonacpi.c create mode 100644 drivers/pci/hotplug/shpchprm_nonacpi.h create mode 100644 drivers/pci/msi.c create mode 100644 drivers/pci/msi.h create mode 100644 drivers/pci/names.c create mode 100644 drivers/pci/pci-acpi.c create mode 100644 drivers/pci/pci-driver.c create mode 100644 drivers/pci/pci-sysfs.c create mode 100644 drivers/pci/pci.c create mode 100644 drivers/pci/pci.h create mode 100644 drivers/pci/pci.ids create mode 100644 drivers/pci/pcie/Kconfig create mode 100644 drivers/pci/pcie/Makefile create mode 100644 drivers/pci/pcie/portdrv.h create mode 100644 drivers/pci/pcie/portdrv_bus.c create mode 100644 drivers/pci/pcie/portdrv_core.c create mode 100644 drivers/pci/pcie/portdrv_pci.c create mode 100644 drivers/pci/probe.c create mode 100644 drivers/pci/proc.c create mode 100644 drivers/pci/quirks.c create mode 100644 drivers/pci/remove.c create mode 100644 drivers/pci/rom.c create mode 100644 drivers/pci/search.c create mode 100644 drivers/pci/setup-bus.c create mode 100644 drivers/pci/setup-irq.c create mode 100644 drivers/pci/setup-res.c create mode 100644 drivers/pci/syscall.c create mode 100644 drivers/pcmcia/Kconfig create mode 100644 drivers/pcmcia/Makefile create mode 100644 drivers/pcmcia/au1000_db1x00.c create mode 100644 drivers/pcmcia/au1000_generic.c create mode 100644 drivers/pcmcia/au1000_generic.h create mode 100644 drivers/pcmcia/au1000_pb1x00.c create mode 100644 drivers/pcmcia/au1000_xxs1500.c create mode 100644 drivers/pcmcia/cardbus.c create mode 100644 drivers/pcmcia/cirrus.h create mode 100644 drivers/pcmcia/cistpl.c create mode 100644 drivers/pcmcia/cs.c create mode 100644 drivers/pcmcia/cs_internal.h create mode 100644 drivers/pcmcia/ds.c create mode 100644 drivers/pcmcia/hd64465_ss.c create mode 100644 drivers/pcmcia/i82092.c create mode 100644 drivers/pcmcia/i82092aa.h create mode 100644 drivers/pcmcia/i82365.c create mode 100644 drivers/pcmcia/i82365.h create mode 100644 drivers/pcmcia/m32r_cfc.c create mode 100644 drivers/pcmcia/m32r_cfc.h create mode 100644 drivers/pcmcia/m32r_pcc.c create mode 100644 drivers/pcmcia/m32r_pcc.h create mode 100644 drivers/pcmcia/o2micro.h create mode 100644 drivers/pcmcia/pcmcia_compat.c create mode 100644 drivers/pcmcia/pd6729.c create mode 100644 drivers/pcmcia/pd6729.h create mode 100644 drivers/pcmcia/pxa2xx_base.c create mode 100644 drivers/pcmcia/pxa2xx_base.h create mode 100644 drivers/pcmcia/pxa2xx_lubbock.c create mode 100644 drivers/pcmcia/pxa2xx_mainstone.c create mode 100644 drivers/pcmcia/pxa2xx_sharpsl.c create mode 100644 drivers/pcmcia/ricoh.h create mode 100644 drivers/pcmcia/rsrc_mgr.c create mode 100644 drivers/pcmcia/rsrc_nonstatic.c create mode 100644 drivers/pcmcia/sa1100_assabet.c create mode 100644 drivers/pcmcia/sa1100_badge4.c create mode 100644 drivers/pcmcia/sa1100_cerf.c create mode 100644 drivers/pcmcia/sa1100_generic.c create mode 100644 drivers/pcmcia/sa1100_generic.h create mode 100644 drivers/pcmcia/sa1100_h3600.c create mode 100644 drivers/pcmcia/sa1100_jornada720.c create mode 100644 drivers/pcmcia/sa1100_neponset.c create mode 100644 drivers/pcmcia/sa1100_shannon.c create mode 100644 drivers/pcmcia/sa1100_simpad.c create mode 100644 drivers/pcmcia/sa1111_generic.c create mode 100644 drivers/pcmcia/sa1111_generic.h create mode 100644 drivers/pcmcia/sa11xx_base.c create mode 100644 drivers/pcmcia/sa11xx_base.h create mode 100644 drivers/pcmcia/soc_common.c create mode 100644 drivers/pcmcia/soc_common.h create mode 100644 drivers/pcmcia/socket_sysfs.c create mode 100644 drivers/pcmcia/tcic.c create mode 100644 drivers/pcmcia/tcic.h create mode 100644 drivers/pcmcia/ti113x.h create mode 100644 drivers/pcmcia/topic.h create mode 100644 drivers/pcmcia/vg468.h create mode 100644 drivers/pcmcia/vrc4171_card.c create mode 100644 drivers/pcmcia/vrc4173_cardu.c create mode 100644 drivers/pcmcia/vrc4173_cardu.h create mode 100644 drivers/pcmcia/yenta_socket.c create mode 100644 drivers/pcmcia/yenta_socket.h create mode 100644 drivers/pnp/Kconfig create mode 100644 drivers/pnp/Makefile create mode 100644 drivers/pnp/base.h create mode 100644 drivers/pnp/card.c create mode 100644 drivers/pnp/core.c create mode 100644 drivers/pnp/driver.c create mode 100644 drivers/pnp/interface.c create mode 100644 drivers/pnp/isapnp/Kconfig create mode 100644 drivers/pnp/isapnp/Makefile create mode 100644 drivers/pnp/isapnp/compat.c create mode 100644 drivers/pnp/isapnp/core.c create mode 100644 drivers/pnp/isapnp/proc.c create mode 100644 drivers/pnp/manager.c create mode 100644 drivers/pnp/pnpacpi/Kconfig create mode 100644 drivers/pnp/pnpacpi/Makefile create mode 100644 drivers/pnp/pnpacpi/core.c create mode 100644 drivers/pnp/pnpacpi/pnpacpi.h create mode 100644 drivers/pnp/pnpacpi/rsparser.c create mode 100644 drivers/pnp/pnpbios/Kconfig create mode 100644 drivers/pnp/pnpbios/Makefile create mode 100644 drivers/pnp/pnpbios/bioscalls.c create mode 100644 drivers/pnp/pnpbios/core.c create mode 100644 drivers/pnp/pnpbios/pnpbios.h create mode 100644 drivers/pnp/pnpbios/proc.c create mode 100644 drivers/pnp/pnpbios/rsparser.c create mode 100644 drivers/pnp/quirks.c create mode 100644 drivers/pnp/resource.c create mode 100644 drivers/pnp/support.c create mode 100644 drivers/pnp/system.c create mode 100644 drivers/s390/Kconfig create mode 100644 drivers/s390/Makefile create mode 100644 drivers/s390/block/Kconfig create mode 100644 drivers/s390/block/Makefile create mode 100644 drivers/s390/block/dasd.c create mode 100644 drivers/s390/block/dasd_3370_erp.c create mode 100644 drivers/s390/block/dasd_3990_erp.c create mode 100644 drivers/s390/block/dasd_9336_erp.c create mode 100644 drivers/s390/block/dasd_9343_erp.c create mode 100644 drivers/s390/block/dasd_cmb.c create mode 100644 drivers/s390/block/dasd_devmap.c create mode 100644 drivers/s390/block/dasd_diag.c create mode 100644 drivers/s390/block/dasd_diag.h create mode 100644 drivers/s390/block/dasd_eckd.c create mode 100644 drivers/s390/block/dasd_eckd.h create mode 100644 drivers/s390/block/dasd_erp.c create mode 100644 drivers/s390/block/dasd_fba.c create mode 100644 drivers/s390/block/dasd_fba.h create mode 100644 drivers/s390/block/dasd_genhd.c create mode 100644 drivers/s390/block/dasd_int.h create mode 100644 drivers/s390/block/dasd_ioctl.c create mode 100644 drivers/s390/block/dasd_proc.c create mode 100644 drivers/s390/block/dcssblk.c create mode 100644 drivers/s390/block/xpram.c create mode 100644 drivers/s390/char/Makefile create mode 100644 drivers/s390/char/con3215.c create mode 100644 drivers/s390/char/con3270.c create mode 100644 drivers/s390/char/ctrlchar.c create mode 100644 drivers/s390/char/ctrlchar.h create mode 100644 drivers/s390/char/defkeymap.c create mode 100644 drivers/s390/char/defkeymap.map create mode 100644 drivers/s390/char/fs3270.c create mode 100644 drivers/s390/char/keyboard.c create mode 100644 drivers/s390/char/keyboard.h create mode 100644 drivers/s390/char/monreader.c create mode 100644 drivers/s390/char/raw3270.c create mode 100644 drivers/s390/char/raw3270.h create mode 100644 drivers/s390/char/sclp.c create mode 100644 drivers/s390/char/sclp.h create mode 100644 drivers/s390/char/sclp_con.c create mode 100644 drivers/s390/char/sclp_cpi.c create mode 100644 drivers/s390/char/sclp_quiesce.c create mode 100644 drivers/s390/char/sclp_rw.c create mode 100644 drivers/s390/char/sclp_rw.h create mode 100644 drivers/s390/char/sclp_tty.c create mode 100644 drivers/s390/char/sclp_tty.h create mode 100644 drivers/s390/char/sclp_vt220.c create mode 100644 drivers/s390/char/tape.h create mode 100644 drivers/s390/char/tape_34xx.c create mode 100644 drivers/s390/char/tape_block.c create mode 100644 drivers/s390/char/tape_char.c create mode 100644 drivers/s390/char/tape_class.c create mode 100644 drivers/s390/char/tape_class.h create mode 100644 drivers/s390/char/tape_core.c create mode 100644 drivers/s390/char/tape_proc.c create mode 100644 drivers/s390/char/tape_std.c create mode 100644 drivers/s390/char/tape_std.h create mode 100644 drivers/s390/char/tty3270.c create mode 100644 drivers/s390/char/vmlogrdr.c create mode 100644 drivers/s390/char/vmwatchdog.c create mode 100644 drivers/s390/cio/Makefile create mode 100644 drivers/s390/cio/airq.c create mode 100644 drivers/s390/cio/airq.h create mode 100644 drivers/s390/cio/blacklist.c create mode 100644 drivers/s390/cio/blacklist.h create mode 100644 drivers/s390/cio/ccwgroup.c create mode 100644 drivers/s390/cio/chsc.c create mode 100644 drivers/s390/cio/chsc.h create mode 100644 drivers/s390/cio/cio.c create mode 100644 drivers/s390/cio/cio.h create mode 100644 drivers/s390/cio/cio_debug.h create mode 100644 drivers/s390/cio/cmf.c create mode 100644 drivers/s390/cio/css.c create mode 100644 drivers/s390/cio/css.h create mode 100644 drivers/s390/cio/device.c create mode 100644 drivers/s390/cio/device.h create mode 100644 drivers/s390/cio/device_fsm.c create mode 100644 drivers/s390/cio/device_id.c create mode 100644 drivers/s390/cio/device_ops.c create mode 100644 drivers/s390/cio/device_pgid.c create mode 100644 drivers/s390/cio/device_status.c create mode 100644 drivers/s390/cio/ioasm.h create mode 100644 drivers/s390/cio/qdio.c create mode 100644 drivers/s390/cio/qdio.h create mode 100644 drivers/s390/crypto/Makefile create mode 100644 drivers/s390/crypto/z90common.h create mode 100644 drivers/s390/crypto/z90crypt.h create mode 100644 drivers/s390/crypto/z90hardware.c create mode 100644 drivers/s390/crypto/z90main.c create mode 100644 drivers/s390/ebcdic.c create mode 100644 drivers/s390/net/Kconfig create mode 100644 drivers/s390/net/Makefile create mode 100644 drivers/s390/net/claw.c create mode 100644 drivers/s390/net/claw.h create mode 100644 drivers/s390/net/ctcdbug.c create mode 100644 drivers/s390/net/ctcdbug.h create mode 100644 drivers/s390/net/ctcmain.c create mode 100644 drivers/s390/net/ctctty.c create mode 100644 drivers/s390/net/ctctty.h create mode 100644 drivers/s390/net/cu3088.c create mode 100644 drivers/s390/net/cu3088.h create mode 100644 drivers/s390/net/fsm.c create mode 100644 drivers/s390/net/fsm.h create mode 100644 drivers/s390/net/iucv.c create mode 100644 drivers/s390/net/iucv.h create mode 100644 drivers/s390/net/lcs.c create mode 100644 drivers/s390/net/lcs.h create mode 100644 drivers/s390/net/netiucv.c create mode 100644 drivers/s390/net/qeth.h create mode 100644 drivers/s390/net/qeth_eddp.c create mode 100644 drivers/s390/net/qeth_eddp.h create mode 100644 drivers/s390/net/qeth_fs.h create mode 100644 drivers/s390/net/qeth_main.c create mode 100644 drivers/s390/net/qeth_mpc.c create mode 100644 drivers/s390/net/qeth_mpc.h create mode 100644 drivers/s390/net/qeth_proc.c create mode 100644 drivers/s390/net/qeth_sys.c create mode 100644 drivers/s390/net/qeth_tso.c create mode 100644 drivers/s390/net/qeth_tso.h create mode 100644 drivers/s390/net/smsgiucv.c create mode 100644 drivers/s390/net/smsgiucv.h create mode 100644 drivers/s390/s390mach.c create mode 100644 drivers/s390/s390mach.h create mode 100644 drivers/s390/scsi/Makefile create mode 100644 drivers/s390/scsi/zfcp_aux.c create mode 100644 drivers/s390/scsi/zfcp_ccw.c create mode 100644 drivers/s390/scsi/zfcp_def.h create mode 100644 drivers/s390/scsi/zfcp_erp.c create mode 100644 drivers/s390/scsi/zfcp_ext.h create mode 100644 drivers/s390/scsi/zfcp_fsf.c create mode 100644 drivers/s390/scsi/zfcp_fsf.h create mode 100644 drivers/s390/scsi/zfcp_qdio.c create mode 100644 drivers/s390/scsi/zfcp_scsi.c create mode 100644 drivers/s390/scsi/zfcp_sysfs_adapter.c create mode 100644 drivers/s390/scsi/zfcp_sysfs_driver.c create mode 100644 drivers/s390/scsi/zfcp_sysfs_port.c create mode 100644 drivers/s390/scsi/zfcp_sysfs_unit.c create mode 100644 drivers/s390/sysinfo.c create mode 100644 drivers/sbus/Makefile create mode 100644 drivers/sbus/char/Kconfig create mode 100644 drivers/sbus/char/Makefile create mode 100644 drivers/sbus/char/aurora.c create mode 100644 drivers/sbus/char/aurora.h create mode 100644 drivers/sbus/char/bbc_envctrl.c create mode 100644 drivers/sbus/char/bbc_i2c.c create mode 100644 drivers/sbus/char/bbc_i2c.h create mode 100644 drivers/sbus/char/bpp.c create mode 100644 drivers/sbus/char/cd180.h create mode 100644 drivers/sbus/char/cpwatchdog.c create mode 100644 drivers/sbus/char/display7seg.c create mode 100644 drivers/sbus/char/envctrl.c create mode 100644 drivers/sbus/char/flash.c create mode 100644 drivers/sbus/char/jsflash.c create mode 100644 drivers/sbus/char/max1617.h create mode 100644 drivers/sbus/char/openprom.c create mode 100644 drivers/sbus/char/riowatchdog.c create mode 100644 drivers/sbus/char/rtc.c create mode 100644 drivers/sbus/char/uctrl.c create mode 100644 drivers/sbus/char/vfc.h create mode 100644 drivers/sbus/char/vfc_dev.c create mode 100644 drivers/sbus/char/vfc_i2c.c create mode 100644 drivers/sbus/char/vfc_i2c.h create mode 100644 drivers/sbus/dvma.c create mode 100644 drivers/sbus/sbus.c create mode 100644 drivers/scsi/3w-9xxx.c create mode 100644 drivers/scsi/3w-9xxx.h create mode 100644 drivers/scsi/3w-xxxx.c create mode 100644 drivers/scsi/3w-xxxx.h create mode 100644 drivers/scsi/53c700.c create mode 100644 drivers/scsi/53c700.h create mode 100644 drivers/scsi/53c700.scr create mode 100644 drivers/scsi/53c700_d.h_shipped create mode 100644 drivers/scsi/53c7xx.c create mode 100644 drivers/scsi/53c7xx.h create mode 100644 drivers/scsi/53c7xx.scr create mode 100644 drivers/scsi/53c7xx_d.h_shipped create mode 100644 drivers/scsi/53c7xx_u.h_shipped create mode 100644 drivers/scsi/BusLogic.c create mode 100644 drivers/scsi/BusLogic.h create mode 100644 drivers/scsi/FlashPoint.c create mode 100644 drivers/scsi/Kconfig create mode 100644 drivers/scsi/Makefile create mode 100644 drivers/scsi/NCR5380.c create mode 100644 drivers/scsi/NCR5380.h create mode 100644 drivers/scsi/NCR53C9x.c create mode 100644 drivers/scsi/NCR53C9x.h create mode 100644 drivers/scsi/NCR53c406a.c create mode 100644 drivers/scsi/NCR_D700.c create mode 100644 drivers/scsi/NCR_D700.h create mode 100644 drivers/scsi/NCR_Q720.c create mode 100644 drivers/scsi/NCR_Q720.h create mode 100644 drivers/scsi/a100u2w.c create mode 100644 drivers/scsi/a100u2w.h create mode 100644 drivers/scsi/a2091.c create mode 100644 drivers/scsi/a2091.h create mode 100644 drivers/scsi/a3000.c create mode 100644 drivers/scsi/a3000.h create mode 100644 drivers/scsi/aacraid/Makefile create mode 100644 drivers/scsi/aacraid/README create mode 100644 drivers/scsi/aacraid/TODO create mode 100644 drivers/scsi/aacraid/aachba.c create mode 100644 drivers/scsi/aacraid/aacraid.h create mode 100644 drivers/scsi/aacraid/commctrl.c create mode 100644 drivers/scsi/aacraid/comminit.c create mode 100644 drivers/scsi/aacraid/commsup.c create mode 100644 drivers/scsi/aacraid/dpcsup.c create mode 100644 drivers/scsi/aacraid/linit.c create mode 100644 drivers/scsi/aacraid/rkt.c create mode 100644 drivers/scsi/aacraid/rx.c create mode 100644 drivers/scsi/aacraid/sa.c create mode 100644 drivers/scsi/advansys.c create mode 100644 drivers/scsi/advansys.h create mode 100644 drivers/scsi/aha152x.c create mode 100644 drivers/scsi/aha152x.h create mode 100644 drivers/scsi/aha1542.c create mode 100644 drivers/scsi/aha1542.h create mode 100644 drivers/scsi/aha1740.c create mode 100644 drivers/scsi/aha1740.h create mode 100644 drivers/scsi/ahci.c create mode 100644 drivers/scsi/aic7xxx/Kconfig.aic79xx create mode 100644 drivers/scsi/aic7xxx/Kconfig.aic7xxx create mode 100644 drivers/scsi/aic7xxx/Makefile create mode 100644 drivers/scsi/aic7xxx/aic7770.c create mode 100644 drivers/scsi/aic7xxx/aic7770_osm.c create mode 100644 drivers/scsi/aic7xxx/aic79xx.h create mode 100644 drivers/scsi/aic7xxx/aic79xx.reg create mode 100644 drivers/scsi/aic7xxx/aic79xx.seq create mode 100644 drivers/scsi/aic7xxx/aic79xx_core.c create mode 100644 drivers/scsi/aic7xxx/aic79xx_inline.h create mode 100644 drivers/scsi/aic7xxx/aic79xx_osm.c create mode 100644 drivers/scsi/aic7xxx/aic79xx_osm.h create mode 100644 drivers/scsi/aic7xxx/aic79xx_osm_pci.c create mode 100644 drivers/scsi/aic7xxx/aic79xx_pci.c create mode 100644 drivers/scsi/aic7xxx/aic79xx_pci.h create mode 100644 drivers/scsi/aic7xxx/aic79xx_proc.c create mode 100644 drivers/scsi/aic7xxx/aic79xx_reg.h_shipped create mode 100644 drivers/scsi/aic7xxx/aic79xx_reg_print.c_shipped create mode 100644 drivers/scsi/aic7xxx/aic79xx_seq.h_shipped create mode 100644 drivers/scsi/aic7xxx/aic7xxx.h create mode 100644 drivers/scsi/aic7xxx/aic7xxx.reg create mode 100644 drivers/scsi/aic7xxx/aic7xxx.seq create mode 100644 drivers/scsi/aic7xxx/aic7xxx_93cx6.c create mode 100644 drivers/scsi/aic7xxx/aic7xxx_93cx6.h create mode 100644 drivers/scsi/aic7xxx/aic7xxx_core.c create mode 100644 drivers/scsi/aic7xxx/aic7xxx_inline.h create mode 100644 drivers/scsi/aic7xxx/aic7xxx_osm.c create mode 100644 drivers/scsi/aic7xxx/aic7xxx_osm.h create mode 100644 drivers/scsi/aic7xxx/aic7xxx_osm_pci.c create mode 100644 drivers/scsi/aic7xxx/aic7xxx_pci.c create mode 100644 drivers/scsi/aic7xxx/aic7xxx_pci.h create mode 100644 drivers/scsi/aic7xxx/aic7xxx_proc.c create mode 100644 drivers/scsi/aic7xxx/aic7xxx_reg.h_shipped create mode 100644 drivers/scsi/aic7xxx/aic7xxx_reg_print.c_shipped create mode 100644 drivers/scsi/aic7xxx/aic7xxx_seq.h_shipped create mode 100644 drivers/scsi/aic7xxx/aicasm/Makefile create mode 100644 drivers/scsi/aic7xxx/aicasm/aicasm.c create mode 100644 drivers/scsi/aic7xxx/aicasm/aicasm.h create mode 100644 drivers/scsi/aic7xxx/aicasm/aicasm_gram.y create mode 100644 drivers/scsi/aic7xxx/aicasm/aicasm_insformat.h create mode 100644 drivers/scsi/aic7xxx/aicasm/aicasm_macro_gram.y create mode 100644 drivers/scsi/aic7xxx/aicasm/aicasm_macro_scan.l create mode 100644 drivers/scsi/aic7xxx/aicasm/aicasm_scan.l create mode 100644 drivers/scsi/aic7xxx/aicasm/aicasm_symbol.c create mode 100644 drivers/scsi/aic7xxx/aicasm/aicasm_symbol.h create mode 100644 drivers/scsi/aic7xxx/aiclib.c create mode 100644 drivers/scsi/aic7xxx/aiclib.h create mode 100644 drivers/scsi/aic7xxx/cam.h create mode 100644 drivers/scsi/aic7xxx/queue.h create mode 100644 drivers/scsi/aic7xxx/scsi_iu.h create mode 100644 drivers/scsi/aic7xxx/scsi_message.h create mode 100644 drivers/scsi/aic7xxx_old.c create mode 100644 drivers/scsi/aic7xxx_old/aic7xxx.h create mode 100644 drivers/scsi/aic7xxx_old/aic7xxx.reg create mode 100644 drivers/scsi/aic7xxx_old/aic7xxx.seq create mode 100644 drivers/scsi/aic7xxx_old/aic7xxx_proc.c create mode 100644 drivers/scsi/aic7xxx_old/aic7xxx_reg.h create mode 100644 drivers/scsi/aic7xxx_old/aic7xxx_seq.c create mode 100644 drivers/scsi/aic7xxx_old/scsi_message.h create mode 100644 drivers/scsi/aic7xxx_old/sequencer.h create mode 100644 drivers/scsi/amiga7xx.c create mode 100644 drivers/scsi/amiga7xx.h create mode 100644 drivers/scsi/arm/Kconfig create mode 100644 drivers/scsi/arm/Makefile create mode 100644 drivers/scsi/arm/acornscsi-io.S create mode 100644 drivers/scsi/arm/acornscsi.c create mode 100644 drivers/scsi/arm/acornscsi.h create mode 100644 drivers/scsi/arm/arxescsi.c create mode 100644 drivers/scsi/arm/cumana_1.c create mode 100644 drivers/scsi/arm/cumana_2.c create mode 100644 drivers/scsi/arm/ecoscsi.c create mode 100644 drivers/scsi/arm/eesox.c create mode 100644 drivers/scsi/arm/fas216.c create mode 100644 drivers/scsi/arm/fas216.h create mode 100644 drivers/scsi/arm/msgqueue.c create mode 100644 drivers/scsi/arm/msgqueue.h create mode 100644 drivers/scsi/arm/oak.c create mode 100644 drivers/scsi/arm/powertec.c create mode 100644 drivers/scsi/arm/queue.c create mode 100644 drivers/scsi/arm/queue.h create mode 100644 drivers/scsi/arm/scsi.h create mode 100644 drivers/scsi/ata_piix.c create mode 100644 drivers/scsi/atari_NCR5380.c create mode 100644 drivers/scsi/atari_dma_emul.c create mode 100644 drivers/scsi/atari_scsi.c create mode 100644 drivers/scsi/atari_scsi.h create mode 100644 drivers/scsi/atp870u.c create mode 100644 drivers/scsi/atp870u.h create mode 100644 drivers/scsi/blz1230.c create mode 100644 drivers/scsi/blz2060.c create mode 100644 drivers/scsi/bvme6000.c create mode 100644 drivers/scsi/bvme6000.h create mode 100644 drivers/scsi/constants.c create mode 100644 drivers/scsi/cpqfcTS.h create mode 100644 drivers/scsi/cpqfcTSchip.h create mode 100644 drivers/scsi/cpqfcTScontrol.c create mode 100644 drivers/scsi/cpqfcTSi2c.c create mode 100644 drivers/scsi/cpqfcTSinit.c create mode 100644 drivers/scsi/cpqfcTSioctl.h create mode 100644 drivers/scsi/cpqfcTSstructs.h create mode 100644 drivers/scsi/cpqfcTStrigger.c create mode 100644 drivers/scsi/cpqfcTStrigger.h create mode 100644 drivers/scsi/cpqfcTSworker.c create mode 100644 drivers/scsi/cyberstorm.c create mode 100644 drivers/scsi/cyberstormII.c create mode 100644 drivers/scsi/dc395x.c create mode 100644 drivers/scsi/dc395x.h create mode 100644 drivers/scsi/dec_esp.c create mode 100644 drivers/scsi/dmx3191d.c create mode 100644 drivers/scsi/dpt/dpti_i2o.h create mode 100644 drivers/scsi/dpt/dpti_ioctl.h create mode 100644 drivers/scsi/dpt/dptsig.h create mode 100644 drivers/scsi/dpt/osd_defs.h create mode 100644 drivers/scsi/dpt/osd_util.h create mode 100644 drivers/scsi/dpt/sys_info.h create mode 100644 drivers/scsi/dpt_i2o.c create mode 100644 drivers/scsi/dpti.h create mode 100644 drivers/scsi/dtc.c create mode 100644 drivers/scsi/dtc.h create mode 100644 drivers/scsi/eata.c create mode 100644 drivers/scsi/eata_generic.h create mode 100644 drivers/scsi/eata_pio.c create mode 100644 drivers/scsi/eata_pio.h create mode 100644 drivers/scsi/esp.c create mode 100644 drivers/scsi/esp.h create mode 100644 drivers/scsi/fastlane.c create mode 100644 drivers/scsi/fcal.c create mode 100644 drivers/scsi/fcal.h create mode 100644 drivers/scsi/fd_mcs.c create mode 100644 drivers/scsi/fdomain.c create mode 100644 drivers/scsi/fdomain.h create mode 100644 drivers/scsi/g_NCR5380.c create mode 100644 drivers/scsi/g_NCR5380.h create mode 100644 drivers/scsi/g_NCR5380_mmio.c create mode 100644 drivers/scsi/gdth.c create mode 100644 drivers/scsi/gdth.h create mode 100644 drivers/scsi/gdth_ioctl.h create mode 100644 drivers/scsi/gdth_kcompat.h create mode 100644 drivers/scsi/gdth_proc.c create mode 100644 drivers/scsi/gdth_proc.h create mode 100644 drivers/scsi/gvp11.c create mode 100644 drivers/scsi/gvp11.h create mode 100644 drivers/scsi/hosts.c create mode 100644 drivers/scsi/hosts.h create mode 100644 drivers/scsi/ibmmca.c create mode 100644 drivers/scsi/ibmmca.h create mode 100644 drivers/scsi/ibmvscsi/Makefile create mode 100644 drivers/scsi/ibmvscsi/ibmvscsi.c create mode 100644 drivers/scsi/ibmvscsi/ibmvscsi.h create mode 100644 drivers/scsi/ibmvscsi/iseries_vscsi.c create mode 100644 drivers/scsi/ibmvscsi/rpa_vscsi.c create mode 100644 drivers/scsi/ibmvscsi/srp.h create mode 100644 drivers/scsi/ibmvscsi/viosrp.h create mode 100644 drivers/scsi/ide-scsi.c create mode 100644 drivers/scsi/imm.c create mode 100644 drivers/scsi/imm.h create mode 100644 drivers/scsi/in2000.c create mode 100644 drivers/scsi/in2000.h create mode 100644 drivers/scsi/initio.c create mode 100644 drivers/scsi/initio.h create mode 100644 drivers/scsi/ipr.c create mode 100644 drivers/scsi/ipr.h create mode 100644 drivers/scsi/ips.c create mode 100644 drivers/scsi/ips.h create mode 100644 drivers/scsi/jazz_esp.c create mode 100644 drivers/scsi/lasi700.c create mode 100644 drivers/scsi/libata-core.c create mode 100644 drivers/scsi/libata-scsi.c create mode 100644 drivers/scsi/libata.h create mode 100644 drivers/scsi/mac53c94.c create mode 100644 drivers/scsi/mac53c94.h create mode 100644 drivers/scsi/mac_esp.c create mode 100644 drivers/scsi/mac_scsi.c create mode 100644 drivers/scsi/mac_scsi.h create mode 100644 drivers/scsi/mca_53c9x.c create mode 100644 drivers/scsi/megaraid.c create mode 100644 drivers/scsi/megaraid.h create mode 100644 drivers/scsi/megaraid/Kconfig.megaraid create mode 100644 drivers/scsi/megaraid/Makefile create mode 100644 drivers/scsi/megaraid/mbox_defs.h create mode 100644 drivers/scsi/megaraid/mega_common.h create mode 100644 drivers/scsi/megaraid/megaraid_ioctl.h create mode 100644 drivers/scsi/megaraid/megaraid_mbox.c create mode 100644 drivers/scsi/megaraid/megaraid_mbox.h create mode 100644 drivers/scsi/megaraid/megaraid_mm.c create mode 100644 drivers/scsi/megaraid/megaraid_mm.h create mode 100644 drivers/scsi/mesh.c create mode 100644 drivers/scsi/mesh.h create mode 100644 drivers/scsi/mvme147.c create mode 100644 drivers/scsi/mvme147.h create mode 100644 drivers/scsi/mvme16x.c create mode 100644 drivers/scsi/mvme16x.h create mode 100644 drivers/scsi/ncr53c8xx.c create mode 100644 drivers/scsi/ncr53c8xx.h create mode 100644 drivers/scsi/nsp32.c create mode 100644 drivers/scsi/nsp32.h create mode 100644 drivers/scsi/nsp32_debug.c create mode 100644 drivers/scsi/nsp32_io.h create mode 100644 drivers/scsi/oktagon_esp.c create mode 100644 drivers/scsi/oktagon_io.S create mode 100644 drivers/scsi/osst.c create mode 100644 drivers/scsi/osst.h create mode 100644 drivers/scsi/osst_detect.h create mode 100644 drivers/scsi/osst_options.h create mode 100644 drivers/scsi/pas16.c create mode 100644 drivers/scsi/pas16.h create mode 100644 drivers/scsi/pci2000.c create mode 100644 drivers/scsi/pci2000.h create mode 100644 drivers/scsi/pci2220i.c create mode 100644 drivers/scsi/pci2220i.h create mode 100644 drivers/scsi/pcmcia/Kconfig create mode 100644 drivers/scsi/pcmcia/Makefile create mode 100644 drivers/scsi/pcmcia/aha152x_core.c create mode 100644 drivers/scsi/pcmcia/aha152x_stub.c create mode 100644 drivers/scsi/pcmcia/fdomain_core.c create mode 100644 drivers/scsi/pcmcia/fdomain_stub.c create mode 100644 drivers/scsi/pcmcia/nsp_cs.c create mode 100644 drivers/scsi/pcmcia/nsp_cs.h create mode 100644 drivers/scsi/pcmcia/nsp_debug.c create mode 100644 drivers/scsi/pcmcia/nsp_io.h create mode 100644 drivers/scsi/pcmcia/nsp_message.c create mode 100644 drivers/scsi/pcmcia/qlogic_stub.c create mode 100644 drivers/scsi/pcmcia/sym53c500_cs.c create mode 100644 drivers/scsi/pluto.c create mode 100644 drivers/scsi/pluto.h create mode 100644 drivers/scsi/ppa.c create mode 100644 drivers/scsi/ppa.h create mode 100644 drivers/scsi/psi240i.c create mode 100644 drivers/scsi/psi240i.h create mode 100644 drivers/scsi/psi_chip.h create mode 100644 drivers/scsi/psi_dale.h create mode 100644 drivers/scsi/psi_roy.h create mode 100644 drivers/scsi/ql1040_fw.h create mode 100644 drivers/scsi/ql12160_fw.h create mode 100644 drivers/scsi/ql1280_fw.h create mode 100644 drivers/scsi/qla1280.c create mode 100644 drivers/scsi/qla1280.h create mode 100644 drivers/scsi/qla2xxx/Kconfig create mode 100644 drivers/scsi/qla2xxx/Makefile create mode 100644 drivers/scsi/qla2xxx/ql2100.c create mode 100644 drivers/scsi/qla2xxx/ql2100_fw.c create mode 100644 drivers/scsi/qla2xxx/ql2200.c create mode 100644 drivers/scsi/qla2xxx/ql2200_fw.c create mode 100644 drivers/scsi/qla2xxx/ql2300.c create mode 100644 drivers/scsi/qla2xxx/ql2300_fw.c create mode 100644 drivers/scsi/qla2xxx/ql2322.c create mode 100644 drivers/scsi/qla2xxx/ql2322_fw.c create mode 100644 drivers/scsi/qla2xxx/ql6312.c create mode 100644 drivers/scsi/qla2xxx/ql6312_fw.c create mode 100644 drivers/scsi/qla2xxx/qla_dbg.c create mode 100644 drivers/scsi/qla2xxx/qla_dbg.h create mode 100644 drivers/scsi/qla2xxx/qla_def.h create mode 100644 drivers/scsi/qla2xxx/qla_devtbl.h create mode 100644 drivers/scsi/qla2xxx/qla_gbl.h create mode 100644 drivers/scsi/qla2xxx/qla_gs.c create mode 100644 drivers/scsi/qla2xxx/qla_init.c create mode 100644 drivers/scsi/qla2xxx/qla_inline.h create mode 100644 drivers/scsi/qla2xxx/qla_iocb.c create mode 100644 drivers/scsi/qla2xxx/qla_isr.c create mode 100644 drivers/scsi/qla2xxx/qla_listops.h create mode 100644 drivers/scsi/qla2xxx/qla_mbx.c create mode 100644 drivers/scsi/qla2xxx/qla_os.c create mode 100644 drivers/scsi/qla2xxx/qla_rscn.c create mode 100644 drivers/scsi/qla2xxx/qla_settings.h create mode 100644 drivers/scsi/qla2xxx/qla_sup.c create mode 100644 drivers/scsi/qla2xxx/qla_version.h create mode 100644 drivers/scsi/qlogicfas.c create mode 100644 drivers/scsi/qlogicfas408.c create mode 100644 drivers/scsi/qlogicfas408.h create mode 100644 drivers/scsi/qlogicfc.c create mode 100644 drivers/scsi/qlogicfc_asm.c create mode 100644 drivers/scsi/qlogicisp.c create mode 100644 drivers/scsi/qlogicisp_asm.c create mode 100644 drivers/scsi/qlogicpti.c create mode 100644 drivers/scsi/qlogicpti.h create mode 100644 drivers/scsi/qlogicpti_asm.c create mode 100644 drivers/scsi/sata_nv.c create mode 100644 drivers/scsi/sata_promise.c create mode 100644 drivers/scsi/sata_promise.h create mode 100644 drivers/scsi/sata_qstor.c create mode 100644 drivers/scsi/sata_sil.c create mode 100644 drivers/scsi/sata_sis.c create mode 100644 drivers/scsi/sata_svw.c create mode 100644 drivers/scsi/sata_sx4.c create mode 100644 drivers/scsi/sata_uli.c create mode 100644 drivers/scsi/sata_via.c create mode 100644 drivers/scsi/sata_vsc.c create mode 100644 drivers/scsi/script_asm.pl create mode 100644 drivers/scsi/scsi.c create mode 100644 drivers/scsi/scsi.h create mode 100644 drivers/scsi/scsi_debug.c create mode 100644 drivers/scsi/scsi_debug.h create mode 100644 drivers/scsi/scsi_devinfo.c create mode 100644 drivers/scsi/scsi_error.c create mode 100644 drivers/scsi/scsi_ioctl.c create mode 100644 drivers/scsi/scsi_lib.c create mode 100644 drivers/scsi/scsi_logging.h create mode 100644 drivers/scsi/scsi_module.c create mode 100644 drivers/scsi/scsi_obsolete.h create mode 100644 drivers/scsi/scsi_priv.h create mode 100644 drivers/scsi/scsi_proc.c create mode 100644 drivers/scsi/scsi_scan.c create mode 100644 drivers/scsi/scsi_sysctl.c create mode 100644 drivers/scsi/scsi_sysfs.c create mode 100644 drivers/scsi/scsi_transport_fc.c create mode 100644 drivers/scsi/scsi_transport_iscsi.c create mode 100644 drivers/scsi/scsi_transport_spi.c create mode 100644 drivers/scsi/scsi_typedefs.h create mode 100644 drivers/scsi/scsicam.c create mode 100644 drivers/scsi/sd.c create mode 100644 drivers/scsi/seagate.c create mode 100644 drivers/scsi/seagate.h create mode 100644 drivers/scsi/sg.c create mode 100644 drivers/scsi/sgiwd93.c create mode 100644 drivers/scsi/sgiwd93.h create mode 100644 drivers/scsi/sim710.c create mode 100644 drivers/scsi/sr.c create mode 100644 drivers/scsi/sr.h create mode 100644 drivers/scsi/sr_ioctl.c create mode 100644 drivers/scsi/sr_vendor.c create mode 100644 drivers/scsi/st.c create mode 100644 drivers/scsi/st.h create mode 100644 drivers/scsi/st_options.h create mode 100644 drivers/scsi/sun3_NCR5380.c create mode 100644 drivers/scsi/sun3_scsi.c create mode 100644 drivers/scsi/sun3_scsi.h create mode 100644 drivers/scsi/sun3_scsi_vme.c create mode 100644 drivers/scsi/sun3x_esp.c create mode 100644 drivers/scsi/sym53c416.c create mode 100644 drivers/scsi/sym53c416.h create mode 100644 drivers/scsi/sym53c8xx_2/Makefile create mode 100644 drivers/scsi/sym53c8xx_2/sym53c8xx.h create mode 100644 drivers/scsi/sym53c8xx_2/sym_defs.h create mode 100644 drivers/scsi/sym53c8xx_2/sym_fw.c create mode 100644 drivers/scsi/sym53c8xx_2/sym_fw.h create mode 100644 drivers/scsi/sym53c8xx_2/sym_fw1.h create mode 100644 drivers/scsi/sym53c8xx_2/sym_fw2.h create mode 100644 drivers/scsi/sym53c8xx_2/sym_glue.c create mode 100644 drivers/scsi/sym53c8xx_2/sym_glue.h create mode 100644 drivers/scsi/sym53c8xx_2/sym_hipd.c create mode 100644 drivers/scsi/sym53c8xx_2/sym_hipd.h create mode 100644 drivers/scsi/sym53c8xx_2/sym_malloc.c create mode 100644 drivers/scsi/sym53c8xx_2/sym_misc.h create mode 100644 drivers/scsi/sym53c8xx_2/sym_nvram.c create mode 100644 drivers/scsi/sym53c8xx_2/sym_nvram.h create mode 100644 drivers/scsi/sym53c8xx_comm.h create mode 100644 drivers/scsi/sym53c8xx_defs.h create mode 100644 drivers/scsi/t128.c create mode 100644 drivers/scsi/t128.h create mode 100644 drivers/scsi/tmscsim.c create mode 100644 drivers/scsi/tmscsim.h create mode 100644 drivers/scsi/u14-34f.c create mode 100644 drivers/scsi/ultrastor.c create mode 100644 drivers/scsi/ultrastor.h create mode 100644 drivers/scsi/wd33c93.c create mode 100644 drivers/scsi/wd33c93.h create mode 100644 drivers/scsi/wd7000.c create mode 100644 drivers/scsi/zalon.c create mode 100644 drivers/serial/21285.c create mode 100644 drivers/serial/68328serial.c create mode 100644 drivers/serial/68328serial.h create mode 100644 drivers/serial/68360serial.c create mode 100644 drivers/serial/8250.c create mode 100644 drivers/serial/8250.h create mode 100644 drivers/serial/8250_acorn.c create mode 100644 drivers/serial/8250_acpi.c create mode 100644 drivers/serial/8250_early.c create mode 100644 drivers/serial/8250_gsc.c create mode 100644 drivers/serial/8250_hp300.c create mode 100644 drivers/serial/8250_pci.c create mode 100644 drivers/serial/8250_pnp.c create mode 100644 drivers/serial/Kconfig create mode 100644 drivers/serial/Makefile create mode 100644 drivers/serial/amba-pl010.c create mode 100644 drivers/serial/amba-pl011.c create mode 100644 drivers/serial/au1x00_uart.c create mode 100644 drivers/serial/bast_sio.c create mode 100644 drivers/serial/clps711x.c create mode 100644 drivers/serial/cpm_uart/Makefile create mode 100644 drivers/serial/cpm_uart/cpm_uart.h create mode 100644 drivers/serial/cpm_uart/cpm_uart_core.c create mode 100644 drivers/serial/cpm_uart/cpm_uart_cpm1.c create mode 100644 drivers/serial/cpm_uart/cpm_uart_cpm1.h create mode 100644 drivers/serial/cpm_uart/cpm_uart_cpm2.c create mode 100644 drivers/serial/cpm_uart/cpm_uart_cpm2.h create mode 100644 drivers/serial/crisv10.c create mode 100644 drivers/serial/crisv10.h create mode 100644 drivers/serial/dz.c create mode 100644 drivers/serial/dz.h create mode 100644 drivers/serial/icom.c create mode 100644 drivers/serial/icom.h create mode 100644 drivers/serial/imx.c create mode 100644 drivers/serial/ioc4_serial.c create mode 100644 drivers/serial/ip22zilog.c create mode 100644 drivers/serial/ip22zilog.h create mode 100644 drivers/serial/jsm/Makefile create mode 100644 drivers/serial/jsm/jsm.h create mode 100644 drivers/serial/jsm/jsm_driver.c create mode 100644 drivers/serial/jsm/jsm_neo.c create mode 100644 drivers/serial/jsm/jsm_tty.c create mode 100644 drivers/serial/m32r_sio.c create mode 100644 drivers/serial/m32r_sio.h create mode 100644 drivers/serial/m32r_sio_reg.h create mode 100644 drivers/serial/mcfserial.c create mode 100644 drivers/serial/mcfserial.h create mode 100644 drivers/serial/mpc52xx_uart.c create mode 100644 drivers/serial/mpsc.c create mode 100644 drivers/serial/mpsc.h create mode 100644 drivers/serial/mux.c create mode 100644 drivers/serial/pmac_zilog.c create mode 100644 drivers/serial/pmac_zilog.h create mode 100644 drivers/serial/pxa.c create mode 100644 drivers/serial/s3c2410.c create mode 100644 drivers/serial/sa1100.c create mode 100644 drivers/serial/serial_core.c create mode 100644 drivers/serial/serial_cs.c create mode 100644 drivers/serial/serial_lh7a40x.c create mode 100644 drivers/serial/serial_txx9.c create mode 100644 drivers/serial/sh-sci.c create mode 100644 drivers/serial/sh-sci.h create mode 100644 drivers/serial/sn_console.c create mode 100644 drivers/serial/suncore.c create mode 100644 drivers/serial/suncore.h create mode 100644 drivers/serial/sunsab.c create mode 100644 drivers/serial/sunsab.h create mode 100644 drivers/serial/sunsu.c create mode 100644 drivers/serial/sunzilog.c create mode 100644 drivers/serial/sunzilog.h create mode 100644 drivers/serial/uart00.c create mode 100644 drivers/serial/v850e_uart.c create mode 100644 drivers/serial/vr41xx_siu.c create mode 100644 drivers/sh/Makefile create mode 100644 drivers/sh/superhyway/Makefile create mode 100644 drivers/sh/superhyway/superhyway-sysfs.c create mode 100644 drivers/sh/superhyway/superhyway.c create mode 100644 drivers/sn/Makefile create mode 100644 drivers/sn/ioc4.c create mode 100644 drivers/tc/Makefile create mode 100644 drivers/tc/lk201-map.c_shipped create mode 100644 drivers/tc/lk201-map.map create mode 100644 drivers/tc/lk201-remap.c create mode 100644 drivers/tc/lk201.c create mode 100644 drivers/tc/lk201.h create mode 100644 drivers/tc/tc.c create mode 100644 drivers/tc/zs.c create mode 100644 drivers/tc/zs.h create mode 100644 drivers/telephony/Kconfig create mode 100644 drivers/telephony/Makefile create mode 100644 drivers/telephony/ixj-ver.h create mode 100644 drivers/telephony/ixj.c create mode 100644 drivers/telephony/ixj.h create mode 100644 drivers/telephony/ixj_pcmcia.c create mode 100644 drivers/telephony/phonedev.c create mode 100644 drivers/usb/Kconfig create mode 100644 drivers/usb/Makefile create mode 100644 drivers/usb/README create mode 100644 drivers/usb/atm/Kconfig create mode 100644 drivers/usb/atm/Makefile create mode 100644 drivers/usb/atm/speedtch.c create mode 100644 drivers/usb/atm/usb_atm.c create mode 100644 drivers/usb/atm/usb_atm.h create mode 100644 drivers/usb/class/Kconfig create mode 100644 drivers/usb/class/Makefile create mode 100644 drivers/usb/class/audio.c create mode 100644 drivers/usb/class/audio.h create mode 100644 drivers/usb/class/bluetty.c create mode 100644 drivers/usb/class/cdc-acm.c create mode 100644 drivers/usb/class/cdc-acm.h create mode 100644 drivers/usb/class/usb-midi.c create mode 100644 drivers/usb/class/usb-midi.h create mode 100644 drivers/usb/class/usblp.c create mode 100644 drivers/usb/core/Kconfig create mode 100644 drivers/usb/core/Makefile create mode 100644 drivers/usb/core/buffer.c create mode 100644 drivers/usb/core/config.c create mode 100644 drivers/usb/core/devices.c create mode 100644 drivers/usb/core/devio.c create mode 100644 drivers/usb/core/file.c create mode 100644 drivers/usb/core/hcd-pci.c create mode 100644 drivers/usb/core/hcd.c create mode 100644 drivers/usb/core/hcd.h create mode 100644 drivers/usb/core/hub.c create mode 100644 drivers/usb/core/hub.h create mode 100644 drivers/usb/core/inode.c create mode 100644 drivers/usb/core/message.c create mode 100644 drivers/usb/core/otg_whitelist.h create mode 100644 drivers/usb/core/sysfs.c create mode 100644 drivers/usb/core/urb.c create mode 100644 drivers/usb/core/usb.c create mode 100644 drivers/usb/core/usb.h create mode 100644 drivers/usb/gadget/Kconfig create mode 100644 drivers/usb/gadget/Makefile create mode 100644 drivers/usb/gadget/config.c create mode 100644 drivers/usb/gadget/dummy_hcd.c create mode 100644 drivers/usb/gadget/epautoconf.c create mode 100644 drivers/usb/gadget/ether.c create mode 100644 drivers/usb/gadget/file_storage.c create mode 100644 drivers/usb/gadget/gadget_chips.h create mode 100644 drivers/usb/gadget/goku_udc.c create mode 100644 drivers/usb/gadget/goku_udc.h create mode 100644 drivers/usb/gadget/inode.c create mode 100644 drivers/usb/gadget/lh7a40x_udc.c create mode 100644 drivers/usb/gadget/lh7a40x_udc.h create mode 100644 drivers/usb/gadget/ndis.h create mode 100644 drivers/usb/gadget/net2280.c create mode 100644 drivers/usb/gadget/net2280.h create mode 100644 drivers/usb/gadget/omap_udc.c create mode 100644 drivers/usb/gadget/omap_udc.h create mode 100644 drivers/usb/gadget/pxa2xx_udc.c create mode 100644 drivers/usb/gadget/pxa2xx_udc.h create mode 100644 drivers/usb/gadget/rndis.c create mode 100644 drivers/usb/gadget/rndis.h create mode 100644 drivers/usb/gadget/serial.c create mode 100644 drivers/usb/gadget/usbstring.c create mode 100644 drivers/usb/gadget/zero.c create mode 100644 drivers/usb/host/Kconfig create mode 100644 drivers/usb/host/Makefile create mode 100644 drivers/usb/host/ehci-dbg.c create mode 100644 drivers/usb/host/ehci-hcd.c create mode 100644 drivers/usb/host/ehci-hub.c create mode 100644 drivers/usb/host/ehci-mem.c create mode 100644 drivers/usb/host/ehci-q.c create mode 100644 drivers/usb/host/ehci-sched.c create mode 100644 drivers/usb/host/ehci.h create mode 100644 drivers/usb/host/hc_crisv10.c create mode 100644 drivers/usb/host/hc_crisv10.h create mode 100644 drivers/usb/host/ohci-au1xxx.c create mode 100644 drivers/usb/host/ohci-dbg.c create mode 100644 drivers/usb/host/ohci-hcd.c create mode 100644 drivers/usb/host/ohci-hub.c create mode 100644 drivers/usb/host/ohci-lh7a404.c create mode 100644 drivers/usb/host/ohci-mem.c create mode 100644 drivers/usb/host/ohci-omap.c create mode 100644 drivers/usb/host/ohci-pci.c create mode 100644 drivers/usb/host/ohci-ppc-soc.c create mode 100644 drivers/usb/host/ohci-pxa27x.c create mode 100644 drivers/usb/host/ohci-q.c create mode 100644 drivers/usb/host/ohci-sa1111.c create mode 100644 drivers/usb/host/ohci.h create mode 100644 drivers/usb/host/sl811-hcd.c create mode 100644 drivers/usb/host/sl811.h create mode 100644 drivers/usb/host/uhci-debug.c create mode 100644 drivers/usb/host/uhci-hcd.c create mode 100644 drivers/usb/host/uhci-hcd.h create mode 100644 drivers/usb/host/uhci-hub.c create mode 100644 drivers/usb/host/uhci-q.c create mode 100644 drivers/usb/image/Kconfig create mode 100644 drivers/usb/image/Makefile create mode 100644 drivers/usb/image/mdc800.c create mode 100644 drivers/usb/image/microtek.c create mode 100644 drivers/usb/image/microtek.h create mode 100644 drivers/usb/input/Kconfig create mode 100644 drivers/usb/input/Makefile create mode 100644 drivers/usb/input/aiptek.c create mode 100644 drivers/usb/input/ati_remote.c create mode 100644 drivers/usb/input/fixp-arith.h create mode 100644 drivers/usb/input/hid-core.c create mode 100644 drivers/usb/input/hid-debug.h create mode 100644 drivers/usb/input/hid-ff.c create mode 100644 drivers/usb/input/hid-input.c create mode 100644 drivers/usb/input/hid-lgff.c create mode 100644 drivers/usb/input/hid-tmff.c create mode 100644 drivers/usb/input/hid.h create mode 100644 drivers/usb/input/hiddev.c create mode 100644 drivers/usb/input/kbtab.c create mode 100644 drivers/usb/input/mtouchusb.c create mode 100644 drivers/usb/input/pid.c create mode 100644 drivers/usb/input/pid.h create mode 100644 drivers/usb/input/powermate.c create mode 100644 drivers/usb/input/touchkitusb.c create mode 100644 drivers/usb/input/usbkbd.c create mode 100644 drivers/usb/input/usbmouse.c create mode 100644 drivers/usb/input/wacom.c create mode 100644 drivers/usb/input/xpad.c create mode 100644 drivers/usb/media/Kconfig create mode 100644 drivers/usb/media/Makefile create mode 100644 drivers/usb/media/dabfirmware.h create mode 100644 drivers/usb/media/dabusb.c create mode 100644 drivers/usb/media/dabusb.h create mode 100644 drivers/usb/media/dsbr100.c create mode 100644 drivers/usb/media/ibmcam.c create mode 100644 drivers/usb/media/konicawc.c create mode 100644 drivers/usb/media/ov511.c create mode 100644 drivers/usb/media/ov511.h create mode 100644 drivers/usb/media/pwc/ChangeLog create mode 100644 drivers/usb/media/pwc/Makefile create mode 100644 drivers/usb/media/pwc/philips.txt create mode 100644 drivers/usb/media/pwc/pwc-ctrl.c create mode 100644 drivers/usb/media/pwc/pwc-dec1.c create mode 100644 drivers/usb/media/pwc/pwc-dec1.h create mode 100644 drivers/usb/media/pwc/pwc-dec23.c create mode 100644 drivers/usb/media/pwc/pwc-dec23.h create mode 100644 drivers/usb/media/pwc/pwc-if.c create mode 100644 drivers/usb/media/pwc/pwc-ioctl.h create mode 100644 drivers/usb/media/pwc/pwc-kiara.c create mode 100644 drivers/usb/media/pwc/pwc-kiara.h create mode 100644 drivers/usb/media/pwc/pwc-misc.c create mode 100644 drivers/usb/media/pwc/pwc-nala.h create mode 100644 drivers/usb/media/pwc/pwc-timon.c create mode 100644 drivers/usb/media/pwc/pwc-timon.h create mode 100644 drivers/usb/media/pwc/pwc-uncompress.c create mode 100644 drivers/usb/media/pwc/pwc-uncompress.h create mode 100644 drivers/usb/media/pwc/pwc.h create mode 100644 drivers/usb/media/se401.c create mode 100644 drivers/usb/media/se401.h create mode 100644 drivers/usb/media/sn9c102.h create mode 100644 drivers/usb/media/sn9c102_core.c create mode 100644 drivers/usb/media/sn9c102_hv7131d.c create mode 100644 drivers/usb/media/sn9c102_mi0343.c create mode 100644 drivers/usb/media/sn9c102_pas106b.c create mode 100644 drivers/usb/media/sn9c102_pas202bcb.c create mode 100644 drivers/usb/media/sn9c102_sensor.h create mode 100644 drivers/usb/media/sn9c102_tas5110c1b.c create mode 100644 drivers/usb/media/sn9c102_tas5130d1b.c create mode 100644 drivers/usb/media/stv680.c create mode 100644 drivers/usb/media/stv680.h create mode 100644 drivers/usb/media/ultracam.c create mode 100644 drivers/usb/media/usbvideo.c create mode 100644 drivers/usb/media/usbvideo.h create mode 100644 drivers/usb/media/vicam.c create mode 100644 drivers/usb/media/w9968cf.c create mode 100644 drivers/usb/media/w9968cf.h create mode 100644 drivers/usb/media/w9968cf_decoder.h create mode 100644 drivers/usb/media/w9968cf_vpp.h create mode 100644 drivers/usb/misc/Kconfig create mode 100644 drivers/usb/misc/Makefile create mode 100644 drivers/usb/misc/auerswald.c create mode 100644 drivers/usb/misc/cytherm.c create mode 100644 drivers/usb/misc/emi26.c create mode 100644 drivers/usb/misc/emi26_fw.h create mode 100644 drivers/usb/misc/emi62.c create mode 100644 drivers/usb/misc/emi62_fw_m.h create mode 100644 drivers/usb/misc/emi62_fw_s.h create mode 100644 drivers/usb/misc/idmouse.c create mode 100644 drivers/usb/misc/legousbtower.c create mode 100644 drivers/usb/misc/phidgetkit.c create mode 100644 drivers/usb/misc/phidgetservo.c create mode 100644 drivers/usb/misc/rio500.c create mode 100644 drivers/usb/misc/rio500_usb.h create mode 100644 drivers/usb/misc/sisusbvga/Kconfig create mode 100644 drivers/usb/misc/sisusbvga/Makefile create mode 100644 drivers/usb/misc/sisusbvga/sisusb.c create mode 100644 drivers/usb/misc/sisusbvga/sisusb.h create mode 100644 drivers/usb/misc/usblcd.c create mode 100644 drivers/usb/misc/usbled.c create mode 100644 drivers/usb/misc/usbtest.c create mode 100644 drivers/usb/misc/uss720.c create mode 100644 drivers/usb/mon/Kconfig create mode 100644 drivers/usb/mon/Makefile create mode 100644 drivers/usb/mon/mon_main.c create mode 100644 drivers/usb/mon/mon_stat.c create mode 100644 drivers/usb/mon/mon_text.c create mode 100644 drivers/usb/mon/usb_mon.h create mode 100644 drivers/usb/net/Kconfig create mode 100644 drivers/usb/net/Makefile create mode 100644 drivers/usb/net/catc.c create mode 100644 drivers/usb/net/kaweth.c create mode 100644 drivers/usb/net/kawethfw.h create mode 100644 drivers/usb/net/pegasus.c create mode 100644 drivers/usb/net/pegasus.h create mode 100644 drivers/usb/net/rtl8150.c create mode 100644 drivers/usb/net/usbnet.c create mode 100644 drivers/usb/net/zd1201.c create mode 100644 drivers/usb/net/zd1201.h create mode 100644 drivers/usb/serial/Kconfig create mode 100644 drivers/usb/serial/Makefile create mode 100644 drivers/usb/serial/Makefile-keyspan_pda_fw create mode 100644 drivers/usb/serial/belkin_sa.c create mode 100644 drivers/usb/serial/belkin_sa.h create mode 100644 drivers/usb/serial/bus.c create mode 100644 drivers/usb/serial/console.c create mode 100644 drivers/usb/serial/cp2101.c create mode 100644 drivers/usb/serial/cyberjack.c create mode 100644 drivers/usb/serial/cypress_m8.c create mode 100644 drivers/usb/serial/cypress_m8.h create mode 100644 drivers/usb/serial/digi_acceleport.c create mode 100644 drivers/usb/serial/empeg.c create mode 100644 drivers/usb/serial/ezusb.c create mode 100644 drivers/usb/serial/ezusb_convert.pl create mode 100644 drivers/usb/serial/ftdi_sio.c create mode 100644 drivers/usb/serial/ftdi_sio.h create mode 100644 drivers/usb/serial/garmin_gps.c create mode 100644 drivers/usb/serial/generic.c create mode 100644 drivers/usb/serial/io_16654.h create mode 100644 drivers/usb/serial/io_edgeport.c create mode 100644 drivers/usb/serial/io_edgeport.h create mode 100644 drivers/usb/serial/io_fw_boot.h create mode 100644 drivers/usb/serial/io_fw_boot2.h create mode 100644 drivers/usb/serial/io_fw_down.h create mode 100644 drivers/usb/serial/io_fw_down2.h create mode 100644 drivers/usb/serial/io_fw_down3.h create mode 100644 drivers/usb/serial/io_ionsp.h create mode 100644 drivers/usb/serial/io_tables.h create mode 100644 drivers/usb/serial/io_ti.c create mode 100644 drivers/usb/serial/io_ti.h create mode 100644 drivers/usb/serial/io_usbvend.h create mode 100644 drivers/usb/serial/ipaq.c create mode 100644 drivers/usb/serial/ipaq.h create mode 100644 drivers/usb/serial/ipw.c create mode 100644 drivers/usb/serial/ir-usb.c create mode 100644 drivers/usb/serial/keyspan.c create mode 100644 drivers/usb/serial/keyspan.h create mode 100644 drivers/usb/serial/keyspan_mpr_fw.h create mode 100644 drivers/usb/serial/keyspan_pda.S create mode 100644 drivers/usb/serial/keyspan_pda.c create mode 100644 drivers/usb/serial/keyspan_pda_fw.h create mode 100644 drivers/usb/serial/keyspan_usa18x_fw.h create mode 100644 drivers/usb/serial/keyspan_usa19_fw.h create mode 100644 drivers/usb/serial/keyspan_usa19qi_fw.h create mode 100644 drivers/usb/serial/keyspan_usa19qw_fw.h create mode 100644 drivers/usb/serial/keyspan_usa19w_fw.h create mode 100644 drivers/usb/serial/keyspan_usa26msg.h create mode 100644 drivers/usb/serial/keyspan_usa28_fw.h create mode 100644 drivers/usb/serial/keyspan_usa28msg.h create mode 100644 drivers/usb/serial/keyspan_usa28x_fw.h create mode 100644 drivers/usb/serial/keyspan_usa28xa_fw.h create mode 100644 drivers/usb/serial/keyspan_usa28xb_fw.h create mode 100644 drivers/usb/serial/keyspan_usa49msg.h create mode 100644 drivers/usb/serial/keyspan_usa49w_fw.h create mode 100644 drivers/usb/serial/keyspan_usa49wlc_fw.h create mode 100644 drivers/usb/serial/keyspan_usa90msg.h create mode 100644 drivers/usb/serial/kl5kusb105.c create mode 100644 drivers/usb/serial/kl5kusb105.h create mode 100644 drivers/usb/serial/kobil_sct.c create mode 100644 drivers/usb/serial/kobil_sct.h create mode 100644 drivers/usb/serial/mct_u232.c create mode 100644 drivers/usb/serial/mct_u232.h create mode 100644 drivers/usb/serial/omninet.c create mode 100644 drivers/usb/serial/pl2303.c create mode 100644 drivers/usb/serial/pl2303.h create mode 100644 drivers/usb/serial/safe_serial.c create mode 100644 drivers/usb/serial/ti_fw_3410.h create mode 100644 drivers/usb/serial/ti_fw_5052.h create mode 100644 drivers/usb/serial/ti_usb_3410_5052.c create mode 100644 drivers/usb/serial/ti_usb_3410_5052.h create mode 100644 drivers/usb/serial/usb-serial.c create mode 100644 drivers/usb/serial/usb-serial.h create mode 100644 drivers/usb/serial/visor.c create mode 100644 drivers/usb/serial/visor.h create mode 100644 drivers/usb/serial/whiteheat.c create mode 100644 drivers/usb/serial/whiteheat.h create mode 100644 drivers/usb/serial/whiteheat_fw.h create mode 100644 drivers/usb/serial/xircom_pgs.S create mode 100644 drivers/usb/serial/xircom_pgs_fw.h create mode 100644 drivers/usb/storage/Kconfig create mode 100644 drivers/usb/storage/Makefile create mode 100644 drivers/usb/storage/datafab.c create mode 100644 drivers/usb/storage/datafab.h create mode 100644 drivers/usb/storage/debug.c create mode 100644 drivers/usb/storage/debug.h create mode 100644 drivers/usb/storage/dpcm.c create mode 100644 drivers/usb/storage/dpcm.h create mode 100644 drivers/usb/storage/freecom.c create mode 100644 drivers/usb/storage/freecom.h create mode 100644 drivers/usb/storage/initializers.c create mode 100644 drivers/usb/storage/initializers.h create mode 100644 drivers/usb/storage/isd200.c create mode 100644 drivers/usb/storage/isd200.h create mode 100644 drivers/usb/storage/jumpshot.c create mode 100644 drivers/usb/storage/jumpshot.h create mode 100644 drivers/usb/storage/protocol.c create mode 100644 drivers/usb/storage/protocol.h create mode 100644 drivers/usb/storage/scsiglue.c create mode 100644 drivers/usb/storage/scsiglue.h create mode 100644 drivers/usb/storage/sddr09.c create mode 100644 drivers/usb/storage/sddr09.h create mode 100644 drivers/usb/storage/sddr55.c create mode 100644 drivers/usb/storage/sddr55.h create mode 100644 drivers/usb/storage/shuttle_usbat.c create mode 100644 drivers/usb/storage/shuttle_usbat.h create mode 100644 drivers/usb/storage/transport.c create mode 100644 drivers/usb/storage/transport.h create mode 100644 drivers/usb/storage/unusual_devs.h create mode 100644 drivers/usb/storage/usb.c create mode 100644 drivers/usb/storage/usb.h create mode 100644 drivers/usb/usb-skeleton.c create mode 100644 drivers/video/68328fb.c create mode 100644 drivers/video/Kconfig create mode 100644 drivers/video/Makefile create mode 100644 drivers/video/S3triofb.c create mode 100644 drivers/video/acornfb.c create mode 100644 drivers/video/acornfb.h create mode 100644 drivers/video/amba-clcd.c create mode 100644 drivers/video/amifb.c create mode 100644 drivers/video/asiliantfb.c create mode 100644 drivers/video/atafb.c create mode 100644 drivers/video/aty/Makefile create mode 100644 drivers/video/aty/ati_ids.h create mode 100644 drivers/video/aty/aty128fb.c create mode 100644 drivers/video/aty/atyfb.h create mode 100644 drivers/video/aty/atyfb_base.c create mode 100644 drivers/video/aty/mach64_accel.c create mode 100644 drivers/video/aty/mach64_ct.c create mode 100644 drivers/video/aty/mach64_cursor.c create mode 100644 drivers/video/aty/mach64_gx.c create mode 100644 drivers/video/aty/radeon_accel.c create mode 100644 drivers/video/aty/radeon_base.c create mode 100644 drivers/video/aty/radeon_i2c.c create mode 100644 drivers/video/aty/radeon_monitor.c create mode 100644 drivers/video/aty/radeon_pm.c create mode 100644 drivers/video/aty/radeonfb.h create mode 100644 drivers/video/aty/xlinit.c create mode 100644 drivers/video/au1100fb.c create mode 100644 drivers/video/au1100fb.h create mode 100644 drivers/video/backlight/Kconfig create mode 100644 drivers/video/backlight/Makefile create mode 100644 drivers/video/backlight/backlight.c create mode 100644 drivers/video/backlight/corgi_bl.c create mode 100644 drivers/video/backlight/lcd.c create mode 100644 drivers/video/bt431.h create mode 100644 drivers/video/bt455.h create mode 100644 drivers/video/bw2.c create mode 100644 drivers/video/c2p.c create mode 100644 drivers/video/c2p.h create mode 100644 drivers/video/cfbcopyarea.c create mode 100644 drivers/video/cfbfillrect.c create mode 100644 drivers/video/cfbimgblt.c create mode 100644 drivers/video/cg14.c create mode 100644 drivers/video/cg3.c create mode 100644 drivers/video/cg6.c create mode 100644 drivers/video/chipsfb.c create mode 100644 drivers/video/cirrusfb.c create mode 100644 drivers/video/clps711xfb.c create mode 100644 drivers/video/console/Kconfig create mode 100644 drivers/video/console/Makefile create mode 100644 drivers/video/console/bitblit.c create mode 100644 drivers/video/console/dummycon.c create mode 100644 drivers/video/console/fbcon.c create mode 100644 drivers/video/console/fbcon.h create mode 100644 drivers/video/console/font_6x11.c create mode 100644 drivers/video/console/font_8x16.c create mode 100644 drivers/video/console/font_8x8.c create mode 100644 drivers/video/console/font_acorn_8x8.c create mode 100644 drivers/video/console/font_mini_4x6.c create mode 100644 drivers/video/console/font_pearl_8x8.c create mode 100644 drivers/video/console/font_sun12x22.c create mode 100644 drivers/video/console/font_sun8x16.c create mode 100644 drivers/video/console/fonts.c create mode 100644 drivers/video/console/mdacon.c create mode 100644 drivers/video/console/newport_con.c create mode 100644 drivers/video/console/prom.uni create mode 100644 drivers/video/console/promcon.c create mode 100644 drivers/video/console/sticon.c create mode 100644 drivers/video/console/sticore.c create mode 100644 drivers/video/console/tileblit.c create mode 100644 drivers/video/console/vgacon.c create mode 100644 drivers/video/controlfb.c create mode 100644 drivers/video/controlfb.h create mode 100644 drivers/video/cyber2000fb.c create mode 100644 drivers/video/cyber2000fb.h create mode 100644 drivers/video/cyberfb.c create mode 100644 drivers/video/cyberfb.h create mode 100644 drivers/video/dnfb.c create mode 100644 drivers/video/edid.h create mode 100644 drivers/video/epson1355fb.c create mode 100644 drivers/video/fbcmap.c create mode 100644 drivers/video/fbmem.c create mode 100644 drivers/video/fbmon.c create mode 100644 drivers/video/fbsysfs.c create mode 100644 drivers/video/ffb.c create mode 100644 drivers/video/fm2fb.c create mode 100644 drivers/video/g364fb.c create mode 100644 drivers/video/gbefb.c create mode 100644 drivers/video/geode/Kconfig create mode 100644 drivers/video/geode/Makefile create mode 100644 drivers/video/geode/display_gx1.c create mode 100644 drivers/video/geode/display_gx1.h create mode 100644 drivers/video/geode/geodefb.h create mode 100644 drivers/video/geode/gx1fb_core.c create mode 100644 drivers/video/geode/video_cs5530.c create mode 100644 drivers/video/geode/video_cs5530.h create mode 100644 drivers/video/hgafb.c create mode 100644 drivers/video/hitfb.c create mode 100644 drivers/video/hpfb.c create mode 100644 drivers/video/i810/Makefile create mode 100644 drivers/video/i810/i810.h create mode 100644 drivers/video/i810/i810_accel.c create mode 100644 drivers/video/i810/i810_dvt.c create mode 100644 drivers/video/i810/i810_gtf.c create mode 100644 drivers/video/i810/i810_main.c create mode 100644 drivers/video/i810/i810_main.h create mode 100644 drivers/video/i810/i810_regs.h create mode 100644 drivers/video/igafb.c create mode 100644 drivers/video/imsttfb.c create mode 100644 drivers/video/intelfb/Makefile create mode 100644 drivers/video/intelfb/intelfb.h create mode 100644 drivers/video/intelfb/intelfbdrv.c create mode 100644 drivers/video/intelfb/intelfbdrv.h create mode 100644 drivers/video/intelfb/intelfbhw.c create mode 100644 drivers/video/intelfb/intelfbhw.h create mode 100644 drivers/video/kyro/Makefile create mode 100644 drivers/video/kyro/STG4000InitDevice.c create mode 100644 drivers/video/kyro/STG4000Interface.h create mode 100644 drivers/video/kyro/STG4000OverlayDevice.c create mode 100644 drivers/video/kyro/STG4000Ramdac.c create mode 100644 drivers/video/kyro/STG4000Reg.h create mode 100644 drivers/video/kyro/STG4000VTG.c create mode 100644 drivers/video/kyro/fbdev.c create mode 100644 drivers/video/leo.c create mode 100644 drivers/video/logo/Kconfig create mode 100644 drivers/video/logo/Makefile create mode 100644 drivers/video/logo/clut_vga16.ppm create mode 100644 drivers/video/logo/logo.c create mode 100644 drivers/video/logo/logo_dec_clut224.ppm create mode 100644 drivers/video/logo/logo_linux_clut224.ppm create mode 100644 drivers/video/logo/logo_linux_mono.pbm create mode 100644 drivers/video/logo/logo_linux_vga16.ppm create mode 100644 drivers/video/logo/logo_mac_clut224.ppm create mode 100644 drivers/video/logo/logo_parisc_clut224.ppm create mode 100644 drivers/video/logo/logo_sgi_clut224.ppm create mode 100644 drivers/video/logo/logo_sun_clut224.ppm create mode 100644 drivers/video/logo/logo_superh_clut224.ppm create mode 100644 drivers/video/logo/logo_superh_mono.pbm create mode 100644 drivers/video/logo/logo_superh_vga16.ppm create mode 100644 drivers/video/macfb.c create mode 100644 drivers/video/macmodes.c create mode 100644 drivers/video/macmodes.h create mode 100644 drivers/video/matrox/Makefile create mode 100644 drivers/video/matrox/g450_pll.c create mode 100644 drivers/video/matrox/g450_pll.h create mode 100644 drivers/video/matrox/i2c-matroxfb.c create mode 100644 drivers/video/matrox/matroxfb_DAC1064.c create mode 100644 drivers/video/matrox/matroxfb_DAC1064.h create mode 100644 drivers/video/matrox/matroxfb_Ti3026.c create mode 100644 drivers/video/matrox/matroxfb_Ti3026.h create mode 100644 drivers/video/matrox/matroxfb_accel.c create mode 100644 drivers/video/matrox/matroxfb_accel.h create mode 100644 drivers/video/matrox/matroxfb_base.c create mode 100644 drivers/video/matrox/matroxfb_base.h create mode 100644 drivers/video/matrox/matroxfb_crtc2.c create mode 100644 drivers/video/matrox/matroxfb_crtc2.h create mode 100644 drivers/video/matrox/matroxfb_g450.c create mode 100644 drivers/video/matrox/matroxfb_g450.h create mode 100644 drivers/video/matrox/matroxfb_maven.c create mode 100644 drivers/video/matrox/matroxfb_maven.h create mode 100644 drivers/video/matrox/matroxfb_misc.c create mode 100644 drivers/video/matrox/matroxfb_misc.h create mode 100644 drivers/video/maxinefb.c create mode 100644 drivers/video/modedb.c create mode 100644 drivers/video/neofb.c create mode 100644 drivers/video/nvidia/Makefile create mode 100644 drivers/video/nvidia/nv_accel.c create mode 100644 drivers/video/nvidia/nv_dma.h create mode 100644 drivers/video/nvidia/nv_hw.c create mode 100644 drivers/video/nvidia/nv_i2c.c create mode 100644 drivers/video/nvidia/nv_local.h create mode 100644 drivers/video/nvidia/nv_of.c create mode 100644 drivers/video/nvidia/nv_proto.h create mode 100644 drivers/video/nvidia/nv_setup.c create mode 100644 drivers/video/nvidia/nv_type.h create mode 100644 drivers/video/nvidia/nvidia.c create mode 100644 drivers/video/offb.c create mode 100644 drivers/video/p9100.c create mode 100644 drivers/video/platinumfb.c create mode 100644 drivers/video/platinumfb.h create mode 100644 drivers/video/pm2fb.c create mode 100644 drivers/video/pm3fb.c create mode 100644 drivers/video/pmag-aa-fb.c create mode 100644 drivers/video/pmag-ba-fb.c create mode 100644 drivers/video/pmagb-b-fb.c create mode 100644 drivers/video/pvr2fb.c create mode 100644 drivers/video/pxafb.c create mode 100644 drivers/video/pxafb.h create mode 100644 drivers/video/q40fb.c create mode 100644 drivers/video/radeonfb.c create mode 100644 drivers/video/retz3fb.c create mode 100644 drivers/video/retz3fb.h create mode 100644 drivers/video/riva/Makefile create mode 100644 drivers/video/riva/fbdev.c create mode 100644 drivers/video/riva/nv4ref.h create mode 100644 drivers/video/riva/nv_driver.c create mode 100644 drivers/video/riva/nv_type.h create mode 100644 drivers/video/riva/nvreg.h create mode 100644 drivers/video/riva/riva_hw.c create mode 100644 drivers/video/riva/riva_hw.h create mode 100644 drivers/video/riva/riva_tbl.h create mode 100644 drivers/video/riva/rivafb-i2c.c create mode 100644 drivers/video/riva/rivafb.h create mode 100644 drivers/video/s1d13xxxfb.c create mode 100644 drivers/video/sa1100fb.c create mode 100644 drivers/video/sa1100fb.h create mode 100644 drivers/video/savage/Makefile create mode 100644 drivers/video/savage/savagefb-i2c.c create mode 100644 drivers/video/savage/savagefb.h create mode 100644 drivers/video/savage/savagefb_accel.c create mode 100644 drivers/video/savage/savagefb_driver.c create mode 100644 drivers/video/sbuslib.c create mode 100644 drivers/video/sbuslib.h create mode 100644 drivers/video/sgivwfb.c create mode 100644 drivers/video/sis/300vtbl.h create mode 100644 drivers/video/sis/310vtbl.h create mode 100644 drivers/video/sis/Makefile create mode 100644 drivers/video/sis/init.c create mode 100644 drivers/video/sis/init.h create mode 100644 drivers/video/sis/init301.c create mode 100644 drivers/video/sis/init301.h create mode 100644 drivers/video/sis/initdef.h create mode 100644 drivers/video/sis/oem300.h create mode 100644 drivers/video/sis/oem310.h create mode 100644 drivers/video/sis/osdef.h create mode 100644 drivers/video/sis/sis.h create mode 100644 drivers/video/sis/sis_accel.c create mode 100644 drivers/video/sis/sis_accel.h create mode 100644 drivers/video/sis/sis_main.c create mode 100644 drivers/video/sis/sis_main.h create mode 100644 drivers/video/sis/vgatypes.h create mode 100644 drivers/video/sis/vstruct.h create mode 100644 drivers/video/skeletonfb.c create mode 100644 drivers/video/softcursor.c create mode 100644 drivers/video/sstfb.c create mode 100644 drivers/video/sticore.h create mode 100644 drivers/video/stifb.c create mode 100644 drivers/video/sun3fb.c create mode 100644 drivers/video/tcx.c create mode 100644 drivers/video/tdfxfb.c create mode 100644 drivers/video/tgafb.c create mode 100644 drivers/video/tridentfb.c create mode 100644 drivers/video/tx3912fb.c create mode 100644 drivers/video/valkyriefb.c create mode 100644 drivers/video/valkyriefb.h create mode 100644 drivers/video/vesafb.c create mode 100644 drivers/video/vfb.c create mode 100644 drivers/video/vga16fb.c create mode 100644 drivers/video/vgastate.c create mode 100644 drivers/video/virgefb.c create mode 100644 drivers/video/virgefb.h create mode 100644 drivers/video/w100fb.c create mode 100644 drivers/video/w100fb.h create mode 100644 drivers/w1/Kconfig create mode 100644 drivers/w1/Makefile create mode 100644 drivers/w1/ds_w1_bridge.c create mode 100644 drivers/w1/dscore.c create mode 100644 drivers/w1/dscore.h create mode 100644 drivers/w1/matrox_w1.c create mode 100644 drivers/w1/w1.c create mode 100644 drivers/w1/w1.h create mode 100644 drivers/w1/w1_family.c create mode 100644 drivers/w1/w1_family.h create mode 100644 drivers/w1/w1_int.c create mode 100644 drivers/w1/w1_int.h create mode 100644 drivers/w1/w1_io.c create mode 100644 drivers/w1/w1_io.h create mode 100644 drivers/w1/w1_log.h create mode 100644 drivers/w1/w1_netlink.c create mode 100644 drivers/w1/w1_netlink.h create mode 100644 drivers/w1/w1_smem.c create mode 100644 drivers/w1/w1_therm.c create mode 100644 drivers/zorro/Kconfig create mode 100644 drivers/zorro/Makefile create mode 100644 drivers/zorro/gen-devlist.c create mode 100644 drivers/zorro/names.c create mode 100644 drivers/zorro/proc.c create mode 100644 drivers/zorro/zorro-driver.c create mode 100644 drivers/zorro/zorro-sysfs.c create mode 100644 drivers/zorro/zorro.c create mode 100644 drivers/zorro/zorro.h create mode 100644 drivers/zorro/zorro.ids create mode 100644 fs/Kconfig create mode 100644 fs/Kconfig.binfmt create mode 100644 fs/Makefile create mode 100644 fs/adfs/Makefile create mode 100644 fs/adfs/adfs.h create mode 100644 fs/adfs/dir.c create mode 100644 fs/adfs/dir_f.c create mode 100644 fs/adfs/dir_f.h create mode 100644 fs/adfs/dir_fplus.c create mode 100644 fs/adfs/dir_fplus.h create mode 100644 fs/adfs/file.c create mode 100644 fs/adfs/inode.c create mode 100644 fs/adfs/map.c create mode 100644 fs/adfs/super.c create mode 100644 fs/affs/Changes create mode 100644 fs/affs/Makefile create mode 100644 fs/affs/affs.h create mode 100644 fs/affs/amigaffs.c create mode 100644 fs/affs/bitmap.c create mode 100644 fs/affs/dir.c create mode 100644 fs/affs/file.c create mode 100644 fs/affs/inode.c create mode 100644 fs/affs/namei.c create mode 100644 fs/affs/super.c create mode 100644 fs/affs/symlink.c create mode 100644 fs/afs/Makefile create mode 100644 fs/afs/cache.h create mode 100644 fs/afs/callback.c create mode 100644 fs/afs/cell.c create mode 100644 fs/afs/cell.h create mode 100644 fs/afs/cmservice.c create mode 100644 fs/afs/cmservice.h create mode 100644 fs/afs/dir.c create mode 100644 fs/afs/errors.h create mode 100644 fs/afs/file.c create mode 100644 fs/afs/fsclient.c create mode 100644 fs/afs/fsclient.h create mode 100644 fs/afs/inode.c create mode 100644 fs/afs/internal.h create mode 100644 fs/afs/kafsasyncd.c create mode 100644 fs/afs/kafsasyncd.h create mode 100644 fs/afs/kafstimod.c create mode 100644 fs/afs/kafstimod.h create mode 100644 fs/afs/main.c create mode 100644 fs/afs/misc.c create mode 100644 fs/afs/mntpt.c create mode 100644 fs/afs/mount.h create mode 100644 fs/afs/proc.c create mode 100644 fs/afs/server.c create mode 100644 fs/afs/server.h create mode 100644 fs/afs/super.c create mode 100644 fs/afs/super.h create mode 100644 fs/afs/transport.h create mode 100644 fs/afs/types.h create mode 100644 fs/afs/vlclient.c create mode 100644 fs/afs/vlclient.h create mode 100644 fs/afs/vlocation.c create mode 100644 fs/afs/vnode.c create mode 100644 fs/afs/vnode.h create mode 100644 fs/afs/volume.c create mode 100644 fs/afs/volume.h create mode 100644 fs/aio.c create mode 100644 fs/attr.c create mode 100644 fs/autofs/Makefile create mode 100644 fs/autofs/autofs_i.h create mode 100644 fs/autofs/dirhash.c create mode 100644 fs/autofs/init.c create mode 100644 fs/autofs/inode.c create mode 100644 fs/autofs/root.c create mode 100644 fs/autofs/symlink.c create mode 100644 fs/autofs/waitq.c create mode 100644 fs/autofs4/Makefile create mode 100644 fs/autofs4/autofs_i.h create mode 100644 fs/autofs4/expire.c create mode 100644 fs/autofs4/init.c create mode 100644 fs/autofs4/inode.c create mode 100644 fs/autofs4/root.c create mode 100644 fs/autofs4/symlink.c create mode 100644 fs/autofs4/waitq.c create mode 100644 fs/bad_inode.c create mode 100644 fs/befs/ChangeLog create mode 100644 fs/befs/Makefile create mode 100644 fs/befs/TODO create mode 100644 fs/befs/attribute.c create mode 100644 fs/befs/befs.h create mode 100644 fs/befs/befs_fs_types.h create mode 100644 fs/befs/btree.c create mode 100644 fs/befs/btree.h create mode 100644 fs/befs/datastream.c create mode 100644 fs/befs/datastream.h create mode 100644 fs/befs/debug.c create mode 100644 fs/befs/endian.h create mode 100644 fs/befs/inode.c create mode 100644 fs/befs/inode.h create mode 100644 fs/befs/io.c create mode 100644 fs/befs/io.h create mode 100644 fs/befs/linuxvfs.c create mode 100644 fs/befs/super.c create mode 100644 fs/befs/super.h create mode 100644 fs/bfs/Makefile create mode 100644 fs/bfs/bfs.h create mode 100644 fs/bfs/dir.c create mode 100644 fs/bfs/file.c create mode 100644 fs/bfs/inode.c create mode 100644 fs/binfmt_aout.c create mode 100644 fs/binfmt_elf.c create mode 100644 fs/binfmt_elf_fdpic.c create mode 100644 fs/binfmt_em86.c create mode 100644 fs/binfmt_flat.c create mode 100644 fs/binfmt_misc.c create mode 100644 fs/binfmt_script.c create mode 100644 fs/binfmt_som.c create mode 100644 fs/bio.c create mode 100644 fs/block_dev.c create mode 100644 fs/buffer.c create mode 100644 fs/char_dev.c create mode 100644 fs/cifs/AUTHORS create mode 100644 fs/cifs/CHANGES create mode 100644 fs/cifs/Makefile create mode 100644 fs/cifs/README create mode 100644 fs/cifs/TODO create mode 100644 fs/cifs/asn1.c create mode 100644 fs/cifs/cifs_debug.c create mode 100644 fs/cifs/cifs_debug.h create mode 100644 fs/cifs/cifs_fs_sb.h create mode 100644 fs/cifs/cifs_unicode.c create mode 100644 fs/cifs/cifs_unicode.h create mode 100644 fs/cifs/cifs_uniupr.h create mode 100644 fs/cifs/cifsencrypt.c create mode 100644 fs/cifs/cifsencrypt.h create mode 100644 fs/cifs/cifsfs.c create mode 100644 fs/cifs/cifsfs.h create mode 100644 fs/cifs/cifsglob.h create mode 100644 fs/cifs/cifspdu.h create mode 100644 fs/cifs/cifsproto.h create mode 100644 fs/cifs/cifssmb.c create mode 100644 fs/cifs/connect.c create mode 100644 fs/cifs/dir.c create mode 100644 fs/cifs/fcntl.c create mode 100644 fs/cifs/file.c create mode 100644 fs/cifs/inode.c create mode 100644 fs/cifs/ioctl.c create mode 100644 fs/cifs/link.c create mode 100644 fs/cifs/md4.c create mode 100644 fs/cifs/md5.c create mode 100644 fs/cifs/md5.h create mode 100644 fs/cifs/misc.c create mode 100644 fs/cifs/netmisc.c create mode 100644 fs/cifs/nterr.c create mode 100644 fs/cifs/nterr.h create mode 100644 fs/cifs/ntlmssp.h create mode 100644 fs/cifs/readdir.c create mode 100644 fs/cifs/rfc1002pdu.h create mode 100644 fs/cifs/smbdes.c create mode 100644 fs/cifs/smbencrypt.c create mode 100644 fs/cifs/smberr.h create mode 100644 fs/cifs/transport.c create mode 100644 fs/cifs/xattr.c create mode 100644 fs/coda/Makefile create mode 100644 fs/coda/cache.c create mode 100644 fs/coda/cnode.c create mode 100644 fs/coda/coda_linux.c create mode 100644 fs/coda/dir.c create mode 100644 fs/coda/file.c create mode 100644 fs/coda/inode.c create mode 100644 fs/coda/pioctl.c create mode 100644 fs/coda/psdev.c create mode 100644 fs/coda/symlink.c create mode 100644 fs/coda/sysctl.c create mode 100644 fs/coda/upcall.c create mode 100644 fs/compat.c create mode 100644 fs/compat_ioctl.c create mode 100644 fs/cramfs/Makefile create mode 100644 fs/cramfs/README create mode 100644 fs/cramfs/inode.c create mode 100644 fs/cramfs/uncompress.c create mode 100644 fs/dcache.c create mode 100644 fs/dcookies.c create mode 100644 fs/debugfs/Makefile create mode 100644 fs/debugfs/file.c create mode 100644 fs/debugfs/inode.c create mode 100644 fs/devfs/Makefile create mode 100644 fs/devfs/base.c create mode 100644 fs/devfs/util.c create mode 100644 fs/devpts/Makefile create mode 100644 fs/devpts/inode.c create mode 100644 fs/devpts/xattr_security.c create mode 100644 fs/direct-io.c create mode 100644 fs/dnotify.c create mode 100644 fs/dquot.c create mode 100644 fs/efs/Makefile create mode 100644 fs/efs/dir.c create mode 100644 fs/efs/file.c create mode 100644 fs/efs/inode.c create mode 100644 fs/efs/namei.c create mode 100644 fs/efs/super.c create mode 100644 fs/efs/symlink.c create mode 100644 fs/eventpoll.c create mode 100644 fs/exec.c create mode 100644 fs/exportfs/Makefile create mode 100644 fs/exportfs/expfs.c create mode 100644 fs/ext2/CHANGES create mode 100644 fs/ext2/Makefile create mode 100644 fs/ext2/acl.c create mode 100644 fs/ext2/acl.h create mode 100644 fs/ext2/balloc.c create mode 100644 fs/ext2/bitmap.c create mode 100644 fs/ext2/dir.c create mode 100644 fs/ext2/ext2.h create mode 100644 fs/ext2/file.c create mode 100644 fs/ext2/fsync.c create mode 100644 fs/ext2/ialloc.c create mode 100644 fs/ext2/inode.c create mode 100644 fs/ext2/ioctl.c create mode 100644 fs/ext2/namei.c create mode 100644 fs/ext2/super.c create mode 100644 fs/ext2/symlink.c create mode 100644 fs/ext2/xattr.c create mode 100644 fs/ext2/xattr.h create mode 100644 fs/ext2/xattr_security.c create mode 100644 fs/ext2/xattr_trusted.c create mode 100644 fs/ext2/xattr_user.c create mode 100644 fs/ext3/Makefile create mode 100644 fs/ext3/acl.c create mode 100644 fs/ext3/acl.h create mode 100644 fs/ext3/balloc.c create mode 100644 fs/ext3/bitmap.c create mode 100644 fs/ext3/dir.c create mode 100644 fs/ext3/file.c create mode 100644 fs/ext3/fsync.c create mode 100644 fs/ext3/hash.c create mode 100644 fs/ext3/ialloc.c create mode 100644 fs/ext3/inode.c create mode 100644 fs/ext3/ioctl.c create mode 100644 fs/ext3/namei.c create mode 100644 fs/ext3/resize.c create mode 100644 fs/ext3/super.c create mode 100644 fs/ext3/symlink.c create mode 100644 fs/ext3/xattr.c create mode 100644 fs/ext3/xattr.h create mode 100644 fs/ext3/xattr_security.c create mode 100644 fs/ext3/xattr_trusted.c create mode 100644 fs/ext3/xattr_user.c create mode 100644 fs/fat/Makefile create mode 100644 fs/fat/cache.c create mode 100644 fs/fat/dir.c create mode 100644 fs/fat/fatent.c create mode 100644 fs/fat/file.c create mode 100644 fs/fat/inode.c create mode 100644 fs/fat/misc.c create mode 100644 fs/fcntl.c create mode 100644 fs/fifo.c create mode 100644 fs/file.c create mode 100644 fs/file_table.c create mode 100644 fs/filesystems.c create mode 100644 fs/freevxfs/Makefile create mode 100644 fs/freevxfs/vxfs.h create mode 100644 fs/freevxfs/vxfs_bmap.c create mode 100644 fs/freevxfs/vxfs_dir.h create mode 100644 fs/freevxfs/vxfs_extern.h create mode 100644 fs/freevxfs/vxfs_fshead.c create mode 100644 fs/freevxfs/vxfs_fshead.h create mode 100644 fs/freevxfs/vxfs_immed.c create mode 100644 fs/freevxfs/vxfs_inode.c create mode 100644 fs/freevxfs/vxfs_inode.h create mode 100644 fs/freevxfs/vxfs_kcompat.h create mode 100644 fs/freevxfs/vxfs_lookup.c create mode 100644 fs/freevxfs/vxfs_olt.c create mode 100644 fs/freevxfs/vxfs_olt.h create mode 100644 fs/freevxfs/vxfs_subr.c create mode 100644 fs/freevxfs/vxfs_super.c create mode 100644 fs/fs-writeback.c create mode 100644 fs/hfs/Makefile create mode 100644 fs/hfs/attr.c create mode 100644 fs/hfs/bfind.c create mode 100644 fs/hfs/bitmap.c create mode 100644 fs/hfs/bnode.c create mode 100644 fs/hfs/brec.c create mode 100644 fs/hfs/btree.c create mode 100644 fs/hfs/btree.h create mode 100644 fs/hfs/catalog.c create mode 100644 fs/hfs/dir.c create mode 100644 fs/hfs/extent.c create mode 100644 fs/hfs/hfs.h create mode 100644 fs/hfs/hfs_fs.h create mode 100644 fs/hfs/inode.c create mode 100644 fs/hfs/mdb.c create mode 100644 fs/hfs/part_tbl.c create mode 100644 fs/hfs/string.c create mode 100644 fs/hfs/super.c create mode 100644 fs/hfs/sysdep.c create mode 100644 fs/hfs/trans.c create mode 100644 fs/hfsplus/Makefile create mode 100644 fs/hfsplus/bfind.c create mode 100644 fs/hfsplus/bitmap.c create mode 100644 fs/hfsplus/bnode.c create mode 100644 fs/hfsplus/brec.c create mode 100644 fs/hfsplus/btree.c create mode 100644 fs/hfsplus/catalog.c create mode 100644 fs/hfsplus/dir.c create mode 100644 fs/hfsplus/extents.c create mode 100644 fs/hfsplus/hfsplus_fs.h create mode 100644 fs/hfsplus/hfsplus_raw.h create mode 100644 fs/hfsplus/inode.c create mode 100644 fs/hfsplus/ioctl.c create mode 100644 fs/hfsplus/options.c create mode 100644 fs/hfsplus/part_tbl.c create mode 100644 fs/hfsplus/super.c create mode 100644 fs/hfsplus/tables.c create mode 100644 fs/hfsplus/unicode.c create mode 100644 fs/hfsplus/wrapper.c create mode 100644 fs/hostfs/Makefile create mode 100644 fs/hostfs/hostfs.h create mode 100644 fs/hostfs/hostfs_kern.c create mode 100644 fs/hostfs/hostfs_user.c create mode 100644 fs/hpfs/Makefile create mode 100644 fs/hpfs/alloc.c create mode 100644 fs/hpfs/anode.c create mode 100644 fs/hpfs/buffer.c create mode 100644 fs/hpfs/dentry.c create mode 100644 fs/hpfs/dir.c create mode 100644 fs/hpfs/dnode.c create mode 100644 fs/hpfs/ea.c create mode 100644 fs/hpfs/file.c create mode 100644 fs/hpfs/hpfs.h create mode 100644 fs/hpfs/hpfs_fn.h create mode 100644 fs/hpfs/inode.c create mode 100644 fs/hpfs/map.c create mode 100644 fs/hpfs/name.c create mode 100644 fs/hpfs/namei.c create mode 100644 fs/hpfs/super.c create mode 100644 fs/hppfs/Makefile create mode 100644 fs/hppfs/hppfs_kern.c create mode 100644 fs/hugetlbfs/Makefile create mode 100644 fs/hugetlbfs/inode.c create mode 100644 fs/inode.c create mode 100644 fs/ioctl.c create mode 100644 fs/isofs/Makefile create mode 100644 fs/isofs/compress.c create mode 100644 fs/isofs/dir.c create mode 100644 fs/isofs/export.c create mode 100644 fs/isofs/inode.c create mode 100644 fs/isofs/joliet.c create mode 100644 fs/isofs/namei.c create mode 100644 fs/isofs/rock.c create mode 100644 fs/isofs/rock.h create mode 100644 fs/isofs/util.c create mode 100644 fs/isofs/zisofs.h create mode 100644 fs/jbd/Makefile create mode 100644 fs/jbd/checkpoint.c create mode 100644 fs/jbd/commit.c create mode 100644 fs/jbd/journal.c create mode 100644 fs/jbd/recovery.c create mode 100644 fs/jbd/revoke.c create mode 100644 fs/jbd/transaction.c create mode 100644 fs/jffs/Makefile create mode 100644 fs/jffs/inode-v23.c create mode 100644 fs/jffs/intrep.c create mode 100644 fs/jffs/intrep.h create mode 100644 fs/jffs/jffs_fm.c create mode 100644 fs/jffs/jffs_fm.h create mode 100644 fs/jffs/jffs_proc.c create mode 100644 fs/jffs/jffs_proc.h create mode 100644 fs/jffs2/LICENCE create mode 100644 fs/jffs2/Makefile create mode 100644 fs/jffs2/README.Locking create mode 100644 fs/jffs2/TODO create mode 100644 fs/jffs2/background.c create mode 100644 fs/jffs2/build.c create mode 100644 fs/jffs2/compr.c create mode 100644 fs/jffs2/compr.h create mode 100644 fs/jffs2/compr_rtime.c create mode 100644 fs/jffs2/compr_rubin.c create mode 100644 fs/jffs2/compr_rubin.h create mode 100644 fs/jffs2/compr_zlib.c create mode 100644 fs/jffs2/comprtest.c create mode 100644 fs/jffs2/dir.c create mode 100644 fs/jffs2/erase.c create mode 100644 fs/jffs2/file.c create mode 100644 fs/jffs2/fs.c create mode 100644 fs/jffs2/gc.c create mode 100644 fs/jffs2/histo.h create mode 100644 fs/jffs2/histo_mips.h create mode 100644 fs/jffs2/ioctl.c create mode 100644 fs/jffs2/malloc.c create mode 100644 fs/jffs2/nodelist.c create mode 100644 fs/jffs2/nodelist.h create mode 100644 fs/jffs2/nodemgmt.c create mode 100644 fs/jffs2/os-linux.h create mode 100644 fs/jffs2/pushpull.h create mode 100644 fs/jffs2/read.c create mode 100644 fs/jffs2/readinode.c create mode 100644 fs/jffs2/scan.c create mode 100644 fs/jffs2/super.c create mode 100644 fs/jffs2/symlink.c create mode 100644 fs/jffs2/wbuf.c create mode 100644 fs/jffs2/write.c create mode 100644 fs/jffs2/writev.c create mode 100644 fs/jfs/Makefile create mode 100644 fs/jfs/acl.c create mode 100644 fs/jfs/endian24.h create mode 100644 fs/jfs/file.c create mode 100644 fs/jfs/inode.c create mode 100644 fs/jfs/jfs_acl.h create mode 100644 fs/jfs/jfs_btree.h create mode 100644 fs/jfs/jfs_debug.c create mode 100644 fs/jfs/jfs_debug.h create mode 100644 fs/jfs/jfs_dinode.h create mode 100644 fs/jfs/jfs_dmap.c create mode 100644 fs/jfs/jfs_dmap.h create mode 100644 fs/jfs/jfs_dtree.c create mode 100644 fs/jfs/jfs_dtree.h create mode 100644 fs/jfs/jfs_extent.c create mode 100644 fs/jfs/jfs_extent.h create mode 100644 fs/jfs/jfs_filsys.h create mode 100644 fs/jfs/jfs_imap.c create mode 100644 fs/jfs/jfs_imap.h create mode 100644 fs/jfs/jfs_incore.h create mode 100644 fs/jfs/jfs_inode.c create mode 100644 fs/jfs/jfs_inode.h create mode 100644 fs/jfs/jfs_lock.h create mode 100644 fs/jfs/jfs_logmgr.c create mode 100644 fs/jfs/jfs_logmgr.h create mode 100644 fs/jfs/jfs_metapage.c create mode 100644 fs/jfs/jfs_metapage.h create mode 100644 fs/jfs/jfs_mount.c create mode 100644 fs/jfs/jfs_superblock.h create mode 100644 fs/jfs/jfs_txnmgr.c create mode 100644 fs/jfs/jfs_txnmgr.h create mode 100644 fs/jfs/jfs_types.h create mode 100644 fs/jfs/jfs_umount.c create mode 100644 fs/jfs/jfs_unicode.c create mode 100644 fs/jfs/jfs_unicode.h create mode 100644 fs/jfs/jfs_uniupr.c create mode 100644 fs/jfs/jfs_xattr.h create mode 100644 fs/jfs/jfs_xtree.c create mode 100644 fs/jfs/jfs_xtree.h create mode 100644 fs/jfs/namei.c create mode 100644 fs/jfs/resize.c create mode 100644 fs/jfs/super.c create mode 100644 fs/jfs/symlink.c create mode 100644 fs/jfs/xattr.c create mode 100644 fs/libfs.c create mode 100644 fs/lockd/Makefile create mode 100644 fs/lockd/clntlock.c create mode 100644 fs/lockd/clntproc.c create mode 100644 fs/lockd/host.c create mode 100644 fs/lockd/mon.c create mode 100644 fs/lockd/svc.c create mode 100644 fs/lockd/svc4proc.c create mode 100644 fs/lockd/svclock.c create mode 100644 fs/lockd/svcproc.c create mode 100644 fs/lockd/svcshare.c create mode 100644 fs/lockd/svcsubs.c create mode 100644 fs/lockd/xdr.c create mode 100644 fs/lockd/xdr4.c create mode 100644 fs/locks.c create mode 100644 fs/mbcache.c create mode 100644 fs/minix/Makefile create mode 100644 fs/minix/bitmap.c create mode 100644 fs/minix/dir.c create mode 100644 fs/minix/file.c create mode 100644 fs/minix/inode.c create mode 100644 fs/minix/itree_common.c create mode 100644 fs/minix/itree_v1.c create mode 100644 fs/minix/itree_v2.c create mode 100644 fs/minix/minix.h create mode 100644 fs/minix/namei.c create mode 100644 fs/mpage.c create mode 100644 fs/msdos/Makefile create mode 100644 fs/msdos/namei.c create mode 100644 fs/namei.c create mode 100644 fs/namespace.c create mode 100644 fs/ncpfs/Kconfig create mode 100644 fs/ncpfs/Makefile create mode 100644 fs/ncpfs/dir.c create mode 100644 fs/ncpfs/file.c create mode 100644 fs/ncpfs/getopt.c create mode 100644 fs/ncpfs/getopt.h create mode 100644 fs/ncpfs/inode.c create mode 100644 fs/ncpfs/ioctl.c create mode 100644 fs/ncpfs/mmap.c create mode 100644 fs/ncpfs/ncplib_kernel.c create mode 100644 fs/ncpfs/ncplib_kernel.h create mode 100644 fs/ncpfs/ncpsign_kernel.c create mode 100644 fs/ncpfs/ncpsign_kernel.h create mode 100644 fs/ncpfs/sock.c create mode 100644 fs/ncpfs/symlink.c create mode 100644 fs/nfs/Makefile create mode 100644 fs/nfs/callback.c create mode 100644 fs/nfs/callback.h create mode 100644 fs/nfs/callback_proc.c create mode 100644 fs/nfs/callback_xdr.c create mode 100644 fs/nfs/delegation.c create mode 100644 fs/nfs/delegation.h create mode 100644 fs/nfs/dir.c create mode 100644 fs/nfs/direct.c create mode 100644 fs/nfs/file.c create mode 100644 fs/nfs/idmap.c create mode 100644 fs/nfs/inode.c create mode 100644 fs/nfs/mount_clnt.c create mode 100644 fs/nfs/nfs2xdr.c create mode 100644 fs/nfs/nfs3proc.c create mode 100644 fs/nfs/nfs3xdr.c create mode 100644 fs/nfs/nfs4proc.c create mode 100644 fs/nfs/nfs4renewd.c create mode 100644 fs/nfs/nfs4state.c create mode 100644 fs/nfs/nfs4xdr.c create mode 100644 fs/nfs/nfsroot.c create mode 100644 fs/nfs/pagelist.c create mode 100644 fs/nfs/proc.c create mode 100644 fs/nfs/read.c create mode 100644 fs/nfs/symlink.c create mode 100644 fs/nfs/unlink.c create mode 100644 fs/nfs/write.c create mode 100644 fs/nfsctl.c create mode 100644 fs/nfsd/Makefile create mode 100644 fs/nfsd/auth.c create mode 100644 fs/nfsd/export.c create mode 100644 fs/nfsd/lockd.c create mode 100644 fs/nfsd/nfs3proc.c create mode 100644 fs/nfsd/nfs3xdr.c create mode 100644 fs/nfsd/nfs4acl.c create mode 100644 fs/nfsd/nfs4callback.c create mode 100644 fs/nfsd/nfs4idmap.c create mode 100644 fs/nfsd/nfs4proc.c create mode 100644 fs/nfsd/nfs4state.c create mode 100644 fs/nfsd/nfs4xdr.c create mode 100644 fs/nfsd/nfscache.c create mode 100644 fs/nfsd/nfsctl.c create mode 100644 fs/nfsd/nfsfh.c create mode 100644 fs/nfsd/nfsproc.c create mode 100644 fs/nfsd/nfssvc.c create mode 100644 fs/nfsd/nfsxdr.c create mode 100644 fs/nfsd/stats.c create mode 100644 fs/nfsd/vfs.c create mode 100644 fs/nls/Kconfig create mode 100644 fs/nls/Makefile create mode 100644 fs/nls/nls_ascii.c create mode 100644 fs/nls/nls_base.c create mode 100644 fs/nls/nls_cp1250.c create mode 100644 fs/nls/nls_cp1251.c create mode 100644 fs/nls/nls_cp1255.c create mode 100644 fs/nls/nls_cp437.c create mode 100644 fs/nls/nls_cp737.c create mode 100644 fs/nls/nls_cp775.c create mode 100644 fs/nls/nls_cp850.c create mode 100644 fs/nls/nls_cp852.c create mode 100644 fs/nls/nls_cp855.c create mode 100644 fs/nls/nls_cp857.c create mode 100644 fs/nls/nls_cp860.c create mode 100644 fs/nls/nls_cp861.c create mode 100644 fs/nls/nls_cp862.c create mode 100644 fs/nls/nls_cp863.c create mode 100644 fs/nls/nls_cp864.c create mode 100644 fs/nls/nls_cp865.c create mode 100644 fs/nls/nls_cp866.c create mode 100644 fs/nls/nls_cp869.c create mode 100644 fs/nls/nls_cp874.c create mode 100644 fs/nls/nls_cp932.c create mode 100644 fs/nls/nls_cp936.c create mode 100644 fs/nls/nls_cp949.c create mode 100644 fs/nls/nls_cp950.c create mode 100644 fs/nls/nls_euc-jp.c create mode 100644 fs/nls/nls_iso8859-1.c create mode 100644 fs/nls/nls_iso8859-13.c create mode 100644 fs/nls/nls_iso8859-14.c create mode 100644 fs/nls/nls_iso8859-15.c create mode 100644 fs/nls/nls_iso8859-2.c create mode 100644 fs/nls/nls_iso8859-3.c create mode 100644 fs/nls/nls_iso8859-4.c create mode 100644 fs/nls/nls_iso8859-5.c create mode 100644 fs/nls/nls_iso8859-6.c create mode 100644 fs/nls/nls_iso8859-7.c create mode 100644 fs/nls/nls_iso8859-9.c create mode 100644 fs/nls/nls_koi8-r.c create mode 100644 fs/nls/nls_koi8-ru.c create mode 100644 fs/nls/nls_koi8-u.c create mode 100644 fs/nls/nls_utf8.c create mode 100644 fs/ntfs/ChangeLog create mode 100644 fs/ntfs/Makefile create mode 100644 fs/ntfs/aops.c create mode 100644 fs/ntfs/aops.h create mode 100644 fs/ntfs/attrib.c create mode 100644 fs/ntfs/attrib.h create mode 100644 fs/ntfs/bitmap.c create mode 100644 fs/ntfs/bitmap.h create mode 100644 fs/ntfs/collate.c create mode 100644 fs/ntfs/collate.h create mode 100644 fs/ntfs/compress.c create mode 100644 fs/ntfs/debug.c create mode 100644 fs/ntfs/debug.h create mode 100644 fs/ntfs/dir.c create mode 100644 fs/ntfs/dir.h create mode 100644 fs/ntfs/endian.h create mode 100644 fs/ntfs/file.c create mode 100644 fs/ntfs/index.c create mode 100644 fs/ntfs/index.h create mode 100644 fs/ntfs/inode.c create mode 100644 fs/ntfs/inode.h create mode 100644 fs/ntfs/layout.h create mode 100644 fs/ntfs/lcnalloc.c create mode 100644 fs/ntfs/lcnalloc.h create mode 100644 fs/ntfs/logfile.c create mode 100644 fs/ntfs/logfile.h create mode 100644 fs/ntfs/malloc.h create mode 100644 fs/ntfs/mft.c create mode 100644 fs/ntfs/mft.h create mode 100644 fs/ntfs/mst.c create mode 100644 fs/ntfs/namei.c create mode 100644 fs/ntfs/ntfs.h create mode 100644 fs/ntfs/quota.c create mode 100644 fs/ntfs/quota.h create mode 100644 fs/ntfs/runlist.c create mode 100644 fs/ntfs/runlist.h create mode 100644 fs/ntfs/super.c create mode 100644 fs/ntfs/sysctl.c create mode 100644 fs/ntfs/sysctl.h create mode 100644 fs/ntfs/time.h create mode 100644 fs/ntfs/types.h create mode 100644 fs/ntfs/unistr.c create mode 100644 fs/ntfs/upcase.c create mode 100644 fs/ntfs/volume.h create mode 100644 fs/open.c create mode 100644 fs/openpromfs/Makefile create mode 100644 fs/openpromfs/inode.c create mode 100644 fs/partitions/Kconfig create mode 100644 fs/partitions/Makefile create mode 100644 fs/partitions/acorn.c create mode 100644 fs/partitions/acorn.h create mode 100644 fs/partitions/amiga.c create mode 100644 fs/partitions/amiga.h create mode 100644 fs/partitions/atari.c create mode 100644 fs/partitions/atari.h create mode 100644 fs/partitions/check.c create mode 100644 fs/partitions/check.h create mode 100644 fs/partitions/devfs.c create mode 100644 fs/partitions/devfs.h create mode 100644 fs/partitions/efi.c create mode 100644 fs/partitions/efi.h create mode 100644 fs/partitions/ibm.c create mode 100644 fs/partitions/ibm.h create mode 100644 fs/partitions/ldm.c create mode 100644 fs/partitions/ldm.h create mode 100644 fs/partitions/mac.c create mode 100644 fs/partitions/mac.h create mode 100644 fs/partitions/msdos.c create mode 100644 fs/partitions/msdos.h create mode 100644 fs/partitions/osf.c create mode 100644 fs/partitions/osf.h create mode 100644 fs/partitions/sgi.c create mode 100644 fs/partitions/sgi.h create mode 100644 fs/partitions/sun.c create mode 100644 fs/partitions/sun.h create mode 100644 fs/partitions/ultrix.c create mode 100644 fs/partitions/ultrix.h create mode 100644 fs/pipe.c create mode 100644 fs/posix_acl.c create mode 100644 fs/proc/Makefile create mode 100644 fs/proc/array.c create mode 100644 fs/proc/base.c create mode 100644 fs/proc/generic.c create mode 100644 fs/proc/inode-alloc.txt create mode 100644 fs/proc/inode.c create mode 100644 fs/proc/internal.h create mode 100644 fs/proc/kcore.c create mode 100644 fs/proc/kmsg.c create mode 100644 fs/proc/mmu.c create mode 100644 fs/proc/nommu.c create mode 100644 fs/proc/proc_devtree.c create mode 100644 fs/proc/proc_misc.c create mode 100644 fs/proc/proc_tty.c create mode 100644 fs/proc/root.c create mode 100644 fs/proc/task_mmu.c create mode 100644 fs/proc/task_nommu.c create mode 100644 fs/qnx4/Makefile create mode 100644 fs/qnx4/README create mode 100644 fs/qnx4/bitmap.c create mode 100644 fs/qnx4/dir.c create mode 100644 fs/qnx4/file.c create mode 100644 fs/qnx4/fsync.c create mode 100644 fs/qnx4/inode.c create mode 100644 fs/qnx4/namei.c create mode 100644 fs/qnx4/truncate.c create mode 100644 fs/quota.c create mode 100644 fs/quota_v1.c create mode 100644 fs/quota_v2.c create mode 100644 fs/ramfs/Makefile create mode 100644 fs/ramfs/inode.c create mode 100644 fs/read_write.c create mode 100644 fs/readdir.c create mode 100644 fs/reiserfs/Makefile create mode 100644 fs/reiserfs/README create mode 100644 fs/reiserfs/bitmap.c create mode 100644 fs/reiserfs/dir.c create mode 100644 fs/reiserfs/do_balan.c create mode 100644 fs/reiserfs/file.c create mode 100644 fs/reiserfs/fix_node.c create mode 100644 fs/reiserfs/hashes.c create mode 100644 fs/reiserfs/ibalance.c create mode 100644 fs/reiserfs/inode.c create mode 100644 fs/reiserfs/ioctl.c create mode 100644 fs/reiserfs/item_ops.c create mode 100644 fs/reiserfs/journal.c create mode 100644 fs/reiserfs/lbalance.c create mode 100644 fs/reiserfs/namei.c create mode 100644 fs/reiserfs/objectid.c create mode 100644 fs/reiserfs/prints.c create mode 100644 fs/reiserfs/procfs.c create mode 100644 fs/reiserfs/resize.c create mode 100644 fs/reiserfs/stree.c create mode 100644 fs/reiserfs/super.c create mode 100644 fs/reiserfs/tail_conversion.c create mode 100644 fs/reiserfs/xattr.c create mode 100644 fs/reiserfs/xattr_acl.c create mode 100644 fs/reiserfs/xattr_security.c create mode 100644 fs/reiserfs/xattr_trusted.c create mode 100644 fs/reiserfs/xattr_user.c create mode 100644 fs/romfs/Makefile create mode 100644 fs/romfs/inode.c create mode 100644 fs/select.c create mode 100644 fs/seq_file.c create mode 100644 fs/smbfs/Makefile create mode 100644 fs/smbfs/cache.c create mode 100644 fs/smbfs/dir.c create mode 100644 fs/smbfs/file.c create mode 100644 fs/smbfs/getopt.c create mode 100644 fs/smbfs/getopt.h create mode 100644 fs/smbfs/inode.c create mode 100644 fs/smbfs/ioctl.c create mode 100644 fs/smbfs/proc.c create mode 100644 fs/smbfs/proto.h create mode 100644 fs/smbfs/request.c create mode 100644 fs/smbfs/request.h create mode 100644 fs/smbfs/smb_debug.h create mode 100644 fs/smbfs/smbiod.c create mode 100644 fs/smbfs/sock.c create mode 100644 fs/smbfs/symlink.c create mode 100644 fs/stat.c create mode 100644 fs/super.c create mode 100644 fs/sysfs/Makefile create mode 100644 fs/sysfs/bin.c create mode 100644 fs/sysfs/dir.c create mode 100644 fs/sysfs/file.c create mode 100644 fs/sysfs/group.c create mode 100644 fs/sysfs/inode.c create mode 100644 fs/sysfs/mount.c create mode 100644 fs/sysfs/symlink.c create mode 100644 fs/sysfs/sysfs.h create mode 100644 fs/sysv/CHANGES create mode 100644 fs/sysv/ChangeLog create mode 100644 fs/sysv/INTRO create mode 100644 fs/sysv/Makefile create mode 100644 fs/sysv/balloc.c create mode 100644 fs/sysv/dir.c create mode 100644 fs/sysv/file.c create mode 100644 fs/sysv/ialloc.c create mode 100644 fs/sysv/inode.c create mode 100644 fs/sysv/itree.c create mode 100644 fs/sysv/namei.c create mode 100644 fs/sysv/super.c create mode 100644 fs/sysv/symlink.c create mode 100644 fs/sysv/sysv.h create mode 100644 fs/udf/Makefile create mode 100644 fs/udf/balloc.c create mode 100644 fs/udf/crc.c create mode 100644 fs/udf/dir.c create mode 100644 fs/udf/directory.c create mode 100644 fs/udf/ecma_167.h create mode 100644 fs/udf/file.c create mode 100644 fs/udf/fsync.c create mode 100644 fs/udf/ialloc.c create mode 100644 fs/udf/inode.c create mode 100644 fs/udf/lowlevel.c create mode 100644 fs/udf/misc.c create mode 100644 fs/udf/namei.c create mode 100644 fs/udf/osta_udf.h create mode 100644 fs/udf/partition.c create mode 100644 fs/udf/super.c create mode 100644 fs/udf/symlink.c create mode 100644 fs/udf/truncate.c create mode 100644 fs/udf/udf_i.h create mode 100644 fs/udf/udf_sb.h create mode 100644 fs/udf/udfdecl.h create mode 100644 fs/udf/udfend.h create mode 100644 fs/udf/udftime.c create mode 100644 fs/udf/unicode.c create mode 100644 fs/ufs/Makefile create mode 100644 fs/ufs/balloc.c create mode 100644 fs/ufs/cylinder.c create mode 100644 fs/ufs/dir.c create mode 100644 fs/ufs/file.c create mode 100644 fs/ufs/ialloc.c create mode 100644 fs/ufs/inode.c create mode 100644 fs/ufs/namei.c create mode 100644 fs/ufs/super.c create mode 100644 fs/ufs/swab.h create mode 100644 fs/ufs/symlink.c create mode 100644 fs/ufs/truncate.c create mode 100644 fs/ufs/util.c create mode 100644 fs/ufs/util.h create mode 100644 fs/umsdos/notes create mode 100644 fs/vfat/Makefile create mode 100644 fs/vfat/namei.c create mode 100644 fs/xattr.c create mode 100644 fs/xattr_acl.c create mode 100644 fs/xfs/Kconfig create mode 100644 fs/xfs/Makefile create mode 100644 fs/xfs/linux-2.6/kmem.c create mode 100644 fs/xfs/linux-2.6/kmem.h create mode 100644 fs/xfs/linux-2.6/mrlock.h create mode 100644 fs/xfs/linux-2.6/mutex.h create mode 100644 fs/xfs/linux-2.6/sema.h create mode 100644 fs/xfs/linux-2.6/spin.h create mode 100644 fs/xfs/linux-2.6/sv.h create mode 100644 fs/xfs/linux-2.6/time.h create mode 100644 fs/xfs/linux-2.6/xfs_aops.c create mode 100644 fs/xfs/linux-2.6/xfs_buf.c create mode 100644 fs/xfs/linux-2.6/xfs_buf.h create mode 100644 fs/xfs/linux-2.6/xfs_cred.h create mode 100644 fs/xfs/linux-2.6/xfs_export.c create mode 100644 fs/xfs/linux-2.6/xfs_export.h create mode 100644 fs/xfs/linux-2.6/xfs_file.c create mode 100644 fs/xfs/linux-2.6/xfs_fs_subr.c create mode 100644 fs/xfs/linux-2.6/xfs_fs_subr.h create mode 100644 fs/xfs/linux-2.6/xfs_globals.c create mode 100644 fs/xfs/linux-2.6/xfs_globals.h create mode 100644 fs/xfs/linux-2.6/xfs_ioctl.c create mode 100644 fs/xfs/linux-2.6/xfs_ioctl32.c create mode 100644 fs/xfs/linux-2.6/xfs_ioctl32.h create mode 100644 fs/xfs/linux-2.6/xfs_iops.c create mode 100644 fs/xfs/linux-2.6/xfs_iops.h create mode 100644 fs/xfs/linux-2.6/xfs_linux.h create mode 100644 fs/xfs/linux-2.6/xfs_lrw.c create mode 100644 fs/xfs/linux-2.6/xfs_lrw.h create mode 100644 fs/xfs/linux-2.6/xfs_stats.c create mode 100644 fs/xfs/linux-2.6/xfs_stats.h create mode 100644 fs/xfs/linux-2.6/xfs_super.c create mode 100644 fs/xfs/linux-2.6/xfs_super.h create mode 100644 fs/xfs/linux-2.6/xfs_sysctl.c create mode 100644 fs/xfs/linux-2.6/xfs_sysctl.h create mode 100644 fs/xfs/linux-2.6/xfs_version.h create mode 100644 fs/xfs/linux-2.6/xfs_vfs.c create mode 100644 fs/xfs/linux-2.6/xfs_vfs.h create mode 100644 fs/xfs/linux-2.6/xfs_vnode.c create mode 100644 fs/xfs/linux-2.6/xfs_vnode.h create mode 100644 fs/xfs/quota/xfs_dquot.c create mode 100644 fs/xfs/quota/xfs_dquot.h create mode 100644 fs/xfs/quota/xfs_dquot_item.c create mode 100644 fs/xfs/quota/xfs_dquot_item.h create mode 100644 fs/xfs/quota/xfs_qm.c create mode 100644 fs/xfs/quota/xfs_qm.h create mode 100644 fs/xfs/quota/xfs_qm_bhv.c create mode 100644 fs/xfs/quota/xfs_qm_stats.c create mode 100644 fs/xfs/quota/xfs_qm_stats.h create mode 100644 fs/xfs/quota/xfs_qm_syscalls.c create mode 100644 fs/xfs/quota/xfs_quota_priv.h create mode 100644 fs/xfs/quota/xfs_trans_dquot.c create mode 100644 fs/xfs/support/debug.c create mode 100644 fs/xfs/support/debug.h create mode 100644 fs/xfs/support/ktrace.c create mode 100644 fs/xfs/support/ktrace.h create mode 100644 fs/xfs/support/move.c create mode 100644 fs/xfs/support/move.h create mode 100644 fs/xfs/support/qsort.c create mode 100644 fs/xfs/support/qsort.h create mode 100644 fs/xfs/support/uuid.c create mode 100644 fs/xfs/support/uuid.h create mode 100644 fs/xfs/xfs.h create mode 100644 fs/xfs/xfs_acl.c create mode 100644 fs/xfs/xfs_acl.h create mode 100644 fs/xfs/xfs_ag.h create mode 100644 fs/xfs/xfs_alloc.c create mode 100644 fs/xfs/xfs_alloc.h create mode 100644 fs/xfs/xfs_alloc_btree.c create mode 100644 fs/xfs/xfs_alloc_btree.h create mode 100644 fs/xfs/xfs_arch.h create mode 100644 fs/xfs/xfs_attr.c create mode 100644 fs/xfs/xfs_attr.h create mode 100644 fs/xfs/xfs_attr_leaf.c create mode 100644 fs/xfs/xfs_attr_leaf.h create mode 100644 fs/xfs/xfs_attr_sf.h create mode 100644 fs/xfs/xfs_behavior.c create mode 100644 fs/xfs/xfs_behavior.h create mode 100644 fs/xfs/xfs_bit.c create mode 100644 fs/xfs/xfs_bit.h create mode 100644 fs/xfs/xfs_bmap.c create mode 100644 fs/xfs/xfs_bmap.h create mode 100644 fs/xfs/xfs_bmap_btree.c create mode 100644 fs/xfs/xfs_bmap_btree.h create mode 100644 fs/xfs/xfs_btree.c create mode 100644 fs/xfs/xfs_btree.h create mode 100644 fs/xfs/xfs_buf_item.c create mode 100644 fs/xfs/xfs_buf_item.h create mode 100644 fs/xfs/xfs_cap.h create mode 100644 fs/xfs/xfs_clnt.h create mode 100644 fs/xfs/xfs_da_btree.c create mode 100644 fs/xfs/xfs_da_btree.h create mode 100644 fs/xfs/xfs_dfrag.c create mode 100644 fs/xfs/xfs_dfrag.h create mode 100644 fs/xfs/xfs_dinode.h create mode 100644 fs/xfs/xfs_dir.c create mode 100644 fs/xfs/xfs_dir.h create mode 100644 fs/xfs/xfs_dir2.c create mode 100644 fs/xfs/xfs_dir2.h create mode 100644 fs/xfs/xfs_dir2_block.c create mode 100644 fs/xfs/xfs_dir2_block.h create mode 100644 fs/xfs/xfs_dir2_data.c create mode 100644 fs/xfs/xfs_dir2_data.h create mode 100644 fs/xfs/xfs_dir2_leaf.c create mode 100644 fs/xfs/xfs_dir2_leaf.h create mode 100644 fs/xfs/xfs_dir2_node.c create mode 100644 fs/xfs/xfs_dir2_node.h create mode 100644 fs/xfs/xfs_dir2_sf.c create mode 100644 fs/xfs/xfs_dir2_sf.h create mode 100644 fs/xfs/xfs_dir2_trace.c create mode 100644 fs/xfs/xfs_dir2_trace.h create mode 100644 fs/xfs/xfs_dir_leaf.c create mode 100644 fs/xfs/xfs_dir_leaf.h create mode 100644 fs/xfs/xfs_dir_sf.h create mode 100644 fs/xfs/xfs_dmapi.h create mode 100644 fs/xfs/xfs_dmops.c create mode 100644 fs/xfs/xfs_error.c create mode 100644 fs/xfs/xfs_error.h create mode 100644 fs/xfs/xfs_extfree_item.c create mode 100644 fs/xfs/xfs_extfree_item.h create mode 100644 fs/xfs/xfs_fs.h create mode 100644 fs/xfs/xfs_fsops.c create mode 100644 fs/xfs/xfs_fsops.h create mode 100644 fs/xfs/xfs_ialloc.c create mode 100644 fs/xfs/xfs_ialloc.h create mode 100644 fs/xfs/xfs_ialloc_btree.c create mode 100644 fs/xfs/xfs_ialloc_btree.h create mode 100644 fs/xfs/xfs_iget.c create mode 100644 fs/xfs/xfs_imap.h create mode 100644 fs/xfs/xfs_inode.c create mode 100644 fs/xfs/xfs_inode.h create mode 100644 fs/xfs/xfs_inode_item.c create mode 100644 fs/xfs/xfs_inode_item.h create mode 100644 fs/xfs/xfs_inum.h create mode 100644 fs/xfs/xfs_iocore.c create mode 100644 fs/xfs/xfs_iomap.c create mode 100644 fs/xfs/xfs_iomap.h create mode 100644 fs/xfs/xfs_itable.c create mode 100644 fs/xfs/xfs_itable.h create mode 100644 fs/xfs/xfs_log.c create mode 100644 fs/xfs/xfs_log.h create mode 100644 fs/xfs/xfs_log_priv.h create mode 100644 fs/xfs/xfs_log_recover.c create mode 100644 fs/xfs/xfs_log_recover.h create mode 100644 fs/xfs/xfs_mac.h create mode 100644 fs/xfs/xfs_macros.c create mode 100644 fs/xfs/xfs_macros.h create mode 100644 fs/xfs/xfs_mount.c create mode 100644 fs/xfs/xfs_mount.h create mode 100644 fs/xfs/xfs_qmops.c create mode 100644 fs/xfs/xfs_quota.h create mode 100644 fs/xfs/xfs_refcache.h create mode 100644 fs/xfs/xfs_rename.c create mode 100644 fs/xfs/xfs_rtalloc.c create mode 100644 fs/xfs/xfs_rtalloc.h create mode 100644 fs/xfs/xfs_rw.c create mode 100644 fs/xfs/xfs_rw.h create mode 100644 fs/xfs/xfs_sb.h create mode 100644 fs/xfs/xfs_trans.c create mode 100644 fs/xfs/xfs_trans.h create mode 100644 fs/xfs/xfs_trans_ail.c create mode 100644 fs/xfs/xfs_trans_buf.c create mode 100644 fs/xfs/xfs_trans_extfree.c create mode 100644 fs/xfs/xfs_trans_inode.c create mode 100644 fs/xfs/xfs_trans_item.c create mode 100644 fs/xfs/xfs_trans_priv.h create mode 100644 fs/xfs/xfs_trans_space.h create mode 100644 fs/xfs/xfs_types.h create mode 100644 fs/xfs/xfs_utils.c create mode 100644 fs/xfs/xfs_utils.h create mode 100644 fs/xfs/xfs_vfsops.c create mode 100644 fs/xfs/xfs_vnodeops.c create mode 100644 include/acpi/acconfig.h create mode 100644 include/acpi/acdebug.h create mode 100644 include/acpi/acdisasm.h create mode 100644 include/acpi/acdispat.h create mode 100644 include/acpi/acevents.h create mode 100644 include/acpi/acexcep.h create mode 100644 include/acpi/acglobal.h create mode 100644 include/acpi/achware.h create mode 100644 include/acpi/acinterp.h create mode 100644 include/acpi/aclocal.h create mode 100644 include/acpi/acmacros.h create mode 100644 include/acpi/acnamesp.h create mode 100644 include/acpi/acobject.h create mode 100644 include/acpi/acoutput.h create mode 100644 include/acpi/acparser.h create mode 100644 include/acpi/acpi.h create mode 100644 include/acpi/acpi_bus.h create mode 100644 include/acpi/acpi_drivers.h create mode 100644 include/acpi/acpiosxf.h create mode 100644 include/acpi/acpixf.h create mode 100644 include/acpi/acresrc.h create mode 100644 include/acpi/acstruct.h create mode 100644 include/acpi/actables.h create mode 100644 include/acpi/actbl.h create mode 100644 include/acpi/actbl1.h create mode 100644 include/acpi/actbl2.h create mode 100644 include/acpi/actbl71.h create mode 100644 include/acpi/actypes.h create mode 100644 include/acpi/acutils.h create mode 100644 include/acpi/amlcode.h create mode 100644 include/acpi/amlresrc.h create mode 100644 include/acpi/container.h create mode 100644 include/acpi/platform/acenv.h create mode 100644 include/acpi/platform/acgcc.h create mode 100644 include/acpi/platform/aclinux.h create mode 100644 include/acpi/processor.h create mode 100644 include/asm-alpha/8253pit.h create mode 100644 include/asm-alpha/a.out.h create mode 100644 include/asm-alpha/agp.h create mode 100644 include/asm-alpha/agp_backend.h create mode 100644 include/asm-alpha/atomic.h create mode 100644 include/asm-alpha/bitops.h create mode 100644 include/asm-alpha/bug.h create mode 100644 include/asm-alpha/bugs.h create mode 100644 include/asm-alpha/byteorder.h create mode 100644 include/asm-alpha/cache.h create mode 100644 include/asm-alpha/cacheflush.h create mode 100644 include/asm-alpha/checksum.h create mode 100644 include/asm-alpha/compiler.h create mode 100644 include/asm-alpha/console.h create mode 100644 include/asm-alpha/core_apecs.h create mode 100644 include/asm-alpha/core_cia.h create mode 100644 include/asm-alpha/core_irongate.h create mode 100644 include/asm-alpha/core_lca.h create mode 100644 include/asm-alpha/core_marvel.h create mode 100644 include/asm-alpha/core_mcpcia.h create mode 100644 include/asm-alpha/core_polaris.h create mode 100644 include/asm-alpha/core_t2.h create mode 100644 include/asm-alpha/core_titan.h create mode 100644 include/asm-alpha/core_tsunami.h create mode 100644 include/asm-alpha/core_wildfire.h create mode 100644 include/asm-alpha/cputime.h create mode 100644 include/asm-alpha/current.h create mode 100644 include/asm-alpha/delay.h create mode 100644 include/asm-alpha/div64.h create mode 100644 include/asm-alpha/dma-mapping.h create mode 100644 include/asm-alpha/dma.h create mode 100644 include/asm-alpha/elf.h create mode 100644 include/asm-alpha/err_common.h create mode 100644 include/asm-alpha/err_ev6.h create mode 100644 include/asm-alpha/err_ev7.h create mode 100644 include/asm-alpha/errno.h create mode 100644 include/asm-alpha/fcntl.h create mode 100644 include/asm-alpha/floppy.h create mode 100644 include/asm-alpha/fpu.h create mode 100644 include/asm-alpha/gct.h create mode 100644 include/asm-alpha/gentrap.h create mode 100644 include/asm-alpha/hardirq.h create mode 100644 include/asm-alpha/hdreg.h create mode 100644 include/asm-alpha/hw_irq.h create mode 100644 include/asm-alpha/hwrpb.h create mode 100644 include/asm-alpha/ide.h create mode 100644 include/asm-alpha/io.h create mode 100644 include/asm-alpha/io_trivial.h create mode 100644 include/asm-alpha/ioctl.h create mode 100644 include/asm-alpha/ioctls.h create mode 100644 include/asm-alpha/ipcbuf.h create mode 100644 include/asm-alpha/irq.h create mode 100644 include/asm-alpha/jensen.h create mode 100644 include/asm-alpha/kmap_types.h create mode 100644 include/asm-alpha/linkage.h create mode 100644 include/asm-alpha/local.h create mode 100644 include/asm-alpha/machvec.h create mode 100644 include/asm-alpha/mc146818rtc.h create mode 100644 include/asm-alpha/md.h create mode 100644 include/asm-alpha/mman.h create mode 100644 include/asm-alpha/mmu.h create mode 100644 include/asm-alpha/mmu_context.h create mode 100644 include/asm-alpha/mmzone.h create mode 100644 include/asm-alpha/module.h create mode 100644 include/asm-alpha/msgbuf.h create mode 100644 include/asm-alpha/namei.h create mode 100644 include/asm-alpha/numnodes.h create mode 100644 include/asm-alpha/page.h create mode 100644 include/asm-alpha/pal.h create mode 100644 include/asm-alpha/param.h create mode 100644 include/asm-alpha/parport.h create mode 100644 include/asm-alpha/pci.h create mode 100644 include/asm-alpha/percpu.h create mode 100644 include/asm-alpha/pgalloc.h create mode 100644 include/asm-alpha/pgtable.h create mode 100644 include/asm-alpha/poll.h create mode 100644 include/asm-alpha/posix_types.h create mode 100644 include/asm-alpha/processor.h create mode 100644 include/asm-alpha/ptrace.h create mode 100644 include/asm-alpha/reg.h create mode 100644 include/asm-alpha/regdef.h create mode 100644 include/asm-alpha/resource.h create mode 100644 include/asm-alpha/rtc.h create mode 100644 include/asm-alpha/rwsem.h create mode 100644 include/asm-alpha/scatterlist.h create mode 100644 include/asm-alpha/sections.h create mode 100644 include/asm-alpha/segment.h create mode 100644 include/asm-alpha/semaphore.h create mode 100644 include/asm-alpha/sembuf.h create mode 100644 include/asm-alpha/serial.h create mode 100644 include/asm-alpha/setup.h create mode 100644 include/asm-alpha/sfp-machine.h create mode 100644 include/asm-alpha/shmbuf.h create mode 100644 include/asm-alpha/shmparam.h create mode 100644 include/asm-alpha/sigcontext.h create mode 100644 include/asm-alpha/siginfo.h create mode 100644 include/asm-alpha/signal.h create mode 100644 include/asm-alpha/smp.h create mode 100644 include/asm-alpha/socket.h create mode 100644 include/asm-alpha/sockios.h create mode 100644 include/asm-alpha/spinlock.h create mode 100644 include/asm-alpha/stat.h create mode 100644 include/asm-alpha/statfs.h create mode 100644 include/asm-alpha/string.h create mode 100644 include/asm-alpha/suspend.h create mode 100644 include/asm-alpha/sysinfo.h create mode 100644 include/asm-alpha/system.h create mode 100644 include/asm-alpha/termbits.h create mode 100644 include/asm-alpha/termios.h create mode 100644 include/asm-alpha/thread_info.h create mode 100644 include/asm-alpha/timex.h create mode 100644 include/asm-alpha/tlb.h create mode 100644 include/asm-alpha/tlbflush.h create mode 100644 include/asm-alpha/topology.h create mode 100644 include/asm-alpha/types.h create mode 100644 include/asm-alpha/uaccess.h create mode 100644 include/asm-alpha/ucontext.h create mode 100644 include/asm-alpha/unaligned.h create mode 100644 include/asm-alpha/unistd.h create mode 100644 include/asm-alpha/user.h create mode 100644 include/asm-alpha/vga.h create mode 100644 include/asm-alpha/xor.h create mode 100644 include/asm-arm/a.out.h create mode 100644 include/asm-arm/apm.h create mode 100644 include/asm-arm/arch-cl7500/acornfb.h create mode 100644 include/asm-arm/arch-cl7500/debug-macro.S create mode 100644 include/asm-arm/arch-cl7500/dma.h create mode 100644 include/asm-arm/arch-cl7500/entry-macro.S create mode 100644 include/asm-arm/arch-cl7500/hardware.h create mode 100644 include/asm-arm/arch-cl7500/io.h create mode 100644 include/asm-arm/arch-cl7500/irq.h create mode 100644 include/asm-arm/arch-cl7500/irqs.h create mode 100644 include/asm-arm/arch-cl7500/memory.h create mode 100644 include/asm-arm/arch-cl7500/param.h create mode 100644 include/asm-arm/arch-cl7500/system.h create mode 100644 include/asm-arm/arch-cl7500/timex.h create mode 100644 include/asm-arm/arch-cl7500/uncompress.h create mode 100644 include/asm-arm/arch-cl7500/vmalloc.h create mode 100644 include/asm-arm/arch-clps711x/autcpu12.h create mode 100644 include/asm-arm/arch-clps711x/debug-macro.S create mode 100644 include/asm-arm/arch-clps711x/dma.h create mode 100644 include/asm-arm/arch-clps711x/entry-macro.S create mode 100644 include/asm-arm/arch-clps711x/hardware.h create mode 100644 include/asm-arm/arch-clps711x/io.h create mode 100644 include/asm-arm/arch-clps711x/irqs.h create mode 100644 include/asm-arm/arch-clps711x/memory.h create mode 100644 include/asm-arm/arch-clps711x/param.h create mode 100644 include/asm-arm/arch-clps711x/syspld.h create mode 100644 include/asm-arm/arch-clps711x/system.h create mode 100644 include/asm-arm/arch-clps711x/time.h create mode 100644 include/asm-arm/arch-clps711x/timex.h create mode 100644 include/asm-arm/arch-clps711x/uncompress.h create mode 100644 include/asm-arm/arch-clps711x/vmalloc.h create mode 100644 include/asm-arm/arch-ebsa110/debug-macro.S create mode 100644 include/asm-arm/arch-ebsa110/dma.h create mode 100644 include/asm-arm/arch-ebsa110/entry-macro.S create mode 100644 include/asm-arm/arch-ebsa110/hardware.h create mode 100644 include/asm-arm/arch-ebsa110/io.h create mode 100644 include/asm-arm/arch-ebsa110/irqs.h create mode 100644 include/asm-arm/arch-ebsa110/memory.h create mode 100644 include/asm-arm/arch-ebsa110/param.h create mode 100644 include/asm-arm/arch-ebsa110/system.h create mode 100644 include/asm-arm/arch-ebsa110/timex.h create mode 100644 include/asm-arm/arch-ebsa110/uncompress.h create mode 100644 include/asm-arm/arch-ebsa110/vmalloc.h create mode 100644 include/asm-arm/arch-ebsa285/debug-macro.S create mode 100644 include/asm-arm/arch-ebsa285/dma.h create mode 100644 include/asm-arm/arch-ebsa285/entry-macro.S create mode 100644 include/asm-arm/arch-ebsa285/hardware.h create mode 100644 include/asm-arm/arch-ebsa285/io.h create mode 100644 include/asm-arm/arch-ebsa285/irqs.h create mode 100644 include/asm-arm/arch-ebsa285/memory.h create mode 100644 include/asm-arm/arch-ebsa285/param.h create mode 100644 include/asm-arm/arch-ebsa285/system.h create mode 100644 include/asm-arm/arch-ebsa285/timex.h create mode 100644 include/asm-arm/arch-ebsa285/uncompress.h create mode 100644 include/asm-arm/arch-ebsa285/vmalloc.h create mode 100644 include/asm-arm/arch-epxa10db/debug-macro.S create mode 100644 include/asm-arm/arch-epxa10db/dma.h create mode 100644 include/asm-arm/arch-epxa10db/entry-macro.S create mode 100644 include/asm-arm/arch-epxa10db/ether00.h create mode 100644 include/asm-arm/arch-epxa10db/excalibur.h create mode 100644 include/asm-arm/arch-epxa10db/hardware.h create mode 100644 include/asm-arm/arch-epxa10db/int_ctrl00.h create mode 100644 include/asm-arm/arch-epxa10db/io.h create mode 100644 include/asm-arm/arch-epxa10db/irqs.h create mode 100644 include/asm-arm/arch-epxa10db/memory.h create mode 100644 include/asm-arm/arch-epxa10db/mode_ctrl00.h create mode 100644 include/asm-arm/arch-epxa10db/param.h create mode 100644 include/asm-arm/arch-epxa10db/platform.h create mode 100644 include/asm-arm/arch-epxa10db/pld_conf00.h create mode 100644 include/asm-arm/arch-epxa10db/system.h create mode 100644 include/asm-arm/arch-epxa10db/tdkphy.h create mode 100644 include/asm-arm/arch-epxa10db/timer00.h create mode 100644 include/asm-arm/arch-epxa10db/timex.h create mode 100644 include/asm-arm/arch-epxa10db/uart00.h create mode 100644 include/asm-arm/arch-epxa10db/uncompress.h create mode 100644 include/asm-arm/arch-epxa10db/vmalloc.h create mode 100644 include/asm-arm/arch-h720x/boards.h create mode 100644 include/asm-arm/arch-h720x/debug-macro.S create mode 100644 include/asm-arm/arch-h720x/dma.h create mode 100644 include/asm-arm/arch-h720x/entry-macro.S create mode 100644 include/asm-arm/arch-h720x/h7201-regs.h create mode 100644 include/asm-arm/arch-h720x/h7202-regs.h create mode 100644 include/asm-arm/arch-h720x/hardware.h create mode 100644 include/asm-arm/arch-h720x/io.h create mode 100644 include/asm-arm/arch-h720x/irq.h create mode 100644 include/asm-arm/arch-h720x/irqs.h create mode 100644 include/asm-arm/arch-h720x/memory.h create mode 100644 include/asm-arm/arch-h720x/param.h create mode 100644 include/asm-arm/arch-h720x/system.h create mode 100644 include/asm-arm/arch-h720x/timex.h create mode 100644 include/asm-arm/arch-h720x/uncompress.h create mode 100644 include/asm-arm/arch-h720x/vmalloc.h create mode 100644 include/asm-arm/arch-imx/debug-macro.S create mode 100644 include/asm-arm/arch-imx/dma.h create mode 100644 include/asm-arm/arch-imx/entry-macro.S create mode 100644 include/asm-arm/arch-imx/hardware.h create mode 100644 include/asm-arm/arch-imx/imx-regs.h create mode 100644 include/asm-arm/arch-imx/io.h create mode 100644 include/asm-arm/arch-imx/irq.h create mode 100644 include/asm-arm/arch-imx/irqs.h create mode 100644 include/asm-arm/arch-imx/memory.h create mode 100644 include/asm-arm/arch-imx/mx1ads.h create mode 100644 include/asm-arm/arch-imx/param.h create mode 100644 include/asm-arm/arch-imx/system.h create mode 100644 include/asm-arm/arch-imx/timex.h create mode 100644 include/asm-arm/arch-imx/uncompress.h create mode 100644 include/asm-arm/arch-imx/vmalloc.h create mode 100644 include/asm-arm/arch-integrator/bits.h create mode 100644 include/asm-arm/arch-integrator/cm.h create mode 100644 include/asm-arm/arch-integrator/debug-macro.S create mode 100644 include/asm-arm/arch-integrator/dma.h create mode 100644 include/asm-arm/arch-integrator/entry-macro.S create mode 100644 include/asm-arm/arch-integrator/hardware.h create mode 100644 include/asm-arm/arch-integrator/impd1.h create mode 100644 include/asm-arm/arch-integrator/io.h create mode 100644 include/asm-arm/arch-integrator/irqs.h create mode 100644 include/asm-arm/arch-integrator/lm.h create mode 100644 include/asm-arm/arch-integrator/memory.h create mode 100644 include/asm-arm/arch-integrator/param.h create mode 100644 include/asm-arm/arch-integrator/platform.h create mode 100644 include/asm-arm/arch-integrator/system.h create mode 100644 include/asm-arm/arch-integrator/timex.h create mode 100644 include/asm-arm/arch-integrator/uncompress.h create mode 100644 include/asm-arm/arch-integrator/vmalloc.h create mode 100644 include/asm-arm/arch-iop3xx/debug-macro.S create mode 100644 include/asm-arm/arch-iop3xx/dma.h create mode 100644 include/asm-arm/arch-iop3xx/entry-macro.S create mode 100644 include/asm-arm/arch-iop3xx/hardware.h create mode 100644 include/asm-arm/arch-iop3xx/io.h create mode 100644 include/asm-arm/arch-iop3xx/iop321-irqs.h create mode 100644 include/asm-arm/arch-iop3xx/iop321.h create mode 100644 include/asm-arm/arch-iop3xx/iop331-irqs.h create mode 100644 include/asm-arm/arch-iop3xx/iop331.h create mode 100644 include/asm-arm/arch-iop3xx/iq31244.h create mode 100644 include/asm-arm/arch-iop3xx/iq80321.h create mode 100644 include/asm-arm/arch-iop3xx/iq80331.h create mode 100644 include/asm-arm/arch-iop3xx/iq80332.h create mode 100644 include/asm-arm/arch-iop3xx/irqs.h create mode 100644 include/asm-arm/arch-iop3xx/memory.h create mode 100644 include/asm-arm/arch-iop3xx/param.h create mode 100644 include/asm-arm/arch-iop3xx/system.h create mode 100644 include/asm-arm/arch-iop3xx/timex.h create mode 100644 include/asm-arm/arch-iop3xx/uncompress.h create mode 100644 include/asm-arm/arch-iop3xx/vmalloc.h create mode 100644 include/asm-arm/arch-ixp2000/debug-macro.S create mode 100644 include/asm-arm/arch-ixp2000/dma.h create mode 100644 include/asm-arm/arch-ixp2000/enp2611.h create mode 100644 include/asm-arm/arch-ixp2000/entry-macro.S create mode 100644 include/asm-arm/arch-ixp2000/gpio.h create mode 100644 include/asm-arm/arch-ixp2000/hardware.h create mode 100644 include/asm-arm/arch-ixp2000/io.h create mode 100644 include/asm-arm/arch-ixp2000/irq.h create mode 100644 include/asm-arm/arch-ixp2000/irqs.h create mode 100644 include/asm-arm/arch-ixp2000/ixdp2x00.h create mode 100644 include/asm-arm/arch-ixp2000/ixdp2x01.h create mode 100644 include/asm-arm/arch-ixp2000/ixp2000-regs.h create mode 100644 include/asm-arm/arch-ixp2000/memory.h create mode 100644 include/asm-arm/arch-ixp2000/param.h create mode 100644 include/asm-arm/arch-ixp2000/platform.h create mode 100644 include/asm-arm/arch-ixp2000/system.h create mode 100644 include/asm-arm/arch-ixp2000/timex.h create mode 100644 include/asm-arm/arch-ixp2000/uncompress.h create mode 100644 include/asm-arm/arch-ixp2000/vmalloc.h create mode 100644 include/asm-arm/arch-ixp4xx/coyote.h create mode 100644 include/asm-arm/arch-ixp4xx/debug-macro.S create mode 100644 include/asm-arm/arch-ixp4xx/dma.h create mode 100644 include/asm-arm/arch-ixp4xx/entry-macro.S create mode 100644 include/asm-arm/arch-ixp4xx/gtwx5715.h create mode 100644 include/asm-arm/arch-ixp4xx/hardware.h create mode 100644 include/asm-arm/arch-ixp4xx/io.h create mode 100644 include/asm-arm/arch-ixp4xx/irq.h create mode 100644 include/asm-arm/arch-ixp4xx/irqs.h create mode 100644 include/asm-arm/arch-ixp4xx/ixdp425.h create mode 100644 include/asm-arm/arch-ixp4xx/ixp4xx-regs.h create mode 100644 include/asm-arm/arch-ixp4xx/memory.h create mode 100644 include/asm-arm/arch-ixp4xx/param.h create mode 100644 include/asm-arm/arch-ixp4xx/platform.h create mode 100644 include/asm-arm/arch-ixp4xx/prpmc1100.h create mode 100644 include/asm-arm/arch-ixp4xx/system.h create mode 100644 include/asm-arm/arch-ixp4xx/timex.h create mode 100644 include/asm-arm/arch-ixp4xx/uncompress.h create mode 100644 include/asm-arm/arch-ixp4xx/vmalloc.h create mode 100644 include/asm-arm/arch-l7200/aux_reg.h create mode 100644 include/asm-arm/arch-l7200/debug-macro.S create mode 100644 include/asm-arm/arch-l7200/dma.h create mode 100644 include/asm-arm/arch-l7200/entry-macro.S create mode 100644 include/asm-arm/arch-l7200/gp_timers.h create mode 100644 include/asm-arm/arch-l7200/gpio.h create mode 100644 include/asm-arm/arch-l7200/hardware.h create mode 100644 include/asm-arm/arch-l7200/io.h create mode 100644 include/asm-arm/arch-l7200/irqs.h create mode 100644 include/asm-arm/arch-l7200/memory.h create mode 100644 include/asm-arm/arch-l7200/param.h create mode 100644 include/asm-arm/arch-l7200/pmpcon.h create mode 100644 include/asm-arm/arch-l7200/pmu.h create mode 100644 include/asm-arm/arch-l7200/serial.h create mode 100644 include/asm-arm/arch-l7200/serial_l7200.h create mode 100644 include/asm-arm/arch-l7200/sib.h create mode 100644 include/asm-arm/arch-l7200/sys-clock.h create mode 100644 include/asm-arm/arch-l7200/system.h create mode 100644 include/asm-arm/arch-l7200/time.h create mode 100644 include/asm-arm/arch-l7200/timex.h create mode 100644 include/asm-arm/arch-l7200/uncompress.h create mode 100644 include/asm-arm/arch-l7200/vmalloc.h create mode 100644 include/asm-arm/arch-lh7a40x/constants.h create mode 100644 include/asm-arm/arch-lh7a40x/debug-macro.S create mode 100644 include/asm-arm/arch-lh7a40x/dma.h create mode 100644 include/asm-arm/arch-lh7a40x/entry-macro.S create mode 100644 include/asm-arm/arch-lh7a40x/hardware.h create mode 100644 include/asm-arm/arch-lh7a40x/io.h create mode 100644 include/asm-arm/arch-lh7a40x/irq.h create mode 100644 include/asm-arm/arch-lh7a40x/irqs.h create mode 100644 include/asm-arm/arch-lh7a40x/memory.h create mode 100644 include/asm-arm/arch-lh7a40x/param.h create mode 100644 include/asm-arm/arch-lh7a40x/registers.h create mode 100644 include/asm-arm/arch-lh7a40x/system.h create mode 100644 include/asm-arm/arch-lh7a40x/timex.h create mode 100644 include/asm-arm/arch-lh7a40x/uncompress.h create mode 100644 include/asm-arm/arch-lh7a40x/vmalloc.h create mode 100644 include/asm-arm/arch-omap/aic23.h create mode 100644 include/asm-arm/arch-omap/board-h2.h create mode 100644 include/asm-arm/arch-omap/board-h3.h create mode 100644 include/asm-arm/arch-omap/board-h4.h create mode 100644 include/asm-arm/arch-omap/board-innovator.h create mode 100644 include/asm-arm/arch-omap/board-netstar.h create mode 100644 include/asm-arm/arch-omap/board-osk.h create mode 100644 include/asm-arm/arch-omap/board-perseus2.h create mode 100644 include/asm-arm/arch-omap/board-voiceblue.h create mode 100644 include/asm-arm/arch-omap/board.h create mode 100644 include/asm-arm/arch-omap/cpu.h create mode 100644 include/asm-arm/arch-omap/debug-macro.S create mode 100644 include/asm-arm/arch-omap/dma.h create mode 100644 include/asm-arm/arch-omap/entry-macro.S create mode 100644 include/asm-arm/arch-omap/fpga.h create mode 100644 include/asm-arm/arch-omap/gpio.h create mode 100644 include/asm-arm/arch-omap/hardware.h create mode 100644 include/asm-arm/arch-omap/io.h create mode 100644 include/asm-arm/arch-omap/irqs.h create mode 100644 include/asm-arm/arch-omap/mcbsp.h create mode 100644 include/asm-arm/arch-omap/memory.h create mode 100644 include/asm-arm/arch-omap/mux.h create mode 100644 include/asm-arm/arch-omap/omap1510.h create mode 100644 include/asm-arm/arch-omap/omap16xx.h create mode 100644 include/asm-arm/arch-omap/omap730.h create mode 100644 include/asm-arm/arch-omap/param.h create mode 100644 include/asm-arm/arch-omap/pm.h create mode 100644 include/asm-arm/arch-omap/system.h create mode 100644 include/asm-arm/arch-omap/tc.h create mode 100644 include/asm-arm/arch-omap/timex.h create mode 100644 include/asm-arm/arch-omap/tps65010.h create mode 100644 include/asm-arm/arch-omap/uncompress.h create mode 100644 include/asm-arm/arch-omap/usb.h create mode 100644 include/asm-arm/arch-omap/vmalloc.h create mode 100644 include/asm-arm/arch-pxa/audio.h create mode 100644 include/asm-arm/arch-pxa/bitfield.h create mode 100644 include/asm-arm/arch-pxa/corgi.h create mode 100644 include/asm-arm/arch-pxa/debug-macro.S create mode 100644 include/asm-arm/arch-pxa/dma.h create mode 100644 include/asm-arm/arch-pxa/entry-macro.S create mode 100644 include/asm-arm/arch-pxa/hardware.h create mode 100644 include/asm-arm/arch-pxa/idp.h create mode 100644 include/asm-arm/arch-pxa/io.h create mode 100644 include/asm-arm/arch-pxa/irq.h create mode 100644 include/asm-arm/arch-pxa/irqs.h create mode 100644 include/asm-arm/arch-pxa/lubbock.h create mode 100644 include/asm-arm/arch-pxa/mainstone.h create mode 100644 include/asm-arm/arch-pxa/memory.h create mode 100644 include/asm-arm/arch-pxa/mmc.h create mode 100644 include/asm-arm/arch-pxa/param.h create mode 100644 include/asm-arm/arch-pxa/poodle.h create mode 100644 include/asm-arm/arch-pxa/pxa-regs.h create mode 100644 include/asm-arm/arch-pxa/pxafb.h create mode 100644 include/asm-arm/arch-pxa/ssp.h create mode 100644 include/asm-arm/arch-pxa/system.h create mode 100644 include/asm-arm/arch-pxa/timex.h create mode 100644 include/asm-arm/arch-pxa/udc.h create mode 100644 include/asm-arm/arch-pxa/uncompress.h create mode 100644 include/asm-arm/arch-pxa/vmalloc.h create mode 100644 include/asm-arm/arch-rpc/acornfb.h create mode 100644 include/asm-arm/arch-rpc/debug-macro.S create mode 100644 include/asm-arm/arch-rpc/dma.h create mode 100644 include/asm-arm/arch-rpc/entry-macro.S create mode 100644 include/asm-arm/arch-rpc/hardware.h create mode 100644 include/asm-arm/arch-rpc/io.h create mode 100644 include/asm-arm/arch-rpc/irqs.h create mode 100644 include/asm-arm/arch-rpc/memory.h create mode 100644 include/asm-arm/arch-rpc/param.h create mode 100644 include/asm-arm/arch-rpc/system.h create mode 100644 include/asm-arm/arch-rpc/timex.h create mode 100644 include/asm-arm/arch-rpc/uncompress.h create mode 100644 include/asm-arm/arch-rpc/vmalloc.h create mode 100644 include/asm-arm/arch-s3c2410/bast-cpld.h create mode 100644 include/asm-arm/arch-s3c2410/bast-irq.h create mode 100644 include/asm-arm/arch-s3c2410/bast-map.h create mode 100644 include/asm-arm/arch-s3c2410/bast-pmu.h create mode 100644 include/asm-arm/arch-s3c2410/debug-macro.S create mode 100644 include/asm-arm/arch-s3c2410/dma.h create mode 100644 include/asm-arm/arch-s3c2410/entry-macro.S create mode 100644 include/asm-arm/arch-s3c2410/hardware.h create mode 100644 include/asm-arm/arch-s3c2410/idle.h create mode 100644 include/asm-arm/arch-s3c2410/iic.h create mode 100644 include/asm-arm/arch-s3c2410/io.h create mode 100644 include/asm-arm/arch-s3c2410/irqs.h create mode 100644 include/asm-arm/arch-s3c2410/map.h create mode 100644 include/asm-arm/arch-s3c2410/memory.h create mode 100644 include/asm-arm/arch-s3c2410/nand.h create mode 100644 include/asm-arm/arch-s3c2410/otom-map.h create mode 100644 include/asm-arm/arch-s3c2410/param.h create mode 100644 include/asm-arm/arch-s3c2410/regs-adc.h create mode 100644 include/asm-arm/arch-s3c2410/regs-clock.h create mode 100644 include/asm-arm/arch-s3c2410/regs-dsc.h create mode 100644 include/asm-arm/arch-s3c2410/regs-gpio.h create mode 100644 include/asm-arm/arch-s3c2410/regs-gpioj.h create mode 100644 include/asm-arm/arch-s3c2410/regs-iic.h create mode 100644 include/asm-arm/arch-s3c2410/regs-iis.h create mode 100644 include/asm-arm/arch-s3c2410/regs-irq.h create mode 100644 include/asm-arm/arch-s3c2410/regs-lcd.h create mode 100644 include/asm-arm/arch-s3c2410/regs-mem.h create mode 100644 include/asm-arm/arch-s3c2410/regs-nand.h create mode 100644 include/asm-arm/arch-s3c2410/regs-rtc.h create mode 100644 include/asm-arm/arch-s3c2410/regs-sdi.h create mode 100644 include/asm-arm/arch-s3c2410/regs-serial.h create mode 100644 include/asm-arm/arch-s3c2410/regs-spi.h create mode 100644 include/asm-arm/arch-s3c2410/regs-timer.h create mode 100644 include/asm-arm/arch-s3c2410/regs-udc.h create mode 100644 include/asm-arm/arch-s3c2410/regs-watchdog.h create mode 100644 include/asm-arm/arch-s3c2410/system.h create mode 100644 include/asm-arm/arch-s3c2410/timex.h create mode 100644 include/asm-arm/arch-s3c2410/uncompress.h create mode 100644 include/asm-arm/arch-s3c2410/usb-control.h create mode 100644 include/asm-arm/arch-s3c2410/vmalloc.h create mode 100644 include/asm-arm/arch-s3c2410/vr1000-cpld.h create mode 100644 include/asm-arm/arch-s3c2410/vr1000-irq.h create mode 100644 include/asm-arm/arch-s3c2410/vr1000-map.h create mode 100644 include/asm-arm/arch-sa1100/SA-1100.h create mode 100644 include/asm-arm/arch-sa1100/SA-1101.h create mode 100644 include/asm-arm/arch-sa1100/SA-1111.h create mode 100644 include/asm-arm/arch-sa1100/assabet.h create mode 100644 include/asm-arm/arch-sa1100/badge4.h create mode 100644 include/asm-arm/arch-sa1100/bitfield.h create mode 100644 include/asm-arm/arch-sa1100/cerf.h create mode 100644 include/asm-arm/arch-sa1100/collie.h create mode 100644 include/asm-arm/arch-sa1100/debug-macro.S create mode 100644 include/asm-arm/arch-sa1100/dma.h create mode 100644 include/asm-arm/arch-sa1100/entry-macro.S create mode 100644 include/asm-arm/arch-sa1100/h3600.h create mode 100644 include/asm-arm/arch-sa1100/h3600_gpio.h create mode 100644 include/asm-arm/arch-sa1100/hardware.h create mode 100644 include/asm-arm/arch-sa1100/ide.h create mode 100644 include/asm-arm/arch-sa1100/io.h create mode 100644 include/asm-arm/arch-sa1100/irqs.h create mode 100644 include/asm-arm/arch-sa1100/jornada720.h create mode 100644 include/asm-arm/arch-sa1100/lart.h create mode 100644 include/asm-arm/arch-sa1100/memory.h create mode 100644 include/asm-arm/arch-sa1100/neponset.h create mode 100644 include/asm-arm/arch-sa1100/param.h create mode 100644 include/asm-arm/arch-sa1100/shannon.h create mode 100644 include/asm-arm/arch-sa1100/simpad.h create mode 100644 include/asm-arm/arch-sa1100/system.h create mode 100644 include/asm-arm/arch-sa1100/timex.h create mode 100644 include/asm-arm/arch-sa1100/uncompress.h create mode 100644 include/asm-arm/arch-sa1100/vmalloc.h create mode 100644 include/asm-arm/arch-shark/debug-macro.S create mode 100644 include/asm-arm/arch-shark/dma.h create mode 100644 include/asm-arm/arch-shark/entry-macro.S create mode 100644 include/asm-arm/arch-shark/hardware.h create mode 100644 include/asm-arm/arch-shark/io.h create mode 100644 include/asm-arm/arch-shark/irqs.h create mode 100644 include/asm-arm/arch-shark/memory.h create mode 100644 include/asm-arm/arch-shark/param.h create mode 100644 include/asm-arm/arch-shark/system.h create mode 100644 include/asm-arm/arch-shark/timex.h create mode 100644 include/asm-arm/arch-shark/uncompress.h create mode 100644 include/asm-arm/arch-shark/vmalloc.h create mode 100644 include/asm-arm/arch-versatile/debug-macro.S create mode 100644 include/asm-arm/arch-versatile/dma.h create mode 100644 include/asm-arm/arch-versatile/entry-macro.S create mode 100644 include/asm-arm/arch-versatile/hardware.h create mode 100644 include/asm-arm/arch-versatile/io.h create mode 100644 include/asm-arm/arch-versatile/irqs.h create mode 100644 include/asm-arm/arch-versatile/memory.h create mode 100644 include/asm-arm/arch-versatile/param.h create mode 100644 include/asm-arm/arch-versatile/platform.h create mode 100644 include/asm-arm/arch-versatile/system.h create mode 100644 include/asm-arm/arch-versatile/timex.h create mode 100644 include/asm-arm/arch-versatile/uncompress.h create mode 100644 include/asm-arm/arch-versatile/vmalloc.h create mode 100644 include/asm-arm/assembler.h create mode 100644 include/asm-arm/atomic.h create mode 100644 include/asm-arm/bitops.h create mode 100644 include/asm-arm/bug.h create mode 100644 include/asm-arm/bugs.h create mode 100644 include/asm-arm/byteorder.h create mode 100644 include/asm-arm/cache.h create mode 100644 include/asm-arm/cacheflush.h create mode 100644 include/asm-arm/checksum.h create mode 100644 include/asm-arm/cpu-multi32.h create mode 100644 include/asm-arm/cpu-single.h create mode 100644 include/asm-arm/cpu.h create mode 100644 include/asm-arm/cputime.h create mode 100644 include/asm-arm/current.h create mode 100644 include/asm-arm/delay.h create mode 100644 include/asm-arm/div64.h create mode 100644 include/asm-arm/dma-mapping.h create mode 100644 include/asm-arm/dma.h create mode 100644 include/asm-arm/domain.h create mode 100644 include/asm-arm/ecard.h create mode 100644 include/asm-arm/elf.h create mode 100644 include/asm-arm/errno.h create mode 100644 include/asm-arm/fcntl.h create mode 100644 include/asm-arm/fiq.h create mode 100644 include/asm-arm/floppy.h create mode 100644 include/asm-arm/fpstate.h create mode 100644 include/asm-arm/glue.h create mode 100644 include/asm-arm/hardirq.h create mode 100644 include/asm-arm/hardware.h create mode 100644 include/asm-arm/hardware/amba.h create mode 100644 include/asm-arm/hardware/amba_clcd.h create mode 100644 include/asm-arm/hardware/amba_kmi.h create mode 100644 include/asm-arm/hardware/amba_serial.h create mode 100644 include/asm-arm/hardware/clock.h create mode 100644 include/asm-arm/hardware/clps7111.h create mode 100644 include/asm-arm/hardware/cs89712.h create mode 100644 include/asm-arm/hardware/dec21285.h create mode 100644 include/asm-arm/hardware/entry-macro-iomd.S create mode 100644 include/asm-arm/hardware/ep7211.h create mode 100644 include/asm-arm/hardware/ep7212.h create mode 100644 include/asm-arm/hardware/icst307.h create mode 100644 include/asm-arm/hardware/icst525.h create mode 100644 include/asm-arm/hardware/ioc.h create mode 100644 include/asm-arm/hardware/iomd.h create mode 100644 include/asm-arm/hardware/linkup-l1110.h create mode 100644 include/asm-arm/hardware/locomo.h create mode 100644 include/asm-arm/hardware/memc.h create mode 100644 include/asm-arm/hardware/pci_v3.h create mode 100644 include/asm-arm/hardware/sa1111.h create mode 100644 include/asm-arm/hardware/scoop.h create mode 100644 include/asm-arm/hardware/ssp.h create mode 100644 include/asm-arm/hdreg.h create mode 100644 include/asm-arm/ide.h create mode 100644 include/asm-arm/io.h create mode 100644 include/asm-arm/ioctl.h create mode 100644 include/asm-arm/ioctls.h create mode 100644 include/asm-arm/ipc.h create mode 100644 include/asm-arm/ipcbuf.h create mode 100644 include/asm-arm/irq.h create mode 100644 include/asm-arm/kmap_types.h create mode 100644 include/asm-arm/leds.h create mode 100644 include/asm-arm/limits.h create mode 100644 include/asm-arm/linkage.h create mode 100644 include/asm-arm/local.h create mode 100644 include/asm-arm/locks.h create mode 100644 include/asm-arm/mach/arch.h create mode 100644 include/asm-arm/mach/dma.h create mode 100644 include/asm-arm/mach/flash.h create mode 100644 include/asm-arm/mach/irda.h create mode 100644 include/asm-arm/mach/irq.h create mode 100644 include/asm-arm/mach/map.h create mode 100644 include/asm-arm/mach/mmc.h create mode 100644 include/asm-arm/mach/pci.h create mode 100644 include/asm-arm/mach/serial_sa1100.h create mode 100644 include/asm-arm/mach/sharpsl_param.h create mode 100644 include/asm-arm/mach/time.h create mode 100644 include/asm-arm/mc146818rtc.h create mode 100644 include/asm-arm/memory.h create mode 100644 include/asm-arm/mman.h create mode 100644 include/asm-arm/mmu.h create mode 100644 include/asm-arm/mmu_context.h create mode 100644 include/asm-arm/mmzone.h create mode 100644 include/asm-arm/module.h create mode 100644 include/asm-arm/msgbuf.h create mode 100644 include/asm-arm/namei.h create mode 100644 include/asm-arm/numnodes.h create mode 100644 include/asm-arm/nwflash.h create mode 100644 include/asm-arm/page.h create mode 100644 include/asm-arm/param.h create mode 100644 include/asm-arm/parport.h create mode 100644 include/asm-arm/pci.h create mode 100644 include/asm-arm/percpu.h create mode 100644 include/asm-arm/pgalloc.h create mode 100644 include/asm-arm/pgtable.h create mode 100644 include/asm-arm/poll.h create mode 100644 include/asm-arm/posix_types.h create mode 100644 include/asm-arm/proc-fns.h create mode 100644 include/asm-arm/processor.h create mode 100644 include/asm-arm/procinfo.h create mode 100644 include/asm-arm/ptrace.h create mode 100644 include/asm-arm/resource.h create mode 100644 include/asm-arm/rtc.h create mode 100644 include/asm-arm/scatterlist.h create mode 100644 include/asm-arm/sections.h create mode 100644 include/asm-arm/segment.h create mode 100644 include/asm-arm/semaphore-helper.h create mode 100644 include/asm-arm/semaphore.h create mode 100644 include/asm-arm/sembuf.h create mode 100644 include/asm-arm/serial.h create mode 100644 include/asm-arm/setup.h create mode 100644 include/asm-arm/shmbuf.h create mode 100644 include/asm-arm/shmparam.h create mode 100644 include/asm-arm/sigcontext.h create mode 100644 include/asm-arm/siginfo.h create mode 100644 include/asm-arm/signal.h create mode 100644 include/asm-arm/sizes.h create mode 100644 include/asm-arm/smp.h create mode 100644 include/asm-arm/socket.h create mode 100644 include/asm-arm/sockios.h create mode 100644 include/asm-arm/spinlock.h create mode 100644 include/asm-arm/stat.h create mode 100644 include/asm-arm/statfs.h create mode 100644 include/asm-arm/string.h create mode 100644 include/asm-arm/suspend.h create mode 100644 include/asm-arm/system.h create mode 100644 include/asm-arm/termbits.h create mode 100644 include/asm-arm/termios.h create mode 100644 include/asm-arm/therm.h create mode 100644 include/asm-arm/thread_info.h create mode 100644 include/asm-arm/timex.h create mode 100644 include/asm-arm/tlb.h create mode 100644 include/asm-arm/tlbflush.h create mode 100644 include/asm-arm/topology.h create mode 100644 include/asm-arm/traps.h create mode 100644 include/asm-arm/types.h create mode 100644 include/asm-arm/uaccess.h create mode 100644 include/asm-arm/ucontext.h create mode 100644 include/asm-arm/unaligned.h create mode 100644 include/asm-arm/unistd.h create mode 100644 include/asm-arm/user.h create mode 100644 include/asm-arm/vfp.h create mode 100644 include/asm-arm/vfpmacros.h create mode 100644 include/asm-arm/vga.h create mode 100644 include/asm-arm/xor.h create mode 100644 include/asm-arm26/a.out.h create mode 100644 include/asm-arm26/assembler.h create mode 100644 include/asm-arm26/atomic.h create mode 100644 include/asm-arm26/bitops.h create mode 100644 include/asm-arm26/bug.h create mode 100644 include/asm-arm26/bugs.h create mode 100644 include/asm-arm26/byteorder.h create mode 100644 include/asm-arm26/cache.h create mode 100644 include/asm-arm26/cacheflush.h create mode 100644 include/asm-arm26/checksum.h create mode 100644 include/asm-arm26/constants.h create mode 100644 include/asm-arm26/cputime.h create mode 100644 include/asm-arm26/current.h create mode 100644 include/asm-arm26/delay.h create mode 100644 include/asm-arm26/div64.h create mode 100644 include/asm-arm26/dma-mapping.h create mode 100644 include/asm-arm26/dma.h create mode 100644 include/asm-arm26/ecard.h create mode 100644 include/asm-arm26/elf.h create mode 100644 include/asm-arm26/errno.h create mode 100644 include/asm-arm26/fcntl.h create mode 100644 include/asm-arm26/fiq.h create mode 100644 include/asm-arm26/floppy.h create mode 100644 include/asm-arm26/fpstate.h create mode 100644 include/asm-arm26/hardirq.h create mode 100644 include/asm-arm26/hardware.h create mode 100644 include/asm-arm26/hdreg.h create mode 100644 include/asm-arm26/ide.h create mode 100644 include/asm-arm26/io.h create mode 100644 include/asm-arm26/ioc.h create mode 100644 include/asm-arm26/ioctl.h create mode 100644 include/asm-arm26/ioctls.h create mode 100644 include/asm-arm26/ipc.h create mode 100644 include/asm-arm26/ipcbuf.h create mode 100644 include/asm-arm26/irq.h create mode 100644 include/asm-arm26/irqchip.h create mode 100644 include/asm-arm26/kmap_types.h create mode 100644 include/asm-arm26/leds.h create mode 100644 include/asm-arm26/limits.h create mode 100644 include/asm-arm26/linkage.h create mode 100644 include/asm-arm26/local.h create mode 100644 include/asm-arm26/locks.h create mode 100644 include/asm-arm26/mach-types.h create mode 100644 include/asm-arm26/map.h create mode 100644 include/asm-arm26/mc146818rtc.h create mode 100644 include/asm-arm26/memory.h create mode 100644 include/asm-arm26/mman.h create mode 100644 include/asm-arm26/mmu.h create mode 100644 include/asm-arm26/mmu_context.h create mode 100644 include/asm-arm26/module.h create mode 100644 include/asm-arm26/msgbuf.h create mode 100644 include/asm-arm26/namei.h create mode 100644 include/asm-arm26/oldlatches.h create mode 100644 include/asm-arm26/page.h create mode 100644 include/asm-arm26/param.h create mode 100644 include/asm-arm26/parport.h create mode 100644 include/asm-arm26/pci.h create mode 100644 include/asm-arm26/percpu.h create mode 100644 include/asm-arm26/pgalloc.h create mode 100644 include/asm-arm26/pgtable.h create mode 100644 include/asm-arm26/poll.h create mode 100644 include/asm-arm26/posix_types.h create mode 100644 include/asm-arm26/proc-fns.h create mode 100644 include/asm-arm26/processor.h create mode 100644 include/asm-arm26/procinfo.h create mode 100644 include/asm-arm26/ptrace.h create mode 100644 include/asm-arm26/resource.h create mode 100644 include/asm-arm26/scatterlist.h create mode 100644 include/asm-arm26/sections.h create mode 100644 include/asm-arm26/segment.h create mode 100644 include/asm-arm26/semaphore-helper.h create mode 100644 include/asm-arm26/semaphore.h create mode 100644 include/asm-arm26/sembuf.h create mode 100644 include/asm-arm26/serial.h create mode 100644 include/asm-arm26/setup.h create mode 100644 include/asm-arm26/shmbuf.h create mode 100644 include/asm-arm26/shmparam.h create mode 100644 include/asm-arm26/sigcontext.h create mode 100644 include/asm-arm26/siginfo.h create mode 100644 include/asm-arm26/signal.h create mode 100644 include/asm-arm26/sizes.h create mode 100644 include/asm-arm26/smp.h create mode 100644 include/asm-arm26/socket.h create mode 100644 include/asm-arm26/sockios.h create mode 100644 include/asm-arm26/spinlock.h create mode 100644 include/asm-arm26/stat.h create mode 100644 include/asm-arm26/statfs.h create mode 100644 include/asm-arm26/string.h create mode 100644 include/asm-arm26/suspend.h create mode 100644 include/asm-arm26/sysirq.h create mode 100644 include/asm-arm26/system.h create mode 100644 include/asm-arm26/termbits.h create mode 100644 include/asm-arm26/termios.h create mode 100644 include/asm-arm26/thread_info.h create mode 100644 include/asm-arm26/timex.h create mode 100644 include/asm-arm26/tlb.h create mode 100644 include/asm-arm26/tlbflush.h create mode 100644 include/asm-arm26/topology.h create mode 100644 include/asm-arm26/types.h create mode 100644 include/asm-arm26/uaccess-asm.h create mode 100644 include/asm-arm26/uaccess.h create mode 100644 include/asm-arm26/ucontext.h create mode 100644 include/asm-arm26/unaligned.h create mode 100644 include/asm-arm26/uncompress.h create mode 100644 include/asm-arm26/unistd.h create mode 100644 include/asm-arm26/user.h create mode 100644 include/asm-arm26/xor.h create mode 100644 include/asm-cris/a.out.h create mode 100644 include/asm-cris/arch-v10/bitops.h create mode 100644 include/asm-cris/arch-v10/byteorder.h create mode 100644 include/asm-cris/arch-v10/cache.h create mode 100644 include/asm-cris/arch-v10/checksum.h create mode 100644 include/asm-cris/arch-v10/delay.h create mode 100644 include/asm-cris/arch-v10/dma.h create mode 100644 include/asm-cris/arch-v10/elf.h create mode 100644 include/asm-cris/arch-v10/io.h create mode 100644 include/asm-cris/arch-v10/irq.h create mode 100644 include/asm-cris/arch-v10/mmu.h create mode 100644 include/asm-cris/arch-v10/offset.h create mode 100644 include/asm-cris/arch-v10/page.h create mode 100644 include/asm-cris/arch-v10/pgtable.h create mode 100644 include/asm-cris/arch-v10/processor.h create mode 100644 include/asm-cris/arch-v10/ptrace.h create mode 100644 include/asm-cris/arch-v10/sv_addr.agh create mode 100644 include/asm-cris/arch-v10/sv_addr_ag.h create mode 100644 include/asm-cris/arch-v10/svinto.h create mode 100644 include/asm-cris/arch-v10/system.h create mode 100644 include/asm-cris/arch-v10/thread_info.h create mode 100644 include/asm-cris/arch-v10/timex.h create mode 100644 include/asm-cris/arch-v10/tlb.h create mode 100644 include/asm-cris/arch-v10/uaccess.h create mode 100644 include/asm-cris/arch-v10/unistd.h create mode 100644 include/asm-cris/arch-v10/user.h create mode 100644 include/asm-cris/atomic.h create mode 100644 include/asm-cris/axisflashmap.h create mode 100644 include/asm-cris/bitops.h create mode 100644 include/asm-cris/bug.h create mode 100644 include/asm-cris/bugs.h create mode 100644 include/asm-cris/byteorder.h create mode 100644 include/asm-cris/cache.h create mode 100644 include/asm-cris/cacheflush.h create mode 100644 include/asm-cris/checksum.h create mode 100644 include/asm-cris/cputime.h create mode 100644 include/asm-cris/current.h create mode 100644 include/asm-cris/delay.h create mode 100644 include/asm-cris/div64.h create mode 100644 include/asm-cris/dma-mapping.h create mode 100644 include/asm-cris/dma.h create mode 100644 include/asm-cris/elf.h create mode 100644 include/asm-cris/errno.h create mode 100644 include/asm-cris/eshlibld.h create mode 100644 include/asm-cris/ethernet.h create mode 100644 include/asm-cris/etraxgpio.h create mode 100644 include/asm-cris/etraxi2c.h create mode 100644 include/asm-cris/fasttimer.h create mode 100644 include/asm-cris/fcntl.h create mode 100644 include/asm-cris/hardirq.h create mode 100644 include/asm-cris/io.h create mode 100644 include/asm-cris/ioctl.h create mode 100644 include/asm-cris/ioctls.h create mode 100644 include/asm-cris/ipc.h create mode 100644 include/asm-cris/ipcbuf.h create mode 100644 include/asm-cris/irq.h create mode 100644 include/asm-cris/kmap_types.h create mode 100644 include/asm-cris/linkage.h create mode 100644 include/asm-cris/local.h create mode 100644 include/asm-cris/mman.h create mode 100644 include/asm-cris/mmu.h create mode 100644 include/asm-cris/mmu_context.h create mode 100644 include/asm-cris/module.h create mode 100644 include/asm-cris/msgbuf.h create mode 100644 include/asm-cris/namei.h create mode 100644 include/asm-cris/page.h create mode 100644 include/asm-cris/param.h create mode 100644 include/asm-cris/pci.h create mode 100644 include/asm-cris/percpu.h create mode 100644 include/asm-cris/pgalloc.h create mode 100644 include/asm-cris/pgtable.h create mode 100644 include/asm-cris/poll.h create mode 100644 include/asm-cris/posix_types.h create mode 100644 include/asm-cris/processor.h create mode 100644 include/asm-cris/ptrace.h create mode 100644 include/asm-cris/resource.h create mode 100644 include/asm-cris/rs485.h create mode 100644 include/asm-cris/rtc.h create mode 100644 include/asm-cris/scatterlist.h create mode 100644 include/asm-cris/sections.h create mode 100644 include/asm-cris/segment.h create mode 100644 include/asm-cris/semaphore-helper.h create mode 100644 include/asm-cris/semaphore.h create mode 100644 include/asm-cris/sembuf.h create mode 100644 include/asm-cris/setup.h create mode 100644 include/asm-cris/shmbuf.h create mode 100644 include/asm-cris/shmparam.h create mode 100644 include/asm-cris/sigcontext.h create mode 100644 include/asm-cris/siginfo.h create mode 100644 include/asm-cris/signal.h create mode 100644 include/asm-cris/smp.h create mode 100644 include/asm-cris/socket.h create mode 100644 include/asm-cris/sockios.h create mode 100644 include/asm-cris/stat.h create mode 100644 include/asm-cris/statfs.h create mode 100644 include/asm-cris/string.h create mode 100644 include/asm-cris/system.h create mode 100644 include/asm-cris/termbits.h create mode 100644 include/asm-cris/termios.h create mode 100644 include/asm-cris/thread_info.h create mode 100644 include/asm-cris/timex.h create mode 100644 include/asm-cris/tlb.h create mode 100644 include/asm-cris/tlbflush.h create mode 100644 include/asm-cris/topology.h create mode 100644 include/asm-cris/types.h create mode 100644 include/asm-cris/uaccess.h create mode 100644 include/asm-cris/ucontext.h create mode 100644 include/asm-cris/unaligned.h create mode 100644 include/asm-cris/unistd.h create mode 100644 include/asm-cris/user.h create mode 100644 include/asm-frv/a.out.h create mode 100644 include/asm-frv/atomic.h create mode 100644 include/asm-frv/ax88796.h create mode 100644 include/asm-frv/bitops.h create mode 100644 include/asm-frv/bug.h create mode 100644 include/asm-frv/bugs.h create mode 100644 include/asm-frv/busctl-regs.h create mode 100644 include/asm-frv/byteorder.h create mode 100644 include/asm-frv/cache.h create mode 100644 include/asm-frv/cacheflush.h create mode 100644 include/asm-frv/checksum.h create mode 100644 include/asm-frv/cpu-irqs.h create mode 100644 include/asm-frv/cpumask.h create mode 100644 include/asm-frv/cputime.h create mode 100644 include/asm-frv/current.h create mode 100644 include/asm-frv/delay.h create mode 100644 include/asm-frv/div64.h create mode 100644 include/asm-frv/dm9000.h create mode 100644 include/asm-frv/dma-mapping.h create mode 100644 include/asm-frv/dma.h create mode 100644 include/asm-frv/elf.h create mode 100644 include/asm-frv/errno.h create mode 100644 include/asm-frv/fcntl.h create mode 100644 include/asm-frv/fpu.h create mode 100644 include/asm-frv/gdb-stub.h create mode 100644 include/asm-frv/gpio-regs.h create mode 100644 include/asm-frv/hardirq.h create mode 100644 include/asm-frv/highmem.h create mode 100644 include/asm-frv/hw_irq.h create mode 100644 include/asm-frv/ide.h create mode 100644 include/asm-frv/init.h create mode 100644 include/asm-frv/io.h create mode 100644 include/asm-frv/ioctl.h create mode 100644 include/asm-frv/ioctls.h create mode 100644 include/asm-frv/ipc.h create mode 100644 include/asm-frv/ipcbuf.h create mode 100644 include/asm-frv/irc-regs.h create mode 100644 include/asm-frv/irq-routing.h create mode 100644 include/asm-frv/irq.h create mode 100644 include/asm-frv/kmap_types.h create mode 100644 include/asm-frv/linkage.h create mode 100644 include/asm-frv/local.h create mode 100644 include/asm-frv/math-emu.h create mode 100644 include/asm-frv/mb-regs.h create mode 100644 include/asm-frv/mb86943a.h create mode 100644 include/asm-frv/mb93091-fpga-irqs.h create mode 100644 include/asm-frv/mb93093-fpga-irqs.h create mode 100644 include/asm-frv/mb93493-irqs.h create mode 100644 include/asm-frv/mb93493-regs.h create mode 100644 include/asm-frv/mem-layout.h create mode 100644 include/asm-frv/mman.h create mode 100644 include/asm-frv/mmu.h create mode 100644 include/asm-frv/mmu_context.h create mode 100644 include/asm-frv/module.h create mode 100644 include/asm-frv/msgbuf.h create mode 100644 include/asm-frv/namei.h create mode 100644 include/asm-frv/page.h create mode 100644 include/asm-frv/param.h create mode 100644 include/asm-frv/pci.h create mode 100644 include/asm-frv/percpu.h create mode 100644 include/asm-frv/pgalloc.h create mode 100644 include/asm-frv/pgtable.h create mode 100644 include/asm-frv/poll.h create mode 100644 include/asm-frv/posix_types.h create mode 100644 include/asm-frv/processor.h create mode 100644 include/asm-frv/ptrace.h create mode 100644 include/asm-frv/registers.h create mode 100644 include/asm-frv/resource.h create mode 100644 include/asm-frv/scatterlist.h create mode 100644 include/asm-frv/sections.h create mode 100644 include/asm-frv/segment.h create mode 100644 include/asm-frv/semaphore.h create mode 100644 include/asm-frv/sembuf.h create mode 100644 include/asm-frv/serial-regs.h create mode 100644 include/asm-frv/serial.h create mode 100644 include/asm-frv/setup.h create mode 100644 include/asm-frv/shmbuf.h create mode 100644 include/asm-frv/shmparam.h create mode 100644 include/asm-frv/sigcontext.h create mode 100644 include/asm-frv/siginfo.h create mode 100644 include/asm-frv/signal.h create mode 100644 include/asm-frv/smp.h create mode 100644 include/asm-frv/socket.h create mode 100644 include/asm-frv/sockios.h create mode 100644 include/asm-frv/spinlock.h create mode 100644 include/asm-frv/spr-regs.h create mode 100644 include/asm-frv/stat.h create mode 100644 include/asm-frv/statfs.h create mode 100644 include/asm-frv/string.h create mode 100644 include/asm-frv/suspend.h create mode 100644 include/asm-frv/system.h create mode 100644 include/asm-frv/termbits.h create mode 100644 include/asm-frv/termios.h create mode 100644 include/asm-frv/thread_info.h create mode 100644 include/asm-frv/timer-regs.h create mode 100644 include/asm-frv/timex.h create mode 100644 include/asm-frv/tlb.h create mode 100644 include/asm-frv/tlbflush.h create mode 100644 include/asm-frv/topology.h create mode 100644 include/asm-frv/types.h create mode 100644 include/asm-frv/uaccess.h create mode 100644 include/asm-frv/ucontext.h create mode 100644 include/asm-frv/unaligned.h create mode 100644 include/asm-frv/unistd.h create mode 100644 include/asm-frv/user.h create mode 100644 include/asm-frv/virtconvert.h create mode 100644 include/asm-generic/4level-fixup.h create mode 100644 include/asm-generic/bitops.h create mode 100644 include/asm-generic/bug.h create mode 100644 include/asm-generic/cputime.h create mode 100644 include/asm-generic/div64.h create mode 100644 include/asm-generic/dma-mapping-broken.h create mode 100644 include/asm-generic/dma-mapping.h create mode 100644 include/asm-generic/errno-base.h create mode 100644 include/asm-generic/errno.h create mode 100644 include/asm-generic/hdreg.h create mode 100644 include/asm-generic/ide_iops.h create mode 100644 include/asm-generic/iomap.h create mode 100644 include/asm-generic/ipc.h create mode 100644 include/asm-generic/local.h create mode 100644 include/asm-generic/pci-dma-compat.h create mode 100644 include/asm-generic/pci.h create mode 100644 include/asm-generic/percpu.h create mode 100644 include/asm-generic/pgtable-nopmd.h create mode 100644 include/asm-generic/pgtable-nopud.h create mode 100644 include/asm-generic/pgtable.h create mode 100644 include/asm-generic/resource.h create mode 100644 include/asm-generic/rtc.h create mode 100644 include/asm-generic/sections.h create mode 100644 include/asm-generic/siginfo.h create mode 100644 include/asm-generic/statfs.h create mode 100644 include/asm-generic/termios.h create mode 100644 include/asm-generic/tlb.h create mode 100644 include/asm-generic/topology.h create mode 100644 include/asm-generic/uaccess.h create mode 100644 include/asm-generic/unaligned.h create mode 100644 include/asm-generic/vmlinux.lds.h create mode 100644 include/asm-generic/xor.h create mode 100644 include/asm-h8300/a.out.h create mode 100644 include/asm-h8300/atomic.h create mode 100644 include/asm-h8300/bitops.h create mode 100644 include/asm-h8300/bootinfo.h create mode 100644 include/asm-h8300/bug.h create mode 100644 include/asm-h8300/bugs.h create mode 100644 include/asm-h8300/byteorder.h create mode 100644 include/asm-h8300/cache.h create mode 100644 include/asm-h8300/cachectl.h create mode 100644 include/asm-h8300/cacheflush.h create mode 100644 include/asm-h8300/checksum.h create mode 100644 include/asm-h8300/cputime.h create mode 100644 include/asm-h8300/current.h create mode 100644 include/asm-h8300/dbg.h create mode 100644 include/asm-h8300/delay.h create mode 100644 include/asm-h8300/div64.h create mode 100644 include/asm-h8300/dma-mapping.h create mode 100644 include/asm-h8300/dma.h create mode 100644 include/asm-h8300/elf.h create mode 100644 include/asm-h8300/errno.h create mode 100644 include/asm-h8300/fcntl.h create mode 100644 include/asm-h8300/flat.h create mode 100644 include/asm-h8300/fpu.h create mode 100644 include/asm-h8300/gpio.h create mode 100644 include/asm-h8300/hardirq.h create mode 100644 include/asm-h8300/hdreg.h create mode 100644 include/asm-h8300/hw_irq.h create mode 100644 include/asm-h8300/ide.h create mode 100644 include/asm-h8300/io.h create mode 100644 include/asm-h8300/ioctl.h create mode 100644 include/asm-h8300/ioctls.h create mode 100644 include/asm-h8300/ipc.h create mode 100644 include/asm-h8300/ipcbuf.h create mode 100644 include/asm-h8300/irq.h create mode 100644 include/asm-h8300/keyboard.h create mode 100644 include/asm-h8300/kmap_types.h create mode 100644 include/asm-h8300/linkage.h create mode 100644 include/asm-h8300/local.h create mode 100644 include/asm-h8300/mc146818rtc.h create mode 100644 include/asm-h8300/md.h create mode 100644 include/asm-h8300/mman.h create mode 100644 include/asm-h8300/mmu.h create mode 100644 include/asm-h8300/mmu_context.h create mode 100644 include/asm-h8300/module.h create mode 100644 include/asm-h8300/msgbuf.h create mode 100644 include/asm-h8300/namei.h create mode 100644 include/asm-h8300/page.h create mode 100644 include/asm-h8300/page_offset.h create mode 100644 include/asm-h8300/param.h create mode 100644 include/asm-h8300/pci.h create mode 100644 include/asm-h8300/percpu.h create mode 100644 include/asm-h8300/pgalloc.h create mode 100644 include/asm-h8300/pgtable.h create mode 100644 include/asm-h8300/poll.h create mode 100644 include/asm-h8300/posix_types.h create mode 100644 include/asm-h8300/processor.h create mode 100644 include/asm-h8300/ptrace.h create mode 100644 include/asm-h8300/regs267x.h create mode 100644 include/asm-h8300/regs306x.h create mode 100644 include/asm-h8300/resource.h create mode 100644 include/asm-h8300/scatterlist.h create mode 100644 include/asm-h8300/sections.h create mode 100644 include/asm-h8300/segment.h create mode 100644 include/asm-h8300/semaphore-helper.h create mode 100644 include/asm-h8300/semaphore.h create mode 100644 include/asm-h8300/sembuf.h create mode 100644 include/asm-h8300/setup.h create mode 100644 include/asm-h8300/sh_bios.h create mode 100644 include/asm-h8300/shm.h create mode 100644 include/asm-h8300/shmbuf.h create mode 100644 include/asm-h8300/shmparam.h create mode 100644 include/asm-h8300/sigcontext.h create mode 100644 include/asm-h8300/siginfo.h create mode 100644 include/asm-h8300/signal.h create mode 100644 include/asm-h8300/smp.h create mode 100644 include/asm-h8300/socket.h create mode 100644 include/asm-h8300/sockios.h create mode 100644 include/asm-h8300/spinlock.h create mode 100644 include/asm-h8300/stat.h create mode 100644 include/asm-h8300/statfs.h create mode 100644 include/asm-h8300/string.h create mode 100644 include/asm-h8300/system.h create mode 100644 include/asm-h8300/target_time.h create mode 100644 include/asm-h8300/termbits.h create mode 100644 include/asm-h8300/termios.h create mode 100644 include/asm-h8300/thread_info.h create mode 100644 include/asm-h8300/timex.h create mode 100644 include/asm-h8300/tlb.h create mode 100644 include/asm-h8300/tlbflush.h create mode 100644 include/asm-h8300/topology.h create mode 100644 include/asm-h8300/traps.h create mode 100644 include/asm-h8300/types.h create mode 100644 include/asm-h8300/uaccess.h create mode 100644 include/asm-h8300/ucontext.h create mode 100644 include/asm-h8300/unaligned.h create mode 100644 include/asm-h8300/unistd.h create mode 100644 include/asm-h8300/user.h create mode 100644 include/asm-h8300/virtconvert.h create mode 100644 include/asm-i386/8253pit.h create mode 100644 include/asm-i386/a.out.h create mode 100644 include/asm-i386/acpi.h create mode 100644 include/asm-i386/agp.h create mode 100644 include/asm-i386/apic.h create mode 100644 include/asm-i386/apicdef.h create mode 100644 include/asm-i386/arch_hooks.h create mode 100644 include/asm-i386/atomic.h create mode 100644 include/asm-i386/bitops.h create mode 100644 include/asm-i386/boot.h create mode 100644 include/asm-i386/bug.h create mode 100644 include/asm-i386/bugs.h create mode 100644 include/asm-i386/byteorder.h create mode 100644 include/asm-i386/cache.h create mode 100644 include/asm-i386/cacheflush.h create mode 100644 include/asm-i386/checksum.h create mode 100644 include/asm-i386/cpu.h create mode 100644 include/asm-i386/cpufeature.h create mode 100644 include/asm-i386/cputime.h create mode 100644 include/asm-i386/current.h create mode 100644 include/asm-i386/debugreg.h create mode 100644 include/asm-i386/delay.h create mode 100644 include/asm-i386/desc.h create mode 100644 include/asm-i386/div64.h create mode 100644 include/asm-i386/dma-mapping.h create mode 100644 include/asm-i386/dma.h create mode 100644 include/asm-i386/e820.h create mode 100644 include/asm-i386/elf.h create mode 100644 include/asm-i386/errno.h create mode 100644 include/asm-i386/fcntl.h create mode 100644 include/asm-i386/fixmap.h create mode 100644 include/asm-i386/floppy.h create mode 100644 include/asm-i386/genapic.h create mode 100644 include/asm-i386/hardirq.h create mode 100644 include/asm-i386/hdreg.h create mode 100644 include/asm-i386/highmem.h create mode 100644 include/asm-i386/hpet.h create mode 100644 include/asm-i386/hw_irq.h create mode 100644 include/asm-i386/i387.h create mode 100644 include/asm-i386/i8259.h create mode 100644 include/asm-i386/ide.h create mode 100644 include/asm-i386/io.h create mode 100644 include/asm-i386/io_apic.h create mode 100644 include/asm-i386/ioctl.h create mode 100644 include/asm-i386/ioctls.h create mode 100644 include/asm-i386/ipc.h create mode 100644 include/asm-i386/ipcbuf.h create mode 100644 include/asm-i386/irq.h create mode 100644 include/asm-i386/ist.h create mode 100644 include/asm-i386/kdebug.h create mode 100644 include/asm-i386/kmap_types.h create mode 100644 include/asm-i386/kprobes.h create mode 100644 include/asm-i386/ldt.h create mode 100644 include/asm-i386/linkage.h create mode 100644 include/asm-i386/local.h create mode 100644 include/asm-i386/mach-bigsmp/mach_apic.h create mode 100644 include/asm-i386/mach-bigsmp/mach_apicdef.h create mode 100644 include/asm-i386/mach-bigsmp/mach_ipi.h create mode 100644 include/asm-i386/mach-bigsmp/mach_mpspec.h create mode 100644 include/asm-i386/mach-default/apm.h create mode 100644 include/asm-i386/mach-default/bios_ebda.h create mode 100644 include/asm-i386/mach-default/do_timer.h create mode 100644 include/asm-i386/mach-default/entry_arch.h create mode 100644 include/asm-i386/mach-default/io_ports.h create mode 100644 include/asm-i386/mach-default/irq_vectors.h create mode 100644 include/asm-i386/mach-default/irq_vectors_limits.h create mode 100644 include/asm-i386/mach-default/mach_apic.h create mode 100644 include/asm-i386/mach-default/mach_apicdef.h create mode 100644 include/asm-i386/mach-default/mach_ipi.h create mode 100644 include/asm-i386/mach-default/mach_mpparse.h create mode 100644 include/asm-i386/mach-default/mach_mpspec.h create mode 100644 include/asm-i386/mach-default/mach_reboot.h create mode 100644 include/asm-i386/mach-default/mach_time.h create mode 100644 include/asm-i386/mach-default/mach_timer.h create mode 100644 include/asm-i386/mach-default/mach_traps.h create mode 100644 include/asm-i386/mach-default/mach_wakecpu.h create mode 100644 include/asm-i386/mach-default/pci-functions.h create mode 100644 include/asm-i386/mach-default/setup_arch_post.h create mode 100644 include/asm-i386/mach-default/setup_arch_pre.h create mode 100644 include/asm-i386/mach-default/smpboot_hooks.h create mode 100644 include/asm-i386/mach-es7000/mach_apic.h create mode 100644 include/asm-i386/mach-es7000/mach_apicdef.h create mode 100644 include/asm-i386/mach-es7000/mach_ipi.h create mode 100644 include/asm-i386/mach-es7000/mach_mpparse.h create mode 100644 include/asm-i386/mach-es7000/mach_mpspec.h create mode 100644 include/asm-i386/mach-es7000/mach_wakecpu.h create mode 100644 include/asm-i386/mach-generic/irq_vectors_limits.h create mode 100644 include/asm-i386/mach-generic/mach_apic.h create mode 100644 include/asm-i386/mach-generic/mach_apicdef.h create mode 100644 include/asm-i386/mach-generic/mach_ipi.h create mode 100644 include/asm-i386/mach-generic/mach_mpparse.h create mode 100644 include/asm-i386/mach-generic/mach_mpspec.h create mode 100644 include/asm-i386/mach-numaq/mach_apic.h create mode 100644 include/asm-i386/mach-numaq/mach_apicdef.h create mode 100644 include/asm-i386/mach-numaq/mach_ipi.h create mode 100644 include/asm-i386/mach-numaq/mach_mpparse.h create mode 100644 include/asm-i386/mach-numaq/mach_mpspec.h create mode 100644 include/asm-i386/mach-numaq/mach_wakecpu.h create mode 100644 include/asm-i386/mach-summit/irq_vectors_limits.h create mode 100644 include/asm-i386/mach-summit/mach_apic.h create mode 100644 include/asm-i386/mach-summit/mach_apicdef.h create mode 100644 include/asm-i386/mach-summit/mach_ipi.h create mode 100644 include/asm-i386/mach-summit/mach_mpparse.h create mode 100644 include/asm-i386/mach-summit/mach_mpspec.h create mode 100644 include/asm-i386/mach-visws/cobalt.h create mode 100644 include/asm-i386/mach-visws/do_timer.h create mode 100644 include/asm-i386/mach-visws/entry_arch.h create mode 100644 include/asm-i386/mach-visws/irq_vectors.h create mode 100644 include/asm-i386/mach-visws/lithium.h create mode 100644 include/asm-i386/mach-visws/mach_apic.h create mode 100644 include/asm-i386/mach-visws/mach_apicdef.h create mode 100644 include/asm-i386/mach-visws/piix4.h create mode 100644 include/asm-i386/mach-visws/setup_arch_post.h create mode 100644 include/asm-i386/mach-visws/setup_arch_pre.h create mode 100644 include/asm-i386/mach-visws/smpboot_hooks.h create mode 100644 include/asm-i386/mach-voyager/do_timer.h create mode 100644 include/asm-i386/mach-voyager/entry_arch.h create mode 100644 include/asm-i386/mach-voyager/irq_vectors.h create mode 100644 include/asm-i386/mach-voyager/setup_arch_post.h create mode 100644 include/asm-i386/mach-voyager/setup_arch_pre.h create mode 100644 include/asm-i386/math_emu.h create mode 100644 include/asm-i386/mc146818rtc.h create mode 100644 include/asm-i386/mca.h create mode 100644 include/asm-i386/mca_dma.h create mode 100644 include/asm-i386/mman.h create mode 100644 include/asm-i386/mmu.h create mode 100644 include/asm-i386/mmu_context.h create mode 100644 include/asm-i386/mmx.h create mode 100644 include/asm-i386/mmzone.h create mode 100644 include/asm-i386/module.h create mode 100644 include/asm-i386/mpspec.h create mode 100644 include/asm-i386/mpspec_def.h create mode 100644 include/asm-i386/msgbuf.h create mode 100644 include/asm-i386/msi.h create mode 100644 include/asm-i386/msr.h create mode 100644 include/asm-i386/mtrr.h create mode 100644 include/asm-i386/namei.h create mode 100644 include/asm-i386/nmi.h create mode 100644 include/asm-i386/node.h create mode 100644 include/asm-i386/numaq.h create mode 100644 include/asm-i386/numnodes.h create mode 100644 include/asm-i386/page.h create mode 100644 include/asm-i386/param.h create mode 100644 include/asm-i386/parport.h create mode 100644 include/asm-i386/pci-direct.h create mode 100644 include/asm-i386/pci.h create mode 100644 include/asm-i386/percpu.h create mode 100644 include/asm-i386/pgalloc.h create mode 100644 include/asm-i386/pgtable-2level-defs.h create mode 100644 include/asm-i386/pgtable-2level.h create mode 100644 include/asm-i386/pgtable-3level-defs.h create mode 100644 include/asm-i386/pgtable-3level.h create mode 100644 include/asm-i386/pgtable.h create mode 100644 include/asm-i386/poll.h create mode 100644 include/asm-i386/posix_types.h create mode 100644 include/asm-i386/processor.h create mode 100644 include/asm-i386/ptrace.h create mode 100644 include/asm-i386/resource.h create mode 100644 include/asm-i386/rtc.h create mode 100644 include/asm-i386/rwlock.h create mode 100644 include/asm-i386/rwsem.h create mode 100644 include/asm-i386/scatterlist.h create mode 100644 include/asm-i386/seccomp.h create mode 100644 include/asm-i386/sections.h create mode 100644 include/asm-i386/segment.h create mode 100644 include/asm-i386/semaphore.h create mode 100644 include/asm-i386/sembuf.h create mode 100644 include/asm-i386/serial.h create mode 100644 include/asm-i386/setup.h create mode 100644 include/asm-i386/shmbuf.h create mode 100644 include/asm-i386/shmparam.h create mode 100644 include/asm-i386/sigcontext.h create mode 100644 include/asm-i386/siginfo.h create mode 100644 include/asm-i386/signal.h create mode 100644 include/asm-i386/smp.h create mode 100644 include/asm-i386/socket.h create mode 100644 include/asm-i386/sockios.h create mode 100644 include/asm-i386/spinlock.h create mode 100644 include/asm-i386/srat.h create mode 100644 include/asm-i386/stat.h create mode 100644 include/asm-i386/statfs.h create mode 100644 include/asm-i386/string.h create mode 100644 include/asm-i386/suspend.h create mode 100644 include/asm-i386/system.h create mode 100644 include/asm-i386/termbits.h create mode 100644 include/asm-i386/termios.h create mode 100644 include/asm-i386/thread_info.h create mode 100644 include/asm-i386/timer.h create mode 100644 include/asm-i386/timex.h create mode 100644 include/asm-i386/tlb.h create mode 100644 include/asm-i386/tlbflush.h create mode 100644 include/asm-i386/topology.h create mode 100644 include/asm-i386/types.h create mode 100644 include/asm-i386/uaccess.h create mode 100644 include/asm-i386/ucontext.h create mode 100644 include/asm-i386/unaligned.h create mode 100644 include/asm-i386/unistd.h create mode 100644 include/asm-i386/user.h create mode 100644 include/asm-i386/vga.h create mode 100644 include/asm-i386/vic.h create mode 100644 include/asm-i386/vm86.h create mode 100644 include/asm-i386/voyager.h create mode 100644 include/asm-i386/xor.h create mode 100644 include/asm-ia64/a.out.h create mode 100644 include/asm-ia64/acpi-ext.h create mode 100644 include/asm-ia64/acpi.h create mode 100644 include/asm-ia64/agp.h create mode 100644 include/asm-ia64/asmmacro.h create mode 100644 include/asm-ia64/atomic.h create mode 100644 include/asm-ia64/bitops.h create mode 100644 include/asm-ia64/break.h create mode 100644 include/asm-ia64/bug.h create mode 100644 include/asm-ia64/bugs.h create mode 100644 include/asm-ia64/byteorder.h create mode 100644 include/asm-ia64/cache.h create mode 100644 include/asm-ia64/cacheflush.h create mode 100644 include/asm-ia64/checksum.h create mode 100644 include/asm-ia64/compat.h create mode 100644 include/asm-ia64/cpu.h create mode 100644 include/asm-ia64/cputime.h create mode 100644 include/asm-ia64/current.h create mode 100644 include/asm-ia64/cyclone.h create mode 100644 include/asm-ia64/delay.h create mode 100644 include/asm-ia64/div64.h create mode 100644 include/asm-ia64/dma-mapping.h create mode 100644 include/asm-ia64/dma.h create mode 100644 include/asm-ia64/elf.h create mode 100644 include/asm-ia64/errno.h create mode 100644 include/asm-ia64/fcntl.h create mode 100644 include/asm-ia64/fpswa.h create mode 100644 include/asm-ia64/fpu.h create mode 100644 include/asm-ia64/gcc_intrin.h create mode 100644 include/asm-ia64/hardirq.h create mode 100644 include/asm-ia64/hdreg.h create mode 100644 include/asm-ia64/hw_irq.h create mode 100644 include/asm-ia64/ia32.h create mode 100644 include/asm-ia64/ia64regs.h create mode 100644 include/asm-ia64/ide.h create mode 100644 include/asm-ia64/intel_intrin.h create mode 100644 include/asm-ia64/intrinsics.h create mode 100644 include/asm-ia64/io.h create mode 100644 include/asm-ia64/ioctl.h create mode 100644 include/asm-ia64/ioctl32.h create mode 100644 include/asm-ia64/ioctls.h create mode 100644 include/asm-ia64/iosapic.h create mode 100644 include/asm-ia64/ipcbuf.h create mode 100644 include/asm-ia64/irq.h create mode 100644 include/asm-ia64/kmap_types.h create mode 100644 include/asm-ia64/kregs.h create mode 100644 include/asm-ia64/linkage.h create mode 100644 include/asm-ia64/local.h create mode 100644 include/asm-ia64/machvec.h create mode 100644 include/asm-ia64/machvec_dig.h create mode 100644 include/asm-ia64/machvec_hpsim.h create mode 100644 include/asm-ia64/machvec_hpzx1.h create mode 100644 include/asm-ia64/machvec_hpzx1_swiotlb.h create mode 100644 include/asm-ia64/machvec_init.h create mode 100644 include/asm-ia64/machvec_sn2.h create mode 100644 include/asm-ia64/mc146818rtc.h create mode 100644 include/asm-ia64/mca.h create mode 100644 include/asm-ia64/mca_asm.h create mode 100644 include/asm-ia64/meminit.h create mode 100644 include/asm-ia64/mman.h create mode 100644 include/asm-ia64/mmu.h create mode 100644 include/asm-ia64/mmu_context.h create mode 100644 include/asm-ia64/mmzone.h create mode 100644 include/asm-ia64/module.h create mode 100644 include/asm-ia64/msgbuf.h create mode 100644 include/asm-ia64/msi.h create mode 100644 include/asm-ia64/namei.h create mode 100644 include/asm-ia64/nodedata.h create mode 100644 include/asm-ia64/numa.h create mode 100644 include/asm-ia64/numnodes.h create mode 100644 include/asm-ia64/page.h create mode 100644 include/asm-ia64/pal.h create mode 100644 include/asm-ia64/param.h create mode 100644 include/asm-ia64/parport.h create mode 100644 include/asm-ia64/patch.h create mode 100644 include/asm-ia64/pci.h create mode 100644 include/asm-ia64/percpu.h create mode 100644 include/asm-ia64/perfmon.h create mode 100644 include/asm-ia64/perfmon_default_smpl.h create mode 100644 include/asm-ia64/pgalloc.h create mode 100644 include/asm-ia64/pgtable.h create mode 100644 include/asm-ia64/poll.h create mode 100644 include/asm-ia64/posix_types.h create mode 100644 include/asm-ia64/processor.h create mode 100644 include/asm-ia64/ptrace.h create mode 100644 include/asm-ia64/ptrace_offsets.h create mode 100644 include/asm-ia64/resource.h create mode 100644 include/asm-ia64/rse.h create mode 100644 include/asm-ia64/rwsem.h create mode 100644 include/asm-ia64/sal.h create mode 100644 include/asm-ia64/scatterlist.h create mode 100644 include/asm-ia64/sections.h create mode 100644 include/asm-ia64/segment.h create mode 100644 include/asm-ia64/semaphore.h create mode 100644 include/asm-ia64/sembuf.h create mode 100644 include/asm-ia64/serial.h create mode 100644 include/asm-ia64/setup.h create mode 100644 include/asm-ia64/shmbuf.h create mode 100644 include/asm-ia64/shmparam.h create mode 100644 include/asm-ia64/sigcontext.h create mode 100644 include/asm-ia64/siginfo.h create mode 100644 include/asm-ia64/signal.h create mode 100644 include/asm-ia64/smp.h create mode 100644 include/asm-ia64/sn/addrs.h create mode 100644 include/asm-ia64/sn/arch.h create mode 100644 include/asm-ia64/sn/bte.h create mode 100644 include/asm-ia64/sn/clksupport.h create mode 100644 include/asm-ia64/sn/fetchop.h create mode 100644 include/asm-ia64/sn/geo.h create mode 100644 include/asm-ia64/sn/intr.h create mode 100644 include/asm-ia64/sn/io.h create mode 100644 include/asm-ia64/sn/klconfig.h create mode 100644 include/asm-ia64/sn/l1.h create mode 100644 include/asm-ia64/sn/leds.h create mode 100644 include/asm-ia64/sn/module.h create mode 100644 include/asm-ia64/sn/nodepda.h create mode 100644 include/asm-ia64/sn/pda.h create mode 100644 include/asm-ia64/sn/rw_mmr.h create mode 100644 include/asm-ia64/sn/shub_mmr.h create mode 100644 include/asm-ia64/sn/shubio.h create mode 100644 include/asm-ia64/sn/simulator.h create mode 100644 include/asm-ia64/sn/sn2/sn_hwperf.h create mode 100644 include/asm-ia64/sn/sn_cpuid.h create mode 100644 include/asm-ia64/sn/sn_fru.h create mode 100644 include/asm-ia64/sn/sn_sal.h create mode 100644 include/asm-ia64/sn/sndrv.h create mode 100644 include/asm-ia64/sn/types.h create mode 100644 include/asm-ia64/socket.h create mode 100644 include/asm-ia64/sockios.h create mode 100644 include/asm-ia64/spinlock.h create mode 100644 include/asm-ia64/stat.h create mode 100644 include/asm-ia64/statfs.h create mode 100644 include/asm-ia64/string.h create mode 100644 include/asm-ia64/suspend.h create mode 100644 include/asm-ia64/system.h create mode 100644 include/asm-ia64/termbits.h create mode 100644 include/asm-ia64/termios.h create mode 100644 include/asm-ia64/thread_info.h create mode 100644 include/asm-ia64/timex.h create mode 100644 include/asm-ia64/tlb.h create mode 100644 include/asm-ia64/tlbflush.h create mode 100644 include/asm-ia64/topology.h create mode 100644 include/asm-ia64/types.h create mode 100644 include/asm-ia64/uaccess.h create mode 100644 include/asm-ia64/ucontext.h create mode 100644 include/asm-ia64/unaligned.h create mode 100644 include/asm-ia64/unistd.h create mode 100644 include/asm-ia64/unwind.h create mode 100644 include/asm-ia64/user.h create mode 100644 include/asm-ia64/ustack.h create mode 100644 include/asm-ia64/vga.h create mode 100644 include/asm-ia64/xor.h create mode 100644 include/asm-m32r/a.out.h create mode 100644 include/asm-m32r/addrspace.h create mode 100644 include/asm-m32r/assembler.h create mode 100644 include/asm-m32r/atomic.h create mode 100644 include/asm-m32r/bitops.h create mode 100644 include/asm-m32r/bug.h create mode 100644 include/asm-m32r/bugs.h create mode 100644 include/asm-m32r/byteorder.h create mode 100644 include/asm-m32r/cache.h create mode 100644 include/asm-m32r/cachectl.h create mode 100644 include/asm-m32r/cacheflush.h create mode 100644 include/asm-m32r/checksum.h create mode 100644 include/asm-m32r/cputime.h create mode 100644 include/asm-m32r/current.h create mode 100644 include/asm-m32r/delay.h create mode 100644 include/asm-m32r/div64.h create mode 100644 include/asm-m32r/dma-mapping.h create mode 100644 include/asm-m32r/dma.h create mode 100644 include/asm-m32r/elf.h create mode 100644 include/asm-m32r/errno.h create mode 100644 include/asm-m32r/fcntl.h create mode 100644 include/asm-m32r/flat.h create mode 100644 include/asm-m32r/hardirq.h create mode 100644 include/asm-m32r/hdreg.h create mode 100644 include/asm-m32r/hw_irq.h create mode 100644 include/asm-m32r/ide.h create mode 100644 include/asm-m32r/io.h create mode 100644 include/asm-m32r/ioctl.h create mode 100644 include/asm-m32r/ioctls.h create mode 100644 include/asm-m32r/ipc.h create mode 100644 include/asm-m32r/ipcbuf.h create mode 100644 include/asm-m32r/irq.h create mode 100644 include/asm-m32r/kmap_types.h create mode 100644 include/asm-m32r/linkage.h create mode 100644 include/asm-m32r/local.h create mode 100644 include/asm-m32r/m32102.h create mode 100644 include/asm-m32r/m32102peri.h create mode 100644 include/asm-m32r/m32700ut/m32700ut_lan.h create mode 100644 include/asm-m32r/m32700ut/m32700ut_lcd.h create mode 100644 include/asm-m32r/m32700ut/m32700ut_pld.h create mode 100644 include/asm-m32r/m32r.h create mode 100644 include/asm-m32r/m32r_mp_fpga.h create mode 100644 include/asm-m32r/mappi2/mappi2_pld.h create mode 100644 include/asm-m32r/mc146818rtc.h create mode 100644 include/asm-m32r/mman.h create mode 100644 include/asm-m32r/mmu.h create mode 100644 include/asm-m32r/mmu_context.h create mode 100644 include/asm-m32r/mmzone.h create mode 100644 include/asm-m32r/module.h create mode 100644 include/asm-m32r/msgbuf.h create mode 100644 include/asm-m32r/namei.h create mode 100644 include/asm-m32r/numnodes.h create mode 100644 include/asm-m32r/opsput/opsput_lan.h create mode 100644 include/asm-m32r/opsput/opsput_lcd.h create mode 100644 include/asm-m32r/opsput/opsput_pld.h create mode 100644 include/asm-m32r/page.h create mode 100644 include/asm-m32r/param.h create mode 100644 include/asm-m32r/pci.h create mode 100644 include/asm-m32r/percpu.h create mode 100644 include/asm-m32r/pgalloc.h create mode 100644 include/asm-m32r/pgtable-2level.h create mode 100644 include/asm-m32r/pgtable.h create mode 100644 include/asm-m32r/poll.h create mode 100644 include/asm-m32r/posix_types.h create mode 100644 include/asm-m32r/processor.h create mode 100644 include/asm-m32r/ptrace.h create mode 100644 include/asm-m32r/resource.h create mode 100644 include/asm-m32r/rtc.h create mode 100644 include/asm-m32r/scatterlist.h create mode 100644 include/asm-m32r/sections.h create mode 100644 include/asm-m32r/segment.h create mode 100644 include/asm-m32r/semaphore.h create mode 100644 include/asm-m32r/sembuf.h create mode 100644 include/asm-m32r/serial.h create mode 100644 include/asm-m32r/setup.h create mode 100644 include/asm-m32r/shmbuf.h create mode 100644 include/asm-m32r/shmparam.h create mode 100644 include/asm-m32r/sigcontext.h create mode 100644 include/asm-m32r/siginfo.h create mode 100644 include/asm-m32r/signal.h create mode 100644 include/asm-m32r/smp.h create mode 100644 include/asm-m32r/socket.h create mode 100644 include/asm-m32r/sockios.h create mode 100644 include/asm-m32r/spinlock.h create mode 100644 include/asm-m32r/stat.h create mode 100644 include/asm-m32r/statfs.h create mode 100644 include/asm-m32r/string.h create mode 100644 include/asm-m32r/syscall.h create mode 100644 include/asm-m32r/system.h create mode 100644 include/asm-m32r/termbits.h create mode 100644 include/asm-m32r/termios.h create mode 100644 include/asm-m32r/thread_info.h create mode 100644 include/asm-m32r/timex.h create mode 100644 include/asm-m32r/tlb.h create mode 100644 include/asm-m32r/tlbflush.h create mode 100644 include/asm-m32r/topology.h create mode 100644 include/asm-m32r/types.h create mode 100644 include/asm-m32r/uaccess.h create mode 100644 include/asm-m32r/ucontext.h create mode 100644 include/asm-m32r/unaligned.h create mode 100644 include/asm-m32r/unistd.h create mode 100644 include/asm-m32r/user.h create mode 100644 include/asm-m32r/vga.h create mode 100644 include/asm-m32r/xor.h create mode 100644 include/asm-m68k/a.out.h create mode 100644 include/asm-m68k/adb.h create mode 100644 include/asm-m68k/adb_iop.h create mode 100644 include/asm-m68k/amigahw.h create mode 100644 include/asm-m68k/amigaints.h create mode 100644 include/asm-m68k/amigayle.h create mode 100644 include/asm-m68k/amipcmcia.h create mode 100644 include/asm-m68k/apollodma.h create mode 100644 include/asm-m68k/apollohw.h create mode 100644 include/asm-m68k/atafd.h create mode 100644 include/asm-m68k/atafdreg.h create mode 100644 include/asm-m68k/atari_SLM.h create mode 100644 include/asm-m68k/atari_acsi.h create mode 100644 include/asm-m68k/atari_joystick.h create mode 100644 include/asm-m68k/atari_stdma.h create mode 100644 include/asm-m68k/atari_stram.h create mode 100644 include/asm-m68k/atarihw.h create mode 100644 include/asm-m68k/atariints.h create mode 100644 include/asm-m68k/atarikb.h create mode 100644 include/asm-m68k/atomic.h create mode 100644 include/asm-m68k/bitops.h create mode 100644 include/asm-m68k/blinken.h create mode 100644 include/asm-m68k/bootinfo.h create mode 100644 include/asm-m68k/bug.h create mode 100644 include/asm-m68k/bugs.h create mode 100644 include/asm-m68k/bvme6000hw.h create mode 100644 include/asm-m68k/byteorder.h create mode 100644 include/asm-m68k/cache.h create mode 100644 include/asm-m68k/cachectl.h create mode 100644 include/asm-m68k/cacheflush.h create mode 100644 include/asm-m68k/checksum.h create mode 100644 include/asm-m68k/contregs.h create mode 100644 include/asm-m68k/cputime.h create mode 100644 include/asm-m68k/current.h create mode 100644 include/asm-m68k/delay.h create mode 100644 include/asm-m68k/div64.h create mode 100644 include/asm-m68k/dma-mapping.h create mode 100644 include/asm-m68k/dma.h create mode 100644 include/asm-m68k/dsp56k.h create mode 100644 include/asm-m68k/dvma.h create mode 100644 include/asm-m68k/elf.h create mode 100644 include/asm-m68k/entry.h create mode 100644 include/asm-m68k/errno.h create mode 100644 include/asm-m68k/fbio.h create mode 100644 include/asm-m68k/fcntl.h create mode 100644 include/asm-m68k/floppy.h create mode 100644 include/asm-m68k/fpu.h create mode 100644 include/asm-m68k/hardirq.h create mode 100644 include/asm-m68k/hdreg.h create mode 100644 include/asm-m68k/hp300hw.h create mode 100644 include/asm-m68k/hw_irq.h create mode 100644 include/asm-m68k/hwtest.h create mode 100644 include/asm-m68k/ide.h create mode 100644 include/asm-m68k/idprom.h create mode 100644 include/asm-m68k/intersil.h create mode 100644 include/asm-m68k/io.h create mode 100644 include/asm-m68k/ioctl.h create mode 100644 include/asm-m68k/ioctls.h create mode 100644 include/asm-m68k/ipc.h create mode 100644 include/asm-m68k/ipcbuf.h create mode 100644 include/asm-m68k/irq.h create mode 100644 include/asm-m68k/kbio.h create mode 100644 include/asm-m68k/kmap_types.h create mode 100644 include/asm-m68k/linkage.h create mode 100644 include/asm-m68k/local.h create mode 100644 include/asm-m68k/mac_asc.h create mode 100644 include/asm-m68k/mac_baboon.h create mode 100644 include/asm-m68k/mac_iop.h create mode 100644 include/asm-m68k/mac_mouse.h create mode 100644 include/asm-m68k/mac_oss.h create mode 100644 include/asm-m68k/mac_psc.h create mode 100644 include/asm-m68k/mac_via.h create mode 100644 include/asm-m68k/machdep.h create mode 100644 include/asm-m68k/machines.h create mode 100644 include/asm-m68k/machw.h create mode 100644 include/asm-m68k/macintosh.h create mode 100644 include/asm-m68k/macints.h create mode 100644 include/asm-m68k/math-emu.h create mode 100644 include/asm-m68k/mc146818rtc.h create mode 100644 include/asm-m68k/md.h create mode 100644 include/asm-m68k/mman.h create mode 100644 include/asm-m68k/mmu.h create mode 100644 include/asm-m68k/mmu_context.h create mode 100644 include/asm-m68k/module.h create mode 100644 include/asm-m68k/motorola_pgalloc.h create mode 100644 include/asm-m68k/motorola_pgtable.h create mode 100644 include/asm-m68k/movs.h create mode 100644 include/asm-m68k/msgbuf.h create mode 100644 include/asm-m68k/mvme147hw.h create mode 100644 include/asm-m68k/mvme16xhw.h create mode 100644 include/asm-m68k/namei.h create mode 100644 include/asm-m68k/nubus.h create mode 100644 include/asm-m68k/openprom.h create mode 100644 include/asm-m68k/oplib.h create mode 100644 include/asm-m68k/page.h create mode 100644 include/asm-m68k/page_offset.h create mode 100644 include/asm-m68k/param.h create mode 100644 include/asm-m68k/parport.h create mode 100644 include/asm-m68k/pci.h create mode 100644 include/asm-m68k/percpu.h create mode 100644 include/asm-m68k/pgalloc.h create mode 100644 include/asm-m68k/pgtable.h create mode 100644 include/asm-m68k/poll.h create mode 100644 include/asm-m68k/posix_types.h create mode 100644 include/asm-m68k/processor.h create mode 100644 include/asm-m68k/ptrace.h create mode 100644 include/asm-m68k/q40_master.h create mode 100644 include/asm-m68k/q40ints.h create mode 100644 include/asm-m68k/raw_io.h create mode 100644 include/asm-m68k/resource.h create mode 100644 include/asm-m68k/rtc.h create mode 100644 include/asm-m68k/sbus.h create mode 100644 include/asm-m68k/scatterlist.h create mode 100644 include/asm-m68k/sections.h create mode 100644 include/asm-m68k/segment.h create mode 100644 include/asm-m68k/semaphore-helper.h create mode 100644 include/asm-m68k/semaphore.h create mode 100644 include/asm-m68k/sembuf.h create mode 100644 include/asm-m68k/serial.h create mode 100644 include/asm-m68k/setup.h create mode 100644 include/asm-m68k/shm.h create mode 100644 include/asm-m68k/shmbuf.h create mode 100644 include/asm-m68k/shmparam.h create mode 100644 include/asm-m68k/sigcontext.h create mode 100644 include/asm-m68k/siginfo.h create mode 100644 include/asm-m68k/signal.h create mode 100644 include/asm-m68k/socket.h create mode 100644 include/asm-m68k/sockios.h create mode 100644 include/asm-m68k/spinlock.h create mode 100644 include/asm-m68k/stat.h create mode 100644 include/asm-m68k/statfs.h create mode 100644 include/asm-m68k/string.h create mode 100644 include/asm-m68k/sun3-head.h create mode 100644 include/asm-m68k/sun3_pgalloc.h create mode 100644 include/asm-m68k/sun3_pgtable.h create mode 100644 include/asm-m68k/sun3ints.h create mode 100644 include/asm-m68k/sun3mmu.h create mode 100644 include/asm-m68k/sun3x.h create mode 100644 include/asm-m68k/sun3xflop.h create mode 100644 include/asm-m68k/sun3xprom.h create mode 100644 include/asm-m68k/suspend.h create mode 100644 include/asm-m68k/swim_iop.h create mode 100644 include/asm-m68k/system.h create mode 100644 include/asm-m68k/termbits.h create mode 100644 include/asm-m68k/termios.h create mode 100644 include/asm-m68k/thread_info.h create mode 100644 include/asm-m68k/timex.h create mode 100644 include/asm-m68k/tlb.h create mode 100644 include/asm-m68k/tlbflush.h create mode 100644 include/asm-m68k/topology.h create mode 100644 include/asm-m68k/traps.h create mode 100644 include/asm-m68k/types.h create mode 100644 include/asm-m68k/uaccess.h create mode 100644 include/asm-m68k/ucontext.h create mode 100644 include/asm-m68k/unaligned.h create mode 100644 include/asm-m68k/unistd.h create mode 100644 include/asm-m68k/user.h create mode 100644 include/asm-m68k/virtconvert.h create mode 100644 include/asm-m68k/vuid_event.h create mode 100644 include/asm-m68k/xor.h create mode 100644 include/asm-m68k/zorro.h create mode 100644 include/asm-m68knommu/MC68328.h create mode 100644 include/asm-m68knommu/MC68332.h create mode 100644 include/asm-m68knommu/MC68EZ328.h create mode 100644 include/asm-m68knommu/MC68VZ328.h create mode 100644 include/asm-m68knommu/a.out.h create mode 100644 include/asm-m68knommu/anchor.h create mode 100644 include/asm-m68knommu/asm-offsets.h create mode 100644 include/asm-m68knommu/atomic.h create mode 100644 include/asm-m68knommu/bitops.h create mode 100644 include/asm-m68knommu/bootinfo.h create mode 100644 include/asm-m68knommu/bootstd.h create mode 100644 include/asm-m68knommu/bug.h create mode 100644 include/asm-m68knommu/bugs.h create mode 100644 include/asm-m68knommu/byteorder.h create mode 100644 include/asm-m68knommu/cache.h create mode 100644 include/asm-m68knommu/cachectl.h create mode 100644 include/asm-m68knommu/cacheflush.h create mode 100644 include/asm-m68knommu/checksum.h create mode 100644 include/asm-m68knommu/coldfire.h create mode 100644 include/asm-m68knommu/commproc.h create mode 100644 include/asm-m68knommu/cputime.h create mode 100644 include/asm-m68knommu/current.h create mode 100644 include/asm-m68knommu/dbg.h create mode 100644 include/asm-m68knommu/delay.h create mode 100644 include/asm-m68knommu/div64.h create mode 100644 include/asm-m68knommu/dma-mapping.h create mode 100644 include/asm-m68knommu/dma.h create mode 100644 include/asm-m68knommu/elf.h create mode 100644 include/asm-m68knommu/elia.h create mode 100644 include/asm-m68knommu/entry.h create mode 100644 include/asm-m68knommu/errno.h create mode 100644 include/asm-m68knommu/fcntl.h create mode 100644 include/asm-m68knommu/flat.h create mode 100644 include/asm-m68knommu/fpu.h create mode 100644 include/asm-m68knommu/hardirq.h create mode 100644 include/asm-m68knommu/hdreg.h create mode 100644 include/asm-m68knommu/hwtest.h create mode 100644 include/asm-m68knommu/ide.h create mode 100644 include/asm-m68knommu/io.h create mode 100644 include/asm-m68knommu/ioctl.h create mode 100644 include/asm-m68knommu/ioctls.h create mode 100644 include/asm-m68knommu/ipc.h create mode 100644 include/asm-m68knommu/ipcbuf.h create mode 100644 include/asm-m68knommu/irq.h create mode 100644 include/asm-m68knommu/kmap_types.h create mode 100644 include/asm-m68knommu/linkage.h create mode 100644 include/asm-m68knommu/local.h create mode 100644 include/asm-m68knommu/m5206sim.h create mode 100644 include/asm-m68knommu/m5249sim.h create mode 100644 include/asm-m68knommu/m5272sim.h create mode 100644 include/asm-m68knommu/m527xsim.h create mode 100644 include/asm-m68knommu/m528xsim.h create mode 100644 include/asm-m68knommu/m5307sim.h create mode 100644 include/asm-m68knommu/m5407sim.h create mode 100644 include/asm-m68knommu/m68360.h create mode 100644 include/asm-m68knommu/m68360_enet.h create mode 100644 include/asm-m68knommu/m68360_pram.h create mode 100644 include/asm-m68knommu/m68360_quicc.h create mode 100644 include/asm-m68knommu/m68360_regs.h create mode 100644 include/asm-m68knommu/machdep.h create mode 100644 include/asm-m68knommu/math-emu.h create mode 100644 include/asm-m68knommu/mc146818rtc.h create mode 100644 include/asm-m68knommu/mcfcache.h create mode 100644 include/asm-m68knommu/mcfdma.h create mode 100644 include/asm-m68knommu/mcfmbus.h create mode 100644 include/asm-m68knommu/mcfne.h create mode 100644 include/asm-m68knommu/mcfpci.h create mode 100644 include/asm-m68knommu/mcfpit.h create mode 100644 include/asm-m68knommu/mcfsim.h create mode 100644 include/asm-m68knommu/mcfsmc.h create mode 100644 include/asm-m68knommu/mcftimer.h create mode 100644 include/asm-m68knommu/mcfuart.h create mode 100644 include/asm-m68knommu/mcfwdebug.h create mode 100644 include/asm-m68knommu/md.h create mode 100644 include/asm-m68knommu/mman.h create mode 100644 include/asm-m68knommu/mmu.h create mode 100644 include/asm-m68knommu/mmu_context.h create mode 100644 include/asm-m68knommu/module.h create mode 100644 include/asm-m68knommu/movs.h create mode 100644 include/asm-m68knommu/msgbuf.h create mode 100644 include/asm-m68knommu/namei.h create mode 100644 include/asm-m68knommu/nettel.h create mode 100644 include/asm-m68knommu/openprom.h create mode 100644 include/asm-m68knommu/oplib.h create mode 100644 include/asm-m68knommu/page.h create mode 100644 include/asm-m68knommu/page_offset.h create mode 100644 include/asm-m68knommu/param.h create mode 100644 include/asm-m68knommu/pci.h create mode 100644 include/asm-m68knommu/percpu.h create mode 100644 include/asm-m68knommu/pgalloc.h create mode 100644 include/asm-m68knommu/pgtable.h create mode 100644 include/asm-m68knommu/poll.h create mode 100644 include/asm-m68knommu/posix_types.h create mode 100644 include/asm-m68knommu/processor.h create mode 100644 include/asm-m68knommu/ptrace.h create mode 100644 include/asm-m68knommu/quicc_simple.h create mode 100644 include/asm-m68knommu/resource.h create mode 100644 include/asm-m68knommu/scatterlist.h create mode 100644 include/asm-m68knommu/sections.h create mode 100644 include/asm-m68knommu/segment.h create mode 100644 include/asm-m68knommu/semaphore-helper.h create mode 100644 include/asm-m68knommu/semaphore.h create mode 100644 include/asm-m68knommu/sembuf.h create mode 100644 include/asm-m68knommu/setup.h create mode 100644 include/asm-m68knommu/shm.h create mode 100644 include/asm-m68knommu/shmbuf.h create mode 100644 include/asm-m68knommu/shmparam.h create mode 100644 include/asm-m68knommu/sigcontext.h create mode 100644 include/asm-m68knommu/siginfo.h create mode 100644 include/asm-m68knommu/signal.h create mode 100644 include/asm-m68knommu/smp.h create mode 100644 include/asm-m68knommu/socket.h create mode 100644 include/asm-m68knommu/sockios.h create mode 100644 include/asm-m68knommu/spinlock.h create mode 100644 include/asm-m68knommu/stat.h create mode 100644 include/asm-m68knommu/statfs.h create mode 100644 include/asm-m68knommu/string.h create mode 100644 include/asm-m68knommu/system.h create mode 100644 include/asm-m68knommu/termbits.h create mode 100644 include/asm-m68knommu/termios.h create mode 100644 include/asm-m68knommu/thread_info.h create mode 100644 include/asm-m68knommu/timex.h create mode 100644 include/asm-m68knommu/tlb.h create mode 100644 include/asm-m68knommu/tlbflush.h create mode 100644 include/asm-m68knommu/topology.h create mode 100644 include/asm-m68knommu/traps.h create mode 100644 include/asm-m68knommu/types.h create mode 100644 include/asm-m68knommu/uaccess.h create mode 100644 include/asm-m68knommu/ucontext.h create mode 100644 include/asm-m68knommu/unaligned.h create mode 100644 include/asm-m68knommu/unistd.h create mode 100644 include/asm-m68knommu/user.h create mode 100644 include/asm-mips/8253pit.h create mode 100644 include/asm-mips/a.out.h create mode 100644 include/asm-mips/addrspace.h create mode 100644 include/asm-mips/arc/hinv.h create mode 100644 include/asm-mips/arc/types.h create mode 100644 include/asm-mips/asm.h create mode 100644 include/asm-mips/asmmacro-32.h create mode 100644 include/asm-mips/asmmacro-64.h create mode 100644 include/asm-mips/asmmacro.h create mode 100644 include/asm-mips/atomic.h create mode 100644 include/asm-mips/bcache.h create mode 100644 include/asm-mips/bitops.h create mode 100644 include/asm-mips/bootinfo.h create mode 100644 include/asm-mips/branch.h create mode 100644 include/asm-mips/break.h create mode 100644 include/asm-mips/bug.h create mode 100644 include/asm-mips/bugs.h create mode 100644 include/asm-mips/byteorder.h create mode 100644 include/asm-mips/cache.h create mode 100644 include/asm-mips/cachectl.h create mode 100644 include/asm-mips/cacheflush.h create mode 100644 include/asm-mips/cacheops.h create mode 100644 include/asm-mips/checksum.h create mode 100644 include/asm-mips/cobalt/cobalt.h create mode 100644 include/asm-mips/compat.h create mode 100644 include/asm-mips/compiler.h create mode 100644 include/asm-mips/cpu-features.h create mode 100644 include/asm-mips/cpu-info.h create mode 100644 include/asm-mips/cpu.h create mode 100644 include/asm-mips/cputime.h create mode 100644 include/asm-mips/current.h create mode 100644 include/asm-mips/ddb5074.h create mode 100644 include/asm-mips/ddb5xxx/ddb5074.h create mode 100644 include/asm-mips/ddb5xxx/ddb5476.h create mode 100644 include/asm-mips/ddb5xxx/ddb5477.h create mode 100644 include/asm-mips/ddb5xxx/ddb5xxx.h create mode 100644 include/asm-mips/debug.h create mode 100644 include/asm-mips/dec/ecc.h create mode 100644 include/asm-mips/dec/interrupts.h create mode 100644 include/asm-mips/dec/ioasic.h create mode 100644 include/asm-mips/dec/ioasic_addrs.h create mode 100644 include/asm-mips/dec/ioasic_ints.h create mode 100644 include/asm-mips/dec/kn01.h create mode 100644 include/asm-mips/dec/kn02.h create mode 100644 include/asm-mips/dec/kn02ba.h create mode 100644 include/asm-mips/dec/kn02ca.h create mode 100644 include/asm-mips/dec/kn02xa.h create mode 100644 include/asm-mips/dec/kn03.h create mode 100644 include/asm-mips/dec/kn05.h create mode 100644 include/asm-mips/dec/kn230.h create mode 100644 include/asm-mips/dec/machtype.h create mode 100644 include/asm-mips/dec/prom.h create mode 100644 include/asm-mips/dec/serial.h create mode 100644 include/asm-mips/dec/tc.h create mode 100644 include/asm-mips/dec/tcinfo.h create mode 100644 include/asm-mips/dec/tcmodule.h create mode 100644 include/asm-mips/delay.h create mode 100644 include/asm-mips/div64.h create mode 100644 include/asm-mips/dma-mapping.h create mode 100644 include/asm-mips/dma.h create mode 100644 include/asm-mips/ds1286.h create mode 100644 include/asm-mips/elf.h create mode 100644 include/asm-mips/errno.h create mode 100644 include/asm-mips/fcntl.h create mode 100644 include/asm-mips/fixmap.h create mode 100644 include/asm-mips/floppy.h create mode 100644 include/asm-mips/fpregdef.h create mode 100644 include/asm-mips/fpu.h create mode 100644 include/asm-mips/fpu_emulator.h create mode 100644 include/asm-mips/galileo-boards/ev96100.h create mode 100644 include/asm-mips/galileo-boards/ev96100int.h create mode 100644 include/asm-mips/galileo-boards/gt96100.h create mode 100644 include/asm-mips/gcc/sgidefs.h create mode 100644 include/asm-mips/gdb-stub.h create mode 100644 include/asm-mips/gfx.h create mode 100644 include/asm-mips/gt64120.h create mode 100644 include/asm-mips/gt64240.h create mode 100644 include/asm-mips/hardirq.h create mode 100644 include/asm-mips/hazards.h create mode 100644 include/asm-mips/hdreg.h create mode 100644 include/asm-mips/highmem.h create mode 100644 include/asm-mips/hp-lj/asic.h create mode 100644 include/asm-mips/hw_irq.h create mode 100644 include/asm-mips/i8259.h create mode 100644 include/asm-mips/ide.h create mode 100644 include/asm-mips/inst.h create mode 100644 include/asm-mips/interrupt.h create mode 100644 include/asm-mips/inventory.h create mode 100644 include/asm-mips/io.h create mode 100644 include/asm-mips/ioctl.h create mode 100644 include/asm-mips/ioctls.h create mode 100644 include/asm-mips/ip32/crime.h create mode 100644 include/asm-mips/ip32/ip32_ints.h create mode 100644 include/asm-mips/ip32/mace.h create mode 100644 include/asm-mips/ip32/machine.h create mode 100644 include/asm-mips/ipc.h create mode 100644 include/asm-mips/ipcbuf.h create mode 100644 include/asm-mips/irq.h create mode 100644 include/asm-mips/irq_cpu.h create mode 100644 include/asm-mips/isadep.h create mode 100644 include/asm-mips/it8172/it8172.h create mode 100644 include/asm-mips/it8172/it8172_cir.h create mode 100644 include/asm-mips/it8172/it8172_dbg.h create mode 100644 include/asm-mips/it8172/it8172_int.h create mode 100644 include/asm-mips/it8172/it8172_pci.h create mode 100644 include/asm-mips/it8712.h create mode 100644 include/asm-mips/jazz.h create mode 100644 include/asm-mips/jazzdma.h create mode 100644 include/asm-mips/jmr3927/irq.h create mode 100644 include/asm-mips/jmr3927/jmr3927.h create mode 100644 include/asm-mips/jmr3927/tx3927.h create mode 100644 include/asm-mips/jmr3927/txx927.h create mode 100644 include/asm-mips/kmap_types.h create mode 100644 include/asm-mips/lasat/ds1603.h create mode 100644 include/asm-mips/lasat/eeprom.h create mode 100644 include/asm-mips/lasat/head.h create mode 100644 include/asm-mips/lasat/lasat.h create mode 100644 include/asm-mips/lasat/lasatint.h create mode 100644 include/asm-mips/lasat/picvue.h create mode 100644 include/asm-mips/lasat/serial.h create mode 100644 include/asm-mips/linkage.h create mode 100644 include/asm-mips/local.h create mode 100644 include/asm-mips/m48t35.h create mode 100644 include/asm-mips/m48t37.h create mode 100644 include/asm-mips/mach-atlas/mc146818rtc.h create mode 100644 include/asm-mips/mach-au1x00/au1000.h create mode 100644 include/asm-mips/mach-au1x00/au1000_dma.h create mode 100644 include/asm-mips/mach-au1x00/au1000_gpio.h create mode 100644 include/asm-mips/mach-au1x00/au1000_usbdev.h create mode 100644 include/asm-mips/mach-au1x00/au1100_mmc.h create mode 100644 include/asm-mips/mach-au1x00/au1xxx_dbdma.h create mode 100644 include/asm-mips/mach-au1x00/au1xxx_psc.h create mode 100644 include/asm-mips/mach-au1x00/timex.h create mode 100644 include/asm-mips/mach-db1x00/db1x00.h create mode 100644 include/asm-mips/mach-ddb5074/mc146818rtc.h create mode 100644 include/asm-mips/mach-dec/mc146818rtc.h create mode 100644 include/asm-mips/mach-dec/param.h create mode 100644 include/asm-mips/mach-ev64120/mach-gt64120.h create mode 100644 include/asm-mips/mach-ev96100/mach-gt64120.h create mode 100644 include/asm-mips/mach-generic/cpu-feature-overrides.h create mode 100644 include/asm-mips/mach-generic/floppy.h create mode 100644 include/asm-mips/mach-generic/ide.h create mode 100644 include/asm-mips/mach-generic/irq.h create mode 100644 include/asm-mips/mach-generic/mangle-port.h create mode 100644 include/asm-mips/mach-generic/mc146818rtc.h create mode 100644 include/asm-mips/mach-generic/param.h create mode 100644 include/asm-mips/mach-generic/spaces.h create mode 100644 include/asm-mips/mach-generic/timex.h create mode 100644 include/asm-mips/mach-generic/topology.h create mode 100644 include/asm-mips/mach-ip22/cpu-feature-overrides.h create mode 100644 include/asm-mips/mach-ip22/ds1286.h create mode 100644 include/asm-mips/mach-ip22/spaces.h create mode 100644 include/asm-mips/mach-ip27/cpu-feature-overrides.h create mode 100644 include/asm-mips/mach-ip27/irq.h create mode 100644 include/asm-mips/mach-ip27/mangle-port.h create mode 100644 include/asm-mips/mach-ip27/mmzone.h create mode 100644 include/asm-mips/mach-ip27/spaces.h create mode 100644 include/asm-mips/mach-ip27/topology.h create mode 100644 include/asm-mips/mach-ip32/cpu-feature-overrides.h create mode 100644 include/asm-mips/mach-ip32/mangle-port.h create mode 100644 include/asm-mips/mach-ip32/mc146818rtc.h create mode 100644 include/asm-mips/mach-ip32/spaces.h create mode 100644 include/asm-mips/mach-ja/cpu-feature-overrides.h create mode 100644 include/asm-mips/mach-ja/spaces.h create mode 100644 include/asm-mips/mach-jazz/floppy.h create mode 100644 include/asm-mips/mach-jazz/mc146818rtc.h create mode 100644 include/asm-mips/mach-jazz/param.h create mode 100644 include/asm-mips/mach-jazz/timex.h create mode 100644 include/asm-mips/mach-jmr3927/asm/ds1742.h create mode 100644 include/asm-mips/mach-lasat/mach-gt64120.h create mode 100644 include/asm-mips/mach-mips/cpu-feature-overrides.h create mode 100644 include/asm-mips/mach-mips/mach-gt64120.h create mode 100644 include/asm-mips/mach-mips/mc146818rtc.h create mode 100644 include/asm-mips/mach-ocelot/mach-gt64120.h create mode 100644 include/asm-mips/mach-ocelot3/cpu-feature-overrides.h create mode 100644 include/asm-mips/mach-pb1x00/mc146818rtc.h create mode 100644 include/asm-mips/mach-pb1x00/pb1000.h create mode 100644 include/asm-mips/mach-pb1x00/pb1100.h create mode 100644 include/asm-mips/mach-pb1x00/pb1500.h create mode 100644 include/asm-mips/mach-pb1x00/pb1550.h create mode 100644 include/asm-mips/mach-rm200/cpu-feature-overrides.h create mode 100644 include/asm-mips/mach-rm200/mc146818rtc.h create mode 100644 include/asm-mips/mach-sibyte/cpu-feature-overrides.h create mode 100644 include/asm-mips/mach-vr41xx/timex.h create mode 100644 include/asm-mips/mach-yosemite/cpu-feature-overrides.h create mode 100644 include/asm-mips/marvell.h create mode 100644 include/asm-mips/mc146818-time.h create mode 100644 include/asm-mips/mc146818rtc.h create mode 100644 include/asm-mips/mips-boards/atlas.h create mode 100644 include/asm-mips/mips-boards/atlasint.h create mode 100644 include/asm-mips/mips-boards/bonito64.h create mode 100644 include/asm-mips/mips-boards/generic.h create mode 100644 include/asm-mips/mips-boards/malta.h create mode 100644 include/asm-mips/mips-boards/maltaint.h create mode 100644 include/asm-mips/mips-boards/msc01_pci.h create mode 100644 include/asm-mips/mips-boards/piix4.h create mode 100644 include/asm-mips/mips-boards/prom.h create mode 100644 include/asm-mips/mips-boards/saa9730_uart.h create mode 100644 include/asm-mips/mips-boards/sead.h create mode 100644 include/asm-mips/mips-boards/seadint.h create mode 100644 include/asm-mips/mipsprom.h create mode 100644 include/asm-mips/mipsregs.h create mode 100644 include/asm-mips/mman.h create mode 100644 include/asm-mips/mmu.h create mode 100644 include/asm-mips/mmu_context.h create mode 100644 include/asm-mips/mmzone.h create mode 100644 include/asm-mips/module.h create mode 100644 include/asm-mips/msc01_ic.h create mode 100644 include/asm-mips/msgbuf.h create mode 100644 include/asm-mips/namei.h create mode 100644 include/asm-mips/nile4.h create mode 100644 include/asm-mips/numnodes.h create mode 100644 include/asm-mips/paccess.h create mode 100644 include/asm-mips/page.h create mode 100644 include/asm-mips/param.h create mode 100644 include/asm-mips/parport.h create mode 100644 include/asm-mips/pci.h create mode 100644 include/asm-mips/pci/bridge.h create mode 100644 include/asm-mips/percpu.h create mode 100644 include/asm-mips/pgalloc.h create mode 100644 include/asm-mips/pgtable-32.h create mode 100644 include/asm-mips/pgtable-64.h create mode 100644 include/asm-mips/pgtable-bits.h create mode 100644 include/asm-mips/pgtable.h create mode 100644 include/asm-mips/pmon.h create mode 100644 include/asm-mips/poll.h create mode 100644 include/asm-mips/posix_types.h create mode 100644 include/asm-mips/prctl.h create mode 100644 include/asm-mips/prefetch.h create mode 100644 include/asm-mips/processor.h create mode 100644 include/asm-mips/ptrace.h create mode 100644 include/asm-mips/r4kcache.h create mode 100644 include/asm-mips/reboot.h create mode 100644 include/asm-mips/reg.h create mode 100644 include/asm-mips/regdef.h create mode 100644 include/asm-mips/resource.h create mode 100644 include/asm-mips/riscos-syscall.h create mode 100644 include/asm-mips/rtc.h create mode 100644 include/asm-mips/scatterlist.h create mode 100644 include/asm-mips/sections.h create mode 100644 include/asm-mips/segment.h create mode 100644 include/asm-mips/semaphore.h create mode 100644 include/asm-mips/sembuf.h create mode 100644 include/asm-mips/serial.h create mode 100644 include/asm-mips/setup.h create mode 100644 include/asm-mips/sgi/gio.h create mode 100644 include/asm-mips/sgi/hpc3.h create mode 100644 include/asm-mips/sgi/ioc.h create mode 100644 include/asm-mips/sgi/ip22.h create mode 100644 include/asm-mips/sgi/mc.h create mode 100644 include/asm-mips/sgi/pi1.h create mode 100644 include/asm-mips/sgi/sgi.h create mode 100644 include/asm-mips/sgialib.h create mode 100644 include/asm-mips/sgiarcs.h create mode 100644 include/asm-mips/sgidefs.h create mode 100644 include/asm-mips/shmbuf.h create mode 100644 include/asm-mips/shmparam.h create mode 100644 include/asm-mips/sibyte/board.h create mode 100644 include/asm-mips/sibyte/carmel.h create mode 100644 include/asm-mips/sibyte/sb1250.h create mode 100644 include/asm-mips/sibyte/sb1250_defs.h create mode 100644 include/asm-mips/sibyte/sb1250_dma.h create mode 100644 include/asm-mips/sibyte/sb1250_genbus.h create mode 100644 include/asm-mips/sibyte/sb1250_int.h create mode 100644 include/asm-mips/sibyte/sb1250_l2c.h create mode 100644 include/asm-mips/sibyte/sb1250_ldt.h create mode 100644 include/asm-mips/sibyte/sb1250_mac.h create mode 100644 include/asm-mips/sibyte/sb1250_mc.h create mode 100644 include/asm-mips/sibyte/sb1250_regs.h create mode 100644 include/asm-mips/sibyte/sb1250_scd.h create mode 100644 include/asm-mips/sibyte/sb1250_smbus.h create mode 100644 include/asm-mips/sibyte/sb1250_syncser.h create mode 100644 include/asm-mips/sibyte/sb1250_uart.h create mode 100644 include/asm-mips/sibyte/sentosa.h create mode 100644 include/asm-mips/sibyte/swarm.h create mode 100644 include/asm-mips/sibyte/trace_prof.h create mode 100644 include/asm-mips/sigcontext.h create mode 100644 include/asm-mips/siginfo.h create mode 100644 include/asm-mips/signal.h create mode 100644 include/asm-mips/sim.h create mode 100644 include/asm-mips/smp.h create mode 100644 include/asm-mips/sn/addrs.h create mode 100644 include/asm-mips/sn/agent.h create mode 100644 include/asm-mips/sn/arch.h create mode 100644 include/asm-mips/sn/gda.h create mode 100644 include/asm-mips/sn/hub.h create mode 100644 include/asm-mips/sn/intr.h create mode 100644 include/asm-mips/sn/io.h create mode 100644 include/asm-mips/sn/ioc3.h create mode 100644 include/asm-mips/sn/klconfig.h create mode 100644 include/asm-mips/sn/kldir.h create mode 100644 include/asm-mips/sn/klkernvars.h create mode 100644 include/asm-mips/sn/launch.h create mode 100644 include/asm-mips/sn/mapped_kernel.h create mode 100644 include/asm-mips/sn/nmi.h create mode 100644 include/asm-mips/sn/sn0/addrs.h create mode 100644 include/asm-mips/sn/sn0/arch.h create mode 100644 include/asm-mips/sn/sn0/hub.h create mode 100644 include/asm-mips/sn/sn0/hubio.h create mode 100644 include/asm-mips/sn/sn0/hubmd.h create mode 100644 include/asm-mips/sn/sn0/hubni.h create mode 100644 include/asm-mips/sn/sn0/hubpi.h create mode 100644 include/asm-mips/sn/sn0/ip27.h create mode 100644 include/asm-mips/sn/sn0/sn0_fru.h create mode 100644 include/asm-mips/sn/sn_private.h create mode 100644 include/asm-mips/sn/types.h create mode 100644 include/asm-mips/sni.h create mode 100644 include/asm-mips/socket.h create mode 100644 include/asm-mips/sockios.h create mode 100644 include/asm-mips/spinlock.h create mode 100644 include/asm-mips/stackframe.h create mode 100644 include/asm-mips/stat.h create mode 100644 include/asm-mips/statfs.h create mode 100644 include/asm-mips/string.h create mode 100644 include/asm-mips/suspend.h create mode 100644 include/asm-mips/sysmips.h create mode 100644 include/asm-mips/system.h create mode 100644 include/asm-mips/termbits.h create mode 100644 include/asm-mips/termios.h create mode 100644 include/asm-mips/thread_info.h create mode 100644 include/asm-mips/time.h create mode 100644 include/asm-mips/timex.h create mode 100644 include/asm-mips/titan_dep.h create mode 100644 include/asm-mips/tlb.h create mode 100644 include/asm-mips/tlbdebug.h create mode 100644 include/asm-mips/tlbflush.h create mode 100644 include/asm-mips/topology.h create mode 100644 include/asm-mips/traps.h create mode 100644 include/asm-mips/tx3912.h create mode 100644 include/asm-mips/tx4927/smsc_fdc37m81x.h create mode 100644 include/asm-mips/tx4927/toshiba_rbtx4927.h create mode 100644 include/asm-mips/tx4927/tx4927.h create mode 100644 include/asm-mips/tx4927/tx4927_mips.h create mode 100644 include/asm-mips/tx4927/tx4927_pci.h create mode 100644 include/asm-mips/types.h create mode 100644 include/asm-mips/uaccess.h create mode 100644 include/asm-mips/ucontext.h create mode 100644 include/asm-mips/unaligned.h create mode 100644 include/asm-mips/unistd.h create mode 100644 include/asm-mips/user.h create mode 100644 include/asm-mips/vga.h create mode 100644 include/asm-mips/vr4181/irq.h create mode 100644 include/asm-mips/vr4181/vr4181.h create mode 100644 include/asm-mips/vr41xx/capcella.h create mode 100644 include/asm-mips/vr41xx/cmbvr4133.h create mode 100644 include/asm-mips/vr41xx/e55.h create mode 100644 include/asm-mips/vr41xx/mpc30x.h create mode 100644 include/asm-mips/vr41xx/siu.h create mode 100644 include/asm-mips/vr41xx/tb0219.h create mode 100644 include/asm-mips/vr41xx/tb0226.h create mode 100644 include/asm-mips/vr41xx/vr41xx.h create mode 100644 include/asm-mips/vr41xx/vrc4173.h create mode 100644 include/asm-mips/vr41xx/workpad.h create mode 100644 include/asm-mips/war.h create mode 100644 include/asm-mips/watch.h create mode 100644 include/asm-mips/wbflush.h create mode 100644 include/asm-mips/xor.h create mode 100644 include/asm-mips/xtalk/xtalk.h create mode 100644 include/asm-mips/xtalk/xwidget.h create mode 100644 include/asm-mips/xxs1500.h create mode 100644 include/asm-parisc/a.out.h create mode 100644 include/asm-parisc/asmregs.h create mode 100644 include/asm-parisc/assembly.h create mode 100644 include/asm-parisc/atomic.h create mode 100644 include/asm-parisc/bitops.h create mode 100644 include/asm-parisc/bug.h create mode 100644 include/asm-parisc/bugs.h create mode 100644 include/asm-parisc/byteorder.h create mode 100644 include/asm-parisc/cache.h create mode 100644 include/asm-parisc/cacheflush.h create mode 100644 include/asm-parisc/checksum.h create mode 100644 include/asm-parisc/compat.h create mode 100644 include/asm-parisc/compat_rt_sigframe.h create mode 100644 include/asm-parisc/compat_signal.h create mode 100644 include/asm-parisc/compat_ucontext.h create mode 100644 include/asm-parisc/cputime.h create mode 100644 include/asm-parisc/current.h create mode 100644 include/asm-parisc/delay.h create mode 100644 include/asm-parisc/div64.h create mode 100644 include/asm-parisc/dma-mapping.h create mode 100644 include/asm-parisc/dma.h create mode 100644 include/asm-parisc/eisa_bus.h create mode 100644 include/asm-parisc/eisa_eeprom.h create mode 100644 include/asm-parisc/elf.h create mode 100644 include/asm-parisc/errno.h create mode 100644 include/asm-parisc/fcntl.h create mode 100644 include/asm-parisc/fixmap.h create mode 100644 include/asm-parisc/floppy.h create mode 100644 include/asm-parisc/grfioctl.h create mode 100644 include/asm-parisc/hardirq.h create mode 100644 include/asm-parisc/hardware.h create mode 100644 include/asm-parisc/hdreg.h create mode 100644 include/asm-parisc/hw_irq.h create mode 100644 include/asm-parisc/ide.h create mode 100644 include/asm-parisc/io.h create mode 100644 include/asm-parisc/ioctl.h create mode 100644 include/asm-parisc/ioctls.h create mode 100644 include/asm-parisc/iosapic.h create mode 100644 include/asm-parisc/ipcbuf.h create mode 100644 include/asm-parisc/irq.h create mode 100644 include/asm-parisc/kmap_types.h create mode 100644 include/asm-parisc/led.h create mode 100644 include/asm-parisc/linkage.h create mode 100644 include/asm-parisc/local.h create mode 100644 include/asm-parisc/machdep.h create mode 100644 include/asm-parisc/mc146818rtc.h create mode 100644 include/asm-parisc/mman.h create mode 100644 include/asm-parisc/mmu.h create mode 100644 include/asm-parisc/mmu_context.h create mode 100644 include/asm-parisc/mmzone.h create mode 100644 include/asm-parisc/module.h create mode 100644 include/asm-parisc/msgbuf.h create mode 100644 include/asm-parisc/namei.h create mode 100644 include/asm-parisc/numnodes.h create mode 100644 include/asm-parisc/page.h create mode 100644 include/asm-parisc/param.h create mode 100644 include/asm-parisc/parisc-device.h create mode 100644 include/asm-parisc/parport.h create mode 100644 include/asm-parisc/pci.h create mode 100644 include/asm-parisc/pdc.h create mode 100644 include/asm-parisc/pdc_chassis.h create mode 100644 include/asm-parisc/pdcpat.h create mode 100644 include/asm-parisc/percpu.h create mode 100644 include/asm-parisc/perf.h create mode 100644 include/asm-parisc/pgalloc.h create mode 100644 include/asm-parisc/pgtable.h create mode 100644 include/asm-parisc/poll.h create mode 100644 include/asm-parisc/posix_types.h create mode 100644 include/asm-parisc/processor.h create mode 100644 include/asm-parisc/psw.h create mode 100644 include/asm-parisc/ptrace.h create mode 100644 include/asm-parisc/real.h create mode 100644 include/asm-parisc/resource.h create mode 100644 include/asm-parisc/rt_sigframe.h create mode 100644 include/asm-parisc/rtc.h create mode 100644 include/asm-parisc/runway.h create mode 100644 include/asm-parisc/scatterlist.h create mode 100644 include/asm-parisc/sections.h create mode 100644 include/asm-parisc/segment.h create mode 100644 include/asm-parisc/semaphore-helper.h create mode 100644 include/asm-parisc/semaphore.h create mode 100644 include/asm-parisc/sembuf.h create mode 100644 include/asm-parisc/serial.h create mode 100644 include/asm-parisc/setup.h create mode 100644 include/asm-parisc/shmbuf.h create mode 100644 include/asm-parisc/shmparam.h create mode 100644 include/asm-parisc/sigcontext.h create mode 100644 include/asm-parisc/siginfo.h create mode 100644 include/asm-parisc/signal.h create mode 100644 include/asm-parisc/smp.h create mode 100644 include/asm-parisc/socket.h create mode 100644 include/asm-parisc/sockios.h create mode 100644 include/asm-parisc/spinlock.h create mode 100644 include/asm-parisc/stat.h create mode 100644 include/asm-parisc/statfs.h create mode 100644 include/asm-parisc/string.h create mode 100644 include/asm-parisc/superio.h create mode 100644 include/asm-parisc/system.h create mode 100644 include/asm-parisc/termbits.h create mode 100644 include/asm-parisc/termios.h create mode 100644 include/asm-parisc/thread_info.h create mode 100644 include/asm-parisc/timex.h create mode 100644 include/asm-parisc/tlb.h create mode 100644 include/asm-parisc/tlbflush.h create mode 100644 include/asm-parisc/topology.h create mode 100644 include/asm-parisc/traps.h create mode 100644 include/asm-parisc/types.h create mode 100644 include/asm-parisc/uaccess.h create mode 100644 include/asm-parisc/ucontext.h create mode 100644 include/asm-parisc/unaligned.h create mode 100644 include/asm-parisc/unistd.h create mode 100644 include/asm-parisc/unwind.h create mode 100644 include/asm-parisc/user.h create mode 100644 include/asm-parisc/xor.h create mode 100644 include/asm-ppc/8253pit.h create mode 100644 include/asm-ppc/8xx_immap.h create mode 100644 include/asm-ppc/a.out.h create mode 100644 include/asm-ppc/agp.h create mode 100644 include/asm-ppc/amigahw.h create mode 100644 include/asm-ppc/amigaints.h create mode 100644 include/asm-ppc/amigappc.h create mode 100644 include/asm-ppc/amigayle.h create mode 100644 include/asm-ppc/amipcmcia.h create mode 100644 include/asm-ppc/ans-lcd.h create mode 100644 include/asm-ppc/atomic.h create mode 100644 include/asm-ppc/backlight.h create mode 100644 include/asm-ppc/bitops.h create mode 100644 include/asm-ppc/bootinfo.h create mode 100644 include/asm-ppc/bootx.h create mode 100644 include/asm-ppc/bseip.h create mode 100644 include/asm-ppc/btext.h create mode 100644 include/asm-ppc/bug.h create mode 100644 include/asm-ppc/bugs.h create mode 100644 include/asm-ppc/byteorder.h create mode 100644 include/asm-ppc/cache.h create mode 100644 include/asm-ppc/cacheflush.h create mode 100644 include/asm-ppc/checksum.h create mode 100644 include/asm-ppc/commproc.h create mode 100644 include/asm-ppc/cpm2.h create mode 100644 include/asm-ppc/cputable.h create mode 100644 include/asm-ppc/cputime.h create mode 100644 include/asm-ppc/current.h create mode 100644 include/asm-ppc/dbdma.h create mode 100644 include/asm-ppc/delay.h create mode 100644 include/asm-ppc/div64.h create mode 100644 include/asm-ppc/dma-mapping.h create mode 100644 include/asm-ppc/dma.h create mode 100644 include/asm-ppc/elf.h create mode 100644 include/asm-ppc/errno.h create mode 100644 include/asm-ppc/fcntl.h create mode 100644 include/asm-ppc/floppy.h create mode 100644 include/asm-ppc/fsl_ocp.h create mode 100644 include/asm-ppc/gg2.h create mode 100644 include/asm-ppc/gt64260.h create mode 100644 include/asm-ppc/gt64260_defs.h create mode 100644 include/asm-ppc/hardirq.h create mode 100644 include/asm-ppc/harrier.h create mode 100644 include/asm-ppc/hawk.h create mode 100644 include/asm-ppc/hawk_defs.h create mode 100644 include/asm-ppc/hdreg.h create mode 100644 include/asm-ppc/heathrow.h create mode 100644 include/asm-ppc/highmem.h create mode 100644 include/asm-ppc/hw_irq.h create mode 100644 include/asm-ppc/hydra.h create mode 100644 include/asm-ppc/i8259.h create mode 100644 include/asm-ppc/ibm403.h create mode 100644 include/asm-ppc/ibm405.h create mode 100644 include/asm-ppc/ibm44x.h create mode 100644 include/asm-ppc/ibm4xx.h create mode 100644 include/asm-ppc/ibm_ocp.h create mode 100644 include/asm-ppc/ibm_ocp_pci.h create mode 100644 include/asm-ppc/ide.h create mode 100644 include/asm-ppc/immap_85xx.h create mode 100644 include/asm-ppc/immap_cpm2.h create mode 100644 include/asm-ppc/io.h create mode 100644 include/asm-ppc/ioctl.h create mode 100644 include/asm-ppc/ioctls.h create mode 100644 include/asm-ppc/ipc.h create mode 100644 include/asm-ppc/ipcbuf.h create mode 100644 include/asm-ppc/ipic.h create mode 100644 include/asm-ppc/irq.h create mode 100644 include/asm-ppc/keylargo.h create mode 100644 include/asm-ppc/kgdb.h create mode 100644 include/asm-ppc/kmap_types.h create mode 100644 include/asm-ppc/linkage.h create mode 100644 include/asm-ppc/local.h create mode 100644 include/asm-ppc/m48t35.h create mode 100644 include/asm-ppc/m8260_pci.h create mode 100644 include/asm-ppc/machdep.h create mode 100644 include/asm-ppc/macio.h create mode 100644 include/asm-ppc/mc146818rtc.h create mode 100644 include/asm-ppc/md.h create mode 100644 include/asm-ppc/mediabay.h create mode 100644 include/asm-ppc/mk48t59.h create mode 100644 include/asm-ppc/mman.h create mode 100644 include/asm-ppc/mmu.h create mode 100644 include/asm-ppc/mmu_context.h create mode 100644 include/asm-ppc/module.h create mode 100644 include/asm-ppc/mpc10x.h create mode 100644 include/asm-ppc/mpc52xx.h create mode 100644 include/asm-ppc/mpc52xx_psc.h create mode 100644 include/asm-ppc/mpc8260.h create mode 100644 include/asm-ppc/mpc8260_pci9.h create mode 100644 include/asm-ppc/mpc83xx.h create mode 100644 include/asm-ppc/mpc85xx.h create mode 100644 include/asm-ppc/mpc8xx.h create mode 100644 include/asm-ppc/msgbuf.h create mode 100644 include/asm-ppc/mv64x60.h create mode 100644 include/asm-ppc/mv64x60_defs.h create mode 100644 include/asm-ppc/namei.h create mode 100644 include/asm-ppc/nvram.h create mode 100644 include/asm-ppc/ocp.h create mode 100644 include/asm-ppc/ocp_ids.h create mode 100644 include/asm-ppc/of_device.h create mode 100644 include/asm-ppc/ohare.h create mode 100644 include/asm-ppc/open_pic.h create mode 100644 include/asm-ppc/page.h create mode 100644 include/asm-ppc/param.h create mode 100644 include/asm-ppc/parport.h create mode 100644 include/asm-ppc/pc_serial.h create mode 100644 include/asm-ppc/pci-bridge.h create mode 100644 include/asm-ppc/pci.h create mode 100644 include/asm-ppc/percpu.h create mode 100644 include/asm-ppc/perfmon.h create mode 100644 include/asm-ppc/pgalloc.h create mode 100644 include/asm-ppc/pgtable.h create mode 100644 include/asm-ppc/pmac_feature.h create mode 100644 include/asm-ppc/pmac_low_i2c.h create mode 100644 include/asm-ppc/pnp.h create mode 100644 include/asm-ppc/poll.h create mode 100644 include/asm-ppc/posix_types.h create mode 100644 include/asm-ppc/ppc4xx_dma.h create mode 100644 include/asm-ppc/ppc4xx_pic.h create mode 100644 include/asm-ppc/ppc_asm.h create mode 100644 include/asm-ppc/ppc_sys.h create mode 100644 include/asm-ppc/ppcboot.h create mode 100644 include/asm-ppc/prep_nvram.h create mode 100644 include/asm-ppc/processor.h create mode 100644 include/asm-ppc/prom.h create mode 100644 include/asm-ppc/ptrace.h create mode 100644 include/asm-ppc/raven.h create mode 100644 include/asm-ppc/reg.h create mode 100644 include/asm-ppc/reg_booke.h create mode 100644 include/asm-ppc/residual.h create mode 100644 include/asm-ppc/resource.h create mode 100644 include/asm-ppc/rheap.h create mode 100644 include/asm-ppc/rtc.h create mode 100644 include/asm-ppc/rwsem.h create mode 100644 include/asm-ppc/scatterlist.h create mode 100644 include/asm-ppc/sections.h create mode 100644 include/asm-ppc/segment.h create mode 100644 include/asm-ppc/semaphore.h create mode 100644 include/asm-ppc/sembuf.h create mode 100644 include/asm-ppc/serial.h create mode 100644 include/asm-ppc/setup.h create mode 100644 include/asm-ppc/shmbuf.h create mode 100644 include/asm-ppc/shmparam.h create mode 100644 include/asm-ppc/sigcontext.h create mode 100644 include/asm-ppc/siginfo.h create mode 100644 include/asm-ppc/signal.h create mode 100644 include/asm-ppc/smp.h create mode 100644 include/asm-ppc/socket.h create mode 100644 include/asm-ppc/sockios.h create mode 100644 include/asm-ppc/spinlock.h create mode 100644 include/asm-ppc/stat.h create mode 100644 include/asm-ppc/statfs.h create mode 100644 include/asm-ppc/string.h create mode 100644 include/asm-ppc/suspend.h create mode 100644 include/asm-ppc/system.h create mode 100644 include/asm-ppc/termbits.h create mode 100644 include/asm-ppc/termios.h create mode 100644 include/asm-ppc/thread_info.h create mode 100644 include/asm-ppc/time.h create mode 100644 include/asm-ppc/timex.h create mode 100644 include/asm-ppc/tlb.h create mode 100644 include/asm-ppc/tlbflush.h create mode 100644 include/asm-ppc/todc.h create mode 100644 include/asm-ppc/topology.h create mode 100644 include/asm-ppc/traps.h create mode 100644 include/asm-ppc/types.h create mode 100644 include/asm-ppc/uaccess.h create mode 100644 include/asm-ppc/ucontext.h create mode 100644 include/asm-ppc/unaligned.h create mode 100644 include/asm-ppc/uninorth.h create mode 100644 include/asm-ppc/unistd.h create mode 100644 include/asm-ppc/user.h create mode 100644 include/asm-ppc/vga.h create mode 100644 include/asm-ppc/xmon.h create mode 100644 include/asm-ppc/xor.h create mode 100644 include/asm-ppc/xparameters.h create mode 100644 include/asm-ppc/zorro.h create mode 100644 include/asm-ppc64/8253pit.h create mode 100644 include/asm-ppc64/a.out.h create mode 100644 include/asm-ppc64/abs_addr.h create mode 100644 include/asm-ppc64/agp.h create mode 100644 include/asm-ppc64/atomic.h create mode 100644 include/asm-ppc64/bitops.h create mode 100644 include/asm-ppc64/bootinfo.h create mode 100644 include/asm-ppc64/btext.h create mode 100644 include/asm-ppc64/bug.h create mode 100644 include/asm-ppc64/bugs.h create mode 100644 include/asm-ppc64/byteorder.h create mode 100644 include/asm-ppc64/cache.h create mode 100644 include/asm-ppc64/cacheflush.h create mode 100644 include/asm-ppc64/checksum.h create mode 100644 include/asm-ppc64/compat.h create mode 100644 include/asm-ppc64/cputable.h create mode 100644 include/asm-ppc64/cputime.h create mode 100644 include/asm-ppc64/current.h create mode 100644 include/asm-ppc64/dbdma.h create mode 100644 include/asm-ppc64/delay.h create mode 100644 include/asm-ppc64/div64.h create mode 100644 include/asm-ppc64/dma-mapping.h create mode 100644 include/asm-ppc64/dma.h create mode 100644 include/asm-ppc64/eeh.h create mode 100644 include/asm-ppc64/elf.h create mode 100644 include/asm-ppc64/errno.h create mode 100644 include/asm-ppc64/fcntl.h create mode 100644 include/asm-ppc64/floppy.h create mode 100644 include/asm-ppc64/hardirq.h create mode 100644 include/asm-ppc64/hdreg.h create mode 100644 include/asm-ppc64/hvcall.h create mode 100644 include/asm-ppc64/hvconsole.h create mode 100644 include/asm-ppc64/hvcserver.h create mode 100644 include/asm-ppc64/hw_irq.h create mode 100644 include/asm-ppc64/iSeries/HvCall.h create mode 100644 include/asm-ppc64/iSeries/HvCallCfg.h create mode 100644 include/asm-ppc64/iSeries/HvCallEvent.h create mode 100644 include/asm-ppc64/iSeries/HvCallHpt.h create mode 100644 include/asm-ppc64/iSeries/HvCallPci.h create mode 100644 include/asm-ppc64/iSeries/HvCallSc.h create mode 100644 include/asm-ppc64/iSeries/HvCallSm.h create mode 100644 include/asm-ppc64/iSeries/HvCallXm.h create mode 100644 include/asm-ppc64/iSeries/HvLpConfig.h create mode 100644 include/asm-ppc64/iSeries/HvLpEvent.h create mode 100644 include/asm-ppc64/iSeries/HvReleaseData.h create mode 100644 include/asm-ppc64/iSeries/HvTypes.h create mode 100644 include/asm-ppc64/iSeries/IoHriMainStore.h create mode 100644 include/asm-ppc64/iSeries/IoHriProcessorVpd.h create mode 100644 include/asm-ppc64/iSeries/ItExtVpdPanel.h create mode 100644 include/asm-ppc64/iSeries/ItIplParmsReal.h create mode 100644 include/asm-ppc64/iSeries/ItLpNaca.h create mode 100644 include/asm-ppc64/iSeries/ItLpQueue.h create mode 100644 include/asm-ppc64/iSeries/ItLpRegSave.h create mode 100644 include/asm-ppc64/iSeries/ItSpCommArea.h create mode 100644 include/asm-ppc64/iSeries/ItVpdAreas.h create mode 100644 include/asm-ppc64/iSeries/LparData.h create mode 100644 include/asm-ppc64/iSeries/LparMap.h create mode 100644 include/asm-ppc64/iSeries/XmPciLpEvent.h create mode 100644 include/asm-ppc64/iSeries/iSeries_io.h create mode 100644 include/asm-ppc64/iSeries/iSeries_irq.h create mode 100644 include/asm-ppc64/iSeries/iSeries_pci.h create mode 100644 include/asm-ppc64/iSeries/iSeries_proc.h create mode 100644 include/asm-ppc64/iSeries/mf.h create mode 100644 include/asm-ppc64/iSeries/vio.h create mode 100644 include/asm-ppc64/ide.h create mode 100644 include/asm-ppc64/io.h create mode 100644 include/asm-ppc64/ioctl.h create mode 100644 include/asm-ppc64/ioctls.h create mode 100644 include/asm-ppc64/iommu.h create mode 100644 include/asm-ppc64/ipc.h create mode 100644 include/asm-ppc64/ipcbuf.h create mode 100644 include/asm-ppc64/irq.h create mode 100644 include/asm-ppc64/kdebug.h create mode 100644 include/asm-ppc64/keylargo.h create mode 100644 include/asm-ppc64/kmap_types.h create mode 100644 include/asm-ppc64/kprobes.h create mode 100644 include/asm-ppc64/linkage.h create mode 100644 include/asm-ppc64/lmb.h create mode 100644 include/asm-ppc64/local.h create mode 100644 include/asm-ppc64/lppaca.h create mode 100644 include/asm-ppc64/machdep.h create mode 100644 include/asm-ppc64/macio.h create mode 100644 include/asm-ppc64/mc146818rtc.h create mode 100644 include/asm-ppc64/memory.h create mode 100644 include/asm-ppc64/mman.h create mode 100644 include/asm-ppc64/mmu.h create mode 100644 include/asm-ppc64/mmu_context.h create mode 100644 include/asm-ppc64/mmzone.h create mode 100644 include/asm-ppc64/module.h create mode 100644 include/asm-ppc64/msgbuf.h create mode 100644 include/asm-ppc64/naca.h create mode 100644 include/asm-ppc64/namei.h create mode 100644 include/asm-ppc64/numnodes.h create mode 100644 include/asm-ppc64/nvram.h create mode 100644 include/asm-ppc64/of_device.h create mode 100644 include/asm-ppc64/pSeries_reconfig.h create mode 100644 include/asm-ppc64/paca.h create mode 100644 include/asm-ppc64/page.h create mode 100644 include/asm-ppc64/param.h create mode 100644 include/asm-ppc64/parport.h create mode 100644 include/asm-ppc64/pci-bridge.h create mode 100644 include/asm-ppc64/pci.h create mode 100644 include/asm-ppc64/percpu.h create mode 100644 include/asm-ppc64/pgalloc.h create mode 100644 include/asm-ppc64/pgtable.h create mode 100644 include/asm-ppc64/plpar_wrappers.h create mode 100644 include/asm-ppc64/pmac_feature.h create mode 100644 include/asm-ppc64/pmac_low_i2c.h create mode 100644 include/asm-ppc64/pmc.h create mode 100644 include/asm-ppc64/poll.h create mode 100644 include/asm-ppc64/posix_types.h create mode 100644 include/asm-ppc64/ppc32.h create mode 100644 include/asm-ppc64/ppc_asm.h create mode 100644 include/asm-ppc64/ppcdebug.h create mode 100644 include/asm-ppc64/processor.h create mode 100644 include/asm-ppc64/prom.h create mode 100644 include/asm-ppc64/ptrace-common.h create mode 100644 include/asm-ppc64/ptrace.h create mode 100644 include/asm-ppc64/resource.h create mode 100644 include/asm-ppc64/rtas.h create mode 100644 include/asm-ppc64/rwsem.h create mode 100644 include/asm-ppc64/scatterlist.h create mode 100644 include/asm-ppc64/seccomp.h create mode 100644 include/asm-ppc64/sections.h create mode 100644 include/asm-ppc64/segment.h create mode 100644 include/asm-ppc64/semaphore.h create mode 100644 include/asm-ppc64/sembuf.h create mode 100644 include/asm-ppc64/serial.h create mode 100644 include/asm-ppc64/setup.h create mode 100644 include/asm-ppc64/shmbuf.h create mode 100644 include/asm-ppc64/shmparam.h create mode 100644 include/asm-ppc64/sigcontext.h create mode 100644 include/asm-ppc64/siginfo.h create mode 100644 include/asm-ppc64/signal.h create mode 100644 include/asm-ppc64/smp.h create mode 100644 include/asm-ppc64/smu.h create mode 100644 include/asm-ppc64/socket.h create mode 100644 include/asm-ppc64/sockios.h create mode 100644 include/asm-ppc64/spinlock.h create mode 100644 include/asm-ppc64/sstep.h create mode 100644 include/asm-ppc64/stat.h create mode 100644 include/asm-ppc64/statfs.h create mode 100644 include/asm-ppc64/string.h create mode 100644 include/asm-ppc64/system.h create mode 100644 include/asm-ppc64/systemcfg.h create mode 100644 include/asm-ppc64/termbits.h create mode 100644 include/asm-ppc64/termios.h create mode 100644 include/asm-ppc64/thread_info.h create mode 100644 include/asm-ppc64/time.h create mode 100644 include/asm-ppc64/timex.h create mode 100644 include/asm-ppc64/tlb.h create mode 100644 include/asm-ppc64/tlbflush.h create mode 100644 include/asm-ppc64/topology.h create mode 100644 include/asm-ppc64/types.h create mode 100644 include/asm-ppc64/uaccess.h create mode 100644 include/asm-ppc64/ucontext.h create mode 100644 include/asm-ppc64/udbg.h create mode 100644 include/asm-ppc64/unaligned.h create mode 100644 include/asm-ppc64/uninorth.h create mode 100644 include/asm-ppc64/unistd.h create mode 100644 include/asm-ppc64/user.h create mode 100644 include/asm-ppc64/vdso.h create mode 100644 include/asm-ppc64/vga.h create mode 100644 include/asm-ppc64/vio.h create mode 100644 include/asm-ppc64/xics.h create mode 100644 include/asm-ppc64/xor.h create mode 100644 include/asm-s390/a.out.h create mode 100644 include/asm-s390/atomic.h create mode 100644 include/asm-s390/bitops.h create mode 100644 include/asm-s390/bug.h create mode 100644 include/asm-s390/bugs.h create mode 100644 include/asm-s390/byteorder.h create mode 100644 include/asm-s390/cache.h create mode 100644 include/asm-s390/cacheflush.h create mode 100644 include/asm-s390/ccwdev.h create mode 100644 include/asm-s390/ccwgroup.h create mode 100644 include/asm-s390/checksum.h create mode 100644 include/asm-s390/cio.h create mode 100644 include/asm-s390/cmb.h create mode 100644 include/asm-s390/compat.h create mode 100644 include/asm-s390/cpcmd.h create mode 100644 include/asm-s390/cputime.h create mode 100644 include/asm-s390/current.h create mode 100644 include/asm-s390/dasd.h create mode 100644 include/asm-s390/debug.h create mode 100644 include/asm-s390/delay.h create mode 100644 include/asm-s390/div64.h create mode 100644 include/asm-s390/dma-mapping.h create mode 100644 include/asm-s390/dma.h create mode 100644 include/asm-s390/ebcdic.h create mode 100644 include/asm-s390/elf.h create mode 100644 include/asm-s390/errno.h create mode 100644 include/asm-s390/extmem.h create mode 100644 include/asm-s390/fcntl.h create mode 100644 include/asm-s390/hardirq.h create mode 100644 include/asm-s390/idals.h create mode 100644 include/asm-s390/io.h create mode 100644 include/asm-s390/ioctl.h create mode 100644 include/asm-s390/ioctls.h create mode 100644 include/asm-s390/ipc.h create mode 100644 include/asm-s390/ipcbuf.h create mode 100644 include/asm-s390/irq.h create mode 100644 include/asm-s390/kmap_types.h create mode 100644 include/asm-s390/linkage.h create mode 100644 include/asm-s390/local.h create mode 100644 include/asm-s390/lowcore.h create mode 100644 include/asm-s390/mathemu.h create mode 100644 include/asm-s390/mman.h create mode 100644 include/asm-s390/mmu.h create mode 100644 include/asm-s390/mmu_context.h create mode 100644 include/asm-s390/module.h create mode 100644 include/asm-s390/msgbuf.h create mode 100644 include/asm-s390/namei.h create mode 100644 include/asm-s390/page.h create mode 100644 include/asm-s390/param.h create mode 100644 include/asm-s390/pci.h create mode 100644 include/asm-s390/percpu.h create mode 100644 include/asm-s390/pgalloc.h create mode 100644 include/asm-s390/pgtable.h create mode 100644 include/asm-s390/poll.h create mode 100644 include/asm-s390/posix_types.h create mode 100644 include/asm-s390/processor.h create mode 100644 include/asm-s390/ptrace.h create mode 100644 include/asm-s390/qdio.h create mode 100644 include/asm-s390/qeth.h create mode 100644 include/asm-s390/resource.h create mode 100644 include/asm-s390/rwsem.h create mode 100644 include/asm-s390/s390_ext.h create mode 100644 include/asm-s390/scatterlist.h create mode 100644 include/asm-s390/sections.h create mode 100644 include/asm-s390/segment.h create mode 100644 include/asm-s390/semaphore.h create mode 100644 include/asm-s390/sembuf.h create mode 100644 include/asm-s390/setup.h create mode 100644 include/asm-s390/sfp-machine.h create mode 100644 include/asm-s390/shmbuf.h create mode 100644 include/asm-s390/shmparam.h create mode 100644 include/asm-s390/sigcontext.h create mode 100644 include/asm-s390/siginfo.h create mode 100644 include/asm-s390/signal.h create mode 100644 include/asm-s390/sigp.h create mode 100644 include/asm-s390/smp.h create mode 100644 include/asm-s390/socket.h create mode 100644 include/asm-s390/sockios.h create mode 100644 include/asm-s390/spinlock.h create mode 100644 include/asm-s390/stat.h create mode 100644 include/asm-s390/statfs.h create mode 100644 include/asm-s390/string.h create mode 100644 include/asm-s390/suspend.h create mode 100644 include/asm-s390/system.h create mode 100644 include/asm-s390/tape390.h create mode 100644 include/asm-s390/termbits.h create mode 100644 include/asm-s390/termios.h create mode 100644 include/asm-s390/thread_info.h create mode 100644 include/asm-s390/timer.h create mode 100644 include/asm-s390/timex.h create mode 100644 include/asm-s390/tlb.h create mode 100644 include/asm-s390/tlbflush.h create mode 100644 include/asm-s390/todclk.h create mode 100644 include/asm-s390/topology.h create mode 100644 include/asm-s390/types.h create mode 100644 include/asm-s390/uaccess.h create mode 100644 include/asm-s390/ucontext.h create mode 100644 include/asm-s390/unaligned.h create mode 100644 include/asm-s390/unistd.h create mode 100644 include/asm-s390/user.h create mode 100644 include/asm-s390/vtoc.h create mode 100644 include/asm-s390/xor.h create mode 100644 include/asm-sh/a.out.h create mode 100644 include/asm-sh/adc.h create mode 100644 include/asm-sh/addrspace.h create mode 100644 include/asm-sh/adx/io.h create mode 100644 include/asm-sh/atomic.h create mode 100644 include/asm-sh/bigsur/bigsur.h create mode 100644 include/asm-sh/bigsur/io.h create mode 100644 include/asm-sh/bigsur/serial.h create mode 100644 include/asm-sh/bitops.h create mode 100644 include/asm-sh/bug.h create mode 100644 include/asm-sh/bugs.h create mode 100644 include/asm-sh/bus-sh.h create mode 100644 include/asm-sh/byteorder.h create mode 100644 include/asm-sh/cache.h create mode 100644 include/asm-sh/cacheflush.h create mode 100644 include/asm-sh/cat68701/io.h create mode 100644 include/asm-sh/checksum.h create mode 100644 include/asm-sh/cpu-sh2/addrspace.h create mode 100644 include/asm-sh/cpu-sh2/cache.h create mode 100644 include/asm-sh/cpu-sh2/cacheflush.h create mode 100644 include/asm-sh/cpu-sh2/dma.h create mode 100644 include/asm-sh/cpu-sh2/shmparam.h create mode 100644 include/asm-sh/cpu-sh2/sigcontext.h create mode 100644 include/asm-sh/cpu-sh2/ubc.h create mode 100644 include/asm-sh/cpu-sh2/watchdog.h create mode 100644 include/asm-sh/cpu-sh3/adc.h create mode 100644 include/asm-sh/cpu-sh3/addrspace.h create mode 100644 include/asm-sh/cpu-sh3/cache.h create mode 100644 include/asm-sh/cpu-sh3/cacheflush.h create mode 100644 include/asm-sh/cpu-sh3/dac.h create mode 100644 include/asm-sh/cpu-sh3/dma.h create mode 100644 include/asm-sh/cpu-sh3/freq.h create mode 100644 include/asm-sh/cpu-sh3/mmu_context.h create mode 100644 include/asm-sh/cpu-sh3/rtc.h create mode 100644 include/asm-sh/cpu-sh3/shmparam.h create mode 100644 include/asm-sh/cpu-sh3/sigcontext.h create mode 100644 include/asm-sh/cpu-sh3/timer.h create mode 100644 include/asm-sh/cpu-sh3/ubc.h create mode 100644 include/asm-sh/cpu-sh3/watchdog.h create mode 100644 include/asm-sh/cpu-sh4/addrspace.h create mode 100644 include/asm-sh/cpu-sh4/cache.h create mode 100644 include/asm-sh/cpu-sh4/cacheflush.h create mode 100644 include/asm-sh/cpu-sh4/dma.h create mode 100644 include/asm-sh/cpu-sh4/freq.h create mode 100644 include/asm-sh/cpu-sh4/mmu_context.h create mode 100644 include/asm-sh/cpu-sh4/rtc.h create mode 100644 include/asm-sh/cpu-sh4/shmparam.h create mode 100644 include/asm-sh/cpu-sh4/sigcontext.h create mode 100644 include/asm-sh/cpu-sh4/sq.h create mode 100644 include/asm-sh/cpu-sh4/timer.h create mode 100644 include/asm-sh/cpu-sh4/ubc.h create mode 100644 include/asm-sh/cpu-sh4/watchdog.h create mode 100644 include/asm-sh/cputime.h create mode 100644 include/asm-sh/cqreek/cqreek.h create mode 100644 include/asm-sh/current.h create mode 100644 include/asm-sh/delay.h create mode 100644 include/asm-sh/div64.h create mode 100644 include/asm-sh/dma-mapping.h create mode 100644 include/asm-sh/dma.h create mode 100644 include/asm-sh/dmida/io.h create mode 100644 include/asm-sh/dreamcast/dma.h create mode 100644 include/asm-sh/dreamcast/pci.h create mode 100644 include/asm-sh/dreamcast/sysasic.h create mode 100644 include/asm-sh/ec3104/ec3104.h create mode 100644 include/asm-sh/ec3104/io.h create mode 100644 include/asm-sh/ec3104/keyboard.h create mode 100644 include/asm-sh/ec3104/serial.h create mode 100644 include/asm-sh/edosk7705/io.h create mode 100644 include/asm-sh/elf.h create mode 100644 include/asm-sh/errno.h create mode 100644 include/asm-sh/fcntl.h create mode 100644 include/asm-sh/fixmap.h create mode 100644 include/asm-sh/flat.h create mode 100644 include/asm-sh/floppy.h create mode 100644 include/asm-sh/freq.h create mode 100644 include/asm-sh/hardirq.h create mode 100644 include/asm-sh/harp/harp.h create mode 100644 include/asm-sh/harp/io.h create mode 100644 include/asm-sh/hd64461/hd64461.h create mode 100644 include/asm-sh/hd64461/io.h create mode 100644 include/asm-sh/hd64465/gpio.h create mode 100644 include/asm-sh/hd64465/hd64465.h create mode 100644 include/asm-sh/hd64465/io.h create mode 100644 include/asm-sh/hdreg.h create mode 100644 include/asm-sh/hp6xx/hp6xx.h create mode 100644 include/asm-sh/hp6xx/ide.h create mode 100644 include/asm-sh/hp6xx/io.h create mode 100644 include/asm-sh/hs7751rvoip/hs7751rvoip.h create mode 100644 include/asm-sh/hs7751rvoip/ide.h create mode 100644 include/asm-sh/hs7751rvoip/io.h create mode 100644 include/asm-sh/hw_irq.h create mode 100644 include/asm-sh/ide.h create mode 100644 include/asm-sh/io.h create mode 100644 include/asm-sh/io_generic.h create mode 100644 include/asm-sh/ioctl.h create mode 100644 include/asm-sh/ioctls.h create mode 100644 include/asm-sh/ipc.h create mode 100644 include/asm-sh/ipcbuf.h create mode 100644 include/asm-sh/irq-sh73180.h create mode 100644 include/asm-sh/irq.h create mode 100644 include/asm-sh/keyboard.h create mode 100644 include/asm-sh/kgdb.h create mode 100644 include/asm-sh/kmap_types.h create mode 100644 include/asm-sh/linkage.h create mode 100644 include/asm-sh/local.h create mode 100644 include/asm-sh/machvec.h create mode 100644 include/asm-sh/machvec_init.h create mode 100644 include/asm-sh/mc146818rtc.h create mode 100644 include/asm-sh/microdev/io.h create mode 100644 include/asm-sh/microdev/irq.h create mode 100644 include/asm-sh/mman.h create mode 100644 include/asm-sh/mmu.h create mode 100644 include/asm-sh/mmu_context.h create mode 100644 include/asm-sh/mmzone.h create mode 100644 include/asm-sh/module.h create mode 100644 include/asm-sh/mpc1211/dma.h create mode 100644 include/asm-sh/mpc1211/io.h create mode 100644 include/asm-sh/mpc1211/keyboard.h create mode 100644 include/asm-sh/mpc1211/m1543c.h create mode 100644 include/asm-sh/mpc1211/mc146818rtc.h create mode 100644 include/asm-sh/mpc1211/mpc1211.h create mode 100644 include/asm-sh/mpc1211/pci.h create mode 100644 include/asm-sh/msgbuf.h create mode 100644 include/asm-sh/namei.h create mode 100644 include/asm-sh/numnodes.h create mode 100644 include/asm-sh/overdrive/fpga.h create mode 100644 include/asm-sh/overdrive/gt64111.h create mode 100644 include/asm-sh/overdrive/io.h create mode 100644 include/asm-sh/overdrive/overdrive.h create mode 100644 include/asm-sh/page.h create mode 100644 include/asm-sh/param.h create mode 100644 include/asm-sh/pci.h create mode 100644 include/asm-sh/percpu.h create mode 100644 include/asm-sh/pgalloc.h create mode 100644 include/asm-sh/pgtable-2level.h create mode 100644 include/asm-sh/pgtable.h create mode 100644 include/asm-sh/poll.h create mode 100644 include/asm-sh/posix_types.h create mode 100644 include/asm-sh/processor.h create mode 100644 include/asm-sh/ptrace.h create mode 100644 include/asm-sh/resource.h create mode 100644 include/asm-sh/rtc.h create mode 100644 include/asm-sh/rts7751r2d/ide.h create mode 100644 include/asm-sh/rts7751r2d/io.h create mode 100644 include/asm-sh/rts7751r2d/rts7751r2d.h create mode 100644 include/asm-sh/rts7751r2d/voyagergx_reg.h create mode 100644 include/asm-sh/rwsem.h create mode 100644 include/asm-sh/saturn/io.h create mode 100644 include/asm-sh/saturn/smpc.h create mode 100644 include/asm-sh/scatterlist.h create mode 100644 include/asm-sh/se/io.h create mode 100644 include/asm-sh/se/se.h create mode 100644 include/asm-sh/se/smc37c93x.h create mode 100644 include/asm-sh/se7300/io.h create mode 100644 include/asm-sh/se7300/se7300.h create mode 100644 include/asm-sh/se73180/io.h create mode 100644 include/asm-sh/se73180/se73180.h create mode 100644 include/asm-sh/se7751/io.h create mode 100644 include/asm-sh/se7751/se7751.h create mode 100644 include/asm-sh/sections.h create mode 100644 include/asm-sh/segment.h create mode 100644 include/asm-sh/semaphore-helper.h create mode 100644 include/asm-sh/semaphore.h create mode 100644 include/asm-sh/sembuf.h create mode 100644 include/asm-sh/serial.h create mode 100644 include/asm-sh/setup.h create mode 100644 include/asm-sh/sh03/ide.h create mode 100644 include/asm-sh/sh03/io.h create mode 100644 include/asm-sh/sh03/sh03.h create mode 100644 include/asm-sh/sh2000/sh2000.h create mode 100644 include/asm-sh/sh_bios.h create mode 100644 include/asm-sh/shmbuf.h create mode 100644 include/asm-sh/shmparam.h create mode 100644 include/asm-sh/sigcontext.h create mode 100644 include/asm-sh/siginfo.h create mode 100644 include/asm-sh/signal.h create mode 100644 include/asm-sh/smp.h create mode 100644 include/asm-sh/snapgear/io.h create mode 100644 include/asm-sh/socket.h create mode 100644 include/asm-sh/sockios.h create mode 100644 include/asm-sh/spinlock.h create mode 100644 include/asm-sh/stat.h create mode 100644 include/asm-sh/statfs.h create mode 100644 include/asm-sh/string.h create mode 100644 include/asm-sh/system.h create mode 100644 include/asm-sh/systemh/7751systemh.h create mode 100644 include/asm-sh/systemh/io.h create mode 100644 include/asm-sh/termbits.h create mode 100644 include/asm-sh/termios.h create mode 100644 include/asm-sh/thread_info.h create mode 100644 include/asm-sh/timex.h create mode 100644 include/asm-sh/tlb.h create mode 100644 include/asm-sh/tlbflush.h create mode 100644 include/asm-sh/topology.h create mode 100644 include/asm-sh/types.h create mode 100644 include/asm-sh/uaccess.h create mode 100644 include/asm-sh/ubc.h create mode 100644 include/asm-sh/ucontext.h create mode 100644 include/asm-sh/unaligned.h create mode 100644 include/asm-sh/unistd.h create mode 100644 include/asm-sh/user.h create mode 100644 include/asm-sh/watchdog.h create mode 100644 include/asm-sh/xor.h create mode 100644 include/asm-sh64/a.out.h create mode 100644 include/asm-sh64/atomic.h create mode 100644 include/asm-sh64/bitops.h create mode 100644 include/asm-sh64/bug.h create mode 100644 include/asm-sh64/bugs.h create mode 100644 include/asm-sh64/byteorder.h create mode 100644 include/asm-sh64/cache.h create mode 100644 include/asm-sh64/cacheflush.h create mode 100644 include/asm-sh64/cayman.h create mode 100644 include/asm-sh64/checksum.h create mode 100644 include/asm-sh64/cpumask.h create mode 100644 include/asm-sh64/cputime.h create mode 100644 include/asm-sh64/current.h create mode 100644 include/asm-sh64/delay.h create mode 100644 include/asm-sh64/div64.h create mode 100644 include/asm-sh64/dma-mapping.h create mode 100644 include/asm-sh64/dma.h create mode 100644 include/asm-sh64/elf.h create mode 100644 include/asm-sh64/errno.h create mode 100644 include/asm-sh64/fcntl.h create mode 100644 include/asm-sh64/hardirq.h create mode 100644 include/asm-sh64/hardware.h create mode 100644 include/asm-sh64/hdreg.h create mode 100644 include/asm-sh64/hw_irq.h create mode 100644 include/asm-sh64/ide.h create mode 100644 include/asm-sh64/io.h create mode 100644 include/asm-sh64/ioctl.h create mode 100644 include/asm-sh64/ioctls.h create mode 100644 include/asm-sh64/ipc.h create mode 100644 include/asm-sh64/ipcbuf.h create mode 100644 include/asm-sh64/irq.h create mode 100644 include/asm-sh64/keyboard.h create mode 100644 include/asm-sh64/kmap_types.h create mode 100644 include/asm-sh64/linkage.h create mode 100644 include/asm-sh64/local.h create mode 100644 include/asm-sh64/mc146818rtc.h create mode 100644 include/asm-sh64/mman.h create mode 100644 include/asm-sh64/mmu.h create mode 100644 include/asm-sh64/mmu_context.h create mode 100644 include/asm-sh64/module.h create mode 100644 include/asm-sh64/msgbuf.h create mode 100644 include/asm-sh64/namei.h create mode 100644 include/asm-sh64/page.h create mode 100644 include/asm-sh64/param.h create mode 100644 include/asm-sh64/pci.h create mode 100644 include/asm-sh64/percpu.h create mode 100644 include/asm-sh64/pgalloc.h create mode 100644 include/asm-sh64/pgtable.h create mode 100644 include/asm-sh64/platform.h create mode 100644 include/asm-sh64/poll.h create mode 100644 include/asm-sh64/posix_types.h create mode 100644 include/asm-sh64/processor.h create mode 100644 include/asm-sh64/ptrace.h create mode 100644 include/asm-sh64/registers.h create mode 100644 include/asm-sh64/resource.h create mode 100644 include/asm-sh64/scatterlist.h create mode 100644 include/asm-sh64/sections.h create mode 100644 include/asm-sh64/segment.h create mode 100644 include/asm-sh64/semaphore-helper.h create mode 100644 include/asm-sh64/semaphore.h create mode 100644 include/asm-sh64/sembuf.h create mode 100644 include/asm-sh64/serial.h create mode 100644 include/asm-sh64/setup.h create mode 100644 include/asm-sh64/shmbuf.h create mode 100644 include/asm-sh64/shmparam.h create mode 100644 include/asm-sh64/sigcontext.h create mode 100644 include/asm-sh64/siginfo.h create mode 100644 include/asm-sh64/signal.h create mode 100644 include/asm-sh64/smp.h create mode 100644 include/asm-sh64/socket.h create mode 100644 include/asm-sh64/sockios.h create mode 100644 include/asm-sh64/spinlock.h create mode 100644 include/asm-sh64/stat.h create mode 100644 include/asm-sh64/statfs.h create mode 100644 include/asm-sh64/string.h create mode 100644 include/asm-sh64/system.h create mode 100644 include/asm-sh64/termbits.h create mode 100644 include/asm-sh64/termios.h create mode 100644 include/asm-sh64/thread_info.h create mode 100644 include/asm-sh64/timex.h create mode 100644 include/asm-sh64/tlb.h create mode 100644 include/asm-sh64/tlbflush.h create mode 100644 include/asm-sh64/topology.h create mode 100644 include/asm-sh64/types.h create mode 100644 include/asm-sh64/uaccess.h create mode 100644 include/asm-sh64/ucontext.h create mode 100644 include/asm-sh64/unaligned.h create mode 100644 include/asm-sh64/unistd.h create mode 100644 include/asm-sh64/user.h create mode 100644 include/asm-sparc/a.out.h create mode 100644 include/asm-sparc/apc.h create mode 100644 include/asm-sparc/asi.h create mode 100644 include/asm-sparc/asmmacro.h create mode 100644 include/asm-sparc/atomic.h create mode 100644 include/asm-sparc/audioio.h create mode 100644 include/asm-sparc/auxio.h create mode 100644 include/asm-sparc/bitext.h create mode 100644 include/asm-sparc/bitops.h create mode 100644 include/asm-sparc/bpp.h create mode 100644 include/asm-sparc/bsderrno.h create mode 100644 include/asm-sparc/btfixup.h create mode 100644 include/asm-sparc/bug.h create mode 100644 include/asm-sparc/bugs.h create mode 100644 include/asm-sparc/byteorder.h create mode 100644 include/asm-sparc/cache.h create mode 100644 include/asm-sparc/cacheflush.h create mode 100644 include/asm-sparc/checksum.h create mode 100644 include/asm-sparc/clock.h create mode 100644 include/asm-sparc/contregs.h create mode 100644 include/asm-sparc/cpudata.h create mode 100644 include/asm-sparc/cputime.h create mode 100644 include/asm-sparc/current.h create mode 100644 include/asm-sparc/cypress.h create mode 100644 include/asm-sparc/delay.h create mode 100644 include/asm-sparc/div64.h create mode 100644 include/asm-sparc/dma-mapping.h create mode 100644 include/asm-sparc/dma.h create mode 100644 include/asm-sparc/ebus.h create mode 100644 include/asm-sparc/ecc.h create mode 100644 include/asm-sparc/eeprom.h create mode 100644 include/asm-sparc/elf.h create mode 100644 include/asm-sparc/errno.h create mode 100644 include/asm-sparc/fbio.h create mode 100644 include/asm-sparc/fcntl.h create mode 100644 include/asm-sparc/fixmap.h create mode 100644 include/asm-sparc/floppy.h create mode 100644 include/asm-sparc/hardirq.h create mode 100644 include/asm-sparc/hdreg.h create mode 100644 include/asm-sparc/head.h create mode 100644 include/asm-sparc/highmem.h create mode 100644 include/asm-sparc/hw_irq.h create mode 100644 include/asm-sparc/ide.h create mode 100644 include/asm-sparc/idprom.h create mode 100644 include/asm-sparc/io-unit.h create mode 100644 include/asm-sparc/io.h create mode 100644 include/asm-sparc/ioctl.h create mode 100644 include/asm-sparc/ioctls.h create mode 100644 include/asm-sparc/iommu.h create mode 100644 include/asm-sparc/ipc.h create mode 100644 include/asm-sparc/ipcbuf.h create mode 100644 include/asm-sparc/irq.h create mode 100644 include/asm-sparc/jsflash.h create mode 100644 include/asm-sparc/kbio.h create mode 100644 include/asm-sparc/kdebug.h create mode 100644 include/asm-sparc/kgdb.h create mode 100644 include/asm-sparc/kmap_types.h create mode 100644 include/asm-sparc/linkage.h create mode 100644 include/asm-sparc/local.h create mode 100644 include/asm-sparc/machines.h create mode 100644 include/asm-sparc/mbus.h create mode 100644 include/asm-sparc/mc146818rtc.h create mode 100644 include/asm-sparc/memreg.h create mode 100644 include/asm-sparc/mman.h create mode 100644 include/asm-sparc/mmu.h create mode 100644 include/asm-sparc/mmu_context.h create mode 100644 include/asm-sparc/module.h create mode 100644 include/asm-sparc/mostek.h create mode 100644 include/asm-sparc/mpmbox.h create mode 100644 include/asm-sparc/msgbuf.h create mode 100644 include/asm-sparc/msi.h create mode 100644 include/asm-sparc/mxcc.h create mode 100644 include/asm-sparc/namei.h create mode 100644 include/asm-sparc/obio.h create mode 100644 include/asm-sparc/openprom.h create mode 100644 include/asm-sparc/openpromio.h create mode 100644 include/asm-sparc/oplib.h create mode 100644 include/asm-sparc/page.h create mode 100644 include/asm-sparc/param.h create mode 100644 include/asm-sparc/pbm.h create mode 100644 include/asm-sparc/pci.h create mode 100644 include/asm-sparc/pcic.h create mode 100644 include/asm-sparc/pconf.h create mode 100644 include/asm-sparc/percpu.h create mode 100644 include/asm-sparc/perfctr.h create mode 100644 include/asm-sparc/pgalloc.h create mode 100644 include/asm-sparc/pgtable.h create mode 100644 include/asm-sparc/pgtsrmmu.h create mode 100644 include/asm-sparc/pgtsun4.h create mode 100644 include/asm-sparc/pgtsun4c.h create mode 100644 include/asm-sparc/poll.h create mode 100644 include/asm-sparc/posix_types.h create mode 100644 include/asm-sparc/processor.h create mode 100644 include/asm-sparc/psr.h create mode 100644 include/asm-sparc/ptrace.h create mode 100644 include/asm-sparc/reg.h create mode 100644 include/asm-sparc/resource.h create mode 100644 include/asm-sparc/ross.h create mode 100644 include/asm-sparc/rtc.h create mode 100644 include/asm-sparc/sbi.h create mode 100644 include/asm-sparc/sbus.h create mode 100644 include/asm-sparc/scatterlist.h create mode 100644 include/asm-sparc/sections.h create mode 100644 include/asm-sparc/segment.h create mode 100644 include/asm-sparc/semaphore.h create mode 100644 include/asm-sparc/sembuf.h create mode 100644 include/asm-sparc/setup.h create mode 100644 include/asm-sparc/sfp-machine.h create mode 100644 include/asm-sparc/shmbuf.h create mode 100644 include/asm-sparc/shmparam.h create mode 100644 include/asm-sparc/sigcontext.h create mode 100644 include/asm-sparc/siginfo.h create mode 100644 include/asm-sparc/signal.h create mode 100644 include/asm-sparc/smp.h create mode 100644 include/asm-sparc/smpprim.h create mode 100644 include/asm-sparc/socket.h create mode 100644 include/asm-sparc/sockios.h create mode 100644 include/asm-sparc/solerrno.h create mode 100644 include/asm-sparc/spinlock.h create mode 100644 include/asm-sparc/stat.h create mode 100644 include/asm-sparc/statfs.h create mode 100644 include/asm-sparc/string.h create mode 100644 include/asm-sparc/sun4paddr.h create mode 100644 include/asm-sparc/sun4prom.h create mode 100644 include/asm-sparc/sunbpp.h create mode 100644 include/asm-sparc/svr4.h create mode 100644 include/asm-sparc/swift.h create mode 100644 include/asm-sparc/sysen.h create mode 100644 include/asm-sparc/system.h create mode 100644 include/asm-sparc/termbits.h create mode 100644 include/asm-sparc/termios.h create mode 100644 include/asm-sparc/thread_info.h create mode 100644 include/asm-sparc/timer.h create mode 100644 include/asm-sparc/timex.h create mode 100644 include/asm-sparc/tlb.h create mode 100644 include/asm-sparc/tlbflush.h create mode 100644 include/asm-sparc/topology.h create mode 100644 include/asm-sparc/traps.h create mode 100644 include/asm-sparc/tsunami.h create mode 100644 include/asm-sparc/turbosparc.h create mode 100644 include/asm-sparc/types.h create mode 100644 include/asm-sparc/uaccess.h create mode 100644 include/asm-sparc/unaligned.h create mode 100644 include/asm-sparc/unistd.h create mode 100644 include/asm-sparc/user.h create mode 100644 include/asm-sparc/vac-ops.h create mode 100644 include/asm-sparc/vaddrs.h create mode 100644 include/asm-sparc/vfc_ioctls.h create mode 100644 include/asm-sparc/viking.h create mode 100644 include/asm-sparc/vuid_event.h create mode 100644 include/asm-sparc/winmacro.h create mode 100644 include/asm-sparc/xor.h create mode 100644 include/asm-sparc64/a.out.h create mode 100644 include/asm-sparc64/agp.h create mode 100644 include/asm-sparc64/apb.h create mode 100644 include/asm-sparc64/asi.h create mode 100644 include/asm-sparc64/atomic.h create mode 100644 include/asm-sparc64/audioio.h create mode 100644 include/asm-sparc64/auxio.h create mode 100644 include/asm-sparc64/bbc.h create mode 100644 include/asm-sparc64/bitops.h create mode 100644 include/asm-sparc64/bpp.h create mode 100644 include/asm-sparc64/bsderrno.h create mode 100644 include/asm-sparc64/bug.h create mode 100644 include/asm-sparc64/bugs.h create mode 100644 include/asm-sparc64/byteorder.h create mode 100644 include/asm-sparc64/cache.h create mode 100644 include/asm-sparc64/cacheflush.h create mode 100644 include/asm-sparc64/chafsr.h create mode 100644 include/asm-sparc64/checksum.h create mode 100644 include/asm-sparc64/chmctrl.h create mode 100644 include/asm-sparc64/cmt.h create mode 100644 include/asm-sparc64/compat.h create mode 100644 include/asm-sparc64/const.h create mode 100644 include/asm-sparc64/cpudata.h create mode 100644 include/asm-sparc64/cputime.h create mode 100644 include/asm-sparc64/current.h create mode 100644 include/asm-sparc64/dcr.h create mode 100644 include/asm-sparc64/dcu.h create mode 100644 include/asm-sparc64/delay.h create mode 100644 include/asm-sparc64/display7seg.h create mode 100644 include/asm-sparc64/div64.h create mode 100644 include/asm-sparc64/dma-mapping.h create mode 100644 include/asm-sparc64/dma.h create mode 100644 include/asm-sparc64/ebus.h create mode 100644 include/asm-sparc64/elf.h create mode 100644 include/asm-sparc64/envctrl.h create mode 100644 include/asm-sparc64/errno.h create mode 100644 include/asm-sparc64/estate.h create mode 100644 include/asm-sparc64/fbio.h create mode 100644 include/asm-sparc64/fcntl.h create mode 100644 include/asm-sparc64/fhc.h create mode 100644 include/asm-sparc64/floppy.h create mode 100644 include/asm-sparc64/fpumacro.h create mode 100644 include/asm-sparc64/hardirq.h create mode 100644 include/asm-sparc64/hdreg.h create mode 100644 include/asm-sparc64/head.h create mode 100644 include/asm-sparc64/hw_irq.h create mode 100644 include/asm-sparc64/ide.h create mode 100644 include/asm-sparc64/idprom.h create mode 100644 include/asm-sparc64/io.h create mode 100644 include/asm-sparc64/ioctl.h create mode 100644 include/asm-sparc64/ioctls.h create mode 100644 include/asm-sparc64/iommu.h create mode 100644 include/asm-sparc64/ipc.h create mode 100644 include/asm-sparc64/ipcbuf.h create mode 100644 include/asm-sparc64/irq.h create mode 100644 include/asm-sparc64/isa.h create mode 100644 include/asm-sparc64/kbio.h create mode 100644 include/asm-sparc64/kdebug.h create mode 100644 include/asm-sparc64/kmap_types.h create mode 100644 include/asm-sparc64/kprobes.h create mode 100644 include/asm-sparc64/linkage.h create mode 100644 include/asm-sparc64/local.h create mode 100644 include/asm-sparc64/lsu.h create mode 100644 include/asm-sparc64/mc146818rtc.h create mode 100644 include/asm-sparc64/mman.h create mode 100644 include/asm-sparc64/mmu.h create mode 100644 include/asm-sparc64/mmu_context.h create mode 100644 include/asm-sparc64/module.h create mode 100644 include/asm-sparc64/mostek.h create mode 100644 include/asm-sparc64/msgbuf.h create mode 100644 include/asm-sparc64/namei.h create mode 100644 include/asm-sparc64/ns87303.h create mode 100644 include/asm-sparc64/openprom.h create mode 100644 include/asm-sparc64/openpromio.h create mode 100644 include/asm-sparc64/oplib.h create mode 100644 include/asm-sparc64/page.h create mode 100644 include/asm-sparc64/param.h create mode 100644 include/asm-sparc64/parport.h create mode 100644 include/asm-sparc64/pbm.h create mode 100644 include/asm-sparc64/pci.h create mode 100644 include/asm-sparc64/pconf.h create mode 100644 include/asm-sparc64/percpu.h create mode 100644 include/asm-sparc64/perfctr.h create mode 100644 include/asm-sparc64/pgalloc.h create mode 100644 include/asm-sparc64/pgtable.h create mode 100644 include/asm-sparc64/pil.h create mode 100644 include/asm-sparc64/poll.h create mode 100644 include/asm-sparc64/posix_types.h create mode 100644 include/asm-sparc64/processor.h create mode 100644 include/asm-sparc64/psrcompat.h create mode 100644 include/asm-sparc64/pstate.h create mode 100644 include/asm-sparc64/ptrace.h create mode 100644 include/asm-sparc64/reg.h create mode 100644 include/asm-sparc64/resource.h create mode 100644 include/asm-sparc64/rtc.h create mode 100644 include/asm-sparc64/rwsem-const.h create mode 100644 include/asm-sparc64/rwsem.h create mode 100644 include/asm-sparc64/sbus.h create mode 100644 include/asm-sparc64/scatterlist.h create mode 100644 include/asm-sparc64/sections.h create mode 100644 include/asm-sparc64/segment.h create mode 100644 include/asm-sparc64/semaphore.h create mode 100644 include/asm-sparc64/sembuf.h create mode 100644 include/asm-sparc64/setup.h create mode 100644 include/asm-sparc64/sfp-machine.h create mode 100644 include/asm-sparc64/shmbuf.h create mode 100644 include/asm-sparc64/shmparam.h create mode 100644 include/asm-sparc64/sigcontext.h create mode 100644 include/asm-sparc64/siginfo.h create mode 100644 include/asm-sparc64/signal.h create mode 100644 include/asm-sparc64/smp.h create mode 100644 include/asm-sparc64/socket.h create mode 100644 include/asm-sparc64/sockios.h create mode 100644 include/asm-sparc64/solerrno.h create mode 100644 include/asm-sparc64/spinlock.h create mode 100644 include/asm-sparc64/spitfire.h create mode 100644 include/asm-sparc64/starfire.h create mode 100644 include/asm-sparc64/stat.h create mode 100644 include/asm-sparc64/statfs.h create mode 100644 include/asm-sparc64/string.h create mode 100644 include/asm-sparc64/sunbpp.h create mode 100644 include/asm-sparc64/svr4.h create mode 100644 include/asm-sparc64/system.h create mode 100644 include/asm-sparc64/termbits.h create mode 100644 include/asm-sparc64/termios.h create mode 100644 include/asm-sparc64/thread_info.h create mode 100644 include/asm-sparc64/timer.h create mode 100644 include/asm-sparc64/timex.h create mode 100644 include/asm-sparc64/tlb.h create mode 100644 include/asm-sparc64/tlbflush.h create mode 100644 include/asm-sparc64/topology.h create mode 100644 include/asm-sparc64/ttable.h create mode 100644 include/asm-sparc64/types.h create mode 100644 include/asm-sparc64/uaccess.h create mode 100644 include/asm-sparc64/uctx.h create mode 100644 include/asm-sparc64/unaligned.h create mode 100644 include/asm-sparc64/unistd.h create mode 100644 include/asm-sparc64/upa.h create mode 100644 include/asm-sparc64/user.h create mode 100644 include/asm-sparc64/utrap.h create mode 100644 include/asm-sparc64/vga.h create mode 100644 include/asm-sparc64/visasm.h create mode 100644 include/asm-sparc64/vuid_event.h create mode 100644 include/asm-sparc64/watchdog.h create mode 100644 include/asm-sparc64/xor.h create mode 100644 include/asm-um/a.out.h create mode 100644 include/asm-um/apic.h create mode 100644 include/asm-um/arch-signal-i386.h create mode 100644 include/asm-um/archparam-i386.h create mode 100644 include/asm-um/archparam-ppc.h create mode 100644 include/asm-um/archparam-x86_64.h create mode 100644 include/asm-um/atomic.h create mode 100644 include/asm-um/bitops.h create mode 100644 include/asm-um/boot.h create mode 100644 include/asm-um/bug.h create mode 100644 include/asm-um/bugs.h create mode 100644 include/asm-um/byteorder.h create mode 100644 include/asm-um/cache.h create mode 100644 include/asm-um/cacheflush.h create mode 100644 include/asm-um/calling.h create mode 100644 include/asm-um/checksum.h create mode 100644 include/asm-um/cobalt.h create mode 100644 include/asm-um/common.lds.S create mode 100644 include/asm-um/cpufeature.h create mode 100644 include/asm-um/cputime.h create mode 100644 include/asm-um/current.h create mode 100644 include/asm-um/delay.h create mode 100644 include/asm-um/desc.h create mode 100644 include/asm-um/div64.h create mode 100644 include/asm-um/dma-mapping.h create mode 100644 include/asm-um/dma.h create mode 100644 include/asm-um/dwarf2.h create mode 100644 include/asm-um/elf.h create mode 100644 include/asm-um/errno.h create mode 100644 include/asm-um/fcntl.h create mode 100644 include/asm-um/fixmap.h create mode 100644 include/asm-um/floppy.h create mode 100644 include/asm-um/hardirq.h create mode 100644 include/asm-um/hdreg.h create mode 100644 include/asm-um/highmem.h create mode 100644 include/asm-um/hw_irq.h create mode 100644 include/asm-um/ide.h create mode 100644 include/asm-um/io.h create mode 100644 include/asm-um/ioctl.h create mode 100644 include/asm-um/ioctls.h create mode 100644 include/asm-um/ipc.h create mode 100644 include/asm-um/ipcbuf.h create mode 100644 include/asm-um/irq.h create mode 100644 include/asm-um/irq_vectors.h create mode 100644 include/asm-um/keyboard.h create mode 100644 include/asm-um/kmap_types.h create mode 100644 include/asm-um/linkage.h create mode 100644 include/asm-um/local.h create mode 100644 include/asm-um/locks.h create mode 100644 include/asm-um/mca_dma.h create mode 100644 include/asm-um/mman.h create mode 100644 include/asm-um/mmu.h create mode 100644 include/asm-um/mmu_context.h create mode 100644 include/asm-um/module-generic.h create mode 100644 include/asm-um/module-i386.h create mode 100644 include/asm-um/module-x86_64.h create mode 100644 include/asm-um/msgbuf.h create mode 100644 include/asm-um/mtrr.h create mode 100644 include/asm-um/namei.h create mode 100644 include/asm-um/page.h create mode 100644 include/asm-um/page_offset.h create mode 100644 include/asm-um/param.h create mode 100644 include/asm-um/pci.h create mode 100644 include/asm-um/pda.h create mode 100644 include/asm-um/percpu.h create mode 100644 include/asm-um/pgalloc.h create mode 100644 include/asm-um/pgtable-2level.h create mode 100644 include/asm-um/pgtable-3level.h create mode 100644 include/asm-um/pgtable.h create mode 100644 include/asm-um/poll.h create mode 100644 include/asm-um/posix_types.h create mode 100644 include/asm-um/prctl.h create mode 100644 include/asm-um/processor-generic.h create mode 100644 include/asm-um/processor-i386.h create mode 100644 include/asm-um/processor-ppc.h create mode 100644 include/asm-um/processor-x86_64.h create mode 100644 include/asm-um/ptrace-generic.h create mode 100644 include/asm-um/ptrace-i386.h create mode 100644 include/asm-um/ptrace-x86_64.h create mode 100644 include/asm-um/resource.h create mode 100644 include/asm-um/rwlock.h create mode 100644 include/asm-um/rwsem.h create mode 100644 include/asm-um/scatterlist.h create mode 100644 include/asm-um/sections.h create mode 100644 include/asm-um/segment.h create mode 100644 include/asm-um/semaphore.h create mode 100644 include/asm-um/sembuf.h create mode 100644 include/asm-um/serial.h create mode 100644 include/asm-um/setup.h create mode 100644 include/asm-um/shmbuf.h create mode 100644 include/asm-um/shmparam.h create mode 100644 include/asm-um/sigcontext-generic.h create mode 100644 include/asm-um/sigcontext-i386.h create mode 100644 include/asm-um/sigcontext-ppc.h create mode 100644 include/asm-um/sigcontext-x86_64.h create mode 100644 include/asm-um/siginfo.h create mode 100644 include/asm-um/signal.h create mode 100644 include/asm-um/smp.h create mode 100644 include/asm-um/socket.h create mode 100644 include/asm-um/sockios.h create mode 100644 include/asm-um/spinlock.h create mode 100644 include/asm-um/stat.h create mode 100644 include/asm-um/statfs.h create mode 100644 include/asm-um/string.h create mode 100644 include/asm-um/suspend.h create mode 100644 include/asm-um/system-generic.h create mode 100644 include/asm-um/system-i386.h create mode 100644 include/asm-um/system-ppc.h create mode 100644 include/asm-um/system-x86_64.h create mode 100644 include/asm-um/termbits.h create mode 100644 include/asm-um/termios.h create mode 100644 include/asm-um/thread_info.h create mode 100644 include/asm-um/timex.h create mode 100644 include/asm-um/tlb.h create mode 100644 include/asm-um/tlbflush.h create mode 100644 include/asm-um/topology.h create mode 100644 include/asm-um/types.h create mode 100644 include/asm-um/uaccess.h create mode 100644 include/asm-um/ucontext.h create mode 100644 include/asm-um/unaligned.h create mode 100644 include/asm-um/unistd.h create mode 100644 include/asm-um/user.h create mode 100644 include/asm-um/vga.h create mode 100644 include/asm-um/vm-flags-i386.h create mode 100644 include/asm-um/vm-flags-x86_64.h create mode 100644 include/asm-um/xor.h create mode 100644 include/asm-v850/a.out.h create mode 100644 include/asm-v850/anna.h create mode 100644 include/asm-v850/as85ep1.h create mode 100644 include/asm-v850/asm.h create mode 100644 include/asm-v850/atomic.h create mode 100644 include/asm-v850/bitops.h create mode 100644 include/asm-v850/bug.h create mode 100644 include/asm-v850/bugs.h create mode 100644 include/asm-v850/byteorder.h create mode 100644 include/asm-v850/cache.h create mode 100644 include/asm-v850/cacheflush.h create mode 100644 include/asm-v850/checksum.h create mode 100644 include/asm-v850/clinkage.h create mode 100644 include/asm-v850/cputime.h create mode 100644 include/asm-v850/current.h create mode 100644 include/asm-v850/delay.h create mode 100644 include/asm-v850/div64.h create mode 100644 include/asm-v850/dma-mapping.h create mode 100644 include/asm-v850/dma.h create mode 100644 include/asm-v850/elf.h create mode 100644 include/asm-v850/entry.h create mode 100644 include/asm-v850/errno.h create mode 100644 include/asm-v850/fcntl.h create mode 100644 include/asm-v850/flat.h create mode 100644 include/asm-v850/fpga85e2c.h create mode 100644 include/asm-v850/gbus_int.h create mode 100644 include/asm-v850/hardirq.h create mode 100644 include/asm-v850/highres_timer.h create mode 100644 include/asm-v850/hw_irq.h create mode 100644 include/asm-v850/io.h create mode 100644 include/asm-v850/ioctl.h create mode 100644 include/asm-v850/ioctls.h create mode 100644 include/asm-v850/ipc.h create mode 100644 include/asm-v850/ipcbuf.h create mode 100644 include/asm-v850/irq.h create mode 100644 include/asm-v850/kmap_types.h create mode 100644 include/asm-v850/linkage.h create mode 100644 include/asm-v850/local.h create mode 100644 include/asm-v850/ma.h create mode 100644 include/asm-v850/ma1.h create mode 100644 include/asm-v850/machdep.h create mode 100644 include/asm-v850/macrology.h create mode 100644 include/asm-v850/me2.h create mode 100644 include/asm-v850/mman.h create mode 100644 include/asm-v850/mmu.h create mode 100644 include/asm-v850/mmu_context.h create mode 100644 include/asm-v850/module.h create mode 100644 include/asm-v850/msgbuf.h create mode 100644 include/asm-v850/namei.h create mode 100644 include/asm-v850/page.h create mode 100644 include/asm-v850/param.h create mode 100644 include/asm-v850/pci.h create mode 100644 include/asm-v850/percpu.h create mode 100644 include/asm-v850/pgalloc.h create mode 100644 include/asm-v850/pgtable.h create mode 100644 include/asm-v850/poll.h create mode 100644 include/asm-v850/posix_types.h create mode 100644 include/asm-v850/processor.h create mode 100644 include/asm-v850/ptrace.h create mode 100644 include/asm-v850/resource.h create mode 100644 include/asm-v850/rte_cb.h create mode 100644 include/asm-v850/rte_ma1_cb.h create mode 100644 include/asm-v850/rte_mb_a_pci.h create mode 100644 include/asm-v850/rte_me2_cb.h create mode 100644 include/asm-v850/rte_nb85e_cb.h create mode 100644 include/asm-v850/scatterlist.h create mode 100644 include/asm-v850/sections.h create mode 100644 include/asm-v850/segment.h create mode 100644 include/asm-v850/semaphore.h create mode 100644 include/asm-v850/sembuf.h create mode 100644 include/asm-v850/serial.h create mode 100644 include/asm-v850/setup.h create mode 100644 include/asm-v850/shmbuf.h create mode 100644 include/asm-v850/shmparam.h create mode 100644 include/asm-v850/sigcontext.h create mode 100644 include/asm-v850/siginfo.h create mode 100644 include/asm-v850/signal.h create mode 100644 include/asm-v850/sim.h create mode 100644 include/asm-v850/sim85e2.h create mode 100644 include/asm-v850/sim85e2c.h create mode 100644 include/asm-v850/sim85e2s.h create mode 100644 include/asm-v850/simsyscall.h create mode 100644 include/asm-v850/socket.h create mode 100644 include/asm-v850/sockios.h create mode 100644 include/asm-v850/stat.h create mode 100644 include/asm-v850/statfs.h create mode 100644 include/asm-v850/string.h create mode 100644 include/asm-v850/system.h create mode 100644 include/asm-v850/teg.h create mode 100644 include/asm-v850/termbits.h create mode 100644 include/asm-v850/termios.h create mode 100644 include/asm-v850/thread_info.h create mode 100644 include/asm-v850/timex.h create mode 100644 include/asm-v850/tlb.h create mode 100644 include/asm-v850/tlbflush.h create mode 100644 include/asm-v850/topology.h create mode 100644 include/asm-v850/types.h create mode 100644 include/asm-v850/uaccess.h create mode 100644 include/asm-v850/ucontext.h create mode 100644 include/asm-v850/unaligned.h create mode 100644 include/asm-v850/unistd.h create mode 100644 include/asm-v850/user.h create mode 100644 include/asm-v850/v850e.h create mode 100644 include/asm-v850/v850e2.h create mode 100644 include/asm-v850/v850e2_cache.h create mode 100644 include/asm-v850/v850e_cache.h create mode 100644 include/asm-v850/v850e_intc.h create mode 100644 include/asm-v850/v850e_timer_c.h create mode 100644 include/asm-v850/v850e_timer_d.h create mode 100644 include/asm-v850/v850e_uart.h create mode 100644 include/asm-v850/v850e_uarta.h create mode 100644 include/asm-v850/v850e_uartb.h create mode 100644 include/asm-v850/v850e_utils.h create mode 100644 include/asm-x86_64/8253pit.h create mode 100644 include/asm-x86_64/a.out.h create mode 100644 include/asm-x86_64/acpi.h create mode 100644 include/asm-x86_64/agp.h create mode 100644 include/asm-x86_64/apic.h create mode 100644 include/asm-x86_64/apicdef.h create mode 100644 include/asm-x86_64/atomic.h create mode 100644 include/asm-x86_64/bitops.h create mode 100644 include/asm-x86_64/boot.h create mode 100644 include/asm-x86_64/bootsetup.h create mode 100644 include/asm-x86_64/bug.h create mode 100644 include/asm-x86_64/bugs.h create mode 100644 include/asm-x86_64/byteorder.h create mode 100644 include/asm-x86_64/cache.h create mode 100644 include/asm-x86_64/cacheflush.h create mode 100644 include/asm-x86_64/calling.h create mode 100644 include/asm-x86_64/checksum.h create mode 100644 include/asm-x86_64/compat.h create mode 100644 include/asm-x86_64/cpu.h create mode 100644 include/asm-x86_64/cpufeature.h create mode 100644 include/asm-x86_64/cputime.h create mode 100644 include/asm-x86_64/current.h create mode 100644 include/asm-x86_64/debugreg.h create mode 100644 include/asm-x86_64/delay.h create mode 100644 include/asm-x86_64/desc.h create mode 100644 include/asm-x86_64/div64.h create mode 100644 include/asm-x86_64/dma-mapping.h create mode 100644 include/asm-x86_64/dma.h create mode 100644 include/asm-x86_64/dwarf2.h create mode 100644 include/asm-x86_64/e820.h create mode 100644 include/asm-x86_64/elf.h create mode 100644 include/asm-x86_64/errno.h create mode 100644 include/asm-x86_64/fcntl.h create mode 100644 include/asm-x86_64/fixmap.h create mode 100644 include/asm-x86_64/floppy.h create mode 100644 include/asm-x86_64/fpu32.h create mode 100644 include/asm-x86_64/genapic.h create mode 100644 include/asm-x86_64/hardirq.h create mode 100644 include/asm-x86_64/hdreg.h create mode 100644 include/asm-x86_64/hpet.h create mode 100644 include/asm-x86_64/hw_irq.h create mode 100644 include/asm-x86_64/i387.h create mode 100644 include/asm-x86_64/ia32.h create mode 100644 include/asm-x86_64/ia32_unistd.h create mode 100644 include/asm-x86_64/ide.h create mode 100644 include/asm-x86_64/io.h create mode 100644 include/asm-x86_64/io_apic.h create mode 100644 include/asm-x86_64/ioctl.h create mode 100644 include/asm-x86_64/ioctl32.h create mode 100644 include/asm-x86_64/ioctls.h create mode 100644 include/asm-x86_64/ipcbuf.h create mode 100644 include/asm-x86_64/ipi.h create mode 100644 include/asm-x86_64/irq.h create mode 100644 include/asm-x86_64/kdebug.h create mode 100644 include/asm-x86_64/kmap_types.h create mode 100644 include/asm-x86_64/kprobes.h create mode 100644 include/asm-x86_64/ldt.h create mode 100644 include/asm-x86_64/linkage.h create mode 100644 include/asm-x86_64/local.h create mode 100644 include/asm-x86_64/mach_apic.h create mode 100644 include/asm-x86_64/mc146818rtc.h create mode 100644 include/asm-x86_64/mce.h create mode 100644 include/asm-x86_64/mman.h create mode 100644 include/asm-x86_64/mmsegment.h create mode 100644 include/asm-x86_64/mmu.h create mode 100644 include/asm-x86_64/mmu_context.h create mode 100644 include/asm-x86_64/mmx.h create mode 100644 include/asm-x86_64/mmzone.h create mode 100644 include/asm-x86_64/module.h create mode 100644 include/asm-x86_64/mpspec.h create mode 100644 include/asm-x86_64/msgbuf.h create mode 100644 include/asm-x86_64/msi.h create mode 100644 include/asm-x86_64/msr.h create mode 100644 include/asm-x86_64/mtrr.h create mode 100644 include/asm-x86_64/namei.h create mode 100644 include/asm-x86_64/nmi.h create mode 100644 include/asm-x86_64/node.h create mode 100644 include/asm-x86_64/numa.h create mode 100644 include/asm-x86_64/numnodes.h create mode 100644 include/asm-x86_64/page.h create mode 100644 include/asm-x86_64/param.h create mode 100644 include/asm-x86_64/parport.h create mode 100644 include/asm-x86_64/pci-direct.h create mode 100644 include/asm-x86_64/pci.h create mode 100644 include/asm-x86_64/pda.h create mode 100644 include/asm-x86_64/percpu.h create mode 100644 include/asm-x86_64/pgalloc.h create mode 100644 include/asm-x86_64/pgtable.h create mode 100644 include/asm-x86_64/poll.h create mode 100644 include/asm-x86_64/posix_types.h create mode 100644 include/asm-x86_64/prctl.h create mode 100644 include/asm-x86_64/processor.h create mode 100644 include/asm-x86_64/proto.h create mode 100644 include/asm-x86_64/ptrace.h create mode 100644 include/asm-x86_64/resource.h create mode 100644 include/asm-x86_64/rtc.h create mode 100644 include/asm-x86_64/rwlock.h create mode 100644 include/asm-x86_64/rwsem.h create mode 100644 include/asm-x86_64/scatterlist.h create mode 100644 include/asm-x86_64/seccomp.h create mode 100644 include/asm-x86_64/sections.h create mode 100644 include/asm-x86_64/segment.h create mode 100644 include/asm-x86_64/semaphore.h create mode 100644 include/asm-x86_64/sembuf.h create mode 100644 include/asm-x86_64/serial.h create mode 100644 include/asm-x86_64/setup.h create mode 100644 include/asm-x86_64/shmbuf.h create mode 100644 include/asm-x86_64/shmparam.h create mode 100644 include/asm-x86_64/sigcontext.h create mode 100644 include/asm-x86_64/sigcontext32.h create mode 100644 include/asm-x86_64/siginfo.h create mode 100644 include/asm-x86_64/signal.h create mode 100644 include/asm-x86_64/smp.h create mode 100644 include/asm-x86_64/socket.h create mode 100644 include/asm-x86_64/sockios.h create mode 100644 include/asm-x86_64/spinlock.h create mode 100644 include/asm-x86_64/stat.h create mode 100644 include/asm-x86_64/statfs.h create mode 100644 include/asm-x86_64/string.h create mode 100644 include/asm-x86_64/suspend.h create mode 100644 include/asm-x86_64/swiotlb.h create mode 100644 include/asm-x86_64/system.h create mode 100644 include/asm-x86_64/termbits.h create mode 100644 include/asm-x86_64/termios.h create mode 100644 include/asm-x86_64/thread_info.h create mode 100644 include/asm-x86_64/timex.h create mode 100644 include/asm-x86_64/tlb.h create mode 100644 include/asm-x86_64/tlbflush.h create mode 100644 include/asm-x86_64/topology.h create mode 100644 include/asm-x86_64/types.h create mode 100644 include/asm-x86_64/uaccess.h create mode 100644 include/asm-x86_64/ucontext.h create mode 100644 include/asm-x86_64/unaligned.h create mode 100644 include/asm-x86_64/unistd.h create mode 100644 include/asm-x86_64/user.h create mode 100644 include/asm-x86_64/user32.h create mode 100644 include/asm-x86_64/vga.h create mode 100644 include/asm-x86_64/vsyscall.h create mode 100644 include/asm-x86_64/vsyscall32.h create mode 100644 include/asm-x86_64/xor.h create mode 100644 include/linux/8250_pci.h create mode 100644 include/linux/a.out.h create mode 100644 include/linux/ac97_codec.h create mode 100644 include/linux/acct.h create mode 100644 include/linux/acpi.h create mode 100644 include/linux/adb.h create mode 100644 include/linux/adfs_fs.h create mode 100644 include/linux/adfs_fs_i.h create mode 100644 include/linux/adfs_fs_sb.h create mode 100644 include/linux/affs_fs.h create mode 100644 include/linux/affs_hardblocks.h create mode 100644 include/linux/agp_backend.h create mode 100644 include/linux/agpgart.h create mode 100644 include/linux/aio.h create mode 100644 include/linux/aio_abi.h create mode 100644 include/linux/amifd.h create mode 100644 include/linux/amifdreg.h create mode 100644 include/linux/amigaffs.h create mode 100644 include/linux/apm_bios.h create mode 100644 include/linux/arcdevice.h create mode 100644 include/linux/ata.h create mode 100644 include/linux/atalk.h create mode 100644 include/linux/atm.h create mode 100644 include/linux/atm_eni.h create mode 100644 include/linux/atm_he.h create mode 100644 include/linux/atm_idt77105.h create mode 100644 include/linux/atm_nicstar.h create mode 100644 include/linux/atm_suni.h create mode 100644 include/linux/atm_tcp.h create mode 100644 include/linux/atm_zatm.h create mode 100644 include/linux/atmapi.h create mode 100644 include/linux/atmarp.h create mode 100644 include/linux/atmbr2684.h create mode 100644 include/linux/atmclip.h create mode 100644 include/linux/atmdev.h create mode 100644 include/linux/atmioc.h create mode 100644 include/linux/atmlec.h create mode 100644 include/linux/atmmpc.h create mode 100644 include/linux/atmppp.h create mode 100644 include/linux/atmsap.h create mode 100644 include/linux/atmsvc.h create mode 100644 include/linux/attribute_container.h create mode 100644 include/linux/audit.h create mode 100644 include/linux/auto_fs.h create mode 100644 include/linux/auto_fs4.h create mode 100644 include/linux/awe_voice.h create mode 100644 include/linux/ax25.h create mode 100644 include/linux/b1lli.h create mode 100644 include/linux/b1pcmcia.h create mode 100644 include/linux/backing-dev.h create mode 100644 include/linux/backlight.h create mode 100644 include/linux/baycom.h create mode 100644 include/linux/bcd.h create mode 100644 include/linux/bfs_fs.h create mode 100644 include/linux/binfmts.h create mode 100644 include/linux/bio.h create mode 100644 include/linux/bitmap.h create mode 100644 include/linux/bitops.h create mode 100644 include/linux/blkdev.h create mode 100644 include/linux/blkpg.h create mode 100644 include/linux/blockgroup_lock.h create mode 100644 include/linux/bootmem.h create mode 100644 include/linux/bpqether.h create mode 100644 include/linux/buffer_head.h create mode 100644 include/linux/byteorder/big_endian.h create mode 100644 include/linux/byteorder/generic.h create mode 100644 include/linux/byteorder/little_endian.h create mode 100644 include/linux/byteorder/pdp_endian.h create mode 100644 include/linux/byteorder/swab.h create mode 100644 include/linux/byteorder/swabb.h create mode 100644 include/linux/cache.h create mode 100644 include/linux/capability.h create mode 100644 include/linux/capi.h create mode 100644 include/linux/cciss_ioctl.h create mode 100644 include/linux/cd1400.h create mode 100644 include/linux/cdev.h create mode 100644 include/linux/cdk.h create mode 100644 include/linux/cdrom.h create mode 100644 include/linux/circ_buf.h create mode 100644 include/linux/cobalt-nvram.h create mode 100644 include/linux/coda.h create mode 100644 include/linux/coda_cache.h create mode 100644 include/linux/coda_fs_i.h create mode 100644 include/linux/coda_linux.h create mode 100644 include/linux/coda_proc.h create mode 100644 include/linux/coda_psdev.h create mode 100644 include/linux/coff.h create mode 100644 include/linux/com20020.h create mode 100644 include/linux/compat.h create mode 100644 include/linux/compat_ioctl.h create mode 100644 include/linux/compiler-gcc.h create mode 100644 include/linux/compiler-gcc2.h create mode 100644 include/linux/compiler-gcc3.h create mode 100644 include/linux/compiler-gcc4.h create mode 100644 include/linux/compiler-intel.h create mode 100644 include/linux/compiler.h create mode 100644 include/linux/completion.h create mode 100644 include/linux/comstats.h create mode 100644 include/linux/concap.h create mode 100644 include/linux/config.h create mode 100644 include/linux/console.h create mode 100644 include/linux/console_struct.h create mode 100644 include/linux/consolemap.h create mode 100644 include/linux/cpu.h create mode 100644 include/linux/cpufreq.h create mode 100644 include/linux/cpumask.h create mode 100644 include/linux/cpuset.h create mode 100644 include/linux/cramfs_fs.h create mode 100644 include/linux/cramfs_fs_sb.h create mode 100644 include/linux/crc-ccitt.h create mode 100644 include/linux/crc32.h create mode 100644 include/linux/crc32c.h create mode 100644 include/linux/crypto.h create mode 100644 include/linux/cryptohash.h create mode 100644 include/linux/ctype.h create mode 100644 include/linux/cuda.h create mode 100644 include/linux/cyclades.h create mode 100644 include/linux/cyclomx.h create mode 100644 include/linux/cycx_cfm.h create mode 100644 include/linux/cycx_drv.h create mode 100644 include/linux/cycx_x25.h create mode 100644 include/linux/dcache.h create mode 100644 include/linux/dcookies.h create mode 100644 include/linux/debugfs.h create mode 100644 include/linux/delay.h create mode 100644 include/linux/devfs_fs.h create mode 100644 include/linux/devfs_fs_kernel.h create mode 100644 include/linux/device-mapper.h create mode 100644 include/linux/device.h create mode 100644 include/linux/devpts_fs.h create mode 100644 include/linux/dio.h create mode 100644 include/linux/dirent.h create mode 100644 include/linux/divert.h create mode 100644 include/linux/dm-ioctl.h create mode 100644 include/linux/dma-mapping.h create mode 100644 include/linux/dmapool.h create mode 100644 include/linux/dmi.h create mode 100644 include/linux/dn.h create mode 100644 include/linux/dnotify.h create mode 100644 include/linux/dqblk_v1.h create mode 100644 include/linux/dqblk_v2.h create mode 100644 include/linux/dqblk_xfs.h create mode 100644 include/linux/ds1286.h create mode 100644 include/linux/dtlk.h create mode 100644 include/linux/dvb/audio.h create mode 100644 include/linux/dvb/ca.h create mode 100644 include/linux/dvb/dmx.h create mode 100644 include/linux/dvb/frontend.h create mode 100644 include/linux/dvb/net.h create mode 100644 include/linux/dvb/osd.h create mode 100644 include/linux/dvb/version.h create mode 100644 include/linux/dvb/video.h create mode 100644 include/linux/edd.h create mode 100644 include/linux/eeprom.h create mode 100644 include/linux/efi.h create mode 100644 include/linux/efs_dir.h create mode 100644 include/linux/efs_fs.h create mode 100644 include/linux/efs_fs_i.h create mode 100644 include/linux/efs_fs_sb.h create mode 100644 include/linux/efs_vh.h create mode 100644 include/linux/eisa.h create mode 100644 include/linux/elevator.h create mode 100644 include/linux/elf-fdpic.h create mode 100644 include/linux/elf.h create mode 100644 include/linux/elfcore.h create mode 100644 include/linux/err.h create mode 100644 include/linux/errno.h create mode 100644 include/linux/errqueue.h create mode 100644 include/linux/etherdevice.h create mode 100644 include/linux/ethtool.h create mode 100644 include/linux/eventpoll.h create mode 100644 include/linux/ext2_fs.h create mode 100644 include/linux/ext2_fs_sb.h create mode 100644 include/linux/ext3_fs.h create mode 100644 include/linux/ext3_fs_i.h create mode 100644 include/linux/ext3_fs_sb.h create mode 100644 include/linux/ext3_jbd.h create mode 100644 include/linux/fadvise.h create mode 100644 include/linux/fb.h create mode 100644 include/linux/fcdevice.h create mode 100644 include/linux/fcntl.h create mode 100644 include/linux/fd.h create mode 100644 include/linux/fd1772.h create mode 100644 include/linux/fddidevice.h create mode 100644 include/linux/fdreg.h create mode 100644 include/linux/file.h create mode 100644 include/linux/filter.h create mode 100644 include/linux/firmware.h create mode 100644 include/linux/flat.h create mode 100644 include/linux/font.h create mode 100644 include/linux/fs.h create mode 100644 include/linux/fs_struct.h create mode 100644 include/linux/fsl_devices.h create mode 100644 include/linux/ftape-header-segment.h create mode 100644 include/linux/ftape-vendors.h create mode 100644 include/linux/ftape.h create mode 100644 include/linux/futex.h create mode 100644 include/linux/gameport.h create mode 100644 include/linux/gen_stats.h create mode 100644 include/linux/generic_serial.h create mode 100644 include/linux/genhd.h create mode 100644 include/linux/gfp.h create mode 100644 include/linux/hardirq.h create mode 100644 include/linux/harrier_defs.h create mode 100644 include/linux/hash.h create mode 100644 include/linux/hayesesp.h create mode 100644 include/linux/hdlc.h create mode 100644 include/linux/hdlc/ioctl.h create mode 100644 include/linux/hdlcdrv.h create mode 100644 include/linux/hdpu_features.h create mode 100644 include/linux/hdreg.h create mode 100644 include/linux/hdsmart.h create mode 100644 include/linux/hiddev.h create mode 100644 include/linux/highmem.h create mode 100644 include/linux/highuid.h create mode 100644 include/linux/hippidevice.h create mode 100644 include/linux/hpet.h create mode 100644 include/linux/hpfs_fs.h create mode 100644 include/linux/hugetlb.h create mode 100644 include/linux/hysdn_if.h create mode 100644 include/linux/i2c-algo-bit.h create mode 100644 include/linux/i2c-algo-ite.h create mode 100644 include/linux/i2c-algo-pca.h create mode 100644 include/linux/i2c-algo-pcf.h create mode 100644 include/linux/i2c-algo-sgi.h create mode 100644 include/linux/i2c-algo-sibyte.h create mode 100644 include/linux/i2c-dev.h create mode 100644 include/linux/i2c-id.h create mode 100644 include/linux/i2c-sensor.h create mode 100644 include/linux/i2c-vid.h create mode 100644 include/linux/i2c.h create mode 100644 include/linux/i2o-dev.h create mode 100644 include/linux/i2o.h create mode 100644 include/linux/i8k.h create mode 100644 include/linux/ibmtr.h create mode 100644 include/linux/icmp.h create mode 100644 include/linux/icmpv6.h create mode 100644 include/linux/ide.h create mode 100644 include/linux/idr.h create mode 100644 include/linux/if.h create mode 100644 include/linux/if_arcnet.h create mode 100644 include/linux/if_arp.h create mode 100644 include/linux/if_bonding.h create mode 100644 include/linux/if_bridge.h create mode 100644 include/linux/if_cablemodem.h create mode 100644 include/linux/if_ec.h create mode 100644 include/linux/if_eql.h create mode 100644 include/linux/if_ether.h create mode 100644 include/linux/if_fc.h create mode 100644 include/linux/if_fddi.h create mode 100644 include/linux/if_frad.h create mode 100644 include/linux/if_hippi.h create mode 100644 include/linux/if_infiniband.h create mode 100644 include/linux/if_ltalk.h create mode 100644 include/linux/if_packet.h create mode 100644 include/linux/if_plip.h create mode 100644 include/linux/if_ppp.h create mode 100644 include/linux/if_pppox.h create mode 100644 include/linux/if_shaper.h create mode 100644 include/linux/if_slip.h create mode 100644 include/linux/if_strip.h create mode 100644 include/linux/if_tr.h create mode 100644 include/linux/if_tun.h create mode 100644 include/linux/if_tunnel.h create mode 100644 include/linux/if_vlan.h create mode 100644 include/linux/if_wanpipe.h create mode 100644 include/linux/if_wanpipe_common.h create mode 100644 include/linux/igmp.h create mode 100644 include/linux/in.h create mode 100644 include/linux/in6.h create mode 100644 include/linux/in_route.h create mode 100644 include/linux/inet.h create mode 100644 include/linux/inetdevice.h create mode 100644 include/linux/init.h create mode 100644 include/linux/init_task.h create mode 100644 include/linux/initrd.h create mode 100644 include/linux/input.h create mode 100644 include/linux/interrupt.h create mode 100644 include/linux/ioc4_common.h create mode 100644 include/linux/ioctl.h create mode 100644 include/linux/ioctl32.h create mode 100644 include/linux/ioport.h create mode 100644 include/linux/ip.h create mode 100644 include/linux/ip6_tunnel.h create mode 100644 include/linux/ip_mp_alg.h create mode 100644 include/linux/ipc.h create mode 100644 include/linux/ipmi.h create mode 100644 include/linux/ipmi_msgdefs.h create mode 100644 include/linux/ipmi_smi.h create mode 100644 include/linux/ipsec.h create mode 100644 include/linux/ipv6.h create mode 100644 include/linux/ipv6_route.h create mode 100644 include/linux/ipx.h create mode 100644 include/linux/irda.h create mode 100644 include/linux/irq.h create mode 100644 include/linux/irq_cpustat.h create mode 100644 include/linux/isapnp.h create mode 100644 include/linux/isdn.h create mode 100644 include/linux/isdn/capicmd.h create mode 100644 include/linux/isdn/capilli.h create mode 100644 include/linux/isdn/capiutil.h create mode 100644 include/linux/isdn/tpam.h create mode 100644 include/linux/isdn_divertif.h create mode 100644 include/linux/isdn_ppp.h create mode 100644 include/linux/isdnif.h create mode 100644 include/linux/isicom.h create mode 100644 include/linux/iso_fs.h create mode 100644 include/linux/iso_fs_i.h create mode 100644 include/linux/iso_fs_sb.h create mode 100644 include/linux/istallion.h create mode 100644 include/linux/ite_gpio.h create mode 100644 include/linux/ixjuser.h create mode 100644 include/linux/jbd.h create mode 100644 include/linux/jffs.h create mode 100644 include/linux/jffs2.h create mode 100644 include/linux/jffs2_fs_i.h create mode 100644 include/linux/jffs2_fs_sb.h create mode 100644 include/linux/jhash.h create mode 100644 include/linux/jiffies.h create mode 100644 include/linux/journal-head.h create mode 100644 include/linux/joystick.h create mode 100644 include/linux/kallsyms.h create mode 100644 include/linux/kbd_diacr.h create mode 100644 include/linux/kbd_kern.h create mode 100644 include/linux/kd.h create mode 100644 include/linux/kdev_t.h create mode 100644 include/linux/kernel.h create mode 100644 include/linux/kernel_stat.h create mode 100644 include/linux/kernelcapi.h create mode 100644 include/linux/key-ui.h create mode 100644 include/linux/key.h create mode 100644 include/linux/keyboard.h create mode 100644 include/linux/keyctl.h create mode 100644 include/linux/kfifo.h create mode 100644 include/linux/kmalloc_sizes.h create mode 100644 include/linux/kmod.h create mode 100644 include/linux/kobj_map.h create mode 100644 include/linux/kobject.h create mode 100644 include/linux/kobject_uevent.h create mode 100644 include/linux/kprobes.h create mode 100644 include/linux/kref.h create mode 100644 include/linux/kthread.h create mode 100644 include/linux/lapb.h create mode 100644 include/linux/lcd.h create mode 100644 include/linux/libata.h create mode 100644 include/linux/libps2.h create mode 100644 include/linux/limits.h create mode 100644 include/linux/linkage.h create mode 100644 include/linux/linux_logo.h create mode 100644 include/linux/list.h create mode 100644 include/linux/llc.h create mode 100644 include/linux/lockd/bind.h create mode 100644 include/linux/lockd/debug.h create mode 100644 include/linux/lockd/lockd.h create mode 100644 include/linux/lockd/nlm.h create mode 100644 include/linux/lockd/share.h create mode 100644 include/linux/lockd/sm_inter.h create mode 100644 include/linux/lockd/xdr.h create mode 100644 include/linux/lockd/xdr4.h create mode 100644 include/linux/loop.h create mode 100644 include/linux/lp.h create mode 100644 include/linux/major.h create mode 100644 include/linux/matroxfb.h create mode 100644 include/linux/mbcache.h create mode 100644 include/linux/mc146818rtc.h create mode 100644 include/linux/mc6821.h create mode 100644 include/linux/mca-legacy.h create mode 100644 include/linux/mca.h create mode 100644 include/linux/mempolicy.h create mode 100644 include/linux/mempool.h create mode 100644 include/linux/meye.h create mode 100644 include/linux/mii.h create mode 100644 include/linux/minix_fs.h create mode 100644 include/linux/miscdevice.h create mode 100644 include/linux/mm.h create mode 100644 include/linux/mm_inline.h create mode 100644 include/linux/mman.h create mode 100644 include/linux/mmc/card.h create mode 100644 include/linux/mmc/host.h create mode 100644 include/linux/mmc/mmc.h create mode 100644 include/linux/mmc/protocol.h create mode 100644 include/linux/mmtimer.h create mode 100644 include/linux/mmzone.h create mode 100644 include/linux/mod_devicetable.h create mode 100644 include/linux/module.h create mode 100644 include/linux/moduleloader.h create mode 100644 include/linux/moduleparam.h create mode 100644 include/linux/mount.h create mode 100644 include/linux/mpage.h create mode 100644 include/linux/mqueue.h create mode 100644 include/linux/mroute.h create mode 100644 include/linux/msdos_fs.h create mode 100644 include/linux/msg.h create mode 100644 include/linux/mtd/blktrans.h create mode 100644 include/linux/mtd/cfi.h create mode 100644 include/linux/mtd/cfi_endian.h create mode 100644 include/linux/mtd/compatmac.h create mode 100644 include/linux/mtd/concat.h create mode 100644 include/linux/mtd/doc2000.h create mode 100644 include/linux/mtd/flashchip.h create mode 100644 include/linux/mtd/ftl.h create mode 100644 include/linux/mtd/gen_probe.h create mode 100644 include/linux/mtd/iflash.h create mode 100644 include/linux/mtd/inftl.h create mode 100644 include/linux/mtd/jedec.h create mode 100644 include/linux/mtd/map.h create mode 100644 include/linux/mtd/mtd.h create mode 100644 include/linux/mtd/nand.h create mode 100644 include/linux/mtd/nand_ecc.h create mode 100644 include/linux/mtd/nftl.h create mode 100644 include/linux/mtd/partitions.h create mode 100644 include/linux/mtd/physmap.h create mode 100644 include/linux/mtd/pmc551.h create mode 100644 include/linux/mtd/xip.h create mode 100644 include/linux/mtio.h create mode 100644 include/linux/mv643xx.h create mode 100644 include/linux/n_r3964.h create mode 100644 include/linux/namei.h create mode 100644 include/linux/namespace.h create mode 100644 include/linux/nbd.h create mode 100644 include/linux/ncp.h create mode 100644 include/linux/ncp_fs.h create mode 100644 include/linux/ncp_fs_i.h create mode 100644 include/linux/ncp_fs_sb.h create mode 100644 include/linux/ncp_mount.h create mode 100644 include/linux/ncp_no.h create mode 100644 include/linux/net.h create mode 100644 include/linux/netdevice.h create mode 100644 include/linux/netfilter.h create mode 100644 include/linux/netfilter_arp.h create mode 100644 include/linux/netfilter_arp/arp_tables.h create mode 100644 include/linux/netfilter_arp/arpt_mangle.h create mode 100644 include/linux/netfilter_bridge.h create mode 100644 include/linux/netfilter_bridge/ebt_802_3.h create mode 100644 include/linux/netfilter_bridge/ebt_among.h create mode 100644 include/linux/netfilter_bridge/ebt_arp.h create mode 100644 include/linux/netfilter_bridge/ebt_arpreply.h create mode 100644 include/linux/netfilter_bridge/ebt_ip.h create mode 100644 include/linux/netfilter_bridge/ebt_limit.h create mode 100644 include/linux/netfilter_bridge/ebt_log.h create mode 100644 include/linux/netfilter_bridge/ebt_mark_m.h create mode 100644 include/linux/netfilter_bridge/ebt_mark_t.h create mode 100644 include/linux/netfilter_bridge/ebt_nat.h create mode 100644 include/linux/netfilter_bridge/ebt_pkttype.h create mode 100644 include/linux/netfilter_bridge/ebt_redirect.h create mode 100644 include/linux/netfilter_bridge/ebt_stp.h create mode 100644 include/linux/netfilter_bridge/ebt_ulog.h create mode 100644 include/linux/netfilter_bridge/ebt_vlan.h create mode 100644 include/linux/netfilter_bridge/ebtables.h create mode 100644 include/linux/netfilter_decnet.h create mode 100644 include/linux/netfilter_ipv4.h create mode 100644 include/linux/netfilter_ipv4/ip_conntrack.h create mode 100644 include/linux/netfilter_ipv4/ip_conntrack_amanda.h create mode 100644 include/linux/netfilter_ipv4/ip_conntrack_core.h create mode 100644 include/linux/netfilter_ipv4/ip_conntrack_ftp.h create mode 100644 include/linux/netfilter_ipv4/ip_conntrack_helper.h create mode 100644 include/linux/netfilter_ipv4/ip_conntrack_icmp.h create mode 100644 include/linux/netfilter_ipv4/ip_conntrack_irc.h create mode 100644 include/linux/netfilter_ipv4/ip_conntrack_protocol.h create mode 100644 include/linux/netfilter_ipv4/ip_conntrack_sctp.h create mode 100644 include/linux/netfilter_ipv4/ip_conntrack_tcp.h create mode 100644 include/linux/netfilter_ipv4/ip_conntrack_tftp.h create mode 100644 include/linux/netfilter_ipv4/ip_conntrack_tuple.h create mode 100644 include/linux/netfilter_ipv4/ip_logging.h create mode 100644 include/linux/netfilter_ipv4/ip_nat.h create mode 100644 include/linux/netfilter_ipv4/ip_nat_core.h create mode 100644 include/linux/netfilter_ipv4/ip_nat_helper.h create mode 100644 include/linux/netfilter_ipv4/ip_nat_protocol.h create mode 100644 include/linux/netfilter_ipv4/ip_nat_rule.h create mode 100644 include/linux/netfilter_ipv4/ip_queue.h create mode 100644 include/linux/netfilter_ipv4/ip_tables.h create mode 100644 include/linux/netfilter_ipv4/ipt_CLASSIFY.h create mode 100644 include/linux/netfilter_ipv4/ipt_CLUSTERIP.h create mode 100644 include/linux/netfilter_ipv4/ipt_CONNMARK.h create mode 100644 include/linux/netfilter_ipv4/ipt_DSCP.h create mode 100644 include/linux/netfilter_ipv4/ipt_ECN.h create mode 100644 include/linux/netfilter_ipv4/ipt_LOG.h create mode 100644 include/linux/netfilter_ipv4/ipt_MARK.h create mode 100644 include/linux/netfilter_ipv4/ipt_REJECT.h create mode 100644 include/linux/netfilter_ipv4/ipt_SAME.h create mode 100644 include/linux/netfilter_ipv4/ipt_TCPMSS.h create mode 100644 include/linux/netfilter_ipv4/ipt_TOS.h create mode 100644 include/linux/netfilter_ipv4/ipt_ULOG.h create mode 100644 include/linux/netfilter_ipv4/ipt_addrtype.h create mode 100644 include/linux/netfilter_ipv4/ipt_ah.h create mode 100644 include/linux/netfilter_ipv4/ipt_comment.h create mode 100644 include/linux/netfilter_ipv4/ipt_connmark.h create mode 100644 include/linux/netfilter_ipv4/ipt_conntrack.h create mode 100644 include/linux/netfilter_ipv4/ipt_dscp.h create mode 100644 include/linux/netfilter_ipv4/ipt_ecn.h create mode 100644 include/linux/netfilter_ipv4/ipt_esp.h create mode 100644 include/linux/netfilter_ipv4/ipt_hashlimit.h create mode 100644 include/linux/netfilter_ipv4/ipt_helper.h create mode 100644 include/linux/netfilter_ipv4/ipt_iprange.h create mode 100644 include/linux/netfilter_ipv4/ipt_length.h create mode 100644 include/linux/netfilter_ipv4/ipt_limit.h create mode 100644 include/linux/netfilter_ipv4/ipt_mac.h create mode 100644 include/linux/netfilter_ipv4/ipt_mark.h create mode 100644 include/linux/netfilter_ipv4/ipt_multiport.h create mode 100644 include/linux/netfilter_ipv4/ipt_owner.h create mode 100644 include/linux/netfilter_ipv4/ipt_physdev.h create mode 100644 include/linux/netfilter_ipv4/ipt_pkttype.h create mode 100644 include/linux/netfilter_ipv4/ipt_realm.h create mode 100644 include/linux/netfilter_ipv4/ipt_recent.h create mode 100644 include/linux/netfilter_ipv4/ipt_sctp.h create mode 100644 include/linux/netfilter_ipv4/ipt_state.h create mode 100644 include/linux/netfilter_ipv4/ipt_tcpmss.h create mode 100644 include/linux/netfilter_ipv4/ipt_tos.h create mode 100644 include/linux/netfilter_ipv4/ipt_ttl.h create mode 100644 include/linux/netfilter_ipv4/listhelp.h create mode 100644 include/linux/netfilter_ipv4/lockhelp.h create mode 100644 include/linux/netfilter_ipv6.h create mode 100644 include/linux/netfilter_ipv6/ip6_logging.h create mode 100644 include/linux/netfilter_ipv6/ip6_tables.h create mode 100644 include/linux/netfilter_ipv6/ip6t_LOG.h create mode 100644 include/linux/netfilter_ipv6/ip6t_MARK.h create mode 100644 include/linux/netfilter_ipv6/ip6t_ah.h create mode 100644 include/linux/netfilter_ipv6/ip6t_esp.h create mode 100644 include/linux/netfilter_ipv6/ip6t_frag.h create mode 100644 include/linux/netfilter_ipv6/ip6t_hl.h create mode 100644 include/linux/netfilter_ipv6/ip6t_ipv6header.h create mode 100644 include/linux/netfilter_ipv6/ip6t_length.h create mode 100644 include/linux/netfilter_ipv6/ip6t_limit.h create mode 100644 include/linux/netfilter_ipv6/ip6t_mac.h create mode 100644 include/linux/netfilter_ipv6/ip6t_mark.h create mode 100644 include/linux/netfilter_ipv6/ip6t_multiport.h create mode 100644 include/linux/netfilter_ipv6/ip6t_opts.h create mode 100644 include/linux/netfilter_ipv6/ip6t_owner.h create mode 100644 include/linux/netfilter_ipv6/ip6t_physdev.h create mode 100644 include/linux/netfilter_ipv6/ip6t_rt.h create mode 100644 include/linux/netfilter_logging.h create mode 100644 include/linux/netlink.h create mode 100644 include/linux/netpoll.h create mode 100644 include/linux/netrom.h create mode 100644 include/linux/nfs.h create mode 100644 include/linux/nfs2.h create mode 100644 include/linux/nfs3.h create mode 100644 include/linux/nfs4.h create mode 100644 include/linux/nfs4_acl.h create mode 100644 include/linux/nfs4_mount.h create mode 100644 include/linux/nfs_fs.h create mode 100644 include/linux/nfs_fs_i.h create mode 100644 include/linux/nfs_fs_sb.h create mode 100644 include/linux/nfs_idmap.h create mode 100644 include/linux/nfs_mount.h create mode 100644 include/linux/nfs_page.h create mode 100644 include/linux/nfs_xdr.h create mode 100644 include/linux/nfsd/auth.h create mode 100644 include/linux/nfsd/cache.h create mode 100644 include/linux/nfsd/const.h create mode 100644 include/linux/nfsd/debug.h create mode 100644 include/linux/nfsd/export.h create mode 100644 include/linux/nfsd/interface.h create mode 100644 include/linux/nfsd/nfsd.h create mode 100644 include/linux/nfsd/nfsfh.h create mode 100644 include/linux/nfsd/state.h create mode 100644 include/linux/nfsd/stats.h create mode 100644 include/linux/nfsd/syscall.h create mode 100644 include/linux/nfsd/xdr.h create mode 100644 include/linux/nfsd/xdr3.h create mode 100644 include/linux/nfsd/xdr4.h create mode 100644 include/linux/nfsd_idmap.h create mode 100644 include/linux/nls.h create mode 100644 include/linux/nmi.h create mode 100644 include/linux/node.h create mode 100644 include/linux/nodemask.h create mode 100644 include/linux/notifier.h create mode 100644 include/linux/nubus.h create mode 100644 include/linux/numa.h create mode 100644 include/linux/nvram.h create mode 100644 include/linux/openprom_fs.h create mode 100644 include/linux/oprofile.h create mode 100644 include/linux/page-flags.h create mode 100644 include/linux/pagemap.h create mode 100644 include/linux/pagevec.h create mode 100644 include/linux/param.h create mode 100644 include/linux/parport.h create mode 100644 include/linux/parport_pc.h create mode 100644 include/linux/parser.h create mode 100644 include/linux/pci-acpi.h create mode 100644 include/linux/pci-dynids.h create mode 100644 include/linux/pci.h create mode 100644 include/linux/pci_ids.h create mode 100644 include/linux/pcieport_if.h create mode 100644 include/linux/percpu.h create mode 100644 include/linux/percpu_counter.h create mode 100644 include/linux/personality.h create mode 100644 include/linux/pfkeyv2.h create mode 100644 include/linux/pg.h create mode 100644 include/linux/phonedev.h create mode 100644 include/linux/pid.h create mode 100644 include/linux/pipe_fs_i.h create mode 100644 include/linux/pkt_cls.h create mode 100644 include/linux/pkt_sched.h create mode 100644 include/linux/pktcdvd.h create mode 100644 include/linux/platform.h create mode 100644 include/linux/pm.h create mode 100644 include/linux/pmu.h create mode 100644 include/linux/pnp.h create mode 100644 include/linux/pnpbios.h create mode 100644 include/linux/poll.h create mode 100644 include/linux/posix-timers.h create mode 100644 include/linux/posix_acl.h create mode 100644 include/linux/posix_acl_xattr.h create mode 100644 include/linux/posix_types.h create mode 100644 include/linux/ppdev.h create mode 100644 include/linux/ppp-comp.h create mode 100644 include/linux/ppp_channel.h create mode 100644 include/linux/ppp_defs.h create mode 100644 include/linux/prctl.h create mode 100644 include/linux/preempt.h create mode 100644 include/linux/prefetch.h create mode 100644 include/linux/prio_tree.h create mode 100644 include/linux/proc_fs.h create mode 100644 include/linux/profile.h create mode 100644 include/linux/ps2esdi.h create mode 100644 include/linux/ptrace.h create mode 100644 include/linux/qic117.h create mode 100644 include/linux/qnx4_fs.h create mode 100644 include/linux/qnxtypes.h create mode 100644 include/linux/quota.h create mode 100644 include/linux/quotaio_v1.h create mode 100644 include/linux/quotaio_v2.h create mode 100644 include/linux/quotaops.h create mode 100644 include/linux/radeonfb.h create mode 100644 include/linux/radix-tree.h create mode 100644 include/linux/raid/linear.h create mode 100644 include/linux/raid/md.h create mode 100644 include/linux/raid/md_k.h create mode 100644 include/linux/raid/md_p.h create mode 100644 include/linux/raid/md_u.h create mode 100644 include/linux/raid/multipath.h create mode 100644 include/linux/raid/raid0.h create mode 100644 include/linux/raid/raid1.h create mode 100644 include/linux/raid/raid10.h create mode 100644 include/linux/raid/raid5.h create mode 100644 include/linux/raid/xor.h create mode 100644 include/linux/ramfs.h create mode 100644 include/linux/random.h create mode 100644 include/linux/raw.h create mode 100644 include/linux/rbtree.h create mode 100644 include/linux/rcupdate.h create mode 100644 include/linux/reboot.h create mode 100644 include/linux/reiserfs_acl.h create mode 100644 include/linux/reiserfs_fs.h create mode 100644 include/linux/reiserfs_fs_i.h create mode 100644 include/linux/reiserfs_fs_sb.h create mode 100644 include/linux/reiserfs_xattr.h create mode 100644 include/linux/resource.h create mode 100644 include/linux/rmap.h create mode 100644 include/linux/romfs_fs.h create mode 100644 include/linux/root_dev.h create mode 100644 include/linux/rose.h create mode 100644 include/linux/route.h create mode 100644 include/linux/rslib.h create mode 100644 include/linux/rtc.h create mode 100644 include/linux/rtnetlink.h create mode 100644 include/linux/rwsem-spinlock.h create mode 100644 include/linux/rwsem.h create mode 100644 include/linux/sc26198.h create mode 100644 include/linux/scatterlist.h create mode 100644 include/linux/scc.h create mode 100644 include/linux/sched.h create mode 100644 include/linux/sctp.h create mode 100644 include/linux/scx200.h create mode 100644 include/linux/scx200_gpio.h create mode 100644 include/linux/sdla.h create mode 100644 include/linux/sdla_asy.h create mode 100644 include/linux/sdla_chdlc.h create mode 100644 include/linux/sdla_fr.h create mode 100644 include/linux/sdla_ppp.h create mode 100644 include/linux/sdla_x25.h create mode 100644 include/linux/sdladrv.h create mode 100644 include/linux/sdlapci.h create mode 100644 include/linux/sdlasfm.h create mode 100644 include/linux/seccomp.h create mode 100644 include/linux/securebits.h create mode 100644 include/linux/security.h create mode 100644 include/linux/selection.h create mode 100644 include/linux/selinux_netlink.h create mode 100644 include/linux/sem.h create mode 100644 include/linux/seq_file.h create mode 100644 include/linux/seqlock.h create mode 100644 include/linux/serial.h create mode 100644 include/linux/serial167.h create mode 100644 include/linux/serialP.h create mode 100644 include/linux/serial_8250.h create mode 100644 include/linux/serial_core.h create mode 100644 include/linux/serial_reg.h create mode 100644 include/linux/serio.h create mode 100644 include/linux/shm.h create mode 100644 include/linux/shmem_fs.h create mode 100644 include/linux/signal.h create mode 100644 include/linux/skbuff.h create mode 100644 include/linux/slab.h create mode 100644 include/linux/smb.h create mode 100644 include/linux/smb_fs.h create mode 100644 include/linux/smb_fs_i.h create mode 100644 include/linux/smb_fs_sb.h create mode 100644 include/linux/smb_mount.h create mode 100644 include/linux/smbno.h create mode 100644 include/linux/smp.h create mode 100644 include/linux/smp_lock.h create mode 100644 include/linux/snmp.h create mode 100644 include/linux/socket.h create mode 100644 include/linux/sockios.h create mode 100644 include/linux/som.h create mode 100644 include/linux/sonet.h create mode 100644 include/linux/sonypi.h create mode 100644 include/linux/sort.h create mode 100644 include/linux/sound.h create mode 100644 include/linux/soundcard.h create mode 100644 include/linux/spinlock.h create mode 100644 include/linux/stallion.h create mode 100644 include/linux/stat.h create mode 100644 include/linux/statfs.h create mode 100644 include/linux/stddef.h create mode 100644 include/linux/stop_machine.h create mode 100644 include/linux/string.h create mode 100644 include/linux/stringify.h create mode 100644 include/linux/sunrpc/auth.h create mode 100644 include/linux/sunrpc/auth_gss.h create mode 100644 include/linux/sunrpc/cache.h create mode 100644 include/linux/sunrpc/clnt.h create mode 100644 include/linux/sunrpc/debug.h create mode 100644 include/linux/sunrpc/gss_api.h create mode 100644 include/linux/sunrpc/gss_asn1.h create mode 100644 include/linux/sunrpc/gss_err.h create mode 100644 include/linux/sunrpc/gss_krb5.h create mode 100644 include/linux/sunrpc/gss_spkm3.h create mode 100644 include/linux/sunrpc/msg_prot.h create mode 100644 include/linux/sunrpc/rpc_pipe_fs.h create mode 100644 include/linux/sunrpc/sched.h create mode 100644 include/linux/sunrpc/stats.h create mode 100644 include/linux/sunrpc/svc.h create mode 100644 include/linux/sunrpc/svcauth.h create mode 100644 include/linux/sunrpc/svcauth_gss.h create mode 100644 include/linux/sunrpc/svcsock.h create mode 100644 include/linux/sunrpc/timer.h create mode 100644 include/linux/sunrpc/types.h create mode 100644 include/linux/sunrpc/xdr.h create mode 100644 include/linux/sunrpc/xprt.h create mode 100644 include/linux/superhyway.h create mode 100644 include/linux/suspend.h create mode 100644 include/linux/swap.h create mode 100644 include/linux/swapops.h create mode 100644 include/linux/synclink.h create mode 100644 include/linux/sys.h create mode 100644 include/linux/syscalls.h create mode 100644 include/linux/sysctl.h create mode 100644 include/linux/sysdev.h create mode 100644 include/linux/sysfs.h create mode 100644 include/linux/sysrq.h create mode 100644 include/linux/sysv_fs.h create mode 100644 include/linux/tc_act/tc_gact.h create mode 100644 include/linux/tc_act/tc_ipt.h create mode 100644 include/linux/tc_act/tc_mirred.h create mode 100644 include/linux/tc_act/tc_pedit.h create mode 100644 include/linux/tc_ematch/tc_em_cmp.h create mode 100644 include/linux/tc_ematch/tc_em_meta.h create mode 100644 include/linux/tc_ematch/tc_em_nbyte.h create mode 100644 include/linux/tcp.h create mode 100644 include/linux/tcp_diag.h create mode 100644 include/linux/telephony.h create mode 100644 include/linux/termios.h create mode 100644 include/linux/thread_info.h create mode 100644 include/linux/threads.h create mode 100644 include/linux/ticable.h create mode 100644 include/linux/time.h create mode 100644 include/linux/timer.h create mode 100644 include/linux/times.h create mode 100644 include/linux/timex.h create mode 100644 include/linux/tiocl.h create mode 100644 include/linux/topology.h create mode 100644 include/linux/toshiba.h create mode 100644 include/linux/transport_class.h create mode 100644 include/linux/trdevice.h create mode 100644 include/linux/tty.h create mode 100644 include/linux/tty_driver.h create mode 100644 include/linux/tty_flip.h create mode 100644 include/linux/tty_ldisc.h create mode 100644 include/linux/types.h create mode 100644 include/linux/udf_fs.h create mode 100644 include/linux/udf_fs_i.h create mode 100644 include/linux/udf_fs_sb.h create mode 100644 include/linux/udp.h create mode 100644 include/linux/ufs_fs.h create mode 100644 include/linux/ufs_fs_i.h create mode 100644 include/linux/ufs_fs_sb.h create mode 100644 include/linux/uinput.h create mode 100644 include/linux/uio.h create mode 100644 include/linux/ultrasound.h create mode 100644 include/linux/umem.h create mode 100644 include/linux/un.h create mode 100644 include/linux/unistd.h create mode 100644 include/linux/usb.h create mode 100644 include/linux/usb_cdc.h create mode 100644 include/linux/usb_ch9.h create mode 100644 include/linux/usb_gadget.h create mode 100644 include/linux/usb_gadgetfs.h create mode 100644 include/linux/usb_otg.h create mode 100644 include/linux/usb_sl811.h create mode 100644 include/linux/usbdevice_fs.h create mode 100644 include/linux/user.h create mode 100644 include/linux/utime.h create mode 100644 include/linux/uts.h create mode 100644 include/linux/utsname.h create mode 100644 include/linux/vermagic.h create mode 100644 include/linux/vfs.h create mode 100644 include/linux/via.h create mode 100644 include/linux/video_decoder.h create mode 100644 include/linux/video_encoder.h create mode 100644 include/linux/videodev.h create mode 100644 include/linux/videodev2.h create mode 100644 include/linux/videotext.h create mode 100644 include/linux/vmalloc.h create mode 100644 include/linux/vt.h create mode 100644 include/linux/vt_buffer.h create mode 100644 include/linux/vt_kern.h create mode 100644 include/linux/wait.h create mode 100644 include/linux/wanpipe.h create mode 100644 include/linux/wanrouter.h create mode 100644 include/linux/watchdog.h create mode 100644 include/linux/wavefront.h create mode 100644 include/linux/wireless.h create mode 100644 include/linux/workqueue.h create mode 100644 include/linux/writeback.h create mode 100644 include/linux/x25.h create mode 100644 include/linux/xattr.h create mode 100644 include/linux/xattr_acl.h create mode 100644 include/linux/xfrm.h create mode 100644 include/linux/yam.h create mode 100644 include/linux/zconf.h create mode 100644 include/linux/zftape.h create mode 100644 include/linux/zlib.h create mode 100644 include/linux/zorro.h create mode 100644 include/linux/zorro_ids.h create mode 100644 include/linux/zutil.h create mode 100644 include/math-emu/double.h create mode 100644 include/math-emu/extended.h create mode 100644 include/math-emu/op-1.h create mode 100644 include/math-emu/op-2.h create mode 100644 include/math-emu/op-4.h create mode 100644 include/math-emu/op-8.h create mode 100644 include/math-emu/op-common.h create mode 100644 include/math-emu/quad.h create mode 100644 include/math-emu/single.h create mode 100644 include/math-emu/soft-fp.h create mode 100644 include/media/audiochip.h create mode 100644 include/media/id.h create mode 100644 include/media/ir-common.h create mode 100644 include/media/ovcamchip.h create mode 100644 include/media/saa6752hs.h create mode 100644 include/media/saa7146.h create mode 100644 include/media/saa7146_vv.h create mode 100644 include/media/tuner.h create mode 100644 include/media/tveeprom.h create mode 100644 include/media/video-buf-dvb.h create mode 100644 include/media/video-buf.h create mode 100644 include/mtd/inftl-user.h create mode 100644 include/mtd/jffs2-user.h create mode 100644 include/mtd/mtd-abi.h create mode 100644 include/mtd/mtd-user.h create mode 100644 include/mtd/nftl-user.h create mode 100644 include/net/act_api.h create mode 100644 include/net/addrconf.h create mode 100644 include/net/af_unix.h create mode 100644 include/net/ah.h create mode 100644 include/net/arp.h create mode 100644 include/net/atmclip.h create mode 100644 include/net/ax25.h create mode 100644 include/net/bluetooth/bluetooth.h create mode 100644 include/net/bluetooth/hci.h create mode 100644 include/net/bluetooth/hci_core.h create mode 100644 include/net/bluetooth/l2cap.h create mode 100644 include/net/bluetooth/rfcomm.h create mode 100644 include/net/bluetooth/sco.h create mode 100644 include/net/checksum.h create mode 100644 include/net/compat.h create mode 100644 include/net/datalink.h create mode 100644 include/net/dn.h create mode 100644 include/net/dn_dev.h create mode 100644 include/net/dn_fib.h create mode 100644 include/net/dn_neigh.h create mode 100644 include/net/dn_nsp.h create mode 100644 include/net/dn_route.h create mode 100644 include/net/dsfield.h create mode 100644 include/net/dst.h create mode 100644 include/net/esp.h create mode 100644 include/net/flow.h create mode 100644 include/net/gen_stats.h create mode 100644 include/net/icmp.h create mode 100644 include/net/if_inet6.h create mode 100644 include/net/inet_common.h create mode 100644 include/net/inet_ecn.h create mode 100644 include/net/inetpeer.h create mode 100644 include/net/ip.h create mode 100644 include/net/ip6_checksum.h create mode 100644 include/net/ip6_fib.h create mode 100644 include/net/ip6_route.h create mode 100644 include/net/ip6_tunnel.h create mode 100644 include/net/ip_fib.h create mode 100644 include/net/ip_mp_alg.h create mode 100644 include/net/ip_vs.h create mode 100644 include/net/ipcomp.h create mode 100644 include/net/ipconfig.h create mode 100644 include/net/ipip.h create mode 100644 include/net/ipv6.h create mode 100644 include/net/ipx.h create mode 100644 include/net/irda/af_irda.h create mode 100644 include/net/irda/crc.h create mode 100644 include/net/irda/discovery.h create mode 100644 include/net/irda/ircomm_core.h create mode 100644 include/net/irda/ircomm_event.h create mode 100644 include/net/irda/ircomm_lmp.h create mode 100644 include/net/irda/ircomm_param.h create mode 100644 include/net/irda/ircomm_ttp.h create mode 100644 include/net/irda/ircomm_tty.h create mode 100644 include/net/irda/ircomm_tty_attach.h create mode 100644 include/net/irda/irda.h create mode 100644 include/net/irda/irda_device.h create mode 100644 include/net/irda/iriap.h create mode 100644 include/net/irda/iriap_event.h create mode 100644 include/net/irda/irias_object.h create mode 100644 include/net/irda/irlan_client.h create mode 100644 include/net/irda/irlan_common.h create mode 100644 include/net/irda/irlan_eth.h create mode 100644 include/net/irda/irlan_event.h create mode 100644 include/net/irda/irlan_filter.h create mode 100644 include/net/irda/irlan_provider.h create mode 100644 include/net/irda/irlap.h create mode 100644 include/net/irda/irlap_event.h create mode 100644 include/net/irda/irlap_frame.h create mode 100644 include/net/irda/irlmp.h create mode 100644 include/net/irda/irlmp_event.h create mode 100644 include/net/irda/irlmp_frame.h create mode 100644 include/net/irda/irmod.h create mode 100644 include/net/irda/irqueue.h create mode 100644 include/net/irda/irttp.h create mode 100644 include/net/irda/parameters.h create mode 100644 include/net/irda/qos.h create mode 100644 include/net/irda/timer.h create mode 100644 include/net/irda/wrapper.h create mode 100644 include/net/iw_handler.h create mode 100644 include/net/lapb.h create mode 100644 include/net/llc.h create mode 100644 include/net/llc_c_ac.h create mode 100644 include/net/llc_c_ev.h create mode 100644 include/net/llc_c_st.h create mode 100644 include/net/llc_conn.h create mode 100644 include/net/llc_if.h create mode 100644 include/net/llc_pdu.h create mode 100644 include/net/llc_s_ac.h create mode 100644 include/net/llc_s_ev.h create mode 100644 include/net/llc_s_st.h create mode 100644 include/net/llc_sap.h create mode 100644 include/net/ndisc.h create mode 100644 include/net/neighbour.h create mode 100644 include/net/netrom.h create mode 100644 include/net/p8022.h create mode 100644 include/net/pkt_act.h create mode 100644 include/net/pkt_cls.h create mode 100644 include/net/pkt_sched.h create mode 100644 include/net/protocol.h create mode 100644 include/net/psnap.h create mode 100644 include/net/raw.h create mode 100644 include/net/rawv6.h create mode 100644 include/net/rose.h create mode 100644 include/net/route.h create mode 100644 include/net/sch_generic.h create mode 100644 include/net/scm.h create mode 100644 include/net/sctp/command.h create mode 100644 include/net/sctp/constants.h create mode 100644 include/net/sctp/sctp.h create mode 100644 include/net/sctp/sm.h create mode 100644 include/net/sctp/structs.h create mode 100644 include/net/sctp/tsnmap.h create mode 100644 include/net/sctp/ulpevent.h create mode 100644 include/net/sctp/ulpqueue.h create mode 100644 include/net/sctp/user.h create mode 100644 include/net/slhc_vj.h create mode 100644 include/net/snmp.h create mode 100644 include/net/sock.h create mode 100644 include/net/syncppp.h create mode 100644 include/net/tc_act/tc_gact.h create mode 100644 include/net/tc_act/tc_ipt.h create mode 100644 include/net/tc_act/tc_mirred.h create mode 100644 include/net/tc_act/tc_pedit.h create mode 100644 include/net/tcp.h create mode 100644 include/net/tcp_ecn.h create mode 100644 include/net/transp_v6.h create mode 100644 include/net/udp.h create mode 100644 include/net/x25.h create mode 100644 include/net/x25device.h create mode 100644 include/net/xfrm.h create mode 100644 include/pcmcia/bulkmem.h create mode 100644 include/pcmcia/ciscode.h create mode 100644 include/pcmcia/cisreg.h create mode 100644 include/pcmcia/cistpl.h create mode 100644 include/pcmcia/cs.h create mode 100644 include/pcmcia/cs_types.h create mode 100644 include/pcmcia/ds.h create mode 100644 include/pcmcia/mem_op.h create mode 100644 include/pcmcia/ss.h create mode 100644 include/pcmcia/version.h create mode 100644 include/rxrpc/call.h create mode 100644 include/rxrpc/connection.h create mode 100644 include/rxrpc/krxiod.h create mode 100644 include/rxrpc/krxsecd.h create mode 100644 include/rxrpc/krxtimod.h create mode 100644 include/rxrpc/message.h create mode 100644 include/rxrpc/packet.h create mode 100644 include/rxrpc/peer.h create mode 100644 include/rxrpc/rxrpc.h create mode 100644 include/rxrpc/transport.h create mode 100644 include/rxrpc/types.h create mode 100644 include/scsi/scsi.h create mode 100644 include/scsi/scsi_cmnd.h create mode 100644 include/scsi/scsi_dbg.h create mode 100644 include/scsi/scsi_device.h create mode 100644 include/scsi/scsi_devinfo.h create mode 100644 include/scsi/scsi_driver.h create mode 100644 include/scsi/scsi_eh.h create mode 100644 include/scsi/scsi_host.h create mode 100644 include/scsi/scsi_ioctl.h create mode 100644 include/scsi/scsi_request.h create mode 100644 include/scsi/scsi_tcq.h create mode 100644 include/scsi/scsi_transport.h create mode 100644 include/scsi/scsi_transport_fc.h create mode 100644 include/scsi/scsi_transport_iscsi.h create mode 100644 include/scsi/scsi_transport_spi.h create mode 100644 include/scsi/scsicam.h create mode 100644 include/scsi/sg.h create mode 100644 include/sound/ac97_codec.h create mode 100644 include/sound/ad1816a.h create mode 100644 include/sound/ad1848.h create mode 100644 include/sound/ainstr_fm.h create mode 100644 include/sound/ainstr_gf1.h create mode 100644 include/sound/ainstr_iw.h create mode 100644 include/sound/ainstr_simple.h create mode 100644 include/sound/ak4114.h create mode 100644 include/sound/ak4117.h create mode 100644 include/sound/ak4531_codec.h create mode 100644 include/sound/ak4xxx-adda.h create mode 100644 include/sound/asequencer.h create mode 100644 include/sound/asound.h create mode 100644 include/sound/asound_fm.h create mode 100644 include/sound/asoundef.h create mode 100644 include/sound/control.h create mode 100644 include/sound/core.h create mode 100644 include/sound/cs4231.h create mode 100644 include/sound/cs46xx.h create mode 100644 include/sound/cs46xx_dsp_scb_types.h create mode 100644 include/sound/cs46xx_dsp_spos.h create mode 100644 include/sound/cs46xx_dsp_task_types.h create mode 100644 include/sound/cs8403.h create mode 100644 include/sound/cs8427.h create mode 100644 include/sound/driver.h create mode 100644 include/sound/emu10k1.h create mode 100644 include/sound/emu10k1_synth.h create mode 100644 include/sound/emu8000.h create mode 100644 include/sound/emu8000_reg.h create mode 100644 include/sound/emux_legacy.h create mode 100644 include/sound/emux_synth.h create mode 100644 include/sound/es1688.h create mode 100644 include/sound/gus.h create mode 100644 include/sound/hdsp.h create mode 100644 include/sound/hwdep.h create mode 100644 include/sound/i2c.h create mode 100644 include/sound/info.h create mode 100644 include/sound/initval.h create mode 100644 include/sound/memalloc.h create mode 100644 include/sound/minors.h create mode 100644 include/sound/mixer_oss.h create mode 100644 include/sound/mpu401.h create mode 100644 include/sound/opl3.h create mode 100644 include/sound/opl4.h create mode 100644 include/sound/pcm-indirect.h create mode 100644 include/sound/pcm.h create mode 100644 include/sound/pcm_oss.h create mode 100644 include/sound/pcm_params.h create mode 100644 include/sound/rawmidi.h create mode 100644 include/sound/sb.h create mode 100644 include/sound/sb16_csp.h create mode 100644 include/sound/seq_device.h create mode 100644 include/sound/seq_instr.h create mode 100644 include/sound/seq_kernel.h create mode 100644 include/sound/seq_midi_emul.h create mode 100644 include/sound/seq_midi_event.h create mode 100644 include/sound/seq_oss.h create mode 100644 include/sound/seq_oss_legacy.h create mode 100644 include/sound/seq_virmidi.h create mode 100644 include/sound/sfnt_info.h create mode 100644 include/sound/snd_wavefront.h create mode 100644 include/sound/soundfont.h create mode 100644 include/sound/sscape_ioctl.h create mode 100644 include/sound/tea575x-tuner.h create mode 100644 include/sound/tea6330t.h create mode 100644 include/sound/timer.h create mode 100644 include/sound/trident.h create mode 100644 include/sound/uda1341.h create mode 100644 include/sound/util_mem.h create mode 100644 include/sound/version.h create mode 100644 include/sound/vx_core.h create mode 100644 include/sound/wavefront.h create mode 100644 include/sound/wavefront_fx.h create mode 100644 include/sound/ymfpci.h create mode 100644 include/video/aty128.h create mode 100644 include/video/cirrus.h create mode 100644 include/video/cvisionppc.h create mode 100644 include/video/edid.h create mode 100644 include/video/epson1355.h create mode 100644 include/video/gbe.h create mode 100644 include/video/iga.h create mode 100644 include/video/kyro.h create mode 100644 include/video/mach64.h create mode 100644 include/video/maxinefb.h create mode 100644 include/video/neomagic.h create mode 100644 include/video/newport.h create mode 100644 include/video/permedia2.h create mode 100644 include/video/pm3fb.h create mode 100644 include/video/pmag-ba-fb.h create mode 100644 include/video/pmagb-b-fb.h create mode 100644 include/video/radeon.h create mode 100644 include/video/s1d13xxxfb.h create mode 100644 include/video/s3blit.h create mode 100644 include/video/sgivw.h create mode 100644 include/video/sisfb.h create mode 100644 include/video/sstfb.h create mode 100644 include/video/tdfx.h create mode 100644 include/video/tgafb.h create mode 100644 include/video/trident.h create mode 100644 include/video/tx3912.h create mode 100644 include/video/vga.h create mode 100644 include/video/w100fb.h create mode 100644 init/Kconfig create mode 100644 init/Makefile create mode 100644 init/calibrate.c create mode 100644 init/do_mounts.c create mode 100644 init/do_mounts.h create mode 100644 init/do_mounts_devfs.c create mode 100644 init/do_mounts_initrd.c create mode 100644 init/do_mounts_md.c create mode 100644 init/do_mounts_rd.c create mode 100644 init/initramfs.c create mode 100644 init/main.c create mode 100644 init/version.c create mode 100644 ipc/Makefile create mode 100644 ipc/compat.c create mode 100644 ipc/compat_mq.c create mode 100644 ipc/mqueue.c create mode 100644 ipc/msg.c create mode 100644 ipc/msgutil.c create mode 100644 ipc/sem.c create mode 100644 ipc/shm.c create mode 100644 ipc/util.c create mode 100644 ipc/util.h create mode 100644 kernel/Makefile create mode 100644 kernel/acct.c create mode 100644 kernel/audit.c create mode 100644 kernel/auditsc.c create mode 100644 kernel/capability.c create mode 100644 kernel/compat.c create mode 100644 kernel/configs.c create mode 100644 kernel/cpu.c create mode 100644 kernel/cpuset.c create mode 100644 kernel/dma.c create mode 100644 kernel/exec_domain.c create mode 100644 kernel/exit.c create mode 100644 kernel/extable.c create mode 100644 kernel/fork.c create mode 100644 kernel/futex.c create mode 100644 kernel/intermodule.c create mode 100644 kernel/irq/Makefile create mode 100644 kernel/irq/autoprobe.c create mode 100644 kernel/irq/handle.c create mode 100644 kernel/irq/internals.h create mode 100644 kernel/irq/manage.c create mode 100644 kernel/irq/proc.c create mode 100644 kernel/irq/spurious.c create mode 100644 kernel/itimer.c create mode 100644 kernel/kallsyms.c create mode 100644 kernel/kfifo.c create mode 100644 kernel/kmod.c create mode 100644 kernel/kprobes.c create mode 100644 kernel/ksysfs.c create mode 100644 kernel/kthread.c create mode 100644 kernel/module.c create mode 100644 kernel/panic.c create mode 100644 kernel/params.c create mode 100644 kernel/pid.c create mode 100644 kernel/posix-cpu-timers.c create mode 100644 kernel/posix-timers.c create mode 100644 kernel/power/Kconfig create mode 100644 kernel/power/Makefile create mode 100644 kernel/power/console.c create mode 100644 kernel/power/disk.c create mode 100644 kernel/power/main.c create mode 100644 kernel/power/pm.c create mode 100644 kernel/power/power.h create mode 100644 kernel/power/poweroff.c create mode 100644 kernel/power/process.c create mode 100644 kernel/power/smp.c create mode 100644 kernel/power/swsusp.c create mode 100644 kernel/printk.c create mode 100644 kernel/profile.c create mode 100644 kernel/ptrace.c create mode 100644 kernel/rcupdate.c create mode 100644 kernel/resource.c create mode 100644 kernel/sched.c create mode 100644 kernel/seccomp.c create mode 100644 kernel/signal.c create mode 100644 kernel/softirq.c create mode 100644 kernel/spinlock.c create mode 100644 kernel/stop_machine.c create mode 100644 kernel/sys.c create mode 100644 kernel/sys_ni.c create mode 100644 kernel/sysctl.c create mode 100644 kernel/time.c create mode 100644 kernel/timer.c create mode 100644 kernel/uid16.c create mode 100644 kernel/user.c create mode 100644 kernel/wait.c create mode 100644 kernel/workqueue.c create mode 100644 lib/Kconfig create mode 100644 lib/Kconfig.debug create mode 100644 lib/Makefile create mode 100644 lib/bitmap.c create mode 100644 lib/bust_spinlocks.c create mode 100644 lib/cmdline.c create mode 100644 lib/crc-ccitt.c create mode 100644 lib/crc32.c create mode 100644 lib/crc32defs.h create mode 100644 lib/ctype.c create mode 100644 lib/dec_and_lock.c create mode 100644 lib/div64.c create mode 100644 lib/dump_stack.c create mode 100644 lib/errno.c create mode 100644 lib/extable.c create mode 100644 lib/find_next_bit.c create mode 100644 lib/gen_crc32table.c create mode 100644 lib/halfmd4.c create mode 100644 lib/idr.c create mode 100644 lib/inflate.c create mode 100644 lib/int_sqrt.c create mode 100644 lib/iomap.c create mode 100644 lib/kernel_lock.c create mode 100644 lib/kobject.c create mode 100644 lib/kobject_uevent.c create mode 100644 lib/kref.c create mode 100644 lib/libcrc32c.c create mode 100644 lib/parser.c create mode 100644 lib/prio_tree.c create mode 100644 lib/radix-tree.c create mode 100644 lib/rbtree.c create mode 100644 lib/reed_solomon/Makefile create mode 100644 lib/reed_solomon/decode_rs.c create mode 100644 lib/reed_solomon/encode_rs.c create mode 100644 lib/reed_solomon/reed_solomon.c create mode 100644 lib/rwsem-spinlock.c create mode 100644 lib/rwsem.c create mode 100644 lib/sha1.c create mode 100644 lib/sort.c create mode 100644 lib/string.c create mode 100644 lib/vsprintf.c create mode 100644 lib/zlib_deflate/Makefile create mode 100644 lib/zlib_deflate/deflate.c create mode 100644 lib/zlib_deflate/deflate_syms.c create mode 100644 lib/zlib_deflate/deftree.c create mode 100644 lib/zlib_deflate/defutil.h create mode 100644 lib/zlib_inflate/Makefile create mode 100644 lib/zlib_inflate/infblock.c create mode 100644 lib/zlib_inflate/infblock.h create mode 100644 lib/zlib_inflate/infcodes.c create mode 100644 lib/zlib_inflate/infcodes.h create mode 100644 lib/zlib_inflate/inffast.c create mode 100644 lib/zlib_inflate/inffast.h create mode 100644 lib/zlib_inflate/inflate.c create mode 100644 lib/zlib_inflate/inflate_syms.c create mode 100644 lib/zlib_inflate/inflate_sync.c create mode 100644 lib/zlib_inflate/inftrees.c create mode 100644 lib/zlib_inflate/inftrees.h create mode 100644 lib/zlib_inflate/infutil.c create mode 100644 lib/zlib_inflate/infutil.h create mode 100644 mm/Makefile create mode 100644 mm/bootmem.c create mode 100644 mm/fadvise.c create mode 100644 mm/filemap.c create mode 100644 mm/fremap.c create mode 100644 mm/highmem.c create mode 100644 mm/hugetlb.c create mode 100644 mm/internal.h create mode 100644 mm/madvise.c create mode 100644 mm/memory.c create mode 100644 mm/mempolicy.c create mode 100644 mm/mempool.c create mode 100644 mm/mincore.c create mode 100644 mm/mlock.c create mode 100644 mm/mmap.c create mode 100644 mm/mprotect.c create mode 100644 mm/mremap.c create mode 100644 mm/msync.c create mode 100644 mm/nommu.c create mode 100644 mm/oom_kill.c create mode 100644 mm/page-writeback.c create mode 100644 mm/page_alloc.c create mode 100644 mm/page_io.c create mode 100644 mm/pdflush.c create mode 100644 mm/prio_tree.c create mode 100644 mm/readahead.c create mode 100644 mm/rmap.c create mode 100644 mm/shmem.c create mode 100644 mm/slab.c create mode 100644 mm/swap.c create mode 100644 mm/swap_state.c create mode 100644 mm/swapfile.c create mode 100644 mm/thrash.c create mode 100644 mm/tiny-shmem.c create mode 100644 mm/truncate.c create mode 100644 mm/vmalloc.c create mode 100644 mm/vmscan.c create mode 100644 net/802/Makefile create mode 100644 net/802/fc.c create mode 100644 net/802/fddi.c create mode 100644 net/802/hippi.c create mode 100644 net/802/p8022.c create mode 100644 net/802/p8023.c create mode 100644 net/802/psnap.c create mode 100644 net/802/sysctl_net_802.c create mode 100644 net/802/tr.c create mode 100644 net/8021q/Makefile create mode 100644 net/8021q/vlan.c create mode 100644 net/8021q/vlan.h create mode 100644 net/8021q/vlan_dev.c create mode 100644 net/8021q/vlanproc.c create mode 100644 net/8021q/vlanproc.h create mode 100644 net/Kconfig create mode 100644 net/Makefile create mode 100644 net/TUNABLE create mode 100644 net/appletalk/Makefile create mode 100644 net/appletalk/aarp.c create mode 100644 net/appletalk/atalk_proc.c create mode 100644 net/appletalk/ddp.c create mode 100644 net/appletalk/dev.c create mode 100644 net/appletalk/sysctl_net_atalk.c create mode 100644 net/atm/Makefile create mode 100644 net/atm/addr.c create mode 100644 net/atm/addr.h create mode 100644 net/atm/atm_misc.c create mode 100644 net/atm/br2684.c create mode 100644 net/atm/clip.c create mode 100644 net/atm/common.c create mode 100644 net/atm/common.h create mode 100644 net/atm/ioctl.c create mode 100644 net/atm/ipcommon.c create mode 100644 net/atm/ipcommon.h create mode 100644 net/atm/lec.c create mode 100644 net/atm/lec.h create mode 100644 net/atm/lec_arpc.h create mode 100644 net/atm/mpc.c create mode 100644 net/atm/mpc.h create mode 100644 net/atm/mpoa_caches.c create mode 100644 net/atm/mpoa_caches.h create mode 100644 net/atm/mpoa_proc.c create mode 100644 net/atm/pppoatm.c create mode 100644 net/atm/proc.c create mode 100644 net/atm/protocols.h create mode 100644 net/atm/pvc.c create mode 100644 net/atm/raw.c create mode 100644 net/atm/resources.c create mode 100644 net/atm/resources.h create mode 100644 net/atm/signaling.c create mode 100644 net/atm/signaling.h create mode 100644 net/atm/svc.c create mode 100644 net/ax25/Kconfig create mode 100644 net/ax25/Makefile create mode 100644 net/ax25/TODO create mode 100644 net/ax25/af_ax25.c create mode 100644 net/ax25/ax25_addr.c create mode 100644 net/ax25/ax25_dev.c create mode 100644 net/ax25/ax25_ds_in.c create mode 100644 net/ax25/ax25_ds_subr.c create mode 100644 net/ax25/ax25_ds_timer.c create mode 100644 net/ax25/ax25_iface.c create mode 100644 net/ax25/ax25_in.c create mode 100644 net/ax25/ax25_ip.c create mode 100644 net/ax25/ax25_out.c create mode 100644 net/ax25/ax25_route.c create mode 100644 net/ax25/ax25_std_in.c create mode 100644 net/ax25/ax25_std_subr.c create mode 100644 net/ax25/ax25_std_timer.c create mode 100644 net/ax25/ax25_subr.c create mode 100644 net/ax25/ax25_timer.c create mode 100644 net/ax25/ax25_uid.c create mode 100644 net/ax25/sysctl_net_ax25.c create mode 100644 net/bluetooth/Kconfig create mode 100644 net/bluetooth/Makefile create mode 100644 net/bluetooth/af_bluetooth.c create mode 100644 net/bluetooth/bnep/Kconfig create mode 100644 net/bluetooth/bnep/Makefile create mode 100644 net/bluetooth/bnep/bnep.h create mode 100644 net/bluetooth/bnep/core.c create mode 100644 net/bluetooth/bnep/netdev.c create mode 100644 net/bluetooth/bnep/sock.c create mode 100644 net/bluetooth/cmtp/Kconfig create mode 100644 net/bluetooth/cmtp/Makefile create mode 100644 net/bluetooth/cmtp/capi.c create mode 100644 net/bluetooth/cmtp/cmtp.h create mode 100644 net/bluetooth/cmtp/core.c create mode 100644 net/bluetooth/cmtp/sock.c create mode 100644 net/bluetooth/hci_conn.c create mode 100644 net/bluetooth/hci_core.c create mode 100644 net/bluetooth/hci_event.c create mode 100644 net/bluetooth/hci_sock.c create mode 100644 net/bluetooth/hci_sysfs.c create mode 100644 net/bluetooth/hidp/Kconfig create mode 100644 net/bluetooth/hidp/Makefile create mode 100644 net/bluetooth/hidp/core.c create mode 100644 net/bluetooth/hidp/hidp.h create mode 100644 net/bluetooth/hidp/sock.c create mode 100644 net/bluetooth/l2cap.c create mode 100644 net/bluetooth/lib.c create mode 100644 net/bluetooth/rfcomm/Kconfig create mode 100644 net/bluetooth/rfcomm/Makefile create mode 100644 net/bluetooth/rfcomm/core.c create mode 100644 net/bluetooth/rfcomm/crc.c create mode 100644 net/bluetooth/rfcomm/sock.c create mode 100644 net/bluetooth/rfcomm/tty.c create mode 100644 net/bluetooth/sco.c create mode 100644 net/bridge/Makefile create mode 100644 net/bridge/br.c create mode 100644 net/bridge/br_device.c create mode 100644 net/bridge/br_fdb.c create mode 100644 net/bridge/br_forward.c create mode 100644 net/bridge/br_if.c create mode 100644 net/bridge/br_input.c create mode 100644 net/bridge/br_ioctl.c create mode 100644 net/bridge/br_netfilter.c create mode 100644 net/bridge/br_notify.c create mode 100644 net/bridge/br_private.h create mode 100644 net/bridge/br_private_stp.h create mode 100644 net/bridge/br_stp.c create mode 100644 net/bridge/br_stp_bpdu.c create mode 100644 net/bridge/br_stp_if.c create mode 100644 net/bridge/br_stp_timer.c create mode 100644 net/bridge/br_sysfs_br.c create mode 100644 net/bridge/br_sysfs_if.c create mode 100644 net/bridge/netfilter/Kconfig create mode 100644 net/bridge/netfilter/Makefile create mode 100644 net/bridge/netfilter/ebt_802_3.c create mode 100644 net/bridge/netfilter/ebt_among.c create mode 100644 net/bridge/netfilter/ebt_arp.c create mode 100644 net/bridge/netfilter/ebt_arpreply.c create mode 100644 net/bridge/netfilter/ebt_dnat.c create mode 100644 net/bridge/netfilter/ebt_ip.c create mode 100644 net/bridge/netfilter/ebt_limit.c create mode 100644 net/bridge/netfilter/ebt_log.c create mode 100644 net/bridge/netfilter/ebt_mark.c create mode 100644 net/bridge/netfilter/ebt_mark_m.c create mode 100644 net/bridge/netfilter/ebt_pkttype.c create mode 100644 net/bridge/netfilter/ebt_redirect.c create mode 100644 net/bridge/netfilter/ebt_snat.c create mode 100644 net/bridge/netfilter/ebt_stp.c create mode 100644 net/bridge/netfilter/ebt_ulog.c create mode 100644 net/bridge/netfilter/ebt_vlan.c create mode 100644 net/bridge/netfilter/ebtable_broute.c create mode 100644 net/bridge/netfilter/ebtable_filter.c create mode 100644 net/bridge/netfilter/ebtable_nat.c create mode 100644 net/bridge/netfilter/ebtables.c create mode 100644 net/compat.c create mode 100644 net/core/Makefile create mode 100644 net/core/datagram.c create mode 100644 net/core/dev.c create mode 100644 net/core/dev_mcast.c create mode 100644 net/core/dst.c create mode 100644 net/core/dv.c create mode 100644 net/core/ethtool.c create mode 100644 net/core/filter.c create mode 100644 net/core/flow.c create mode 100644 net/core/gen_estimator.c create mode 100644 net/core/gen_stats.c create mode 100644 net/core/iovec.c create mode 100644 net/core/link_watch.c create mode 100644 net/core/neighbour.c create mode 100644 net/core/net-sysfs.c create mode 100644 net/core/netfilter.c create mode 100644 net/core/netpoll.c create mode 100644 net/core/pktgen.c create mode 100644 net/core/rtnetlink.c create mode 100644 net/core/scm.c create mode 100644 net/core/skbuff.c create mode 100644 net/core/sock.c create mode 100644 net/core/stream.c create mode 100644 net/core/sysctl_net_core.c create mode 100644 net/core/utils.c create mode 100644 net/core/wireless.c create mode 100644 net/decnet/Kconfig create mode 100644 net/decnet/Makefile create mode 100644 net/decnet/README create mode 100644 net/decnet/TODO create mode 100644 net/decnet/af_decnet.c create mode 100644 net/decnet/dn_dev.c create mode 100644 net/decnet/dn_fib.c create mode 100644 net/decnet/dn_neigh.c create mode 100644 net/decnet/dn_nsp_in.c create mode 100644 net/decnet/dn_nsp_out.c create mode 100644 net/decnet/dn_route.c create mode 100644 net/decnet/dn_rules.c create mode 100644 net/decnet/dn_table.c create mode 100644 net/decnet/dn_timer.c create mode 100644 net/decnet/netfilter/Kconfig create mode 100644 net/decnet/netfilter/Makefile create mode 100644 net/decnet/netfilter/dn_rtmsg.c create mode 100644 net/decnet/sysctl_net_decnet.c create mode 100644 net/econet/Makefile create mode 100644 net/econet/af_econet.c create mode 100644 net/ethernet/Makefile create mode 100644 net/ethernet/eth.c create mode 100644 net/ethernet/pe2.c create mode 100644 net/ethernet/sysctl_net_ether.c create mode 100644 net/ipv4/Kconfig create mode 100644 net/ipv4/Makefile create mode 100644 net/ipv4/af_inet.c create mode 100644 net/ipv4/ah4.c create mode 100644 net/ipv4/arp.c create mode 100644 net/ipv4/datagram.c create mode 100644 net/ipv4/devinet.c create mode 100644 net/ipv4/esp4.c create mode 100644 net/ipv4/fib_frontend.c create mode 100644 net/ipv4/fib_hash.c create mode 100644 net/ipv4/fib_lookup.h create mode 100644 net/ipv4/fib_rules.c create mode 100644 net/ipv4/fib_semantics.c create mode 100644 net/ipv4/icmp.c create mode 100644 net/ipv4/igmp.c create mode 100644 net/ipv4/inetpeer.c create mode 100644 net/ipv4/ip_forward.c create mode 100644 net/ipv4/ip_fragment.c create mode 100644 net/ipv4/ip_gre.c create mode 100644 net/ipv4/ip_input.c create mode 100644 net/ipv4/ip_options.c create mode 100644 net/ipv4/ip_output.c create mode 100644 net/ipv4/ip_sockglue.c create mode 100644 net/ipv4/ipcomp.c create mode 100644 net/ipv4/ipconfig.c create mode 100644 net/ipv4/ipip.c create mode 100644 net/ipv4/ipmr.c create mode 100644 net/ipv4/ipvs/Kconfig create mode 100644 net/ipv4/ipvs/Makefile create mode 100644 net/ipv4/ipvs/ip_vs_app.c create mode 100644 net/ipv4/ipvs/ip_vs_conn.c create mode 100644 net/ipv4/ipvs/ip_vs_core.c create mode 100644 net/ipv4/ipvs/ip_vs_ctl.c create mode 100644 net/ipv4/ipvs/ip_vs_dh.c create mode 100644 net/ipv4/ipvs/ip_vs_est.c create mode 100644 net/ipv4/ipvs/ip_vs_ftp.c create mode 100644 net/ipv4/ipvs/ip_vs_lblc.c create mode 100644 net/ipv4/ipvs/ip_vs_lblcr.c create mode 100644 net/ipv4/ipvs/ip_vs_lc.c create mode 100644 net/ipv4/ipvs/ip_vs_nq.c create mode 100644 net/ipv4/ipvs/ip_vs_proto.c create mode 100644 net/ipv4/ipvs/ip_vs_proto_ah.c create mode 100644 net/ipv4/ipvs/ip_vs_proto_esp.c create mode 100644 net/ipv4/ipvs/ip_vs_proto_icmp.c create mode 100644 net/ipv4/ipvs/ip_vs_proto_tcp.c create mode 100644 net/ipv4/ipvs/ip_vs_proto_udp.c create mode 100644 net/ipv4/ipvs/ip_vs_rr.c create mode 100644 net/ipv4/ipvs/ip_vs_sched.c create mode 100644 net/ipv4/ipvs/ip_vs_sed.c create mode 100644 net/ipv4/ipvs/ip_vs_sh.c create mode 100644 net/ipv4/ipvs/ip_vs_sync.c create mode 100644 net/ipv4/ipvs/ip_vs_wlc.c create mode 100644 net/ipv4/ipvs/ip_vs_wrr.c create mode 100644 net/ipv4/ipvs/ip_vs_xmit.c create mode 100644 net/ipv4/multipath.c create mode 100644 net/ipv4/multipath_drr.c create mode 100644 net/ipv4/multipath_random.c create mode 100644 net/ipv4/multipath_rr.c create mode 100644 net/ipv4/multipath_wrandom.c create mode 100644 net/ipv4/netfilter/Kconfig create mode 100644 net/ipv4/netfilter/Makefile create mode 100644 net/ipv4/netfilter/arp_tables.c create mode 100644 net/ipv4/netfilter/arpt_mangle.c create mode 100644 net/ipv4/netfilter/arptable_filter.c create mode 100644 net/ipv4/netfilter/ip_conntrack_amanda.c create mode 100644 net/ipv4/netfilter/ip_conntrack_core.c create mode 100644 net/ipv4/netfilter/ip_conntrack_ftp.c create mode 100644 net/ipv4/netfilter/ip_conntrack_irc.c create mode 100644 net/ipv4/netfilter/ip_conntrack_proto_generic.c create mode 100644 net/ipv4/netfilter/ip_conntrack_proto_icmp.c create mode 100644 net/ipv4/netfilter/ip_conntrack_proto_sctp.c create mode 100644 net/ipv4/netfilter/ip_conntrack_proto_tcp.c create mode 100644 net/ipv4/netfilter/ip_conntrack_proto_udp.c create mode 100644 net/ipv4/netfilter/ip_conntrack_standalone.c create mode 100644 net/ipv4/netfilter/ip_conntrack_tftp.c create mode 100644 net/ipv4/netfilter/ip_nat_amanda.c create mode 100644 net/ipv4/netfilter/ip_nat_core.c create mode 100644 net/ipv4/netfilter/ip_nat_ftp.c create mode 100644 net/ipv4/netfilter/ip_nat_helper.c create mode 100644 net/ipv4/netfilter/ip_nat_irc.c create mode 100644 net/ipv4/netfilter/ip_nat_proto_icmp.c create mode 100644 net/ipv4/netfilter/ip_nat_proto_tcp.c create mode 100644 net/ipv4/netfilter/ip_nat_proto_udp.c create mode 100644 net/ipv4/netfilter/ip_nat_proto_unknown.c create mode 100644 net/ipv4/netfilter/ip_nat_rule.c create mode 100644 net/ipv4/netfilter/ip_nat_snmp_basic.c create mode 100644 net/ipv4/netfilter/ip_nat_standalone.c create mode 100644 net/ipv4/netfilter/ip_nat_tftp.c create mode 100644 net/ipv4/netfilter/ip_queue.c create mode 100644 net/ipv4/netfilter/ip_tables.c create mode 100644 net/ipv4/netfilter/ipt_CLASSIFY.c create mode 100644 net/ipv4/netfilter/ipt_CLUSTERIP.c create mode 100644 net/ipv4/netfilter/ipt_CONNMARK.c create mode 100644 net/ipv4/netfilter/ipt_DSCP.c create mode 100644 net/ipv4/netfilter/ipt_ECN.c create mode 100644 net/ipv4/netfilter/ipt_LOG.c create mode 100644 net/ipv4/netfilter/ipt_MARK.c create mode 100644 net/ipv4/netfilter/ipt_MASQUERADE.c create mode 100644 net/ipv4/netfilter/ipt_NETMAP.c create mode 100644 net/ipv4/netfilter/ipt_NOTRACK.c create mode 100644 net/ipv4/netfilter/ipt_REDIRECT.c create mode 100644 net/ipv4/netfilter/ipt_REJECT.c create mode 100644 net/ipv4/netfilter/ipt_SAME.c create mode 100644 net/ipv4/netfilter/ipt_TCPMSS.c create mode 100644 net/ipv4/netfilter/ipt_TOS.c create mode 100644 net/ipv4/netfilter/ipt_ULOG.c create mode 100644 net/ipv4/netfilter/ipt_addrtype.c create mode 100644 net/ipv4/netfilter/ipt_ah.c create mode 100644 net/ipv4/netfilter/ipt_comment.c create mode 100644 net/ipv4/netfilter/ipt_connmark.c create mode 100644 net/ipv4/netfilter/ipt_conntrack.c create mode 100644 net/ipv4/netfilter/ipt_dscp.c create mode 100644 net/ipv4/netfilter/ipt_ecn.c create mode 100644 net/ipv4/netfilter/ipt_esp.c create mode 100644 net/ipv4/netfilter/ipt_hashlimit.c create mode 100644 net/ipv4/netfilter/ipt_helper.c create mode 100644 net/ipv4/netfilter/ipt_iprange.c create mode 100644 net/ipv4/netfilter/ipt_length.c create mode 100644 net/ipv4/netfilter/ipt_limit.c create mode 100644 net/ipv4/netfilter/ipt_mac.c create mode 100644 net/ipv4/netfilter/ipt_mark.c create mode 100644 net/ipv4/netfilter/ipt_multiport.c create mode 100644 net/ipv4/netfilter/ipt_owner.c create mode 100644 net/ipv4/netfilter/ipt_physdev.c create mode 100644 net/ipv4/netfilter/ipt_pkttype.c create mode 100644 net/ipv4/netfilter/ipt_realm.c create mode 100644 net/ipv4/netfilter/ipt_recent.c create mode 100644 net/ipv4/netfilter/ipt_sctp.c create mode 100644 net/ipv4/netfilter/ipt_state.c create mode 100644 net/ipv4/netfilter/ipt_tcpmss.c create mode 100644 net/ipv4/netfilter/ipt_tos.c create mode 100644 net/ipv4/netfilter/ipt_ttl.c create mode 100644 net/ipv4/netfilter/iptable_filter.c create mode 100644 net/ipv4/netfilter/iptable_mangle.c create mode 100644 net/ipv4/netfilter/iptable_raw.c create mode 100644 net/ipv4/proc.c create mode 100644 net/ipv4/protocol.c create mode 100644 net/ipv4/raw.c create mode 100644 net/ipv4/route.c create mode 100644 net/ipv4/syncookies.c create mode 100644 net/ipv4/sysctl_net_ipv4.c create mode 100644 net/ipv4/tcp.c create mode 100644 net/ipv4/tcp_diag.c create mode 100644 net/ipv4/tcp_input.c create mode 100644 net/ipv4/tcp_ipv4.c create mode 100644 net/ipv4/tcp_minisocks.c create mode 100644 net/ipv4/tcp_output.c create mode 100644 net/ipv4/tcp_timer.c create mode 100644 net/ipv4/udp.c create mode 100644 net/ipv4/utils.c create mode 100644 net/ipv4/xfrm4_input.c create mode 100644 net/ipv4/xfrm4_output.c create mode 100644 net/ipv4/xfrm4_policy.c create mode 100644 net/ipv4/xfrm4_state.c create mode 100644 net/ipv4/xfrm4_tunnel.c create mode 100644 net/ipv6/Kconfig create mode 100644 net/ipv6/Makefile create mode 100644 net/ipv6/addrconf.c create mode 100644 net/ipv6/af_inet6.c create mode 100644 net/ipv6/ah6.c create mode 100644 net/ipv6/anycast.c create mode 100644 net/ipv6/datagram.c create mode 100644 net/ipv6/esp6.c create mode 100644 net/ipv6/exthdrs.c create mode 100644 net/ipv6/exthdrs_core.c create mode 100644 net/ipv6/icmp.c create mode 100644 net/ipv6/ip6_fib.c create mode 100644 net/ipv6/ip6_flowlabel.c create mode 100644 net/ipv6/ip6_input.c create mode 100644 net/ipv6/ip6_output.c create mode 100644 net/ipv6/ip6_tunnel.c create mode 100644 net/ipv6/ipcomp6.c create mode 100644 net/ipv6/ipv6_sockglue.c create mode 100644 net/ipv6/ipv6_syms.c create mode 100644 net/ipv6/mcast.c create mode 100644 net/ipv6/ndisc.c create mode 100644 net/ipv6/netfilter/Kconfig create mode 100644 net/ipv6/netfilter/Makefile create mode 100644 net/ipv6/netfilter/ip6_queue.c create mode 100644 net/ipv6/netfilter/ip6_tables.c create mode 100644 net/ipv6/netfilter/ip6t_LOG.c create mode 100644 net/ipv6/netfilter/ip6t_MARK.c create mode 100644 net/ipv6/netfilter/ip6t_ah.c create mode 100644 net/ipv6/netfilter/ip6t_dst.c create mode 100644 net/ipv6/netfilter/ip6t_esp.c create mode 100644 net/ipv6/netfilter/ip6t_eui64.c create mode 100644 net/ipv6/netfilter/ip6t_frag.c create mode 100644 net/ipv6/netfilter/ip6t_hbh.c create mode 100644 net/ipv6/netfilter/ip6t_hl.c create mode 100644 net/ipv6/netfilter/ip6t_ipv6header.c create mode 100644 net/ipv6/netfilter/ip6t_length.c create mode 100644 net/ipv6/netfilter/ip6t_limit.c create mode 100644 net/ipv6/netfilter/ip6t_mac.c create mode 100644 net/ipv6/netfilter/ip6t_mark.c create mode 100644 net/ipv6/netfilter/ip6t_multiport.c create mode 100644 net/ipv6/netfilter/ip6t_owner.c create mode 100644 net/ipv6/netfilter/ip6t_physdev.c create mode 100644 net/ipv6/netfilter/ip6t_rt.c create mode 100644 net/ipv6/netfilter/ip6table_filter.c create mode 100644 net/ipv6/netfilter/ip6table_mangle.c create mode 100644 net/ipv6/netfilter/ip6table_raw.c create mode 100644 net/ipv6/proc.c create mode 100644 net/ipv6/protocol.c create mode 100644 net/ipv6/raw.c create mode 100644 net/ipv6/reassembly.c create mode 100644 net/ipv6/route.c create mode 100644 net/ipv6/sit.c create mode 100644 net/ipv6/sysctl_net_ipv6.c create mode 100644 net/ipv6/tcp_ipv6.c create mode 100644 net/ipv6/udp.c create mode 100644 net/ipv6/xfrm6_input.c create mode 100644 net/ipv6/xfrm6_output.c create mode 100644 net/ipv6/xfrm6_policy.c create mode 100644 net/ipv6/xfrm6_state.c create mode 100644 net/ipv6/xfrm6_tunnel.c create mode 100644 net/ipx/ChangeLog create mode 100644 net/ipx/Kconfig create mode 100644 net/ipx/Makefile create mode 100644 net/ipx/af_ipx.c create mode 100644 net/ipx/ipx_proc.c create mode 100644 net/ipx/ipx_route.c create mode 100644 net/ipx/sysctl_net_ipx.c create mode 100644 net/irda/Kconfig create mode 100644 net/irda/Makefile create mode 100644 net/irda/af_irda.c create mode 100644 net/irda/discovery.c create mode 100644 net/irda/ircomm/Kconfig create mode 100644 net/irda/ircomm/Makefile create mode 100644 net/irda/ircomm/ircomm_core.c create mode 100644 net/irda/ircomm/ircomm_event.c create mode 100644 net/irda/ircomm/ircomm_lmp.c create mode 100644 net/irda/ircomm/ircomm_param.c create mode 100644 net/irda/ircomm/ircomm_ttp.c create mode 100644 net/irda/ircomm/ircomm_tty.c create mode 100644 net/irda/ircomm/ircomm_tty_attach.c create mode 100644 net/irda/ircomm/ircomm_tty_ioctl.c create mode 100644 net/irda/irda_device.c create mode 100644 net/irda/iriap.c create mode 100644 net/irda/iriap_event.c create mode 100644 net/irda/irias_object.c create mode 100644 net/irda/irlan/Kconfig create mode 100644 net/irda/irlan/Makefile create mode 100644 net/irda/irlan/irlan_client.c create mode 100644 net/irda/irlan/irlan_client_event.c create mode 100644 net/irda/irlan/irlan_common.c create mode 100644 net/irda/irlan/irlan_eth.c create mode 100644 net/irda/irlan/irlan_event.c create mode 100644 net/irda/irlan/irlan_filter.c create mode 100644 net/irda/irlan/irlan_provider.c create mode 100644 net/irda/irlan/irlan_provider_event.c create mode 100644 net/irda/irlap.c create mode 100644 net/irda/irlap_event.c create mode 100644 net/irda/irlap_frame.c create mode 100644 net/irda/irlmp.c create mode 100644 net/irda/irlmp_event.c create mode 100644 net/irda/irlmp_frame.c create mode 100644 net/irda/irmod.c create mode 100644 net/irda/irnet/Kconfig create mode 100644 net/irda/irnet/Makefile create mode 100644 net/irda/irnet/irnet.h create mode 100644 net/irda/irnet/irnet_irda.c create mode 100644 net/irda/irnet/irnet_irda.h create mode 100644 net/irda/irnet/irnet_ppp.c create mode 100644 net/irda/irnet/irnet_ppp.h create mode 100644 net/irda/irproc.c create mode 100644 net/irda/irqueue.c create mode 100644 net/irda/irsysctl.c create mode 100644 net/irda/irttp.c create mode 100644 net/irda/parameters.c create mode 100644 net/irda/qos.c create mode 100644 net/irda/timer.c create mode 100644 net/irda/wrapper.c create mode 100644 net/key/Makefile create mode 100644 net/key/af_key.c create mode 100644 net/lapb/Makefile create mode 100644 net/lapb/lapb_iface.c create mode 100644 net/lapb/lapb_in.c create mode 100644 net/lapb/lapb_out.c create mode 100644 net/lapb/lapb_subr.c create mode 100644 net/lapb/lapb_timer.c create mode 100644 net/llc/Kconfig create mode 100644 net/llc/Makefile create mode 100644 net/llc/af_llc.c create mode 100644 net/llc/llc_c_ac.c create mode 100644 net/llc/llc_c_ev.c create mode 100644 net/llc/llc_c_st.c create mode 100644 net/llc/llc_conn.c create mode 100644 net/llc/llc_core.c create mode 100644 net/llc/llc_if.c create mode 100644 net/llc/llc_input.c create mode 100644 net/llc/llc_output.c create mode 100644 net/llc/llc_output.h create mode 100644 net/llc/llc_pdu.c create mode 100644 net/llc/llc_proc.c create mode 100644 net/llc/llc_s_ac.c create mode 100644 net/llc/llc_s_ev.c create mode 100644 net/llc/llc_s_st.c create mode 100644 net/llc/llc_sap.c create mode 100644 net/llc/llc_station.c create mode 100644 net/netlink/Makefile create mode 100644 net/netlink/af_netlink.c create mode 100644 net/netrom/Makefile create mode 100644 net/netrom/af_netrom.c create mode 100644 net/netrom/nr_dev.c create mode 100644 net/netrom/nr_in.c create mode 100644 net/netrom/nr_loopback.c create mode 100644 net/netrom/nr_out.c create mode 100644 net/netrom/nr_route.c create mode 100644 net/netrom/nr_subr.c create mode 100644 net/netrom/nr_timer.c create mode 100644 net/netrom/sysctl_net_netrom.c create mode 100644 net/nonet.c create mode 100644 net/packet/Makefile create mode 100644 net/packet/af_packet.c create mode 100644 net/rose/Makefile create mode 100644 net/rose/af_rose.c create mode 100644 net/rose/rose_dev.c create mode 100644 net/rose/rose_in.c create mode 100644 net/rose/rose_link.c create mode 100644 net/rose/rose_loopback.c create mode 100644 net/rose/rose_out.c create mode 100644 net/rose/rose_route.c create mode 100644 net/rose/rose_subr.c create mode 100644 net/rose/rose_timer.c create mode 100644 net/rose/sysctl_net_rose.c create mode 100644 net/rxrpc/Makefile create mode 100644 net/rxrpc/call.c create mode 100644 net/rxrpc/connection.c create mode 100644 net/rxrpc/internal.h create mode 100644 net/rxrpc/krxiod.c create mode 100644 net/rxrpc/krxsecd.c create mode 100644 net/rxrpc/krxtimod.c create mode 100644 net/rxrpc/main.c create mode 100644 net/rxrpc/peer.c create mode 100644 net/rxrpc/proc.c create mode 100644 net/rxrpc/rxrpc_syms.c create mode 100644 net/rxrpc/sysctl.c create mode 100644 net/rxrpc/transport.c create mode 100644 net/sched/Kconfig create mode 100644 net/sched/Makefile create mode 100644 net/sched/act_api.c create mode 100644 net/sched/cls_api.c create mode 100644 net/sched/cls_basic.c create mode 100644 net/sched/cls_fw.c create mode 100644 net/sched/cls_route.c create mode 100644 net/sched/cls_rsvp.c create mode 100644 net/sched/cls_rsvp.h create mode 100644 net/sched/cls_rsvp6.c create mode 100644 net/sched/cls_tcindex.c create mode 100644 net/sched/cls_u32.c create mode 100644 net/sched/em_cmp.c create mode 100644 net/sched/em_meta.c create mode 100644 net/sched/em_nbyte.c create mode 100644 net/sched/em_u32.c create mode 100644 net/sched/ematch.c create mode 100644 net/sched/estimator.c create mode 100644 net/sched/gact.c create mode 100644 net/sched/ipt.c create mode 100644 net/sched/mirred.c create mode 100644 net/sched/pedit.c create mode 100644 net/sched/police.c create mode 100644 net/sched/sch_api.c create mode 100644 net/sched/sch_atm.c create mode 100644 net/sched/sch_cbq.c create mode 100644 net/sched/sch_dsmark.c create mode 100644 net/sched/sch_fifo.c create mode 100644 net/sched/sch_generic.c create mode 100644 net/sched/sch_gred.c create mode 100644 net/sched/sch_hfsc.c create mode 100644 net/sched/sch_htb.c create mode 100644 net/sched/sch_ingress.c create mode 100644 net/sched/sch_netem.c create mode 100644 net/sched/sch_prio.c create mode 100644 net/sched/sch_red.c create mode 100644 net/sched/sch_sfq.c create mode 100644 net/sched/sch_tbf.c create mode 100644 net/sched/sch_teql.c create mode 100644 net/sctp/Kconfig create mode 100644 net/sctp/Makefile create mode 100644 net/sctp/associola.c create mode 100644 net/sctp/bind_addr.c create mode 100644 net/sctp/chunk.c create mode 100644 net/sctp/command.c create mode 100644 net/sctp/crc32c.c create mode 100644 net/sctp/debug.c create mode 100644 net/sctp/endpointola.c create mode 100644 net/sctp/input.c create mode 100644 net/sctp/inqueue.c create mode 100644 net/sctp/ipv6.c create mode 100644 net/sctp/objcnt.c create mode 100644 net/sctp/output.c create mode 100644 net/sctp/outqueue.c create mode 100644 net/sctp/primitive.c create mode 100644 net/sctp/proc.c create mode 100644 net/sctp/protocol.c create mode 100644 net/sctp/sm_make_chunk.c create mode 100644 net/sctp/sm_sideeffect.c create mode 100644 net/sctp/sm_statefuns.c create mode 100644 net/sctp/sm_statetable.c create mode 100644 net/sctp/socket.c create mode 100644 net/sctp/ssnmap.c create mode 100644 net/sctp/sysctl.c create mode 100644 net/sctp/transport.c create mode 100644 net/sctp/tsnmap.c create mode 100644 net/sctp/ulpevent.c create mode 100644 net/sctp/ulpqueue.c create mode 100644 net/socket.c create mode 100644 net/sunrpc/Makefile create mode 100644 net/sunrpc/auth.c create mode 100644 net/sunrpc/auth_gss/Makefile create mode 100644 net/sunrpc/auth_gss/auth_gss.c create mode 100644 net/sunrpc/auth_gss/gss_generic_token.c create mode 100644 net/sunrpc/auth_gss/gss_krb5_crypto.c create mode 100644 net/sunrpc/auth_gss/gss_krb5_mech.c create mode 100644 net/sunrpc/auth_gss/gss_krb5_seal.c create mode 100644 net/sunrpc/auth_gss/gss_krb5_seqnum.c create mode 100644 net/sunrpc/auth_gss/gss_krb5_unseal.c create mode 100644 net/sunrpc/auth_gss/gss_mech_switch.c create mode 100644 net/sunrpc/auth_gss/gss_spkm3_mech.c create mode 100644 net/sunrpc/auth_gss/gss_spkm3_seal.c create mode 100644 net/sunrpc/auth_gss/gss_spkm3_token.c create mode 100644 net/sunrpc/auth_gss/gss_spkm3_unseal.c create mode 100644 net/sunrpc/auth_gss/svcauth_gss.c create mode 100644 net/sunrpc/auth_null.c create mode 100644 net/sunrpc/auth_unix.c create mode 100644 net/sunrpc/cache.c create mode 100644 net/sunrpc/clnt.c create mode 100644 net/sunrpc/pmap_clnt.c create mode 100644 net/sunrpc/rpc_pipe.c create mode 100644 net/sunrpc/sched.c create mode 100644 net/sunrpc/stats.c create mode 100644 net/sunrpc/sunrpc_syms.c create mode 100644 net/sunrpc/svc.c create mode 100644 net/sunrpc/svcauth.c create mode 100644 net/sunrpc/svcauth_unix.c create mode 100644 net/sunrpc/svcsock.c create mode 100644 net/sunrpc/sysctl.c create mode 100644 net/sunrpc/timer.c create mode 100644 net/sunrpc/xdr.c create mode 100644 net/sunrpc/xprt.c create mode 100644 net/sysctl_net.c create mode 100644 net/unix/Makefile create mode 100644 net/unix/af_unix.c create mode 100644 net/unix/garbage.c create mode 100644 net/unix/sysctl_net_unix.c create mode 100644 net/wanrouter/Makefile create mode 100644 net/wanrouter/af_wanpipe.c create mode 100644 net/wanrouter/patchlevel create mode 100644 net/wanrouter/wanmain.c create mode 100644 net/wanrouter/wanproc.c create mode 100644 net/x25/Makefile create mode 100644 net/x25/af_x25.c create mode 100644 net/x25/sysctl_net_x25.c create mode 100644 net/x25/x25_dev.c create mode 100644 net/x25/x25_facilities.c create mode 100644 net/x25/x25_in.c create mode 100644 net/x25/x25_link.c create mode 100644 net/x25/x25_out.c create mode 100644 net/x25/x25_proc.c create mode 100644 net/x25/x25_route.c create mode 100644 net/x25/x25_subr.c create mode 100644 net/x25/x25_timer.c create mode 100644 net/xfrm/Kconfig create mode 100644 net/xfrm/Makefile create mode 100644 net/xfrm/xfrm_algo.c create mode 100644 net/xfrm/xfrm_input.c create mode 100644 net/xfrm/xfrm_policy.c create mode 100644 net/xfrm/xfrm_state.c create mode 100644 net/xfrm/xfrm_user.c create mode 100755 scripts/Lindent create mode 100644 scripts/Makefile create mode 100644 scripts/Makefile.build create mode 100644 scripts/Makefile.clean create mode 100644 scripts/Makefile.host create mode 100644 scripts/Makefile.lib create mode 100644 scripts/Makefile.modinst create mode 100644 scripts/Makefile.modpost create mode 100644 scripts/basic/Makefile create mode 100644 scripts/basic/docproc.c create mode 100644 scripts/basic/fixdep.c create mode 100644 scripts/basic/split-include.c create mode 100644 scripts/bin2c.c create mode 100644 scripts/binoffset.c create mode 100755 scripts/checkconfig.pl create mode 100755 scripts/checkincludes.pl create mode 100644 scripts/checkstack.pl create mode 100755 scripts/checkversion.pl create mode 100644 scripts/conmakehash.c create mode 100755 scripts/extract-ikconfig create mode 100644 scripts/gcc-version.sh create mode 100644 scripts/gen_initramfs_list.sh create mode 100644 scripts/genksyms/Makefile create mode 100644 scripts/genksyms/genksyms.c create mode 100644 scripts/genksyms/genksyms.h create mode 100644 scripts/genksyms/keywords.c_shipped create mode 100644 scripts/genksyms/keywords.gperf create mode 100644 scripts/genksyms/lex.c_shipped create mode 100644 scripts/genksyms/lex.l create mode 100644 scripts/genksyms/parse.c_shipped create mode 100644 scripts/genksyms/parse.h_shipped create mode 100644 scripts/genksyms/parse.y create mode 100644 scripts/kallsyms.c create mode 100644 scripts/kconfig/Makefile create mode 100644 scripts/kconfig/conf.c create mode 100644 scripts/kconfig/confdata.c create mode 100644 scripts/kconfig/expr.c create mode 100644 scripts/kconfig/expr.h create mode 100644 scripts/kconfig/gconf.c create mode 100644 scripts/kconfig/gconf.glade create mode 100644 scripts/kconfig/images.c create mode 100644 scripts/kconfig/kconfig_load.c create mode 100644 scripts/kconfig/lex.zconf.c_shipped create mode 100644 scripts/kconfig/lkc.h create mode 100644 scripts/kconfig/lkc_proto.h create mode 100644 scripts/kconfig/mconf.c create mode 100644 scripts/kconfig/menu.c create mode 100644 scripts/kconfig/qconf.cc create mode 100644 scripts/kconfig/qconf.h create mode 100644 scripts/kconfig/symbol.c create mode 100644 scripts/kconfig/util.c create mode 100644 scripts/kconfig/zconf.l create mode 100644 scripts/kconfig/zconf.tab.c_shipped create mode 100644 scripts/kconfig/zconf.tab.h_shipped create mode 100644 scripts/kconfig/zconf.y create mode 100755 scripts/kernel-doc create mode 100644 scripts/ksymoops/README create mode 100644 scripts/lxdialog/BIG.FAT.WARNING create mode 100644 scripts/lxdialog/Makefile create mode 100644 scripts/lxdialog/checklist.c create mode 100644 scripts/lxdialog/colors.h create mode 100644 scripts/lxdialog/dialog.h create mode 100644 scripts/lxdialog/inputbox.c create mode 100644 scripts/lxdialog/lxdialog.c create mode 100644 scripts/lxdialog/menubox.c create mode 100644 scripts/lxdialog/msgbox.c create mode 100644 scripts/lxdialog/textbox.c create mode 100644 scripts/lxdialog/util.c create mode 100644 scripts/lxdialog/yesno.c create mode 100755 scripts/makelst create mode 100755 scripts/makeman create mode 100755 scripts/mkcompile_h create mode 100644 scripts/mkmakefile create mode 100644 scripts/mksysmap create mode 100755 scripts/mkuboot.sh create mode 100644 scripts/mkversion create mode 100644 scripts/mod/Makefile create mode 100644 scripts/mod/empty.c create mode 100644 scripts/mod/file2alias.c create mode 100644 scripts/mod/mk_elfconfig.c create mode 100644 scripts/mod/modpost.c create mode 100644 scripts/mod/modpost.h create mode 100644 scripts/mod/sumversion.c create mode 100644 scripts/namespace.pl create mode 100644 scripts/package/Makefile create mode 100644 scripts/package/builddeb create mode 100755 scripts/package/mkspec create mode 100755 scripts/patch-kernel create mode 100644 scripts/pnmtologo.c create mode 100644 scripts/reference_discarded.pl create mode 100644 scripts/reference_init.pl create mode 100644 scripts/show_delta create mode 100755 scripts/split-man create mode 100755 scripts/ver_linux create mode 100644 security/Kconfig create mode 100644 security/Makefile create mode 100644 security/capability.c create mode 100644 security/commoncap.c create mode 100644 security/dummy.c create mode 100644 security/keys/Makefile create mode 100644 security/keys/compat.c create mode 100644 security/keys/internal.h create mode 100644 security/keys/key.c create mode 100644 security/keys/keyctl.c create mode 100644 security/keys/keyring.c create mode 100644 security/keys/proc.c create mode 100644 security/keys/process_keys.c create mode 100644 security/keys/request_key.c create mode 100644 security/keys/user_defined.c create mode 100644 security/root_plug.c create mode 100644 security/seclvl.c create mode 100644 security/security.c create mode 100644 security/selinux/Kconfig create mode 100644 security/selinux/Makefile create mode 100644 security/selinux/avc.c create mode 100644 security/selinux/hooks.c create mode 100644 security/selinux/include/av_inherit.h create mode 100644 security/selinux/include/av_perm_to_string.h create mode 100644 security/selinux/include/av_permissions.h create mode 100644 security/selinux/include/avc.h create mode 100644 security/selinux/include/avc_ss.h create mode 100644 security/selinux/include/class_to_string.h create mode 100644 security/selinux/include/common_perm_to_string.h create mode 100644 security/selinux/include/conditional.h create mode 100644 security/selinux/include/flask.h create mode 100644 security/selinux/include/initial_sid_to_string.h create mode 100644 security/selinux/include/netif.h create mode 100644 security/selinux/include/objsec.h create mode 100644 security/selinux/include/security.h create mode 100644 security/selinux/netif.c create mode 100644 security/selinux/netlink.c create mode 100644 security/selinux/nlmsgtab.c create mode 100644 security/selinux/selinuxfs.c create mode 100644 security/selinux/ss/Makefile create mode 100644 security/selinux/ss/avtab.c create mode 100644 security/selinux/ss/avtab.h create mode 100644 security/selinux/ss/conditional.c create mode 100644 security/selinux/ss/conditional.h create mode 100644 security/selinux/ss/constraint.h create mode 100644 security/selinux/ss/context.h create mode 100644 security/selinux/ss/ebitmap.c create mode 100644 security/selinux/ss/ebitmap.h create mode 100644 security/selinux/ss/hashtab.c create mode 100644 security/selinux/ss/hashtab.h create mode 100644 security/selinux/ss/mls.c create mode 100644 security/selinux/ss/mls.h create mode 100644 security/selinux/ss/mls_types.h create mode 100644 security/selinux/ss/policydb.c create mode 100644 security/selinux/ss/policydb.h create mode 100644 security/selinux/ss/services.c create mode 100644 security/selinux/ss/services.h create mode 100644 security/selinux/ss/sidtab.c create mode 100644 security/selinux/ss/sidtab.h create mode 100644 security/selinux/ss/symtab.c create mode 100644 security/selinux/ss/symtab.h create mode 100644 sound/Kconfig create mode 100644 sound/Makefile create mode 100644 sound/arm/Kconfig create mode 100644 sound/arm/Makefile create mode 100644 sound/arm/sa11xx-uda1341.c create mode 100644 sound/core/Kconfig create mode 100644 sound/core/Makefile create mode 100644 sound/core/control.c create mode 100644 sound/core/control_compat.c create mode 100644 sound/core/device.c create mode 100644 sound/core/hwdep.c create mode 100644 sound/core/hwdep_compat.c create mode 100644 sound/core/info.c create mode 100644 sound/core/info_oss.c create mode 100644 sound/core/init.c create mode 100644 sound/core/isadma.c create mode 100644 sound/core/memalloc.c create mode 100644 sound/core/memory.c create mode 100644 sound/core/misc.c create mode 100644 sound/core/oss/Makefile create mode 100644 sound/core/oss/copy.c create mode 100644 sound/core/oss/io.c create mode 100644 sound/core/oss/linear.c create mode 100644 sound/core/oss/mixer_oss.c create mode 100644 sound/core/oss/mulaw.c create mode 100644 sound/core/oss/pcm_oss.c create mode 100644 sound/core/oss/pcm_plugin.c create mode 100644 sound/core/oss/pcm_plugin.h create mode 100644 sound/core/oss/plugin_ops.h create mode 100644 sound/core/oss/rate.c create mode 100644 sound/core/oss/route.c create mode 100644 sound/core/pcm.c create mode 100644 sound/core/pcm_compat.c create mode 100644 sound/core/pcm_lib.c create mode 100644 sound/core/pcm_memory.c create mode 100644 sound/core/pcm_misc.c create mode 100644 sound/core/pcm_native.c create mode 100644 sound/core/pcm_timer.c create mode 100644 sound/core/rawmidi.c create mode 100644 sound/core/rawmidi_compat.c create mode 100644 sound/core/rtctimer.c create mode 100644 sound/core/seq/Makefile create mode 100644 sound/core/seq/instr/Makefile create mode 100644 sound/core/seq/instr/ainstr_fm.c create mode 100644 sound/core/seq/instr/ainstr_gf1.c create mode 100644 sound/core/seq/instr/ainstr_iw.c create mode 100644 sound/core/seq/instr/ainstr_simple.c create mode 100644 sound/core/seq/oss/Makefile create mode 100644 sound/core/seq/oss/seq_oss.c create mode 100644 sound/core/seq/oss/seq_oss_device.h create mode 100644 sound/core/seq/oss/seq_oss_event.c create mode 100644 sound/core/seq/oss/seq_oss_event.h create mode 100644 sound/core/seq/oss/seq_oss_init.c create mode 100644 sound/core/seq/oss/seq_oss_ioctl.c create mode 100644 sound/core/seq/oss/seq_oss_midi.c create mode 100644 sound/core/seq/oss/seq_oss_midi.h create mode 100644 sound/core/seq/oss/seq_oss_readq.c create mode 100644 sound/core/seq/oss/seq_oss_readq.h create mode 100644 sound/core/seq/oss/seq_oss_rw.c create mode 100644 sound/core/seq/oss/seq_oss_synth.c create mode 100644 sound/core/seq/oss/seq_oss_synth.h create mode 100644 sound/core/seq/oss/seq_oss_timer.c create mode 100644 sound/core/seq/oss/seq_oss_timer.h create mode 100644 sound/core/seq/oss/seq_oss_writeq.c create mode 100644 sound/core/seq/oss/seq_oss_writeq.h create mode 100644 sound/core/seq/seq.c create mode 100644 sound/core/seq/seq_clientmgr.c create mode 100644 sound/core/seq/seq_clientmgr.h create mode 100644 sound/core/seq/seq_compat.c create mode 100644 sound/core/seq/seq_device.c create mode 100644 sound/core/seq/seq_dummy.c create mode 100644 sound/core/seq/seq_fifo.c create mode 100644 sound/core/seq/seq_fifo.h create mode 100644 sound/core/seq/seq_info.c create mode 100644 sound/core/seq/seq_info.h create mode 100644 sound/core/seq/seq_instr.c create mode 100644 sound/core/seq/seq_lock.c create mode 100644 sound/core/seq/seq_lock.h create mode 100644 sound/core/seq/seq_memory.c create mode 100644 sound/core/seq/seq_memory.h create mode 100644 sound/core/seq/seq_midi.c create mode 100644 sound/core/seq/seq_midi_emul.c create mode 100644 sound/core/seq/seq_midi_event.c create mode 100644 sound/core/seq/seq_ports.c create mode 100644 sound/core/seq/seq_ports.h create mode 100644 sound/core/seq/seq_prioq.c create mode 100644 sound/core/seq/seq_prioq.h create mode 100644 sound/core/seq/seq_queue.c create mode 100644 sound/core/seq/seq_queue.h create mode 100644 sound/core/seq/seq_system.c create mode 100644 sound/core/seq/seq_system.h create mode 100644 sound/core/seq/seq_timer.c create mode 100644 sound/core/seq/seq_timer.h create mode 100644 sound/core/seq/seq_virmidi.c create mode 100644 sound/core/sgbuf.c create mode 100644 sound/core/sound.c create mode 100644 sound/core/sound_oss.c create mode 100644 sound/core/timer.c create mode 100644 sound/core/timer_compat.c create mode 100644 sound/core/wrappers.c create mode 100644 sound/drivers/Kconfig create mode 100644 sound/drivers/Makefile create mode 100644 sound/drivers/dummy.c create mode 100644 sound/drivers/mpu401/Makefile create mode 100644 sound/drivers/mpu401/mpu401.c create mode 100644 sound/drivers/mpu401/mpu401_uart.c create mode 100644 sound/drivers/mtpav.c create mode 100644 sound/drivers/opl3/Makefile create mode 100644 sound/drivers/opl3/opl3_drums.c create mode 100644 sound/drivers/opl3/opl3_lib.c create mode 100644 sound/drivers/opl3/opl3_midi.c create mode 100644 sound/drivers/opl3/opl3_oss.c create mode 100644 sound/drivers/opl3/opl3_seq.c create mode 100644 sound/drivers/opl3/opl3_synth.c create mode 100644 sound/drivers/opl3/opl3_voice.h create mode 100644 sound/drivers/opl4/Makefile create mode 100644 sound/drivers/opl4/opl4_lib.c create mode 100644 sound/drivers/opl4/opl4_local.h create mode 100644 sound/drivers/opl4/opl4_mixer.c create mode 100644 sound/drivers/opl4/opl4_proc.c create mode 100644 sound/drivers/opl4/opl4_seq.c create mode 100644 sound/drivers/opl4/opl4_synth.c create mode 100644 sound/drivers/opl4/yrw801.c create mode 100644 sound/drivers/serial-u16550.c create mode 100644 sound/drivers/virmidi.c create mode 100644 sound/drivers/vx/Makefile create mode 100644 sound/drivers/vx/vx_cmd.c create mode 100644 sound/drivers/vx/vx_cmd.h create mode 100644 sound/drivers/vx/vx_core.c create mode 100644 sound/drivers/vx/vx_hwdep.c create mode 100644 sound/drivers/vx/vx_mixer.c create mode 100644 sound/drivers/vx/vx_pcm.c create mode 100644 sound/drivers/vx/vx_uer.c create mode 100644 sound/i2c/Makefile create mode 100644 sound/i2c/cs8427.c create mode 100644 sound/i2c/i2c.c create mode 100644 sound/i2c/l3/Makefile create mode 100644 sound/i2c/l3/uda1341.c create mode 100644 sound/i2c/other/Makefile create mode 100644 sound/i2c/other/ak4114.c create mode 100644 sound/i2c/other/ak4117.c create mode 100644 sound/i2c/other/ak4xxx-adda.c create mode 100644 sound/i2c/other/tea575x-tuner.c create mode 100644 sound/i2c/tea6330t.c create mode 100644 sound/isa/Kconfig create mode 100644 sound/isa/Makefile create mode 100644 sound/isa/ad1816a/Makefile create mode 100644 sound/isa/ad1816a/ad1816a.c create mode 100644 sound/isa/ad1816a/ad1816a_lib.c create mode 100644 sound/isa/ad1848/Makefile create mode 100644 sound/isa/ad1848/ad1848.c create mode 100644 sound/isa/ad1848/ad1848_lib.c create mode 100644 sound/isa/als100.c create mode 100644 sound/isa/azt2320.c create mode 100644 sound/isa/cmi8330.c create mode 100644 sound/isa/cs423x/Makefile create mode 100644 sound/isa/cs423x/cs4231.c create mode 100644 sound/isa/cs423x/cs4231_lib.c create mode 100644 sound/isa/cs423x/cs4232.c create mode 100644 sound/isa/cs423x/cs4236.c create mode 100644 sound/isa/cs423x/cs4236_lib.c create mode 100644 sound/isa/dt019x.c create mode 100644 sound/isa/es1688/Makefile create mode 100644 sound/isa/es1688/es1688.c create mode 100644 sound/isa/es1688/es1688_lib.c create mode 100644 sound/isa/es18xx.c create mode 100644 sound/isa/gus/Makefile create mode 100644 sound/isa/gus/gus_dma.c create mode 100644 sound/isa/gus/gus_dram.c create mode 100644 sound/isa/gus/gus_instr.c create mode 100644 sound/isa/gus/gus_io.c create mode 100644 sound/isa/gus/gus_irq.c create mode 100644 sound/isa/gus/gus_main.c create mode 100644 sound/isa/gus/gus_mem.c create mode 100644 sound/isa/gus/gus_mem_proc.c create mode 100644 sound/isa/gus/gus_mixer.c create mode 100644 sound/isa/gus/gus_pcm.c create mode 100644 sound/isa/gus/gus_reset.c create mode 100644 sound/isa/gus/gus_sample.c create mode 100644 sound/isa/gus/gus_simple.c create mode 100644 sound/isa/gus/gus_synth.c create mode 100644 sound/isa/gus/gus_tables.h create mode 100644 sound/isa/gus/gus_timer.c create mode 100644 sound/isa/gus/gus_uart.c create mode 100644 sound/isa/gus/gus_volume.c create mode 100644 sound/isa/gus/gusclassic.c create mode 100644 sound/isa/gus/gusextreme.c create mode 100644 sound/isa/gus/gusmax.c create mode 100644 sound/isa/gus/interwave-stb.c create mode 100644 sound/isa/gus/interwave.c create mode 100644 sound/isa/opl3sa2.c create mode 100644 sound/isa/opti9xx/Makefile create mode 100644 sound/isa/opti9xx/opti92x-ad1848.c create mode 100644 sound/isa/opti9xx/opti92x-cs4231.c create mode 100644 sound/isa/opti9xx/opti93x.c create mode 100644 sound/isa/sb/Makefile create mode 100644 sound/isa/sb/emu8000.c create mode 100644 sound/isa/sb/emu8000_callback.c create mode 100644 sound/isa/sb/emu8000_local.h create mode 100644 sound/isa/sb/emu8000_patch.c create mode 100644 sound/isa/sb/emu8000_pcm.c create mode 100644 sound/isa/sb/emu8000_synth.c create mode 100644 sound/isa/sb/es968.c create mode 100644 sound/isa/sb/sb16.c create mode 100644 sound/isa/sb/sb16_csp.c create mode 100644 sound/isa/sb/sb16_csp_codecs.h create mode 100644 sound/isa/sb/sb16_main.c create mode 100644 sound/isa/sb/sb8.c create mode 100644 sound/isa/sb/sb8_main.c create mode 100644 sound/isa/sb/sb8_midi.c create mode 100644 sound/isa/sb/sb_common.c create mode 100644 sound/isa/sb/sb_mixer.c create mode 100644 sound/isa/sb/sbawe.c create mode 100644 sound/isa/sgalaxy.c create mode 100644 sound/isa/sscape.c create mode 100644 sound/isa/wavefront/Makefile create mode 100644 sound/isa/wavefront/wavefront.c create mode 100644 sound/isa/wavefront/wavefront_fx.c create mode 100644 sound/isa/wavefront/wavefront_midi.c create mode 100644 sound/isa/wavefront/wavefront_synth.c create mode 100644 sound/last.c create mode 100644 sound/mips/Kconfig create mode 100644 sound/mips/Makefile create mode 100644 sound/mips/au1x00.c create mode 100644 sound/oss/CHANGELOG create mode 100644 sound/oss/COPYING create mode 100644 sound/oss/Kconfig create mode 100644 sound/oss/Makefile create mode 100644 sound/oss/README.FIRST create mode 100644 sound/oss/ac97.c create mode 100644 sound/oss/ac97.h create mode 100644 sound/oss/ac97_codec.c create mode 100644 sound/oss/ac97_plugin_ad1980.c create mode 100644 sound/oss/aci.c create mode 100644 sound/oss/aci.h create mode 100644 sound/oss/ad1816.c create mode 100644 sound/oss/ad1848.c create mode 100644 sound/oss/ad1848.h create mode 100644 sound/oss/ad1848_mixer.h create mode 100644 sound/oss/ad1889.c create mode 100644 sound/oss/ad1889.h create mode 100644 sound/oss/adlib_card.c create mode 100644 sound/oss/aedsp16.c create mode 100644 sound/oss/ali5455.c create mode 100644 sound/oss/au1000.c create mode 100644 sound/oss/au1550_ac97.c create mode 100644 sound/oss/audio.c create mode 100644 sound/oss/audio_syms.c create mode 100644 sound/oss/awe_hw.h create mode 100644 sound/oss/awe_wave.c create mode 100644 sound/oss/awe_wave.h create mode 100644 sound/oss/bin2hex.c create mode 100644 sound/oss/btaudio.c create mode 100644 sound/oss/cmpci.c create mode 100644 sound/oss/coproc.h create mode 100644 sound/oss/cs4232.c create mode 100644 sound/oss/cs4281/Makefile create mode 100644 sound/oss/cs4281/cs4281_hwdefs.h create mode 100644 sound/oss/cs4281/cs4281_wrapper-24.c create mode 100644 sound/oss/cs4281/cs4281m.c create mode 100644 sound/oss/cs4281/cs4281pm-24.c create mode 100644 sound/oss/cs4281/cs4281pm.h create mode 100644 sound/oss/cs461x.h create mode 100644 sound/oss/cs461x_image.h create mode 100644 sound/oss/cs46xx.c create mode 100644 sound/oss/cs46xx_wrapper-24.h create mode 100644 sound/oss/cs46xxpm-24.h create mode 100644 sound/oss/cs46xxpm.h create mode 100644 sound/oss/dev_table.c create mode 100644 sound/oss/dev_table.h create mode 100644 sound/oss/dm.h create mode 100644 sound/oss/dmabuf.c create mode 100644 sound/oss/dmasound/Kconfig create mode 100644 sound/oss/dmasound/Makefile create mode 100644 sound/oss/dmasound/awacs_defs.h create mode 100644 sound/oss/dmasound/dac3550a.c create mode 100644 sound/oss/dmasound/dmasound.h create mode 100644 sound/oss/dmasound/dmasound_atari.c create mode 100644 sound/oss/dmasound/dmasound_awacs.c create mode 100644 sound/oss/dmasound/dmasound_core.c create mode 100644 sound/oss/dmasound/dmasound_paula.c create mode 100644 sound/oss/dmasound/dmasound_q40.c create mode 100644 sound/oss/dmasound/tas3001c.c create mode 100644 sound/oss/dmasound/tas3001c.h create mode 100644 sound/oss/dmasound/tas3001c_tables.c create mode 100644 sound/oss/dmasound/tas3004.c create mode 100644 sound/oss/dmasound/tas3004.h create mode 100644 sound/oss/dmasound/tas3004_tables.c create mode 100644 sound/oss/dmasound/tas_common.c create mode 100644 sound/oss/dmasound/tas_common.h create mode 100644 sound/oss/dmasound/tas_eq_prefs.h create mode 100644 sound/oss/dmasound/tas_ioctl.h create mode 100644 sound/oss/dmasound/trans_16.c create mode 100644 sound/oss/emu10k1/8010.h create mode 100644 sound/oss/emu10k1/Makefile create mode 100644 sound/oss/emu10k1/audio.c create mode 100644 sound/oss/emu10k1/audio.h create mode 100644 sound/oss/emu10k1/cardmi.c create mode 100644 sound/oss/emu10k1/cardmi.h create mode 100644 sound/oss/emu10k1/cardmo.c create mode 100644 sound/oss/emu10k1/cardmo.h create mode 100644 sound/oss/emu10k1/cardwi.c create mode 100644 sound/oss/emu10k1/cardwi.h create mode 100644 sound/oss/emu10k1/cardwo.c create mode 100644 sound/oss/emu10k1/cardwo.h create mode 100644 sound/oss/emu10k1/ecard.c create mode 100644 sound/oss/emu10k1/ecard.h create mode 100644 sound/oss/emu10k1/efxmgr.c create mode 100644 sound/oss/emu10k1/efxmgr.h create mode 100644 sound/oss/emu10k1/emuadxmg.c create mode 100644 sound/oss/emu10k1/hwaccess.c create mode 100644 sound/oss/emu10k1/hwaccess.h create mode 100644 sound/oss/emu10k1/icardmid.h create mode 100644 sound/oss/emu10k1/icardwav.h create mode 100644 sound/oss/emu10k1/irqmgr.c create mode 100644 sound/oss/emu10k1/irqmgr.h create mode 100644 sound/oss/emu10k1/main.c create mode 100644 sound/oss/emu10k1/midi.c create mode 100644 sound/oss/emu10k1/midi.h create mode 100644 sound/oss/emu10k1/mixer.c create mode 100644 sound/oss/emu10k1/passthrough.c create mode 100644 sound/oss/emu10k1/passthrough.h create mode 100644 sound/oss/emu10k1/recmgr.c create mode 100644 sound/oss/emu10k1/recmgr.h create mode 100644 sound/oss/emu10k1/timer.c create mode 100644 sound/oss/emu10k1/timer.h create mode 100644 sound/oss/emu10k1/voicemgr.c create mode 100644 sound/oss/emu10k1/voicemgr.h create mode 100644 sound/oss/es1370.c create mode 100644 sound/oss/es1371.c create mode 100644 sound/oss/esssolo1.c create mode 100644 sound/oss/forte.c create mode 100644 sound/oss/gus.h create mode 100644 sound/oss/gus_card.c create mode 100644 sound/oss/gus_hw.h create mode 100644 sound/oss/gus_linearvol.h create mode 100644 sound/oss/gus_midi.c create mode 100644 sound/oss/gus_vol.c create mode 100644 sound/oss/gus_wave.c create mode 100644 sound/oss/hal2.c create mode 100644 sound/oss/hal2.h create mode 100644 sound/oss/harmony.c create mode 100644 sound/oss/hex2hex.c create mode 100644 sound/oss/i810_audio.c create mode 100644 sound/oss/ics2101.c create mode 100644 sound/oss/ite8172.c create mode 100644 sound/oss/iwmem.h create mode 100644 sound/oss/kahlua.c create mode 100644 sound/oss/mad16.c create mode 100644 sound/oss/maestro.c create mode 100644 sound/oss/maestro.h create mode 100644 sound/oss/maestro3.c create mode 100644 sound/oss/maestro3.h create mode 100644 sound/oss/maui.c create mode 100644 sound/oss/midi_ctrl.h create mode 100644 sound/oss/midi_syms.c create mode 100644 sound/oss/midi_synth.c create mode 100644 sound/oss/midi_synth.h create mode 100644 sound/oss/midibuf.c create mode 100644 sound/oss/mpu401.c create mode 100644 sound/oss/mpu401.h create mode 100644 sound/oss/msnd.c create mode 100644 sound/oss/msnd.h create mode 100644 sound/oss/msnd_classic.c create mode 100644 sound/oss/msnd_classic.h create mode 100644 sound/oss/msnd_pinnacle.c create mode 100644 sound/oss/msnd_pinnacle.h create mode 100644 sound/oss/nec_vrc5477.c create mode 100644 sound/oss/nm256.h create mode 100644 sound/oss/nm256_audio.c create mode 100644 sound/oss/nm256_coeff.h create mode 100644 sound/oss/opl3.c create mode 100644 sound/oss/opl3.h create mode 100644 sound/oss/opl3_hw.h create mode 100644 sound/oss/opl3sa.c create mode 100644 sound/oss/opl3sa2.c create mode 100644 sound/oss/os.h create mode 100644 sound/oss/pas2.h create mode 100644 sound/oss/pas2_card.c create mode 100644 sound/oss/pas2_midi.c create mode 100644 sound/oss/pas2_mixer.c create mode 100644 sound/oss/pas2_pcm.c create mode 100644 sound/oss/pss.c create mode 100644 sound/oss/rme96xx.c create mode 100644 sound/oss/rme96xx.h create mode 100644 sound/oss/sb.h create mode 100644 sound/oss/sb_audio.c create mode 100644 sound/oss/sb_card.c create mode 100644 sound/oss/sb_card.h create mode 100644 sound/oss/sb_common.c create mode 100644 sound/oss/sb_ess.c create mode 100644 sound/oss/sb_ess.h create mode 100644 sound/oss/sb_midi.c create mode 100644 sound/oss/sb_mixer.c create mode 100644 sound/oss/sb_mixer.h create mode 100644 sound/oss/sequencer.c create mode 100644 sound/oss/sequencer_syms.c create mode 100644 sound/oss/sgalaxy.c create mode 100644 sound/oss/sh_dac_audio.c create mode 100644 sound/oss/skeleton.c create mode 100644 sound/oss/sonicvibes.c create mode 100644 sound/oss/sound_calls.h create mode 100644 sound/oss/sound_config.h create mode 100644 sound/oss/sound_firmware.h create mode 100644 sound/oss/sound_syms.c create mode 100644 sound/oss/sound_timer.c create mode 100644 sound/oss/soundcard.c create mode 100644 sound/oss/soundvers.h create mode 100644 sound/oss/sscape.c create mode 100644 sound/oss/swarm_cs4297a.c create mode 100644 sound/oss/sys_timer.c create mode 100644 sound/oss/trident.c create mode 100644 sound/oss/trident.h create mode 100644 sound/oss/trix.c create mode 100644 sound/oss/tuning.h create mode 100644 sound/oss/uart401.c create mode 100644 sound/oss/uart6850.c create mode 100644 sound/oss/ulaw.h create mode 100644 sound/oss/v_midi.c create mode 100644 sound/oss/v_midi.h create mode 100644 sound/oss/via82cxxx_audio.c create mode 100644 sound/oss/vidc.c create mode 100644 sound/oss/vidc.h create mode 100644 sound/oss/vidc_fill.S create mode 100644 sound/oss/vwsnd.c create mode 100644 sound/oss/waveartist.c create mode 100644 sound/oss/waveartist.h create mode 100644 sound/oss/wavfront.c create mode 100644 sound/oss/wf_midi.c create mode 100644 sound/oss/ymfpci.c create mode 100644 sound/oss/ymfpci.h create mode 100644 sound/oss/ymfpci_image.h create mode 100644 sound/oss/yss225.c create mode 100644 sound/oss/yss225.h create mode 100644 sound/parisc/Kconfig create mode 100644 sound/parisc/Makefile create mode 100644 sound/parisc/harmony.c create mode 100644 sound/parisc/harmony.h create mode 100644 sound/pci/Kconfig create mode 100644 sound/pci/Makefile create mode 100644 sound/pci/ac97/Makefile create mode 100644 sound/pci/ac97/ac97_codec.c create mode 100644 sound/pci/ac97/ac97_id.h create mode 100644 sound/pci/ac97/ac97_local.h create mode 100644 sound/pci/ac97/ac97_patch.c create mode 100644 sound/pci/ac97/ac97_patch.h create mode 100644 sound/pci/ac97/ac97_pcm.c create mode 100644 sound/pci/ac97/ac97_proc.c create mode 100644 sound/pci/ac97/ak4531_codec.c create mode 100644 sound/pci/ali5451/Makefile create mode 100644 sound/pci/ali5451/ali5451.c create mode 100644 sound/pci/als4000.c create mode 100644 sound/pci/atiixp.c create mode 100644 sound/pci/atiixp_modem.c create mode 100644 sound/pci/au88x0/Makefile create mode 100644 sound/pci/au88x0/au8810.c create mode 100644 sound/pci/au88x0/au8810.h create mode 100644 sound/pci/au88x0/au8820.c create mode 100644 sound/pci/au88x0/au8820.h create mode 100644 sound/pci/au88x0/au8830.c create mode 100644 sound/pci/au88x0/au8830.h create mode 100644 sound/pci/au88x0/au88x0.c create mode 100644 sound/pci/au88x0/au88x0.h create mode 100644 sound/pci/au88x0/au88x0_a3d.c create mode 100644 sound/pci/au88x0/au88x0_a3d.h create mode 100644 sound/pci/au88x0/au88x0_a3ddata.c create mode 100644 sound/pci/au88x0/au88x0_core.c create mode 100644 sound/pci/au88x0/au88x0_eq.c create mode 100644 sound/pci/au88x0/au88x0_eq.h create mode 100644 sound/pci/au88x0/au88x0_eqdata.c create mode 100644 sound/pci/au88x0/au88x0_game.c create mode 100644 sound/pci/au88x0/au88x0_mixer.c create mode 100644 sound/pci/au88x0/au88x0_mpu401.c create mode 100644 sound/pci/au88x0/au88x0_pcm.c create mode 100644 sound/pci/au88x0/au88x0_sb.h create mode 100644 sound/pci/au88x0/au88x0_synth.c create mode 100644 sound/pci/au88x0/au88x0_wt.h create mode 100644 sound/pci/au88x0/au88x0_xtalk.c create mode 100644 sound/pci/au88x0/au88x0_xtalk.h create mode 100644 sound/pci/azt3328.c create mode 100644 sound/pci/azt3328.h create mode 100644 sound/pci/bt87x.c create mode 100644 sound/pci/ca0106/Makefile create mode 100644 sound/pci/ca0106/ca0106.h create mode 100644 sound/pci/ca0106/ca0106_main.c create mode 100644 sound/pci/ca0106/ca0106_mixer.c create mode 100644 sound/pci/ca0106/ca0106_proc.c create mode 100644 sound/pci/cmipci.c create mode 100644 sound/pci/cs4281.c create mode 100644 sound/pci/cs46xx/Makefile create mode 100644 sound/pci/cs46xx/cs46xx.c create mode 100644 sound/pci/cs46xx/cs46xx_image.h create mode 100644 sound/pci/cs46xx/cs46xx_lib.c create mode 100644 sound/pci/cs46xx/cs46xx_lib.h create mode 100644 sound/pci/cs46xx/dsp_spos.c create mode 100644 sound/pci/cs46xx/dsp_spos.h create mode 100644 sound/pci/cs46xx/dsp_spos_scb_lib.c create mode 100644 sound/pci/cs46xx/imgs/cwc4630.h create mode 100644 sound/pci/cs46xx/imgs/cwcasync.h create mode 100644 sound/pci/cs46xx/imgs/cwcbinhack.h create mode 100644 sound/pci/cs46xx/imgs/cwcdma.asp create mode 100644 sound/pci/cs46xx/imgs/cwcdma.h create mode 100644 sound/pci/cs46xx/imgs/cwcemb80.h create mode 100644 sound/pci/cs46xx/imgs/cwcsnoop.h create mode 100644 sound/pci/emu10k1/Makefile create mode 100644 sound/pci/emu10k1/emu10k1.c create mode 100644 sound/pci/emu10k1/emu10k1_callback.c create mode 100644 sound/pci/emu10k1/emu10k1_main.c create mode 100644 sound/pci/emu10k1/emu10k1_patch.c create mode 100644 sound/pci/emu10k1/emu10k1_synth.c create mode 100644 sound/pci/emu10k1/emu10k1_synth_local.h create mode 100644 sound/pci/emu10k1/emu10k1x.c create mode 100644 sound/pci/emu10k1/emufx.c create mode 100644 sound/pci/emu10k1/emumixer.c create mode 100644 sound/pci/emu10k1/emumpu401.c create mode 100644 sound/pci/emu10k1/emupcm.c create mode 100644 sound/pci/emu10k1/emuproc.c create mode 100644 sound/pci/emu10k1/io.c create mode 100644 sound/pci/emu10k1/irq.c create mode 100644 sound/pci/emu10k1/memory.c create mode 100644 sound/pci/emu10k1/p16v.c create mode 100644 sound/pci/emu10k1/p16v.h create mode 100644 sound/pci/emu10k1/timer.c create mode 100644 sound/pci/emu10k1/voice.c create mode 100644 sound/pci/ens1370.c create mode 100644 sound/pci/ens1371.c create mode 100644 sound/pci/es1938.c create mode 100644 sound/pci/es1968.c create mode 100644 sound/pci/fm801.c create mode 100644 sound/pci/hda/Makefile create mode 100644 sound/pci/hda/hda_codec.c create mode 100644 sound/pci/hda/hda_codec.h create mode 100644 sound/pci/hda/hda_generic.c create mode 100644 sound/pci/hda/hda_intel.c create mode 100644 sound/pci/hda/hda_local.h create mode 100644 sound/pci/hda/hda_patch.h create mode 100644 sound/pci/hda/hda_proc.c create mode 100644 sound/pci/hda/patch_analog.c create mode 100644 sound/pci/hda/patch_cmedia.c create mode 100644 sound/pci/hda/patch_realtek.c create mode 100644 sound/pci/ice1712/Makefile create mode 100644 sound/pci/ice1712/ak4xxx.c create mode 100644 sound/pci/ice1712/amp.c create mode 100644 sound/pci/ice1712/amp.h create mode 100644 sound/pci/ice1712/aureon.c create mode 100644 sound/pci/ice1712/aureon.h create mode 100644 sound/pci/ice1712/delta.c create mode 100644 sound/pci/ice1712/delta.h create mode 100644 sound/pci/ice1712/envy24ht.h create mode 100644 sound/pci/ice1712/ews.c create mode 100644 sound/pci/ice1712/ews.h create mode 100644 sound/pci/ice1712/hoontech.c create mode 100644 sound/pci/ice1712/hoontech.h create mode 100644 sound/pci/ice1712/ice1712.c create mode 100644 sound/pci/ice1712/ice1712.h create mode 100644 sound/pci/ice1712/ice1724.c create mode 100644 sound/pci/ice1712/juli.c create mode 100644 sound/pci/ice1712/juli.h create mode 100644 sound/pci/ice1712/phase.c create mode 100644 sound/pci/ice1712/phase.h create mode 100644 sound/pci/ice1712/pontis.c create mode 100644 sound/pci/ice1712/pontis.h create mode 100644 sound/pci/ice1712/prodigy192.c create mode 100644 sound/pci/ice1712/prodigy192.h create mode 100644 sound/pci/ice1712/revo.c create mode 100644 sound/pci/ice1712/revo.h create mode 100644 sound/pci/ice1712/stac946x.h create mode 100644 sound/pci/ice1712/vt1720_mobo.c create mode 100644 sound/pci/ice1712/vt1720_mobo.h create mode 100644 sound/pci/intel8x0.c create mode 100644 sound/pci/intel8x0m.c create mode 100644 sound/pci/korg1212/Makefile create mode 100644 sound/pci/korg1212/korg1212-firmware.h create mode 100644 sound/pci/korg1212/korg1212.c create mode 100644 sound/pci/maestro3.c create mode 100644 sound/pci/mixart/Makefile create mode 100644 sound/pci/mixart/mixart.c create mode 100644 sound/pci/mixart/mixart.h create mode 100644 sound/pci/mixart/mixart_core.c create mode 100644 sound/pci/mixart/mixart_core.h create mode 100644 sound/pci/mixart/mixart_hwdep.c create mode 100644 sound/pci/mixart/mixart_hwdep.h create mode 100644 sound/pci/mixart/mixart_mixer.c create mode 100644 sound/pci/mixart/mixart_mixer.h create mode 100644 sound/pci/nm256/Makefile create mode 100644 sound/pci/nm256/nm256.c create mode 100644 sound/pci/nm256/nm256_coef.c create mode 100644 sound/pci/rme32.c create mode 100644 sound/pci/rme96.c create mode 100644 sound/pci/rme9652/Makefile create mode 100644 sound/pci/rme9652/hdsp.c create mode 100644 sound/pci/rme9652/rme9652.c create mode 100644 sound/pci/sonicvibes.c create mode 100644 sound/pci/trident/Makefile create mode 100644 sound/pci/trident/trident.c create mode 100644 sound/pci/trident/trident_main.c create mode 100644 sound/pci/trident/trident_memory.c create mode 100644 sound/pci/trident/trident_synth.c create mode 100644 sound/pci/via82xx.c create mode 100644 sound/pci/via82xx_modem.c create mode 100644 sound/pci/vx222/Makefile create mode 100644 sound/pci/vx222/vx222.c create mode 100644 sound/pci/vx222/vx222.h create mode 100644 sound/pci/vx222/vx222_ops.c create mode 100644 sound/pci/ymfpci/Makefile create mode 100644 sound/pci/ymfpci/ymfpci.c create mode 100644 sound/pci/ymfpci/ymfpci_image.h create mode 100644 sound/pci/ymfpci/ymfpci_main.c create mode 100644 sound/pcmcia/Kconfig create mode 100644 sound/pcmcia/Makefile create mode 100644 sound/pcmcia/pdaudiocf/Makefile create mode 100644 sound/pcmcia/pdaudiocf/pdaudiocf.c create mode 100644 sound/pcmcia/pdaudiocf/pdaudiocf.h create mode 100644 sound/pcmcia/pdaudiocf/pdaudiocf_core.c create mode 100644 sound/pcmcia/pdaudiocf/pdaudiocf_irq.c create mode 100644 sound/pcmcia/pdaudiocf/pdaudiocf_pcm.c create mode 100644 sound/pcmcia/vx/Makefile create mode 100644 sound/pcmcia/vx/vx_entry.c create mode 100644 sound/pcmcia/vx/vxp440.c create mode 100644 sound/pcmcia/vx/vxp_mixer.c create mode 100644 sound/pcmcia/vx/vxp_ops.c create mode 100644 sound/pcmcia/vx/vxpocket.c create mode 100644 sound/pcmcia/vx/vxpocket.h create mode 100644 sound/ppc/Kconfig create mode 100644 sound/ppc/Makefile create mode 100644 sound/ppc/awacs.c create mode 100644 sound/ppc/awacs.h create mode 100644 sound/ppc/beep.c create mode 100644 sound/ppc/burgundy.c create mode 100644 sound/ppc/burgundy.h create mode 100644 sound/ppc/daca.c create mode 100644 sound/ppc/keywest.c create mode 100644 sound/ppc/pmac.c create mode 100644 sound/ppc/pmac.h create mode 100644 sound/ppc/powermac.c create mode 100644 sound/ppc/tumbler.c create mode 100644 sound/ppc/tumbler_volume.h create mode 100644 sound/sound_core.c create mode 100644 sound/sound_firmware.c create mode 100644 sound/sparc/Kconfig create mode 100644 sound/sparc/Makefile create mode 100644 sound/sparc/amd7930.c create mode 100644 sound/sparc/cs4231.c create mode 100644 sound/synth/Makefile create mode 100644 sound/synth/emux/Makefile create mode 100644 sound/synth/emux/emux.c create mode 100644 sound/synth/emux/emux_effect.c create mode 100644 sound/synth/emux/emux_hwdep.c create mode 100644 sound/synth/emux/emux_nrpn.c create mode 100644 sound/synth/emux/emux_oss.c create mode 100644 sound/synth/emux/emux_proc.c create mode 100644 sound/synth/emux/emux_seq.c create mode 100644 sound/synth/emux/emux_synth.c create mode 100644 sound/synth/emux/emux_voice.h create mode 100644 sound/synth/emux/soundfont.c create mode 100644 sound/synth/util_mem.c create mode 100644 sound/usb/Kconfig create mode 100644 sound/usb/Makefile create mode 100644 sound/usb/usbaudio.c create mode 100644 sound/usb/usbaudio.h create mode 100644 sound/usb/usbmidi.c create mode 100644 sound/usb/usbmixer.c create mode 100644 sound/usb/usbmixer_maps.c create mode 100644 sound/usb/usbquirks.h create mode 100644 sound/usb/usx2y/Makefile create mode 100644 sound/usb/usx2y/usX2Yhwdep.c create mode 100644 sound/usb/usx2y/usX2Yhwdep.h create mode 100644 sound/usb/usx2y/usbus428ctldefs.h create mode 100644 sound/usb/usx2y/usbusx2y.c create mode 100644 sound/usb/usx2y/usbusx2y.h create mode 100644 sound/usb/usx2y/usbusx2yaudio.c create mode 100644 sound/usb/usx2y/usx2y.h create mode 100644 sound/usb/usx2y/usx2yhwdeppcm.c create mode 100644 sound/usb/usx2y/usx2yhwdeppcm.h create mode 100644 usr/Makefile create mode 100644 usr/gen_init_cpio.c create mode 100644 usr/initramfs_data.S diff --git a/COPYING b/COPYING new file mode 100644 index 000000000000..2a7e338ec2fc --- /dev/null +++ b/COPYING @@ -0,0 +1,356 @@ + + NOTE! This copyright does *not* cover user programs that use kernel + services by normal system calls - this is merely considered normal use + of the kernel, and does *not* fall under the heading of "derived work". + Also note that the GPL below is copyrighted by the Free Software + Foundation, but the instance of code that it refers to (the Linux + kernel) is copyrighted by me and others who actually wrote it. + + Also note that the only valid version of the GPL as far as the kernel + is concerned is _this_ particular version of the license (ie v2, not + v2.2 or v3.x or whatever), unless explicitly otherwise stated. + + Linus Torvalds + +---------------------------------------- + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/CREDITS b/CREDITS new file mode 100644 index 000000000000..671e9c2d31fe --- /dev/null +++ b/CREDITS @@ -0,0 +1,3743 @@ + This is at least a partial credits-file of people that have + contributed to the Linux project. It is sorted by name and + formatted to allow easy grepping and beautification by + scripts. The fields are: name (N), email (E), web-address + (W), PGP key ID and fingerprint (P), description (D), and + snail-mail address (S). + Thanks, + + Linus +---------- + +N: Matti Aarnio +E: mea@nic.funet.fi +D: Alpha systems hacking, IPv6 and other network related stuff +D: One of assisting postmasters for vger.kernel.org's lists +S: (ask for current address) +S: Finland + +N: Dragos Acostachioaie +E: dragos@iname.com +W: http://www.arbornet.org/~dragos +D: /proc/sysvipc +S: C. Negri 6, bl. D3 +S: Iasi 6600 +S: Romania + +N: Monalisa Agrawal +E: magrawal@nortelnetworks.com +D: Basic Interphase 5575 driver with UBR and ABR support. +S: 75 Donald St, Apt 42 +S: Weymouth, MA 02188 + +N: Dave Airlie +E: airlied@linux.ie +W: http://www.csn.ul.ie/~airlied +D: NFS over TCP patches +D: in-kernel DRM Maintainer +S: Longford, Ireland +S: Sydney, Australia + +N: Tigran A. Aivazian +E: tigran@veritas.com +W: http://www.moses.uklinux.net/patches +D: BFS filesystem +D: Intel IA32 CPU microcode update support +D: Various kernel patches +S: United Kingdom + +N: Werner Almesberger +E: werner@almesberger.net +W: http://www.almesberger.net/ +D: dosfs, LILO, some fd features, ATM, various other hacks here and there +S: Buenos Aires +S: Argentina + +N: Tim Alpaerts +E: tim_alpaerts@toyota-motor-europe.com +D: 802.2 class II logical link control layer, +D: the humble start of an opening towards the IBM SNA protocols +S: Klaproosstraat 72 c 10 +S: B-2610 Wilrijk-Antwerpen +S: Belgium + +N: Anton Altaparmakov +E: aia21@cantab.net +W: http://www-stu.christs.cam.ac.uk/~aia21/ +D: Author of new NTFS driver, various other kernel hacks. +S: Christ's College +S: Cambridge CB2 3BU +S: United Kingdom + +N: C. Scott Ananian +E: cananian@alumni.princeton.edu +W: http://www.pdos.lcs.mit.edu/~cananian +P: 1024/85AD9EED AD C0 49 08 91 67 DF D7 FA 04 1A EE 09 E8 44 B0 +D: Unix98 pty support. +D: APM update to 1.2 spec. +D: /devfs hacking. +S: 7 Kiwi Loop +S: Howell, NJ 07731 +S: USA + +N: Erik Andersen +E: andersen@codepoet.org +W: http://www.codepoet.org/ +P: 1024D/30D39057 1BC4 2742 E885 E4DE 9301 0C82 5F9B 643E 30D3 9057 +D: Maintainer of ide-cd and Uniform CD-ROM driver, +D: ATAPI CD-Changer support, Major 2.1.x CD-ROM update. +S: 352 North 525 East +S: Springville, Utah 84663 +S: USA + +N: Michael Ang +E: mang@subcarrier.org +W: http://www.subcarrier.org/mang +D: Linux/PA-RISC hacker +S: 85 Frank St. +S: Ottawa, Ontario +S: Canada K2P 0X3 + +N: H. Peter Anvin +E: hpa@zytor.com +W: http://www.zytor.com/~hpa/ +P: 2047/2A960705 BA 03 D3 2C 14 A8 A8 BD 1E DF FE 69 EE 35 BD 74 +D: Author of the SYSLINUX boot loader, maintainer of the linux.* news +D: hierarchy and the Linux Device List; various kernel hacks +S: 4390 Albany Drive #46 +S: San Jose, California 95129 +S: USA + +N: Andrea Arcangeli +E: andrea@suse.de +W: http://www.kernel.org/pub/linux/kernel/people/andrea/ +P: 1024D/68B9CB43 13D9 8355 295F 4823 7C49 C012 DFA1 686E 68B9 CB43 +P: 1024R/CB4660B9 CC A0 71 81 F4 A0 63 AC C0 4B 81 1D 8C 15 C8 E5 +D: Parport hacker +D: Implemented a workaround for some interrupt buggy printers +D: Author of pscan that helps to fix lp/parport bugs +D: Author of lil (Linux Interrupt Latency benchmark) +D: Fixed the shm swap deallocation at swapoff time (try_to_unuse message) +D: VM hacker +D: Various other kernel hacks +S: Via Cicalini 26 +S: Imola 40026 +S: Italy + +N: Derek Atkins +E: warlord@MIT.EDU +D: Linux-AFS Port, random kernel hacker, +D: VFS fixes (new notify_change in particular) +D: Moving all VFS access checks into the file systems +S: MIT Room E15-341 +S: 20 Ames Street +S: Cambridge, Massachusetts 02139 +S: USA + +N: Michel Aubry +E: giovanni +D: Aladdin 1533/1543(C) chipset IDE +D: VIA MVP-3/TX Pro III chipset IDE + +N: Jens Axboe +E: axboe@suse.de +D: Linux CD-ROM maintainer, DVD support +D: elevator + block layer rewrites +D: highmem I/O support +D: misc hacking on IDE, SCSI, block drivers, etc +S: Peter Bangs Vej 258, 2TH +S: 2500 Valby +S: Denmark + +N: John Aycock +E: aycock@cpsc.ucalgary.ca +D: Adaptec 274x driver +S: Department of Computer Science +S: University of Calgary +S: Calgary, Alberta +S: Canada + +N: Miles Bader +E: miles@gnu.org +D: v850 port (uClinux) +S: NEC Corporation +S: 1753 Shimonumabe, Nakahara-ku +S: Kawasaki 211-8666 +S: Japan + +N: Ralf Baechle +E: ralf@gnu.org +P: 1024/AF7B30C1 CF 97 C2 CC 6D AE A7 FE C8 BA 9C FC 88 DE 32 C3 +D: Linux/MIPS port +D: Linux/68k hacker +S: Hauptstrasse 19 +S: 79837 St. Blasien +S: Germany + +N: Krishna Balasubramanian +E: balasub@cis.ohio-state.edu +D: Wrote SYS V IPC (part of standard kernel since 0.99.10) + +N: Dario Ballabio +E: ballabio_dario@emc.com +E: dario.ballabio@tiscalinet.it +E: dario.ballabio@inwind.it +D: Author and maintainer of the Ultrastor 14F/34F SCSI driver +D: Author and maintainer of the EATA ISA/EISA/PCI SCSI driver +S: EMC Corporation +S: Milano +S: Italy + +N: Paul Bame +E: bame@debian.org +E: bame@puffin.external.hp.com +E: paul_bame@hp.com +W: http://www.parisc-linux.org +D: PA-RISC 32 and 64-bit early boot, firmware interface, interrupts, misc +S: MS42 +S: Hewlett-Packard +S: 3404 E Harmony Rd +S: Fort Collins, CO 80525 + +N: Arindam Banerji +E: axb@cse.nd.edu +D: Contributed ESDI driver routines needed to port LINUX to the PS/2 MCA. +S: Department of Computer Science & Eng. +S: University of Notre Dame +S: Notre Dame, Indiana +S: USA + +N: Greg Banks +E: gnb@alphalink.com.au +D: IDT77105 ATM network driver +D: some SuperH port work +D: some trivial futzing with kconfig + +N: James Banks +E: james@sovereign.org +D: TLAN network driver +D: Logitech Busmouse driver + +N: Krzysztof G. Baranowski +E: kgb@manjak.knm.org.pl +P: 1024/FA6F16D1 96 D1 1A CF 5F CA 69 EC F9 4F 36 1F 6D 60 7B DA +D: Maintainer of the System V file system. +D: System V fs update for 2.1.x dcache. +D: Forward ported a couple of SCSI drivers. +D: Various bugfixes. +S: ul. Koscielna 12a +S: 62-300 Wrzesnia +S: Poland + +N: Fred Barnes +E: frmb2@ukc.ac.uk +D: Various parport/ppdev hacks and fixes +S: Computing Lab, The University +S: Canterbury, KENT +S: CT2 7NF +S: England + +N: Paul Barton-Davis +E: pbd@op.net +D: Driver for WaveFront soundcards (Turtle Beach Maui, Tropez, Tropez+) +D: Various bugfixes and changes to sound drivers +S: USA + +N: Carlos Henrique Bauer +E: chbauer@acm.org +E: bauer@atlas.unisinos.br +D: Some new sysctl entries for the parport driver. +D: New sysctl function for handling unsigned longs +S: Universidade do Vale do Rio dos Sinos - UNISINOS +S: DSI/IDASI +S: Av. Unisinos, 950 +S: 93022000 Sao Leopoldo RS +S: Brazil + +N: Peter Bauer +E: 100136.3530@compuserve.com +D: Driver for depca-ethernet-board +S: 69259 Wilhemsfeld +S: Rainweg 15 +S: Germany + +N: Fred Baumgarten +E: dc6iq@insl1.etec.uni-karlsruhe.de +E: dc6iq@adacom.org +E: dc6iq@db0ais.#hes.deu.eu (packet radio) +D: NET-2 & netstat(8) +S: Soevener Strasse 11 +S: 53773 Hennef +S: Germany + +N: Donald Becker +E: becker@cesdis.gsfc.nasa.gov +D: General low-level networking hacker +D: Most of the ethercard drivers +D: Original author of the NFS server +S: USRA Center of Excellence in Space Data and Information Sciences +S: Code 930.5, Goddard Space Flight Center +S: Greenbelt, Maryland 20771 +S: USA + +N: Adam Belay +E: ambx1@neo.rr.com +D: Linux Plug and Play Support +S: USA + +N: Daniele Bellucci +E: bellucda@tiscali.it +D: Various Janitor work. +W: http://web.tiscali.it/bellucda +S: Via Delle Palme, 9 +S: Terni 05100 +S: Italy + +N: Krzysztof Benedyczak +E: golbi@mat.uni.torun.pl +W: http://www.mat.uni.torun.pl/~golbi +D: POSIX message queues fs (with M. Wronski) +S: ul. Podmiejska 52 +S: Radunica +S: 83-000 Pruszcz Gdanski +S: Poland + +N: Randolph Bentson +E: bentson@grieg.seaslug.org +W: http://www.aa.net/~bentson/ +P: 1024/39ED5729 5C A8 7A F4 B2 7A D1 3E B5 3B 81 CF 47 30 11 71 +D: Author of driver for Cyclom-Y and Cyclades-Z async mux +S: 2322 37th Ave SW +S: Seattle, Washington 98126-2010 +S: USA + +N: Stephen R. van den Berg (AKA BuGless) +E: berg@pool.informatik.rwth-aachen.de +D: General kernel, gcc, and libc hacker +D: Specialisation: tweaking, ensuring portability, tweaking, cleaning, +D: tweaking and occasionally debugging :-) +S: Bouwensstraat 22 +S: 6369 BG Simpelveld +S: The Netherlands + +N: Peter Berger +E: pberger@brimson.com +W: http://www.brimson.com +D: Author/maintainer of Digi AccelePort USB driver +S: 1549 Hiironen Rd. +S: Brimson, MN 55602 +S: USA + +N: Hennus Bergman +P: 1024/77D50909 76 99 FD 31 91 E1 96 1C 90 BB 22 80 62 F6 BD 63 +D: Author and maintainer of the QIC-02 tape driver +S: The Netherlands + +N: Tomas Berndtsson +E: tomas@nocrew.org +W: http://tomas.nocrew.org/ +D: dsp56k device driver + +N: Ross Biro +E: bir7@leland.Stanford.Edu +D: Original author of the Linux networking code + +N: Anton Blanchard +E: anton@samba.org +W: http://samba.org/~anton/ +P: 1024/8462A731 4C 55 86 34 44 59 A7 99 2B 97 88 4A 88 9A 0D 97 +D: sun4 port, Sparc hacker + +N: Hugh Blemings +E: hugh@misc.nu +W: http://misc.nu/hugh/ +D: Author and maintainer of the Keyspan USB to Serial drivers +S: Po Box 234 +S: Belconnen ACT 2616 +S: Australia + +N: Philip Blundell +E: philb@gnu.org +D: Linux/ARM hacker +D: Device driver hacker (eexpress, 3c505, c-qcam, ...) +D: m68k port to HP9000/300 +D: AUN network protocols +D: Co-architect of the parallel port sharing system +D: IPv6 netfilter +S: FutureTV Labs Ltd +S: Brunswick House, 61-69 Newmarket Rd, Cambridge CB5 8EG +S: United Kingdom + +N: Thomas Bogendörfer +E: tsbogend@alpha.franken.de +D: PCnet32 driver, SONIC driver, JAZZ_ESP driver +D: newport abscon driver, g364 framebuffer driver +D: strace for Linux/Alpha +D: Linux/MIPS hacker +S: Schafhofstr. 40 +S: 90556 Cadolzburg +S: Germany + +N: Bill Bogstad +E: bogstad@pobox.com +D: wrote /proc/self hack, minor samba & dosemu patches + +N: Axel Boldt +E: axel@uni-paderborn.de +W: http://math-www.uni-paderborn.de/~axel/ +D: Configuration help text support +D: Linux CD and Support Giveaway List + +N: Erik Inge Bolsø +E: knan@mo.himolde.no +D: Misc kernel hacks + +N: Andreas E. Bombe +E: andreas.bombe@munich.netsurf.de +W: http://home.pages.de/~andreas.bombe/ +P: 1024/04880A44 72E5 7031 4414 2EB6 F6B4 4CBD 1181 7032 0488 0A44 +D: IEEE 1394 subsystem rewrite and maintainer +D: Texas Instruments PCILynx IEEE 1394 driver + +N: Al Borchers +E: alborchers@steinerpoint.com +D: Author/maintainer of Digi AccelePort USB driver +D: work on usbserial and keyspan_pda drivers +S: 4912 Zenith Ave. S. +S: Minneapolis, MN 55410 +S: USA + +N: Marc Boucher +E: marc@mbsi.ca +P: CA 67 A5 1A 38 CE B6 F2 D5 83 51 03 D2 9C 30 9E CE D2 DD 65 +D: Netfilter core +D: IP policy routing by mark +D: Various fixes (mostly networking) +S: Montreal, Quebec +S: Canada + +N: Zoltán Böszörményi +E: zboszor@mail.externet.hu +D: MTRR emulation with Cyrix style ARR registers, Athlon MTRR support + +N: John Boyd +E: boyd@cis.ohio-state.edu +D: Co-author of wd7000 SCSI driver +S: 101 Curl Drive #591 +S: Columbus, Ohio 43210 +S: USA + +N: Peter Braam +E: braam@clusterfs.com +W: http://www.clusterfs.com/ +D: Coda & InterMezzo filesystems +S: 181 McNeil +S: Canmore, AB +S: Canada, T1W 2R9 + +N: Ryan Bradetich +E: rbradetich@uswest.net +D: Linux/PA-RISC hacker +S: 1200 Goldenrod Dr. +S: Nampa, Idaho 83686 + +N: Derrick J. Brashear +E: shadow@dementia.org +W: http://www.dementia.org/~shadow +P: 512/71EC9367 C5 29 0F BC 83 51 B9 F0 BC 05 89 A0 4F 1F 30 05 +D: Author of Sparc CS4231 audio driver, random Sparc work +S: 403 Gilmore Avenue +S: Trafford, Pennsylvania 15085 +S: USA + +N: Dag Brattli +E: dagb@cs.uit.no +W: http://www.cs.uit.no/~dagb +D: IrDA Subsystem +S: 19. Wellington Road +S: Lancaster, LA1 4DN +S: UK, England + +N: Lars Brinkhoff +E: lars@nocrew.org +W: http://lars.nocrew.org/ +D: dsp56k device driver +D: ptrace proxy in user mode kernel port +S: Kopmansg 2 +S: 411 13 Goteborg +S: Sweden + +N: Dominik Brodowski +E: linux@brodo.de +W: http://www.brodo.de/ +P: 1024D/725B37C6 190F 3E77 9C89 3B6D BECD 46EE 67C3 0308 725B 37C6 +D: parts of CPUFreq code, ACPI bugfixes +S: Tuebingen, Germany + +N: Andries Brouwer +E: aeb@cwi.nl +D: random Linux hacker +S: Bessemerstraat 21 +S: Amsterdam +S: The Netherlands + +N: Zach Brown +E: zab@zabbo.net +D: maestro pci sound + +N: Gary Brubaker +E: xavyer@ix.netcom.com +D: USB Serial Empeg Empeg-car Mark I/II Driver + +N: Matthias Bruestle +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 +S: Orlando, Florida +S: USA + +N: Lennert Buytenhek +E: buytenh@gnu.org +D: Rewrite of the ethernet bridging code +S: Ravenhorst 58B +S: 2317 AK Leiden +S: The Netherlands + +N: Michael Callahan +E: callahan@maths.ox.ac.uk +D: PPP for Linux +S: The Mathematical Institute +S: 25-29 St Giles +S: Oxford +S: United Kingdom + +N: Luiz Fernando N. Capitulino +E: lcapitulino@terra.com.br +E: lcapitulino@prefeitura.sp.gov.br +W: http://www.telecentros.sp.gov.br +D: Little fixes and a lot of janitorial work +S: E-GOV Telecentros SP +S: Brazil + +N: Remy Card +E: Remy.Card@masi.ibp.fr +E: Remy.Card@linux.org +D: Extended file system [defunct] designer and developer +D: Second extended file system designer and developer +S: Institut Blaise Pascal +S: 4 Place Jussieu +S: 75252 Paris Cedex 05 +S: France + +N: Ulf Carlsson +D: SGI Indy audio (HAL2) drivers +E: ulfc@bun.falkenberg.se + +N: Ed Carp +E: ecarp@netcom.com +D: uucp, elm, pine, pico port +D: cron, at(1) developer +S: 48287 Sawleaf +S: Fremont, California 94539 +S: USA + +N: Florent Chabaud +E: florent.chabaud@polytechnique.org +D: software suspend +S: SGDN/DCSSI/SDS/LTI +S: 58, Bd Latour-Maubourg +S: 75700 Paris 07 SP +S: France + +N: Gordon Chaffee +E: chaffee@cs.berkeley.edu +W: http://bmrc.berkeley.edu/people/chaffee/ +D: vfat, fat32, joliet, native language support +S: 3700 Warwick Road +S: Fremont, California 94555 +S: USA + +N: Chih-Jen Chang +E: chihjenc@scf.usc.edu +E: chihjen@iis.sinica.edu.tw +D: IGMP(Internet Group Management Protocol) version 2 +S: 3F, 65 Tajen street +S: Tamsui town, Taipei county, +S: Taiwan 251 +S: Republic of China + +N: Michael Elizabeth Chastain +E: mec@shout.net +D: Configure, Menuconfig, xconfig + +N: Raymond Chen +E: raymondc@microsoft.com +D: Author of Configure script +S: 14509 NE 39th Street #1096 +S: Bellevue, Washington 98007 +S: USA + +N: Christopher L. Cheney +E: ccheney@debian.org +E: ccheney@cheney.cx +W: http://www.cheney.cx +P: 1024D/8E384AF2 2D31 1927 87D7 1F24 9FF9 1BC5 D106 5AB3 8E38 4AF2 +D: Vista Imaging usb webcam driver +S: 314 Prince of Wales +S: Conroe, TX 77304 +S: USA + +N: Stuart Cheshire +E: cheshire@cs.stanford.edu +D: Author of Starmode Radio IP (STRIP) driver +D: Originator of design for new combined interrupt handlers +S: William Gates Department +S: Stanford University +S: Stanford, California 94305 +S: USA + +N: Randolph Chung +E: tausq@debian.org +D: Linux/PA-RISC hacker +S: Los Altos, CA 94022 +S: USA + +N: Juan Jose Ciarlante +W: http://juanjox.kernelnotes.org/ +E: jjciarla@raiz.uncu.edu.ar +E: jjo@mendoza.gov.ar +D: Network driver alias support +D: IP masq hashing and app modules +D: IP masq 2.1 features and bugs +S: Las Cuevas 2385 - Bo Guemes +S: Las Heras, Mendoza CP 5539 +S: Argentina + +N: Steven P. Cole +E: scole@lanl.gov +E: elenstev@mesatop.com +D: Various build fixes and kernel documentation. +S: Los Alamos, New Mexico + +N: Hamish Coleman +E: hamish@zot.apana.org.au +D: SEEQ8005 network driver +S: 98 Paxton Street +S: East Malvern, Victoria, 3145 +S: Australia + +N: Neil Conway +E: nconway.list@ukaea.org.uk +D: Assorted sched/mm titbits +S: Oxfordshire, UK. + +N: Kees Cook +E: kees@outflux.net +W: http://outflux.net/ +P: 1024D/17063E6D 9FA3 C49C 23C9 D1BC 2E30 1975 1FFF 4BA9 1706 3E6D +D: Minor updates to SCSI code for the Communications type +S: (ask for current address) +S: USA + +N: Mark Corner +E: mcorner@umich.edu +W: http://www.eecs.umich.edu/~mcorner/ +D: USB Bluetooth Driver +S: University of Michigan +S: Ann Arbor, MI + +N: Michael Cornwell +E: cornwell@acm.org +D: Original designer and co-author of ATA Taskfile +D: Kernel module SMART utilities +S: Santa Cruz, California +S: USA + +N: Alan Cox +W: http://www.linux.org.uk/diary/ +D: Linux Networking (0.99.10->2.0.29) +D: Original Appletalk, AX.25, and IPX code +D: 3c501 hacker +D: Watchdog timer drivers +D: Linux/SMP x86 (up to 2.0 only) +D: Initial Mac68K port +D: Video4Linux design, bw-qcam and PMS driver ports. +D: IDE modularisation work +D: Z85230 driver +D: Former security contact point (please use vendor-sec@lst.de) +D: ex 2.2 maintainer +D: 2.1.x modular sound +S: c/o Red Hat UK Ltd +S: Alexandra House +S: Alexandra Terrace +S: Guildford, GU1 3DA +S: United Kingdom + +N: Cristian Mihail Craciunescu +W: http://www.dnt.ro/~cristi/ +E: cristi@dnt.ro +D: Support for Xircom PGSDB9 (firmware and host driver) +S: Bucharest +S: Romania + +N: Laurence Culhane +E: loz@holmes.demon.co.uk +D: Wrote the initial alpha SLIP code +S: 81 Hood Street +S: Northampton +S: NN1 3QT +S: United Kingdom + +N: Uwe Dannowski +E: Uwe.Dannowski@ira.uka.de +W: http://i30www.ira.uka.de/~dannowsk/ +D: FORE PCA-200E driver +S: University of Karlsruhe +S: Germany + +N: Ray Dassen +E: jdassen@wi.LeidenUniv.nl +W: http://www.wi.leidenuniv.nl/~jdassen/ +P: 1024/672D05C1 DD 60 32 60 F7 90 64 80 E7 6F D4 E4 F8 C9 4A 58 +D: Debian GNU/Linux: www.debian.org maintainer, FAQ co-maintainer, +D: packages testing, nit-picking & fixing. Enjoying BugFree (TM) kernels. +S: Zuidsingel 10A +S: 2312 SB Leiden +S: The Netherlands + +N: David Davies +E: davies@wanton.lkg.dec.com +D: Network driver author - depca, ewrk3 and de4x5 +D: Wrote shared interrupt support +S: Digital Equipment Corporation +S: 550 King Street +S: Littleton, Massachusetts 01460 +S: USA + +N: Frank Davis +E: fdavis@si.rr.com +E: fdavis112@juno.com +D: Various kernel patches +S: 8 Lakeview Terr. +S: Kerhonkson, NY 12446 +S: USA + +N: Wayne Davison +E: davison@borland.com +D: Second extended file system co-designer + +N: Terry Dawson +E: terry@perf.no.itg.telecom.com.au +E: terry@albert.vk2ktj.ampr.org (Amateur Radio use only) +D: trivial hack to add variable address length routing to Rose. +D: AX25-HOWTO, HAM-HOWTO, IPX-HOWTO, NET-2-HOWTO +D: ax25-utils maintainer. + +N: Helge Deller +E: deller@gmx.de +E: hdeller@redhat.de +D: PA-RISC Linux hacker, LASI-, ASP-, WAX-, LCD/LED-driver +S: Schimmelsrain 1 +S: D-69231 Rauenberg +S: Germany + +N: Jean Delvare +E: khali@linux-fr.org +W: http://khali.linux-fr.org/ +D: Several hardware monitoring drivers +S: France + +N: Peter Denison +E: peterd@pnd-pc.demon.co.uk +W: http://www.pnd-pc.demon.co.uk/promise/ +D: Promise DC4030VL caching HD controller drivers + +N: Todd J. Derr +E: tjd@fore.com +W: http://www.wordsmith.org/~tjd +D: Random console hacks and other miscellaneous stuff +S: 3000 FORE Drive +S: Warrendale, Pennsylvania 15086 +S: USA + +N: Martin Devera +E: devik@cdi.cz +W: http://luxik.cdi.cz/~devik/qos/ +D: HTB qdisc and random networking hacks + +N: Alex deVries +E: alex@onefishtwo.ca +D: Various SGI parts, bits of HAL2 and Newport, PA-RISC Linux. +S: 41.5 William Street +S: Ottawa, Ontario +S: K1N 6Z9 +S: CANADA + +N: Jeff Dike +E: jdike@karaya.com +W: http://user-mode-linux.sourceforge.net +D: User mode kernel port +S: 375 Tubbs Hill Rd +S: Deering NH 03244 +S: USA + +N: Matt Domsch +E: Matt_Domsch@dell.com +W: http://www.dell.com/linux +W: http://domsch.com/linux +D: Linux/IA-64 +D: Dell PowerEdge server, SCSI layer, misc drivers, and other patches +S: Dell Inc. +S: One Dell Way +S: Round Rock, TX 78682 +S: USA + +N: Ben Dooks +E: ben-linux@fluff.org +E: ben@simtec.co.uk +W: http://www.fluff.org/ben/ +W: http://www.simtec.co.uk/ +D: Samsung S3C2410/S3C2440 support, general ARM support +D: Maintaining Simtec Electronics development boards +S: Simtec Electronics +S: Avondale Drive +S: Tarleton +S: Preston +S: Lancs +S: PR4 6AX +S: United Kingdom + +N: John G Dorsey +E: john+@cs.cmu.edu +D: ARM Linux ports to Assabet/Neponset, Spot +S: Department of Electrical and Computer Engineering +S: Carnegie Mellon University +S: Pittsburgh, PA 15213 +S: USA + +N: Eddie C. Dost +E: ecd@skynet.be +D: Linux/Sparc kernel hacker +D: Linux/Sparc maintainer +S: Rue de la Chapelle 51 +S: 4850 Moresnet +S: Belgium + +N: Cort Dougan +E: cort@fsmlabs.com +W: http://www.fsmlabs.com/linuxppcbk.html +D: PowerPC + +N: Daniel Drake +E: dsd@gentoo.org +D: USBAT02 CompactFlash support in usb-storage +S: UK + +N: Oleg Drokin +E: green@ccssu.crimea.ua +W: http://www.ccssu.crimea.ua/~green +D: Cleaning up sound drivers, SA1100 Watchdog. +S: Skvoznoy per., 14a +S: Evpatoria +S: Crimea +S: UKRAINE, 334320 + +N: Walt Drummond +E: drummond@valinux.com +D: Linux/IA-64 +S: 1382 Bordeaux Drive +S: Sunnyvale, CA 94087 +S: USA + +N: Bruno Ducrot +E: ducrot@poupinou.org +D: CPUFreq and ACPI bugfixes. +S: Mougin, France + +N: Don Dugger +E: n0ano@valinux.com +D: Linux/IA-64 +S: 1209 Pearl Street, #12 +S: Boulder, CO 80302 +S: USA + +N: Thomas Dunbar +E: tdunbar@vt.edu +D: TeX & METAFONT hacking/maintenance +S: Virginia Tech Computing Center +S: 1700 Pratt Drive +S: Blacksburg, Virginia 24061 +S: USA + +N: Randy Dunlap +E: rddunlap@osdl.org +W: http://www.xenotime.net/linux/linux.html +W: http://www.linux-usb.org +D: Linux-USB subsystem, USB core/UHCI/printer/storage drivers +D: x86 SMP, ACPI, bootflag hacking +S: 12725 SW Millikan Way, Suite 400 +S: Beaverton, Oregon 97005 +S: USA + +N: Bob Dunlop +E: rjd@xyzzy.clara.co.uk +E: bob.dunlop@farsite.co.uk +W: www.farsite.co.uk +D: FarSync card device driver +S: FarSite Communications Ltd +S: Tempus Business Centre +S: 60 Kingsclere Road +S: Basingstoke RG21 6XG +S: UK + +N: Cyrus Durgin +E: cider@speakeasy.org +W: http://www.speakeasy.org/~cider/ +D: implemented kmod + +N: Torsten Duwe +E: Torsten.Duwe@informatik.uni-erlangen.de +D: Part-time kernel hacker +D: The Linux Support Team Erlangen +S: Grevenbroicher Str. 17 +S: 47807 Krefeld +S: Germany + +N: Tom Dyas +E: tdyas@eden.rutgers.edu +D: minor hacks and some sparc port stuff +S: New Jersey +S: USA + +N: Drew Eckhardt +E: drew@PoohSticks.ORG +D: SCSI code +D: Assorted snippets elsewhere +D: Boot sector "..." printing +S: 2037 Walnut #6 +S: Boulder, Colorado 80302 +S: USA + +N: Heiko Eissfeldt +E: heiko@colossus.escape.de heiko@unifix.de +D: verify_area stuff, generic SCSI fixes +D: SCSI Programming HOWTO +D: POSIX.1 compliance testing +S: Unifix Software GmbH +S: Bueltenweg 27a +S: D-38106 Braunschweig +S: Germany + +N: Bjorn Ekwall +E: bj0rn@blox.se +W: http://www.pi.se/blox/ +D: Extended support for loadable modules +D: D-Link pocket adapter drivers +S: Brevia 1043 +S: S-114 79 Stockholm +S: Sweden + +N: David Engebretsen +E: engebret@us.ibm.com +D: Linux port to 64-bit PowerPC architecture + +N: Michael Engel +E: engel@unix-ag.org +D: DECstation framebuffer drivers +S: Germany + +N: Paal-Kristian Engstad +E: engstad@intermetrics.com +D: Kernel smbfs (to mount WfW, NT and OS/2 network drives.) +S: 17101 Springdale Street #225 +S: Huntington Beach, California 92649 +S: USA + +N: Stephane Eranian +E: eranian@hpl.hp.com +D: Linux/ia64 +S: 1501 Page Mill Rd, MS 1U17 +S: Palo Alto, CA 94304 +S: USA + +N: Johannes Erdfelt +E: johannes@erdfelt.com +D: Linux/IA-64 bootloader and kernel goop, USB +S: 6350 Stoneridge Mall Road +S: Pleasanton, CA 94588 +S: USA + +N: Doug Evans +E: dje@cygnus.com +D: Wrote Xenix FS (part of standard kernel since 0.99.15) + +N: Riccardo Facchetti +E: fizban@tin.it +P: 1024/6E657BB5 AF 22 90 33 78 76 04 8B AF F9 97 1E B5 E2 65 30 +D: Audio Excel DSP 16 init driver author +D: libmodem author +D: Yet Another Micro Monitor port and current maintainer +D: First ELF-HOWTO author +D: random kernel hacker +S: Via Paolo VI n.29 +S: 23900 - LECCO (Lc) +S: Italy + +N: Nils Faerber +E: nils@kernelconcepts.de +D: i810 TCO watchdog driver author +D: Mitsumi LU005 tests and fixes +D: port and fixes of cs46xx sounddriver +S: Dreisbachstrasse 24 +S: D-57250 Netphen +S: Germany + +N: Rik Faith +E: faith@acm.org +D: Future Domain TMC-16x0 SCSI driver (author) +D: APM driver (early port) +D: DRM drivers (author of several) + +N: János Farkas +E: chexum@shadow.banki.hu +D: romfs, various (mostly networking) fixes +P: 1024/F81FB2E1 41 B7 E4 E6 3E D4 A6 71 6D 9C F3 9F F2 BF DF 6E +S: Madarász Viktor utca 25 +S: 1131 Budapest +S: Hungary + +N: Ben Fennema +E: bfennema@falcon.csc.calpoly.edu +W: http://www.csc.calpoly.edu/~bfennema +D: UDF filesystem +S: (ask for current address) +S: USA + +N: Jürgen Fischer +E: fischer@norbit.de (=?iso-8859-1?q?J=FCrgen?= Fischer) +D: Author of Adaptec AHA-152x SCSI driver +S: Schulstraße 18 +S: 26506 Norden +S: Germany + +N: Jeremy Fitzhardinge +E: jeremy@goop.org +W: http://www.goop.org/~jeremy +D: author of userfs filesystem +D: Improved mmap and munmap handling +D: General mm minor tidyups +D: autofs v4 maintainer +S: 987 Alabama St +S: San Francisco +S: CA, 94110 +S: USA + +N: Ralf Flaxa +E: rfflaxa@immd4.informatik.uni-erlangen.de +D: The Linux Support Team Erlangen +D: Creator of LST distribution +D: Author of installation tool LISA +S: Pfitznerweg 6 +S: 74523 Schwaebisch Hall +S: Germany + +N: Lawrence Foard +E: entropy@world.std.com +D: Floppy track reading, fs code +S: 217 Park Avenue, Suite 108 +S: Worcester, Massachusetts 01609 +S: USA + +N: Karl Fogel +E: kfogel@cs.oberlin.edu +D: Contributor, Linux User's Guide +S: 1123 North Oak Park Avenue +S: Oak Park, Illinois 60302 +S: USA + +N: Daniel J. Frasnelli +E: dfrasnel@alphalinux.org +W: http://www.alphalinux.org/ +P: 1024/3EF87611 B9 F1 44 50 D3 E8 C2 80 DA E5 55 AA 56 7C 42 DA +D: DEC Alpha hacker +D: Miscellaneous bug squisher + +N: Jim Freeman +E: jfree@sovereign.org +W: http://www.sovereign.org/ +D: Initial GPL'd Frame Relay driver +D: Dynamic PPP devices +D: Sundry modularizations (PPP, IPX, ...) and fixes + +N: Bob Frey +E: bobf@advansys.com +D: AdvanSys SCSI driver +S: 1150 Ringwood Court +S: San Jose, California 95131 +S: USA + +N: Fernando Fuganti +E: fuganti@conectiva.com.br +E: fuganti@netbank.com.br +D: random kernel hacker, ZF MachZ Watchdog driver +S: Conectiva S.A. +S: R. Tocantins, 89 - Cristo Rei +S: 80050-430 - Curitiba - Paraná +S: Brazil + +N: Kumar Gala +E: kumar.gala@freescale.com +D: Embedded PowerPC 6xx/7xx/74xx/82xx/83xx/85xx support +S: Austin, Texas 78729 +S: USA + +N: Nigel Gamble +E: nigel@nrg.org +D: Interrupt-driven printer driver +D: Preemptible kernel +S: 120 Alley Way +S: Mountain View, California 94040 +S: USA + +N: Jeff Garzik +E: jgarzik@pobox.com + +N: Jacques Gelinas +E: jacques@solucorp.qc.ca +D: Author of the Umsdos file system +S: 1326 De Val-Brillant +S: Laval, Quebec +S: Canada H7Y 1V9 + +N: David Gentzel +E: gentzel@telerama.lm.com +D: Original BusLogic driver and original UltraStor driver +S: Whitfield Software Services +S: 600 North Bell Avenue, Suite 160 +S: Carnegie, Pennsylvania 15106-4304 +S: USA + +N: Philip Gladstone +E: philip@raptor.com +D: Kernel / timekeeping stuff + +N: Jan-Benedict Glaw +E: jbglaw@lug-owl.de +D: SRM environment driver (for Alpha systems) +P: 1024D/8399E1BB 250D 3BCF 7127 0D8C A444 A961 1DBD 5E75 8399 E1BB + +N: Thomas Gleixner +E: tglx@linutronix.de +D: NAND flash hardware support, JFFS2 on NAND flash + +N: Richard E. Gooch +E: rgooch@atnf.csiro.au +D: parent process death signal to children +D: prctl() syscall +D: /proc/mtrr support to manipulate MTRRs on Intel P6 family +D: Device FileSystem (devfs) +S: CSIRO Australia Telescope National Facility +S: P.O. Box 76, Epping +S: New South Wales, 2121 +S: Australia + +N: Carlos E. Gorges +E: carlos@techlinux.com.br +D: fix smp support on cmpci driver +P: 2048G/EA3C4B19 FF31 33A6 0362 4915 B7EB E541 17D0 0379 EA3C 4B19 +S: Brazil + +N: Dmitry S. Gorodchanin +E: pgmdsg@ibi.com +D: RISCom/8 driver, misc kernel fixes. +S: 4 Main Street +S: Woodbridge, Connecticut 06525 +S: USA + +N: Paul Gortmaker +E: p_gortmaker@yahoo.com +D: Author of RTC driver & several net drivers, Ethernet & BootPrompt Howto. +D: Made support for modules, ramdisk, generic-serial, etc. optional. +D: Transformed old user space bdflush into 1st kernel thread - kflushd. +D: Many other patches, documentation files, mini kernels, utilities, ... + +N: Masanori GOTO +E: gotom@debian.or.jp +D: Workbit NinjaSCSI-32Bi/UDE driver +S: Japan + +N: John E. Gotts +E: jgotts@linuxsavvy.com +D: kernel hacker +S: 8124 Constitution Apt. 7 +S: Sterling Heights, Michigan 48313 +S: USA + +N: William Greathouse +E: wgreathouse@smva.com +E: wgreathouse@myfavoritei.com +D: Current Belkin USB Serial Adapter F5U103 hacker +D: Kernel hacker, embedded systems +S: 7802 Fitzwater Road +S: Brecksville, OH 44141-1334 +S: USA + +N: Tristan Greaves +E: Tristan.Greaves@icl.com +E: tmg296@ecs.soton.ac.uk +W: http://www.ecs.soton.ac.uk/~tmg296 +D: Miscellaneous ipv4 sysctl patches +S: 15 Little Mead +S: Denmead +S: Hampshire +S: PO7 6HS +S: United Kingdom + +N: Michael A. Griffith +E: grif@cs.ucr.edu +W: http://www.cs.ucr.edu/~grif +D: Loopback speedup, qlogic SCSI hacking, VT_LOCKSWITCH +S: Department of Computer Science +S: University of California, Riverside +S: Riverside, California 92521-0304 +S: USA + +N: Hans Grobler +E: grobh@sun.ac.za +D: Various AX.25/ROSE/NETROM + hamradio driver patches +D: Various X.25/LABP + driver patches +D: Misc kernel fixes and updates +S: Department of Electronic Engineering +S: University of Stellenbosch +S: Stellenbosch, Western Cape +S: South Africa + +N: Grant Grundler +E: grundler@parisc-linux.org +W: http://obmouse.sourceforge.net/ +W: http://www.parisc-linux.org/ +D: obmouse - rewrote Olivier Florent's Omnibook 600 "pop-up" mouse driver +D: PA-RISC - Interrupt/PCI HBA/IOMMU author and architect +S: Mountain View, California +S: USA + +N: Grant Guenther +E: grant@torque.net +W: http://www.torque.net/linux-pp.html +D: original author of ppa driver for parallel port ZIP drive +D: original architect of the parallel-port sharing scheme +D: PARIDE subsystem: drivers for parallel port IDE & ATAPI devices +S: 44 St. Joseph Street, Suite 506 +S: Toronto, Ontario, M4Y 2W4 +S: Canada + +N: Richard Günther +E: rguenth@tat.physik.uni-tuebingen.de +W: http://www.tat.physik.uni-tuebingen.de/~rguenth +P: 2048/2E829319 2F 83 FC 93 E9 E4 19 E2 93 7A 32 42 45 37 23 57 +D: binfmt_misc +S: 72074 Tübingen +S: Germany + +N: Justin Guyett +E: jguyett@andrew.cmu.edu +D: via-rhine net driver hacking + +N: Danny ter Haar +E: dth@cistron.nl +D: /proc/cpuinfo, reboot on panic , kernel pre-patch tester ;) +S: Cistron +S: PO-Box 297 +S: 2400 AG, Alphen aan den Rijn +S: The Netherlands + +N: Enver Haase +E: ehaase@inf.fu-berlin.de +W: http://www.inf.fu-berlin.de/~ehaase +D: Driver for the Commodore A2232 serial board + +N: Bruno Haible +E: haible@ma2s2.mathematik.uni-karlsruhe.de +D: SysV FS, shm swapping, memory management fixes +S: 17 rue Danton +S: F - 94270 Le Kremlin-Bicêtre +S: France + +N: Greg Hankins +E: gregh@cc.gatech.edu +D: fixed keyboard driver to separate LED and locking status +S: 25360 Georgia Tech Station +S: Atlanta, Georgia 30332 +S: USA + +N: Brad Hards +E: bradh@frogmouth.net +D: Various USB bits, other minor patches + +N: Angelo Haritsis +E: ah@computer.org +D: kernel patches (serial, watchdog) +D: xringd, vuzkern, greekXfonts +S: 77 Clarence Mews +S: London SE16 1GD +S: United Kingdom + +N: Jan Harkes +E: jaharkes@cs.cmu.edu +W: http://www.coda.cs.cmu.edu/ +D: Coda file system +S: Computer Science Department +S: Carnegie Mellon University +S: 5000 Forbes Avenue +S: Pittsburgh, Pennsylvania 15213 +S: USA + +N: Kai Harrekilde-Petersen +E: kai.harrekilde@get2net.dk +D: Original author of the ftape-HOWTO, i82078 fdc detection code. + +N: Bart Hartgers +E: bart@etpmod.phys.tue.nl +D: MTRR emulation with Centaur MCRs +S: Gen Stedmanstraat 212 +S: 5623 HZ Eindhoven +S: The Netherlands + +N: Andrew Haylett +E: ajh@primag.co.uk +D: Selection mechanism + +N: Andre Hedrick +E: andre@linux-ide.org +E: andre@linuxdiskcert.org +W: http://www.linux-ide.org/ +W: http://www.linuxdiskcert.org/ +D: Random SMP kernel hacker... +D: Uniform Multi-Platform E-IDE driver +D: Active-ATA-Chipset maddness.......... +D: Ultra DMA 133/100/66/33 w/48-bit Addressing +D: ATA-Disconnect, ATA-TCQ +D: ATA-Smart Kernel Daemon +D: Serial ATA +D: ATA Command Block and Taskfile +S: Linux ATA Development (LAD) +S: Concord, CA + +N: Jochen Hein +E: jochen@jochen.org +P: 1024/4A27F015 25 72 FB E3 85 9F DE 3B CB 0A DA DA 40 77 05 6C +P: 1024D/77D4FC9B F5C5 1C20 1DFC DEC3 3107 54A4 2332 ADFC 77D4 FC9B +D: National Language Support +D: Linux Internationalization Project +D: German Localization for Linux and GNU software +S: Kriemhildring 12a +S: 65795 Hattersheim am Main +S: Germany + +N: Christoph Hellwig +E: hch@infradead.org +D: all kinds of driver, filesystem & core kernel hacking +D: freevxfs driver +D: sysvfs maintainer +D: chief codingstyle nitpicker +S: Ampferstr. 50 / 4 +S: 6020 Innsbruck +S: Austria + +N: Richard Henderson +E: rth@twiddle.net +E: rth@cygnus.com +D: Alpha hacker, kernel and userland +S: 1668 California St. +S: Mountain View, California 94041 +S: USA + +N: Benjamin Herrenschmidt +E: benh@kernel.crashing.org +D: Various parts of PPC/PPC64 & PowerMac +S: 312/107 Canberra Avenue +S: Griffith, ACT 2603 +S: Australia + +N: Sebastian Hetze +E: she@lunetix.de +D: German Linux Documentation, +D: Organization of German Linux Conferences +S: Danckelmannstr. 48 +S: 14059 Berlin +S: Germany + +N: David Hinds +E: dahinds@users.sourceforge.net +W: http://tao.stanford.edu/~dhinds +D: PCMCIA and CardBus stuff, PCMCIA-HOWTO, PCMCIA client drivers +S: 2019 W. Middlefield Rd #1 +S: Mountain View, CA 94043 +S: USA + +N: Michael Hipp +E: hippm@informatik.uni-tuebingen.de +D: drivers for the racal ni5210 & ni6510 Ethernet-boards +S: Talstr. 1 +S: D - 72072 Tuebingen +S: Germany + +N: Richard Hirst +E: richard@sleepie.demon.co.uk +E: rhirst@linuxcare.com +W: http://www.sleepie.demon.co.uk/ +D: linux-m68k VME support +D: PA-RISC port, scsi and network drivers +D: 53c700/53c710 driver author, 82596 driver maintainer +S: United Kingdom + +N: Jauder Ho +E: jauderho@carumba.com +W: http://www.carumba.com/ +D: bug toaster (A1 sauce makes all the difference) +D: Random linux hacker + +N: Tim Hockin +E: thockin@hockin.org +W: http://www.hockin.org/~thockin +D: Natsemi ethernet +D: Cobalt Networks (x86) support +D: This-and-That + +N: Dirk Hohndel +E: hohndel@suse.de +D: The XFree86[tm] Project +D: USB mouse maintainer +S: SuSE Rhein/Main AG +S: Mergenthalerallee 45-47 +S: 65760 Eschborn +S: Germany + +N: Kenji Hollis +E: kenji@bitgate.com +W: http://www.bitgate.com/ +D: Berkshire PC Watchdog Driver +D: Small/Industrial Driver Project + +N: Nick Holloway +E: Nick.Holloway@pyrites.org.uk +W: http://www.pyrites.org.uk/ +P: 1024/36115A04 F4E1 3384 FCFD C055 15D6 BA4C AB03 FBF8 3611 5A04 +D: Occasional Linux hacker... +S: (ask for current address) +S: United Kingdom + +N: Ron Holt +E: ron@holt.org +E: rholt@netcom.com +W: http://www.holt.org/ +W: http://www.ronholt.com/ +D: Kernel development +D: Kernel LDT modifications to support Wabi and Wine +S: Holtron Internetics, Inc. +S: 998 East 900 South, Suite 26 +S: Provo, Utah 84606-5607 +S: USA + +N: Marcel Holtmann +E: marcel@holtmann.org +W: http://www.holtmann.org +D: Maintainer of the Linux Bluetooth Subsystem +D: Author and maintainer of the various Bluetooth HCI drivers +D: Author and maintainer of the CAPI message transport protocol driver +D: Author and maintainer of the Bluetooth HID protocol driver +D: Various other Bluetooth related patches, cleanups and fixes +S: Germany + +N: Rob W. W. Hooft +E: hooft@EMBL-Heidelberg.DE +D: Shared libs for graphics-tools and for the f2c compiler +D: Some kernel programming on the floppy and sound drivers in early days +D: Some other hacks to get different kinds of programs to work for linux +S: Panoramastrasse 18 +S: D-69126 Heidelberg +S: Germany + +N: Christopher Horn +E: chorn@warwick.net +D: Miscellaneous sysctl hacks +S: 36 Mudtown Road +S: Wantage, New Jersey 07461 +S: USA + +N: Harald Hoyer +E: harald.hoyer@parzelle.de +W: http://parzelle.de/ +D: ip_masq_quake +D: md boot support +S: Hohe Strasse 30 +S: D-70176 Stuttgart +S: Germany + +N: Jan Hubicka +E: hubicka@freesoft.cz +E: hubicka@suse.cz +W: http://www.paru.cas.cz/~hubicka/ +D: Random kernel tweaks and fixes. +S: Dukelskych bojovniku 1944 +S: Tabor 390 03 +S: Czech Republic + +N: David Huggins-Daines +E: dhd@debian.org +E: dhd@eradicator.org +E: dhd@cepstral.com +D: PA-RISC port +D: Nubus subsystem +D: Generic 68k Macintosh framebuffer driver +D: STI framebuffer tweaks +D: LTPC driver tweaks +S: 110 S. 12th St., Apt. A +S: Pittsburgh, PA 15203-1250 +S: USA + +N: Gareth Hughes +E: gareth.hughes@acm.org +D: Pentium III FXSR, SSE support +D: Author/maintainer of most DRM drivers (especially ATI, MGA) +D: Core DRM templates, general DRM and 3D-related hacking +S: No fixed address + +N: Kenn Humborg +E: kenn@wombat.ie +D: Mods to loop device to support sparse backing files +S: Ballinagard +S: Roscommon +S: Ireland + +N: Michael Hunold +E: michael@mihu.de +W: http://www.mihu.de/linux/ +D: Generic saa7146 video4linux-2 driver core, +D: Driver for the "Multimedia eXtension Board", "dpc7146", +D: "Hexium Orion", "Hexium Gemini" + +N: Miguel de Icaza Amozurrutia +E: miguel@nuclecu.unam.mx +D: Linux/SPARC team, Midnight Commander maintainer +S: Avenida Copilco 162, 22-1003 +S: Mexico, DF +S: Mexico + +N: Ian Jackson +E: iwj10@cus.cam.ac.uk +E: ijackson@nyx.cs.du.edu +D: FAQ maintainer and poster of the daily postings +D: FSSTND group member +D: Debian core team member and maintainer of several Debian packages +S: 2 Lexington Close +S: Cambridge +S: CB3 0DS +S: United Kingdom + +N: Andreas Jaeger +E: aj@suse.de +D: Various smaller kernel fixes +D: glibc developer +S: Gottfried-Kinkel-Str. 18 +S: D 67659 Kaiserslautern +S: Germany + +N: Mike Jagdis +E: jaggy@purplet.demon.co.uk +E: Mike.Jagdis@purplet.demon.co.uk +D: iBCS personalities, socket and X interfaces, x.out loader, syscalls... +D: Purple Distribution maintainer +D: UK FidoNet support +D: ISODE && PP +D: Kernel and device driver hacking +S: 280 Silverdale Road +S: Earley +S: Reading +S: RG6 2NU +S: United Kingdom + +N: Jakub Jelinek +E: jakub@redhat.com +W: http://sunsite.mff.cuni.cz/~jj +P: 1024/0F7623C5 53 95 71 3C EB 73 99 97 02 49 40 47 F9 19 68 20 +D: Sparc hacker, SILO, mc +D: Maintain sunsite.mff.cuni.cz +S: K osmidomkum 723 +S: 160 00 Praha 6 +S: Czech Republic + +N: Niels Kristian Bech Jensen +E: nkbj@image.dk +W: http://www.image.dk/~nkbj +D: Miscellaneous kernel updates and fixes. +S: Dr. Holsts Vej 34, lejl. 164 +S: DK-8230 Åbyhøj +S: Denmark + +N: Michael K. Johnson +E: johnsonm@redhat.com +W: http://www.redhat.com/~johnsonm +P: 1024/4536A8DD 2A EC 88 08 40 64 CE D8 DD F8 12 2B 61 43 83 15 +D: The Linux Documentation Project +D: Kernel Hackers' Guide +D: Procps +D: Proc filesystem +D: Maintain tsx-11.mit.edu +D: LP driver +S: 201 Howell Street, Apartment 1C +S: Chapel Hill, North Carolina 27514-4818 +S: USA + +N: Dave Jones +E: davej@codemonkey.org.uk +W: http://www.codemonkey.org.uk +D: x86 errata/setup maintenance. +D: AGPGART driver. +D: CPUFREQ maintenance. +D: Backport/Forwardport merge monkey. +D: Various Janitor work. +S: United Kingdom + +N: Martin Josfsson +E: gandalf@wlug.westbo.se +P: 1024D/F6B6D3B1 7610 7CED 5C34 4AA6 DBA2 8BE1 5A6D AF95 F6B6 D3B1 +D: netfilter: SAME target +D: netfilter: helper target +D: netfilter: various other hacks +S: Ronneby +S: Sweden + +N: Ani Joshi +E: ajoshi@shell.unixbox.com +D: fbdev hacking + +N: Jesper Juhl +E: juhl-lkml@dif.dk +D: Various small janitor fixes, cleanups etc. +S: Lemnosvej 1, 3.tv +S: 2300 Copenhagen S +S: Denmark + +N: Jozsef Kadlecsik +E: kadlec@blackhole.kfki.hu +P: 1024D/470DB964 4CB3 1A05 713E 9BF7 FAC5 5809 DD8C B7B1 470D B964 +D: netfilter: TCP window tracking code +D: netfilter: raw table +D: netfilter: iprange match +D: netfilter: new logging interfaces +D: netfilter: various other hacks +S: Tata +S: Hungary + +N: Bernhard Kaindl +E: bkaindl@netway.at +E: edv@bartelt.via.at +D: Author of a menu based configuration tool, kmenu, which +D: is the predecessor of 'make menuconfig' and 'make xconfig'. +D: digiboard driver update(modularisation work and 2.1.x upd) +S: Tallak 95 +S: 8103 Rein +S: Austria + +N: Mitsuru Kanda +E: mk@linux-ipv6.org +E: mk@isl.rdc.toshiba.co.jp +E: mk@karaba.org +W: http://www.karaba.org/~mk/ +P: 1024D/2EC7E30D 4DC3 949B 5A6C F0D6 375F 4472 8888 A8E1 2EC7 E30D +D: IPsec, IPv6 +D: USAGI/WIDE Project, TOSHIBA CORPORATION +S: 2-47-8, Takinogawa, +S: Kita, Tokyo 114-0023 +S: Japan + +N: Jan Kara +E: jack@atrey.karlin.mff.cuni.cz +E: jack@suse.cz +D: Quota fixes for 2.2 kernel +D: Quota fixes for 2.3 kernel +D: Few other fixes in filesystem area (buffer cache, isofs, loopback) +W: http://atrey.karlin.mff.cuni.cz/~jack/ +S: Krosenska' 543 +S: 181 00 Praha 8 +S: Czech Republic + +N: Jan "Yenya" Kasprzak +E: kas@fi.muni.cz +D: Author of the COSA/SRP sync serial board driver. +D: Port of the syncppp.c from the 2.0 to the 2.1 kernel. +P: 1024/D3498839 0D 99 A7 FB 20 66 05 D7 8B 35 FC DE 05 B1 8A 5E +W: http://www.fi.muni.cz/~kas/ +S: c/o Faculty of Informatics, Masaryk University +S: Botanicka' 68a +S: 602 00 Brno +S: Czech Republic + +N: Jakob Kemi +E: jakob.kemi@telia.com +D: V4L W9966 Webcam driver +S: Forsbyvägen 33 +S: 74143 Knivsta +S: Sweden + +N: Fred N. van Kempen +E: waltje@linux.com +D: NET-2 +D: Drivers +D: Kernel cleanups +S: Korte Heul 95 +S: 1403 ND BUSSUM +S: The Netherlands + +N: Karl Keyte +E: karl@koft.com +D: Disk usage statistics and modifications to line printer driver +S: 26a Sheen Road +S: Richmond +S: Surrey +S: TW9 1AE +S: United Kingdom + +N: Marko Kiiskila +E: marko@iprg.nokia.com +D: Author of ATM Lan Emulation +S: 660 Harvard Ave. #7 +S: Santa Clara, CA 95051 +S: USA + +N: Russell King +E: rmk@arm.linux.org.uk +D: Linux/arm integrator, maintainer & hacker +D: Acornfb, Cyber2000fb author +S: Burgh Heath, Tadworth, Surrey. +S: England + +N: Olaf Kirch +E: okir@monad.swb.de +D: Author of the Linux Network Administrators' Guide +S: Kattreinstr 38 +S: D-64295 +S: Germany + +N: Andi Kleen +E: ak@muc.de +D: network hacker, syncookies +S: Schwalbenstr. 96 +S: 85551 Ottobrunn +S: Germany + +N: Ian Kluft +E: ikluft@thunder.sbay.org +W: http://www.kluft.com/~ikluft/ +D: NET-1 beta testing & minor patches, original Smail binary packages for +D: Slackware and Debian, vote-taker for 2nd comp.os.linux reorganization +S: Post Office Box 611311 +S: San Jose, California 95161-1311 +S: USA + +N: Thorsten Knabe +E: Thorsten Knabe +E: Thorsten Knabe +W: http://www.student.informatik.tu-darmstadt.de/~tek +W: http://www.tu-darmstadt.de/~tek01 +P: 1024/3BC8D885 8C 29 C5 0A C0 D1 D6 F4 20 D4 2D AB 29 F6 D0 60 +D: AD1816 sound driver +S: Am Bergfried 10 +S: 63225 Langen +S: Germany + +N: Alain L. Knaff +E: Alain.Knaff@lll.lu +D: floppy driver +S: 19, rue Jean l'Aveugle +S: L-1148 Luxembourg-City +S: Luxembourg + +N: Gerd Knorr +W: http://bytesex.org +E: kraxel@bytesex.org +E: kraxel@suse.de +D: video4linux, bttv, vesafb, some scsi, misc fixes + +N: Harald Koenig +E: koenig@tat.physik.uni-tuebingen.de +D: XFree86 (S3), DCF77, some kernel hacks and fixes +S: Koenigsberger Str. 90 +S: D-72336 Balingen +S: Germany + +N: Rudolf Koenig +E: rfkoenig@immd4.informatik.uni-erlangen.de +D: The Linux Support Team Erlangen + +N: Andreas Koensgen +E: ajk@iehk.rwth-aachen.de +D: 6pack driver for AX.25 + +N: Harald Koerfgen +E: hkoerfg@web.de +D: Linux/MIPS kernel hacks and fixes, +D: DECstation port, Sharp Mobilon port +S: D-50931 Koeln +S: Germany + +N: Willy Konynenberg +E: willy@xos.nl +W: http://www.xos.nl/ +D: IP transparent proxy support +S: X/OS Experts in Open Systems BV +S: Kruislaan 419 +S: 1098 VA Amsterdam +S: The Netherlands + +N: Gene Kozin +E: 74604.152@compuserve.com +W: http://www.sangoma.com +D: WAN Router & Sangoma WAN drivers +S: Sangoma Technologies Inc. +S: 7170 Warden Avenue, Unit 2 +S: Markham, Ontario +S: L3R 8B2 +S: Canada + +N: Maxim Krasnyansky +E: maxk@qualcomm.com +W: http://vtun.sf.net +W: http://bluez.sf.net +D: Author of the Universal TUN/TAP driver +D: Author of the Linux Bluetooth Subsystem (BlueZ) +D: Various other kernel patches, cleanups and fixes +S: 2213 La Terrace Circle +S: San Jose, CA 95123 +S: USA + +N: Andreas S. Krebs +E: akrebs@altavista.net +D: CYPRESS CY82C693 chipset IDE, Digital's PC-Alpha 164SX boards + +N: Greg Kroah-Hartman +E: greg@kroah.com +E: gregkh@suse.de +W: http://www.kroah.com/linux/ +D: USB Serial Converter driver framework, USB Handspring Visor driver +D: ConnectTech WHITEHeat USB driver, Generic USB Serial driver +D: USB I/O Edgeport driver, USB Serial IrDA driver +D: USB Bluetooth driver, USB Skeleton driver +D: bits and pieces of USB core code. +D: PCI Hotplug core, PCI Hotplug Compaq driver modifications +D: portions of the Linux Security Module (LSM) framework +D: parts of the driver core, debugfs. + +N: Russell Kroll +E: rkroll@exploits.org +W: http://www.exploits.org/ +D: V4L radio cards: radio-aztech (new), others (bugfixes/features) +D: Loopback block device: dynamic sizing ("max_loop" as module) +S: Post Office Box 691886 +S: San Antonio, Texas 78269-1886 +S: USA + +N: Denis O. Kropp +E: dok@directfb.org +D: NeoMagic framebuffer driver +S: Badensche Str. 46 +S: 10715 Berlin +S: Germany + +N: Andrzej M. Krzysztofowicz +E: ankry@mif.pg.gda.pl +D: Some 8-bit XT disk driver and devfs hacking +D: Aladdin 1533/1543(C) chipset IDE +D: PIIX chipset IDE +S: ul. Matemblewska 1B/10 +S: 80-283 Gdansk +S: Poland + +N: Gero Kuhlmann +E: gero@gkminix.han.de +D: mounting root via NFS +S: Donarweg 4 +S: D-30657 Hannover +S: Germany + +N: Markus Kuhn +E: mskuhn@cip.informatik.uni-erlangen.de +W: http://wwwcip.informatik.uni-erlangen.de/user/mskuhn +D: Unicode, real-time, time, standards +S: Schlehenweg 9 +S: D-91080 Uttenreuth +S: Germany + +N: Gabor Kuti +M: seasons@falcon.sch.bme.hu +M: seasons@makosteszta.sote.hu +D: Original author of software suspend + +N: Jaroslav Kysela +E: perex@suse.cz +W: http://www.perex.cz +D: Original Author and Maintainer for HP 10/100 Mbit Network Adapters +D: ISA PnP +S: Sindlovy Dvory 117 +S: 370 01 Ceske Budejovice +S: Czech Republic + +N: Bas Laarhoven +E: sjml@xs4all.nl +D: Loadable modules and ftape driver +S: J. Obrechtstr 23 +S: NL-5216 GP 's-Hertogenbosch +S: The Netherlands + +N: Savio Lam +E: lam836@cs.cuhk.hk +D: Author of the dialog utility, foundation +D: for Menuconfig's lxdialog. + +N: Christoph Lameter +E: christoph@lameter.com +D: Digiboard PC/Xe and PC/Xi, Digiboard EPCA +D: Early protocol filter for bridging code +D: Bug fixes + +N: Paul Laufer +E: paul@laufernet.com +D: Soundblaster driver fixes, ISAPnP quirk +S: California, USA + +N: Tom Lees +E: tom@lpsg.demon.co.uk +W: http://www.lpsg.demon.co.uk/ +P: 1024/87D4D065 2A 66 86 9D 02 4D A6 1E B8 A2 17 9D 4F 9B 89 D6 +D: Original author and current maintainer of +D: PnP code. + +N: David van Leeuwen +E: david@tm.tno.nl +D: Philips/LMS cm206 cdrom driver, generic cdrom driver +S: Scheltemalaan 14 +S: 3817 KS Amersfoort +S: The Netherlands + +N: Volker Lendecke +E: vl@kki.org +D: Kernel smbfs (to mount WfW, NT and OS/2 network drives.) +D: NCP filesystem support (to mount NetWare volumes) +S: Von Ossietzky Str. 12 +S: 37085 Goettingen +S: Germany + +N: Kevin Lentin +E: kevinl@cs.monash.edu.au +D: NCR53C400/T130B SCSI extension to NCR5380 driver. +S: 18 Board Street +S: Doncaster VIC 3108 +S: Australia + +N: Hans Lermen +E: lermen@elserv.ffm.fgan.de +D: Author of the LOADLIN Linux loader, hacking on boot stuff +D: Coordinator of DOSEMU releases +S: Am Muehlenweg 38 +S: D53424 Remagen +S: Germany + +N: Colin Leroy +E: colin@colino.net +W: http://www.geekounet.org/ +D: PowerMac adt7467 fan driver +S: Toulouse +S: France + +N: Achim Leubner +E: achim_leubner@adaptec.com +D: GDT Disk Array Controller/Storage RAID controller driver +S: ICP vortex GmbH +S: Neckarsulm +S: Germany + +N: Phil Lewis +E: beans@bucket.ualr.edu +D: Promised to send money if I would put his name in the source tree. +S: Post Office Box 371 +S: North Little Rock, Arkansas 72115 +S: USA + +N: Stephan Linz +E: linz@mazet.de +E: Stephan.Linz@gmx.de +W: http://www.crosswinds.net/~tuxer +D: PCILynx patch to work with 1394a PHY and without local RAM +S: (ask for current address) +S: Germany + +N: Christophe Lizzi +E: lizzi@cnam.fr +W: http://cedric.cnam.fr/personne/lizzi +D: FORE Systems 200E-series ATM network driver, sparc64 port of ATM +S: CNAM, Laboratoire CEDRIC +S: 292, rue St-Martin +S: 75141 Paris Cedex 03 +S: France + +N: Siegfried "Frieder" Loeffler (dg1sek) +E: floeff@tunix.mathematik.uni-stuttgart.de, fl@LF.net +W: http://www.mathematik.uni-stuttgart.de/~floeff +D: Busmaster driver for HP 10/100 Mbit Network Adapters +S: University of Stuttgart, Germany and +S: Ecole Nationale Superieure des Telecommunications, Paris + +N: Jamie Lokier +E: jamie@imbolc.ucc.ie +D: Reboot-through-BIOS for broken 486 motherboards +D: Some parport fixes +S: 11 Goodson Walk +S: Marston +S: Oxford +S: OX3 0HX +S: United Kingdom + +N: Mark Lord +E: mlord@pobox.com +D: EIDE driver, hd.c support +D: EIDE PCI and bus-master DMA support +D: Hard Disk Parameter (hdparm) utility +S: 33 Ridgefield Cr +S: Nepean, Ontario +S: Canada K2H 6S3 + +N: Warner Losh +E: imp@village.org +D: Linux/MIPS Deskstation support, Provided OI/OB for Linux +S: 8786 Niwot Road +S: Niwot, Colorado 80503 +S: USA + +N: Robert M. Love +E: rml@tech9.net +E: rml@novell.com +D: misc. kernel hacking and debugging +S: Cambridge, MA 02139 +S: USA + +N: Martin von Löwis +E: loewis@informatik.hu-berlin.de +D: script binary format +D: NTFS driver + +N: H.J. Lu +E: hjl@gnu.ai.mit.edu +D: GCC + libraries hacker + +N: Michal Ludvig +E: michal@logix.cz +E: michal.ludvig@asterisk.co.nz +W: http://www.logix.cz/michal +P: 1024D/C45B2218 1162 6471 D391 76E0 9F99 29DA 0C3A 2509 C45B 2218 +D: VIA PadLock driver +D: Netfilter pkttype module +S: Asterisk Ltd. +S: Auckland +S: New Zealand + +N: Tuomas J. Lukka +E: Tuomas.Lukka@Helsinki.FI +D: Original dual-monitor patches +D: Console-mouse-tracking patches +S: Puistokaari 1 E 18 +S: 00200 Helsinki +S: Finland + +N: Daniel J. Maas +E: dmaas@dcine.com +W: http://www.maasdigital.com +D: dv1394 + +N: Hamish Macdonald +E: hamishm@lucent.com +D: Linux/68k port +S: 32 Clydesdale Avenue +S: Kanata, Ontario +S: Canada K2M-2G7 + +N: Peter MacDonald +D: SLS distribution +D: Initial implementation of VC's, pty's and select() + +N: Pavel Machek +E: pavel@ucw.cz +E: pavel@suse.cz +D: Softcursor for vga, hypertech cdrom support, vcsa bugfix, nbd +D: sun4/330 port, capabilities for elf, speedup for rm on ext2, USB, +D: work on suspend-to-ram/disk, killing duplicates from ioctl32 +S: Volkova 1131 +S: 198 00 Praha 9 +S: Czech Republic + +N: Paul Mackerras +E: paulus@samba.org +D: PPP driver +D: Linux for PowerPC +D: Linux port for PCI Power Macintosh + +N: Pat Mackinlay +E: pat@it.com.au +D: 8 bit XT hard disk driver +D: Miscellaneous ST0x, TMC-8xx and other SCSI hacking +S: 25 McMillan Street +S: Victoria Park 6100 +S: Australia + +N: James B. MacLean +E: macleajb@ednet.ns.ca +W: http://www.ednet.ns.ca/~macleajb/dosemu.html +D: Former Coordinator of DOSEMU releases +D: Program in DOSEMU +S: PO BOX 220, HFX. CENTRAL +S: Halifax, Nova Scotia +S: Canada B3J 3C8 + +N: Kai Mäkisara +E: Kai.Makisara@kolumbus.fi +D: SCSI Tape Driver + +N: Asit Mallick +E: asit.k.mallick@intel.com +D: Linux/IA-64 +S: 2200 Mission College Blvd +S: Santa Clara, CA 95052 +S: USA + +N: Petko Manolov +E: petkan@users.sourceforge.net +D: USB ethernet pegasus/pegasus-II driver +D: USB ethernet rtl8150 driver +D: optimizing i[45]86 string routines +D: i386 task switching hacks +S: 482 Shadowgraph Dr. +S: San Jose, CA 95110 +S: USA + +N: Martin Mares +E: mj@ucw.cz +W: http://www.ucw.cz/~mj/ +D: BIOS video mode handling code +D: MOXA C-218 serial board driver +D: Network autoconfiguration +D: PCI subsystem +D: Random kernel hacking +S: Kankovskeho 1241 +S: 182 00 Praha 8 +S: Czech Republic + +N: John A. Martin +E: jam@acm.org +W: http://www.tux.org/~jam/ +P: 1024/04456D53 9D A3 6C 6B 88 80 8A 61 D7 06 22 4F 95 40 CE D2 +P: 1024/3B986635 5A61 7EE6 9E20 51FB 59FB 2DA5 3E18 DD55 3B98 6635 +D: FSSTND contributor +D: Credit file compilator + +N: Kevin E. Martin +E: martin@cs.unc.edu +D: Developed original accelerated X servers included in XFree86 +D: XF86_Mach64 +D: XF86_Mach32 +D: XF86_Mach8 +D: XF86_8514 +D: cfdisk (curses based disk partitioning program) + +N: John S. Marvin +E: jsm@fc.hp.com +D: PA-RISC port +S: Hewlett Packard +S: MS 42 +S: 3404 E. Harmony Road +S: Fort Collins, CO 80528 + +N: Torben Mathiasen +E: torben.mathiasen@compaq.com +E: torben@kernel.dk +W: http://tlan.kernel.dk +D: ThunderLAN maintainer +D: ThunderLAN updates and other kernel fixes. +S: Bremensgade 29, st.th +S: 2300 Copenhagen S +S: Denmark + +N: Claudio S. Matsuoka +E: claudio@conectiva.com +E: claudio@helllabs.org +W: http://helllabs.org/~claudio +D: V4L, OV511 driver hacks +S: Conectiva S.A. +S: R. Tocantins 89 +S: 80050-430 Curitiba PR +S: Brazil + +N: Heinz Mauelshagen +E: mge@EZ-Darmstadt.Telekom.de +D: Logical Volume Manager +S: Bartningstr. 12 +S: 64289 Darmstadt +S: Germany + +N: Mark W. McClelland +E: mmcclell@bigfoot.com +E: mark@alpha.dyndns.org +W: http://alpha.dyndns.org/ov511/ +P: 1024D/357375CC 317C 58AC 1B39 2AB0 AB96 EB38 0B6F 731F 3573 75CC +D: OV511 driver +S: (address available on request) +S: USA + +N: Patrick McHardy +E: kaber@trash.net +P: 1024D/12155E80 B128 7DE6 FF0A C2B2 48BE AB4C C9D4 964E 1215 5E80 +D: netfilter: endless number of bugfixes +D: netfilter: CLASSIFY target +D: netfilter: addrtype match +D: tc: HFSC scheduler +S: Freiburg +S: Germany + +N: Mike McLagan +E: mike.mclagan@linux.org +W: http://www.invlogic.com/~mmclagan +D: DLCI/FRAD drivers for Sangoma SDLAs +S: Innovative Logic Corp +S: Post Office Box 1068 +S: Laurel, Maryland 20732 +S: USA + +N: Bradley McLean +E: brad@bradpc.gaylord.com +D: Device driver hacker +D: General kernel debugger +S: 249 Nichols Avenue +S: Syracuse, New York 13206 +S: USA + +N: Dirk Melchers +E: dirk@merlin.nbg.sub.org +D: 8 bit XT hard disk driver for OMTI5520 +S: Schloessleinsgasse 31 +S: D-90453 Nuernberg +S: Germany + +N: Arnaldo Carvalho de Melo +E: acme@conectiva.com.br +E: acme@kernel.org +E: acme@gnu.org +W: http://bazar2.conectiva.com.br/~acme +W: http://advogato.org/person/acme +P: 1024D/9224DF01 D5DF E3BB E3C8 BCBB F8AD 841A B6AB 4681 9224 DF01 +D: wanrouter hacking +D: misc Makefile, Config.in, drivers and network stacks fixes +D: IPX & LLC network stacks maintainer +D: Cyclom 2X synchronous card driver +D: wl3501 PCMCIA wireless card driver +D: i18n for minicom, net-tools, util-linux, fetchmail, etc +S: Conectiva S.A. +S: R. Tocantins, 89 - Cristo Rei +S: 80050-430 - Curitiba - Paraná +S: Brazil + +N: Karsten Merker +E: merker@linuxtag.org +D: DECstation framebuffer drivers +S: Germany + +N: Michael Meskes +E: meskes@debian.org +P: 1024/04B6E8F5 6C 77 33 CA CC D6 22 03 AB AB 15 A3 AE AD 39 7D +D: Kernel hacker. PostgreSQL hacker. Software watchdog daemon. +D: Maintainer of several Debian packages +S: Th.-Heuss-Str. 61 +S: D-41812 Erkelenz +S: Germany + +N: Nigel Metheringham +E: Nigel.Metheringham@ThePLAnet.net +P: 1024/31455639 B7 99 BD B8 00 17 BD 46 C1 15 B8 AB 87 BC 25 FA +D: IP Masquerading work and minor fixes +S: Planet Online +S: The White House, Melbourne Street, LEEDS +S: LS2 7PS, United Kingdom + +N: Craig Metz +E: cmetz@inner.net +D: Some of PAS 16 mixer & PCM support, inet6-apps + +N: William (Bill) Metzenthen +E: billm@suburbia.net +D: Author of the FPU emulator. +D: Minor kernel hacker for other lost causes (Hercules mono, etc). +S: 22 Parker Street +S: Ormond +S: Victoria 3163 +S: Australia + +N: Pauline Middelink +E: middelin@polyware.nl +D: General low-level bug fixes, /proc fixes, identd support +D: Author of IP masquerading +D: Zoran ZR36120 Video For Linux driver +S: Boterkorfhoek 34 +S: 7546 JA Enschede +S: Netherlands + +N: David S. Miller +E: davem@davemloft.net +D: Sparc and blue box hacker +D: Vger Linux mailing list co-maintainer +D: Linux Emacs elf/qmagic support + other libc/gcc things +D: Yee bore de yee bore! ;-) +S: 575 Harrison St. #103 +S: San Francisco, CA 94105 +S: USA + +N: Rick Miller +E: rdmiller@execpc.com +W: http://www.execpc.com/~rdmiller/ +D: Original Linux Device Registrar (Major/minor numbers) +D: au-play, bwBASIC +S: S78 W16203 Woods Road +S: Muskego, Wisconsin 53150 +S: USA + +N: Harald Milz +E: hm@seneca.linux.de +D: Linux Projects Map, Linux Commercial-HOWTO +D: general Linux publicity in Germany, vacation port +D: UUCP and CNEWS binary packages for LST +S: Editorial Board iX Mag +S: Helstorfer Str. 7 +S: D-30625 Hannover +S: Germany + +N: Corey Minyard +E: minyard@wf-rch.cirr.com +E: minyard@mvista.com +W: http://home.attbi.com/~minyard +D: Sony CDU31A CDROM Driver +D: IPMI driver +D: Various networking fixes long ago +D: Original ppc_md work +D: Shared zlib +S: 7406 Wheat Field Rd +S: Garland, Texas 75044 +S: USA + +N: Kazunori Miyazawa +E: miyazawa@linux-ipv6.org +E: Kazunori.Miyazawa@jp.yokogawa.com +E: kazunori@miyazawa.org +W: http://www.miyazawa.org/~kazunori/ +D: IPsec, IPv6 +D: USAGI/WIDE Project, Yokogawa Electric Corporation +S: 2-20-4-203, Nakacho, +S: Musashino, Tokyo 180-0006 +S: Japan + +N: Patrick Mochel +E: mochel@osdl.org +E: mochelp@infinity.powertie.org +D: PCI Power Management, ACPI work +S: 12725 SW Millikan Way, Suite 400 +S: Beaverton, Oregon 97005 +S: USA + +N: Eberhard Moenkeberg +E: emoenke@gwdg.de +D: CDROM driver "sbpcd" (Matsushita/Panasonic/Soundblaster) +S: Ruhstrathoehe 2 b. +S: D-37085 Goettingen +S: Germany + +N: Thomas Molina +E: tmolina@cablespeed.com +D: bug fixes, documentation, minor hackery + +N: James Morris +E: jmorris@intercode.com.au +W: http://www.intercode.com.au/jmorris/ +D: Netfilter, Linux Security Modules (LSM). +S: PO Box 707 +S: Spit Junction NSW 2088 +S: Australia + +N: David Mosberger-Tang +E: davidm@hpl.hp.com if IA-64 related, else David.Mosberger@acm.org +D: Linux/Alpha and Linux/ia64 +S: 35706 Runckel Lane +S: Fremont, California 94536 +S: USA + +N: Sam Mosel +E: sam.mosel@computer.org +D: Wacom Intuos USB Support +S: 22 Seaview St +S: Fullarton 5063 +S: South Australia + +N. Wolfgang Muees +E: wolfgang@iksw-muees.de +D: Auerswald USB driver + +N: Ian A. Murdock +E: imurdock@gnu.ai.mit.edu +D: Creator of Debian distribution +S: 30 White Tail Lane +S: Lafayette, Indiana 47905 +S: USA + +N: Scott Murray +E: scottm@somanetworks.com +E: scott@spiteful.org +D: OPL3-SA2, OPL3-SA3 sound driver +D: CompactPCI hotplug core +D: Ziatech ZT5550 and generic CompactPCI hotplug drivers +S: Toronto, Ontario +S: Canada + +N: Zwane Mwaikambo +E: zwane@linuxpower.ca +W: http://function.linuxpower.ca +D: Various driver hacking +D: Lowlevel x86 kernel hacking +D: General debugging +S: (ask for current address) +S: Tanzania + +N: Trond Myklebust +E: trond.myklebust@fys.uio.no +D: current NFS client hacker. +S: Dagaliveien 31e +S: N-0391 Oslo +S: Norway + +N: Johan Myreen +E: jem@iki.fi +D: PS/2 mouse driver writer etc. +S: Dragonvagen 1 A 13 +S: FIN-00330 Helsingfors +S: Finland + +N: Matija Nalis +E: mnalis@jagor.srce.hr +E: mnalis@voyager.hr +D: Maintainer of the Umsdos file system +S: Listopadska 7 +S: 10000 Zagreb +S: Croatia + +N: Jonathan Naylor +E: g4klx@g4klx.demon.co.uk +E: g4klx@amsat.org +W: http://zone.pspt.fi/~jsn/ +D: AX.25, NET/ROM and ROSE amateur radio protocol suites +D: CCITT X.25 PLP and LAPB. +S: 24 Castle View Drive +S: Cromford +S: Matlock +S: Derbyshire DE4 3RL +S: United Kingdom + +N: Ian S. Nelson +E: ian.nelson@echostar.com +D: Minor mmap and ide hacks +S: 1370 Atlantis Ave. +S: Lafayette CO, 80026 +S: USA + +N: Russell Nelson +E: nelson@crynwr.com +W: http://www.crynwr.com/~nelson +P: 1024/83942741 FF 68 EE 27 A0 5A AA C3 F5 DC 05 62 BD 5B 20 2F +D: Author of cs89x0, maintainer of kernel changelog through 1.3.3 +D: Wrote many packet drivers, from which some Ethernet drivers are derived. +S: 521 Pleasant Valley Road +S: Potsdam, New York 13676 +S: USA + +N: Dave Neuer +E: dneuer@innovation-charter.com +E: mr_fred_smoothie@yahoo.com +D: Helped implement support for Compaq's H31xx series iPAQs +D: Other mostly minor tweaks & bugfixes +S: 325 E. Main St., Suite 3 +S: Carnegie, PA 15105 +S: USA + +N: Michael Neuffer +E: mike@i-Connect.Net +E: neuffer@goofy.zdv.uni-mainz.de +W: http://www.i-Connect.Net/~mike/ +D: Developer and maintainer of the EATA-DMA SCSI driver +D: Co-developer EATA-PIO SCSI driver +D: /proc/scsi and assorted other snippets +S: Zum Schiersteiner Grund 2 +S: 55127 Mainz +S: Germany + +N: Gustavo Niemeyer +E: niemeyer@conectiva.com +W: https://moin.conectiva.com.br/GustavoNiemeyer +D: wl3501 PCMCIA wireless card initial support for wireless extensions in 2.4 +S: Conectiva S.A. +S: R. Tocantins 89 +S: 80050-430 Curitiba PR +S: Brazil + +N: David C. Niemi +E: niemi@tux.org +W: http://www.tux.org/~niemi/ +D: Assistant maintainer of Mtools, fdutils, and floppy driver +D: Administrator of Tux.Org Linux Server, http://www.tux.org +S: 2364 Old Trail Drive +S: Reston, Virginia 20191 +S: USA + +N: Fredrik Noring +E: noring@nocrew.org +W: http://www.lysator.liu.se/~noring/ +D: dsp56k device driver + +N: Michael O'Reilly +E: michael@iinet.com.au +E: oreillym@tartarus.uwa.edu.au +D: Wrote the original dynamic sized disk cache stuff. I think the only +D: part that remains is the GFP_KERNEL et al #defines. :) +S: 192 Nichsolson Road +S: Subiaco, 6008 +S: Perth, Western Australia +S: Australia + +N: Greg Page +E: gpage@sovereign.org +D: IPX development and support + +N: David Parsons +E: orc@pell.chi.il.us +D: improved memory detection code. + +N: Ivan Passos +E: ivan@cyclades.com +D: Author of the Cyclades-PC300 synchronous card driver +D: Maintainer of the Cyclom-Y/Cyclades-Z asynchronous card driver +S: Cyclades Corp +S: 41934 Christy St +S: Fremont, CA 94538 +S: USA + +N: Mikulas Patocka +E: mikulas@artax.karlin.mff.cuni.cz +W: http://artax.karlin.mff.cuni.cz/~mikulas/ +P: 1024/BB11D2D5 A0 F1 28 4A C4 14 1E CF 92 58 7A 8F 69 BC A4 D3 +D: Read/write HPFS filesystem +S: Weissova 8 +S: 644 00 Brno +S: Czech Republic + +N: Vojtech Pavlik +E: vojtech@suse.cz +D: Joystick driver +D: arcnet-hardware readme +D: Minor ARCnet hacking +D: USB (HID, ACM, Printer ...) +S: Ucitelska 1576 +S: Prague 8 +S: 182 00 Czech Republic + +N: Barak A. Pearlmutter +E: bap@cs.unm.edu +W: http://www.cs.unm.edu/~bap/ +P: 512/602D785D 9B A1 83 CD EE CB AD 93 20 C6 4C B7 F5 E9 60 D4 +D: Author of mark-and-sweep GC integrated by Alan Cox +S: Computer Science Department +S: FEC 313 +S: University of New Mexico +S: Albuquerque, New Mexico 87131 +S: USA + +N: Avery Pennarun +E: apenwarr@worldvisions.ca +W: http://www.worldvisions.ca/~apenwarr/ +D: ARCnet driver +D: "make xconfig" improvements +D: Various minor hacking +S: RR #5, 497 Pole Line Road +S: Thunder Bay, Ontario +S: CANADA P7C 5M9 + +N: Yuri Per +E: yuri@pts.mipt.ru +D: Some smbfs fixes +S: Demonstratsii 8-382 +S: Tula 300000 +S: Russia + +N: Gordon Peters +E: GordPeters@smarttech.com +D: Isochronous receive for IEEE 1394 driver (OHCI module). +D: Bugfixes for the aforementioned. +S: Calgary, Alberta +S: Canada + +N: Johnnie Peters +E: jpeters@phx.mcd.mot.com +D: Motorola PowerPC changes for PReP +S: 2900 S. Diable Way +S: Tempe, Arizona 85282 +S: USA + +N: Kirk Petersen +E: kirk@speakeasy.org +W: http://www.speakeasy.org/~kirk/ +D: implemented kmod +D: modularized BSD Unix domain sockets + +N: Martin Kasper Petersen +E: mkp@mkp.net +D: PA-RISC port +D: XFS file system +D: kiobuf based block I/O work +S: 314 Frank St. +S: Ottawa, Ontario +S: Canada K2P 0X8 + +N: Mikael Pettersson +E: mikpe@csd.uu.se +W: http://www.csd.uu.se/~mikpe/ +D: Miscellaneous fixes + +N: Reed H. Petty +E: rhp@draper.net +W: http://www.draper.net +D: Loop device driver extensions +D: Encryption transfer modules (no export) +S: Post Office Box 1815 +S: Harrison, Arkansas 72602-1815 +S: USA + +N: Kai Petzke +E: petzke@teltarif.de +W: http://www.teltarif.de/ +P: 1024/B42868C1 D9 59 B9 98 BB 93 05 38 2E 3E 31 79 C3 65 5D E1 +D: Driver for Laser Magnetic Storage CD-ROM +D: Some kernel bug fixes +D: Port of the database Postgres +D: Book: "Linux verstehen und anwenden" (Hanser-Verlag) +S: Triftstra=DFe 55 +S: 13353 Berlin +S: Germany + +N: Emanuel Pirker +E: epirker@edu.uni-klu.ac.at +D: AIC5800 IEEE 1394, RAW I/O on 1394 +D: Starter of Linux1394 effort +S: ask per mail for current address + +N: Nicolas Pitre +E: nico@cam.org +D: StrongARM SA1100 support integrator & hacker +D: Xscale PXA architecture +D: unified SMC 91C9x/91C11x ethernet driver (smc91x) +S: Montreal, Quebec, Canada + +N: Ken Pizzini +E: ken@halcyon.com +D: CDROM driver "sonycd535" (Sony CDU-535/531) + +N: Stelian Pop +E: stelian@popies.net +P: 1024D/EDBB6147 7B36 0E07 04BC 11DC A7A0 D3F7 7185 9E7A EDBB 6147 +D: sonypi, meye drivers, mct_u232 usb serial hacks +S: Paris, France + +N: Pete Popov +E: pete_popov@yahoo.com +D: Linux/MIPS AMD/Alchemy Port and mips hacking and debugging +S: San Jose, CA 95134 +S: USA + +N: Matt Porter +E: mporter@kernel.crashing.org +D: Motorola PowerPC PReP support +D: cPCI PowerPC support +D: Embedded PowerPC 4xx/6xx/7xx/74xx support +S: Chandler, Arizona 85249 +S: USA + +N: Frederic Potter +E: fpotter@cirpack.com +D: Some PCI kernel support + +N: Rui Prior +E: rprior@inescn.pt +D: ATM device driver for NICStAR based cards + +N: Stefan Probst +E: sp@caldera.de +D: The Linux Support Team Erlangen, 1993-97 +S: Caldera (Deutschland) GmbH +S: Lazarettstrasse 8 +S: 91054 Erlangen +S: Germany + +N: Giuliano Procida +E: myxie@debian.org,gprocida@madge.com +D: Madge Ambassador driver (Collage 155 Server ATM adapter) +D: Madge Horizon driver (Collage 25 and 155 Client ATM adapters) +P: 1024/93898735 D3 9E F4 F7 6D 8D 2F 3A 38 BA 06 7C 2B 33 43 7D +S: Madge Networks +S: Framewood Road +S: Wexham SL3 6PJ +S: United Kingdom + +N: Daniel Quinlan +E: quinlan@pathname.com +W: http://www.pathname.com/~quinlan/ +D: FSSTND coordinator; FHS editor +D: random Linux documentation, patches, and hacks +S: 4390 Albany Drive #41A +S: San Jose, California 95129 +S: USA + +N: Juan Quintela +E: quintela@fi.udc.es +D: Memory Management hacking +S: LFCIA +S: Departamento de Computación +S: Universidade da Coruña +S: E-15071 +S: A Coruña +S: Spain + +N: Augusto Cesar Radtke +E: bishop@sekure.org +W: http://bishop.sekure.org +D: {copy,get,put}_user calls updates +D: Miscellaneous hacks +S: R. Otto Marquardt, 226 - Garcia +S: 89020-350 Blumenau - Santa Catarina +S: Brazil + +N: Goutham Rao +E: goutham.rao@intel.com +D: Linux/IA-64 +S: 2200 Mission College Blvd +S: Santa Clara, CA 95052 +S: USA + +N: Eric S. Raymond +E: esr@thyrsus.com +W: http://www.tuxedo.org/~esr/ +D: terminfo master file maintainer +D: Editor: Installation HOWTO, Distributions HOWTO, XFree86 HOWTO +D: Author: fetchmail, Emacs VC mode, Emacs GUD mode +S: 6 Karen Drive +S: Malvern, Pennsylvania 19355 +S: USA + +N: Stefan Reinauer +E: stepan@linux.de +W: http://www.freiburg.linux.de/~stepan/ +D: Modularization of some filesystems +D: /proc/sound, minor fixes +S: Schlossbergring 9 +S: 79098 Freiburg +S: Germany + +N: Joerg Reuter +E: jreuter@yaina.de +W: http://yaina.de/jreuter/ +W: http://www.qsl.net/dl1bke/ +D: Generic Z8530 driver, AX.25 DAMA slave implementation +D: Several AX.25 hacks + +N: Francois-Rene Rideau +E: fare@tunes.org +W: http://www.tunes.org/~fare +D: petty kernel janitor (byteorder, ufs) +S: 6, rue Augustin Thierry +S: 75019 Paris +S: France + +N: Rik van Riel +E: riel@redhat.com +W: http://www.surriel.com/ +D: Linux-MM site, Documentation/sysctl/*, swap/mm readaround +D: kswapd fixes, random kernel hacker, rmap VM, +D: nl.linux.org administrator, minor scheduler additions +S: Red Hat Boston +S: 3 Lan Drive +S: Westford, MA 01886 +S: USA + +N: Pekka Riikonen +E: priikone@poseidon.pspt.fi +E: priikone@ssh.com +D: Random kernel hacking and bug fixes +D: International kernel patch project +S: Kasarmikatu 11 A4 +S: 70110 Kuopio +S: Finland + +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 +S: Via Liberta' 41/A +S: Osio Sotto, 24046, Bergamo +S: Italy + +N: William E. Roadcap +E: roadcapw@cfw.com +W: http://www.cfw.com/~roadcapw +D: Author of menu based configuration tool, Menuconfig. +S: 1407 Broad Street +S: Waynesboro, Virginia 22980 +S: USA + +N: Andrew J. Robinson +E: arobinso@nyx.net +W: http://www.nyx.net/~arobinso +D: Hayes ESP serial port driver + +N: Florian La Roche +E: rzsfl@rz.uni-sb.de +E: flla@stud.uni-sb.de +D: Net programs and kernel net hacker +S: Gaildorfer Str. 27 +S: 7000 Stuttgart 50 +S: Germany + +N: Christoph Rohland +E: hans-christoph.rohland@sap.com +E: ch.rohland@gmx.net +D: shm fs, SYSV semaphores, af_unix +S: Neue Heimat Str. 8 +S: D-68789 St.Leon-Rot +S: Germany + +N: Thiago Berlitz Rondon +E: maluco@mileniumnet.com.br +W: http://vivaldi.linuxms.com.br/~maluco +D: Miscellaneous kernel hacker +S: R. Anhanguera, 1487 - Ipiranga +S: 79080-740 - Campo Grande - Mato Grosso do Sul +S: Brazil + +N: Stephen Rothwell +E: sfr@canb.auug.org.au +W: http://www.canb.auug.org.au/~sfr +P: 1024/BD8C7805 CD A4 9D 01 10 6E 7E 3B 91 88 FA D9 C8 40 AA 02 +D: Boot/setup/build work for setup > 2K +D: Author, APM driver +D: Directory notification +S: 66 Maltby Circuit +S: Wanniassa ACT 2903 +S: Australia + +N: Gerard Roudier +E: groudier@free.fr +D: Contributed to asynchronous read-ahead improvement +S: 21 Rue Carnot +S: 95170 Deuil La Barre +S: France + +N: Sebastien Rougeaux +E: Sebastien.Rougeaux@syseng.anu.edu.au +D: IEEE 1394 OHCI module +S: Research School of Information Science and Engineering +S: The Australian National University, ACT 0200 +S: Australia + +N: Aristeu Sergio Rozanski Filho +E: aris@cathedrallabs.org +D: Support for EtherExpress 10 ISA (i82595) in eepro driver +D: User level driver support for input +S: R. Jose Serrato, 130 - Santa Candida +S: 82640-320 - Curitiba - Paraná +S: Brazil + +N: Alessandro Rubini +E: rubini@ipvvis.unipv.it +D: the gpm mouse server and kernel support for it + +N: Philipp Rumpf +E: prumpf@tux.org +D: random bugfixes +S: Drausnickstrasse 29 +S: 91052 Erlangen +S: Germany + +N: Paul `Rusty' Russell +E: rusty@rustcorp.com.au +W: http://ozlabs.org/~rusty +D: Ruggedly handsome. +D: netfilter, ipchains with Michael Neuling. +S: 52 Moore St +S: Turner ACT 2612 +S: Australia + +N: Richard Russon (FlatCap) +E: kernel@flatcap.org +W: http://www.flatcap.org +D: NTFS support +D: LDM support (Win2000/XP Logical Disk Manager/Dynamic Disks) +S: 50 Swansea Road +S: Reading +S: United Kingdom + +N: Bill Ryder +E: bryder@sgi.com +D: FTDI_SIO usb/serial converter driver +W: http://reality.sgi.com/bryder_wellington/ftdi_sio +S: I/3 Walter St +S: Wellington +S: New Zealand + +N: Sampo Saaristo +E: sambo@cs.tut.fi +D: Co-author of Multi-Protocol Over ATM (MPOA) +S: Tampere University of Technology / Telecom lab +S: Hermiankatu 12C +S: FIN-33720 Tampere +S: Finland + +N: Thomas Sailer +E: t.sailer@alumni.ethz.ch +E: HB9JNX@HB9W.CHE.EU (packet radio) +D: Baycom driver +S: Markusstrasse 18 +S: 8006 Zuerich +S: Switzerland + +N: Manuel Estrada Sainz +D: Firmware loader (request_firmware) + +N: Wayne Salamon +E: wsalamon@tislabs.com +E: wsalamon@nai.com +D: portions of the Linux Security Module (LSM) framework and security modules + +N: Robert Sanders +E: gt8134b@prism.gatech.edu +D: Dosemu + +N: Duncan Sands +E: duncan.sands@free.fr +W: http://topo.math.u-psud.fr/~sands +D: Alcatel SpeedTouch USB driver +S: 69 rue Dunois +S: 75013 Paris +S: France + +N: Hannu Savolainen +E: hannu@opensound.com +D: Maintainer of the sound drivers until 2.1.x days. +D: Original compressed boot image support. +S: Valurink. 4A11 +S: 03600 Karkkila +S: Finland + +N: Deepak Saxena +E: dsaxena@plexity.net +D: I2O kernel layer (config, block, core, pci, net). I2O disk support for LILO +D: XScale(IOP, IXP) porting and other random ARM bits +S: Portland, OR + +N: Eric Schenk +E: Eric.Schenk@dna.lth.se +D: Random kernel debugging. +D: SYSV Semaphore code rewrite. +D: Network layer debugging. +D: Dial on demand facility (diald). +S: Dag Hammerskjolds v. 3E +S: S-226 64 LUND +S: Sweden + +N: Henning P. Schmiedehausen +E: hps@tanstaafl.de +D: added PCI support to the serial driver +S: Buckenhof, Germany + +N: Michael Schmitz +E: +D: Macintosh IDE Driver + +N: Peter De Schrijver +E: stud11@cc4.kuleuven.ac.be +D: Mitsumi CD-ROM driver patches March version +S: Molenbaan 29 +S: B2240 Zandhoven +S: Belgium + +N: Martin Schulze +E: joey@linux.de +W: http://home.pages.de/~joey/ +D: Random Linux Hacker, Linux Promoter +D: CD-List, Books-List, Ex-FAQ +D: Linux-Support, -Mailbox, -Stammtisch +D: several improvements to system programs +S: Oldenburg +S: Germany + +N: Robert Schwebel +E: robert@schwebel.de +W: http://www.schwebel.de +D: Embedded hacker and book author, +D: AMD Elan support for Linux +S: Pengutronix +S: Braunschweiger Strasse 79 +S: 31134 Hildesheim +S: Germany + +N: Darren Senn +E: sinster@darkwater.com +D: Whatever I notice needs doing (so far: itimers, /proc) +S: Post Office Box 64132 +S: Sunnyvale, California 94088-4132 +S: USA + +N: Simon Shapiro +E: shimon@i-Connect.Net +W: http://www.-i-Connect.Net/~shimon +D: SCSI debugging +D: Maintainer of the Debian Kernel packages +S: 14355 SW Allen Blvd., Suite #140 +S: Beaverton, Oregon 97008 +S: USA + +N: Mike Shaver +E: shaver@hungry.org +W: http://www.hungry.org/~shaver/ +D: MIPS work, /proc/sys/net, misc net hacking +S: 149 Union St. +S: Kingston, Ontario +S: Canada K7L 2P4 + +N: John Shifflett +E: john@geolog.com +E: jshiffle@netcom.com +D: Always IN2000 SCSI driver +D: wd33c93 SCSI driver (linux-m68k) +S: San Jose, California +S: USA + +N: Robert Siemer +E: Robert.Siemer@gmx.de +P: 2048/C99A4289 2F DC 17 2E 56 62 01 C8 3D F2 AC 09 F2 E5 DD EE +D: miroSOUND PCM20 radio RDS driver, ACI rewrite +S: Klosterweg 28 / i309 +S: 76131 Karlsruhe +S: Germany + +N: James Simmons +E: jsimmons@infradead.org +E: jsimmons@users.sf.net +D: Frame buffer device maintainer +D: input layer developement +D: tty/console layer +D: various mipsel devices +S: 115 Carmel Avenue +S: El Cerrito CA 94530 +S: USA + +N: Jaspreet Singh +E: jaspreet@sangoma.com +W: www.sangoma.com +D: WANPIPE drivers & API Support for Sangoma S508/FT1 cards +S: Sangoma Technologies Inc., +S: 1001 Denison Street +S: Suite 101 +S: Markham, Ontario L3R 2Z6 +S: Canada + +N: Rick Sladkey +E: jrs@world.std.com +D: utility hacker: Emacs, NFS server, mount, kmem-ps, UPS debugger, strace, GDB +D: library hacker: RPC, profil(3), realpath(3), regexp.h +D: kernel hacker: unnamed block devs, NFS client, fast select, precision timer +S: 24 Avon Place +S: Arlington, Massachusetts 02174 +S: USA + +N: Craig Small +E: csmall@triode.apana.org.au +E: vk2xlz@gonzo.vk2xlz.ampr.org (packet radio) +D: Gracilis PackeTwin device driver +D: RSPF daemon +S: 10 Stockalls Place +S: Minto, NSW, 2566 +S: Australia + +N: Stephen Smalley +E: sds@epoch.ncsc.mil +D: portions of the Linux Security Module (LSM) framework and security modules + +N: Chris Smith +E: csmith@convex.com +D: Read only HPFS filesystem +S: Richardson, Texas +S: USA + +N: Christopher Smith +E: x@xman.org +D: Tulip net driver hacker + +N: Mark Smith +E: mark.smith@comdev.cc +D: Multicast support in bonding driver + +N: Miquel van Smoorenburg +E: miquels@cistron.nl +D: Kernel and net hacker. Sysvinit, minicom. doing Debian stuff. +S: Cistron Internet Services +S: PO-Box 297 +S: 2400 AG, Alphen aan den Rijn +S: The Netherlands + +N: Scott Snyder +E: snyder@fnald0.fnal.gov +D: ATAPI cdrom driver +S: MS 352, Fermilab +S: Post Office Box 500 +S: Batavia, Illinois 60510 +S: USA + +N: Leo Spiekman +E: leo@netlabs.net +W: http://www.netlabs.net/hp/leo/ +D: Optics Storage 8000AT cdrom driver +S: Cliffwood, New Jersey 07721 +S: USA + +N: Manfred Spraul +E: manfred@colorfullife.com +W: http://www.colorfullife.com/~manfred +D: Lots of tiny hacks. Larger improvments to SysV IPC msg, +D: slab, pipe, select. +S: 71701 Schwieberdingen +S: Germany + +N: Andrew Stanley-Jones +E: asj@lanmedia.com +D: LanMedia Corp. Device WAN card device driver +S: #102, 686 W. Maude Ave +S: Sunyvale, CA 94086 +S: USA + +N: Michael Still +E: mikal@stillhq.com +W: http://www.stillhq.com +D: Various janitorial patches +D: mandocs and mandocs_install build targets +S: (Email me and ask) +S: Australia + +N: Henrik Storner +E: storner@image.dk +W: http://www.image.dk/~storner/ +W: http://www.sslug.dk/ +D: Configure script: Invented tristate for module-configuration +D: vfat/msdos integration, kerneld docs, Linux promotion +D: Miscellaneous bug-fixes +S: Chr. Winthersvej 1 B, st.th. +S: DK-1860 Frederiksberg C +S: Denmark + +N: Drew Sullivan +E: drew@ss.org +W: http://www.ss.org/ +P: 1024/ACFFA969 5A 9C 42 AB E4 24 82 31 99 56 00 BF D3 2B 25 46 +D: iBCS2 developer +S: 22 Irvington Cres. +S: Willowdale, Ontario +S: Canada M2N 2Z1 + +N: Adam Sulmicki +E: adam@cfar.umd.edu +W: http://www.eax.com +D: core networking fixes +D: patch-kernel enhancements +D: misc kernel fixes and updates + +N: Adrian Sun +E: asun@cobaltnet.com +D: hfs support +D: alpha rtc port, random appletalk fixes +S: Department of Zoology, University of Washington +S: Seattle, WA 98195-1800 +S: USA + +N: Eugene Surovegin +E: ebs@ebshome.net +W: http://kernel.ebshome.net/ +P: 1024D/AE5467F1 FF22 39F1 6728 89F6 6E6C 2365 7602 F33D AE54 67F1 +D: Embedded PowerPC 4xx: I2C, PIC and random hacks/fixes +S: Sunnyvale, California 94085 +S: USA + +N: Corey Thomas +E: corey@world.std.com +W: http://world.std.com/~corey/index.html +D: Raylink/WebGear wireless LAN device driver (ray_cs) author +S: 145 Howard St. +S: Northborough, MA 01532 +S: USA + +N: Tommy Thorn +E: Tommy.Thorn@irisa.fr +W: http://www.irisa.fr/prive/thorn/index.html +P: 512/B4AFC909 BC BF 6D B1 52 26 1E D6 E3 2F A3 24 2A 84 FE 21 +D: Device driver hacker (aha1542 & plip) +S: IRISA +S: Universit=E9 de Rennes I +S: F-35042 Rennes Cedex +S: France + +N: Jon Tombs +E: jon@gte.esi.us.es +W: http://www.esi.us.es/~jon +D: NFS mmap() +D: XF86_S3 +D: Kernel modules +D: Parts of various other programs (xfig, open, ...) +S: C/ Federico Garcia Lorca 1 10-A +S: Sevilla 41005 +S: Spain + +N: Linus Torvalds +E: torvalds@osdl.org +D: Original kernel hacker +S: 12725 SW Millikan Way, Suite 400 +S: Beaverton, Oregon 97005 +S: USA + +N: Marcelo W. Tosatti +E: marcelo.tosatti@cyclades.com +D: Miscellaneous kernel hacker +D: v2.4 kernel maintainer +D: Current pc300/cyclades maintainer +S: Cyclades Corporation +S: Av Cristovao Colombo, 462. Floresta. +S: Porto Alegre +S: Brazil + +N: Stefan Traby +E: stefan@quant-x.com +D: Minor Alpha kernel hacks +S: Mitterlasznitzstr. 13 +S: 8302 Nestelbach +S: Austria + +N: Jeff Tranter +E: tranter@pobox.com +D: Enhancements to Joystick driver +D: Author of Sound HOWTO and CD-ROM HOWTO +D: Author of several small utilities +D: (bogomips, scope, eject, statserial) +S: 1 Laurie Court +S: Kanata, Ontario +S: Canada K2L 1S2 + +N: Andrew Tridgell +E: tridge@samba.org +W: http://samba.org/tridge/ +D: dosemu, networking, samba +S: 3 Ballow Crescent +S: MacGregor A.C.T 2615 +S: Australia + +N: Winfried Trümper +E: winni@xpilot.org +W: http://www.shop.de/~winni/ +D: German HOWTO, Crash-Kurs Linux (German, 100 comprehensive pages) +D: CD-Writing HOWTO, various mini-HOWTOs +D: One-week tutorials on Linux twice a year (free of charge) +D: Linux-Workshop Köln (aka LUG Cologne, Germany), Installfests +S: Tacitusstr. 6 +S: D-50968 Köln + +N: Tsu-Sheng Tsao +E: tsusheng@scf.usc.edu +D: IGMP(Internet Group Management Protocol) version 2 +S: 2F 14 ALY 31 LN 166 SEC 1 SHIH-PEI RD +S: Taipei +S: Taiwan 112 +S: Republic of China +S: 24335 Delta Drive +S: Diamond Bar, California 91765 +S: USA + +N: Theodore Ts'o +E: tytso@mit.edu +D: Random Linux hacker +D: Maintainer of tsx-11.mit.edu ftp archive +D: Maintainer of c.o.l.* Usenet<->mail gateway +D: Author of serial driver +D: Author of the new e2fsck +D: Author of job control and system call restart code +D: Author of ramdisk device driver +D: Author of loopback device driver +S: MIT Room E40-343 +S: 1 Amherst Street +S: Cambridge, Massachusetts 02139 +S: USA + +N: Simmule Turner +E: sturner@tele-tv.com +D: Added swapping to filesystem +S: 4226 Landgreen Street +S: Rockville, Maryland 20853 +S: USA + +N: Stephen Tweedie +E: sct@redhat.com +P: 1024/E7A417AD E2 FE A4 20 34 EC ED FC 7D 7E 67 8D E0 31 D1 69 +P: 1024D/43BE7544 D2A4 8556 08E6 90E7 076C BA3F 243F 20A4 43BE 7544 +D: Second extended file system developer +D: General filesystem hacker +D: kswap vm management code +S: 44 Campbell Park Crescent +S: Edinburgh EH13 0HT +S: United Kingdom + +N: Thomas Uhl +E: uhl@sun1.rz.fh-heilbronn.de +D: Application programmer +D: Linux promoter +D: Author of a German book on Linux +S: Obere Heerbergstrasse 17 +S: 97078 Wuerzburg +S: Germany + +N: Greg Ungerer +E: gerg@snapgear.com +D: uClinux kernel hacker +D: Port uClinux to the Motorola ColdFire CPU +D: Author of Stallion multiport serial drivers +S: SnapGear Inc. +S: 825 Stanley St +S: Woolloongabba. QLD. 4102 +S: Australia + +N: Jeffrey A. Uphoff +E: juphoff@transmeta.com +E: jeff.uphoff@linux.org +P: 1024/9ED505C5 D7 BB CA AA 10 45 40 1B 16 19 0A C0 38 A0 3E CB +D: Linux Security/Alert mailing lists' moderator/maintainer. +D: NSM (rpc.statd) developer. +D: PAM S/Key module developer. +D: 'dip' contributor. +D: AIPS port, astronomical community support. +S: Transmeta Corporation +S: 2540 Mission College Blvd. +S: Santa Clara, CA 95054 +S: USA + +N: Matthias Urlichs +E: smurf@smurf.noris.de +E: smurf@debian.org +E: matthias@urlichs.de +D: Consultant, developer, kernel hacker +D: In a previous life, worked on Streams/ISDN/BSD networking code for Linux +S: Schleiermacherstrasse 12 +S: 90491 Nuernberg +S: Germany + +N: Geert Uytterhoeven +E: geert@linux-m68k.org +W: http://home.tvd.be/cr26864/ +P: 1024/862678A6 C51D 361C 0BD1 4C90 B275 C553 6EEA 11BA 8626 78A6 +D: m68k/Amiga and PPC/CHRP Longtrail coordinator +D: Frame buffer device and XF68_FBDev maintainer +D: m68k IDE maintainer +D: Amiga Zorro maintainer +D: Amiga Buddha and Catweasel chipset IDE +D: Atari Falcon chipset IDE +D: Amiga Gayle chipset IDE +D: mipsel NEC DDB Vrc-5074 +S: Emiel Vlieberghlaan 2A/21 +S: B-3010 Kessel-Lo +S: Belgium + +N: Chris Vance +E: cvance@tislabs.com +E: cvance@nai.com +D: portions of the Linux Security Module (LSM) framework and security modules + +N: Petr Vandrovec +E: vandrove@vc.cvut.cz +D: Small contributions to ncpfs +D: Matrox framebuffer driver +S: Chudenicka 8 +S: 10200 Prague 10, Hostivar +S: Czech Republic + +N: Heikki Vatiainen +E: hessu@cs.tut.fi +D: Co-author of Multi-Protocol Over ATM (MPOA), some LANE hacks +S: Tampere University of Technology / Telecom lab +S: Hermiankatu 12C +S: FIN-33720 Tampere +S: Finland + +N: Andrew Veliath +E: andrewtv@usa.net +D: Turtle Beach MultiSound sound driver +S: USA + +N: Dirk Verworner +D: Co-author of German book ``Linux-Kernel-Programmierung'' +D: Co-founder of Berlin Linux User Group + +N: Patrick Volkerding +E: volkerdi@ftp.cdrom.com +D: Produced the Slackware distribution, updated the SVGAlib +D: patches for ghostscript, worked on color 'ls', etc. +S: 301 15th Street S. +S: Moorhead, Minnesota 56560 +S: USA + +N: Jos Vos +E: jos@xos.nl +W: http://www.xos.nl/ +D: Various IP firewall updates, ipfwadm +S: X/OS Experts in Open Systems BV +S: Kruislaan 419 +S: 1098 VA Amsterdam +S: The Netherlands + +N: Jeroen Vreeken +E: pe1rxq@amsat.org +W: http://www.chello.nl/~j.vreeken/ +D: SE401 usb webcam driver +D: ZD1201 usb wireless lan driver +S: Maastrichterweg 63 +S: 5554 GG Valkenswaard +S: The Netherlands + +N: Peter Shaobo Wang +E: pwang@mmdcorp.com +W: http://www.mmdcorp.com/pw/linux +D: Driver for Interphase ATM (i)Chip SAR adapter card family (x575, x525, x531). +S: 1513 Brewster Dr. +S: Carrollton, TX 75010 +S: USA + +N: Tim Waugh +E: tim@cyberelk.net +D: Co-architect of the parallel-port sharing system +S: 17 Curling Vale +S: GUILDFORD +S: Surrey +S: GU2 7PJ +S: United Kingdom + +N: Juergen Weigert +E: jnweiger@immd4.informatik.uni-erlangen.de +D: The Linux Support Team Erlangen + +N: David Weinehall +E: tao@acc.umu.se +W: http://www.acc.umu.se/~tao/ +W: http://www.acc.umu.se/~mcalinux/ +D: Fixes for the NE/2-driver +D: Miscellaneous MCA-support +D: Cleanup of the Config-files +S: Axtorpsvagen 40:20 +S: S-903 37 UMEA +S: Sweden + +N: Matt Welsh +E: mdw@metalab.unc.edu +W: http://www.cs.berkeley.edu/~mdw +D: Original Linux Documentation Project coordinator +D: Author, "Running Linux" (O'Reilly) +D: Author, "Linux Installation and Getting Started" (LDP) and several HOWTOs +D: Linuxdoc-SGML formatting system (now SGML-Tools) +D: Device drivers for various high-speed network interfaces (Myrinet, ATM) +D: Keithley DAS1200 device driver +D: Original maintainer of sunsite WWW and FTP sites +D: Original moderator of c.o.l.announce and c.o.l.answers +S: Computer Science Division +S: UC Berkeley +S: Berkeley, CA 94720-1776 +S: USA + +N: Harald Welte +E: laforge@netfilter.org +P: 1024D/30F48BFF DBDE 6912 8831 9A53 879B 9190 5DA5 C655 30F4 8BFF +W: http://gnumonks.org/users/laforge +D: netfilter: new nat helper infrastructure +D: netfilter: ULOG, ECN, DSCP target +D: netfilter: TTL match +D: netfilter: IPv6 mangle table +D: netfilter: various other hacks +S: Berlin +S: Germany + +N: Bill Wendling +E: wendling@ganymede.isdn.uiuc.edu +W: http://www.ncsa.uiuc.edu/~wendling/ +D: Various random hacks. Mostly on poll/select logic. +S: 605 E. Springfield Ave. +S: Champaign, IL 61820 +S: USA + +N: Mike Westall +D: IBM Turboways 25 ATM Device Driver +E: westall@cs.clemson.edu +S: Department of Computer Science +S: Clemson University +S: Clemson SC 29634 USA + +N: Greg Wettstein +E: greg@wind.rmcc.com +D: Filesystem valid flag for MINIX filesystem. +D: Minor kernel debugging. +D: Development and maintenance of sysklogd. +D: Monitoring of development kernels for long-term stability. +D: Early implementations of Linux in a commercial environment. +S: Dr. Greg Wettstein, Ph.D. +S: Oncology Research Division Computing Facility +S: Roger Maris Cancer Center +S: 820 4th St. N. +S: Fargo, North Dakota 58122 +S: USA + +N: Steven Whitehouse +E: SteveW@ACM.org +W: http://www.chygwyn.com/~steve +D: Linux DECnet project: http://www.sucs.swan.ac.uk/~rohan/DECnet/index.html +D: Minor debugging of other networking protocols. +D: Misc bug fixes and filesystem development + +N: Hans-Joachim Widmaier +E: hjw@zvw.de +D: AFFS rewrite +S: Eichenweg 16 +S: 73650 Winterbach +S: Germany + +N: Urban Widmark +E: urban@svenskatest.se +D: via-rhine, misc net driver hacking + +N: Marco van Wieringen +E: mvw@planets.elm.net +D: Author of process accounting and diskquota +S: Breeburgsingel 12 +S: 2135 CN Hoofddorp +S: The Netherlands + +N: Matthew Wilcox +E: matthew@wil.cx +W: ftp://ftp.uk.linux.org/pub/linux/people/willy/ +D: Linux/PARISC hacker. Filesystem hacker. Random other hacking. Custom +D: PPC port hacking. + +N: G\"unter Windau +E: gunter@mbfys.kun.nl +D: Some bug fixes in the polling printer driver (lp.c) +S: University of Nijmegen +S: Geert-Grooteplein Noord 21 +S: 6525 EZ Nijmegen +S: The Netherlands + +N: Ulrich Windl +E: Ulrich.Windl@rz.uni-regensburg.de +P: 1024/E843660D CF D7 43 A1 5A 49 14 25 7C 04 A0 6E 4C 3A AC 6D +D: Supports NTP on Linux. Added PPS code. Fixed bugs in adjtimex(). +S: Alte Regensburger Str. 11a +S: 93149 Nittenau +S: Germany + +N: Lars Wirzenius +E: liw@iki.fi +D: Linux System Administrator's Guide, author, former maintainer +D: comp.os.linux.announce, former moderator +D: Linux Documentation Project, co-founder +D: Original sprintf in kernel +D: Original kernel README (for version 0.97) +D: Linux News (electronic magazine, now dead), founder and former editor +D: Meta-FAQ, originator, former maintainer +D: INFO-SHEET, former maintainer +D: Author of the longest-living linux bug + +N: Jonathan Woithe +E: jwoithe@physics.adelaide.edu.au +W: http://www.physics.adelaide.edu.au/~jwoithe +D: ALS-007 sound card extensions to Sound Blaster driver +S: 20 Jordan St +S: Valley View, SA 5093 +S: Australia + +N: Clifford Wolf +E: god@clifford.at +W: http://www.clifford.at/ +D: Menuconfig/lxdialog improvement +S: Foehrengasse 16 +S: A-2333 Leopoldsdorf b. Wien +S: Austria + +N: Roger E. Wolff +E: R.E.Wolff@BitWizard.nl +D: Written kmalloc/kfree +D: Written Specialix IO8+ driver +D: Written Specialix SX driver +S: van Bronckhorststraat 12 +S: 2612 XV Delft +S: The Netherlands + +N: David Woodhouse +E: dwmw2@infradead.org +D: ARCnet stuff, Applicom board driver, SO_BINDTODEVICE, +D: some Alpha platform porting from 2.0, Memory Technology Devices, +D: Acquire watchdog timer, PC speaker driver maintenance, +D: various other stuff that annoyed me by not working. +S: c/o Red Hat Engineering +S: Rustat House +S: 60 Clifton Road +S: Cambridge. CB1 7EG +S: England + +N: Chris Wright +E: chrisw@osdl.org +D: hacking on LSM framework and security modules. +S: c/o OSDL +S: 12725 SW Millikan Way, Suite 400 +S: Beaverton, OR 97005 +S: USA + +N: Michal Wronski +E: wrona@mat.uni.torun.pl +W: http://www.mat.uni.torun.pl/~wrona +D: POSIX message queues fs (with K. Benedyczak) +S: ul. Teczowa 23/12 +S: 80-680 Gdansk-Sobieszewo +S: Poland + +N: Frank Xia +E: qx@math.columbia.edu +D: Xiafs filesystem [defunct] +S: 542 West 112th Street, 5N +S: New York, New York 10025 +S: USA + +N: Victor Yodaiken +E: yodaiken@fsmlabs.com +D: RTLinux (RealTime Linux) +S: POB 1822 +S: Socorro NM, 87801 +S: USA + +N: Hiroshi YOKOTA +E: yokota@netlab.is.tsukuba.ac.jp +D: Workbit NinjaSCSI-3/32Bi PCMCIA driver +D: Workbit NinjaSCSI-32Bi/UDE driver +S: Japan + +N: Hideaki YOSHIFUJI +E: hideaki@yoshifuji.org +E: yoshfuji@linux-ipv6.org +W: http://www.yoshifuji.org/~hideaki/ +P: 1024D/E0620EEA 9022 65EB 1ECF 3AD1 0BDF 80D8 4807 F894 E062 0EEA +D: IPv6 and other networking related stuff +D: USAGI/WIDE Project, Keio University +S: Jeunet Palace Kawasaki #1-201, 10-2, Furukawa-cho, Saiwai-ku +S: Kawasaki, Kanagawa 212-0025 +S: Japan + +N: Eric Youngdale +E: eric@andante.org +W: http://www.andante.org +D: General kernel hacker +D: SCSI iso9660 and ELF +S: 6389 Hawk View Lane +S: Alexandria, Virginia 22312 +S: USA + +N: Niibe Yutaka +E: gniibe@mri.co.jp +D: PLIP driver +D: Asynchronous socket I/O in the NET code +S: Mitsubishi Research Institute, Inc. +S: ARCO Tower 1-8-1 Shimomeguro Meguro-ku +S: Tokyo 153 +S: Japan + +N: James R. Van Zandt +E: jrv@vanzandt.mv.com +P: 1024/E298966D F0 37 4F FD E5 7E C5 E6 F1 A0 1E 22 6F 46 DA 0C +D: Author and maintainer of the Double Talk speech synthesizer driver +S: 27 Spencer Drive +S: Nashua, New Hampshire 03062 +S: USA + +N: Orest Zborowski +E: orestz@eskimo.com +D: XFree86 and kernel development +S: 1507 145th Place SE #B5 +S: Bellevue, Washington 98007 +S: USA + +N: Richard Zidlicky +E: rz@linux-m68k.org, rdzidlic@geocities.com +W: http://www.geocities.com/rdzidlic +D: Q40 port - see arch/m68k/q40/README +D: various m68k hacks +S: Germany + +N: Werner Zimmermann +E: Werner.Zimmermann@fht-esslingen.de +D: CDROM driver "aztcd" (Aztech/Okano/Orchid/Wearnes) +S: Flandernstrasse 101 +S: D-73732 Esslingen +S: Germany + +N: Leonard N. Zubkoff +W: http://www.dandelion.com/Linux/ +D: BusLogic SCSI driver +D: Mylex DAC960 PCI RAID driver +D: Miscellaneous kernel fixes + +N: Alessandro Zummo +E: azummo@ita.flashnet.it +W: http://freepage.logicom.it/azummo/ +D: CMI8330 support is sb_card.c +D: ISAPnP fixes in sb_card.c +S: Italy + +N: Marc Zyngier +E: maz@wild-wind.fr.eu.org +W: http://www.misterjones.org +D: MD driver +D: EISA/sysfs subsystem +S: France + + +# Don't add your name here, unless you really _are_ after Marc +# alphabetically. Leonard used to be very proud of being the +# last entry, and he'll get positively pissed if he can't even +# be second-to-last. (and this file really _is_ supposed to be +# in alphabetic order) diff --git a/Documentation/00-INDEX b/Documentation/00-INDEX new file mode 100644 index 000000000000..72dc90f8f4a7 --- /dev/null +++ b/Documentation/00-INDEX @@ -0,0 +1,294 @@ + +This is a brief list of all the files in ./linux/Documentation and what +they contain. If you add a documentation file, please list it here in +alphabetical order as well, or risk being hunted down like a rabid dog. +Please try and keep the descriptions small enough to fit on one line. + Thanks -- Paul G. + +Following translations are available on the WWW: + + - Japanese, maintained by the JF Project (JF@linux.or.jp), at + http://www.linux.or.jp/JF/ + +00-INDEX + - this file. +BK-usage/ + - directory with info on BitKeeper. +BUG-HUNTING + - brute force method of doing binary search of patches to find bug. +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/ + - directory with DocBook templates etc. for kernel documentation. +IO-mapping.txt + - how to access I/O mapped memory from within device drivers. +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. +SAK.txt + - info on Secure Attention Keys. +SubmittingDrivers + - procedure to get a new driver source included into the kernel tree. +SubmittingPatches + - procedure to get a source patch included into the kernel tree. +VGA-softcursor.txt + - how to change your VGA cursor from a blinking underscore. +arm/ + - directory with info about Linux on the ARM architecture. +basic_profiling.txt + - basic instructions for those who wants to profile Linux kernel. +binfmt_misc.txt + - info on the kernel support for extra binary formats. +block/ + - info on the Block I/O (BIO) layer. +cachetlb.txt + - describes the cache/TLB flushing interfaces Linux uses. +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/ + - 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. +digiepca.txt + - info on Digi Intl. {PC,PCI,EISA}Xx and Xem series cards. +dnotify.txt + - info about directory notification in Linux. +driver-model/ + - directory with info about Linux driver model. +dvb/ + - info on Linux Digital Video Broadcast (DVB) subsystem. +early-userspace/ + - info about initramfs, klibc, and userspace early during boot. +eisa.txt + - info on EISA bus support. +exception.txt + - how Linux v2.2 handles exceptions without verify_area etc. +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 + - notes about the floppy tape device driver. +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/ + - directory with info about Linux on Intel 64 bit architecture. +ide.txt + - important info for users of ATA devices (IDE/EIDE disks and CD-ROMS). +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 + - info on I/O statistics Linux kernel provides. +isapnp.txt + - info on Linux ISA Plug & Play support. +isdn/ + - directory with info on the Linux ISDN support, and supported cards. +java.txt + - info on the in-kernel binary support for Java(tm). +kbuild/ + - directory with info about the kernel build process. +kernel-doc-nano-HOWTO.txt + - mini HowTo on generation and location of kernel documentation files. +kernel-docs.txt + - listing of various WWW + books that document kernel internals. +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 + - info on file locking implementations, flock() vs. fcntl(), etc. +logo.gif + - Full colour GIF image of Linux logo (penguin). +logo.txt + - Info on creator of above logo & site to get additional images from. +m68k/ + - directory with info about Linux on Motorola 68k architecture. +magic-number.txt + - list of magic numbers used to mark/protect kernel data structures. +mandatory.txt + - info on the Linux implementation of Sys V mandatory file locking. +mca.txt + - info on supporting Micro Channel Architecture (e.g. PS/2) systems. +md.txt + - info on boot arguments for the multiple devices driver. +memory.txt + - info on typical Linux memory problems. +mips/ + - directory with info about Linux on MIPS architecture. +mono.txt + - how to execute Mono-based .NET binaries with the help of BINFMT_MISC. +moxa-smartio + - info on installing/using Moxa multiport serial driver. +mtrr.txt + - how to use PPro Memory Type Range Registers to increase performance. +nbd.txt + - info on a TCP implementation of a network block device. +networking/ + - directory with info on various aspects of networking with Linux. +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 + - information about the parallel port IDE subsystem. +parisc/ + - directory with info on using Linux on PA-RISC architecture. +parport.txt + - how to use the parallel-port driver. +parport-lowlevel.txt + - description and usage of the low level parallel port functions. +pci.txt + - info on the PCI subsystem for device driver authors. +pm.txt + - info on Linux power management support. +pnp.txt + - Linux Plug and Play documentation. +power/ + - directory with info on Linux PCI power management. +powerpc/ + - directory with info on using Linux with the PowerPC. +preempt-locking.txt + - info on locking under a preemptive kernel. +ramdisk.txt + - short guide on how to set up and use the RAM disk. +riscom8.txt + - notes on using the RISCom/8 multi-port serial driver. +rocket.txt + - info on 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 + - short blurb on the SGI Visual Workstations. +sh/ + - directory with info on porting Linux to a new architecture. +smart-config.txt + - description of the Smart Config makefile feature. +smp.txt + - a few notes on symmetric multi-processing. +sonypi.txt + - info on Linux Sony Programmable I/O Device support. +sound/ + - directory with info on sound card support. +sparc/ + - directory with info on using Linux on Sparc architecture. +specialix.txt + - info on hardware/driver for specialix IO8+ multiport serial card. +spinlocks.txt + - info on using spinlocks to provide exclusive access in kernel. +stallion.txt + - info on using the Stallion multiport serial driver. +svga.txt + - short guide on selecting video modes at boot via VGA BIOS. +sx.txt + - info on the Specialix SX/SI multiport serial driver. +sysctl/ + - directory with info on the /proc/sys/* files. +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/ + - directory with info on Linux support for AMD x86-64 (Hammer) machines. +xterm-linux.xpm + - XPM image of penguin logo (see logo.txt) sitting on an xterm. +zorro.txt + - info on writing drivers for Zorro bus devices found on Amigas. diff --git a/Documentation/BK-usage/00-INDEX b/Documentation/BK-usage/00-INDEX new file mode 100644 index 000000000000..82768784ea52 --- /dev/null +++ b/Documentation/BK-usage/00-INDEX @@ -0,0 +1,51 @@ +bk-kernel-howto.txt: Description of kernel workflow under BitKeeper + +bk-make-sum: Create summary of changesets in one repository and not +another, typically in preparation to be sent to an upstream maintainer. +Typical usage: + cd my-updated-repo + bk-make-sum ~/repo/original-repo + mv /tmp/linus.txt ../original-repo.txt + +bksend: Create readable text output containing summary of changes, GNU +patch of the changes, and BK metadata of changes (as needed for proper +importing into BitKeeper by an upstream maintainer). This output is +suitable for emailing BitKeeper changes. The recipient of this output +may pipe it directly to 'bk receive'. + +bz64wrap: helper script. Uncompressed input is piped to this script, +which compresses its input, and then outputs the uu-/base64-encoded +version of the compressed input. + +cpcset: Copy changeset between unrelated repositories. +Attempts to preserve changeset user, user address, description, in +addition to the changeset (the patch) itself. +Typical usage: + cd my-updated-repo + bk changes # looking for a changeset... + cpcset 1.1511 . ../another-repo + +csets-to-patches: Produces a delta of two BK repositories, in the form +of individual files, each containing a single cset as a GNU patch. +Output is several files, each with the filename "/tmp/rev-$REV.patch" +Typical usage: + cd my-updated-repo + bk changes -L ~/repo/original-repo 2>&1 | \ + perl csets-to-patches + +cset-to-linus: Produces a delta of two BK repositories, in the form of +changeset descriptions, with 'diffstat' output created for each +individual changset. +Typical usage: + cd my-updated-repo + bk changes -L ~/repo/original-repo 2>&1 | \ + perl cset-to-linus > summary.txt + +gcapatch: Generates patch containing changes in local repository. +Typical usage: + cd my-updated-repo + gcapatch > foo.patch + +unbz64wrap: Reverse an encoded, compressed data stream created by +bz64wrap into an uncompressed, typically text/plain output. + diff --git a/Documentation/BK-usage/bk-kernel-howto.txt b/Documentation/BK-usage/bk-kernel-howto.txt new file mode 100644 index 000000000000..b7b9075d2910 --- /dev/null +++ b/Documentation/BK-usage/bk-kernel-howto.txt @@ -0,0 +1,283 @@ + + Doing the BK Thing, Penguin-Style + + + + +This set of notes is intended mainly for kernel developers, occasional +or full-time, but sysadmins and power users may find parts of it useful +as well. It assumes at least a basic familiarity with CVS, both at a +user level (use on the cmd line) and at a higher level (client-server model). +Due to the author's background, an operation may be described in terms +of CVS, or in terms of how that operation differs from CVS. + +This is -not- intended to be BitKeeper documentation. Always run +"bk help " or in X "bk helptool " for reference +documentation. + + +BitKeeper Concepts +------------------ + +In the true nature of the Internet itself, BitKeeper is a distributed +system. When applied to revision control, this means doing away with +client-server, and changing to a parent-child model... essentially +peer-to-peer. On the developer's end, this also represents a +fundamental disruption in the standard workflow of changes, commits, +and merges. You will need to take a few minutes to think about +how to best work under BitKeeper, and re-optimize things a bit. +In some sense it is a bit radical, because it might described as +tossing changes out into a maelstrom and having them magically +land at the right destination... but I'm getting ahead of myself. + +Let's start with this progression: +Each BitKeeper source tree on disk is a repository unto itself. +Each repository has a parent (except the root/original, of course). +Each repository contains a set of a changesets ("csets"). +Each cset is one or more changed files, bundled together. + +Each tree is a repository, so all changes are checked into the local +tree. When a change is checked in, all modified files are grouped +into a logical unit, the changeset. Internally, BK links these +changesets in a tree, representing various converging and diverging +lines of development. These changesets are the bread and butter of +the BK system. + +After the concept of changesets, the next thing you need to get used +to is having multiple copies of source trees lying around. This -really- +takes some getting used to, for some people. Separate source trees +are the means in BitKeeper by which you delineate parallel lines +of development, both minor and major. What would be branches in +CVS become separate source trees, or "clones" in BitKeeper [heh, +or Star Wars] terminology. + +Clones and changesets are the tools from which most of the power of +BitKeeper is derived. As mentioned earlier, each clone has a parent, +the tree used as the source when the new clone was created. In a +CVS-like setup, the parent would be a remote server on the Internet, +and the child is your local clone of that tree. + +Once you have established a common baseline between two source trees -- +a common parent -- then you can merge changesets between those two +trees with ease. Merging changes into a tree is called a "pull", and +is analagous to 'cvs update'. A pull downloads all the changesets in +the remote tree you do not have, and merges them. Sending changes in +one tree to another tree is called a "push". Push sends all changes +in the local tree the remote does not yet have, and merges them. + +From these concepts come some initial command examples: + +1) bk clone -q http://linux.bkbits.net/linux-2.5 linus-2.5 +Download a 2.5 stock kernel tree, naming it "linus-2.5" in the local dir. +The "-q" disables listing every single file as it is downloaded. + +2) bk clone -ql linus-2.5 alpha-2.5 +Create a separate source tree for the Alpha AXP architecture. +The "-l" uses hard links instead of copying data, since both trees are +on the local disk. You can also replace the above with "bk lclone -q ..." + +You only clone a tree -once-. After cloning the tree lives a long time +on disk, being updating by pushes and pulls. + +3) cd alpha-2.5 ; bk pull http://gkernel.bkbits.net/alpha-2.5 +Download changes in "alpha-2.5" repository which are not present +in the local repository, and merge them into the source tree. + +4) bk -r co -q +Because every tree is a repository, files must be checked out before +they will be in their standard places in the source tree. + +5) bk vi fs/inode.c # example change... + bk citool # checkin, using X tool + bk push bk://gkernel@bkbits.net/alpha-2.5 # upload change +Typical example of a BK sequence that would replace the analagous CVS +situation, + vi fs/inode.c + cvs commit + +As this is just supposed to be a quick BK intro, for more in-depth +tutorials, live working demos, and docs, see http://www.bitkeeper.com/ + + + +BK and Kernel Development Workflow +---------------------------------- +Currently the latest 2.5 tree is available via "bk clone $URL" +and "bk pull $URL" at http://linux.bkbits.net/linux-2.5 +This should change in a few weeks to a kernel.org URL. + + +A big part of using BitKeeper is organizing the various trees you have +on your local disk, and organizing the flow of changes among those +trees, and remote trees. If one were to graph the relationships between +a desired BK setup, you are likely to see a few-many-few graph, like +this: + + linux-2.5 + | + merge-to-linus-2.5 + / | | + / | | + vm-hacks bugfixes filesys personal-hacks + \ | | / + \ | | / + \ | | / + testing-and-validation + +Since a "bk push" sends all changes not in the target tree, and +since a "bk pull" receives all changes not in the source tree, you want +to make sure you are only pushing specific changes to the desired tree, +not all changes from "peer parent" trees. For example, pushing a change +from the testing-and-validation tree would probably be a bad idea, +because it will push all changes from vm-hacks, bugfixes, filesys, and +personal-hacks trees into the target tree. + +One would typically work on only one "theme" at a time, either +vm-hacks or bugfixes or filesys, keeping those changes isolated in +their own tree during development, and only merge the isolated with +other changes when going upstream (to Linus or other maintainers) or +downstream (to your "union" trees, like testing-and-validation above). + +It should be noted that some of this separation is not just recommended +practice, it's actually [for now] -enforced- by BitKeeper. BitKeeper +requires that changesets maintain a certain order, which is the reason +that "bk push" sends all local changesets the remote doesn't have. This +separation may look like a lot of wasted disk space at first, but it +helps when two unrelated changes may "pollute" the same area of code, or +don't follow the same pace of development, or any other of the standard +reasons why one creates a development branch. + +Small development branches (clones) will appear and disappear: + + -------- A --------- B --------- C --------- D ------- + \ / + -----short-term devel branch----- + +While long-term branches will parallel a tree (or trees), with period +merge points. In this first example, we pull from a tree (pulls, +"\") periodically, such as what occurs when tracking changes in a +vendor tree, never pushing changes back up the line: + + -------- A --------- B --------- C --------- D ------- + \ \ \ + ----long-term devel branch----------------- + +And then a more common case in Linux kernel development, a long term +branch with periodic merges back into the tree (pushes, "/"): + + -------- A --------- B --------- C --------- D ------- + \ \ / \ + ----long-term devel branch----------------- + + + + + +Submitting Changes to Linus +--------------------------- +There's a bit of an art, or style, of submitting changes to Linus. +Since Linus's tree is now (you might say) fully integrated into the +distributed BitKeeper system, there are several prerequisites to +properly submitting a BitKeeper change. All these prereq's are just +general cleanliness of BK usage, so as people become experts at BK, feel +free to optimize this process further (assuming Linus agrees, of +course). + + + +0) Make sure your tree was originally cloned from the linux-2.5 tree +created by Linus. If your tree does not have this as its ancestor, it +is impossible to reliably exchange changesets. + + + +1) Pay attention to your commit text. The commit message that +accompanies each changeset you submit will live on forever in history, +and is used by Linus to accurately summarize the changes in each +pre-patch. Remember that there is no context, so + "fix for new scheduler changes" +would be too vague, but + "fix mips64 arch for new scheduler switch_to(), TIF_xxx semantics" +would be much better. + +You can and should use the command "bk comment -C" to update the +commit text, and improve it after the fact. This is very useful for +development: poor, quick descriptions during development, which get +cleaned up using "bk comment" before issuing the "bk push" to submit the +changes. + + + +2) Include an Internet-available URL for Linus to pull from, such as + + Pull from: http://gkernel.bkbits.net/net-drivers-2.5 + + + +3) Include a summary and "diffstat -p1" of each changeset that will be +downloaded, when Linus issues a "bk pull". The author auto-generates +these summaries using "bk changes -L ", to obtain a listing +of all the pending-to-send changesets, and their commit messages. + +It is important to show Linus what he will be downloading when he issues +a "bk pull", to reduce the time required to sift the changes once they +are downloaded to Linus's local machine. + +IMPORTANT NOTE: One of the features of BK is that your repository does +not have to be up to date, in order for Linus to receive your changes. +It is considered a courtesy to keep your repository fairly recent, to +lessen any potential merge work Linus may need to do. + + +4) Split up your changes. Each maintainer<->Linus situation is likely +to be slightly different here, so take this just as general advice. The +author splits up changes according to "themes" when merging with Linus. +Simultaneous pushes from local development go to special trees which +exist solely to house changes "queued" for Linus. Example of the trees: + + net-drivers-2.5 -- on-going net driver maintenance + vm-2.5 -- VM-related changes + fs-2.5 -- filesystem-related changes + +Linus then has much more freedom for pulling changes. He could (for +example) issue a "bk pull" on vm-2.5 and fs-2.5 trees, to merge their +changes, but hold off net-drivers-2.5 because of a change that needs +more discussion. + +Other maintainers may find that a single linus-pull-from tree is +adequate for passing BK changesets to him. + + + +Frequently Answered Questions +----------------------------- +1) How do I change the e-mail address shown in the changelog? +A. When you run "bk citool" or "bk commit", set environment + variables BK_USER and BK_HOST to the desired username + and host/domain name. + + +2) How do I use tags / get a diff between two kernel versions? +A. Pass the tags Linus uses to 'bk export'. + +ChangeSets are in a forward-progressing order, so it's pretty easy +to get a snapshot starting and ending at any two points in time. +Linus puts tags on each release and pre-release, so you could use +these two examples: + + bk export -tpatch -hdu -rv2.5.4,v2.5.5 | less + # creates patch-2.5.5 essentially + bk export -tpatch -du -rv2.5.5-pre1,v2.5.5 | less + # changes from pre1 to final + +A tag is just an alias for a specific changeset... and since changesets +are ordered, a tag is thus a marker for a specific point in time (or +specific state of the tree). + + +3) Is there an easy way to generate One Big Patch versus mainline, + for my long-lived kernel branch? +A. Yes. This requires BK 3.x, though. + + bk export -tpatch -r`bk repogca bk://linux.bkbits.net/linux-2.5`,+ + diff --git a/Documentation/BK-usage/bk-make-sum b/Documentation/BK-usage/bk-make-sum new file mode 100755 index 000000000000..58ca46a0fcc6 --- /dev/null +++ b/Documentation/BK-usage/bk-make-sum @@ -0,0 +1,34 @@ +#!/bin/sh -e +# DIR=$HOME/BK/axp-2.5 +# cd $DIR + +LINUS_REPO=$1 +DIRBASE=`basename $PWD` + +{ +cat </dev/null + +cat < (:D: :I:)\n$each(:C:){ (:C:)\n}\n}' - + +} > /tmp/linus.txt + +cat < 13/02/2002 +# +# Add diffstat output after Changelog 21/02/2002 + +PROG=bksend + +usage() { + echo "usage: $PROG -r" + echo -e "\twhere is of the form '1.23', '1.23..', '1.23..1.27'," + echo -e "\tor '+' to indicate the most recent revision" + + exit 1 +} + +case $1 in +-r) REV=$2; shift ;; +-r*) REV=`echo $1 | sed 's/^-r//'` ;; +*) echo "$PROG: no revision given, you probably don't want that";; +esac + +[ -z "$REV" ] && usage + +echo "You can import this changeset into BK by piping this whole message to:" +echo "'| bk receive [path to repository]' or apply the patch as usual." + +SEP="\n===================================================================\n\n" +echo -e $SEP +env PAGER=/bin/cat bk changes -r$REV +echo +bk export -tpatch -du -h -r$REV | diffstat +echo; echo +bk export -tpatch -du -h -r$REV +echo -e $SEP +bk send -wgzip_uu -r$REV - diff --git a/Documentation/BK-usage/bz64wrap b/Documentation/BK-usage/bz64wrap new file mode 100755 index 000000000000..be780876849f --- /dev/null +++ b/Documentation/BK-usage/bz64wrap @@ -0,0 +1,41 @@ +#!/bin/sh + +# bz64wrap - the sending side of a bzip2 | base64 stream +# Andreas Dilger Jan 2002 + + +PATH=$PATH:/usr/bin:/usr/local/bin:/usr/freeware/bin + +# A program to generate base64 encoding on stdout +BASE64_ENCODE="uuencode -m /dev/stdout" +BASE64_BEGIN= +BASE64_END= + +BZIP=NO +BASE64=NO + +# Test if we have the bzip program installed +bzip2 -c /dev/null > /dev/null 2>&1 && BZIP=YES + +# Test if uuencode can handle the -m (MIME) encoding option +$BASE64_ENCODE < /dev/null > /dev/null 2>&1 && BASE64=YES + +if [ $BASE64 = NO ]; then + BASE64_ENCODE=mimencode + BASE64_BEGIN="begin-base64 644 -" + BASE64_END="====" + + $BASE64_ENCODE < /dev/null > /dev/null 2>&1 && BASE64=YES +fi + +if [ $BZIP = NO -o $BASE64 = NO ]; then + echo "$0: can't use bz64 encoding: bzip2=$BZIP, $BASE64_ENCODE=$BASE64" + exit 1 +fi + +# Sadly, mimencode does not appear to have good "begin" and "end" markers +# like uuencode does, and it is picky about getting the right start/end of +# the base64 stream, so we handle this internally. +echo "$BASE64_BEGIN" +bzip2 -9 | $BASE64_ENCODE +echo "$BASE64_END" diff --git a/Documentation/BK-usage/cpcset b/Documentation/BK-usage/cpcset new file mode 100755 index 000000000000..b8faca97dab9 --- /dev/null +++ b/Documentation/BK-usage/cpcset @@ -0,0 +1,36 @@ +#!/bin/sh +# +# Purpose: Copy changeset patch and description from one +# repository to another, unrelated one. +# +# usage: cpcset [revision] [from-repository] [to-repository] +# + +REV=$1 +FROM=$2 +TO=$3 +TMPF=/tmp/cpcset.$$ + +rm -f $TMPF* + +CWD_SAVE=`pwd` +cd $FROM +bk changes -r$REV | \ + grep -v '^ChangeSet' | \ + sed -e 's/^ //g' > $TMPF.log + +USERHOST=`bk changes -r$REV | grep '^ChangeSet' | awk '{print $4}'` +export BK_USER=`echo $USERHOST | awk '-F@' '{print $1}'` +export BK_HOST=`echo $USERHOST | awk '-F@' '{print $2}'` + +bk export -tpatch -hdu -r$REV > $TMPF.patch && \ +cd $CWD_SAVE && \ +cd $TO && \ +bk import -tpatch -CFR -y"`cat $TMPF.log`" $TMPF.patch . && \ +bk commit -y"`cat $TMPF.log`" + +rm -f $TMPF* + +echo changeset $REV copied. +echo "" + diff --git a/Documentation/BK-usage/cset-to-linus b/Documentation/BK-usage/cset-to-linus new file mode 100755 index 000000000000..d28a96f8c618 --- /dev/null +++ b/Documentation/BK-usage/cset-to-linus @@ -0,0 +1,49 @@ +#!/usr/bin/perl -w + +use strict; + +my ($lhs, $rev, $tmp, $rhs, $s); +my @cset_text = (); +my @pipe_text = (); +my $have_cset = 0; + +while (<>) { + next if /^---/; + + if (($lhs, $tmp, $rhs) = (/^(ChangeSet\@)([^,]+)(, .*)$/)) { + &cset_rev if ($have_cset); + + $rev = $tmp; + $have_cset = 1; + + push(@cset_text, $_); + } + + elsif ($have_cset) { + push(@cset_text, $_); + } +} +&cset_rev if ($have_cset); +exit(0); + + +sub cset_rev { + my $empty_cset = 0; + + open PIPE, "bk export -tpatch -hdu -r $rev | diffstat -p1 2>/dev/null |" or die; + while ($s = ) { + $empty_cset = 1 if ($s =~ /0 files changed/); + push(@pipe_text, $s); + } + close(PIPE); + + if (! $empty_cset) { + print @cset_text; + print @pipe_text; + print "\n\n"; + } + + @pipe_text = (); + @cset_text = (); +} + diff --git a/Documentation/BK-usage/csets-to-patches b/Documentation/BK-usage/csets-to-patches new file mode 100755 index 000000000000..e2b81c35883f --- /dev/null +++ b/Documentation/BK-usage/csets-to-patches @@ -0,0 +1,44 @@ +#!/usr/bin/perl -w + +use strict; + +my ($lhs, $rev, $tmp, $rhs, $s); +my @cset_text = (); +my @pipe_text = (); +my $have_cset = 0; + +while (<>) { + next if /^---/; + + if (($lhs, $tmp, $rhs) = (/^(ChangeSet\@)([^,]+)(, .*)$/)) { + &cset_rev if ($have_cset); + + $rev = $tmp; + $have_cset = 1; + + push(@cset_text, $_); + } + + elsif ($have_cset) { + push(@cset_text, $_); + } +} +&cset_rev if ($have_cset); +exit(0); + + +sub cset_rev { + my $empty_cset = 0; + + system("bk export -tpatch -du -r $rev > /tmp/rev-$rev.patch"); + + if (! $empty_cset) { + print @cset_text; + print @pipe_text; + print "\n\n"; + } + + @pipe_text = (); + @cset_text = (); +} + diff --git a/Documentation/BK-usage/gcapatch b/Documentation/BK-usage/gcapatch new file mode 100755 index 000000000000..aaeb17dc7c7f --- /dev/null +++ b/Documentation/BK-usage/gcapatch @@ -0,0 +1,8 @@ +#!/bin/sh +# +# Purpose: Generate GNU diff of local changes versus canonical top-of-tree +# +# Usage: gcapatch > foo.patch +# + +bk export -tpatch -hdu -r`bk repogca bk://linux.bkbits.net/linux-2.5`,+ diff --git a/Documentation/BK-usage/unbz64wrap b/Documentation/BK-usage/unbz64wrap new file mode 100755 index 000000000000..4fc3e73e9a81 --- /dev/null +++ b/Documentation/BK-usage/unbz64wrap @@ -0,0 +1,25 @@ +#!/bin/sh + +# unbz64wrap - the receiving side of a bzip2 | base64 stream +# Andreas Dilger Jan 2002 + +# Sadly, mimencode does not appear to have good "begin" and "end" markers +# like uuencode does, and it is picky about getting the right start/end of +# the base64 stream, so we handle this explicitly here. + +PATH=$PATH:/usr/bin:/usr/local/bin:/usr/freeware/bin + +if mimencode -u < /dev/null > /dev/null 2>&1 ; then + SHOW= + while read LINE; do + case $LINE in + begin-base64*) SHOW=YES ;; + ====) SHOW= ;; + *) [ "$SHOW" ] && echo "$LINE" ;; + esac + done | mimencode -u | bunzip2 + exit $? +else + cat - | uudecode -o /dev/stdout | bunzip2 + exit $? +fi diff --git a/Documentation/BUG-HUNTING b/Documentation/BUG-HUNTING new file mode 100644 index 000000000000..ca29242dbc38 --- /dev/null +++ b/Documentation/BUG-HUNTING @@ -0,0 +1,92 @@ +[Sat Mar 2 10:32:33 PST 1996 KERNEL_BUG-HOWTO lm@sgi.com (Larry McVoy)] + +This is how to track down a bug if you know nothing about kernel hacking. +It's a brute force approach but it works pretty well. + +You need: + + . A reproducible bug - it has to happen predictably (sorry) + . All the kernel tar files from a revision that worked to the + revision that doesn't + +You will then do: + + . Rebuild a revision that you believe works, install, and verify that. + . Do a binary search over the kernels to figure out which one + introduced the bug. I.e., suppose 1.3.28 didn't have the bug, but + you know that 1.3.69 does. Pick a kernel in the middle and build + that, like 1.3.50. Build & test; if it works, pick the mid point + between .50 and .69, else the mid point between .28 and .50. + . You'll narrow it down to the kernel that introduced the bug. You + can probably do better than this but it gets tricky. + + . Narrow it down to a subdirectory + + - Copy kernel that works into "test". Let's say that 3.62 works, + but 3.63 doesn't. So you diff -r those two kernels and come + up with a list of directories that changed. For each of those + directories: + + Copy the non-working directory next to the working directory + as "dir.63". + One directory at time, try moving the working directory to + "dir.62" and mv dir.63 dir"time, try + + mv dir dir.62 + mv dir.63 dir + find dir -name '*.[oa]' -print | xargs rm -f + + And then rebuild and retest. Assuming that all related + changes were contained in the sub directory, this should + isolate the change to a directory. + + Problems: changes in header files may have occurred; I've + found in my case that they were self explanatory - you may + or may not want to give up when that happens. + + . Narrow it down to a file + + - You can apply the same technique to each file in the directory, + hoping that the changes in that file are self contained. + + . Narrow it down to a routine + + - You can take the old file and the new file and manually create + a merged file that has + + #ifdef VER62 + routine() + { + ... + } + #else + routine() + { + ... + } + #endif + + And then walk through that file, one routine at a time and + prefix it with + + #define VER62 + /* both routines here */ + #undef VER62 + + Then recompile, retest, move the ifdefs until you find the one + that makes the difference. + +Finally, you take all the info that you have, kernel revisions, bug +description, the extent to which you have narrowed it down, and pass +that off to whomever you believe is the maintainer of that section. +A post to linux.dev.kernel isn't such a bad idea if you've done some +work to narrow it down. + +If you get it down to a routine, you'll probably get a fix in 24 hours. + +My apologies to Linus and the other kernel hackers for describing this +brute force approach, it's hardly what a kernel hacker would do. However, +it does work and it lets non-hackers help fix bugs. And it is cool +because Linux snapshots will let you do this - something that you can't +do with vendor supplied releases. + diff --git a/Documentation/Changes b/Documentation/Changes new file mode 100644 index 000000000000..caa6a5529b6b --- /dev/null +++ b/Documentation/Changes @@ -0,0 +1,410 @@ +Intro +===== + +This document is designed to provide a list of the minimum levels of +software necessary to run the 2.6 kernels, as well as provide brief +instructions regarding any other "Gotchas" users may encounter when +trying life on the Bleeding Edge. If upgrading from a pre-2.4.x +kernel, please consult the Changes file included with 2.4.x kernels for +additional information; most of that information will not be repeated +here. Basically, this document assumes that your system is already +functional and running at least 2.4.x kernels. + +This document is originally based on my "Changes" file for 2.0.x kernels +and therefore owes credit to the same people as that file (Jared Mauch, +Axel Boldt, Alessandro Sigala, and countless other users all over the +'net). + +The latest revision of this document, in various formats, can always +be found at . + +Feel free to translate this document. If you do so, please send me a +URL to your translation for inclusion in future revisions of this +document. + +Smotrite file , yavlyaushisya +russkim perevodom dannogo documenta. + +Visite para obtener la traducción +al español de este documento en varios formatos. + +Eine deutsche Version dieser Datei finden Sie unter +. + +Last updated: October 29th, 2002 + +Chris Ricker (kaboom@gatech.edu or chris.ricker@genetics.utah.edu). + +Current Minimal Requirements +============================ + +Upgrade to at *least* these software revisions before thinking you've +encountered a bug! If you're unsure what version you're currently +running, the suggested command should tell you. + +Again, keep in mind that this list assumes you are already +functionally running a Linux 2.4 kernel. Also, not all tools are +necessary on all systems; obviously, if you don't have any PCMCIA (PC +Card) hardware, for example, you probably needn't concern yourself +with pcmcia-cs. + +o Gnu C 2.95.3 # gcc --version +o Gnu make 3.79.1 # make --version +o binutils 2.12 # ld -v +o util-linux 2.10o # fdformat --version +o module-init-tools 0.9.10 # depmod -V +o e2fsprogs 1.29 # tune2fs +o jfsutils 1.1.3 # fsck.jfs -V +o reiserfsprogs 3.6.3 # reiserfsck -V 2>&1|grep reiserfsprogs +o xfsprogs 2.6.0 # xfs_db -V +o pcmcia-cs 3.1.21 # cardmgr -V +o quota-tools 3.09 # quota -V +o PPP 2.4.0 # pppd --version +o isdn4k-utils 3.1pre1 # isdnctrl 2>&1|grep version +o nfs-utils 1.0.5 # showmount --version +o procps 3.2.0 # ps --version +o oprofile 0.5.3 # oprofiled --version + +Kernel compilation +================== + +GCC +--- + +The gcc version requirements may vary depending on the type of CPU in your +computer. The next paragraph applies to users of x86 CPUs, but not +necessarily to users of other CPUs. Users of other CPUs should obtain +information about their gcc version requirements from another source. + +The recommended compiler for the kernel is gcc 2.95.x (x >= 3), and it +should be used when you need absolute stability. You may use gcc 3.0.x +instead if you wish, although it may cause problems. Later versions of gcc +have not received much testing for Linux kernel compilation, and there are +almost certainly bugs (mainly, but not exclusively, in the kernel) that +will need to be fixed in order to use these compilers. In any case, using +pgcc instead of plain gcc is just asking for trouble. + +The Red Hat gcc 2.96 compiler subtree can also be used to build this tree. +You should ensure you use gcc-2.96-74 or later. gcc-2.96-54 will not build +the kernel correctly. + +In addition, please pay attention to compiler optimization. Anything +greater than -O2 may not be wise. Similarly, if you choose to use gcc-2.95.x +or derivatives, be sure not to use -fstrict-aliasing (which, depending on +your version of gcc 2.95.x, may necessitate using -fno-strict-aliasing). + +Make +---- + +You will need Gnu make 3.79.1 or later to build the kernel. + +Binutils +-------- + +Linux on IA-32 has recently switched from using as86 to using gas for +assembling the 16-bit boot code, removing the need for as86 to compile +your kernel. This change does, however, mean that you need a recent +release of binutils. + +System utilities +================ + +Architectural changes +--------------------- + +DevFS has been obsoleted in favour of udev +(http://www.kernel.org/pub/linux/utils/kernel/hotplug/) + +32-bit UID support is now in place. Have fun! + +Linux documentation for functions is transitioning to inline +documentation via specially-formatted comments near their +definitions in the source. These comments can be combined with the +SGML templates in the Documentation/DocBook directory to make DocBook +files, which can then be converted by DocBook stylesheets to PostScript, +HTML, PDF files, and several other formats. In order to convert from +DocBook format to a format of your choice, you'll need to install Jade as +well as the desired DocBook stylesheets. + +Util-linux +---------- + +New versions of util-linux provide *fdisk support for larger disks, +support new options to mount, recognize more supported partition +types, have a fdformat which works with 2.4 kernels, and similar goodies. +You'll probably want to upgrade. + +Ksymoops +-------- + +If the unthinkable happens and your kernel oopses, you'll need a 2.4 +version of ksymoops to decode the report; see REPORTING-BUGS in the +root of the Linux source for more information. + +Module-Init-Tools +----------------- + +A new module loader is now in the kernel that requires module-init-tools +to use. It is backward compatible with the 2.4.x series kernels. + +Mkinitrd +-------- + +These changes to the /lib/modules file tree layout also require that +mkinitrd be upgraded. + +E2fsprogs +--------- + +The latest version of e2fsprogs fixes several bugs in fsck and +debugfs. Obviously, it's a good idea to upgrade. + +JFSutils +-------- + +The jfsutils package contains the utilities for the file system. +The following utilities are available: +o fsck.jfs - initiate replay of the transaction log, and check + and repair a JFS formatted partition. +o mkfs.jfs - create a JFS formatted partition. +o other file system utilities are also available in this package. + +Reiserfsprogs +------------- + +The reiserfsprogs package should be used for reiserfs-3.6.x +(Linux kernels 2.4.x). It is a combined package and contains working +versions of mkreiserfs, resize_reiserfs, debugreiserfs and +reiserfsck. These utils work on both i386 and alpha platforms. + +Xfsprogs +-------- + +The latest version of xfsprogs contains mkfs.xfs, xfs_db, and the +xfs_repair utilities, among others, for the XFS filesystem. It is +architecture independent and any version from 2.0.0 onward should +work correctly with this version of the XFS kernel code (2.6.0 or +later is recommended, due to some significant improvements). + + +Pcmcia-cs +--------- + +PCMCIA (PC Card) support is now partially implemented in the main +kernel source. Pay attention when you recompile your kernel ;-). +Also, be sure to upgrade to the latest pcmcia-cs release. + +Quota-tools +----------- + +Support for 32 bit uid's and gid's is required if you want to use +the newer version 2 quota format. Quota-tools version 3.07 and +newer has this support. Use the recommended version or newer +from the table above. + +Intel IA32 microcode +-------------------- + +A driver has been added to allow updating of Intel IA32 microcode, +accessible as both a devfs regular file and as a normal (misc) +character device. If you are not using devfs you may need to: + +mkdir /dev/cpu +mknod /dev/cpu/microcode c 10 184 +chmod 0644 /dev/cpu/microcode + +as root before you can use this. You'll probably also want to +get the user-space microcode_ctl utility to use with this. + +Powertweak +---------- + +If you are running v0.1.17 or earlier, you should upgrade to +version v0.99.0 or higher. Running old versions may cause problems +with programs using shared memory. + +udev +---- +udev is a userspace application for populating /dev dynamically with +only entries for devices actually present. udev replaces devfs. + +Networking +========== + +General changes +--------------- + +If you have advanced network configuration needs, you should probably +consider using the network tools from ip-route2. + +Packet Filter / NAT +------------------- +The packet filtering and NAT code uses the same tools like the previous 2.4.x +kernel series (iptables). It still includes backwards-compatibility modules +for 2.2.x-style ipchains and 2.0.x-style ipfwadm. + +PPP +--- + +The PPP driver has been restructured to support multilink and to +enable it to operate over diverse media layers. If you use PPP, +upgrade pppd to at least 2.4.0. + +If you are not using devfs, you must have the device file /dev/ppp +which can be made by: + +mknod /dev/ppp c 108 0 + +as root. + +If you use devfsd and build ppp support as modules, you will need +the following in your /etc/devfsd.conf file: + +LOOKUP PPP MODLOAD + +Isdn4k-utils +------------ + +Due to changes in the length of the phone number field, isdn4k-utils +needs to be recompiled or (preferably) upgraded. + +NFS-utils +--------- + +In 2.4 and earlier kernels, the nfs server needed to know about any +client that expected to be able to access files via NFS. This +information would be given to the kernel by "mountd" when the client +mounted the filesystem, or by "exportfs" at system startup. exportfs +would take information about active clients from /var/lib/nfs/rmtab. + +This approach is quite fragile as it depends on rmtab being correct +which is not always easy, particularly when trying to implement +fail-over. Even when the system is working well, rmtab suffers from +getting lots of old entries that never get removed. + +With 2.6 we have the option of having the kernel tell mountd when it +gets a request from an unknown host, and mountd can give appropriate +export information to the kernel. This removes the dependency on +rmtab and means that the kernel only needs to know about currently +active clients. + +To enable this new functionality, you need to: + + mount -t nfsd nfsd /proc/fs/nfs + +before running exportfs or mountd. It is recommended that all NFS +services be protected from the internet-at-large by a firewall where +that is possible. + +Getting updated software +======================== + +Kernel compilation +****************** + +gcc 2.95.3 +---------- +o + +Make +---- +o + +Binutils +-------- +o + +System utilities +**************** + +Util-linux +---------- +o + +Ksymoops +-------- +o + +Module-Init-Tools +----------------- +o + +Mkinitrd +-------- +o + +E2fsprogs +--------- +o + +JFSutils +-------- +o + +Reiserfsprogs +------------- +o + +Xfsprogs +-------- +o + +Pcmcia-cs +--------- +o + +Quota-tools +---------- +o + +Jade +---- +o + +DocBook Stylesheets +------------------- +o + +Intel P6 microcode +------------------ +o + +Powertweak +---------- +o + +udev +---- +o + +Networking +********** + +PPP +--- +o + +Isdn4k-utils +------------ +o + +NFS-utils +--------- +o + +Iptables +-------- +o + +Ip-route2 +--------- +o + +OProfile +-------- +o + +NFS-Utils +--------- +o + diff --git a/Documentation/CodingStyle b/Documentation/CodingStyle new file mode 100644 index 000000000000..f25b3953f513 --- /dev/null +++ b/Documentation/CodingStyle @@ -0,0 +1,431 @@ + + Linux kernel coding style + +This is a short document describing the preferred coding style for the +linux kernel. Coding style is very personal, and I won't _force_ my +views on anybody, but this is what goes for anything that I have to be +able to maintain, and I'd prefer it for most other things too. Please +at least consider the points made here. + +First off, I'd suggest printing out a copy of the GNU coding standards, +and NOT read it. Burn them, it's a great symbolic gesture. + +Anyway, here goes: + + + Chapter 1: Indentation + +Tabs are 8 characters, and thus indentations are also 8 characters. +There are heretic movements that try to make indentations 4 (or even 2!) +characters deep, and that is akin to trying to define the value of PI to +be 3. + +Rationale: The whole idea behind indentation is to clearly define where +a block of control starts and ends. Especially when you've been looking +at your screen for 20 straight hours, you'll find it a lot easier to see +how the indentation works if you have large indentations. + +Now, some people will claim that having 8-character indentations makes +the code move too far to the right, and makes it hard to read on a +80-character terminal screen. The answer to that is that if you need +more than 3 levels of indentation, you're screwed anyway, and should fix +your program. + +In short, 8-char indents make things easier to read, and have the added +benefit of warning you when you're nesting your functions too deep. +Heed that warning. + +Don't put multiple statements on a single line unless you have +something to hide: + + if (condition) do_this; + do_something_everytime; + +Outside of comments, documentation and except in Kconfig, spaces are never +used for indentation, and the above example is deliberately broken. + +Get a decent editor and don't leave whitespace at the end of lines. + + + Chapter 2: Breaking long lines and strings + +Coding style is all about readability and maintainability using commonly +available tools. + +The limit on the length of lines is 80 columns and this is a hard limit. + +Statements longer than 80 columns will be broken into sensible chunks. +Descendants are always substantially shorter than the parent and are placed +substantially to the right. The same applies to function headers with a long +argument list. Long strings are as well broken into shorter strings. + +void fun(int a, int b, int c) +{ + if (condition) + printk(KERN_WARNING "Warning this is a long printk with " + "3 parameters a: %u b: %u " + "c: %u \n", a, b, c); + else + next_statement; +} + + Chapter 3: Placing Braces + +The other issue that always comes up in C styling is the placement of +braces. Unlike the indent size, there are few technical reasons to +choose one placement strategy over the other, but the preferred way, as +shown to us by the prophets Kernighan and Ritchie, is to put the opening +brace last on the line, and put the closing brace first, thusly: + + if (x is true) { + we do y + } + +However, there is one special case, namely functions: they have the +opening brace at the beginning of the next line, thus: + + int function(int x) + { + body of function + } + +Heretic people all over the world have claimed that this inconsistency +is ... well ... inconsistent, but all right-thinking people know that +(a) K&R are _right_ and (b) K&R are right. Besides, functions are +special anyway (you can't nest them in C). + +Note that the closing brace is empty on a line of its own, _except_ in +the cases where it is followed by a continuation of the same statement, +ie a "while" in a do-statement or an "else" in an if-statement, like +this: + + do { + body of do-loop + } while (condition); + +and + + if (x == y) { + .. + } else if (x > y) { + ... + } else { + .... + } + +Rationale: K&R. + +Also, note that this brace-placement also minimizes the number of empty +(or almost empty) lines, without any loss of readability. Thus, as the +supply of new-lines on your screen is not a renewable resource (think +25-line terminal screens here), you have more empty lines to put +comments on. + + + Chapter 4: Naming + +C is a Spartan language, and so should your naming be. Unlike Modula-2 +and Pascal programmers, C programmers do not use cute names like +ThisVariableIsATemporaryCounter. A C programmer would call that +variable "tmp", which is much easier to write, and not the least more +difficult to understand. + +HOWEVER, while mixed-case names are frowned upon, descriptive names for +global variables are a must. To call a global function "foo" is a +shooting offense. + +GLOBAL variables (to be used only if you _really_ need them) need to +have descriptive names, as do global functions. If you have a function +that counts the number of active users, you should call that +"count_active_users()" or similar, you should _not_ call it "cntusr()". + +Encoding the type of a function into the name (so-called Hungarian +notation) is brain damaged - the compiler knows the types anyway and can +check those, and it only confuses the programmer. No wonder MicroSoft +makes buggy programs. + +LOCAL variable names should be short, and to the point. If you have +some random integer loop counter, it should probably be called "i". +Calling it "loop_counter" is non-productive, if there is no chance of it +being mis-understood. Similarly, "tmp" can be just about any type of +variable that is used to hold a temporary value. + +If you are afraid to mix up your local variable names, you have another +problem, which is called the function-growth-hormone-imbalance syndrome. +See next chapter. + + + Chapter 5: Functions + +Functions should be short and sweet, and do just one thing. They should +fit on one or two screenfuls of text (the ISO/ANSI screen size is 80x24, +as we all know), and do one thing and do that well. + +The maximum length of a function is inversely proportional to the +complexity and indentation level of that function. So, if you have a +conceptually simple function that is just one long (but simple) +case-statement, where you have to do lots of small things for a lot of +different cases, it's OK to have a longer function. + +However, if you have a complex function, and you suspect that a +less-than-gifted first-year high-school student might not even +understand what the function is all about, you should adhere to the +maximum limits all the more closely. Use helper functions with +descriptive names (you can ask the compiler to in-line them if you think +it's performance-critical, and it will probably do a better job of it +than you would have done). + +Another measure of the function is the number of local variables. They +shouldn't exceed 5-10, or you're doing something wrong. Re-think the +function, and split it into smaller pieces. A human brain can +generally easily keep track of about 7 different things, anything more +and it gets confused. You know you're brilliant, but maybe you'd like +to understand what you did 2 weeks from now. + + + Chapter 6: Centralized exiting of functions + +Albeit deprecated by some people, the equivalent of the goto statement is +used frequently by compilers in form of the unconditional jump instruction. + +The goto statement comes in handy when a function exits from multiple +locations and some common work such as cleanup has to be done. + +The rationale is: + +- unconditional statements are easier to understand and follow +- nesting is reduced +- errors by not updating individual exit points when making + modifications are prevented +- saves the compiler work to optimize redundant code away ;) + +int fun(int ) +{ + int result = 0; + char *buffer = kmalloc(SIZE); + + if (buffer == NULL) + return -ENOMEM; + + if (condition1) { + while (loop1) { + ... + } + result = 1; + goto out; + } + ... +out: + kfree(buffer); + return result; +} + + Chapter 7: Commenting + +Comments are good, but there is also a danger of over-commenting. NEVER +try to explain HOW your code works in a comment: it's much better to +write the code so that the _working_ is obvious, and it's a waste of +time to explain badly written code. + +Generally, you want your comments to tell WHAT your code does, not HOW. +Also, try to avoid putting comments inside a function body: if the +function is so complex that you need to separately comment parts of it, +you should probably go back to chapter 5 for a while. You can make +small comments to note or warn about something particularly clever (or +ugly), but try to avoid excess. Instead, put the comments at the head +of the function, telling people what it does, and possibly WHY it does +it. + + + Chapter 8: You've made a mess of it + +That's OK, we all do. You've probably been told by your long-time Unix +user helper that "GNU emacs" automatically formats the C sources for +you, and you've noticed that yes, it does do that, but the defaults it +uses are less than desirable (in fact, they are worse than random +typing - an infinite number of monkeys typing into GNU emacs would never +make a good program). + +So, you can either get rid of GNU emacs, or change it to use saner +values. To do the latter, you can stick the following in your .emacs file: + +(defun linux-c-mode () + "C mode with adjusted defaults for use with the Linux kernel." + (interactive) + (c-mode) + (c-set-style "K&R") + (setq tab-width 8) + (setq indent-tabs-mode t) + (setq c-basic-offset 8)) + +This will define the M-x linux-c-mode command. When hacking on a +module, if you put the string -*- linux-c -*- somewhere on the first +two lines, this mode will be automatically invoked. Also, you may want +to add + +(setq auto-mode-alist (cons '("/usr/src/linux.*/.*\\.[ch]$" . linux-c-mode) + auto-mode-alist)) + +to your .emacs file if you want to have linux-c-mode switched on +automagically when you edit source files under /usr/src/linux. + +But even if you fail in getting emacs to do sane formatting, not +everything is lost: use "indent". + +Now, again, GNU indent has the same brain-dead settings that GNU emacs +has, which is why you need to give it a few command line options. +However, that's not too bad, because even the makers of GNU indent +recognize the authority of K&R (the GNU people aren't evil, they are +just severely misguided in this matter), so you just give indent the +options "-kr -i8" (stands for "K&R, 8 character indents"), or use +"scripts/Lindent", which indents in the latest style. + +"indent" has a lot of options, and especially when it comes to comment +re-formatting you may want to take a look at the man page. But +remember: "indent" is not a fix for bad programming. + + + Chapter 9: Configuration-files + +For configuration options (arch/xxx/Kconfig, and all the Kconfig files), +somewhat different indentation is used. + +Help text is indented with 2 spaces. + +if CONFIG_EXPERIMENTAL + tristate CONFIG_BOOM + default n + help + Apply nitroglycerine inside the keyboard (DANGEROUS) + bool CONFIG_CHEER + depends on CONFIG_BOOM + default y + help + Output nice messages when you explode +endif + +Generally, CONFIG_EXPERIMENTAL should surround all options not considered +stable. All options that are known to trash data (experimental write- +support for file-systems, for instance) should be denoted (DANGEROUS), other +experimental options should be denoted (EXPERIMENTAL). + + + Chapter 10: Data structures + +Data structures that have visibility outside the single-threaded +environment they are created and destroyed in should always have +reference counts. In the kernel, garbage collection doesn't exist (and +outside the kernel garbage collection is slow and inefficient), which +means that you absolutely _have_ to reference count all your uses. + +Reference counting means that you can avoid locking, and allows multiple +users to have access to the data structure in parallel - and not having +to worry about the structure suddenly going away from under them just +because they slept or did something else for a while. + +Note that locking is _not_ a replacement for reference counting. +Locking is used to keep data structures coherent, while reference +counting is a memory management technique. Usually both are needed, and +they are not to be confused with each other. + +Many data structures can indeed have two levels of reference counting, +when there are users of different "classes". The subclass count counts +the number of subclass users, and decrements the global count just once +when the subclass count goes to zero. + +Examples of this kind of "multi-level-reference-counting" can be found in +memory management ("struct mm_struct": mm_users and mm_count), and in +filesystem code ("struct super_block": s_count and s_active). + +Remember: if another thread can find your data structure, and you don't +have a reference count on it, you almost certainly have a bug. + + + Chapter 11: Macros, Enums, Inline functions and RTL + +Names of macros defining constants and labels in enums are capitalized. + +#define CONSTANT 0x12345 + +Enums are preferred when defining several related constants. + +CAPITALIZED macro names are appreciated but macros resembling functions +may be named in lower case. + +Generally, inline functions are preferable to macros resembling functions. + +Macros with multiple statements should be enclosed in a do - while block: + +#define macrofun(a, b, c) \ + do { \ + if (a == 5) \ + do_this(b, c); \ + } while (0) + +Things to avoid when using macros: + +1) macros that affect control flow: + +#define FOO(x) \ + do { \ + if (blah(x) < 0) \ + return -EBUGGERED; \ + } while(0) + +is a _very_ bad idea. It looks like a function call but exits the "calling" +function; don't break the internal parsers of those who will read the code. + +2) macros that depend on having a local variable with a magic name: + +#define FOO(val) bar(index, val) + +might look like a good thing, but it's confusing as hell when one reads the +code and it's prone to breakage from seemingly innocent changes. + +3) macros with arguments that are used as l-values: FOO(x) = y; will +bite you if somebody e.g. turns FOO into an inline function. + +4) forgetting about precedence: macros defining constants using expressions +must enclose the expression in parentheses. Beware of similar issues with +macros using parameters. + +#define CONSTANT 0x4000 +#define CONSTEXP (CONSTANT | 3) + +The cpp manual deals with macros exhaustively. The gcc internals manual also +covers RTL which is used frequently with assembly language in the kernel. + + + Chapter 12: Printing kernel messages + +Kernel developers like to be seen as literate. Do mind the spelling +of kernel messages to make a good impression. Do not use crippled +words like "dont" and use "do not" or "don't" instead. + +Kernel messages do not have to be terminated with a period. + +Printing numbers in parentheses (%d) adds no value and should be avoided. + + + Chapter 13: References + +The C Programming Language, Second Edition +by Brian W. Kernighan and Dennis M. Ritchie. +Prentice Hall, Inc., 1988. +ISBN 0-13-110362-8 (paperback), 0-13-110370-9 (hardback). +URL: http://cm.bell-labs.com/cm/cs/cbook/ + +The Practice of Programming +by Brian W. Kernighan and Rob Pike. +Addison-Wesley, Inc., 1999. +ISBN 0-201-61586-X. +URL: http://cm.bell-labs.com/cm/cs/tpop/ + +GNU manuals - where in compliance with K&R and this text - for cpp, gcc, +gcc internals and indent, all available from http://www.gnu.org + +WG14 is the international standardization working group for the programming +language C, URL: http://std.dkuug.dk/JTC1/SC22/WG14/ + +-- +Last updated on 16 February 2004 by a community effort on LKML. diff --git a/Documentation/DMA-API.txt b/Documentation/DMA-API.txt new file mode 100644 index 000000000000..6ee3cd6134df --- /dev/null +++ b/Documentation/DMA-API.txt @@ -0,0 +1,526 @@ + Dynamic DMA mapping using the generic device + ============================================ + + James E.J. Bottomley + +This document describes the DMA API. For a more gentle introduction +phrased in terms of the pci_ equivalents (and actual examples) see +DMA-mapping.txt + +This API is split into two pieces. Part I describes the API and the +corresponding pci_ API. Part II describes the extensions to the API +for supporting non-consistent memory machines. Unless you know that +your driver absolutely has to support non-consistent platforms (this +is usually only legacy platforms) you should only use the API +described in part I. + +Part I - pci_ and dma_ Equivalent API +------------------------------------- + +To get the pci_ API, you must #include +To get the dma_ API, you must #include + + +Part Ia - Using large dma-coherent buffers +------------------------------------------ + +void * +dma_alloc_coherent(struct device *dev, size_t size, + dma_addr_t *dma_handle, int flag) +void * +pci_alloc_consistent(struct pci_dev *dev, size_t size, + dma_addr_t *dma_handle) + +Consistent memory is memory for which a write by either the device or +the processor can immediately be read by the processor or device +without having to worry about caching effects. + +This routine allocates a region of bytes of consistent memory. +it also returns a which may be cast to an unsigned +integer the same width as the bus and used as the physical address +base of the region. + +Returns: a pointer to the allocated region (in the processor's virtual +address space) or NULL if the allocation failed. + +Note: consistent memory can be expensive on some platforms, and the +minimum allocation length may be as big as a page, so you should +consolidate your requests for consistent memory as much as possible. +The simplest way to do that is to use the dma_pool calls (see below). + +The flag parameter (dma_alloc_coherent only) allows the caller to +specify the GFP_ flags (see kmalloc) for the allocation (the +implementation may chose to ignore flags that affect the location of +the returned memory, like GFP_DMA). For pci_alloc_consistent, you +must assume GFP_ATOMIC behaviour. + +void +dma_free_coherent(struct device *dev, size_t size, void *cpu_addr + dma_addr_t dma_handle) +void +pci_free_consistent(struct pci_dev *dev, size_t size, void *cpu_addr + dma_addr_t dma_handle) + +Free the region of consistent memory you previously allocated. dev, +size and dma_handle must all be the same as those passed into the +consistent allocate. cpu_addr must be the virtual address returned by +the consistent allocate + + +Part Ib - Using small dma-coherent buffers +------------------------------------------ + +To get this part of the dma_ API, you must #include + +Many drivers need lots of small dma-coherent memory regions for DMA +descriptors or I/O buffers. Rather than allocating in units of a page +or more using dma_alloc_coherent(), you can use DMA pools. These work +much like a kmem_cache_t, except that they use the dma-coherent allocator +not __get_free_pages(). Also, they understand common hardware constraints +for alignment, like queue heads needing to be aligned on N byte boundaries. + + + struct dma_pool * + dma_pool_create(const char *name, struct device *dev, + size_t size, size_t align, size_t alloc); + + struct pci_pool * + pci_pool_create(const char *name, struct pci_device *dev, + size_t size, size_t align, size_t alloc); + +The pool create() routines initialize a pool of dma-coherent buffers +for use with a given device. It must be called in a context which +can sleep. + +The "name" is for diagnostics (like a kmem_cache_t name); dev and size +are like what you'd pass to dma_alloc_coherent(). The device's hardware +alignment requirement for this type of data is "align" (which is expressed +in bytes, and must be a power of two). If your device has no boundary +crossing restrictions, pass 0 for alloc; passing 4096 says memory allocated +from this pool must not cross 4KByte boundaries. + + + void *dma_pool_alloc(struct dma_pool *pool, int gfp_flags, + dma_addr_t *dma_handle); + + void *pci_pool_alloc(struct pci_pool *pool, int gfp_flags, + dma_addr_t *dma_handle); + +This allocates memory from the pool; the returned memory will meet the size +and alignment requirements specified at creation time. Pass GFP_ATOMIC to +prevent blocking, or if it's permitted (not in_interrupt, not holding SMP locks) +pass GFP_KERNEL to allow blocking. Like dma_alloc_coherent(), this returns +two values: an address usable by the cpu, and the dma address usable by the +pool's device. + + + void dma_pool_free(struct dma_pool *pool, void *vaddr, + dma_addr_t addr); + + void pci_pool_free(struct pci_pool *pool, void *vaddr, + dma_addr_t addr); + +This puts memory back into the pool. The pool is what was passed to +the the pool allocation routine; the cpu and dma addresses are what +were returned when that routine allocated the memory being freed. + + + void dma_pool_destroy(struct dma_pool *pool); + + void pci_pool_destroy(struct pci_pool *pool); + +The pool destroy() routines free the resources of the pool. They must be +called in a context which can sleep. Make sure you've freed all allocated +memory back to the pool before you destroy it. + + +Part Ic - DMA addressing limitations +------------------------------------ + +int +dma_supported(struct device *dev, u64 mask) +int +pci_dma_supported(struct device *dev, u64 mask) + +Checks to see if the device can support DMA to the memory described by +mask. + +Returns: 1 if it can and 0 if it can't. + +Notes: This routine merely tests to see if the mask is possible. It +won't change the current mask settings. It is more intended as an +internal API for use by the platform than an external API for use by +driver writers. + +int +dma_set_mask(struct device *dev, u64 mask) +int +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. + +u64 +dma_get_required_mask(struct device *dev) + +After setting the mask with dma_set_mask(), this API returns the +actual mask (within that already set) that the platform actually +requires to operate efficiently. Usually this means the returned mask +is the minimum required to cover all of memory. Examining the +required mask gives drivers with variable descriptor sizes the +opportunity to use smaller descriptors as necessary. + +Requesting the required mask does not alter the current mask. If you +wish to take advantage of it, you should issue another dma_set_mask() +call to lower the mask again. + + +Part Id - Streaming DMA mappings +-------------------------------- + +dma_addr_t +dma_map_single(struct device *dev, void *cpu_addr, size_t size, + enum dma_data_direction direction) +dma_addr_t +pci_map_single(struct device *dev, void *cpu_addr, size_t size, + int direction) + +Maps a piece of processor virtual memory so it can be accessed by the +device and returns the physical handle of the memory. + +The direction for both api's may be converted freely by casting. +However the dma_ API uses a strongly typed enumerator for its +direction: + +DMA_NONE = PCI_DMA_NONE no direction (used for + debugging) +DMA_TO_DEVICE = PCI_DMA_TODEVICE data is going from the + memory to the device +DMA_FROM_DEVICE = PCI_DMA_FROMDEVICE data is coming from + the device to the + memory +DMA_BIDIRECTIONAL = PCI_DMA_BIDIRECTIONAL direction isn't known + +Notes: Not all memory regions in a machine can be mapped by this +API. Further, regions that appear to be physically contiguous in +kernel virtual space may not be contiguous as physical memory. Since +this API does not provide any scatter/gather capability, it will fail +if the user tries to map a non physically contiguous piece of memory. +For this reason, it is recommended that memory mapped by this API be +obtained only from sources which guarantee to be physically contiguous +(like kmalloc). + +Further, the physical address of the memory must be within the +dma_mask of the device (the dma_mask represents a bit mask of the +addressable region for the device. i.e. if the physical address of +the memory anded with the dma_mask is still equal to the physical +address, then the device can perform DMA to the memory). In order to +ensure that the memory allocated by kmalloc is within the dma_mask, +the driver may specify various platform dependent flags to restrict +the physical memory range of the allocation (e.g. on x86, GFP_DMA +guarantees to be within the first 16Mb of available physical memory, +as required by ISA devices). + +Note also that the above constraints on physical contiguity and +dma_mask may not apply if the platform has an IOMMU (a device which +supplies a physical to virtual mapping between the I/O memory bus and +the device). However, to be portable, device driver writers may *not* +assume that such an IOMMU exists. + +Warnings: Memory coherency operates at a granularity called the cache +line width. In order for memory mapped by this API to operate +correctly, the mapped region must begin exactly on a cache line +boundary and end exactly on one (to prevent two separately mapped +regions from sharing a single cache line). Since the cache line size +may not be known at compile time, the API will not enforce this +requirement. Therefore, it is recommended that driver writers who +don't take special care to determine the cache line size at run time +only map virtual regions that begin and end on page boundaries (which +are guaranteed also to be cache line boundaries). + +DMA_TO_DEVICE synchronisation must be done after the last modification +of the memory region by the software and before it is handed off to +the driver. Once this primitive is used. Memory covered by this +primitive should be treated as read only by the device. If the device +may write to it at any point, it should be DMA_BIDIRECTIONAL (see +below). + +DMA_FROM_DEVICE synchronisation must be done before the driver +accesses data that may be changed by the device. This memory should +be treated as read only by the driver. If the driver needs to write +to it at any point, it should be DMA_BIDIRECTIONAL (see below). + +DMA_BIDIRECTIONAL requires special handling: it means that the driver +isn't sure if the memory was modified before being handed off to the +device and also isn't sure if the device will also modify it. Thus, +you must always sync bidirectional memory twice: once before the +memory is handed off to the device (to make sure all memory changes +are flushed from the processor) and once before the data may be +accessed after being used by the device (to make sure any processor +cache lines are updated with data that the device may have changed. + +void +dma_unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size, + enum dma_data_direction direction) +void +pci_unmap_single(struct pci_dev *hwdev, dma_addr_t dma_addr, + size_t size, int direction) + +Unmaps the region previously mapped. All the parameters passed in +must be identical to those passed in (and returned) by the mapping +API. + +dma_addr_t +dma_map_page(struct device *dev, struct page *page, + unsigned long offset, size_t size, + enum dma_data_direction direction) +dma_addr_t +pci_map_page(struct pci_dev *hwdev, struct page *page, + unsigned long offset, size_t size, int direction) +void +dma_unmap_page(struct device *dev, dma_addr_t dma_address, size_t size, + enum dma_data_direction direction) +void +pci_unmap_page(struct pci_dev *hwdev, dma_addr_t dma_address, + size_t size, int direction) + +API for mapping and unmapping for pages. All the notes and warnings +for the other mapping APIs apply here. Also, although the +and parameters are provided to do partial page mapping, it is +recommended that you never use these unless you really know what the +cache width is. + +int +dma_mapping_error(dma_addr_t dma_addr) + +int +pci_dma_mapping_error(dma_addr_t dma_addr) + +In some circumstances dma_map_single and dma_map_page will fail to create +a mapping. A driver can check for these errors by testing the returned +dma address with dma_mapping_error(). A non zero return value means the mapping +could not be created and the driver should take appropriate action (eg +reduce current DMA mapping usage or delay and try again later). + +int +dma_map_sg(struct device *dev, struct scatterlist *sg, int nents, + enum dma_data_direction direction) +int +pci_map_sg(struct pci_dev *hwdev, struct scatterlist *sg, + int nents, int direction) + +Maps a scatter gather list from the block layer. + +Returns: the number of physical segments mapped (this may be shorted +than passed in if the block layer determines that some +elements of the scatter/gather list are physically adjacent and thus +may be mapped with a single entry). + +Please note that the sg cannot be mapped again if it has been mapped once. +The mapping process is allowed to destroy information in the sg. + +As with the other mapping interfaces, dma_map_sg can fail. When it +does, 0 is returned and a driver must take appropriate action. It is +critical that the driver do something, in the case of a block driver +aborting the request or even oopsing is better than doing nothing and +corrupting the filesystem. + +void +dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nhwentries, + enum dma_data_direction direction) +void +pci_unmap_sg(struct pci_dev *hwdev, struct scatterlist *sg, + int nents, int direction) + +unmap the previously mapped scatter/gather list. All the parameters +must be the same as those and passed in to the scatter/gather mapping +API. + +Note: must be the number you passed in, *not* the number of +physical entries returned. + +void +dma_sync_single(struct device *dev, dma_addr_t dma_handle, size_t size, + enum dma_data_direction direction) +void +pci_dma_sync_single(struct pci_dev *hwdev, dma_addr_t dma_handle, + size_t size, int direction) +void +dma_sync_sg(struct device *dev, struct scatterlist *sg, int nelems, + enum dma_data_direction direction) +void +pci_dma_sync_sg(struct pci_dev *hwdev, struct scatterlist *sg, + int nelems, int direction) + +synchronise a single contiguous or scatter/gather mapping. All the +parameters must be the same as those passed into the single mapping +API. + +Notes: You must do this: + +- Before reading values that have been written by DMA from the device + (use the DMA_FROM_DEVICE direction) +- After writing values that will be written to the device using DMA + (use the DMA_TO_DEVICE) direction +- before *and* after handing memory to the device if the memory is + DMA_BIDIRECTIONAL + +See also dma_map_single(). + + +Part II - Advanced dma_ usage +----------------------------- + +Warning: These pieces of the DMA API have no PCI equivalent. They +should also not be used in the majority of cases, since they cater for +unlikely corner cases that don't belong in usual drivers. + +If you don't understand how cache line coherency works between a +processor and an I/O device, you should not be using this part of the +API at all. + +void * +dma_alloc_noncoherent(struct device *dev, size_t size, + dma_addr_t *dma_handle, int flag) + +Identical to dma_alloc_coherent() except that the platform will +choose to return either consistent or non-consistent memory as it sees +fit. By using this API, you are guaranteeing to the platform that you +have all the correct and necessary sync points for this memory in the +driver should it choose to return non-consistent memory. + +Note: where the platform can return consistent memory, it will +guarantee that the sync points become nops. + +Warning: Handling non-consistent memory is a real pain. You should +only ever use this API if you positively know your driver will be +required to work on one of the rare (usually non-PCI) architectures +that simply cannot make consistent memory. + +void +dma_free_noncoherent(struct device *dev, size_t size, void *cpu_addr, + dma_addr_t dma_handle) + +free memory allocated by the nonconsistent API. All parameters must +be identical to those passed in (and returned by +dma_alloc_noncoherent()). + +int +dma_is_consistent(dma_addr_t dma_handle) + +returns true if the memory pointed to by the dma_handle is actually +consistent. + +int +dma_get_cache_alignment(void) + +returns the processor cache alignment. This is the absolute minimum +alignment *and* width that you must observe when either mapping +memory or doing partial flushes. + +Notes: This API may return a number *larger* than the actual cache +line, but it will guarantee that one or more cache lines fit exactly +into the width returned by this call. It will also always be a power +of two for easy alignment + +void +dma_sync_single_range(struct device *dev, dma_addr_t dma_handle, + unsigned long offset, size_t size, + enum dma_data_direction direction) + +does a partial sync. starting at offset and continuing for size. You +must be careful to observe the cache alignment and width when doing +anything like this. You must also be extra careful about accessing +memory you intend to sync partially. + +void +dma_cache_sync(void *vaddr, size_t size, + enum dma_data_direction direction) + +Do a partial sync of memory that was allocated by +dma_alloc_noncoherent(), starting at virtual address vaddr and +continuing on for size. Again, you *must* observe the cache line +boundaries when doing this. + +int +dma_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr, + dma_addr_t device_addr, size_t size, int + flags) + + +Declare region of memory to be handed out by dma_alloc_coherent when +it's asked for coherent memory for this device. + +bus_addr is the physical address to which the memory is currently +assigned in the bus responding region (this will be used by the +platform to perform the mapping) + +device_addr is the physical address the device needs to be programmed +with actually to address this memory (this will be handed out as the +dma_addr_t in dma_alloc_coherent()) + +size is the size of the area (must be multiples of PAGE_SIZE). + +flags can be or'd together and are + +DMA_MEMORY_MAP - request that the memory returned from +dma_alloc_coherent() be directly writeable. + +DMA_MEMORY_IO - request that the memory returned from +dma_alloc_coherent() be addressable using read/write/memcpy_toio etc. + +One or both of these flags must be present + +DMA_MEMORY_INCLUDES_CHILDREN - make the declared memory be allocated by +dma_alloc_coherent of any child devices of this one (for memory residing +on a bridge). + +DMA_MEMORY_EXCLUSIVE - only allocate memory from the declared regions. +Do not allow dma_alloc_coherent() to fall back to system memory when +it's out of memory in the declared region. + +The return value will be either DMA_MEMORY_MAP or DMA_MEMORY_IO and +must correspond to a passed in flag (i.e. no returning DMA_MEMORY_IO +if only DMA_MEMORY_MAP were passed in) for success or zero for +failure. + +Note, for DMA_MEMORY_IO returns, all subsequent memory returned by +dma_alloc_coherent() may no longer be accessed directly, but instead +must be accessed using the correct bus functions. If your driver +isn't prepared to handle this contingency, it should not specify +DMA_MEMORY_IO in the input flags. + +As a simplification for the platforms, only *one* such region of +memory may be declared per device. + +For reasons of efficiency, most platforms choose to track the declared +region only at the granularity of a page. For smaller allocations, +you should use the dma_pool() API. + +void +dma_release_declared_memory(struct device *dev) + +Remove the memory region previously declared from the system. This +API performs *no* in-use checking for this region and will return +unconditionally having removed all the required structures. It is the +drivers job to ensure that no parts of this memory region are +currently in use. + +void * +dma_mark_declared_memory_occupied(struct device *dev, + dma_addr_t device_addr, size_t size) + +This is used to occupy specific regions of the declared space +(dma_alloc_coherent() will hand out the first free region it finds). + +device_addr is the *device* address of the region requested + +size is the size (and should be a page sized multiple). + +The return value will be either a pointer to the processor virtual +address of the memory, or an error (via PTR_ERR()) if any part of the +region is occupied. + + diff --git a/Documentation/DMA-mapping.txt b/Documentation/DMA-mapping.txt new file mode 100644 index 000000000000..f4ac37f157ea --- /dev/null +++ b/Documentation/DMA-mapping.txt @@ -0,0 +1,881 @@ + Dynamic DMA mapping + =================== + + David S. Miller + Richard Henderson + Jakub Jelinek + +This document describes the DMA mapping system in terms of the pci_ +API. For a similar API that works for generic devices, see +DMA-API.txt. + +Most of the 64bit platforms have special hardware that translates bus +addresses (DMA addresses) into physical addresses. This is similar to +how page tables and/or a TLB translates virtual addresses to physical +addresses on a CPU. This is needed so that e.g. PCI devices can +access with a Single Address Cycle (32bit DMA address) any page in the +64bit physical address space. Previously in Linux those 64bit +platforms had to set artificial limits on the maximum RAM size in the +system, so that the virt_to_bus() static scheme works (the DMA address +translation tables were simply filled on bootup to map each bus +address to the physical page __pa(bus_to_virt())). + +So that Linux can use the dynamic DMA mapping, it needs some help from the +drivers, namely it has to take into account that DMA addresses should be +mapped only for the time they are actually used and unmapped after the DMA +transfer. + +The following API will work of course even on platforms where no such +hardware exists, see e.g. include/asm-i386/pci.h for how it is implemented on +top of the virt_to_bus interface. + +First of all, you should make sure + +#include + +is in your driver. This file will obtain for you the definition of the +dma_addr_t (which can hold any valid DMA address for the platform) +type which should be used everywhere you hold a DMA (bus) address +returned from the DMA mapping functions. + + What memory is DMA'able? + +The first piece of information you must know is what kernel memory can +be used with the DMA mapping facilities. There has been an unwritten +set of rules regarding this, and this text is an attempt to finally +write them down. + +If you acquired your memory via the page allocator +(i.e. __get_free_page*()) or the generic memory allocators +(i.e. kmalloc() or kmem_cache_alloc()) then you may DMA to/from +that memory using the addresses returned from those routines. + +This means specifically that you may _not_ use the memory/addresses +returned from vmalloc() for DMA. It is possible to DMA to the +_underlying_ memory mapped into a vmalloc() area, but this requires +walking page tables to get the physical addresses, and then +translating each of those pages back to a kernel address using +something like __va(). [ EDIT: Update this when we integrate +Gerd Knorr's generic code which does this. ] + +This rule also means that you may not use kernel image addresses +(ie. items in the kernel's data/text/bss segment, or your driver's) +nor may you use kernel stack addresses for DMA. Both of these items +might be mapped somewhere entirely different than the rest of physical +memory. + +Also, this means that you cannot take the return of a kmap() +call and DMA to/from that. This is similar to vmalloc(). + +What about block I/O and networking buffers? The block I/O and +networking subsystems make sure that the buffers they use are valid +for you to DMA from/to. + + DMA addressing limitations + +Does your device have any DMA addressing limitations? For example, is +your device only capable of driving the low order 24-bits of address +on the PCI bus for SAC DMA transfers? If so, you need to inform the +PCI layer of this fact. + +By default, the kernel assumes that your device can address the full +32-bits in a SAC cycle. For a 64-bit DAC capable device, this needs +to be increased. And for a device with limitations, as discussed in +the previous paragraph, it needs to be decreased. + +pci_alloc_consistent() by default will return 32-bit DMA addresses. +PCI-X specification requires PCI-X devices to support 64-bit +addressing (DAC) for all transactions. And at least one platform (SGI +SN2) requires 64-bit consistent allocations to operate correctly when +the IO bus is in PCI-X mode. Therefore, like with pci_set_dma_mask(), +it's good practice to call pci_set_consistent_dma_mask() to set the +appropriate mask even if your device only supports 32-bit DMA +(default) and especially if it's a PCI-X device. + +For correct operation, you must interrogate the PCI layer in your +device probe routine to see if the PCI controller on the machine can +properly support the DMA addressing limitation your device has. It is +good style to do this even if your device holds the default setting, +because this shows that you did think about these issues wrt. your +device. + +The query is performed via a call to pci_set_dma_mask(): + + int pci_set_dma_mask(struct pci_dev *pdev, u64 device_mask); + +The query for consistent allocations is performed via a a call to +pci_set_consistent_dma_mask(): + + int pci_set_consistent_dma_mask(struct pci_dev *pdev, u64 device_mask); + +Here, pdev is a pointer to the PCI device struct of your device, and +device_mask is a bit mask describing which bits of a PCI address your +device supports. It returns zero if your card can perform DMA +properly on the machine given the address mask you provided. + +If it returns non-zero, your device can not perform DMA properly on +this platform, and attempting to do so will result in undefined +behavior. You must either use a different mask, or not use DMA. + +This means that in the failure case, you have three options: + +1) Use another DMA mask, if possible (see below). +2) Use some non-DMA mode for data transfer, if possible. +3) Ignore this device and do not initialize it. + +It is recommended that your driver print a kernel KERN_WARNING message +when you end up performing either #2 or #3. In this manner, if a user +of your driver reports that performance is bad or that the device is not +even detected, you can ask them for the kernel messages to find out +exactly why. + +The standard 32-bit addressing PCI device would do something like +this: + + if (pci_set_dma_mask(pdev, DMA_32BIT_MASK)) { + printk(KERN_WARNING + "mydev: No suitable DMA available.\n"); + goto ignore_this_device; + } + +Another common scenario is a 64-bit capable device. The approach +here is to try for 64-bit DAC addressing, but back down to a +32-bit mask should that fail. The PCI platform code may fail the +64-bit mask not because the platform is not capable of 64-bit +addressing. Rather, it may fail in this case simply because +32-bit SAC addressing is done more efficiently than DAC addressing. +Sparc64 is one platform which behaves in this way. + +Here is how you would handle a 64-bit capable device which can drive +all 64-bits when accessing streaming DMA: + + int using_dac; + + if (!pci_set_dma_mask(pdev, DMA_64BIT_MASK)) { + using_dac = 1; + } else if (!pci_set_dma_mask(pdev, DMA_32BIT_MASK)) { + using_dac = 0; + } else { + printk(KERN_WARNING + "mydev: No suitable DMA available.\n"); + goto ignore_this_device; + } + +If a card is capable of using 64-bit consistent allocations as well, +the case would look like this: + + int using_dac, consistent_using_dac; + + if (!pci_set_dma_mask(pdev, DMA_64BIT_MASK)) { + using_dac = 1; + consistent_using_dac = 1; + pci_set_consistent_dma_mask(pdev, DMA_64BIT_MASK); + } else if (!pci_set_dma_mask(pdev, DMA_32BIT_MASK)) { + using_dac = 0; + consistent_using_dac = 0; + pci_set_consistent_dma_mask(pdev, DMA_32BIT_MASK); + } else { + printk(KERN_WARNING + "mydev: No suitable DMA available.\n"); + goto ignore_this_device; + } + +pci_set_consistent_dma_mask() will always be able to set the same or a +smaller mask as pci_set_dma_mask(). However for the rare case that a +device driver only uses consistent allocations, one would have to +check the return value from pci_set_consistent_dma_mask(). + +If your 64-bit device is going to be an enormous consumer of DMA +mappings, this can be problematic since the DMA mappings are a +finite resource on many platforms. Please see the "DAC Addressing +for Address Space Hungry Devices" section near the end of this +document for how to handle this case. + +Finally, if your device can only drive the low 24-bits of +address during PCI bus mastering you might do something like: + + if (pci_set_dma_mask(pdev, 0x00ffffff)) { + printk(KERN_WARNING + "mydev: 24-bit DMA addressing not available.\n"); + goto ignore_this_device; + } + +When pci_set_dma_mask() is successful, and returns zero, the PCI layer +saves away this mask you have provided. The PCI layer will use this +information later when you make DMA mappings. + +There is a case which we are aware of at this time, which is worth +mentioning in this documentation. If your device supports multiple +functions (for example a sound card provides playback and record +functions) and the various different functions have _different_ +DMA addressing limitations, you may wish to probe each mask and +only provide the functionality which the machine can handle. It +is important that the last call to pci_set_dma_mask() be for the +most specific mask. + +Here is pseudo-code showing how this might be done: + + #define PLAYBACK_ADDRESS_BITS DMA_32BIT_MASK + #define RECORD_ADDRESS_BITS 0x00ffffff + + struct my_sound_card *card; + struct pci_dev *pdev; + + ... + if (!pci_set_dma_mask(pdev, PLAYBACK_ADDRESS_BITS)) { + card->playback_enabled = 1; + } else { + card->playback_enabled = 0; + printk(KERN_WARN "%s: Playback disabled due to DMA limitations.\n", + card->name); + } + if (!pci_set_dma_mask(pdev, RECORD_ADDRESS_BITS)) { + card->record_enabled = 1; + } else { + card->record_enabled = 0; + printk(KERN_WARN "%s: Record disabled due to DMA limitations.\n", + card->name); + } + +A sound card was used as an example here because this genre of PCI +devices seems to be littered with ISA chips given a PCI front end, +and thus retaining the 16MB DMA addressing limitations of ISA. + + Types of DMA mappings + +There are two types of DMA mappings: + +- Consistent DMA mappings which are usually mapped at driver + initialization, unmapped at the end and for which the hardware should + guarantee that the device and the CPU can access the data + in parallel and will see updates made by each other without any + explicit software flushing. + + Think of "consistent" as "synchronous" or "coherent". + + The current default is to return consistent memory in the low 32 + bits of the PCI bus space. However, for future compatibility you + should set the consistent mask even if this default is fine for your + driver. + + Good examples of what to use consistent mappings for are: + + - Network card DMA ring descriptors. + - SCSI adapter mailbox command data structures. + - Device firmware microcode executed out of + main memory. + + The invariant these examples all require is that any CPU store + to memory is immediately visible to the device, and vice + versa. Consistent mappings guarantee this. + + IMPORTANT: Consistent DMA memory does not preclude the usage of + proper memory barriers. The CPU may reorder stores to + consistent memory just as it may normal memory. Example: + if it is important for the device to see the first word + of a descriptor updated before the second, you must do + something like: + + desc->word0 = address; + wmb(); + desc->word1 = DESC_VALID; + + in order to get correct behavior on all platforms. + +- Streaming DMA mappings which are usually mapped for one DMA transfer, + unmapped right after it (unless you use pci_dma_sync_* below) and for which + hardware can optimize for sequential accesses. + + This of "streaming" as "asynchronous" or "outside the coherency + domain". + + Good examples of what to use streaming mappings for are: + + - Networking buffers transmitted/received by a device. + - Filesystem buffers written/read by a SCSI device. + + The interfaces for using this type of mapping were designed in + such a way that an implementation can make whatever performance + optimizations the hardware allows. To this end, when using + such mappings you must be explicit about what you want to happen. + +Neither type of DMA mapping has alignment restrictions that come +from PCI, although some devices may have such restrictions. + + Using Consistent DMA mappings. + +To allocate and map large (PAGE_SIZE or so) consistent DMA regions, +you should do: + + dma_addr_t dma_handle; + + cpu_addr = pci_alloc_consistent(dev, size, &dma_handle); + +where dev is a struct pci_dev *. You should pass NULL for PCI like buses +where devices don't have struct pci_dev (like ISA, EISA). This may be +called in interrupt context. + +This argument is needed because the DMA translations may be bus +specific (and often is private to the bus which the device is attached +to). + +Size is the length of the region you want to allocate, in bytes. + +This routine will allocate RAM for that region, so it acts similarly to +__get_free_pages (but takes size instead of a page order). If your +driver needs regions sized smaller than a page, you may prefer using +the pci_pool interface, described below. + +The consistent DMA mapping interfaces, for non-NULL dev, will by +default return a DMA address which is SAC (Single Address Cycle) +addressable. Even if the device indicates (via PCI dma mask) that it +may address the upper 32-bits and thus perform DAC cycles, consistent +allocation will only return > 32-bit PCI addresses for DMA if the +consistent dma mask has been explicitly changed via +pci_set_consistent_dma_mask(). This is true of the pci_pool interface +as well. + +pci_alloc_consistent returns two values: the virtual address which you +can use to access it from the CPU and dma_handle which you pass to the +card. + +The cpu return address and the DMA bus master address are both +guaranteed to be aligned to the smallest PAGE_SIZE order which +is greater than or equal to the requested size. This invariant +exists (for example) to guarantee that if you allocate a chunk +which is smaller than or equal to 64 kilobytes, the extent of the +buffer you receive will not cross a 64K boundary. + +To unmap and free such a DMA region, you call: + + pci_free_consistent(dev, size, cpu_addr, dma_handle); + +where dev, size are the same as in the above call and cpu_addr and +dma_handle are the values pci_alloc_consistent returned to you. +This function may not be called in interrupt context. + +If your driver needs lots of smaller memory regions, you can write +custom code to subdivide pages returned by pci_alloc_consistent, +or you can use the pci_pool API to do that. A pci_pool is like +a kmem_cache, but it uses pci_alloc_consistent not __get_free_pages. +Also, it understands common hardware constraints for alignment, +like queue heads needing to be aligned on N byte boundaries. + +Create a pci_pool like this: + + struct pci_pool *pool; + + pool = pci_pool_create(name, dev, size, align, alloc); + +The "name" is for diagnostics (like a kmem_cache name); dev and size +are as above. The device's hardware alignment requirement for this +type of data is "align" (which is expressed in bytes, and must be a +power of two). If your device has no boundary crossing restrictions, +pass 0 for alloc; passing 4096 says memory allocated from this pool +must not cross 4KByte boundaries (but at that time it may be better to +go for pci_alloc_consistent directly instead). + +Allocate memory from a pci pool like this: + + cpu_addr = pci_pool_alloc(pool, flags, &dma_handle); + +flags are SLAB_KERNEL if blocking is permitted (not in_interrupt nor +holding SMP locks), SLAB_ATOMIC otherwise. Like pci_alloc_consistent, +this returns two values, cpu_addr and dma_handle. + +Free memory that was allocated from a pci_pool like this: + + pci_pool_free(pool, cpu_addr, dma_handle); + +where pool is what you passed to pci_pool_alloc, and cpu_addr and +dma_handle are the values pci_pool_alloc returned. This function +may be called in interrupt context. + +Destroy a pci_pool by calling: + + pci_pool_destroy(pool); + +Make sure you've called pci_pool_free for all memory allocated +from a pool before you destroy the pool. This function may not +be called in interrupt context. + + DMA Direction + +The interfaces described in subsequent portions of this document +take a DMA direction argument, which is an integer and takes on +one of the following values: + + PCI_DMA_BIDIRECTIONAL + PCI_DMA_TODEVICE + PCI_DMA_FROMDEVICE + PCI_DMA_NONE + +One should provide the exact DMA direction if you know it. + +PCI_DMA_TODEVICE means "from main memory to the PCI device" +PCI_DMA_FROMDEVICE means "from the PCI device to main memory" +It is the direction in which the data moves during the DMA +transfer. + +You are _strongly_ encouraged to specify this as precisely +as you possibly can. + +If you absolutely cannot know the direction of the DMA transfer, +specify PCI_DMA_BIDIRECTIONAL. It means that the DMA can go in +either direction. The platform guarantees that you may legally +specify this, and that it will work, but this may be at the +cost of performance for example. + +The value PCI_DMA_NONE is to be used for debugging. One can +hold this in a data structure before you come to know the +precise direction, and this will help catch cases where your +direction tracking logic has failed to set things up properly. + +Another advantage of specifying this value precisely (outside of +potential platform-specific optimizations of such) is for debugging. +Some platforms actually have a write permission boolean which DMA +mappings can be marked with, much like page protections in the user +program address space. Such platforms can and do report errors in the +kernel logs when the PCI controller hardware detects violation of the +permission setting. + +Only streaming mappings specify a direction, consistent mappings +implicitly have a direction attribute setting of +PCI_DMA_BIDIRECTIONAL. + +The SCSI subsystem provides mechanisms for you to easily obtain +the direction to use, in the SCSI command: + + scsi_to_pci_dma_dir(SCSI_DIRECTION) + +Where SCSI_DIRECTION is obtained from the 'sc_data_direction' +member of the SCSI command your driver is working on. The +mentioned interface above returns a value suitable for passing +into the streaming DMA mapping interfaces below. + +For Networking drivers, it's a rather simple affair. For transmit +packets, map/unmap them with the PCI_DMA_TODEVICE direction +specifier. For receive packets, just the opposite, map/unmap them +with the PCI_DMA_FROMDEVICE direction specifier. + + Using Streaming DMA mappings + +The streaming DMA mapping routines can be called from interrupt +context. There are two versions of each map/unmap, one which will +map/unmap a single memory region, and one which will map/unmap a +scatterlist. + +To map a single region, you do: + + struct pci_dev *pdev = mydev->pdev; + dma_addr_t dma_handle; + void *addr = buffer->ptr; + size_t size = buffer->len; + + dma_handle = pci_map_single(dev, addr, size, direction); + +and to unmap it: + + pci_unmap_single(dev, dma_handle, size, direction); + +You should call pci_unmap_single when the DMA activity is finished, e.g. +from the interrupt which told you that the DMA transfer is done. + +Using cpu pointers like this for single mappings has a disadvantage, +you cannot reference HIGHMEM memory in this way. Thus, there is a +map/unmap interface pair akin to pci_{map,unmap}_single. These +interfaces deal with page/offset pairs instead of cpu pointers. +Specifically: + + struct pci_dev *pdev = mydev->pdev; + dma_addr_t dma_handle; + struct page *page = buffer->page; + unsigned long offset = buffer->offset; + size_t size = buffer->len; + + dma_handle = pci_map_page(dev, page, offset, size, direction); + + ... + + pci_unmap_page(dev, dma_handle, size, direction); + +Here, "offset" means byte offset within the given page. + +With scatterlists, you map a region gathered from several regions by: + + int i, count = pci_map_sg(dev, sglist, nents, direction); + struct scatterlist *sg; + + for (i = 0, sg = sglist; i < count; i++, sg++) { + hw_address[i] = sg_dma_address(sg); + hw_len[i] = sg_dma_len(sg); + } + +where nents is the number of entries in the sglist. + +The implementation is free to merge several consecutive sglist entries +into one (e.g. if DMA mapping is done with PAGE_SIZE granularity, any +consecutive sglist entries can be merged into one provided the first one +ends and the second one starts on a page boundary - in fact this is a huge +advantage for cards which either cannot do scatter-gather or have very +limited number of scatter-gather entries) and returns the actual number +of sg entries it mapped them to. On failure 0 is returned. + +Then you should loop count times (note: this can be less than nents times) +and use sg_dma_address() and sg_dma_len() macros where you previously +accessed sg->address and sg->length as shown above. + +To unmap a scatterlist, just call: + + pci_unmap_sg(dev, sglist, nents, direction); + +Again, make sure DMA activity has already finished. + +PLEASE NOTE: The 'nents' argument to the pci_unmap_sg call must be + the _same_ one you passed into the pci_map_sg call, + it should _NOT_ be the 'count' value _returned_ from the + pci_map_sg call. + +Every pci_map_{single,sg} call should have its pci_unmap_{single,sg} +counterpart, because the bus address space is a shared resource (although +in some ports the mapping is per each BUS so less devices contend for the +same bus address space) and you could render the machine unusable by eating +all bus addresses. + +If you need to use the same streaming DMA region multiple times and touch +the data in between the DMA transfers, the buffer needs to be synced +properly in order for the cpu and device to see the most uptodate and +correct copy of the DMA buffer. + +So, firstly, just map it with pci_map_{single,sg}, and after each DMA +transfer call either: + + pci_dma_sync_single_for_cpu(dev, dma_handle, size, direction); + +or: + + pci_dma_sync_sg_for_cpu(dev, sglist, nents, direction); + +as appropriate. + +Then, if you wish to let the device get at the DMA area again, +finish accessing the data with the cpu, and then before actually +giving the buffer to the hardware call either: + + pci_dma_sync_single_for_device(dev, dma_handle, size, direction); + +or: + + pci_dma_sync_sg_for_device(dev, sglist, nents, direction); + +as appropriate. + +After the last DMA transfer call one of the DMA unmap routines +pci_unmap_{single,sg}. If you don't touch the data from the first pci_map_* +call till pci_unmap_*, then you don't have to call the pci_dma_sync_* +routines at all. + +Here is pseudo code which shows a situation in which you would need +to use the pci_dma_sync_*() interfaces. + + my_card_setup_receive_buffer(struct my_card *cp, char *buffer, int len) + { + dma_addr_t mapping; + + mapping = pci_map_single(cp->pdev, buffer, len, PCI_DMA_FROMDEVICE); + + cp->rx_buf = buffer; + cp->rx_len = len; + cp->rx_dma = mapping; + + give_rx_buf_to_card(cp); + } + + ... + + my_card_interrupt_handler(int irq, void *devid, struct pt_regs *regs) + { + struct my_card *cp = devid; + + ... + if (read_card_status(cp) == RX_BUF_TRANSFERRED) { + struct my_card_header *hp; + + /* Examine the header to see if we wish + * to accept the data. But synchronize + * the DMA transfer with the CPU first + * so that we see updated contents. + */ + pci_dma_sync_single_for_cpu(cp->pdev, cp->rx_dma, + cp->rx_len, + PCI_DMA_FROMDEVICE); + + /* Now it is safe to examine the buffer. */ + hp = (struct my_card_header *) cp->rx_buf; + if (header_is_ok(hp)) { + pci_unmap_single(cp->pdev, cp->rx_dma, cp->rx_len, + PCI_DMA_FROMDEVICE); + pass_to_upper_layers(cp->rx_buf); + make_and_setup_new_rx_buf(cp); + } else { + /* Just sync the buffer and give it back + * to the card. + */ + pci_dma_sync_single_for_device(cp->pdev, + cp->rx_dma, + cp->rx_len, + PCI_DMA_FROMDEVICE); + give_rx_buf_to_card(cp); + } + } + } + +Drivers converted fully to this interface should not use virt_to_bus any +longer, nor should they use bus_to_virt. Some drivers have to be changed a +little bit, because there is no longer an equivalent to bus_to_virt in the +dynamic DMA mapping scheme - you have to always store the DMA addresses +returned by the pci_alloc_consistent, pci_pool_alloc, and pci_map_single +calls (pci_map_sg stores them in the scatterlist itself if the platform +supports dynamic DMA mapping in hardware) in your driver structures and/or +in the card registers. + +All PCI drivers should be using these interfaces with no exceptions. +It is planned to completely remove virt_to_bus() and bus_to_virt() as +they are entirely deprecated. Some ports already do not provide these +as it is impossible to correctly support them. + + 64-bit DMA and DAC cycle support + +Do you understand all of the text above? Great, then you already +know how to use 64-bit DMA addressing under Linux. Simply make +the appropriate pci_set_dma_mask() calls based upon your cards +capabilities, then use the mapping APIs above. + +It is that simple. + +Well, not for some odd devices. See the next section for information +about that. + + DAC Addressing for Address Space Hungry Devices + +There exists a class of devices which do not mesh well with the PCI +DMA mapping API. By definition these "mappings" are a finite +resource. The number of total available mappings per bus is platform +specific, but there will always be a reasonable amount. + +What is "reasonable"? Reasonable means that networking and block I/O +devices need not worry about using too many mappings. + +As an example of a problematic device, consider compute cluster cards. +They can potentially need to access gigabytes of memory at once via +DMA. Dynamic mappings are unsuitable for this kind of access pattern. + +To this end we've provided a small API by which a device driver +may use DAC cycles to directly address all of physical memory. +Not all platforms support this, but most do. It is easy to determine +whether the platform will work properly at probe time. + +First, understand that there may be a SEVERE performance penalty for +using these interfaces on some platforms. Therefore, you MUST only +use these interfaces if it is absolutely required. %99 of devices can +use the normal APIs without any problems. + +Note that for streaming type mappings you must either use these +interfaces, or the dynamic mapping interfaces above. You may not mix +usage of both for the same device. Such an act is illegal and is +guaranteed to put a banana in your tailpipe. + +However, consistent mappings may in fact be used in conjunction with +these interfaces. Remember that, as defined, consistent mappings are +always going to be SAC addressable. + +The first thing your driver needs to do is query the PCI platform +layer with your devices DAC addressing capabilities: + + int pci_dac_set_dma_mask(struct pci_dev *pdev, u64 mask); + +This routine behaves identically to pci_set_dma_mask. You may not +use the following interfaces if this routine fails. + +Next, DMA addresses using this API are kept track of using the +dma64_addr_t type. It is guaranteed to be big enough to hold any +DAC address the platform layer will give to you from the following +routines. If you have consistent mappings as well, you still +use plain dma_addr_t to keep track of those. + +All mappings obtained here will be direct. The mappings are not +translated, and this is the purpose of this dialect of the DMA API. + +All routines work with page/offset pairs. This is the _ONLY_ way to +portably refer to any piece of memory. If you have a cpu pointer +(which may be validly DMA'd too) you may easily obtain the page +and offset using something like this: + + struct page *page = virt_to_page(ptr); + unsigned long offset = offset_in_page(ptr); + +Here are the interfaces: + + dma64_addr_t pci_dac_page_to_dma(struct pci_dev *pdev, + struct page *page, + unsigned long offset, + int direction); + +The DAC address for the tuple PAGE/OFFSET are returned. The direction +argument is the same as for pci_{map,unmap}_single(). The same rules +for cpu/device access apply here as for the streaming mapping +interfaces. To reiterate: + + The cpu may touch the buffer before pci_dac_page_to_dma. + The device may touch the buffer after pci_dac_page_to_dma + is made, but the cpu may NOT. + +When the DMA transfer is complete, invoke: + + void pci_dac_dma_sync_single_for_cpu(struct pci_dev *pdev, + dma64_addr_t dma_addr, + size_t len, int direction); + +This must be done before the CPU looks at the buffer again. +This interface behaves identically to pci_dma_sync_{single,sg}_for_cpu(). + +And likewise, if you wish to let the device get back at the buffer after +the cpu has read/written it, invoke: + + void pci_dac_dma_sync_single_for_device(struct pci_dev *pdev, + dma64_addr_t dma_addr, + size_t len, int direction); + +before letting the device access the DMA area again. + +If you need to get back to the PAGE/OFFSET tuple from a dma64_addr_t +the following interfaces are provided: + + struct page *pci_dac_dma_to_page(struct pci_dev *pdev, + dma64_addr_t dma_addr); + unsigned long pci_dac_dma_to_offset(struct pci_dev *pdev, + dma64_addr_t dma_addr); + +This is possible with the DAC interfaces purely because they are +not translated in any way. + + Optimizing Unmap State Space Consumption + +On many platforms, pci_unmap_{single,page}() is simply a nop. +Therefore, keeping track of the mapping address and length is a waste +of space. Instead of filling your drivers up with ifdefs and the like +to "work around" this (which would defeat the whole purpose of a +portable API) the following facilities are provided. + +Actually, instead of describing the macros one by one, we'll +transform some example code. + +1) Use DECLARE_PCI_UNMAP_{ADDR,LEN} in state saving structures. + Example, before: + + struct ring_state { + struct sk_buff *skb; + dma_addr_t mapping; + __u32 len; + }; + + after: + + struct ring_state { + struct sk_buff *skb; + DECLARE_PCI_UNMAP_ADDR(mapping) + DECLARE_PCI_UNMAP_LEN(len) + }; + + NOTE: DO NOT put a semicolon at the end of the DECLARE_*() + macro. + +2) Use pci_unmap_{addr,len}_set to set these values. + Example, before: + + ringp->mapping = FOO; + ringp->len = BAR; + + after: + + pci_unmap_addr_set(ringp, mapping, FOO); + pci_unmap_len_set(ringp, len, BAR); + +3) Use pci_unmap_{addr,len} to access these values. + Example, before: + + pci_unmap_single(pdev, ringp->mapping, ringp->len, + PCI_DMA_FROMDEVICE); + + after: + + pci_unmap_single(pdev, + pci_unmap_addr(ringp, mapping), + pci_unmap_len(ringp, len), + PCI_DMA_FROMDEVICE); + +It really should be self-explanatory. We treat the ADDR and LEN +separately, because it is possible for an implementation to only +need the address in order to perform the unmap operation. + + Platform Issues + +If you are just writing drivers for Linux and do not maintain +an architecture port for the kernel, you can safely skip down +to "Closing". + +1) Struct scatterlist requirements. + + Struct scatterlist must contain, at a minimum, the following + members: + + struct page *page; + unsigned int offset; + unsigned int length; + + The base address is specified by a "page+offset" pair. + + Previous versions of struct scatterlist contained a "void *address" + field that was sometimes used instead of page+offset. As of Linux + 2.5., page+offset is always used, and the "address" field has been + deleted. + +2) More to come... + + Handling Errors + +DMA address space is limited on some architectures and an allocation +failure can be determined by: + +- checking if pci_alloc_consistent returns NULL or pci_map_sg returns 0 + +- checking the returned dma_addr_t of pci_map_single and pci_map_page + by using pci_dma_mapping_error(): + + dma_addr_t dma_handle; + + dma_handle = pci_map_single(dev, addr, size, direction); + if (pci_dma_mapping_error(dma_handle)) { + /* + * reduce current DMA mapping usage, + * delay and try again later or + * reset driver. + */ + } + + Closing + +This document, and the API itself, would not be in it's current +form without the feedback and suggestions from numerous individuals. +We would like to specifically mention, in no particular order, the +following people: + + Russell King + Leo Dagum + Ralf Baechle + Grant Grundler + Jay Estabrook + Thomas Sailer + Andrea Arcangeli + Jens Axboe + David Mosberger-Tang diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile new file mode 100644 index 000000000000..a221039ee4c9 --- /dev/null +++ b/Documentation/DocBook/Makefile @@ -0,0 +1,195 @@ +### +# This makefile is used to generate the kernel documentation, +# primarily based on in-line comments in various source files. +# See Documentation/kernel-doc-nano-HOWTO.txt for instruction in how +# to ducument the SRC - and how to read it. +# To add a new book the only step required is to add the book to the +# list of DOCBOOKS. + +DOCBOOKS := wanbook.xml z8530book.xml mcabook.xml videobook.xml \ + kernel-hacking.xml kernel-locking.xml via-audio.xml \ + deviceiobook.xml procfs-guide.xml tulip-user.xml \ + writing_usb_driver.xml scsidrivers.xml sis900.xml \ + kernel-api.xml journal-api.xml lsm.xml usb.xml \ + gadget.xml libata.xml mtdnand.xml librs.xml + +### +# The build process is as follows (targets): +# (xmldocs) +# file.tmpl --> file.xml +--> file.ps (psdocs) +# +--> file.pdf (pdfdocs) +# +--> DIR=file (htmldocs) +# +--> man/ (mandocs) + +### +# The targets that may be used. +.PHONY: xmldocs sgmldocs psdocs pdfdocs htmldocs mandocs installmandocs + +BOOKS := $(addprefix $(obj)/,$(DOCBOOKS)) +xmldocs: $(BOOKS) +sgmldocs: xmldocs + +PS := $(patsubst %.xml, %.ps, $(BOOKS)) +psdocs: $(PS) + +PDF := $(patsubst %.xml, %.pdf, $(BOOKS)) +pdfdocs: $(PDF) + +HTML := $(patsubst %.xml, %.html, $(BOOKS)) +htmldocs: $(HTML) + +MAN := $(patsubst %.xml, %.9, $(BOOKS)) +mandocs: $(MAN) + +installmandocs: mandocs + $(MAKEMAN) install Documentation/DocBook/man + +### +#External programs used +KERNELDOC = scripts/kernel-doc +DOCPROC = scripts/basic/docproc +SPLITMAN = $(PERL) $(srctree)/scripts/split-man +MAKEMAN = $(PERL) $(srctree)/scripts/makeman + +### +# DOCPROC is used for two purposes: +# 1) To generate a dependency list for a .tmpl file +# 2) To preprocess a .tmpl file and call kernel-doc with +# appropriate parameters. +# The following rules are used to generate the .xml documentation +# required to generate the final targets. (ps, pdf, html). +quiet_cmd_docproc = DOCPROC $@ + cmd_docproc = SRCTREE=$(srctree)/ $(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 $<`; \ + ) > $(dir $@).$(notdir $@).cmd +endef + +%.xml: %.tmpl FORCE + $(call if_changed_rule,docproc) + +### +#Read in all saved dependency files +cmd_files := $(wildcard $(foreach f,$(BOOKS),$(dir $(f)).$(notdir $(f)).cmd)) + +ifneq ($(cmd_files),) + include $(cmd_files) +endif + +### +# Changes in kernel-doc force a rebuild of all documentation +$(BOOKS): $(KERNELDOC) + +### +# procfs guide uses a .c file as example code. +# This requires an explicit dependency +C-procfs-example = procfs_example.xml +C-procfs-example2 = $(addprefix $(obj)/,$(C-procfs-example)) +$(obj)/procfs-guide.xml: $(C-procfs-example2) + +### +# Rules to generate postscript, PDF and HTML +# db2html creates a directory. Generate a html file used for timestamp + +quiet_cmd_db2ps = DB2PS $@ + cmd_db2ps = db2ps -o $(dir $@) $< +%.ps : %.xml + @(which db2ps > /dev/null 2>&1) || \ + (echo "*** You need to install DocBook stylesheets ***"; \ + exit 1) + $(call cmd,db2ps) + +quiet_cmd_db2pdf = DB2PDF $@ + cmd_db2pdf = db2pdf -o $(dir $@) $< +%.pdf : %.xml + @(which db2pdf > /dev/null 2>&1) || \ + (echo "*** You need to install DocBook stylesheets ***"; \ + exit 1) + $(call cmd,db2pdf) + +quiet_cmd_db2html = DB2HTML $@ + cmd_db2html = db2html -o $(patsubst %.html,%,$@) $< && \ + echo ' \ + Goto $(patsubst %.html,%,$(notdir $@))

' > $@ + +%.html: %.xml + @(which db2html > /dev/null 2>&1) || \ + (echo "*** You need to install DocBook stylesheets ***"; \ + exit 1) + @rm -rf $@ $(patsubst %.html,%,$@) + $(call cmd,db2html) + @if [ ! -z "$(PNG-$(basename $(notdir $@)))" ]; then \ + cp $(PNG-$(basename $(notdir $@))) $(patsubst %.html,%,$@); fi + +### +# Rule to generate man files - output is placed in the man subdirectory + +%.9: %.xml +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 $< + +### +# Rules to generate postscripts and PNG imgages from .fig format files +quiet_cmd_fig2eps = FIG2EPS $@ + cmd_fig2eps = fig2dev -Leps $< $@ + +%.eps: %.fig + @(which fig2dev > /dev/null 2>&1) || \ + (echo "*** You need to install transfig ***"; \ + exit 1) + $(call cmd,fig2eps) + +quiet_cmd_fig2png = FIG2PNG $@ + cmd_fig2png = fig2dev -Lpng $< $@ + +%.png: %.fig + @(which fig2dev > /dev/null 2>&1) || \ + (echo "*** You need to install transfig ***"; \ + exit 1) + $(call cmd,fig2png) + +### +# Rule to convert a .c file to inline XML documentation +%.xml: %.c + @echo ' GEN $@' + @( \ + echo ""; \ + expand --tabs=8 < $< | \ + sed -e "s/&/\\&/g" \ + -e "s//\\>/g"; \ + echo "") > $@ + +### +# Help targets as used by the top-level makefile +dochelp: + @echo ' Linux kernel internal documentation in different formats:' + @echo ' xmldocs (XML DocBook), psdocs (Postscript), pdfdocs (PDF)' + @echo ' htmldocs (HTML), mandocs (man pages, use installmandocs to install)' + +### +# Temporary files left by various tools +clean-files := $(DOCBOOKS) \ + $(patsubst %.xml, %.dvi, $(DOCBOOKS)) \ + $(patsubst %.xml, %.aux, $(DOCBOOKS)) \ + $(patsubst %.xml, %.tex, $(DOCBOOKS)) \ + $(patsubst %.xml, %.log, $(DOCBOOKS)) \ + $(patsubst %.xml, %.out, $(DOCBOOKS)) \ + $(patsubst %.xml, %.ps, $(DOCBOOKS)) \ + $(patsubst %.xml, %.pdf, $(DOCBOOKS)) \ + $(patsubst %.xml, %.html, $(DOCBOOKS)) \ + $(patsubst %.xml, %.9, $(DOCBOOKS)) \ + $(C-procfs-example) + +clean-dirs := $(patsubst %.xml,%,$(DOCBOOKS)) + +#man put files in man subdir - traverse down +subdir- := man/ diff --git a/Documentation/DocBook/deviceiobook.tmpl b/Documentation/DocBook/deviceiobook.tmpl new file mode 100644 index 000000000000..6f41f2f5c6f6 --- /dev/null +++ b/Documentation/DocBook/deviceiobook.tmpl @@ -0,0 +1,341 @@ + + + + + + Bus-Independent Device Accesses + + + + Matthew + Wilcox + +

+ matthew@wil.cx +
+ + + + + + + Alan + Cox + +
+ alan@redhat.com +
+
+
+
+ + + 2001 + Matthew Wilcox + + + + + 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 + + Linux provides an API which abstracts performing IO across all busses + and devices, allowing device drivers to be written independently of + bus type. + + + + + Known Bugs And Assumptions + + None. + + + + + Memory Mapped IO + + Getting Access to the Device + + The most widely supported form of IO is memory mapped IO. + That is, a part of the CPU's address space is interpreted + not as accesses to memory, but as accesses to a device. Some + architectures define devices to be at a fixed address, but most + have some method of discovering devices. The PCI bus walk is a + good example of such a scheme. This document does not cover how + to receive such an address, but assumes you are starting with one. + Physical addresses are of type unsigned long. + + + + This address should not be used directly. Instead, to get an + address suitable for passing to the accessor functions described + below, you should call ioremap. + An address suitable for accessing the device will be returned to you. + + + + After you've finished using the device (say, in your module's + exit routine), call iounmap in order to return + the address space to the kernel. Most architectures allocate new + address space each time you call ioremap, and + they can run out unless you call iounmap. + + + + + Accessing the device + + The part of the interface most used by drivers is reading and + writing memory-mapped registers on the device. Linux provides + interfaces to read and write 8-bit, 16-bit, 32-bit and 64-bit + quantities. Due to a historical accident, these are named byte, + word, long and quad accesses. Both read and write accesses are + supported; there is no prefetch support at this time. + + + + The functions are named readb, + readw, readl, + readq, readb_relaxed, + readw_relaxed, readl_relaxed, + readq_relaxed, writeb, + writew, writel and + writeq. + + + + Some devices (such as framebuffers) would like to use larger + transfers than 8 bytes at a time. For these devices, the + memcpy_toio, memcpy_fromio + and memset_io functions are provided. + Do not use memset or memcpy on IO addresses; they + are not guaranteed to copy data in order. + + + + The read and write functions are defined to be ordered. That is the + 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. + + + + While the basic functions are defined to be synchronous with respect + to each other and ordered with respect to each other the busses the + devices sit on may themselves have asynchronicity. In particular many + authors are burned by the fact that PCI bus writes are posted + 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 + + + + + PCI ordering rules also guarantee that PIO read responses arrive + after any outstanding DMA writes from 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. + + + + + ISA legacy functions + + On older kernels (2.2 and earlier) the ISA bus could be read or + written with these functions and without ioremap being used. This is + no longer true in Linux 2.4. A set of equivalent functions exist for + easy legacy driver porting. The functions available are prefixed + with 'isa_' and are isa_readb, + isa_writeb, isa_readw, + isa_writew, isa_readl, + isa_writel, isa_memcpy_fromio + and isa_memcpy_toio + + + These functions should not be used in new drivers, and will + eventually be going away. + + + + + + + Port Space Accesses + + Port Space Explained + + + Another form of IO commonly supported is Port Space. This is a + range of addresses separate to the normal memory address space. + Access to these addresses is generally not as fast as accesses + to the memory mapped addresses, and it also has a potentially + smaller address space. + + + + Unlike memory mapped IO, no preparation is required + to access port space. + + + + + Accessing Port Space + + Accesses to this space are provided through a set of functions + which allow 8-bit, 16-bit and 32-bit accesses; also + known as byte, word and long. These functions are + inb, inw, + inl, outb, + outw and outl. + + + + Some variants are provided for these functions. Some devices + require that accesses to their ports are slowed down. This + functionality is provided by appending a _p + to the end of the function. There are also equivalents to memcpy. + The ins and outs + functions copy bytes, words or longs to the given port. + + + + + + + Public Functions Provided +!Einclude/asm-i386/io.h + + + diff --git a/Documentation/DocBook/gadget.tmpl b/Documentation/DocBook/gadget.tmpl new file mode 100644 index 000000000000..a34442436128 --- /dev/null +++ b/Documentation/DocBook/gadget.tmpl @@ -0,0 +1,752 @@ + + + + + + USB Gadget API for Linux + 20 August 2004 + 20 August 2004 + + + + 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. + + + + 2003-2004 + David Brownell + + + + David + Brownell + +
dbrownell@users.sourceforge.net
+
+
+
+ + + +Introduction + +This document presents a Linux-USB "Gadget" +kernel mode +API, for use within peripherals and other USB devices +that embed Linux. +It provides an overview of the API structure, +and shows how that fits into a system development project. +This is the first such API released on Linux to address +a number of important problems, including: + + + Supports USB 2.0, for high speed devices which + can stream data at several dozen megabytes per second. + + Handles devices with dozens of endpoints just as + well as ones with just two fixed-function ones. Gadget drivers + can be written so they're easy to port to new hardware. + + Flexible enough to expose more complex USB device + capabilities such as multiple configurations, multiple interfaces, + composite devices, + and alternate interface settings. + + USB "On-The-Go" (OTG) support, in conjunction + with updates to the Linux-USB host side. + + Sharing data structures and API models with the + Linux-USB host side API. This helps the OTG support, and + looks forward to more-symmetric frameworks (where the same + I/O model is used by both host and device side drivers). + + Minimalist, so it's easier to support new device + controller hardware. I/O processing doesn't imply large + demands for memory or CPU resources. + + + + +Most Linux developers will not be able to use this API, since they +have USB "host" hardware in a PC, workstation, or server. +Linux users with embedded systems are more likely to +have USB peripheral hardware. +To distinguish drivers running inside such hardware from the +more familiar Linux "USB device drivers", +which are host side proxies for the real USB devices, +a different term is used: +the drivers inside the peripherals are "USB gadget drivers". +In USB protocol interactions, the device driver is the master +(or "client driver") +and the gadget driver is the slave (or "function driver"). + + +The gadget API resembles the host side Linux-USB API in that both +use queues of request objects to package I/O buffers, and those requests +may be submitted or canceled. +They share common definitions for the standard USB +Chapter 9 messages, structures, and constants. +Also, both APIs bind and unbind drivers to devices. +The APIs differ in detail, since the host side's current +URB framework exposes a number of implementation details +and assumptions that are inappropriate for a gadget API. +While the model for control transfers and configuration +management is necessarily different (one side is a hardware-neutral master, +the other is a hardware-aware slave), the endpoint I/0 API used here +should also be usable for an overhead-reduced host side API. + + + + +Structure of Gadget Drivers + +A system running inside a USB peripheral +normally has at least three layers inside the kernel to handle +USB protocol processing, and may have additional layers in +user space code. +The "gadget" API is used by the middle layer to interact +with the lowest level (which directly handles hardware). + + +In Linux, from the bottom up, these layers are: + + + + + + USB Controller Driver + + + This is the lowest software level. + It is the only layer that talks to hardware, + through registers, fifos, dma, irqs, and the like. + The <linux/usb_gadget.h> API abstracts + the peripheral controller endpoint hardware. + That hardware is exposed through endpoint objects, which accept + streams of IN/OUT buffers, and through callbacks that interact + with gadget drivers. + Since normal USB devices only have one upstream + port, they only have one of these drivers. + The controller driver can support any number of different + gadget drivers, but only one of them can be used at a time. + + + Examples of such controller hardware include + the PCI-based NetChip 2280 USB 2.0 high speed controller, + the SA-11x0 or PXA-25x UDC (found within many PDAs), + and a variety of other products. + + + + + + Gadget Driver + + + The lower boundary of this driver implements hardware-neutral + USB functions, using calls to the controller driver. + Because such hardware varies widely in capabilities and restrictions, + and is used in embedded environments where space is at a premium, + the gadget driver is often configured at compile time + to work with endpoints supported by one particular controller. + Gadget drivers may be portable to several different controllers, + using conditional compilation. + (Recent kernels substantially simplify the work involved in + supporting new hardware, by autoconfiguring + endpoints automatically for many bulk-oriented drivers.) + Gadget driver responsibilities include: + + + handling setup requests (ep0 protocol responses) + possibly including class-specific functionality + + returning configuration and string descriptors + + (re)setting configurations and interface + altsettings, including enabling and configuring endpoints + + handling life cycle events, such as managing + bindings to hardware, + USB suspend/resume, remote wakeup, + and disconnection from the USB host. + + managing IN and OUT transfers on all currently + enabled endpoints + + + + + Such drivers may be modules of proprietary code, although + that approach is discouraged in the Linux community. + + + + + Upper Level + + + Most gadget drivers have an upper boundary that connects + to some Linux driver or framework in Linux. + Through that boundary flows the data which the gadget driver + produces and/or consumes through protocol transfers over USB. + Examples include: + + + user mode code, using generic (gadgetfs) + or application specific files in + /dev + + networking subsystem (for network gadgets, + like the CDC Ethernet Model gadget driver) + + data capture drivers, perhaps video4Linux or + a scanner driver; or test and measurement hardware. + + input subsystem (for HID gadgets) + + sound subsystem (for audio gadgets) + + file system (for PTP gadgets) + + block i/o subsystem (for usb-storage gadgets) + + ... and more + + + + + Additional Layers + + + Other layers may exist. + These could include kernel layers, such as network protocol stacks, + as well as user mode applications building on standard POSIX + system call APIs such as + open(), close(), + read() and write(). + On newer systems, POSIX Async I/O calls may be an option. + Such user mode code will not necessarily be subject to + the GNU General Public License (GPL). + + + + + + +OTG-capable systems will also need to include a standard Linux-USB +host side stack, +with usbcore, +one or more Host Controller Drivers (HCDs), +USB Device Drivers to support +the OTG "Targeted Peripheral List", +and so forth. +There will also be an OTG Controller Driver, +which is visible to gadget and device driver developers only indirectly. +That helps the host and device side USB controllers implement the +two new OTG protocols (HNP and SRP). +Roles switch (host to peripheral, or vice versa) using HNP +during USB suspend processing, and SRP can be viewed as a +more battery-friendly kind of device wakeup protocol. + + +Over time, reusable utilities are evolving to help make some +gadget driver tasks simpler. +For example, building configuration descriptors from vectors of +descriptors for the configurations interfaces and endpoints is +now automated, and many drivers now use autoconfiguration to +choose hardware endpoints and initialize their descriptors. + +A potential example of particular interest +is code implementing standard USB-IF protocols for +HID, networking, storage, or audio classes. +Some developers are interested in KDB or KGDB hooks, to let +target hardware be remotely debugged. +Most such USB protocol code doesn't need to be hardware-specific, +any more than network protocols like X11, HTTP, or NFS are. +Such gadget-side interface drivers should eventually be combined, +to implement composite devices. + + + + + +Kernel Mode Gadget API + +Gadget drivers declare themselves through a +struct usb_gadget_driver, which is responsible for +most parts of enumeration for a struct usb_gadget. +The response to a set_configuration usually involves +enabling one or more of the struct usb_ep objects +exposed by the gadget, and submitting one or more +struct usb_request buffers to transfer data. +Understand those four data types, and their operations, and +you will understand how this API works. + + +Incomplete Data Type Descriptions + +This documentation was prepared using the standard Linux +kernel docproc tool, which turns text +and in-code comments into SGML DocBook and then into usable +formats such as HTML or PDF. +Other than the "Chapter 9" data types, most of the significant +data types and functions are described here. + + +However, docproc does not understand all the C constructs +that are used, so some relevant information is likely omitted from +what you are reading. +One example of such information is endpoint autoconfiguration. +You'll have to read the header file, and use example source +code (such as that for "Gadget Zero"), to fully understand the API. + + +The part of the API implementing some basic +driver capabilities is specific to the version of the +Linux kernel that's in use. +The 2.6 kernel includes a driver model +framework that has no analogue on earlier kernels; +so those parts of the gadget API are not fully portable. +(They are implemented on 2.4 kernels, but in a different way.) +The driver model state is another part of this API that is +ignored by the kerneldoc tools. + + + +The core API does not expose +every possible hardware feature, only the most widely available ones. +There are significant hardware features, such as device-to-device DMA +(without temporary storage in a memory buffer) +that would be added using hardware-specific APIs. + + +This API allows drivers to use conditional compilation to handle +endpoint capabilities of different hardware, but doesn't require that. +Hardware tends to have arbitrary restrictions, relating to +transfer types, addressing, packet sizes, buffering, and availability. +As a rule, such differences only matter for "endpoint zero" logic +that handles device configuration and management. +The API supports limited run-time +detection of capabilities, through naming conventions for endpoints. +Many drivers will be able to at least partially autoconfigure +themselves. +In particular, driver init sections will often have endpoint +autoconfiguration logic that scans the hardware's list of endpoints +to find ones matching the driver requirements +(relying on those conventions), to eliminate some of the most +common reasons for conditional compilation. + + +Like the Linux-USB host side API, this API exposes +the "chunky" nature of USB messages: I/O requests are in terms +of one or more "packets", and packet boundaries are visible to drivers. +Compared to RS-232 serial protocols, USB resembles +synchronous protocols like HDLC +(N bytes per frame, multipoint addressing, host as the primary +station and devices as secondary stations) +more than asynchronous ones +(tty style: 8 data bits per frame, no parity, one stop bit). +So for example the controller drivers won't buffer +two single byte writes into a single two-byte USB IN packet, +although gadget drivers may do so when they implement +protocols where packet boundaries (and "short packets") +are not significant. + + +Driver Life Cycle + +Gadget drivers make endpoint I/O requests to hardware without +needing to know many details of the hardware, but driver +setup/configuration code needs to handle some differences. +Use the API like this: + + + + +Register a driver for the particular device side +usb controller hardware, +such as the net2280 on PCI (USB 2.0), +sa11x0 or pxa25x as found in Linux PDAs, +and so on. +At this point the device is logically in the USB ch9 initial state +("attached"), drawing no power and not usable +(since it does not yet support enumeration). +Any host should not see the device, since it's not +activated the data line pullup used by the host to +detect a device, even if VBUS power is available. + + +Register a gadget driver that implements some higher level +device function. That will then bind() to a usb_gadget, which +activates the data line pullup sometime after detecting VBUS. + + +The hardware driver can now start enumerating. +The steps it handles are to accept USB power and set_address requests. +Other steps are handled by the gadget driver. +If the gadget driver module is unloaded before the host starts to +enumerate, steps before step 7 are skipped. + + +The gadget driver's setup() call returns usb descriptors, +based both on what the bus interface hardware provides and on the +functionality being implemented. +That can involve alternate settings or configurations, +unless the hardware prevents such operation. +For OTG devices, each configuration descriptor includes +an OTG descriptor. + + +The gadget driver handles the last step of enumeration, +when the USB host issues a set_configuration call. +It enables all endpoints used in that configuration, +with all interfaces in their default settings. +That involves using a list of the hardware's endpoints, enabling each +endpoint according to its descriptor. +It may also involve using usb_gadget_vbus_draw +to let more power be drawn from VBUS, as allowed by that configuration. +For OTG devices, setting a configuration may also involve reporting +HNP capabilities through a user interface. + + +Do real work and perform data transfers, possibly involving +changes to interface settings or switching to new configurations, until the +device is disconnect()ed from the host. +Queue any number of transfer requests to each endpoint. +It may be suspended and resumed several times before being disconnected. +On disconnect, the drivers go back to step 3 (above). + + +When the gadget driver module is being unloaded, +the driver unbind() callback is issued. That lets the controller +driver be unloaded. + + + + +Drivers will normally be arranged so that just loading the +gadget driver module (or statically linking it into a Linux kernel) +allows the peripheral device to be enumerated, but some drivers +will defer enumeration until some higher level component (like +a user mode daemon) enables it. +Note that at this lowest level there are no policies about how +ep0 configuration logic is implemented, +except that it should obey USB specifications. +Such issues are in the domain of gadget drivers, +including knowing about implementation constraints +imposed by some USB controllers +or understanding that composite devices might happen to +be built by integrating reusable components. + + +Note that the lifecycle above can be slightly different +for OTG devices. +Other than providing an additional OTG descriptor in each +configuration, only the HNP-related differences are particularly +visible to driver code. +They involve reporting requirements during the SET_CONFIGURATION +request, and the option to invoke HNP during some suspend callbacks. +Also, SRP changes the semantics of +usb_gadget_wakeup +slightly. + + + + +USB 2.0 Chapter 9 Types and Constants + +Gadget drivers +rely on common USB structures and constants +defined in the +<linux/usb_ch9.h> +header file, which is standard in Linux 2.6 kernels. +These are the same types and constants used by host +side drivers (and usbcore). + + +!Iinclude/linux/usb_ch9.h + + +Core Objects and Methods + +These are declared in +<linux/usb_gadget.h>, +and are used by gadget drivers to interact with +USB peripheral controller drivers. + + + + +!Iinclude/linux/usb_gadget.h + + +Optional Utilities + +The core API is sufficient for writing a USB Gadget Driver, +but some optional utilities are provided to simplify common tasks. +These utilities include endpoint autoconfiguration. + + +!Edrivers/usb/gadget/usbstring.c +!Edrivers/usb/gadget/config.c + + + + + +Peripheral Controller Drivers + +The first hardware supporting this API was the NetChip 2280 +controller, which supports USB 2.0 high speed and is based on PCI. +This is the net2280 driver module. +The driver supports Linux kernel versions 2.4 and 2.6; +contact NetChip Technologies for development boards and product +information. + + +Other hardware working in the "gadget" framework includes: +Intel's PXA 25x and IXP42x series processors +(pxa2xx_udc), +Toshiba TC86c001 "Goku-S" (goku_udc), +Renesas SH7705/7727 (sh_udc), +MediaQ 11xx (mq11xx_udc), +Hynix HMS30C7202 (h7202_udc), +National 9303/4 (n9604_udc), +Texas Instruments OMAP (omap_udc), +Sharp LH7A40x (lh7a40x_udc), +and more. +Most of those are full speed controllers. + + +At this writing, there are people at work on drivers in +this framework for several other USB device controllers, +with plans to make many of them be widely available. + + + + +A partial USB simulator, +the dummy_hcd driver, is available. +It can act like a net2280, a pxa25x, or an sa11x0 in terms +of available endpoints and device speeds; and it simulates +control, bulk, and to some extent interrupt transfers. +That lets you develop some parts of a gadget driver on a normal PC, +without any special hardware, and perhaps with the assistance +of tools such as GDB running with User Mode Linux. +At least one person has expressed interest in adapting that +approach, hooking it up to a simulator for a microcontroller. +Such simulators can help debug subsystems where the runtime hardware +is unfriendly to software development, or is not yet available. + + +Support for other controllers is expected to be developed +and contributed +over time, as this driver framework evolves. + + + + +Gadget Drivers + +In addition to Gadget Zero +(used primarily for testing and development with drivers +for usb controller hardware), other gadget drivers exist. + + +There's an ethernet gadget +driver, which implements one of the most useful +Communications Device Class (CDC) models. +One of the standards for cable modem interoperability even +specifies the use of this ethernet model as one of two +mandatory options. +Gadgets using this code look to a USB host as if they're +an Ethernet adapter. +It provides access to a network where the gadget's CPU is one host, +which could easily be bridging, routing, or firewalling +access to other networks. +Since some hardware can't fully implement the CDC Ethernet +requirements, this driver also implements a "good parts only" +subset of CDC Ethernet. +(That subset doesn't advertise itself as CDC Ethernet, +to avoid creating problems.) + + +Support for Microsoft's RNDIS +protocol has been contributed by Pengutronix and Auerswald GmbH. +This is like CDC Ethernet, but it runs on more slightly USB hardware +(but less than the CDC subset). +However, its main claim to fame is being able to connect directly to +recent versions of Windows, using drivers that Microsoft bundles +and supports, making it much simpler to network with Windows. + + +There is also support for user mode gadget drivers, +using gadgetfs. +This provides a User Mode API that presents +each endpoint as a single file descriptor. I/O is done using +normal read() and read() calls. +Familiar tools like GDB and pthreads can be used to +develop and debug user mode drivers, so that once a robust +controller driver is available many applications for it +won't require new kernel mode software. +Linux 2.6 Async I/O (AIO) +support is available, so that user mode software +can stream data with only slightly more overhead +than a kernel driver. + + +There's a USB Mass Storage class driver, which provides +a different solution for interoperability with systems such +as MS-Windows and MacOS. +That File-backed Storage driver uses a +file or block device as backing store for a drive, +like the loop driver. +The USB host uses the BBB, CB, or CBI versions of the mass +storage class specification, using transparent SCSI commands +to access the data from the backing store. + + +There's a "serial line" driver, useful for TTY style +operation over USB. +The latest version of that driver supports CDC ACM style +operation, like a USB modem, and so on most hardware it can +interoperate easily with MS-Windows. +One interesting use of that driver is in boot firmware (like a BIOS), +which can sometimes use that model with very small systems without +real serial lines. + + +Support for other kinds of gadget is expected to +be developed and contributed +over time, as this driver framework evolves. + + + + +USB On-The-GO (OTG) + +USB OTG support on Linux 2.6 was initially developed +by Texas Instruments for +OMAP 16xx and 17xx +series processors. +Other OTG systems should work in similar ways, but the +hardware level details could be very different. + + +Systems need specialized hardware support to implement OTG, +notably including a special Mini-AB jack +and associated transciever to support Dual-Role +operation: +they can act either as a host, using the standard +Linux-USB host side driver stack, +or as a peripheral, using this "gadget" framework. +To do that, the system software relies on small additions +to those programming interfaces, +and on a new internal component (here called an "OTG Controller") +affecting which driver stack connects to the OTG port. +In each role, the system can re-use the existing pool of +hardware-neutral drivers, layered on top of the controller +driver interfaces (usb_bus or +usb_gadget). +Such drivers need at most minor changes, and most of the calls +added to support OTG can also benefit non-OTG products. + + + + Gadget drivers test the is_otg + flag, and use it to determine whether or not to include + an OTG descriptor in each of their configurations. + + Gadget drivers may need changes to support the + two new OTG protocols, exposed in new gadget attributes + such as b_hnp_enable flag. + HNP support should be reported through a user interface + (two LEDs could suffice), and is triggered in some cases + when the host suspends the peripheral. + SRP support can be user-initiated just like remote wakeup, + probably by pressing the same button. + + On the host side, USB device drivers need + to be taught to trigger HNP at appropriate moments, using + usb_suspend_device(). + That also conserves battery power, which is useful even + for non-OTG configurations. + + Also on the host side, a driver must support the + OTG "Targeted Peripheral List". That's just a whitelist, + used to reject peripherals not supported with a given + Linux OTG host. + This whitelist is product-specific; + each product must modify otg_whitelist.h + to match its interoperability specification. + + + Non-OTG Linux hosts, like PCs and workstations, + normally have some solution for adding drivers, so that + peripherals that aren't recognized can eventually be supported. + That approach is unreasonable for consumer products that may + never have their firmware upgraded, and where it's usually + unrealistic to expect traditional PC/workstation/server kinds + of support model to work. + For example, it's often impractical to change device firmware + once the product has been distributed, so driver bugs can't + normally be fixed if they're found after shipment. + + + + +Additional changes are needed below those hardware-neutral +usb_bus and usb_gadget +driver interfaces; those aren't discussed here in any detail. +Those affect the hardware-specific code for each USB Host or Peripheral +controller, and how the HCD initializes (since OTG can be active only +on a single port). +They also involve what may be called an OTG Controller +Driver, managing the OTG transceiver and the OTG state +machine logic as well as much of the root hub behavior for the +OTG port. +The OTG controller driver needs to activate and deactivate USB +controllers depending on the relevant device role. +Some related changes were needed inside usbcore, so that it +can identify OTG-capable devices and respond appropriately +to HNP or SRP protocols. + + + + +
+ diff --git a/Documentation/DocBook/journal-api.tmpl b/Documentation/DocBook/journal-api.tmpl new file mode 100644 index 000000000000..1ef6f43c6d8f --- /dev/null +++ b/Documentation/DocBook/journal-api.tmpl @@ -0,0 +1,333 @@ + + + + + + The Linux Journalling API + + + Roger + Gammans + +
+ rgammans@computer-surgery.co.uk +
+
+
+
+ + + + Stephen + Tweedie + +
+ sct@redhat.com +
+
+
+
+ + + 2002 + Roger Gammans + + + + + 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. + + +
+ + + + + Overview + + Details + +The journalling layer is easy to use. You need to +first of all create a journal_t data structure. There are +two calls to do this dependent on how you decide to allocate the physical +media on which the journal resides. The journal_init_inode() call +is for journals stored in filesystem inodes, or the journal_init_dev() +call can be use for journal stored on a raw device (in a continuous range +of blocks). A journal_t is a typedef for a struct pointer, so when +you are finally finished make sure you call journal_destroy() on it +to free up any used kernel memory. + + + +Once you have got your journal_t object you need to 'mount' or load the journal +file, unless of course you haven't initialised it yet - in which case you +need to call journal_create(). + + + +Most of the time however your journal file will already have been created, but +before you load it you must call journal_wipe() to empty the journal file. +Hang on, you say , what if the filesystem wasn't cleanly umount()'d . Well, it is the +job of the client file system to detect this and skip the call to journal_wipe(). + + + +In either case the next call should be to journal_load() which prepares the +journal file for use. Note that journal_wipe(..,0) calls journal_skip_recovery() +for you if it detects any outstanding transactions in the journal and similarly +journal_load() will call journal_recover() if necessary. +I would advise reading fs/ext3/super.c for examples on this stage. +[RGG: Why is the journal_wipe() call necessary - doesn't this needlessly +complicate the API. Or isn't a good idea for the journal layer to hide +dirty mounts from the client fs] + + + +Now you can go ahead and start modifying the underlying +filesystem. Almost. + + + + + +You still need to actually journal your filesystem changes, this +is done by wrapping them into transactions. Additionally you +also need to wrap the modification of each of the the buffers +with calls to the journal layer, so it knows what the modifications +you are actually making are. To do this use journal_start() which +returns a transaction handle. + + + +journal_start() +and its counterpart journal_stop(), which indicates the end of a transaction +are nestable calls, so you can reenter a transaction if necessary, +but remember you must call journal_stop() the same number of times as +journal_start() before the transaction is completed (or more accurately +leaves the the update phase). Ext3/VFS makes use of this feature to simplify +quota support. + + + +Inside each transaction you need to wrap the modifications to the +individual buffers (blocks). Before you start to modify a buffer you +need to call journal_get_{create,write,undo}_access() as appropriate, +this allows the journalling layer to copy the unmodified data if it +needs to. After all the buffer may be part of a previously uncommitted +transaction. +At this point you are at last ready to modify a buffer, and once +you are have done so you need to call journal_dirty_{meta,}data(). +Or if you've asked for access to a buffer you now know is now longer +required to be pushed back on the device you can call journal_forget() +in much the same way as you might have used bforget() in the past. + + + +A journal_flush() may be called at any time to commit and checkpoint +all your transactions. + + + +Then at umount time , in your put_super() (2.4) or write_super() (2.5) +you can then call journal_destroy() to clean up your in-core journal object. + + + + +Unfortunately there a couple of ways the journal layer can cause a deadlock. +The first thing to note is that each task can only have +a single outstanding transaction at any one time, remember nothing +commits until the outermost journal_stop(). This means +you must complete the transaction at the end of each file/inode/address +etc. operation you perform, so that the journalling system isn't re-entered +on another journal. Since transactions can't be nested/batched +across differing journals, and another filesystem other than +yours (say ext3) may be modified in a later syscall. + + + +The second case to bear in mind is that journal_start() can +block if there isn't enough space in the journal for your transaction +(based on the passed nblocks param) - when it blocks it merely(!) needs to +wait for transactions to complete and be committed from other tasks, +so essentially we are waiting for journal_stop(). So to avoid +deadlocks you must treat journal_start/stop() as if they +were semaphores and include them in your semaphore ordering rules to prevent +deadlocks. Note that journal_extend() has similar blocking behaviour to +journal_start() so you can deadlock here just as easily as on journal_start(). + + + +Try to reserve the right number of blocks the first time. ;-). This will +be the maximum number of blocks you are going to touch in this transaction. +I advise having a look at at least ext3_jbd.h to see the basis on which +ext3 uses to make these decisions. + + + +Another wriggle to watch out for is your on-disk block allocation strategy. +why? Because, if you undo a delete, you need to ensure you haven't reused any +of the freed blocks in a later transaction. One simple way of doing this +is make sure any blocks you allocate only have checkpointed transactions +listed against them. Ext3 does this in ext3_test_allocatable(). + + + +Lock is also providing through journal_{un,}lock_updates(), +ext3 uses this when it wants a window with a clean and stable fs for a moment. +eg. + + + + + journal_lock_updates() //stop new stuff happening.. + journal_flush() // checkpoint everything. + ..do stuff on stable fs + journal_unlock_updates() // carry on with filesystem use. + + + +The opportunities for abuse and DOS attacks with this should be obvious, +if you allow unprivileged userspace to trigger codepaths containing these +calls. + + + +A new feature of jbd since 2.5.25 is commit callbacks with the new +journal_callback_set() function you can now ask the journalling layer +to call you back when the transaction is finally committed to disk, so that +you can do some of your own management. The key to this is the journal_callback +struct, this maintains the internal callback information but you can +extend it like this:- + + + struct myfs_callback_s { + //Data structure element required by jbd.. + struct journal_callback for_jbd; + // Stuff for myfs allocated together. + myfs_inode* i_commited; + + } + + + +this would be useful if you needed to know when data was committed to a +particular inode. + + + + + +Summary + +Using the journal is a matter of wrapping the different context changes, +being each mount, each modification (transaction) and each changed buffer +to tell the journalling layer about them. + + + +Here is a some pseudo code to give you an idea of how it works, as +an example. + + + + journal_t* my_jnrl = journal_create(); + journal_init_{dev,inode}(jnrl,...) + if (clean) journal_wipe(); + journal_load(); + + foreach(transaction) { /*transactions must be + completed before + a syscall returns to + userspace*/ + + handle_t * xct=journal_start(my_jnrl); + foreach(bh) { + journal_get_{create,write,undo}_access(xact,bh); + if ( myfs_modify(bh) ) { /* returns true + if makes changes */ + journal_dirty_{meta,}data(xact,bh); + } else { + journal_forget(bh); + } + } + journal_stop(xct); + } + journal_destroy(my_jrnl); + + + + + + + Data Types + + The journalling layer uses typedefs to 'hide' the concrete definitions + of the structures used. As a client of the JBD layer you can + just rely on the using the pointer as a magic cookie of some sort. + + Obviously the hiding is not enforced as this is 'C'. + + Structures +!Iinclude/linux/jbd.h + + + + + Functions + + The functions here are split into two groups those that + affect a journal as a whole, and those which are used to + manage transactions + + Journal Level +!Efs/jbd/journal.c +!Efs/jbd/recovery.c + + Transasction Level +!Efs/jbd/transaction.c + + + + See also + + + + Journaling the Linux ext2fs Filesystem,LinuxExpo 98, Stephen Tweedie + + + + + + + Ext3 Journalling FileSystem , OLS 2000, Dr. Stephen Tweedie + + + + + +
diff --git a/Documentation/DocBook/kernel-api.tmpl b/Documentation/DocBook/kernel-api.tmpl new file mode 100644 index 000000000000..1bd20c860285 --- /dev/null +++ b/Documentation/DocBook/kernel-api.tmpl @@ -0,0 +1,342 @@ + + + + + + The Linux Kernel API + + + + 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. + + + + + + + + Driver Basics + Driver Entry and Exit points +!Iinclude/linux/init.h + + + Atomic and pointer manipulation +!Iinclude/asm-i386/atomic.h +!Iinclude/asm-i386/unaligned.h + + + + + + + Data Types + Doubly Linked Lists +!Iinclude/linux/list.h + + + + + Basic C Library Functions + + + When writing drivers, you cannot in general use routines which are + from the C Library. Some of the functions have been found generally + useful and they are listed below. The behaviour of these functions + may vary slightly from those defined by ANSI, and these deviations + are noted in the text. + + + String Conversions +!Ilib/vsprintf.c +!Elib/vsprintf.c + + String Manipulation +!Ilib/string.c +!Elib/string.c + + Bit Operations +!Iinclude/asm-i386/bitops.h + + + + + Memory Management in Linux + The Slab Cache +!Emm/slab.c + + User Space Memory Access +!Iinclude/asm-i386/uaccess.h +!Iarch/i386/lib/usercopy.c + + + + + FIFO Buffer + kfifo interface +!Iinclude/linux/kfifo.h +!Ekernel/kfifo.c + + + + + The proc filesystem + + sysctl interface +!Ekernel/sysctl.c + + + + + The debugfs filesystem + + debugfs interface +!Efs/debugfs/inode.c +!Efs/debugfs/file.c + + + + + The Linux VFS + The Directory Cache +!Efs/dcache.c +!Iinclude/linux/dcache.h + + Inode Handling +!Efs/inode.c +!Efs/bad_inode.c + + Registration and Superblocks +!Efs/super.c + + File Locks +!Efs/locks.c +!Ifs/locks.c + + + + + Linux Networking + Socket Buffer Functions +!Iinclude/linux/skbuff.h +!Enet/core/skbuff.c + + Socket Filter +!Enet/core/filter.c + + Generic Network Statistics +!Iinclude/linux/gen_stats.h +!Enet/core/gen_stats.c +!Enet/core/gen_estimator.c + + + + + Network device support + Driver Support +!Enet/core/dev.c + + 8390 Based Network Cards +!Edrivers/net/8390.c + + Synchronous PPP +!Edrivers/net/wan/syncppp.c + + + + + Module Support + Module Loading +!Ekernel/kmod.c + + Inter Module support + + Refer to the file kernel/module.c for more information. + + + + + + + Hardware Interfaces + Interrupt Handling +!Iarch/i386/kernel/irq.c + + + MTRR Handling +!Earch/i386/kernel/cpu/mtrr/main.c + + PCI Support Library +!Edrivers/pci/pci.c + + PCI Hotplug Support Library +!Edrivers/pci/hotplug/pci_hotplug_core.c + + MCA Architecture + MCA Device Functions + + Refer to the file arch/i386/kernel/mca.c for more information. + + + + MCA Bus DMA +!Iinclude/asm-i386/mca_dma.h + + + + + + The Device File System +!Efs/devfs/base.c + + + + Security Framework +!Esecurity/security.c + + + + Power Management +!Ekernel/power/pm.c + + + + Block Devices +!Edrivers/block/ll_rw_blk.c + + + + Miscellaneous Devices +!Edrivers/char/misc.c + + + + Video4Linux +!Edrivers/media/video/videodev.c + + + + Sound Devices +!Esound/sound_core.c + + + + + 16x50 UART Driver +!Edrivers/serial/serial_core.c +!Edrivers/serial/8250.c + + + + Z85230 Support Library +!Edrivers/net/wan/z85230.c + + + + Frame Buffer Library + + + The frame buffer drivers depend heavily on four data structures. + These structures are declared in include/linux/fb.h. They are + fb_info, fb_var_screeninfo, fb_fix_screeninfo and fb_monospecs. + The last three can be made available to and from userland. + + + + fb_info defines the current state of a particular video card. + Inside fb_info, there exists a fb_ops structure which is a + collection of needed functions to make fbdev and fbcon work. + fb_info is only visible to the kernel. + + + + fb_var_screeninfo is used to describe the features of a video card + that are user defined. With fb_var_screeninfo, things such as + depth and the resolution may be defined. + + + + The next structure is fb_fix_screeninfo. This defines the + properties of a card that are created when a mode is set and can't + be changed otherwise. A good example of this is the start of the + frame buffer memory. This "locks" the address of the frame buffer + memory, so that it cannot be changed or moved. + + + + The last structure is fb_monospecs. In the old API, there was + little importance for fb_monospecs. This allowed for forbidden things + such as setting a mode of 800x600 on a fix frequency monitor. With + the new API, fb_monospecs prevents such things, and if used + correctly, can prevent a monitor from being cooked. fb_monospecs + will not be useful until kernels 2.5.x. + + + Frame Buffer Memory +!Edrivers/video/fbmem.c + + Frame Buffer Console +!Edrivers/video/console/fbcon.c + + Frame Buffer Colormap +!Edrivers/video/fbcmap.c + + + Frame Buffer Video Mode Database +!Idrivers/video/modedb.c +!Edrivers/video/modedb.c + + Frame Buffer Macintosh Video Mode Database +!Idrivers/video/macmodes.c + + Frame Buffer Fonts + + Refer to the file drivers/video/console/fonts.c for more information. + + + + + diff --git a/Documentation/DocBook/kernel-hacking.tmpl b/Documentation/DocBook/kernel-hacking.tmpl new file mode 100644 index 000000000000..49a9ef82d575 --- /dev/null +++ b/Documentation/DocBook/kernel-hacking.tmpl @@ -0,0 +1,1349 @@ + + + + + + Unreliable Guide To Hacking The Linux Kernel + + + + Paul + Rusty + Russell + +
+ rusty@rustcorp.com.au +
+
+
+
+ + + 2001 + Rusty Russell + + + + + 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. + + + + + This is the first release of this document as part of the kernel tarball. + + +
+ + + + + Introduction + + Welcome, gentle reader, to Rusty's Unreliable Guide to Linux + Kernel Hacking. This document describes the common routines and + general requirements for kernel code: its goal is to serve as a + primer for Linux kernel development for experienced C + programmers. I avoid implementation details: that's what the + code is for, and I ignore whole tracts of useful routines. + + + Before you read this, please understand that I never wanted to + write this document, being grossly under-qualified, but I always + wanted to read it, and this was the only way. I hope it will + grow into a compendium of best practice, common starting points + and random information. + + + + + The Players + + + At any time each of the CPUs in a system can be: + + + + + + not associated with any process, serving a hardware interrupt; + + + + + + not associated with any process, serving a softirq, tasklet or bh; + + + + + + running in kernel space, associated with a process; + + + + + + running a process in user space. + + + + + + There is a strict ordering between these: other than the last + category (userspace) each can only be pre-empted by those above. + For example, while a softirq is running on a CPU, no other + softirq will pre-empt it, but a hardware interrupt can. However, + any other CPUs in the system execute independently. + + + + We'll see a number of ways that the user context can block + interrupts, to become truly non-preemptable. + + + + User Context + + + User context is when you are coming in from a system call or + other trap: you can sleep, and you own the CPU (except for + interrupts) until you call schedule(). + In other words, user context (unlike userspace) is not pre-emptable. + + + + + You are always in user context on module load and unload, + and on operations on the block device layer. + + + + + In user context, the current pointer (indicating + the task we are currently executing) is valid, and + in_interrupt() + (include/linux/interrupt.h) is false + . + + + + + Beware that if you have interrupts or bottom halves disabled + (see below), in_interrupt() will return a + false positive. + + + + + + Hardware Interrupts (Hard IRQs) + + + Timer ticks, network cards and + keyboard are examples of real + hardware which produce interrupts at any time. The kernel runs + interrupt handlers, which services the hardware. The kernel + guarantees that this handler is never re-entered: if another + interrupt arrives, it is queued (or dropped). Because it + disables interrupts, this handler has to be fast: frequently it + simply acknowledges the interrupt, marks a `software interrupt' + for execution and exits. + + + + You can tell you are in a hardware interrupt, because + in_irq() returns true. + + + + Beware that this will return a false positive if interrupts are disabled + (see below). + + + + + + Software Interrupt Context: Bottom Halves, Tasklets, softirqs + + + Whenever a system call is about to return to userspace, or a + hardware interrupt handler exits, any `software interrupts' + which are marked pending (usually by hardware interrupts) are + run (kernel/softirq.c). + + + + Much of the real interrupt handling work is done here. Early in + the transition to SMP, there were only `bottom + halves' (BHs), which didn't take advantage of multiple CPUs. Shortly + after we switched from wind-up computers made of match-sticks and snot, + we abandoned this limitation. + + + + include/linux/interrupt.h lists the + different BH's. No matter how many CPUs you have, no two BHs will run at + the same time. This made the transition to SMP simpler, but sucks hard for + scalable performance. A very important bottom half is the timer + BH (include/linux/timer.h): you + can register to have it call functions for you in a given length of time. + + + + 2.3.43 introduced softirqs, and re-implemented the (now + deprecated) BHs underneath them. Softirqs are fully-SMP + versions of BHs: they can run on as many CPUs at once as + required. This means they need to deal with any races in shared + data using their own locks. A bitmask is used to keep track of + which are enabled, so the 32 available softirqs should not be + used up lightly. (Yes, people will + notice). + + + + tasklets (include/linux/interrupt.h) + are like softirqs, except they are dynamically-registrable (meaning you + can have as many as you want), and they also guarantee that any tasklet + will only run on one CPU at any time, although different tasklets can + run simultaneously (unlike different BHs). + + + + The name `tasklet' is misleading: they have nothing to do with `tasks', + and probably more to do with some bad vodka Alexey Kuznetsov had at the + time. + + + + + You can tell you are in a softirq (or bottom half, or tasklet) + using the in_softirq() macro + (include/linux/interrupt.h). + + + + Beware that this will return a false positive if a bh lock (see below) + is held. + + + + + + + Some Basic Rules + + + + No memory protection + + + If you corrupt memory, whether in user context or + interrupt context, the whole machine will crash. Are you + sure you can't do what you want in userspace? + + + + + + No floating point or MMX + + + The FPU context is not saved; even in user + context the FPU state probably won't + correspond with the current process: you would mess with some + user process' FPU state. If you really want + to do this, you would have to explicitly save/restore the full + FPU state (and avoid context switches). It + is generally a bad idea; use fixed point arithmetic first. + + + + + + A rigid stack limit + + + The kernel stack is about 6K in 2.2 (for most + architectures: it's about 14K on the Alpha), and shared + with interrupts so you can't use it all. Avoid deep + recursion and huge local arrays on the stack (allocate + them dynamically instead). + + + + + + The Linux kernel is portable + + + Let's keep it that way. Your code should be 64-bit clean, + and endian-independent. You should also minimize CPU + specific stuff, e.g. inline assembly should be cleanly + encapsulated and minimized to ease porting. Generally it + should be restricted to the architecture-dependent part of + the kernel tree. + + + + + + + + ioctls: Not writing a new system call + + + A system call generally looks like this + + + +asmlinkage long sys_mycall(int arg) +{ + return 0; +} + + + + First, in most cases you don't want to create a new system call. + You create a character device and implement an appropriate ioctl + for it. This is much more flexible than system calls, doesn't have + to be entered in every architecture's + include/asm/unistd.h and + arch/kernel/entry.S file, and is much more + likely to be accepted by Linus. + + + + If all your routine does is read or write some parameter, consider + implementing a sysctl interface instead. + + + + Inside the ioctl you're in user context to a process. When a + error occurs you return a negated errno (see + include/linux/errno.h), + otherwise you return 0. + + + + After you slept you should check if a signal occurred: the + Unix/Linux way of handling signals is to temporarily exit the + system call with the -ERESTARTSYS error. The + system call entry code will switch back to user context, process + the signal handler and then your system call will be restarted + (unless the user disabled that). So you should be prepared to + process the restart, e.g. if you're in the middle of manipulating + some data structure. + + + +if (signal_pending()) + return -ERESTARTSYS; + + + + If you're doing longer computations: first think userspace. If you + really want to do it in kernel you should + regularly check if you need to give up the CPU (remember there is + cooperative multitasking per CPU). Idiom: + + + +cond_resched(); /* Will sleep */ + + + + A short note on interface design: the UNIX system call motto is + "Provide mechanism not policy". + + + + + Recipes for Deadlock + + + You cannot call any routines which may sleep, unless: + + + + + You are in user context. + + + + + + You do not own any spinlocks. + + + + + + You have interrupts enabled (actually, Andi Kleen says + that the scheduling code will enable them for you, but + that's probably not what you wanted). + + + + + + Note that some functions may sleep implicitly: common ones are + the user space access functions (*_user) and memory allocation + functions without GFP_ATOMIC. + + + + You will eventually lock up your box if you break these rules. + + + + Really. + + + + + Common Routines + + + + <function>printk()</function> + <filename class="headerfile">include/linux/kernel.h</filename> + + + + printk() feeds kernel messages to the + console, dmesg, and the syslog daemon. It is useful for debugging + and reporting errors, and can be used inside interrupt context, + but use with caution: a machine which has its console flooded with + printk messages is unusable. It uses a format string mostly + compatible with ANSI C printf, and C string concatenation to give + it a first "priority" argument: + + + +printk(KERN_INFO "i = %u\n", i); + + + + See include/linux/kernel.h; + for other KERN_ values; these are interpreted by syslog as the + level. Special case: for printing an IP address use + + + +__u32 ipaddress; +printk(KERN_INFO "my ip: %d.%d.%d.%d\n", NIPQUAD(ipaddress)); + + + + printk() internally uses a 1K buffer and does + not catch overruns. Make sure that will be enough. + + + + + You will know when you are a real kernel hacker + when you start typoing printf as printk in your user programs :) + + + + + + + + Another sidenote: the original Unix Version 6 sources had a + comment on top of its printf function: "Printf should not be + used for chit-chat". You should follow that advice. + + + + + + + <function>copy_[to/from]_user()</function> + / + <function>get_user()</function> + / + <function>put_user()</function> + <filename class="headerfile">include/asm/uaccess.h</filename> + + + + [SLEEPS] + + + + put_user() and get_user() + are used to get and put single values (such as an int, char, or + long) from and to userspace. A pointer into userspace should + never be simply dereferenced: data should be copied using these + routines. Both return -EFAULT or 0. + + + copy_to_user() and + copy_from_user() are more general: they copy + an arbitrary amount of data to and from userspace. + + + Unlike put_user() and + get_user(), they return the amount of + uncopied data (ie. 0 still means + success). + + + [Yes, this moronic interface makes me cringe. Please submit a + patch and become my hero --RR.] + + + The functions may sleep implicitly. This should never be called + outside user context (it makes no sense), with interrupts + disabled, or a spinlock held. + + + + + <function>kmalloc()</function>/<function>kfree()</function> + <filename class="headerfile">include/linux/slab.h</filename> + + + [MAY SLEEP: SEE BELOW] + + + + These routines are used to dynamically request pointer-aligned + chunks of memory, like malloc and free do in userspace, but + kmalloc() takes an extra flag word. + Important values: + + + + + + + GFP_KERNEL + + + + + May sleep and swap to free memory. Only allowed in user + context, but is the most reliable way to allocate memory. + + + + + + + + GFP_ATOMIC + + + + + Don't sleep. Less reliable than GFP_KERNEL, + but may be called from interrupt context. You should + really have a good out-of-memory + error-handling strategy. + + + + + + + + GFP_DMA + + + + + Allocate ISA DMA lower than 16MB. If you don't know what that + is you don't need it. Very unreliable. + + + + + + + If you see a kmem_grow: Called nonatomically from int + warning message you called a memory allocation function + from interrupt context without GFP_ATOMIC. + You should really fix that. Run, don't walk. + + + + If you are allocating at least PAGE_SIZE + (include/asm/page.h) bytes, + consider using __get_free_pages() + + (include/linux/mm.h). It + takes an order argument (0 for page sized, 1 for double page, 2 + for four pages etc.) and the same memory priority flag word as + above. + + + + If you are allocating more than a page worth of bytes you can use + vmalloc(). It'll allocate virtual memory in + the kernel map. This block is not contiguous in physical memory, + but the MMU makes it look like it is for you + (so it'll only look contiguous to the CPUs, not to external device + drivers). If you really need large physically contiguous memory + for some weird device, you have a problem: it is poorly supported + in Linux because after some time memory fragmentation in a running + kernel makes it hard. The best way is to allocate the block early + in the boot process via the alloc_bootmem() + routine. + + + + Before inventing your own cache of often-used objects consider + using a slab cache in + include/linux/slab.h + + + + + <function>current</function> + <filename class="headerfile">include/asm/current.h</filename> + + + This global variable (really a macro) contains a pointer to + the current task structure, so is only valid in user context. + For example, when a process makes a system call, this will + point to the task structure of the calling process. It is + not NULL in interrupt context. + + + + + <function>udelay()</function>/<function>mdelay()</function> + <filename class="headerfile">include/asm/delay.h</filename> + <filename class="headerfile">include/linux/delay.h</filename> + + + + The udelay() function can be used for small pauses. + Do not use large values with udelay() as you risk + overflow - the helper function mdelay() is useful + here, or even consider schedule_timeout(). + + + + + <function>cpu_to_be32()</function>/<function>be32_to_cpu()</function>/<function>cpu_to_le32()</function>/<function>le32_to_cpu()</function> + <filename class="headerfile">include/asm/byteorder.h</filename> + + + + The cpu_to_be32() family (where the "32" can + be replaced by 64 or 16, and the "be" can be replaced by "le") are + the general way to do endian conversions in the kernel: they + return the converted value. All variations supply the reverse as + well: be32_to_cpu(), etc. + + + + There are two major variations of these functions: the pointer + variation, such as cpu_to_be32p(), which take + a pointer to the given type, and return the converted value. The + other variation is the "in-situ" family, such as + cpu_to_be32s(), which convert value referred + to by the pointer, and return void. + + + + + <function>local_irq_save()</function>/<function>local_irq_restore()</function> + <filename class="headerfile">include/asm/system.h</filename> + + + + These routines disable hard interrupts on the local CPU, and + restore them. They are reentrant; saving the previous state in + their one unsigned long flags argument. If you + know that interrupts are enabled, you can simply use + local_irq_disable() and + local_irq_enable(). + + + + + <function>local_bh_disable()</function>/<function>local_bh_enable()</function> + <filename class="headerfile">include/linux/interrupt.h</filename> + + + These routines disable soft interrupts on the local CPU, and + restore them. They are reentrant; if soft interrupts were + disabled before, they will still be disabled after this pair + of functions has been called. They prevent softirqs, tasklets + and bottom halves from running on the current CPU. + + + + + <function>smp_processor_id</function>() + <filename class="headerfile">include/asm/smp.h</filename> + + + smp_processor_id() returns the current + processor number, between 0 and NR_CPUS (the + maximum number of CPUs supported by Linux, currently 32). These + values are not necessarily continuous. + + + + + <type>__init</type>/<type>__exit</type>/<type>__initdata</type> + <filename class="headerfile">include/linux/init.h</filename> + + + After boot, the kernel frees up a special section; functions + marked with __init and data structures marked with + __initdata are dropped after boot is complete (within + modules this directive is currently ignored). __exit + is used to declare a function which is only required on exit: the + function will be dropped if this file is not compiled as a module. + See the header file for use. Note that it makes no sense for a function + marked with __init to be exported to modules with + EXPORT_SYMBOL() - this will break. + + + Static data structures marked as __initdata must be initialised + (as opposed to ordinary static data which is zeroed BSS) and cannot be + const. + + + + + + <function>__initcall()</function>/<function>module_init()</function> + <filename class="headerfile">include/linux/init.h</filename> + + Many parts of the kernel are well served as a module + (dynamically-loadable parts of the kernel). Using the + module_init() and + module_exit() macros it is easy to write code + without #ifdefs which can operate both as a module or built into + the kernel. + + + + The module_init() macro defines which + function is to be called at module insertion time (if the file is + compiled as a module), or at boot time: if the file is not + compiled as a module the module_init() macro + becomes equivalent to __initcall(), which + through linker magic ensures that the function is called on boot. + + + + The function can return a negative error number to cause + module loading to fail (unfortunately, this has no effect if + the module is compiled into the kernel). For modules, this is + called in user context, with interrupts enabled, and the + kernel lock held, so it can sleep. + + + + + <function>module_exit()</function> + <filename class="headerfile">include/linux/init.h</filename> + + + This macro defines the function to be called at module removal + time (or never, in the case of the file compiled into the + kernel). It will only be called if the module usage count has + reached zero. This function can also sleep, but cannot fail: + everything must be cleaned up by the time it returns. + + + + + + + + Wait Queues + <filename class="headerfile">include/linux/wait.h</filename> + + + [SLEEPS] + + + + A wait queue is used to wait for someone to wake you up when a + certain condition is true. They must be used carefully to ensure + there is no race condition. You declare a + wait_queue_head_t, and then processes which want to + wait for that condition declare a wait_queue_t + referring to themselves, and place that in the queue. + + + + Declaring + + + You declare a wait_queue_head_t using the + DECLARE_WAIT_QUEUE_HEAD() macro, or using the + init_waitqueue_head() routine in your + initialization code. + + + + + Queuing + + + Placing yourself in the waitqueue is fairly complex, because you + must put yourself in the queue before checking the condition. + There is a macro to do this: + wait_event_interruptible() + + include/linux/sched.h The + first argument is the wait queue head, and the second is an + expression which is evaluated; the macro returns + 0 when this expression is true, or + -ERESTARTSYS if a signal is received. + The wait_event() version ignores signals. + + + Do not use the sleep_on() function family - + it is very easy to accidentally introduce races; almost certainly + one of the wait_event() family will do, or a + loop around schedule_timeout(). If you choose + to loop around schedule_timeout() remember + you must set the task state (with + set_current_state()) on each iteration to avoid + busy-looping. + + + + + + Waking Up Queued Tasks + + + Call wake_up() + + include/linux/sched.h;, + which will wake up every process in the queue. The exception is + if one has TASK_EXCLUSIVE set, in which case + the remainder of the queue will not be woken. + + + + + + Atomic Operations + + + Certain operations are guaranteed atomic on all platforms. The + first class of operations work on atomic_t + + include/asm/atomic.h; this + contains a signed integer (at least 24 bits long), and you must use + these functions to manipulate or read atomic_t variables. + atomic_read() and + atomic_set() get and set the counter, + atomic_add(), + atomic_sub(), + atomic_inc(), + atomic_dec(), and + atomic_dec_and_test() (returns + true if it was decremented to zero). + + + + Yes. It returns true (i.e. != 0) if the + atomic variable is zero. + + + + Note that these functions are slower than normal arithmetic, and + so should not be used unnecessarily. On some platforms they + are much slower, like 32-bit Sparc where they use a spinlock. + + + + The second class of atomic operations is atomic bit operations on a + long, defined in + + include/linux/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() + and change_bit() set, clear, and flip the + given bit. test_and_set_bit(), + test_and_clear_bit() and + test_and_change_bit() do the same thing, + except return true if the bit was previously set; these are + particularly useful for very simple locking. + + + + It is possible to call these operations with bit indices greater + than BITS_PER_LONG. The resulting behavior is strange on big-endian + platforms though so it is a good idea not to do this. + + + + Note that the order of bits depends on the architecture, and in + particular, the bitfield passed to these operations must be at + least as large as a long. + + + + + Symbols + + + Within the kernel proper, the normal linking rules apply + (ie. unless a symbol is declared to be file scope with the + static keyword, it can be used anywhere in the + kernel). However, for modules, a special exported symbol table is + kept which limits the entry points to the kernel proper. Modules + can also export symbols. + + + + <function>EXPORT_SYMBOL()</function> + <filename class="headerfile">include/linux/module.h</filename> + + + This is the classic method of exporting a symbol, and it works + for both modules and non-modules. In the kernel all these + declarations are often bundled into a single file to help + genksyms (which searches source files for these declarations). + See the comment on genksyms and Makefiles below. + + + + + <function>EXPORT_SYMBOL_GPL()</function> + <filename class="headerfile">include/linux/module.h</filename> + + + Similar to EXPORT_SYMBOL() except that the + symbols exported by EXPORT_SYMBOL_GPL() can + only be seen by modules with a + MODULE_LICENSE() that specifies a GPL + compatible license. + + + + + + Routines and Conventions + + + Double-linked lists + <filename class="headerfile">include/linux/list.h</filename> + + + There are three sets of linked-list routines in the kernel + headers, but this one seems to be winning out (and Linus has + used it). If you don't have some particular pressing need for + a single list, it's a good choice. In fact, I don't care + whether it's a good choice or not, just use it so we can get + rid of the others. + + + + + Return Conventions + + + For code called in user context, it's very common to defy C + convention, and return 0 for success, + and a negative error number + (eg. -EFAULT) for failure. This can be + unintuitive at first, but it's fairly widespread in the networking + code, for example. + + + + The filesystem code uses ERR_PTR() + + include/linux/fs.h; to + encode a negative error number into a pointer, and + IS_ERR() and PTR_ERR() + to get it back out again: avoids a separate pointer parameter for + the error number. Icky, but in a good way. + + + + + Breaking Compilation + + + Linus and the other developers sometimes change function or + structure names in development kernels; this is not done just to + keep everyone on their toes: it reflects a fundamental change + (eg. can no longer be called with interrupts on, or does extra + checks, or doesn't do checks which were caught before). Usually + this is accompanied by a fairly complete note to the linux-kernel + mailing list; search the archive. Simply doing a global replace + on the file usually makes things worse. + + + + + Initializing structure members + + + The preferred method of initializing structures is to use + designated initialisers, as defined by ISO C99, eg: + + +static struct block_device_operations opt_fops = { + .open = opt_open, + .release = opt_release, + .ioctl = opt_ioctl, + .check_media_change = opt_media_change, +}; + + + This makes it easy to grep for, and makes it clear which + structure fields are set. You should do this because it looks + cool. + + + + + GNU Extensions + + + GNU Extensions are explicitly allowed in the Linux kernel. + Note that some of the more complex ones are not very well + supported, due to lack of general use, but the following are + considered standard (see the GCC info page section "C + Extensions" for more details - Yes, really the info page, the + man page is only a short summary of the stuff in info): + + + + + Inline functions + + + + + Statement expressions (ie. the ({ and }) constructs). + + + + + Declaring attributes of a function / variable / type + (__attribute__) + + + + + typeof + + + + + Zero length arrays + + + + + Macro varargs + + + + + Arithmetic on void pointers + + + + + Non-Constant initializers + + + + + Assembler Instructions (not outside arch/ and include/asm/) + + + + + Function names as strings (__FUNCTION__) + + + + + __builtin_constant_p() + + + + + + Be wary when using long long in the kernel, the code gcc generates for + it is horrible and worse: division and multiplication does not work + on i386 because the GCC runtime functions for it are missing from + the kernel environment. + + + + + + + C++ + + + Using C++ in the kernel is usually a bad idea, because the + kernel does not provide the necessary runtime environment + and the include files are not tested for it. It is still + possible, but not recommended. If you really want to do + this, forget about exceptions at least. + + + + + #if + + + It is generally considered cleaner to use macros in header files + (or at the top of .c files) to abstract away functions rather than + using `#if' pre-processor statements throughout the source code. + + + + + + Putting Your Stuff in the Kernel + + + In order to get your stuff into shape for official inclusion, or + even to make a neat patch, there's administrative work to be + done: + + + + + Figure out whose pond you've been pissing in. Look at the top of + the source files, inside the MAINTAINERS + file, and last of all in the CREDITS file. + You should coordinate with this person to make sure you're not + duplicating effort, or trying something that's already been + rejected. + + + + Make sure you put your name and EMail address at the top of + any files you create or mangle significantly. This is the + first place people will look when they find a bug, or when + they want to make a change. + + + + + + Usually you want a configuration option for your kernel hack. + Edit Config.in in the appropriate directory + (but under arch/ it's called + config.in). The Config Language used is not + bash, even though it looks like bash; the safe way is to use only + the constructs that you already see in + Config.in files (see + Documentation/kbuild/kconfig-language.txt). + It's good to run "make xconfig" at least once to test (because + it's the only one with a static parser). + + + + Variables which can be Y or N use bool followed by a + tagline and the config define name (which must start with + CONFIG_). The tristate function is the same, but + allows the answer M (which defines + CONFIG_foo_MODULE in your source, instead of + CONFIG_FOO) if CONFIG_MODULES + is enabled. + + + + You may well want to make your CONFIG option only visible if + CONFIG_EXPERIMENTAL is enabled: this serves as a + warning to users. There many other fancy things you can do: see + the various Config.in files for ideas. + + + + + + Edit the Makefile: the CONFIG variables are + exported here so you can conditionalize compilation with `ifeq'. + If your file exports symbols then add the names to + export-objs so that genksyms will find them. + + + There is a restriction on the kernel build system that objects + which export symbols must have globally unique names. + If your object does not have a globally unique name then the + standard fix is to move the + EXPORT_SYMBOL() statements to their own + object with a unique name. + This is why several systems have separate exporting objects, + usually suffixed with ksyms. + + + + + + + + Document your option in Documentation/Configure.help. Mention + incompatibilities and issues here. Definitely + end your description with if in doubt, say N + (or, occasionally, `Y'); this is for people who have no + idea what you are talking about. + + + + + + Put yourself in CREDITS if you've done + something noteworthy, usually beyond a single file (your name + should be at the top of the source files anyway). + MAINTAINERS means you want to be consulted + when changes are made to a subsystem, and hear about bugs; it + implies a more-than-passing commitment to some part of the code. + + + + + + Finally, don't forget to read Documentation/SubmittingPatches + and possibly Documentation/SubmittingDrivers. + + + + + + + Kernel Cantrips + + + Some favorites from browsing the source. Feel free to add to this + list. + + + + include/linux/brlock.h: + + +extern inline void br_read_lock (enum brlock_indices idx) +{ + /* + * This causes a link-time bug message if an + * invalid index is used: + */ + if (idx >= __BR_END) + __br_lock_usage_bug(); + + read_lock(&__brlock_array[smp_processor_id()][idx]); +} + + + + include/linux/fs.h: + + +/* + * Kernel pointers have redundant information, so we can use a + * scheme where we can return either an error code or a dentry + * pointer with the same return value. + * + * This should be a per-architecture thing, to allow different + * error and pointer decisions. + */ + #define ERR_PTR(err) ((void *)((long)(err))) + #define PTR_ERR(ptr) ((long)(ptr)) + #define IS_ERR(ptr) ((unsigned long)(ptr) > (unsigned long)(-1000)) + + + + include/asm-i386/uaccess.h: + + + +#define copy_to_user(to,from,n) \ + (__builtin_constant_p(n) ? \ + __constant_copy_to_user((to),(from),(n)) : \ + __generic_copy_to_user((to),(from),(n))) + + + + arch/sparc/kernel/head.S: + + + +/* + * Sun people can't spell worth damn. "compatability" indeed. + * At least we *know* we can't spell, and use a spell-checker. + */ + +/* Uh, actually Linus it is I who cannot spell. Too much murky + * Sparc assembly will do this to ya. + */ +C_LABEL(cputypvar): + .asciz "compatability" + +/* Tested on SS-5, SS-10. Probably someone at Sun applied a spell-checker. */ + .align 4 +C_LABEL(cputypvar_sun4m): + .asciz "compatible" + + + + arch/sparc/lib/checksum.S: + + + + /* Sun, you just can't beat me, you just can't. Stop trying, + * give up. I'm serious, I am going to kick the living shit + * out of you, game over, lights out. + */ + + + + + Thanks + + + Thanks to Andi Kleen for the idea, answering my questions, fixing + my mistakes, filling content, etc. Philipp Rumpf for more spelling + and clarity fixes, and some excellent non-obvious points. Werner + Almesberger for giving me a great summary of + disable_irq(), and Jes Sorensen and Andrea + Arcangeli added caveats. Michael Elizabeth Chastain for checking + and adding to the Configure section. Telsa Gwynne for teaching me DocBook. + + +
+ diff --git a/Documentation/DocBook/kernel-locking.tmpl b/Documentation/DocBook/kernel-locking.tmpl new file mode 100644 index 000000000000..90dc2de8e0af --- /dev/null +++ b/Documentation/DocBook/kernel-locking.tmpl @@ -0,0 +1,2088 @@ + + + + + + Unreliable Guide To Locking + + + + Rusty + Russell + +
+ rusty@rustcorp.com.au +
+
+
+
+ + + 2003 + Rusty Russell + + + + + 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 + + Welcome, to Rusty's Remarkably Unreliable Guide to Kernel + Locking issues. This document describes the locking systems in + the Linux Kernel in 2.6. + + + With the wide availability of HyperThreading, and preemption in the Linux + Kernel, everyone hacking on the kernel needs to know the + fundamentals of concurrency and locking for + SMP. + + + + + The Problem With Concurrency + + (Skip this if you know what a Race Condition is). + + + In a normal program, you can increment a counter like so: + + + very_important_count++; + + + + This is what they would expect to happen: + + + + Expected Results + + + + + + Instance 1 + Instance 2 + + + + + + read very_important_count (5) + + + + add 1 (6) + + + + write very_important_count (6) + + + + + read very_important_count (6) + + + + add 1 (7) + + + + write very_important_count (7) + + + + +
+ + + This is what might happen: + + + + Possible Results + + + + + Instance 1 + Instance 2 + + + + + + read very_important_count (5) + + + + + read very_important_count (5) + + + add 1 (6) + + + + + add 1 (6) + + + write very_important_count (6) + + + + + write very_important_count (6) + + + +
+ + + Race Conditions and Critical Regions + + This overlap, where the result depends on the + relative timing of multiple tasks, is called a race condition. + The piece of code containing the concurrency issue is called a + critical region. And especially since Linux starting running + on SMP machines, they became one of the major issues in kernel + design and implementation. + + + Preemption can have the same effect, even if there is only one + CPU: by preempting one task during the critical region, we have + exactly the same race condition. In this case the thread which + preempts might run the critical region itself. + + + The solution is to recognize when these simultaneous accesses + occur, and use locks to make sure that only one instance can + enter the critical region at any time. There are many + friendly primitives in the Linux kernel to help you do this. + And then there are the unfriendly primitives, but I'll pretend + they don't exist. + + +
+ + + Locking in the Linux Kernel + + + If I could give you one piece of advice: never sleep with anyone + crazier than yourself. But if I had to give you advice on + locking: keep it simple. + + + + Be reluctant to introduce new locks. + + + + Strangely enough, this last one is the exact reverse of my advice when + you have slept with someone crazier than yourself. + And you should think about getting a big dog. + + + + Two Main Types of Kernel Locks: Spinlocks and Semaphores + + + There are two main types of kernel locks. The fundamental type + is the spinlock + (include/asm/spinlock.h), + which is a very simple single-holder lock: if you can't get the + spinlock, you keep trying (spinning) until you can. Spinlocks are + very small and fast, and can be used anywhere. + + + The second type is a semaphore + (include/asm/semaphore.h): it + can have more than one holder at any time (the number decided at + initialization time), although it is most commonly used as a + single-holder lock (a mutex). If you can't get a semaphore, + your task will put itself on the queue, and be woken up when the + semaphore is released. This means the CPU will do something + else while you are waiting, but there are many cases when you + simply can't sleep (see ), and so + have to use a spinlock instead. + + + Neither type of lock is recursive: see + . + + + + + Locks and Uniprocessor Kernels + + + For kernels compiled without CONFIG_SMP, and + without CONFIG_PREEMPT spinlocks do not exist at + all. This is an excellent design decision: when no-one else can + run at the same time, there is no reason to have a lock. + + + + If the kernel is compiled without CONFIG_SMP, + but CONFIG_PREEMPT is set, then spinlocks + simply disable preemption, which is sufficient to prevent any + races. For most purposes, we can think of preemption as + equivalent to SMP, and not worry about it separately. + + + + You should always test your locking code with CONFIG_SMP + and CONFIG_PREEMPT enabled, even if you don't have an SMP test box, because it + will still catch some kinds of locking bugs. + + + + Semaphores still exist, because they are required for + synchronization between user + contexts, as we will see below. + + + + + Locking Only In User Context + + + If you have a data structure which is only ever accessed from + user context, then you can use a simple semaphore + (linux/asm/semaphore.h) to protect it. This + is the most trivial case: you initialize the semaphore to the number + of resources available (usually 1), and call + down_interruptible() to grab the semaphore, and + up() to release it. There is also a + down(), which should be avoided, because it + will not return if a signal is received. + + + + Example: linux/net/core/netfilter.c allows + registration of new setsockopt() and + getsockopt() calls, with + nf_register_sockopt(). Registration and + de-registration are only done on module load and unload (and boot + time, where there is no concurrency), and the list of registrations + is only consulted for an unknown setsockopt() + or getsockopt() system call. The + nf_sockopt_mutex is perfect to protect this, + especially since the setsockopt and getsockopt calls may well + sleep. + + + + + Locking Between User Context and Softirqs + + + If a softirq shares + data with user context, you have two problems. Firstly, the current + user context can be interrupted by a softirq, and secondly, the + critical region could be entered from another CPU. This is where + spin_lock_bh() + (include/linux/spinlock.h) is + used. It disables softirqs on that CPU, then grabs the lock. + spin_unlock_bh() does the reverse. (The + '_bh' suffix is a historical reference to "Bottom Halves", the + old name for software interrupts. It should really be + called spin_lock_softirq()' in a perfect world). + + + + Note that you can also use spin_lock_irq() + or spin_lock_irqsave() here, which stop + hardware interrupts as well: see . + + + + This works perfectly for UP + as well: the spin lock vanishes, and this macro + simply becomes local_bh_disable() + (include/linux/interrupt.h), which + protects you from the softirq being run. + + + + + Locking Between User Context and Tasklets + + + This is exactly the same as above, because tasklets are actually run + from a softirq. + + + + + Locking Between User Context and Timers + + + This, too, is exactly the same as above, because timers are actually run from + a softirq. From a locking point of view, tasklets and timers + are identical. + + + + + Locking Between Tasklets/Timers + + + Sometimes a tasklet or timer might want to share data with + another tasklet or timer. + + + + The Same Tasklet/Timer + + Since a tasklet is never run on two CPUs at once, you don't + need to worry about your tasklet being reentrant (running + twice at once), even on SMP. + + + + + Different Tasklets/Timers + + If another tasklet/timer wants + to share data with your tasklet or timer , you will both need to use + spin_lock() and + spin_unlock() calls. + spin_lock_bh() is + unnecessary here, as you are already in a tasklet, and + none will be run on the same CPU. + + + + + + Locking Between Softirqs + + + Often a softirq might + want to share data with itself or a tasklet/timer. + + + + The Same Softirq + + + The same softirq can run on the other CPUs: you can use a + per-CPU array (see ) for better + performance. If you're going so far as to use a softirq, + you probably care about scalable performance enough + to justify the extra complexity. + + + + You'll need to use spin_lock() and + spin_unlock() for shared data. + + + + + Different Softirqs + + + You'll need to use spin_lock() and + spin_unlock() for shared data, whether it + be a timer, tasklet, different softirq or the same or another + softirq: any of them could be running on a different CPU. + + + + + + + Hard IRQ Context + + + Hardware interrupts usually communicate with a + tasklet or softirq. Frequently this involves putting work in a + queue, which the softirq will take out. + + + + Locking Between Hard IRQ and Softirqs/Tasklets + + + If a hardware irq handler shares data with a softirq, you have + two concerns. Firstly, the softirq processing can be + interrupted by a hardware interrupt, and secondly, the + critical region could be entered by a hardware interrupt on + another CPU. This is where spin_lock_irq() is + used. It is defined to disable interrupts on that cpu, then grab + the lock. spin_unlock_irq() does the reverse. + + + + The irq handler does not to use + spin_lock_irq(), because the softirq cannot + run while the irq handler is running: it can use + spin_lock(), which is slightly faster. The + only exception would be if a different hardware irq handler uses + the same lock: spin_lock_irq() will stop + that from interrupting us. + + + + This works perfectly for UP as well: the spin lock vanishes, + and this macro simply becomes local_irq_disable() + (include/asm/smp.h), which + protects you from the softirq/tasklet/BH being run. + + + + spin_lock_irqsave() + (include/linux/spinlock.h) is a variant + which saves whether interrupts were on or off in a flags word, + which is passed to spin_unlock_irqrestore(). This + means that the same code can be used inside an hard irq handler (where + interrupts are already off) and in softirqs (where the irq + disabling is required). + + + + Note that softirqs (and hence tasklets and timers) are run on + return from hardware interrupts, so + spin_lock_irq() also stops these. In that + sense, spin_lock_irqsave() is the most + general and powerful locking function. + + + + + Locking Between Two Hard IRQ Handlers + + It is rare to have to share data between two IRQ handlers, but + if you do, spin_lock_irqsave() should be + used: it is architecture-specific whether all interrupts are + disabled inside irq handlers themselves. + + + + + + + Cheat Sheet For Locking + + Pete Zaitcev gives the following summary: + + + + + If you are in a process context (any syscall) and want to + lock other process out, use a semaphore. You can take a semaphore + and sleep (copy_from_user*( or + kmalloc(x,GFP_KERNEL)). + + + + + Otherwise (== data can be touched in an interrupt), use + spin_lock_irqsave() and + spin_unlock_irqrestore(). + + + + + Avoid holding spinlock for more than 5 lines of code and + across any function call (except accessors like + readb). + + + + + + Table of Minimum Requirements + + The following table lists the minimum + locking requirements between various contexts. In some cases, + the same context can only be running on one CPU at a time, so + no locking is required for that context (eg. a particular + thread can only run on one CPU at a time, but if it needs + shares data with another thread, locking is required). + + + Remember the advice above: you can always use + spin_lock_irqsave(), which is a superset + of all other spinlock primitives. + + +Table of Locking Requirements + + + + +IRQ Handler A +IRQ Handler B +Softirq A +Softirq B +Tasklet A +Tasklet B +Timer A +Timer B +User Context A +User Context B + + + +IRQ Handler A +None + + + +IRQ Handler B +spin_lock_irqsave +None + + + +Softirq A +spin_lock_irq +spin_lock_irq +spin_lock + + + +Softirq B +spin_lock_irq +spin_lock_irq +spin_lock +spin_lock + + + +Tasklet A +spin_lock_irq +spin_lock_irq +spin_lock +spin_lock +None + + + +Tasklet B +spin_lock_irq +spin_lock_irq +spin_lock +spin_lock +spin_lock +None + + + +Timer A +spin_lock_irq +spin_lock_irq +spin_lock +spin_lock +spin_lock +spin_lock +None + + + +Timer B +spin_lock_irq +spin_lock_irq +spin_lock +spin_lock +spin_lock +spin_lock +spin_lock +None + + + +User Context A +spin_lock_irq +spin_lock_irq +spin_lock_bh +spin_lock_bh +spin_lock_bh +spin_lock_bh +spin_lock_bh +spin_lock_bh +None + + + +User Context B +spin_lock_irq +spin_lock_irq +spin_lock_bh +spin_lock_bh +spin_lock_bh +spin_lock_bh +spin_lock_bh +spin_lock_bh +down_interruptible +None + + + + +
+
+
+ + + Common Examples + +Let's step through a simple example: a cache of number to name +mappings. The cache keeps a count of how often each of the objects is +used, and when it gets full, throws out the least used one. + + + + + All In User Context + +For our first example, we assume that all operations are in user +context (ie. from system calls), so we can sleep. This means we can +use a semaphore to protect the cache and all the objects within +it. Here's the code: + + + +#include <linux/list.h> +#include <linux/slab.h> +#include <linux/string.h> +#include <asm/semaphore.h> +#include <asm/errno.h> + +struct object +{ + struct list_head list; + int id; + char name[32]; + int popularity; +}; + +/* Protects the cache, cache_num, and the objects within it */ +static DECLARE_MUTEX(cache_lock); +static LIST_HEAD(cache); +static unsigned int cache_num = 0; +#define MAX_CACHE_SIZE 10 + +/* Must be holding cache_lock */ +static struct object *__cache_find(int id) +{ + struct object *i; + + list_for_each_entry(i, &cache, list) + if (i->id == id) { + i->popularity++; + return i; + } + return NULL; +} + +/* Must be holding cache_lock */ +static void __cache_delete(struct object *obj) +{ + BUG_ON(!obj); + list_del(&obj->list); + kfree(obj); + cache_num--; +} + +/* Must be holding cache_lock */ +static void __cache_add(struct object *obj) +{ + list_add(&obj->list, &cache); + if (++cache_num > MAX_CACHE_SIZE) { + struct object *i, *outcast = NULL; + list_for_each_entry(i, &cache, list) { + if (!outcast || i->popularity < outcast->popularity) + outcast = i; + } + __cache_delete(outcast); + } +} + +int cache_add(int id, const char *name) +{ + struct object *obj; + + if ((obj = kmalloc(sizeof(*obj), GFP_KERNEL)) == NULL) + return -ENOMEM; + + strlcpy(obj->name, name, sizeof(obj->name)); + obj->id = id; + obj->popularity = 0; + + down(&cache_lock); + __cache_add(obj); + up(&cache_lock); + return 0; +} + +void cache_delete(int id) +{ + down(&cache_lock); + __cache_delete(__cache_find(id)); + up(&cache_lock); +} + +int cache_find(int id, char *name) +{ + struct object *obj; + int ret = -ENOENT; + + down(&cache_lock); + obj = __cache_find(id); + if (obj) { + ret = 0; + strcpy(name, obj->name); + } + up(&cache_lock); + return ret; +} + + + +Note that we always make sure we have the cache_lock when we add, +delete, or look up the cache: both the cache infrastructure itself and +the contents of the objects are protected by the lock. In this case +it's easy, since we copy the data for the user, and never let them +access the objects directly. + + +There is a slight (and common) optimization here: in +cache_add we set up the fields of the object +before grabbing the lock. This is safe, as no-one else can access it +until we put it in cache. + + + + + Accessing From Interrupt Context + +Now consider the case where cache_find can be +called from interrupt context: either a hardware interrupt or a +softirq. An example would be a timer which deletes object from the +cache. + + +The change is shown below, in standard patch format: the +- are lines which are taken away, and the ++ are lines which are added. + + +--- cache.c.usercontext 2003-12-09 13:58:54.000000000 +1100 ++++ cache.c.interrupt 2003-12-09 14:07:49.000000000 +1100 +@@ -12,7 +12,7 @@ + int popularity; + }; + +-static DECLARE_MUTEX(cache_lock); ++static spinlock_t cache_lock = SPIN_LOCK_UNLOCKED; + static LIST_HEAD(cache); + static unsigned int cache_num = 0; + #define MAX_CACHE_SIZE 10 +@@ -55,6 +55,7 @@ + int cache_add(int id, const char *name) + { + struct object *obj; ++ unsigned long flags; + + if ((obj = kmalloc(sizeof(*obj), GFP_KERNEL)) == NULL) + return -ENOMEM; +@@ -63,30 +64,33 @@ + obj->id = id; + obj->popularity = 0; + +- down(&cache_lock); ++ spin_lock_irqsave(&cache_lock, flags); + __cache_add(obj); +- up(&cache_lock); ++ spin_unlock_irqrestore(&cache_lock, flags); + return 0; + } + + void cache_delete(int id) + { +- down(&cache_lock); ++ unsigned long flags; ++ ++ spin_lock_irqsave(&cache_lock, flags); + __cache_delete(__cache_find(id)); +- up(&cache_lock); ++ spin_unlock_irqrestore(&cache_lock, flags); + } + + int cache_find(int id, char *name) + { + struct object *obj; + int ret = -ENOENT; ++ unsigned long flags; + +- down(&cache_lock); ++ spin_lock_irqsave(&cache_lock, flags); + obj = __cache_find(id); + if (obj) { + ret = 0; + strcpy(name, obj->name); + } +- up(&cache_lock); ++ spin_unlock_irqrestore(&cache_lock, flags); + return ret; + } + + + +Note that the spin_lock_irqsave will turn off +interrupts if they are on, otherwise does nothing (if we are already +in an interrupt handler), hence these functions are safe to call from +any context. + + +Unfortunately, cache_add calls +kmalloc with the GFP_KERNEL +flag, which is only legal in user context. I have assumed that +cache_add is still only called in user context, +otherwise this should become a parameter to +cache_add. + + + + Exposing Objects Outside This File + +If our objects contained more information, it might not be sufficient +to copy the information in and out: other parts of the code might want +to keep pointers to these objects, for example, rather than looking up +the id every time. This produces two problems. + + +The first problem is that we use the cache_lock to +protect objects: we'd need to make this non-static so the rest of the +code can use it. This makes locking trickier, as it is no longer all +in one place. + + +The second problem is the lifetime problem: if another structure keeps +a pointer to an object, it presumably expects that pointer to remain +valid. Unfortunately, this is only guaranteed while you hold the +lock, otherwise someone might call cache_delete +and even worse, add another object, re-using the same address. + + +As there is only one lock, you can't hold it forever: no-one else would +get any work done. + + +The solution to this problem is to use a reference count: everyone who +has a pointer to the object increases it when they first get the +object, and drops the reference count when they're finished with it. +Whoever drops it to zero knows it is unused, and can actually delete it. + + +Here is the code: + + + +--- cache.c.interrupt 2003-12-09 14:25:43.000000000 +1100 ++++ cache.c.refcnt 2003-12-09 14:33:05.000000000 +1100 +@@ -7,6 +7,7 @@ + struct object + { + struct list_head list; ++ unsigned int refcnt; + int id; + char name[32]; + int popularity; +@@ -17,6 +18,35 @@ + static unsigned int cache_num = 0; + #define MAX_CACHE_SIZE 10 + ++static void __object_put(struct object *obj) ++{ ++ if (--obj->refcnt == 0) ++ kfree(obj); ++} ++ ++static void __object_get(struct object *obj) ++{ ++ obj->refcnt++; ++} ++ ++void object_put(struct object *obj) ++{ ++ unsigned long flags; ++ ++ spin_lock_irqsave(&cache_lock, flags); ++ __object_put(obj); ++ spin_unlock_irqrestore(&cache_lock, flags); ++} ++ ++void object_get(struct object *obj) ++{ ++ unsigned long flags; ++ ++ spin_lock_irqsave(&cache_lock, flags); ++ __object_get(obj); ++ spin_unlock_irqrestore(&cache_lock, flags); ++} ++ + /* Must be holding cache_lock */ + static struct object *__cache_find(int id) + { +@@ -35,6 +65,7 @@ + { + BUG_ON(!obj); + list_del(&obj->list); ++ __object_put(obj); + cache_num--; + } + +@@ -63,6 +94,7 @@ + strlcpy(obj->name, name, sizeof(obj->name)); + obj->id = id; + obj->popularity = 0; ++ obj->refcnt = 1; /* The cache holds a reference */ + + spin_lock_irqsave(&cache_lock, flags); + __cache_add(obj); +@@ -79,18 +111,15 @@ + spin_unlock_irqrestore(&cache_lock, flags); + } + +-int cache_find(int id, char *name) ++struct object *cache_find(int id) + { + struct object *obj; +- int ret = -ENOENT; + unsigned long flags; + + spin_lock_irqsave(&cache_lock, flags); + obj = __cache_find(id); +- if (obj) { +- ret = 0; +- strcpy(name, obj->name); +- } ++ if (obj) ++ __object_get(obj); + spin_unlock_irqrestore(&cache_lock, flags); +- return ret; ++ return obj; + } + + + +We encapsulate the reference counting in the standard 'get' and 'put' +functions. Now we can return the object itself from +cache_find which has the advantage that the user +can now sleep holding the object (eg. to +copy_to_user to name to userspace). + + +The other point to note is that I said a reference should be held for +every pointer to the object: thus the reference count is 1 when first +inserted into the cache. In some versions the framework does not hold +a reference count, but they are more complicated. + + + + Using Atomic Operations For The Reference Count + +In practice, atomic_t would usually be used for +refcnt. There are a number of atomic +operations defined in + +include/asm/atomic.h: these are +guaranteed to be seen atomically from all CPUs in the system, so no +lock is required. In this case, it is simpler than using spinlocks, +although for anything non-trivial using spinlocks is clearer. The +atomic_inc and +atomic_dec_and_test are used instead of the +standard increment and decrement operators, and the lock is no longer +used to protect the reference count itself. + + + +--- cache.c.refcnt 2003-12-09 15:00:35.000000000 +1100 ++++ cache.c.refcnt-atomic 2003-12-11 15:49:42.000000000 +1100 +@@ -7,7 +7,7 @@ + struct object + { + struct list_head list; +- unsigned int refcnt; ++ atomic_t refcnt; + int id; + char name[32]; + int popularity; +@@ -18,33 +18,15 @@ + static unsigned int cache_num = 0; + #define MAX_CACHE_SIZE 10 + +-static void __object_put(struct object *obj) +-{ +- if (--obj->refcnt == 0) +- kfree(obj); +-} +- +-static void __object_get(struct object *obj) +-{ +- obj->refcnt++; +-} +- + void object_put(struct object *obj) + { +- unsigned long flags; +- +- spin_lock_irqsave(&cache_lock, flags); +- __object_put(obj); +- spin_unlock_irqrestore(&cache_lock, flags); ++ if (atomic_dec_and_test(&obj->refcnt)) ++ kfree(obj); + } + + void object_get(struct object *obj) + { +- unsigned long flags; +- +- spin_lock_irqsave(&cache_lock, flags); +- __object_get(obj); +- spin_unlock_irqrestore(&cache_lock, flags); ++ atomic_inc(&obj->refcnt); + } + + /* Must be holding cache_lock */ +@@ -65,7 +47,7 @@ + { + BUG_ON(!obj); + list_del(&obj->list); +- __object_put(obj); ++ object_put(obj); + cache_num--; + } + +@@ -94,7 +76,7 @@ + strlcpy(obj->name, name, sizeof(obj->name)); + obj->id = id; + obj->popularity = 0; +- obj->refcnt = 1; /* The cache holds a reference */ ++ atomic_set(&obj->refcnt, 1); /* The cache holds a reference */ + + spin_lock_irqsave(&cache_lock, flags); + __cache_add(obj); +@@ -119,7 +101,7 @@ + spin_lock_irqsave(&cache_lock, flags); + obj = __cache_find(id); + if (obj) +- __object_get(obj); ++ object_get(obj); + spin_unlock_irqrestore(&cache_lock, flags); + return obj; + } + + + + + + Protecting The Objects Themselves + +In these examples, we assumed that the objects (except the reference +counts) never changed once they are created. If we wanted to allow +the name to change, there are three possibilities: + + + + +You can make cache_lock non-static, and tell people +to grab that lock before changing the name in any object. + + + + +You can provide a cache_obj_rename which grabs +this lock and changes the name for the caller, and tell everyone to +use that function. + + + + +You can make the cache_lock protect only the cache +itself, and use another lock to protect the name. + + + + + +Theoretically, you can make the locks as fine-grained as one lock for +every field, for every object. In practice, the most common variants +are: + + + + +One lock which protects the infrastructure (the cache +list in this example) and all the objects. This is what we have done +so far. + + + + +One lock which protects the infrastructure (including the list +pointers inside the objects), and one lock inside the object which +protects the rest of that object. + + + + +Multiple locks to protect the infrastructure (eg. one lock per hash +chain), possibly with a separate per-object lock. + + + + + +Here is the "lock-per-object" implementation: + + +--- cache.c.refcnt-atomic 2003-12-11 15:50:54.000000000 +1100 ++++ cache.c.perobjectlock 2003-12-11 17:15:03.000000000 +1100 +@@ -6,11 +6,17 @@ + + struct object + { ++ /* These two protected by cache_lock. */ + struct list_head list; ++ int popularity; ++ + atomic_t refcnt; ++ ++ /* Doesn't change once created. */ + int id; ++ ++ spinlock_t lock; /* Protects the name */ + char name[32]; +- int popularity; + }; + + static spinlock_t cache_lock = SPIN_LOCK_UNLOCKED; +@@ -77,6 +84,7 @@ + obj->id = id; + obj->popularity = 0; + atomic_set(&obj->refcnt, 1); /* The cache holds a reference */ ++ spin_lock_init(&obj->lock); + + spin_lock_irqsave(&cache_lock, flags); + __cache_add(obj); + + + +Note that I decide that the popularity +count should be protected by the cache_lock rather +than the per-object lock: this is because it (like the +struct list_head inside the object) is +logically part of the infrastructure. This way, I don't need to grab +the lock of every object in __cache_add when +seeking the least popular. + + + +I also decided that the id member is +unchangeable, so I don't need to grab each object lock in +__cache_find() to examine the +id: the object lock is only used by a +caller who wants to read or write the name +field. + + + +Note also that I added a comment describing what data was protected by +which locks. This is extremely important, as it describes the runtime +behavior of the code, and can be hard to gain from just reading. And +as Alan Cox says, Lock data, not code. + + + + + + Common Problems + + Deadlock: Simple and Advanced + + + There is a coding bug where a piece of code tries to grab a + spinlock twice: it will spin forever, waiting for the lock to + be released (spinlocks, rwlocks and semaphores are not + recursive in Linux). This is trivial to diagnose: not a + stay-up-five-nights-talk-to-fluffy-code-bunnies kind of + problem. + + + + For a slightly more complex case, imagine you have a region + shared by a softirq and user context. If you use a + spin_lock() call to protect it, it is + possible that the user context will be interrupted by the softirq + while it holds the lock, and the softirq will then spin + forever trying to get the same lock. + + + + Both of these are called deadlock, and as shown above, it can + occur even with a single CPU (although not on UP compiles, + since spinlocks vanish on kernel compiles with + CONFIG_SMP=n. You'll still get data corruption + in the second example). + + + + This complete lockup is easy to diagnose: on SMP boxes the + watchdog timer or compiling with DEBUG_SPINLOCKS set + (include/linux/spinlock.h) will show this up + immediately when it happens. + + + + A more complex problem is the so-called 'deadly embrace', + involving two or more locks. Say you have a hash table: each + entry in the table is a spinlock, and a chain of hashed + objects. Inside a softirq handler, you sometimes want to + alter an object from one place in the hash to another: you + grab the spinlock of the old hash chain and the spinlock of + the new hash chain, and delete the object from the old one, + and insert it in the new one. + + + + There are two problems here. First, if your code ever + tries to move the object to the same chain, it will deadlock + with itself as it tries to lock it twice. Secondly, if the + same softirq on another CPU is trying to move another object + in the reverse direction, the following could happen: + + + + Consequences + + + + + + CPU 1 + CPU 2 + + + + + + Grab lock A -> OK + Grab lock B -> OK + + + Grab lock B -> spin + Grab lock A -> spin + + + +
+ + + The two CPUs will spin forever, waiting for the other to give up + their lock. It will look, smell, and feel like a crash. + +
+ + + Preventing Deadlock + + + Textbooks will tell you that if you always lock in the same + order, you will never get this kind of deadlock. Practice + will tell you that this approach doesn't scale: when I + create a new lock, I don't understand enough of the kernel + to figure out where in the 5000 lock hierarchy it will fit. + + + + The best locks are encapsulated: they never get exposed in + headers, and are never held around calls to non-trivial + functions outside the same file. You can read through this + code and see that it will never deadlock, because it never + tries to grab another lock while it has that one. People + using your code don't even need to know you are using a + lock. + + + + A classic problem here is when you provide callbacks or + hooks: if you call these with the lock held, you risk simple + deadlock, or a deadly embrace (who knows what the callback + will do?). Remember, the other programmers are out to get + you, so don't do this. + + + + Overzealous Prevention Of Deadlocks + + + Deadlocks are problematic, but not as bad as data + corruption. Code which grabs a read lock, searches a list, + fails to find what it wants, drops the read lock, grabs a + write lock and inserts the object has a race condition. + + + + If you don't see why, please stay the fuck away from my code. + + + + + + Racing Timers: A Kernel Pastime + + + Timers can produce their own special problems with races. + Consider a collection of objects (list, hash, etc) where each + object has a timer which is due to destroy it. + + + + If you want to destroy the entire collection (say on module + removal), you might do the following: + + + + /* THIS CODE BAD BAD BAD BAD: IF IT WAS ANY WORSE IT WOULD USE + HUNGARIAN NOTATION */ + spin_lock_bh(&list_lock); + + while (list) { + struct foo *next = list->next; + del_timer(&list->timer); + kfree(list); + list = next; + } + + spin_unlock_bh(&list_lock); + + + + Sooner or later, this will crash on SMP, because a timer can + have just gone off before the spin_lock_bh(), + and it will only get the lock after we + spin_unlock_bh(), and then try to free + the element (which has already been freed!). + + + + This can be avoided by checking the result of + del_timer(): if it returns + 1, the timer has been deleted. + If 0, it means (in this + case) that it is currently running, so we can do: + + + + retry: + spin_lock_bh(&list_lock); + + while (list) { + struct foo *next = list->next; + if (!del_timer(&list->timer)) { + /* Give timer a chance to delete this */ + spin_unlock_bh(&list_lock); + goto retry; + } + kfree(list); + list = next; + } + + spin_unlock_bh(&list_lock); + + + + Another common problem is deleting timers which restart + themselves (by calling add_timer() at the end + of their timer function). Because this is a fairly common case + which is prone to races, you should use del_timer_sync() + (include/linux/timer.h) + to handle this case. It returns the number of times the timer + had to be deleted before we finally stopped it from adding itself back + in. + + + +
+ + + Locking Speed + + +There are three main things to worry about when considering speed of +some code which does locking. First is concurrency: how many things +are going to be waiting while someone else is holding a lock. Second +is the time taken to actually acquire and release an uncontended lock. +Third is using fewer, or smarter locks. I'm assuming that the lock is +used fairly often: otherwise, you wouldn't be concerned about +efficiency. + + +Concurrency depends on how long the lock is usually held: you should +hold the lock for as long as needed, but no longer. In the cache +example, we always create the object without the lock held, and then +grab the lock only when we are ready to insert it in the list. + + +Acquisition times depend on how much damage the lock operations do to +the pipeline (pipeline stalls) and how likely it is that this CPU was +the last one to grab the lock (ie. is the lock cache-hot for this +CPU): on a machine with more CPUs, this likelihood drops fast. +Consider a 700MHz Intel Pentium III: an instruction takes about 0.7ns, +an atomic increment takes about 58ns, a lock which is cache-hot on +this CPU takes 160ns, and a cacheline transfer from another CPU takes +an additional 170 to 360ns. (These figures from Paul McKenney's + Linux +Journal RCU article). + + +These two aims conflict: holding a lock for a short time might be done +by splitting locks into parts (such as in our final per-object-lock +example), but this increases the number of lock acquisitions, and the +results are often slower than having a single lock. This is another +reason to advocate locking simplicity. + + +The third concern is addressed below: there are some methods to reduce +the amount of locking which needs to be done. + + + + Read/Write Lock Variants + + + Both spinlocks and semaphores have read/write variants: + rwlock_t and struct rw_semaphore. + These divide users into two classes: the readers and the writers. If + you are only reading the data, you can get a read lock, but to write to + the data you need the write lock. Many people can hold a read lock, + but a writer must be sole holder. + + + + If your code divides neatly along reader/writer lines (as our + cache code does), and the lock is held by readers for + significant lengths of time, using these locks can help. They + are slightly slower than the normal locks though, so in practice + rwlock_t is not usually worthwhile. + + + + + Avoiding Locks: Read Copy Update + + + There is a special method of read/write locking called Read Copy + Update. Using RCU, the readers can avoid taking a lock + altogether: as we expect our cache to be read more often than + updated (otherwise the cache is a waste of time), it is a + candidate for this optimization. + + + + How do we get rid of read locks? Getting rid of read locks + means that writers may be changing the list underneath the + readers. That is actually quite simple: we can read a linked + list while an element is being added if the writer adds the + element very carefully. For example, adding + new to a single linked list called + list: + + + + new->next = list->next; + wmb(); + list->next = new; + + + + The wmb() is a write memory barrier. It + ensures that the first operation (setting the new element's + next pointer) is complete and will be seen by + all CPUs, before the second operation is (putting the new + element into the list). This is important, since modern + compilers and modern CPUs can both reorder instructions unless + told otherwise: we want a reader to either not see the new + element at all, or see the new element with the + next pointer correctly pointing at the rest of + the list. + + + Fortunately, there is a function to do this for standard + struct list_head lists: + list_add_rcu() + (include/linux/list.h). + + + Removing an element from the list is even simpler: we replace + the pointer to the old element with a pointer to its successor, + and readers will either see it, or skip over it. + + + list->next = old->next; + + + There is list_del_rcu() + (include/linux/list.h) which does this (the + normal version poisons the old object, which we don't want). + + + The reader must also be careful: some CPUs can look through the + next pointer to start reading the contents of + the next element early, but don't realize that the pre-fetched + contents is wrong when the next pointer changes + underneath them. Once again, there is a + list_for_each_entry_rcu() + (include/linux/list.h) to help you. Of + course, writers can just use + list_for_each_entry(), since there cannot + be two simultaneous writers. + + + Our final dilemma is this: when can we actually destroy the + removed element? Remember, a reader might be stepping through + this element in the list right now: it we free this element and + the next pointer changes, the reader will jump + off into garbage and crash. We need to wait until we know that + all the readers who were traversing the list when we deleted the + element are finished. We use call_rcu() to + register a callback which will actually destroy the object once + the readers are finished. + + + But how does Read Copy Update know when the readers are + finished? The method is this: firstly, the readers always + traverse the list inside + rcu_read_lock()/rcu_read_unlock() + pairs: these simply disable preemption so the reader won't go to + sleep while reading the list. + + + RCU then waits until every other CPU has slept at least once: + since readers cannot sleep, we know that any readers which were + traversing the list during the deletion are finished, and the + callback is triggered. The real Read Copy Update code is a + little more optimized than this, but this is the fundamental + idea. + + + +--- cache.c.perobjectlock 2003-12-11 17:15:03.000000000 +1100 ++++ cache.c.rcupdate 2003-12-11 17:55:14.000000000 +1100 +@@ -1,15 +1,18 @@ + #include <linux/list.h> + #include <linux/slab.h> + #include <linux/string.h> ++#include <linux/rcupdate.h> + #include <asm/semaphore.h> + #include <asm/errno.h> + + struct object + { +- /* These two protected by cache_lock. */ ++ /* This is protected by RCU */ + struct list_head list; + int popularity; + ++ struct rcu_head rcu; ++ + atomic_t refcnt; + + /* Doesn't change once created. */ +@@ -40,7 +43,7 @@ + { + struct object *i; + +- list_for_each_entry(i, &cache, list) { ++ list_for_each_entry_rcu(i, &cache, list) { + if (i->id == id) { + i->popularity++; + return i; +@@ -49,19 +52,25 @@ + return NULL; + } + ++/* Final discard done once we know no readers are looking. */ ++static void cache_delete_rcu(void *arg) ++{ ++ object_put(arg); ++} ++ + /* Must be holding cache_lock */ + static void __cache_delete(struct object *obj) + { + BUG_ON(!obj); +- list_del(&obj->list); +- object_put(obj); ++ list_del_rcu(&obj->list); + cache_num--; ++ call_rcu(&obj->rcu, cache_delete_rcu, obj); + } + + /* Must be holding cache_lock */ + static void __cache_add(struct object *obj) + { +- list_add(&obj->list, &cache); ++ list_add_rcu(&obj->list, &cache); + if (++cache_num > MAX_CACHE_SIZE) { + struct object *i, *outcast = NULL; + list_for_each_entry(i, &cache, list) { +@@ -85,6 +94,7 @@ + obj->popularity = 0; + atomic_set(&obj->refcnt, 1); /* The cache holds a reference */ + spin_lock_init(&obj->lock); ++ INIT_RCU_HEAD(&obj->rcu); + + spin_lock_irqsave(&cache_lock, flags); + __cache_add(obj); +@@ -104,12 +114,11 @@ + struct object *cache_find(int id) + { + struct object *obj; +- unsigned long flags; + +- spin_lock_irqsave(&cache_lock, flags); ++ rcu_read_lock(); + obj = __cache_find(id); + if (obj) + object_get(obj); +- spin_unlock_irqrestore(&cache_lock, flags); ++ rcu_read_unlock(); + return obj; + } + + + +Note that the reader will alter the +popularity member in +__cache_find(), and now it doesn't hold a lock. +One solution would be to make it an atomic_t, but for +this usage, we don't really care about races: an approximate result is +good enough, so I didn't change it. + + + +The result is that cache_find() requires no +synchronization with any other functions, so is almost as fast on SMP +as it would be on UP. + + + +There is a furthur optimization possible here: remember our original +cache code, where there were no reference counts and the caller simply +held the lock whenever using the object? This is still possible: if +you hold the lock, noone can delete the object, so you don't need to +get and put the reference count. + + + +Now, because the 'read lock' in RCU is simply disabling preemption, a +caller which always has preemption disabled between calling +cache_find() and +object_put() does not need to actually get and +put the reference count: we could expose +__cache_find() by making it non-static, and +such callers could simply call that. + + +The benefit here is that the reference count is not written to: the +object is not altered in any way, which is much faster on SMP +machines due to caching. + + + + + Per-CPU Data + + + Another technique for avoiding locking which is used fairly + widely is to duplicate information for each CPU. For example, + if you wanted to keep a count of a common condition, you could + use a spin lock and a single counter. Nice and simple. + + + + If that was too slow (it's usually not, but if you've got a + really big machine to test on and can show that it is), you + could instead use a counter for each CPU, then none of them need + an exclusive lock. See DEFINE_PER_CPU(), + get_cpu_var() and + put_cpu_var() + (include/linux/percpu.h). + + + + Of particular use for simple per-cpu counters is the + local_t type, and the + cpu_local_inc() and related functions, + which are more efficient than simple code on some architectures + (include/asm/local.h). + + + + Note that there is no simple, reliable way of getting an exact + value of such a counter, without introducing more locks. This + is not a problem for some uses. + + + + + Data Which Mostly Used By An IRQ Handler + + + If data is always accessed from within the same IRQ handler, you + don't need a lock at all: the kernel already guarantees that the + irq handler will not run simultaneously on multiple CPUs. + + + Manfred Spraul points out that you can still do this, even if + the data is very occasionally accessed in user context or + softirqs/tasklets. The irq handler doesn't use a lock, and + all other accesses are done as so: + + + + spin_lock(&lock); + disable_irq(irq); + ... + enable_irq(irq); + spin_unlock(&lock); + + + The disable_irq() prevents the irq handler + from running (and waits for it to finish if it's currently + running on other CPUs). The spinlock prevents any other + accesses happening at the same time. Naturally, this is slower + than just a spin_lock_irq() call, so it + only makes sense if this type of access happens extremely + rarely. + + + + + + What Functions Are Safe To Call From Interrupts? + + + Many functions in the kernel sleep (ie. call schedule()) + directly or indirectly: you can never call them while holding a + spinlock, or with preemption disabled. This also means you need + to be in user context: calling them from an interrupt is illegal. + + + + Some Functions Which Sleep + + + The most common ones are listed below, but you usually have to + read the code to find out if other calls are safe. If everyone + else who calls it can sleep, you probably need to be able to + sleep, too. In particular, registration and deregistration + functions usually expect to be called from user context, and can + sleep. + + + + + + Accesses to + userspace: + + + + + copy_from_user() + + + + + copy_to_user() + + + + + get_user() + + + + + put_user() + + + + + + + + kmalloc(GFP_KERNEL) + + + + + + down_interruptible() and + down() + + + There is a down_trylock() which can be + used inside interrupt context, as it will not sleep. + up() will also never sleep. + + + + + + + Some Functions Which Don't Sleep + + + Some functions are safe to call from any context, or holding + almost any lock. + + + + + + printk() + + + + + kfree() + + + + + add_timer() and del_timer() + + + + + + + + Further reading + + + + + Documentation/spinlocks.txt: + Linus Torvalds' spinlocking tutorial in the kernel sources. + + + + + + Unix Systems for Modern Architectures: Symmetric + Multiprocessing and Caching for Kernel Programmers: + + + + Curt Schimmel's very good introduction to kernel level + locking (not written for Linux, but nearly everything + applies). The book is expensive, but really worth every + penny to understand SMP locking. [ISBN: 0201633388] + + + + + + + Thanks + + + Thanks to Telsa Gwynne for DocBooking, neatening and adding + style. + + + + Thanks to Martin Pool, Philipp Rumpf, Stephen Rothwell, Paul + Mackerras, Ruedi Aschwanden, Alan Cox, Manfred Spraul, Tim + Waugh, Pete Zaitcev, James Morris, Robert Love, Paul McKenney, + John Ashby for proofreading, correcting, flaming, commenting. + + + + Thanks to the cabal for having no influence on this document. + + + + + Glossary + + + preemption + + + Prior to 2.5, or when CONFIG_PREEMPT is + unset, processes in user context inside the kernel would not + preempt each other (ie. you had that CPU until you have it up, + except for interrupts). With the addition of + CONFIG_PREEMPT in 2.5.4, this changed: when + in user context, higher priority tasks can "cut in": spinlocks + were changed to disable preemption, even on UP. + + + + + + bh + + + Bottom Half: for historical reasons, functions with + '_bh' in them often now refer to any software interrupt, e.g. + spin_lock_bh() blocks any software interrupt + on the current CPU. Bottom halves are deprecated, and will + eventually be replaced by tasklets. Only one bottom half will be + running at any time. + + + + + + Hardware Interrupt / Hardware IRQ + + + Hardware interrupt request. in_irq() returns + true in a hardware interrupt handler. + + + + + + Interrupt Context + + + Not user context: processing a hardware irq or software irq. + Indicated by the in_interrupt() macro + returning true. + + + + + + SMP + + + Symmetric Multi-Processor: kernels compiled for multiple-CPU + machines. (CONFIG_SMP=y). + + + + + + Software Interrupt / softirq + + + Software interrupt handler. in_irq() returns + false; in_softirq() + returns true. Tasklets and softirqs + both fall into the category of 'software interrupts'. + + + Strictly speaking a softirq is one of up to 32 enumerated software + interrupts which can run on multiple CPUs at once. + Sometimes used to refer to tasklets as + well (ie. all software interrupts). + + + + + + tasklet + + + A dynamically-registrable software interrupt, + which is guaranteed to only run on one CPU at a time. + + + + + + timer + + + A dynamically-registrable software interrupt, which is run at + (or close to) a given time. When running, it is just like a + tasklet (in fact, they are called from the TIMER_SOFTIRQ). + + + + + + UP + + + Uni-Processor: Non-SMP. (CONFIG_SMP=n). + + + + + + User Context + + + The kernel executing on behalf of a particular process (ie. a + system call or trap) or kernel thread. You can tell which + process with the current macro.) Not to + be confused with userspace. Can be interrupted by software or + hardware interrupts. + + + + + + Userspace + + + A process executing its own code outside the kernel. + + + + + +
+ diff --git a/Documentation/DocBook/libata.tmpl b/Documentation/DocBook/libata.tmpl new file mode 100644 index 000000000000..cf2fce7707da --- /dev/null +++ b/Documentation/DocBook/libata.tmpl @@ -0,0 +1,282 @@ + + + + + + libATA Developer's Guide + + + + Jeff + Garzik + + + + + 2003 + Jeff Garzik + + + + + The contents of this file are subject to the Open + Software License version 1.1 that can be found at + http://www.opensource.org/licenses/osl-1.1.txt and is included herein + by reference. + + + + Alternatively, the contents of this file may be used under the terms + of the GNU General Public License version 2 (the "GPL") as distributed + in the kernel source COPYING file, in which case the provisions of + the GPL are applicable instead of the above. If you wish to allow + the use of your version of this file only under the terms of the + GPL and not to allow others to use your version of this file under + the OSL, indicate your decision by deleting the provisions above and + replace them with the notice and other provisions required by the GPL. + If you do not delete the provisions above, a recipient may use your + version of this file under either the OSL or the GPL. + + + + + + + + + Thanks + + The bulk of the ATA knowledge comes thanks to long conversations with + Andre Hedrick (www.linux-ide.org). + + + Thanks to Alan Cox for pointing out similarities + between SATA and SCSI, and in general for motivation to hack on + libata. + + + libata's device detection + method, ata_pio_devchk, and in general all the early probing was + based on extensive study of Hale Landis's probe/reset code in his + ATADRVR driver (www.ata-atapi.com). + + + + + 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 + + + + libata Core Internals +!Idrivers/scsi/libata-core.c + + + + libata SCSI translation/emulation +!Edrivers/scsi/libata-scsi.c +!Idrivers/scsi/libata-scsi.c + + + + ata_piix Internals +!Idrivers/scsi/ata_piix.c + + + + sata_sil Internals +!Idrivers/scsi/sata_sil.c + + + diff --git a/Documentation/DocBook/librs.tmpl b/Documentation/DocBook/librs.tmpl new file mode 100644 index 000000000000..3ff39bafc00e --- /dev/null +++ b/Documentation/DocBook/librs.tmpl @@ -0,0 +1,289 @@ + + + + + + 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/lsm.tmpl b/Documentation/DocBook/lsm.tmpl new file mode 100644 index 000000000000..f63822195871 --- /dev/null +++ b/Documentation/DocBook/lsm.tmpl @@ -0,0 +1,265 @@ + + + +
+ + Linux Security Modules: General Security Hooks for Linux + + + Stephen + Smalley + + NAI Labs +
ssmalley@nai.com
+
+
+ + Timothy + Fraser + + NAI Labs +
tfraser@nai.com
+
+
+ + Chris + Vance + + NAI Labs +
cvance@nai.com
+
+
+
+
+ +Introduction + + +In March 2001, the National Security Agency (NSA) gave a presentation +about Security-Enhanced Linux (SELinux) at the 2.5 Linux Kernel +Summit. SELinux is an implementation of flexible and fine-grained +nondiscretionary access controls in the Linux kernel, originally +implemented as its own particular kernel patch. Several other +security projects (e.g. RSBAC, Medusa) have also developed flexible +access control architectures for the Linux kernel, and various +projects have developed particular access control models for Linux +(e.g. LIDS, DTE, SubDomain). Each project has developed and +maintained its own kernel patch to support its security needs. + + + +In response to the NSA presentation, Linus Torvalds made a set of +remarks that described a security framework he would be willing to +consider for inclusion in the mainstream Linux kernel. He described a +general framework that would provide a set of security hooks to +control operations on kernel objects and a set of opaque security +fields in kernel data structures for maintaining security attributes. +This framework could then be used by loadable kernel modules to +implement any desired model of security. Linus also suggested the +possibility of migrating the Linux capabilities code into such a +module. + + + +The Linux Security Modules (LSM) project was started by WireX to +develop such a framework. LSM is a joint development effort by +several security projects, including Immunix, SELinux, SGI and Janus, +and several individuals, including Greg Kroah-Hartman and James +Morris, to develop a Linux kernel patch that implements this +framework. The patch is currently tracking the 2.4 series and is +targeted for integration into the 2.5 development series. This +technical report provides an overview of the framework and the example +capabilities security module provided by the LSM kernel patch. + + + + +LSM Framework + + +The LSM kernel patch provides a general kernel framework to support +security modules. In particular, the LSM framework is primarily +focused on supporting access control modules, although future +development is likely to address other security needs such as +auditing. By itself, the framework does not provide any additional +security; it merely provides the infrastructure to support security +modules. The LSM kernel patch also moves most of the capabilities +logic into an optional security module, with the system defaulting +to the traditional superuser logic. This capabilities module +is discussed further in . + + + +The LSM kernel patch adds security fields to kernel data structures +and inserts calls to hook functions at critical points in the kernel +code to manage the security fields and to perform access control. It +also adds functions for registering and unregistering security +modules, and adds a general security system call +to support new system calls for security-aware applications. + + + +The LSM security fields are simply void* pointers. For +process and program execution security information, security fields +were added to struct task_struct and +struct linux_binprm. For filesystem security +information, a security field was added to +struct super_block. For pipe, file, and socket +security information, security fields were added to +struct inode and +struct file. For packet and network device security +information, security fields were added to +struct sk_buff and +struct net_device. For System V IPC security +information, security fields were added to +struct kern_ipc_perm and +struct msg_msg; additionally, the definitions +for struct msg_msg, struct +msg_queue, and struct +shmid_kernel were moved to header files +(include/linux/msg.h and +include/linux/shm.h as appropriate) to allow +the security modules to use these definitions. + + + +Each LSM hook is a function pointer in a global table, +security_ops. This table is a +security_operations structure as defined by +include/linux/security.h. Detailed documentation +for each hook is included in this header file. At present, this +structure consists of a collection of substructures that group related +hooks based on the kernel object (e.g. task, inode, file, sk_buff, +etc) as well as some top-level hook function pointers for system +operations. This structure is likely to be flattened in the future +for performance. The placement of the hook calls in the kernel code +is described by the "called:" lines in the per-hook documentation in +the header file. The hook calls can also be easily found in the +kernel code by looking for the string "security_ops->". + + + + +Linus mentioned per-process security hooks in his original remarks as a +possible alternative to global security hooks. However, if LSM were +to start from the perspective of per-process hooks, then the base +framework would have to deal with how to handle operations that +involve multiple processes (e.g. kill), since each process might have +its own hook for controlling the operation. This would require a +general mechanism for composing hooks in the base framework. +Additionally, LSM would still need global hooks for operations that +have no process context (e.g. network input operations). +Consequently, LSM provides global security hooks, but a security +module is free to implement per-process hooks (where that makes sense) +by storing a security_ops table in each process' security field and +then invoking these per-process hooks from the global hooks. +The problem of composition is thus deferred to the module. + + + +The global security_ops table is initialized to a set of hook +functions provided by a dummy security module that provides +traditional superuser logic. A register_security +function (in security/security.c) is provided to +allow a security module to set security_ops to refer to its own hook +functions, and an unregister_security function is +provided to revert security_ops to the dummy module hooks. This +mechanism is used to set the primary security module, which is +responsible for making the final decision for each hook. + + + +LSM also provides a simple mechanism for stacking additional security +modules with the primary security module. It defines +register_security and +unregister_security hooks in the +security_operations structure and provides +mod_reg_security and +mod_unreg_security functions that invoke these +hooks after performing some sanity checking. A security module can +call these functions in order to stack with other modules. However, +the actual details of how this stacking is handled are deferred to the +module, which can implement these hooks in any way it wishes +(including always returning an error if it does not wish to support +stacking). In this manner, LSM again defers the problem of +composition to the module. + + + +Although the LSM hooks are organized into substructures based on +kernel object, all of the hooks can be viewed as falling into two +major categories: hooks that are used to manage the security fields +and hooks that are used to perform access control. Examples of the +first category of hooks include the +alloc_security and +free_security hooks defined for each kernel data +structure that has a security field. These hooks are used to allocate +and free security structures for kernel objects. The first category +of hooks also includes hooks that set information in the security +field after allocation, such as the post_lookup +hook in struct inode_security_ops. This hook +is used to set security information for inodes after successful lookup +operations. An example of the second category of hooks is the +permission hook in +struct inode_security_ops. This hook checks +permission when accessing an inode. + + + + +LSM Capabilities Module + + +The LSM kernel patch moves most of the existing POSIX.1e capabilities +logic into an optional security module stored in the file +security/capability.c. This change allows +users who do not want to use capabilities to omit this code entirely +from their kernel, instead using the dummy module for traditional +superuser logic or any other module that they desire. This change +also allows the developers of the capabilities logic to maintain and +enhance their code more freely, without needing to integrate patches +back into the base kernel. + + + +In addition to moving the capabilities logic, the LSM kernel patch +could move the capability-related fields from the kernel data +structures into the new security fields managed by the security +modules. However, at present, the LSM kernel patch leaves the +capability fields in the kernel data structures. In his original +remarks, Linus suggested that this might be preferable so that other +security modules can be easily stacked with the capabilities module +without needing to chain multiple security structures on the security field. +It also avoids imposing extra overhead on the capabilities module +to manage the security fields. However, the LSM framework could +certainly support such a move if it is determined to be desirable, +with only a few additional changes described below. + + + +At present, the capabilities logic for computing process capabilities +on execve and set*uid, +checking capabilities for a particular process, saving and checking +capabilities for netlink messages, and handling the +capget and capset system +calls have been moved into the capabilities module. There are still a +few locations in the base kernel where capability-related fields are +directly examined or modified, but the current version of the LSM +patch does allow a security module to completely replace the +assignment and testing of capabilities. These few locations would +need to be changed if the capability-related fields were moved into +the security field. The following is a list of known locations that +still perform such direct examination or modification of +capability-related fields: + +fs/open.c:sys_access +fs/lockd/host.c:nlm_bind_host +fs/nfsd/auth.c:nfsd_setuser +fs/proc/array.c:task_cap + + + + + +
diff --git a/Documentation/DocBook/man/Makefile b/Documentation/DocBook/man/Makefile new file mode 100644 index 000000000000..4fb7ea0f7ac8 --- /dev/null +++ b/Documentation/DocBook/man/Makefile @@ -0,0 +1,3 @@ +# Rules are put in Documentation/DocBook + +clean-files := *.9.gz *.sgml manpage.links manpage.refs diff --git a/Documentation/DocBook/mcabook.tmpl b/Documentation/DocBook/mcabook.tmpl new file mode 100644 index 000000000000..4367f4642f3d --- /dev/null +++ b/Documentation/DocBook/mcabook.tmpl @@ -0,0 +1,107 @@ + + + + + + MCA Driver Programming Interface + + + + Alan + Cox + +
+ alan@redhat.com +
+
+
+ + David + Weinehall + + + Chris + Beauregard + +
+ + + 2000 + Alan Cox + David Weinehall + Chris Beauregard + + + + + 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 + + The MCA bus functions provide a generalised interface to find MCA + bus cards, to claim them for a driver, and to read and manipulate POS + registers without being aware of the motherboard internals or + certain deep magic specific to onboard devices. + + + The basic interface to the MCA bus devices is the slot. Each slot + is numbered and virtual slot numbers are assigned to the internal + devices. Using a pci_dev as other busses do does not really make + sense in the MCA context as the MCA bus resources require card + specific interpretation. + + + Finally the MCA bus functions provide a parallel set of DMA + functions mimicing the ISA bus DMA functions as closely as possible, + although also supporting the additional DMA functionality on the + MCA bus controllers. + + + + Known Bugs And Assumptions + + None. + + + + + Public Functions Provided +!Earch/i386/kernel/mca.c + + + + DMA Functions Provided +!Iinclude/asm-i386/mca_dma.h + + +
diff --git a/Documentation/DocBook/mtdnand.tmpl b/Documentation/DocBook/mtdnand.tmpl new file mode 100644 index 000000000000..6e463d0db266 --- /dev/null +++ b/Documentation/DocBook/mtdnand.tmpl @@ -0,0 +1,1320 @@ + + + + + + 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 new file mode 100644 index 000000000000..45cad23efefa --- /dev/null +++ b/Documentation/DocBook/procfs-guide.tmpl @@ -0,0 +1,591 @@ + + +]> + + + + Linux Kernel Procfs Guide + + + + Erik + (J.A.K.) + Mouw + + Delft University of Technology + Faculty of Information Technology and Systems +
+ J.A.K.Mouw@its.tudelft.nl + PO BOX 5031 + 2600 GA + Delft + The Netherlands +
+
+
+
+ + + + 1.0  + May 30, 2001 + Initial revision posted to linux-kernel + + + 1.1  + June 3, 2001 + Revised after comments from linux-kernel + + + + + 2001 + Erik Mouw + + + + + + 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 documentation 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. + + +
+ + + + + + + + + + + + Preface + + + This guide describes the use of the procfs file system from + within the Linux kernel. The idea to write this guide came up on + the #kernelnewbies IRC channel (see http://www.kernelnewbies.org/), + when Jeff Garzik explained the use of procfs and forwarded me a + message Alexander Viro wrote to the linux-kernel mailing list. I + agreed to write it up nicely, so here it is. + + + + 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 Selfdocbook, + and Marc Joosen marcj@historia.et.tudelft.nl for + proofreading. + + + + This documentation was written while working on the LART + computing board (http://www.lart.tudelft.nl/), + which is sponsored by the Mobile Multi-media Communications + (http://www.mmc.tudelft.nl/) + and Ubiquitous Communications (http://www.ubicom.tudelft.nl/) + projects. + + + + Erik + + + + + + + + Introduction + + + The /proc file system + (procfs) is a special file system in the linux kernel. It's a + virtual file system: it is not associated with a block device + but exists only in memory. The files in the procfs are there to + allow userland programs access to certain information from the + kernel (like process information in /proc/[0-9]+/), but also for debug + purposes (like /proc/ksyms). + + + + This guide describes the use of the procfs file system from + within the Linux kernel. It starts by introducing all relevant + functions to manage the files within the file system. After that + it shows how to communicate with userland, and some tips and + tricks will be pointed out. Finally a complete example will be + shown. + + + + Note that the files in /proc/sys are sysctl files: they + don't belong to procfs and are governed by a completely + different API described in the Kernel API book. + + + + + + + + Managing procfs entries + + + This chapter describes the functions that various kernel + components use to populate the procfs with files, symlinks, + device nodes, and directories. + + + + A minor note before we start: if you want to use any of the + procfs functions, be sure to include the correct header file! + This should be one of the first lines in your code: + + + +#include <linux/proc_fs.h> + + + + + + + Creating a regular file + + + + struct proc_dir_entry* create_proc_entry + const char* name + mode_t mode + struct proc_dir_entry* parent + + + + + This function creates a regular file with the name + name, file mode + mode in the directory + parent. To create a file in the root of + the procfs, use NULL as + parent parameter. When successful, the + function will return a pointer to the freshly created + struct proc_dir_entry; otherwise it + will return NULL. describes how to do something useful with + regular files. + + + + Note that it is specifically supported that you can pass a + path that spans multiple directories. For example + create_proc_entry("drivers/via0/info") + will create the via0 + directory if necessary, with standard + 0755 permissions. + + + + If you only want to be able to read the file, the function + create_proc_read_entry described in may be used to create and initialise + the procfs entry in one single call. + + + + + + + + Creating a symlink + + + + struct proc_dir_entry* + proc_symlink const + char* name + struct proc_dir_entry* + parent const + char* dest + + + + + This creates a symlink in the procfs directory + parent that points from + name to + dest. This translates in userland to + ln -s dest + name. + + + + + Creating a directory + + + + struct proc_dir_entry* proc_mkdir + const char* name + struct proc_dir_entry* parent + + + + + Create a directory name in the procfs + directory parent. + + + + + + + + Removing an entry + + + + void remove_proc_entry + const char* name + struct proc_dir_entry* parent + + + + + Removes the entry name in the directory + parent from the procfs. Entries are + removed by their name, not by the + struct proc_dir_entry returned by the + various create functions. Note that this function doesn't + recursively remove entries. + + + + Be sure to free the data entry from + the struct proc_dir_entry before + remove_proc_entry is called (that is: if + there was some data allocated, of + course). See for more information + on using the data entry. + + + + + + + + + Communicating with userland + + + Instead of reading (or writing) information directly from + kernel memory, procfs works with call back + functions for files: functions that are called when + a specific file is being read or written. Such functions have + to be initialised after the procfs file is created by setting + the read_proc and/or + write_proc fields in the + struct proc_dir_entry* that the + function create_proc_entry returned: + + + +struct proc_dir_entry* entry; + +entry->read_proc = read_proc_foo; +entry->write_proc = write_proc_foo; + + + + If you only want to use a the + read_proc, the function + create_proc_read_entry described in may be used to create and initialise the + procfs entry in one single call. + + + + + + Reading data + + + The read function is a call back function that allows userland + processes to read data from the kernel. The read function + should have the following format: + + + + + int read_func + char* page + char** start + off_t off + int count + int* eof + void* data + + + + + The read function should write its information into the + page. For proper use, the function + should start writing at an offset of + off in page and + write at most count bytes, but because + most read functions are quite simple and only return a small + amount of information, these two parameters are usually + ignored (it breaks pagers like more and + less, but cat still + works). + + + + If the off and + count parameters are properly used, + eof should be used to signal that the + end of the file has been reached by writing + 1 to the memory location + eof points to. + + + + The parameter start doesn't seem to be + used anywhere in the kernel. The data + parameter can be used to create a single call back function for + several files, see . + + + + The read_func function must return the + number of bytes written into the page. + + + + shows how to use a read call back + function. + + + + + + + + Writing data + + + The write call back function allows a userland process to write + data to the kernel, so it has some kind of control over the + kernel. The write function should have the following format: + + + + + int write_func + struct file* file + const char* buffer + unsigned long count + void* data + + + + + The write function should read count + bytes at maximum from the buffer. Note + that the buffer doesn't live in the + kernel's memory space, so it should first be copied to kernel + space with copy_from_user. The + file parameter is usually + ignored. shows how to use the + data parameter. + + + + Again, shows how to use this call back + function. + + + + + + + + A single call back for many files + + + When a large number of almost identical files is used, it's + quite inconvenient to use a separate call back function for + each file. A better approach is to have a single call back + function that distinguishes between the files by using the + data field in struct + proc_dir_entry. First of all, the + data field has to be initialised: + + + +struct proc_dir_entry* entry; +struct my_file_data *file_data; + +file_data = kmalloc(sizeof(struct my_file_data), GFP_KERNEL); +entry->data = file_data; + + + + The data field is a void + *, so it can be initialised with anything. + + + + Now that the data field is set, the + read_proc and + write_proc can use it to distinguish + between files because they get it passed into their + data parameter: + + + +int foo_read_func(char *page, char **start, off_t off, + int count, int *eof, void *data) +{ + int len; + + if(data == file_data) { + /* special case for this file */ + } else { + /* normal processing */ + } + + return len; +} + + + + Be sure to free the data data field + when removing the procfs entry. + + + + + + + + + Tips and tricks + + + + + + Convenience functions + + + + struct proc_dir_entry* create_proc_read_entry + const char* name + mode_t mode + struct proc_dir_entry* parent + read_proc_t* read_proc + void* data + + + + + This function creates a regular file in exactly the same way + as create_proc_entry from does, but also allows to set the read + function read_proc in one call. This + function can set the data as well, like + explained in . + + + + + + + Modules + + + If procfs is being used from within a module, be sure to set + the owner field in the + struct proc_dir_entry to + THIS_MODULE. + + + +struct proc_dir_entry* entry; + +entry->owner = THIS_MODULE; + + + + + + + + Mode and ownership + + + Sometimes it is useful to change the mode and/or ownership of + a procfs entry. Here is an example that shows how to achieve + that: + + + +struct proc_dir_entry* entry; + +entry->mode = S_IWUSR |S_IRUSR | S_IRGRP | S_IROTH; +entry->uid = 0; +entry->gid = 100; + + + + + + + + + + Example + + + +&procfsexample; + + +
diff --git a/Documentation/DocBook/procfs_example.c b/Documentation/DocBook/procfs_example.c new file mode 100644 index 000000000000..7064084c1c5e --- /dev/null +++ b/Documentation/DocBook/procfs_example.c @@ -0,0 +1,224 @@ +/* + * procfs_example.c: an example proc interface + * + * Copyright (C) 2001, Erik Mouw (J.A.K.Mouw@its.tudelft.nl) + * + * This file accompanies the procfs-guide in the Linux kernel + * source. Its main use is to demonstrate the concepts and + * functions described in the guide. + * + * This software has been developed while working on the LART + * computing board (http://www.lart.tudelft.nl/), which is + * sponsored by the Mobile Multi-media Communications + * (http://www.mmc.tudelft.nl/) and Ubiquitous Communications + * (http://www.ubicom.tudelft.nl/) projects. + * + * The author can be reached at: + * + * Erik Mouw + * Information and Communication Theory Group + * Faculty of Information Technology and Systems + * Delft University of Technology + * P.O. Box 5031 + * 2600 GA Delft + * The Netherlands + * + * + * 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., 59 Temple Place, + * Suite 330, Boston, MA 02111-1307 USA + * + */ + +#include +#include +#include +#include +#include +#include + + +#define MODULE_VERS "1.0" +#define MODULE_NAME "procfs_example" + +#define FOOBAR_LEN 8 + +struct fb_data_t { + char name[FOOBAR_LEN + 1]; + char value[FOOBAR_LEN + 1]; +}; + + +static struct proc_dir_entry *example_dir, *foo_file, + *bar_file, *jiffies_file, *symlink; + + +struct fb_data_t foo_data, bar_data; + + +static int proc_read_jiffies(char *page, char **start, + off_t off, int count, + int *eof, void *data) +{ + int len; + + len = sprintf(page, "jiffies = %ld\n", + jiffies); + + return len; +} + + +static int proc_read_foobar(char *page, char **start, + off_t off, int count, + int *eof, void *data) +{ + int len; + struct fb_data_t *fb_data = (struct fb_data_t *)data; + + /* DON'T DO THAT - buffer overruns are bad */ + len = sprintf(page, "%s = '%s'\n", + fb_data->name, fb_data->value); + + return len; +} + + +static int proc_write_foobar(struct file *file, + const char *buffer, + unsigned long count, + void *data) +{ + int len; + struct fb_data_t *fb_data = (struct fb_data_t *)data; + + if(count > FOOBAR_LEN) + len = FOOBAR_LEN; + else + len = count; + + if(copy_from_user(fb_data->value, buffer, len)) + return -EFAULT; + + fb_data->value[len] = '\0'; + + return len; +} + + +static int __init init_procfs_example(void) +{ + int rv = 0; + + /* create directory */ + example_dir = proc_mkdir(MODULE_NAME, NULL); + if(example_dir == NULL) { + rv = -ENOMEM; + goto out; + } + + example_dir->owner = THIS_MODULE; + + /* create jiffies using convenience function */ + jiffies_file = create_proc_read_entry("jiffies", + 0444, example_dir, + proc_read_jiffies, + NULL); + if(jiffies_file == NULL) { + rv = -ENOMEM; + goto no_jiffies; + } + + jiffies_file->owner = THIS_MODULE; + + /* create foo and bar files using same callback + * functions + */ + foo_file = create_proc_entry("foo", 0644, example_dir); + if(foo_file == NULL) { + rv = -ENOMEM; + goto no_foo; + } + + strcpy(foo_data.name, "foo"); + strcpy(foo_data.value, "foo"); + foo_file->data = &foo_data; + foo_file->read_proc = proc_read_foobar; + foo_file->write_proc = proc_write_foobar; + foo_file->owner = THIS_MODULE; + + bar_file = create_proc_entry("bar", 0644, example_dir); + if(bar_file == NULL) { + rv = -ENOMEM; + goto no_bar; + } + + strcpy(bar_data.name, "bar"); + strcpy(bar_data.value, "bar"); + bar_file->data = &bar_data; + bar_file->read_proc = proc_read_foobar; + bar_file->write_proc = proc_write_foobar; + bar_file->owner = THIS_MODULE; + + /* create symlink */ + symlink = proc_symlink("jiffies_too", example_dir, + "jiffies"); + if(symlink == NULL) { + rv = -ENOMEM; + goto no_symlink; + } + + symlink->owner = THIS_MODULE; + + /* everything OK */ + printk(KERN_INFO "%s %s initialised\n", + MODULE_NAME, MODULE_VERS); + return 0; + +no_symlink: + remove_proc_entry("tty", example_dir); +no_tty: + remove_proc_entry("bar", example_dir); +no_bar: + remove_proc_entry("foo", example_dir); +no_foo: + remove_proc_entry("jiffies", example_dir); +no_jiffies: + remove_proc_entry(MODULE_NAME, NULL); +out: + return rv; +} + + +static void __exit cleanup_procfs_example(void) +{ + remove_proc_entry("jiffies_too", example_dir); + remove_proc_entry("tty", example_dir); + remove_proc_entry("bar", example_dir); + remove_proc_entry("foo", example_dir); + remove_proc_entry("jiffies", example_dir); + remove_proc_entry(MODULE_NAME, NULL); + + printk(KERN_INFO "%s %s removed\n", + MODULE_NAME, MODULE_VERS); +} + + +module_init(init_procfs_example); +module_exit(cleanup_procfs_example); + +MODULE_AUTHOR("Erik Mouw"); +MODULE_DESCRIPTION("procfs examples"); diff --git a/Documentation/DocBook/scsidrivers.tmpl b/Documentation/DocBook/scsidrivers.tmpl new file mode 100644 index 000000000000..d058e65daf19 --- /dev/null +++ b/Documentation/DocBook/scsidrivers.tmpl @@ -0,0 +1,193 @@ + + + + + + SCSI Subsystem Interfaces + + + + Douglas + Gilbert + +
+ dgilbert@interlog.com +
+
+
+
+ 2003-08-11 + + + 2002 + 2003 + Douglas Gilbert + + + + + 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 + +This document outlines the interface between the Linux scsi mid level +and lower level drivers. Lower level drivers are variously called HBA +(host bus adapter) drivers, host drivers (HD) or pseudo adapter drivers. +The latter alludes to the fact that a lower level driver may be a +bridge to another IO subsystem (and the "ide-scsi" driver is an example +of this). There can be many lower level drivers active in a running +system, but only one per hardware type. For example, the aic7xxx driver +controls adaptec controllers based on the 7xxx chip series. Most lower +level drivers can control one or more scsi hosts (a.k.a. scsi initiators). + + +This document can been found in an ASCII text file in the linux kernel +source: Documentation/scsi/scsi_mid_low_api.txt . +It currently hold a little more information than this document. The +drivers/scsi/hosts.h and +drivers/scsi/scsi.h headers contain descriptions of members +of important structures for the scsi subsystem. + + + + + Driver structure + +Traditionally a lower level driver for the scsi subsystem has been +at least two files in the drivers/scsi directory. For example, a +driver called "xyz" has a header file "xyz.h" and a source file +"xyz.c". [Actually there is no good reason why this couldn't all +be in one file.] Some drivers that have been ported to several operating +systems (e.g. aic7xxx which has separate files for generic and +OS-specific code) have more than two files. Such drivers tend to have +their own directory under the drivers/scsi directory. + + +scsi_module.c is normally included at the end of a lower +level driver. For it to work a declaration like this is needed before +it is included: + + static Scsi_Host_Template driver_template = DRIVER_TEMPLATE; + /* DRIVER_TEMPLATE should contain pointers to supported interface + functions. Scsi_Host_Template is defined hosts.h */ + #include "scsi_module.c" + + + +The scsi_module.c assumes the name "driver_template" is appropriately +defined. It contains 2 functions: + + + init_this_scsi_driver() called during builtin and module driver + initialization: invokes mid level's scsi_register_host() + + + exit_this_scsi_driver() called during closedown: invokes + mid level's scsi_unregister_host() + + + + +When a new, lower level driver is being added to Linux, the following +files (all found in the drivers/scsi directory) will need some attention: +Makefile, Config.help and Config.in . It is probably best to look at what +an existing lower level driver does in this regard. + + + + + Interface Functions +!EDocumentation/scsi/scsi_mid_low_api.txt + + + + Locks + +Each Scsi_Host instance has a spin_lock called Scsi_Host::default_lock +which is initialized in scsi_register() [found in hosts.c]. Within the +same function the Scsi_Host::host_lock pointer is initialized to point +at default_lock with the scsi_assign_lock() function. Thereafter +lock and unlock operations performed by the mid level use the +Scsi_Host::host_lock pointer. + + +Lower level drivers can override the use of Scsi_Host::default_lock by +using scsi_assign_lock(). The earliest opportunity to do this would +be in the detect() function after it has invoked scsi_register(). It +could be replaced by a coarser grain lock (e.g. per driver) or a +lock of equal granularity (i.e. per host). Using finer grain locks +(e.g. per scsi device) may be possible by juggling locks in +queuecommand(). + + + + + Changes since lk 2.4 series + +io_request_lock has been replaced by several finer grained locks. The lock +relevant to lower level drivers is Scsi_Host::host_lock and there is one +per scsi host. + + +The older error handling mechanism has been removed. This means the +lower level interface functions abort() and reset() have been removed. + + +In the 2.4 series the scsi subsystem configuration descriptions were +aggregated with the configuration descriptions from all other Linux +subsystems in the Documentation/Configure.help file. In the 2.5 series, +the scsi subsystem now has its own (much smaller) drivers/scsi/Config.help +file. + + + + + Credits + +The following people have contributed to this document: + + +Mike Anderson andmike@us.ibm.com + + +James Bottomley James.Bottomley@steeleye.com + + +Patrick Mansfield patmans@us.ibm.com + + + + + +
diff --git a/Documentation/DocBook/sis900.tmpl b/Documentation/DocBook/sis900.tmpl new file mode 100644 index 000000000000..6c2cbac93c3f --- /dev/null +++ b/Documentation/DocBook/sis900.tmpl @@ -0,0 +1,585 @@ + + + + + + + +SiS 900/7016 Fast Ethernet Device Driver + + + +Ollie +Lho + + + +Lei Chun +Chang + + + +Document Revision: 0.3 for SiS900 driver v1.06 & v1.07 +November 16, 2000 + + + 1999 + Silicon Integrated System Corp. + + + + + 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + + + + +This document gives some information on installation and usage of SiS 900/7016 +device driver under Linux. + + + + + + + + + Introduction + + +This document describes the revision 1.06 and 1.07 of SiS 900/7016 Fast Ethernet +device driver under Linux. The driver is developed by Silicon Integrated +System Corp. and distributed freely under the GNU General Public License (GPL). +The driver can be compiled as a loadable module and used under Linux kernel +version 2.2.x. (rev. 1.06) +With minimal changes, the driver can also be used under 2.3.x and 2.4.x kernel +(rev. 1.07), please see +. If you are intended to +use the driver for earlier kernels, you are on your own. + + + +The driver is tested with usual TCP/IP applications including +FTP, Telnet, Netscape etc. and is used constantly by the developers. + + + +Please send all comments/fixes/questions to +Lei-Chun Chang. + + + + + Changes + + +Changes made in Revision 1.07 + + + + +Separation of sis900.c and sis900.h in order to move most +constant definition to sis900.h (many of those constants were +corrected) + + + + + +Clean up PCI detection, the pci-scan from Donald Becker were not used, +just simple pci_find_*. + + + + + +MII detection is modified to support multiple mii transceiver. + + + + + +Bugs in read_eeprom, mdio_* were removed. + + + + + +Lot of sis900 irrelevant comments were removed/changed and +more comments were added to reflect the real situation. + + + + + +Clean up of physical/virtual address space mess in buffer +descriptors. + + + + + +Better transmit/receive error handling. + + + + + +The driver now uses zero-copy single buffer management +scheme to improve performance. + + + + + +Names of variables were changed to be more consistent. + + + + + +Clean up of auo-negotiation and timer code. + + + + + +Automatic detection and change of PHY on the fly. + + + + + +Bug in mac probing fixed. + + + + + +Fix 630E equalier problem by modifying the equalizer workaround rule. + + + + + +Support for ICS1893 10/100 Interated PHYceiver. + + + + + +Support for media select by ifconfig. + + + + + +Added kernel-doc extratable documentation. + + + + + + + + + Tested Environment + + +This driver is developed on the following hardware + + + + + +Intel Celeron 500 with SiS 630 (rev 02) chipset + + + + + +SiS 900 (rev 01) and SiS 7016/7014 Fast Ethernet Card + + + + + +and tested with these software environments + + + + + +Red Hat Linux version 6.2 + + + + + +Linux kernel version 2.4.0 + + + + + +Netscape version 4.6 + + + + + +NcFTP 3.0.0 beta 18 + + + + + +Samba version 2.0.3 + + + + + + + + + + +Files in This Package + + +In the package you can find these files: + + + + + + +sis900.c + + +Driver source file in C + + + + + +sis900.h + + +Header file for sis900.c + + + + + +sis900.sgml + + +DocBook SGML source of the document + + + + + +sis900.txt + + +Driver document in plain text + + + + + + + + + + Installation + + +Silicon Integrated System Corp. is cooperating closely with core Linux Kernel +developers. The revisions of SiS 900 driver are distributed by the usuall channels +for kernel tar files and patches. Those kernel tar files for official kernel and +patches for kernel pre-release can be download at +official kernel ftp site +and its mirrors. +The 1.06 revision can be found in kernel version later than 2.3.15 and pre-2.2.14, +and 1.07 revision can be found in kernel version 2.4.0. +If you have no prior experience in networking under Linux, please read +Ethernet HOWTO and +Networking HOWTO available from +Linux Documentation Project (LDP). + + + +The driver is bundled in release later than 2.2.11 and 2.3.15 so this +is the most easy case. +Be sure you have the appropriate packages for compiling kernel source. +Those packages are listed in Document/Changes in kernel source +distribution. If you have to install the driver other than those bundled +in kernel release, you should have your driver file +sis900.c and sis900.h +copied into /usr/src/linux/drivers/net/ first. +There are two alternative ways to install the driver + + + +Building the driver as loadable module + + +To build the driver as a loadable kernel module you have to reconfigure +the kernel to activate network support by + + + +make menuconfig + + + +Choose Loadable module support --->, +then select Enable loadable module support. + + + +Choose Network Device Support --->, select +Ethernet (10 or 100Mbit). +Then select EISA, VLB, PCI and on board controllers, +and choose SiS 900/7016 PCI Fast Ethernet Adapter support +to M. + + + +After reconfiguring the kernel, you can make the driver module by + + + +make modules + + + +The driver should be compiled with no errors. After compiling the driver, +the driver can be installed to proper place by + + + +make modules_install + + + +Load the driver into kernel by + + + +insmod sis900 + + + +When loading the driver into memory, some information message can be view by + + + + +dmesg + + +or + + +cat /var/log/message + + + + +If the driver is loaded properly you will have messages similar to this: + + + +sis900.c: v1.07.06 11/07/2000 +eth0: SiS 900 PCI Fast Ethernet at 0xd000, IRQ 10, 00:00:e8:83:7f:a4. +eth0: SiS 900 Internal MII PHY transceiver found at address 1. +eth0: Using SiS 900 Internal MII PHY as default + + + +showing the version of the driver and the results of probing routine. + + + +Once the driver is loaded, network can be brought up by + + + +/sbin/ifconfig eth0 IPADDR broadcast BROADCAST netmask NETMASK media TYPE + + + +where IPADDR, BROADCAST, NETMASK are your IP address, broadcast address and +netmask respectively. TYPE is used to set medium type used by the device. +Typical values are "10baseT"(twisted-pair 10Mbps Ethernet) or "100baseT" +(twisted-pair 100Mbps Ethernet). For more information on how to configure +network interface, please refer to +Networking HOWTO. + + + +The link status is also shown by kernel messages. For example, after the +network interface is activated, you may have the message: + + + +eth0: Media Link On 100mbps full-duplex + + + +If you try to unplug the twist pair (TP) cable you will get + + + +eth0: Media Link Off + + + +indicating that the link is failed. + + + + +Building the driver into kernel + + +If you want to make the driver into kernel, choose Y +rather than M on +SiS 900/7016 PCI Fast Ethernet Adapter support +when configuring the kernel. Build the kernel image in the usual way + + + +make clean + +make bzlilo + + + +Next time the system reboot, you have the driver in memory. + + + + + + + Known Problems and Bugs + + +There are some known problems and bugs. If you find any other bugs please +mail to lcchang@sis.com.tw + + + + + +AM79C901 HomePNA PHY is not thoroughly tested, there may be some +bugs in the on the fly change of transceiver. + + + + + +A bug is hidden somewhere in the receive buffer management code, +the bug causes NULL pointer reference in the kernel. This fault is +caught before bad things happen and reported with the message: + + +eth0: NULL pointer encountered in Rx ring, skipping + + +which can be viewed with dmesg or +cat /var/log/message. + + + + + +The media type change from 10Mbps to 100Mbps twisted-pair ethernet +by ifconfig causes the media link down. + + + + + + + + + Revision History + + + + + + +November 13, 2000, Revision 1.07, seventh release, 630E problem fixed +and further clean up. + + + + + +November 4, 1999, Revision 1.06, Second release, lots of clean up +and optimization. + + + + + +August 8, 1999, Revision 1.05, Initial Public Release + + + + + + + + + Acknowledgements + + +This driver was originally derived form +Donald Becker's +pci-skeleton and +rtl8139 drivers. Donald also provided various suggestion +regarded with improvements made in revision 1.06. + + + +The 1.05 revision was created by +Jim Huang, AMD 79c901 +support was added by Chin-Shan Li. + + + + +List of Functions +!Idrivers/net/sis900.c + + + diff --git a/Documentation/DocBook/tulip-user.tmpl b/Documentation/DocBook/tulip-user.tmpl new file mode 100644 index 000000000000..6520d7a1b132 --- /dev/null +++ b/Documentation/DocBook/tulip-user.tmpl @@ -0,0 +1,327 @@ + + + + + + Tulip Driver User's Guide + + + + Jeff + Garzik + +
+ jgarzik@pobox.com +
+
+
+
+ + + 2001 + Jeff Garzik + + + + + 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 + +The Tulip Ethernet Card Driver +is maintained by Jeff Garzik (jgarzik@pobox.com). + + + +The Tulip driver was developed by Donald Becker and changed by +Jeff Garzik, Takashi Manabe and a cast of thousands. + + + +For 2.4.x and later kernels, the Linux Tulip driver is available at +http://sourceforge.net/projects/tulip/ + + + + This driver is for the Digital "Tulip" Ethernet adapter interface. + It should work with most DEC 21*4*-based chips/ethercards, as well as + with work-alike chips from Lite-On (PNIC) and Macronix (MXIC) and ASIX. + + + + The original author may be reached as becker@scyld.com, or C/O + Scyld Computing Corporation, + 410 Severn Ave., Suite 210, + Annapolis MD 21403 + + + + Additional information on Donald Becker's tulip.c + is available at http://www.scyld.com/network/tulip.html + + + + + + Driver Compatibility + + +This device driver is designed for the DECchip "Tulip", Digital's +single-chip ethernet controllers for PCI (now owned by Intel). +Supported members of the family +are the 21040, 21041, 21140, 21140A, 21142, and 21143. Similar work-alike +chips from Lite-On, Macronics, ASIX, Compex and other listed below are also +supported. + + + +These chips are used on at least 140 unique PCI board designs. The great +number of chips and board designs supported is the reason for the +driver size and complexity. Almost of the increasing complexity is in the +board configuration and media selection code. There is very little +increasing in the operational critical path length. + + + + + Board-specific Settings + + +PCI bus devices are configured by the system at boot time, so no jumpers +need to be set on the board. The system BIOS preferably should assign the +PCI INTA signal to an otherwise unused system IRQ line. + + + +Some boards have EEPROMs tables with default media entry. The factory default +is usually "autoselect". This should only be overridden when using +transceiver connections without link beat e.g. 10base2 or AUI, or (rarely!) +for forcing full-duplex when used with old link partners that do not do +autonegotiation. + + + + + Driver Operation + +Ring buffers + + +The Tulip can use either ring buffers or lists of Tx and Rx descriptors. +This driver uses statically allocated rings of Rx and Tx descriptors, set at +compile time by RX/TX_RING_SIZE. This version of the driver allocates skbuffs +for the Rx ring buffers at open() time and passes the skb->data field to the +Tulip as receive data buffers. When an incoming frame is less than +RX_COPYBREAK bytes long, a fresh skbuff is allocated and the frame is +copied to the new skbuff. When the incoming frame is larger, the skbuff is +passed directly up the protocol stack and replaced by a newly allocated +skbuff. + + + +The RX_COPYBREAK value is chosen to trade-off the memory wasted by +using a full-sized skbuff for small frames vs. the copying costs of larger +frames. For small frames the copying cost is negligible (esp. considering +that we are pre-loading the cache with immediately useful header +information). For large frames the copying cost is non-trivial, and the +larger copy might flush the cache of useful data. A subtle aspect of this +choice is that the Tulip only receives into longword aligned buffers, thus +the IP header at offset 14 isn't longword aligned for further processing. +Copied frames are put into the new skbuff at an offset of "+2", thus copying +has the beneficial effect of aligning the IP header and preloading the +cache. + + + + +Synchronization + +The driver runs as two independent, single-threaded flows of control. One +is the send-packet routine, which enforces single-threaded use by the +dev->tbusy flag. The other thread is the interrupt handler, which is single +threaded by the hardware and other software. + + + +The send packet thread has partial control over the Tx ring and 'dev->tbusy' +flag. It sets the tbusy flag whenever it's queuing a Tx packet. If the next +queue slot is empty, it clears the tbusy flag when finished otherwise it sets +the 'tp->tx_full' flag. + + + +The interrupt handler has exclusive control over the Rx ring and records stats +from the Tx ring. (The Tx-done interrupt can't be selectively turned off, so +we can't avoid the interrupt overhead by having the Tx routine reap the Tx +stats.) After reaping the stats, it marks the queue entry as empty by setting +the 'base' to zero. Iff the 'tp->tx_full' flag is set, it clears both the +tx_full and tbusy flags. + + + + + + + + Errata + + +The old DEC databooks were light on details. +The 21040 databook claims that CSR13, CSR14, and CSR15 should each be the last +register of the set CSR12-15 written. Hmmm, now how is that possible? + + + +The DEC SROM format is very badly designed not precisely defined, leading to +part of the media selection junkheap below. Some boards do not have EEPROM +media tables and need to be patched up. Worse, other boards use the DEC +design kit media table when it isn't correct for their board. + + + +We cannot use MII interrupts because there is no defined GPIO pin to attach +them. The MII transceiver status is polled using an kernel timer. + + + + + Driver Change History + + Version 0.9.14 (February 20, 2001) + + Fix PNIC problems (Manfred Spraul) + Add new PCI id for Accton comet + Support Davicom tulips + Fix oops in eeprom parsing + Enable workarounds for early PCI chipsets + IA64, hppa csr0 support + Support media types 5, 6 + Interpret a bit more of the 21142 SROM extended media type 3 + Add missing delay in eeprom reading + + + + Version 0.9.11 (November 3, 2000) + + Eliminate extra bus accesses when sharing interrupts (prumpf) + Barrier following ownership descriptor bit flip (prumpf) + Endianness fixes for >14 addresses in setup frames (prumpf) + Report link beat to kernel/userspace via netif_carrier_*. (kuznet) + Better spinlocking in set_rx_mode. + Fix I/O resource request failure error messages (DaveM catch) + Handle DMA allocation failure. + + + + Version 0.9.10 (September 6, 2000) + + Simple interrupt mitigation (via jamal) + More PCI ids + + + + Version 0.9.9 (August 11, 2000) + + More PCI ids + + + + Version 0.9.8 (July 13, 2000) + + Correct signed/unsigned comparison for dummy frame index + Remove outdated references to struct enet_statistics + + + + Version 0.9.7 (June 17, 2000) + + Timer cleanups (Andrew Morton) + Alpha compile fix (somebody?) + + + + Version 0.9.6 (May 31, 2000) + + Revert 21143-related support flag patch + Add HPPA/media-table debugging printk + + + + Version 0.9.5 (May 30, 2000) + + HPPA support (willy@puffingroup) + CSR6 bits and tulip.h cleanup (Chris Smith) + Improve debugging messages a bit + Add delay after CSR13 write in t21142_start_nway + Remove unused ETHER_STATS code + Convert 'extern inline' to 'static inline' in tulip.h (Chris Smith) + Update DS21143 support flags in tulip_chip_info[] + Use spin_lock_irq, not _irqsave/restore, in tulip_start_xmit() + Add locking to set_rx_mode() + Fix race with chip setting DescOwned bit (Hal Murray) + Request 100% of PIO and MMIO resource space assigned to card + Remove error message from pci_enable_device failure + + + + Version 0.9.4.3 (April 14, 2000) + + mod_timer fix (Hal Murray) + PNIC2 resuscitation (Chris Smith) + + + + Version 0.9.4.2 (March 21, 2000) + + Fix 21041 CSR7, CSR13/14/15 handling + Merge some PCI ids from tulip 0.91x + Merge some HAS_xxx flags and flag settings from tulip 0.91x + asm/io.h fix (submitted by many) and cleanup + s/HAS_NWAY143/HAS_NWAY/ + Cleanup 21041 mode reporting + Small code cleanups + + + + Version 0.9.4.1 (March 18, 2000) + + Finish PCI DMA conversion (davem) + Do not netif_start_queue() at end of tulip_tx_timeout() (kuznet) + PCI DMA fix (kuznet) + eeprom.c code cleanup + Remove Xircom Tulip crud + + + + +
diff --git a/Documentation/DocBook/usb.tmpl b/Documentation/DocBook/usb.tmpl new file mode 100644 index 000000000000..f3ef0bf435e9 --- /dev/null +++ b/Documentation/DocBook/usb.tmpl @@ -0,0 +1,979 @@ + + + + + + The Linux-USB Host Side API + + + + 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 to USB on Linux + + A Universal Serial Bus (USB) is used to connect a host, + such as a PC or workstation, to a number of peripheral + devices. USB uses a tree structure, with the host at the + root (the system's master), hubs as interior nodes, and + peripheral devices as leaves (and slaves). + Modern PCs support several such trees of USB devices, usually + one USB 2.0 tree (480 Mbit/sec each) with + a few USB 1.1 trees (12 Mbit/sec each) that are used when you + connect a USB 1.1 device directly to the machine's "root hub". + + + That master/slave asymmetry was designed in part for + ease of use. It is not physically possible to assemble + (legal) USB cables incorrectly: all upstream "to-the-host" + connectors are the rectangular type, matching the sockets on + root hubs, and the downstream type are the squarish type + (or they are built in to the peripheral). + Software doesn't need to deal with distributed autoconfiguration + since the pre-designated master node manages all that. + At the electrical level, bus protocol overhead is reduced by + eliminating arbitration and moving scheduling into host software. + + + USB 1.0 was announced in January 1996, and was revised + as USB 1.1 (with improvements in hub specification and + support for interrupt-out transfers) in September 1998. + USB 2.0 was released in April 2000, including high speed + transfers and transaction translating hubs (used for USB 1.1 + and 1.0 backward compatibility). + + + USB support was added to Linux early in the 2.2 kernel series + shortly before the 2.3 development forked off. Updates + from 2.3 were regularly folded back into 2.2 releases, bringing + new features such as /sbin/hotplug support, + more drivers, and more robustness. + The 2.5 kernel series continued such improvements, and also + worked on USB 2.0 support, + higher performance, + better consistency between host controller drivers, + API simplification (to make bugs less likely), + and providing internal "kerneldoc" documentation. + + + Linux can run inside USB devices as well as on + the hosts that control the devices. + Because the Linux 2.x USB support evolved to support mass market + platforms such as Apple Macintosh or PC-compatible systems, + it didn't address design concerns for those types of USB systems. + So it can't be used inside mass-market PDAs, or other peripherals. + USB device drivers running inside those Linux peripherals + don't do the same things as the ones running inside hosts, + and so they've been given a different name: + they're called gadget drivers. + This document does not present gadget drivers. + + + + + + USB Host-Side API Model + + Within the kernel, + host-side drivers for USB devices talk to the "usbcore" APIs. + There are two types of public "usbcore" APIs, targetted at two different + layers of USB driver. Those are + general purpose drivers, exposed through + driver frameworks such as block, character, or network devices; + and drivers that are part of the core, + which are involved in managing a USB bus. + Such core drivers include the hub driver, + which manages trees of USB devices, and several different kinds + of host controller driver (HCD), + which control individual busses. + + + The device model seen by USB drivers is relatively complex. + + + + + USB supports four kinds of data transfer + (control, bulk, interrupt, and isochronous). Two transfer + types use bandwidth as it's available (control and bulk), + while the other two types of transfer (interrupt and isochronous) + are scheduled to provide guaranteed bandwidth. + + + The device description model includes one or more + "configurations" per device, only one of which is active at a time. + Devices that are capable of high speed operation must also support + full speed configurations, along with a way to ask about the + "other speed" configurations that might be used. + + + Configurations have one or more "interface", each + of which may have "alternate settings". Interfaces may be + standardized by USB "Class" specifications, or may be specific to + a vendor or device. + + USB device drivers actually bind to interfaces, not devices. + Think of them as "interface drivers", though you + may not see many devices where the distinction is important. + Most USB devices are simple, with only one configuration, + one interface, and one alternate setting. + + + Interfaces have one or more "endpoints", each of + which supports one type and direction of data transfer such as + "bulk out" or "interrupt in". The entire configuration may have + up to sixteen endpoints in each direction, allocated as needed + among all the interfaces. + + + Data transfer on USB is packetized; each endpoint + has a maximum packet size. + Drivers must often be aware of conventions such as flagging the end + of bulk transfers using "short" (including zero length) packets. + + + The Linux USB API supports synchronous calls for + control and bulk messaging. + It also supports asynchnous calls for all kinds of data transfer, + using request structures called "URBs" (USB Request Blocks). + + + + + Accordingly, the USB Core API exposed to device drivers + covers quite a lot of territory. You'll probably need to consult + the USB 2.0 specification, available online from www.usb.org at + no cost, as well as class or device specifications. + + + The only host-side drivers that actually touch hardware + (reading/writing registers, handling IRQs, and so on) are the HCDs. + In theory, all HCDs provide the same functionality through the same + API. In practice, that's becoming more true on the 2.5 kernels, + but there are still differences that crop up especially with + fault handling. Different controllers don't necessarily report + the same aspects of failures, and recovery from faults (including + software-induced ones like unlinking an URB) isn't yet fully + consistent. + Device driver authors should make a point of doing disconnect + testing (while the device is active) with each different host + controller driver, to make sure drivers don't have bugs of + their own as well as to make sure they aren't relying on some + HCD-specific behavior. + (You will need external USB 1.1 and/or + USB 2.0 hubs to perform all those tests.) + + + + +USB-Standard Types + + In <linux/usb_ch9.h> you will find + the USB data types defined in chapter 9 of the USB specification. + These data types are used throughout USB, and in APIs including + this host side API, gadget APIs, and usbfs. + + +!Iinclude/linux/usb_ch9.h + + + +Host-Side Data Types and Macros + + The host side API exposes several layers to drivers, some of + which are more necessary than others. + These support lifecycle models for host side drivers + and devices, and support passing buffers through usbcore to + some HCD that performs the I/O for the device driver. + + + +!Iinclude/linux/usb.h + + + + USB Core APIs + + There are two basic I/O models in the USB API. + The most elemental one is asynchronous: drivers submit requests + in the form of an URB, and the URB's completion callback + handle the next step. + All USB transfer types support that model, although there + are special cases for control URBs (which always have setup + and status stages, but may not have a data stage) and + isochronous URBs (which allow large packets and include + per-packet fault reports). + Built on top of that is synchronous API support, where a + driver calls a routine that allocates one or more URBs, + submits them, and waits until they complete. + There are synchronous wrappers for single-buffer control + and bulk transfers (which are awkward to use in some + driver disconnect scenarios), and for scatterlist based + streaming i/o (bulk or interrupt). + + + USB drivers need to provide buffers that can be + used for DMA, although they don't necessarily need to + provide the DMA mapping themselves. + There are APIs to use used when allocating DMA buffers, + which can prevent use of bounce buffers on some systems. + In some cases, drivers may be able to rely on 64bit DMA + to eliminate another kind of bounce buffer. + + +!Edrivers/usb/core/urb.c +!Edrivers/usb/core/message.c +!Edrivers/usb/core/file.c +!Edrivers/usb/core/usb.c +!Edrivers/usb/core/hub.c + + + Host Controller APIs + + These APIs are only for use by host controller drivers, + most of which implement standard register interfaces such as + EHCI, OHCI, or UHCI. + UHCI was one of the first interfaces, designed by Intel and + also used by VIA; it doesn't do much in hardware. + OHCI was designed later, to have the hardware do more work + (bigger transfers, tracking protocol state, and so on). + EHCI was designed with USB 2.0; its design has features that + resemble OHCI (hardware does much more work) as well as + UHCI (some parts of ISO support, TD list processing). + + + There are host controllers other than the "big three", + although most PCI based controllers (and a few non-PCI based + ones) use one of those interfaces. + Not all host controllers use DMA; some use PIO, and there + is also a simulator. + + + The same basic APIs are available to drivers for all + those controllers. + For historical reasons they are in two layers: + struct usb_bus is a rather thin + layer that became available in the 2.2 kernels, while + struct usb_hcd is a more featureful + layer (available in later 2.4 kernels and in 2.5) that + lets HCDs share common code, to shrink driver size + and significantly reduce hcd-specific behaviors. + + +!Edrivers/usb/core/hcd.c +!Edrivers/usb/core/hcd-pci.c +!Edrivers/usb/core/buffer.c + + + + The USB Filesystem (usbfs) + + This chapter presents the Linux usbfs. + You may prefer to avoid writing new kernel code for your + USB driver; that's the problem that usbfs set out to solve. + User mode device drivers are usually packaged as applications + or libraries, and may use usbfs through some programming library + that wraps it. Such libraries include + libusb + for C/C++, and + jUSB for Java. + + + Unfinished + This particular documentation is incomplete, + especially with respect to the asynchronous mode. + As of kernel 2.5.66 the code and this (new) documentation + need to be cross-reviewed. + + + + Configure usbfs into Linux kernels by enabling the + USB filesystem option (CONFIG_USB_DEVICEFS), + and you get basic support for user mode USB device drivers. + Until relatively recently it was often (confusingly) called + usbdevfs although it wasn't solving what + devfs was. + Every USB device will appear in usbfs, regardless of whether or + not it has a kernel driver; but only devices with kernel drivers + show up in devfs. + + + + What files are in "usbfs"? + + Conventionally mounted at + /proc/bus/usb, usbfs + features include: + + /proc/bus/usb/devices + ... a text file + showing each of the USB devices on known to the kernel, + and their configuration descriptors. + You can also poll() this to learn about new devices. + + /proc/bus/usb/BBB/DDD + ... magic files + exposing the each device's configuration descriptors, and + supporting a series of ioctls for making device requests, + including I/O to devices. (Purely for access by programs.) + + + + + Each bus is given a number (BBB) based on when it was + enumerated; within each bus, each device is given a similar + number (DDD). + Those BBB/DDD paths are not "stable" identifiers; + expect them to change even if you always leave the devices + plugged in to the same hub port. + Don't even think of saving these in application + configuration files. + Stable identifiers are available, for user mode applications + that want to use them. HID and networking devices expose + these stable IDs, so that for example you can be sure that + you told the right UPS to power down its second server. + "usbfs" doesn't (yet) expose those IDs. + + + + + + Mounting and Access Control + + There are a number of mount options for usbfs, which will + be of most interest to you if you need to override the default + access control policy. + That policy is that only root may read or write device files + (/proc/bus/BBB/DDD) although anyone may read + the devices + or drivers files. + I/O requests to the device also need the CAP_SYS_RAWIO capability, + + + The significance of that is that by default, all user mode + device drivers need super-user privileges. + You can change modes or ownership in a driver setup + when the device hotplugs, or maye just start the + driver right then, as a privileged server (or some activity + within one). + That's the most secure approach for multi-user systems, + but for single user systems ("trusted" by that user) + it's more convenient just to grant everyone all access + (using the devmode=0666 option) + so the driver can start whenever it's needed. + + + The mount options for usbfs, usable in /etc/fstab or + in command line invocations of mount, are: + + + + busgid=NNNNN + Controls the GID used for the + /proc/bus/usb/BBB + directories. (Default: 0) + busmode=MMM + Controls the file mode used for the + /proc/bus/usb/BBB + directories. (Default: 0555) + + busuid=NNNNN + Controls the UID used for the + /proc/bus/usb/BBB + directories. (Default: 0) + + devgid=NNNNN + Controls the GID used for the + /proc/bus/usb/BBB/DDD + files. (Default: 0) + devmode=MMM + Controls the file mode used for the + /proc/bus/usb/BBB/DDD + files. (Default: 0644) + devuid=NNNNN + Controls the UID used for the + /proc/bus/usb/BBB/DDD + files. (Default: 0) + + listgid=NNNNN + Controls the GID used for the + /proc/bus/usb/devices and drivers files. + (Default: 0) + listmode=MMM + Controls the file mode used for the + /proc/bus/usb/devices and drivers files. + (Default: 0444) + listuid=NNNNN + Controls the UID used for the + /proc/bus/usb/devices and drivers files. + (Default: 0) + + + + + Note that many Linux distributions hard-wire the mount options + for usbfs in their init scripts, such as + /etc/rc.d/rc.sysinit, + rather than making it easy to set this per-system + policy in /etc/fstab. + + + + + + /proc/bus/usb/devices + + This file is handy for status viewing tools in user + mode, which can scan the text format and ignore most of it. + More detailed device status (including class and vendor + status) is available from device-specific files. + For information about the current format of this file, + see the + Documentation/usb/proc_usb_info.txt + file in your Linux kernel sources. + + + Otherwise the main use for this file from programs + is to poll() it to get notifications of usb devices + as they're plugged or unplugged. + To see what changed, you'd need to read the file and + compare "before" and "after" contents, scan the filesystem, + or see its hotplug event. + + + + + + /proc/bus/usb/BBB/DDD + + Use these files in one of these basic ways: + + + They can be read, + producing first the device descriptor + (18 bytes) and then the descriptors for the current configuration. + See the USB 2.0 spec for details about those binary data formats. + You'll need to convert most multibyte values from little endian + format to your native host byte order, although a few of the + fields in the device descriptor (both of the BCD-encoded fields, + and the vendor and product IDs) will be byteswapped for you. + Note that configuration descriptors include descriptors for + interfaces, altsettings, endpoints, and maybe additional + class descriptors. + + + Perform USB operations using + ioctl() requests to make endpoint I/O + requests (synchronously or asynchronously) or manage + the device. + These requests need the CAP_SYS_RAWIO capability, + as well as filesystem access permissions. + Only one ioctl request can be made on one of these + device files at a time. + This means that if you are synchronously reading an endpoint + from one thread, you won't be able to write to a different + endpoint from another thread until the read completes. + This works for half duplex protocols, + but otherwise you'd use asynchronous i/o requests. + + + + + + + Life Cycle of User Mode Drivers + + Such a driver first needs to find a device file + for a device it knows how to handle. + Maybe it was told about it because a + /sbin/hotplug event handling agent + chose that driver to handle the new device. + Or maybe it's an application that scans all the + /proc/bus/usb device files, and ignores most devices. + In either case, it should read() all + the descriptors from the device file, + and check them against what it knows how to handle. + It might just reject everything except a particular + vendor and product ID, or need a more complex policy. + + + Never assume there will only be one such device + on the system at a time! + If your code can't handle more than one device at + a time, at least detect when there's more than one, and + have your users choose which device to use. + + + Once your user mode driver knows what device to use, + it interacts with it in either of two styles. + The simple style is to make only control requests; some + devices don't need more complex interactions than those. + (An example might be software using vendor-specific control + requests for some initialization or configuration tasks, + with a kernel driver for the rest.) + + + More likely, you need a more complex style driver: + one using non-control endpoints, reading or writing data + and claiming exclusive use of an interface. + Bulk transfers are easiest to use, + but only their sibling interrupt transfers + work with low speed devices. + Both interrupt and isochronous transfers + offer service guarantees because their bandwidth is reserved. + Such "periodic" transfers are awkward to use through usbfs, + unless you're using the asynchronous calls. However, interrupt + transfers can also be used in a synchronous "one shot" style. + + + Your user-mode driver should never need to worry + about cleaning up request state when the device is + disconnected, although it should close its open file + descriptors as soon as it starts seeing the ENODEV + errors. + + + + + The ioctl() Requests + + To use these ioctls, you need to include the following + headers in your userspace program: +#include <linux/usb.h> +#include <linux/usbdevice_fs.h> +#include <asm/byteorder.h> + The standard USB device model requests, from "Chapter 9" of + the USB 2.0 specification, are automatically included from + the <linux/usb_ch9.h> header. + + + Unless noted otherwise, the ioctl requests + described here will + update the modification time on the usbfs file to which + they are applied (unless they fail). + A return of zero indicates success; otherwise, a + standard USB error code is returned. (These are + documented in + Documentation/usb/error-codes.txt + in your kernel sources.) + + + Each of these files multiplexes access to several + I/O streams, one per endpoint. + Each device has one control endpoint (endpoint zero) + which supports a limited RPC style RPC access. + Devices are configured + by khubd (in the kernel) setting a device-wide + configuration that affects things + like power consumption and basic functionality. + The endpoints are part of USB interfaces, + which may have altsettings + affecting things like which endpoints are available. + Many devices only have a single configuration and interface, + so drivers for them will ignore configurations and altsettings. + + + + + Management/Status Requests + + A number of usbfs requests don't deal very directly + with device I/O. + They mostly relate to device management and status. + These are all synchronous requests. + + + + + USBDEVFS_CLAIMINTERFACE + This is used to force usbfs to + claim a specific interface, + which has not previously been claimed by usbfs or any other + kernel driver. + The ioctl parameter is an integer holding the number of + the interface (bInterfaceNumber from descriptor). + + Note that if your driver doesn't claim an interface + before trying to use one of its endpoints, and no + other driver has bound to it, then the interface is + automatically claimed by usbfs. + + This claim will be released by a RELEASEINTERFACE ioctl, + or by closing the file descriptor. + File modification time is not updated by this request. + + + USBDEVFS_CONNECTINFO + Says whether the device is lowspeed. + The ioctl parameter points to a structure like this: +struct usbdevfs_connectinfo { + unsigned int devnum; + unsigned char slow; +}; + File modification time is not updated by this request. + + You can't tell whether a "not slow" + device is connected at high speed (480 MBit/sec) + or just full speed (12 MBit/sec). + You should know the devnum value already, + it's the DDD value of the device file name. + + + USBDEVFS_GETDRIVER + Returns the name of the kernel driver + bound to a given interface (a string). Parameter + is a pointer to this structure, which is modified: +struct usbdevfs_getdriver { + unsigned int interface; + char driver[USBDEVFS_MAXDRIVERNAME + 1]; +}; + File modification time is not updated by this request. + + + USBDEVFS_IOCTL + Passes a request from userspace through + to a kernel driver that has an ioctl entry in the + struct usb_driver it registered. +struct usbdevfs_ioctl { + int ifno; + int ioctl_code; + void *data; +}; + +/* user mode call looks like this. + * 'request' becomes the driver->ioctl() 'code' parameter. + * the size of 'param' is encoded in 'request', and that data + * is copied to or from the driver->ioctl() 'buf' parameter. + */ +static int +usbdev_ioctl (int fd, int ifno, unsigned request, void *param) +{ + struct usbdevfs_ioctl wrapper; + + wrapper.ifno = ifno; + wrapper.ioctl_code = request; + wrapper.data = param; + + return ioctl (fd, USBDEVFS_IOCTL, &wrapper); +} + File modification time is not updated by this request. + + This request lets kernel drivers talk to user mode code + through filesystem operations even when they don't create + a charactor or block special device. + It's also been used to do things like ask devices what + device special file should be used. + Two pre-defined ioctls are used + to disconnect and reconnect kernel drivers, so + that user mode code can completely manage binding + and configuration of devices. + + + USBDEVFS_RELEASEINTERFACE + This is used to release the claim usbfs + made on interface, either implicitly or because of a + USBDEVFS_CLAIMINTERFACE call, before the file + descriptor is closed. + The ioctl parameter is an integer holding the number of + the interface (bInterfaceNumber from descriptor); + File modification time is not updated by this request. + + No security check is made to ensure + that the task which made the claim is the one + which is releasing it. + This means that user mode driver may interfere + other ones. + + + USBDEVFS_RESETEP + Resets the data toggle value for an endpoint + (bulk or interrupt) to DATA0. + The ioctl parameter is an integer endpoint number + (1 to 15, as identified in the endpoint descriptor), + with USB_DIR_IN added if the device's endpoint sends + data to the host. + + Avoid using this request. + It should probably be removed. + Using it typically means the device and driver will lose + toggle synchronization. If you really lost synchronization, + you likely need to completely handshake with the device, + using a request like CLEAR_HALT + or SET_INTERFACE. + + + + + + + + Synchronous I/O Support + + Synchronous requests involve the kernel blocking + until until the user mode request completes, either by + finishing successfully or by reporting an error. + In most cases this is the simplest way to use usbfs, + although as noted above it does prevent performing I/O + to more than one endpoint at a time. + + + + + USBDEVFS_BULK + Issues a bulk read or write request to the + device. + The ioctl parameter is a pointer to this structure: +struct usbdevfs_bulktransfer { + unsigned int ep; + unsigned int len; + unsigned int timeout; /* in milliseconds */ + void *data; +}; + The "ep" value identifies a + bulk endpoint number (1 to 15, as identified in an endpoint + descriptor), + masked with USB_DIR_IN when referring to an endpoint which + sends data to the host from the device. + The length of the data buffer is identified by "len"; + Recent kernels support requests up to about 128KBytes. + FIXME say how read length is returned, + and how short reads are handled.. + + + USBDEVFS_CLEAR_HALT + Clears endpoint halt (stall) and + resets the endpoint toggle. This is only + meaningful for bulk or interrupt endpoints. + The ioctl parameter is an integer endpoint number + (1 to 15, as identified in an endpoint descriptor), + masked with USB_DIR_IN when referring to an endpoint which + sends data to the host from the device. + + Use this on bulk or interrupt endpoints which have + stalled, returning -EPIPE status + to a data transfer request. + Do not issue the control request directly, since + that could invalidate the host's record of the + data toggle. + + + USBDEVFS_CONTROL + Issues a control request to the device. + The ioctl parameter points to a structure like this: +struct usbdevfs_ctrltransfer { + __u8 bRequestType; + __u8 bRequest; + __u16 wValue; + __u16 wIndex; + __u16 wLength; + __u32 timeout; /* in milliseconds */ + void *data; +}; + + The first eight bytes of this structure are the contents + of the SETUP packet to be sent to the device; see the + USB 2.0 specification for details. + The bRequestType value is composed by combining a + USB_TYPE_* value, a USB_DIR_* value, and a + USB_RECIP_* value (from + <linux/usb.h>). + If wLength is nonzero, it describes the length of the data + buffer, which is either written to the device + (USB_DIR_OUT) or read from the device (USB_DIR_IN). + + At this writing, you can't transfer more than 4 KBytes + of data to or from a device; usbfs has a limit, and + some host controller drivers have a limit. + (That's not usually a problem.) + Also there's no way to say it's + not OK to get a short read back from the device. + + + USBDEVFS_RESET + Does a USB level device reset. + The ioctl parameter is ignored. + After the reset, this rebinds all device interfaces. + File modification time is not updated by this request. + + Avoid using this call + until some usbcore bugs get fixed, + since it does not fully synchronize device, interface, + and driver (not just usbfs) state. + + + USBDEVFS_SETINTERFACE + Sets the alternate setting for an + interface. The ioctl parameter is a pointer to a + structure like this: +struct usbdevfs_setinterface { + unsigned int interface; + unsigned int altsetting; +}; + File modification time is not updated by this request. + + Those struct members are from some interface descriptor + applying to the the current configuration. + The interface number is the bInterfaceNumber value, and + the altsetting number is the bAlternateSetting value. + (This resets each endpoint in the interface.) + + + USBDEVFS_SETCONFIGURATION + Issues the + usb_set_configuration call + for the device. + The parameter is an integer holding the number of + a configuration (bConfigurationValue from descriptor). + File modification time is not updated by this request. + + Avoid using this call + until some usbcore bugs get fixed, + since it does not fully synchronize device, interface, + and driver (not just usbfs) state. + + + + + + + Asynchronous I/O Support + + As mentioned above, there are situations where it may be + important to initiate concurrent operations from user mode code. + This is particularly important for periodic transfers + (interrupt and isochronous), but it can be used for other + kinds of USB requests too. + In such cases, the asynchronous requests described here + are essential. Rather than submitting one request and having + the kernel block until it completes, the blocking is separate. + + + These requests are packaged into a structure that + resembles the URB used by kernel device drivers. + (No POSIX Async I/O support here, sorry.) + It identifies the endpoint type (USBDEVFS_URB_TYPE_*), + endpoint (number, masked with USB_DIR_IN as appropriate), + buffer and length, and a user "context" value serving to + uniquely identify each request. + (It's usually a pointer to per-request data.) + Flags can modify requests (not as many as supported for + kernel drivers). + + + Each request can specify a realtime signal number + (between SIGRTMIN and SIGRTMAX, inclusive) to request a + signal be sent when the request completes. + + + When usbfs returns these urbs, the status value + is updated, and the buffer may have been modified. + Except for isochronous transfers, the actual_length is + updated to say how many bytes were transferred; if the + USBDEVFS_URB_DISABLE_SPD flag is set + ("short packets are not OK"), if fewer bytes were read + than were requested then you get an error report. + + +struct usbdevfs_iso_packet_desc { + unsigned int length; + unsigned int actual_length; + unsigned int status; +}; + +struct usbdevfs_urb { + unsigned char type; + unsigned char endpoint; + int status; + unsigned int flags; + void *buffer; + int buffer_length; + int actual_length; + int start_frame; + int number_of_packets; + int error_count; + unsigned int signr; + void *usercontext; + struct usbdevfs_iso_packet_desc iso_frame_desc[]; +}; + + For these asynchronous requests, the file modification + time reflects when the request was initiated. + This contrasts with their use with the synchronous requests, + where it reflects when requests complete. + + + + + USBDEVFS_DISCARDURB + + TBS + File modification time is not updated by this request. + + + + USBDEVFS_DISCSIGNAL + + TBS + File modification time is not updated by this request. + + + + USBDEVFS_REAPURB + + TBS + File modification time is not updated by this request. + + + + USBDEVFS_REAPURBNDELAY + + TBS + File modification time is not updated by this request. + + + + USBDEVFS_SUBMITURB + + TBS + + + + + + + + + + + + diff --git a/Documentation/DocBook/via-audio.tmpl b/Documentation/DocBook/via-audio.tmpl new file mode 100644 index 000000000000..36e642147d6b --- /dev/null +++ b/Documentation/DocBook/via-audio.tmpl @@ -0,0 +1,597 @@ + + + + + + Via 686 Audio Driver for Linux + + + + Jeff + Garzik + + + + + 1999-2001 + Jeff Garzik + + + + + 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 + + The Via VT82C686A "super southbridge" chips contain + AC97-compatible audio logic which features dual 16-bit stereo + PCM sound channels (full duplex), plus a third PCM channel intended for use + in hardware-assisted FM synthesis. + + + The current Linux kernel audio driver for this family of chips + supports audio playback and recording, but hardware-assisted + FM features, and hardware buffer direct-access (mmap) + support are not yet available. + + + This driver supports any Linux kernel version after 2.4.10. + + + Please send bug reports to the mailing list linux-via@gtf.org. + To subscribe, e-mail majordomo@gtf.org with + + + subscribe linux-via + + + in the body of the message. + + + + + Driver Installation + + To use this audio driver, select the + CONFIG_SOUND_VIA82CXXX option in the section Sound during kernel configuration. + Follow the usual kernel procedures for rebuilding the kernel, + or building and installing driver modules. + + + To make this driver the default audio driver, you can add the + following to your /etc/conf.modules file: + + + alias sound via82cxxx_audio + + + Note that soundcore and ac97_codec support modules + are also required for working audio, in addition to + the via82cxxx_audio module itself. + + + + + Submitting a bug report + Description of problem + + Describe the application you were using to play/record sound, and how + to reproduce the problem. + + + Diagnostic output + + Obtain the via-audio-diag diagnostics program from + http://sf.net/projects/gkernel/ and provide a dump of the + audio chip's registers while the problem is occurring. Sample command line: + + + ./via-audio-diag -aps > diag-output.txt + + + Driver debug output + + Define VIA_DEBUG at the beginning of the driver, then capture and email + the kernel log output. This can be viewed in the system kernel log (if + enabled), or via the dmesg program. Sample command line: + + + dmesg > /tmp/dmesg-output.txt + + + Bigger kernel message buffer + + If you wish to increase the size of the buffer displayed by dmesg, then + change the LOG_BUF_LEN macro at the top of linux/kernel/printk.c, recompile + your kernel, and pass the LOG_BUF_LEN value to dmesg. Sample command line with + LOG_BUF_LEN == 32768: + + + dmesg -s 32768 > /tmp/dmesg-output.txt + + + + + + Known Bugs And Assumptions + + + Low volume + + + Volume too low on many systems. Workaround: use mixer program + such as xmixer to increase volume. + + + + + + + + + + Thanks + + Via for providing e-mail support, specs, and NDA'd source code. + + + MandrakeSoft for providing hacking time. + + + AC97 mixer interface fixes and debugging by Ron Cemer roncemer@gte.net. + + + Rui Sousa rui.sousa@conexant.com, for bugfixing + MMAP support, and several other notable fixes that resulted from + his hard work and testing. + + + Adrian Cox adrian@humboldt.co.uk, for bugfixing + MMAP support, and several other notable fixes that resulted from + his hard work and testing. + + + Thomas Sailer for further bugfixes. + + + + + Random Notes + + Two /proc pseudo-files provide diagnostic information. This is generally + not useful to most users. Power users can disable CONFIG_SOUND_VIA82CXXX_PROCFS, + and remove the /proc support code. Once + version 2.0.0 is released, the /proc support code will be disabled by + default. Available /proc pseudo-files: + + + /proc/driver/via/0/info + /proc/driver/via/0/ac97 + + + This driver by default supports all PCI audio devices which report + a vendor id of 0x1106, and a device id of 0x3058. Subsystem vendor + and device ids are not examined. + + + GNU indent formatting options: + +-kr -i8 -ts8 -br -ce -bap -sob -l80 -pcs -cs -ss -bs -di1 -nbc -lp -psl + + + + Via has graciously donated e-mail support and source code to help further + the development of this driver. Their assistance has been invaluable + in the design and coding of the next major version of this driver. + + + The Via audio chip apparently provides a second PCM scatter-gather + DMA channel just for FM data, but does not have a full hardware MIDI + processor. I haven't put much thought towards a solution here, but it + might involve using SoftOSS midi wave table, or simply disabling MIDI + support altogether and using the FM PCM channel as a second (input? output?) + + + + + Driver ChangeLog + + +Version 1.9.1 + + + + + DSP read/write bugfixes from Thomas Sailer. + + + + + + Add new PCI id for single-channel use of Via 8233. + + + + + + Other bug fixes, tweaks, new ioctls. + + + + + + + +Version 1.1.15 + + + + + Support for variable fragment size and variable fragment number (Rui + Sousa) + + + + + + Fixes for the SPEED, STEREO, CHANNELS, FMT ioctls when in read & + write mode (Rui Sousa) + + + + + + Mmaped sound is now fully functional. (Rui Sousa) + + + + + + Make sure to enable PCI device before reading any of its PCI + config information. (fixes potential hotplug problems) + + + + + + Clean up code a bit and add more internal function documentation. + + + + + + AC97 codec access fixes (Adrian Cox) + + + + + + Big endian fixes (Adrian Cox) + + + + + + MIDI support (Adrian Cox) + + + + + + Detect and report locked-rate AC97 codecs. If your hardware only + supports 48Khz (locked rate), then your recording/playback software + must upsample or downsample accordingly. The hardware cannot do it. + + + + + + Use new pci_request_regions and pci_disable_device functions in + kernel 2.4.6. + + + + + + + +Version 1.1.14 + + + + + Use VM_RESERVE when available, to eliminate unnecessary page faults. + + + + + + +Version 1.1.12 + + + + + mmap bug fixes from Linus. + + + + + + +Version 1.1.11 + + + + + Many more bug fixes. mmap enabled by default, but may still be buggy. + + + + + + Uses new and spiffy method of mmap'ing the DMA buffer, based + on a suggestion from Linus. + + + + + + +Version 1.1.10 + + + + + Many bug fixes. mmap enabled by default, but may still be buggy. + + + + + + +Version 1.1.9 + + + + + Redesign and rewrite audio playback implementation. (faster and smaller, hopefully) + + + + + + Implement recording and full duplex (DSP_CAP_DUPLEX) support. + + + + + + Make procfs support optional. + + + + + + Quick interrupt status check, to lessen overhead in interrupt + sharing situations. + + + + + + Add mmap(2) support. Disabled for now, it is still buggy and experimental. + + + + + + Surround all syscalls with a semaphore for cheap and easy SMP protection. + + + + + + Fix bug in channel shutdown (hardware channel reset) code. + + + + + + Remove unnecessary spinlocks (better performance). + + + + + + Eliminate "unknown AFMT" message by using a different method + of selecting the best AFMT_xxx sound sample format for use. + + + + + + Support for realtime hardware pointer position reporting + (DSP_CAP_REALTIME, SNDCTL_DSP_GETxPTR ioctls) + + + + + + Support for capture/playback triggering + (DSP_CAP_TRIGGER, SNDCTL_DSP_SETTRIGGER ioctls) + + + + + + SNDCTL_DSP_SETDUPLEX and SNDCTL_DSP_POST ioctls now handled. + + + + + + Rewrite open(2) and close(2) logic to allow only one user at + a time. All other open(2) attempts will sleep until they succeed. + FIXME: open(O_RDONLY) and open(O_WRONLY) should be allowed to succeed. + + + + + + Reviewed code to ensure that SMP and multiple audio devices + are fully supported. + + + + + + + +Version 1.1.8 + + + + + Clean up interrupt handler output. Fixes the following kernel error message: + + + unhandled interrupt ... + + + + + + Convert documentation to DocBook, so that PDF, HTML and PostScript (.ps) output is readily + available. + + + + + + + +Version 1.1.7 + + + + + Fix module unload bug where mixer device left registered + after driver exit + + + + + + +Version 1.1.6 + + + + + Rewrite via_set_rate to mimic ALSA basic AC97 rate setting + + + + + Remove much dead code + + + + + Complete spin_lock_irqsave -> spin_lock_irq conversion in via_dsp_ioctl + + + + + Fix build problem in via_dsp_ioctl + + + + + Optimize included headers to eliminate headers found in linux/sound + + + + + + +Version 1.1.5 + + + + + Disable some overly-verbose debugging code + + + + + Remove unnecessary sound locks + + + + + Fix some ioctls for better time resolution + + + + + Begin spin_lock_irqsave -> spin_lock_irq conversion in via_dsp_ioctl + + + + + + +Version 1.1.4 + + + + + Completed rewrite of driver. Eliminated SoundBlaster compatibility + completely, and now uses the much-faster scatter-gather DMA engine. + + + + + + + + + Internal Functions +!Isound/oss/via82cxxx_audio.c + + + + + diff --git a/Documentation/DocBook/videobook.tmpl b/Documentation/DocBook/videobook.tmpl new file mode 100644 index 000000000000..3ec6c875588a --- /dev/null +++ b/Documentation/DocBook/videobook.tmpl @@ -0,0 +1,1663 @@ + + + + + + Video4Linux Programming + + + + 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 + + Parts of this document first appeared in Linux Magazine under a + ninety day exclusivity. + + + Video4Linux is intended to provide a common programming interface + for the many TV and capture cards now on the market, as well as + parallel port and USB video cameras. Radio, teletext decoders and + vertical blanking data interfaces are also provided. + + + + Radio Devices + + There are a wide variety of radio interfaces available for PC's, and these + are generally very simple to program. The biggest problem with supporting + such devices is normally extracting documentation from the vendor. + + + The radio interface supports a simple set of control ioctls standardised + across all radio and tv interfaces. It does not support read or write, which + are used for video streams. The reason radio cards do not allow you to read + the audio stream into an application is that without exception they provide + a connection on to a soundcard. Soundcards can be used to read the radio + data just fine. + + + Registering Radio Devices + + The Video4linux core provides an interface for registering devices. The + first step in writing our radio card driver is to register it. + + + + +static struct video_device my_radio +{ + "My radio", + VID_TYPE_TUNER, + VID_HARDWARE_MYRADIO, + radio_open. + radio_close, + NULL, /* no read */ + NULL, /* no write */ + NULL, /* no poll */ + radio_ioctl, + NULL, /* no special init function */ + NULL /* no private data */ +}; + + + + + This declares our video4linux device driver interface. The VID_TYPE_ value + defines what kind of an interface we are, and defines basic capabilities. + + + The only defined value relevant for a radio card is VID_TYPE_TUNER which + indicates that the device can be tuned. Clearly our radio is going to have some + way to change channel so it is tuneable. + + + The VID_HARDWARE_ types are unique to each device. Numbers are assigned by + alan@redhat.com when device drivers are going to be released. Until then you + can pull a suitably large number out of your hat and use it. 10000 should be + safe for a very long time even allowing for the huge number of vendors + making new and different radio cards at the moment. + + + We declare an open and close routine, but we do not need read or write, + which are used to read and write video data to or from the card itself. As + we have no read or write there is no poll function. + + + The private initialise function is run when the device is registered. In + this driver we've already done all the work needed. The final pointer is a + private data pointer that can be used by the device driver to attach and + retrieve private data structures. We set this field "priv" to NULL for + the moment. + + + Having the structure defined is all very well but we now need to register it + with the kernel. + + + + +static int io = 0x320; + +int __init myradio_init(struct video_init *v) +{ + if(!request_region(io, MY_IO_SIZE, "myradio")) + { + printk(KERN_ERR + "myradio: port 0x%03X is in use.\n", io); + return -EBUSY; + } + + if(video_device_register(&my_radio, VFL_TYPE_RADIO)==-1) { + release_region(io, MY_IO_SIZE); + return -EINVAL; + } + return 0; +} + + + + The first stage of the initialisation, as is normally the case, is to check + that the I/O space we are about to fiddle with doesn't belong to some other + driver. If it is we leave well alone. If the user gives the address of the + wrong device then we will spot this. These policies will generally avoid + crashing the machine. + + + Now we ask the Video4Linux layer to register the device for us. We hand it + our carefully designed video_device structure and also tell it which group + of devices we want it registered with. In this case VFL_TYPE_RADIO. + + + The types available are + + Device Types + + + + VFL_TYPE_RADIO/dev/radio{n} + + Radio devices are assigned in this block. As with all of these + selections the actual number assignment is done by the video layer + accordijng to what is free. + + VFL_TYPE_GRABBER/dev/video{n} + Video capture devices and also -- counter-intuitively for the name -- + hardware video playback devices such as MPEG2 cards. + + VFL_TYPE_VBI/dev/vbi{n} + The VBI devices capture the hidden lines on a television picture + that carry further information like closed caption data, teletext + (primarily in Europe) and now Intercast and the ATVEC internet + television encodings. + + VFL_TYPE_VTX/dev/vtx[n} + VTX is 'Videotext' also known as 'Teletext'. This is a system for + sending numbered, 40x25, mostly textual page images over the hidden + lines. Unlike the /dev/vbi interfaces, this is for 'smart' decoder + chips. (The use of the word smart here has to be taken in context, + the smartest teletext chips are fairly dumb pieces of technology). + + + + +
+ + We are most definitely a radio. + + + Finally we allocate our I/O space so that nobody treads on us and return 0 + to signify general happiness with the state of the universe. + +
+ + Opening And Closing The Radio + + + The functions we declared in our video_device are mostly very simple. + Firstly we can drop in what is basically standard code for open and close. + + + + +static int users = 0; + +static int radio_open(stuct video_device *dev, int flags) +{ + if(users) + return -EBUSY; + users++; + return 0; +} + + + + At open time we need to do nothing but check if someone else is also using + the radio card. If nobody is using it we make a note that we are using it, + then we ensure that nobody unloads our driver on us. + + + + +static int radio_close(struct video_device *dev) +{ + users--; +} + + + + At close time we simply need to reduce the user count and allow the module + to become unloadable. + + + If you are sharp you will have noticed neither the open nor the close + routines attempt to reset or change the radio settings. This is intentional. + It allows an application to set up the radio and exit. It avoids a user + having to leave an application running all the time just to listen to the + radio. + + + + The Ioctl Interface + + This leaves the ioctl routine, without which the driver will not be + terribly useful to anyone. + + + + +static int radio_ioctl(struct video_device *dev, unsigned int cmd, void *arg) +{ + switch(cmd) + { + case VIDIOCGCAP: + { + struct video_capability v; + v.type = VID_TYPE_TUNER; + v.channels = 1; + v.audios = 1; + v.maxwidth = 0; + v.minwidth = 0; + v.maxheight = 0; + v.minheight = 0; + strcpy(v.name, "My Radio"); + if(copy_to_user(arg, &v, sizeof(v))) + return -EFAULT; + return 0; + } + + + + VIDIOCGCAP is the first ioctl all video4linux devices must support. It + allows the applications to find out what sort of a card they have found and + to figure out what they want to do about it. The fields in the structure are + + struct video_capability fields + + + + nameThe device text name. This is intended for the user. + + channelsThe number of different channels you can tune on + this card. It could even by zero for a card that has + no tuning capability. For our simple FM radio it is 1. + An AM/FM radio would report 2. + + audiosThe number of audio inputs on this device. For our + radio there is only one audio input. + + minwidth,minheightThe smallest size the card is capable of capturing + images in. We set these to zero. Radios do not + capture pictures + + maxwidth,maxheightThe largest image size the card is capable of + capturing. For our radio we report 0. + + + typeThis reports the capabilities of the device, and + matches the field we filled in in the struct + video_device when registering. + + + +
+ + Having filled in the fields, we use copy_to_user to copy the structure into + the users buffer. If the copy fails we return an EFAULT to the application + so that it knows it tried to feed us garbage. + + + The next pair of ioctl operations select which tuner is to be used and let + the application find the tuner properties. We have only a single FM band + tuner in our example device. + + + + + case VIDIOCGTUNER: + { + struct video_tuner v; + if(copy_from_user(&v, arg, sizeof(v))!=0) + return -EFAULT; + if(v.tuner) + return -EINVAL; + v.rangelow=(87*16000); + v.rangehigh=(108*16000); + v.flags = VIDEO_TUNER_LOW; + v.mode = VIDEO_MODE_AUTO; + v.signal = 0xFFFF; + strcpy(v.name, "FM"); + if(copy_to_user(&v, arg, sizeof(v))!=0) + return -EFAULT; + return 0; + } + + + + The VIDIOCGTUNER ioctl allows applications to query a tuner. The application + sets the tuner field to the tuner number it wishes to query. The query does + not change the tuner that is being used, it merely enquires about the tuner + in question. + + + We have exactly one tuner so after copying the user buffer to our temporary + structure we complain if they asked for a tuner other than tuner 0. + + + The video_tuner structure has the following fields + + struct video_tuner fields + + + + int tunerThe number of the tuner in question + + char name[32]A text description of this tuner. "FM" will do fine. + This is intended for the application. + + u32 flags + Tuner capability flags + + + u16 modeThe current reception mode + + + u16 signalThe signal strength scaled between 0 and 65535. If + a device cannot tell the signal strength it should + report 65535. Many simple cards contain only a + signal/no signal bit. Such cards will report either + 0 or 65535. + + + u32 rangelow, rangehigh + The range of frequencies supported by the radio + or TV. It is scaled according to the VIDEO_TUNER_LOW + flag. + + + + +
+ + struct video_tuner flags + + + + VIDEO_TUNER_PALA PAL TV tuner + + VIDEO_TUNER_NTSCAn NTSC (US) TV tuner + + VIDEO_TUNER_SECAMA SECAM (French) TV tuner + + VIDEO_TUNER_LOW + The tuner frequency is scaled in 1/16th of a KHz + steps. If not it is in 1/16th of a MHz steps + + + VIDEO_TUNER_NORMThe tuner can set its format + + VIDEO_TUNER_STEREO_ONThe tuner is currently receiving a stereo signal + + + +
+ + struct video_tuner modes + + + + VIDEO_MODE_PALPAL Format + + VIDEO_MODE_NTSCNTSC Format (USA) + + VIDEO_MODE_SECAMFrench Format + + VIDEO_MODE_AUTOA device that does not need to do + TV format switching + + + +
+ + The settings for the radio card are thus fairly simple. We report that we + are a tuner called "FM" for FM radio. In order to get the best tuning + resolution we report VIDEO_TUNER_LOW and select tuning to 1/16th of KHz. Its + unlikely our card can do that resolution but it is a fair bet the card can + do better than 1/16th of a MHz. VIDEO_TUNER_LOW is appropriate to almost all + radio usage. + + + We report that the tuner automatically handles deciding what format it is + receiving - true enough as it only handles FM radio. Our example card is + also incapable of detecting stereo or signal strengths so it reports a + strength of 0xFFFF (maximum) and no stereo detected. + + + To finish off we set the range that can be tuned to be 87-108Mhz, the normal + FM broadcast radio range. It is important to find out what the card is + actually capable of tuning. It is easy enough to simply use the FM broadcast + range. Unfortunately if you do this you will discover the FM broadcast + ranges in the USA, Europe and Japan are all subtly different and some users + cannot receive all the stations they wish. + + + The application also needs to be able to set the tuner it wishes to use. In + our case, with a single tuner this is rather simple to arrange. + + + + case VIDIOCSTUNER: + { + struct video_tuner v; + if(copy_from_user(&v, arg, sizeof(v))) + return -EFAULT; + if(v.tuner != 0) + return -EINVAL; + return 0; + } + + + + We copy the user supplied structure into kernel memory so we can examine it. + If the user has selected a tuner other than zero we reject the request. If + they wanted tuner 0 then, surprisingly enough, that is the current tuner already. + + + The next two ioctls we need to provide are to get and set the frequency of + the radio. These both use an unsigned long argument which is the frequency. + The scale of the frequency depends on the VIDEO_TUNER_LOW flag as I + mentioned earlier on. Since we have VIDEO_TUNER_LOW set this will be in + 1/16ths of a KHz. + + + +static unsigned long current_freq; + + + + case VIDIOCGFREQ: + if(copy_to_user(arg, &current_freq, + sizeof(unsigned long)) + return -EFAULT; + return 0; + + + + Querying the frequency in our case is relatively simple. Our radio card is + too dumb to let us query the signal strength so we remember our setting if + we know it. All we have to do is copy it to the user. + + + + + case VIDIOCSFREQ: + { + u32 freq; + if(copy_from_user(arg, &freq, + sizeof(unsigned long))!=0) + return -EFAULT; + if(hardware_set_freq(freq)<0) + return -EINVAL; + current_freq = freq; + return 0; + } + + + + Setting the frequency is a little more complex. We begin by copying the + desired frequency into kernel space. Next we call a hardware specific routine + to set the radio up. This might be as simple as some scaling and a few + writes to an I/O port. For most radio cards it turns out a good deal more + complicated and may involve programming things like a phase locked loop on + the card. This is what documentation is for. + + + The final set of operations we need to provide for our radio are the + volume controls. Not all radio cards can even do volume control. After all + there is a perfectly good volume control on the sound card. We will assume + our radio card has a simple 4 step volume control. + + + There are two ioctls with audio we need to support + + + +static int current_volume=0; + + case VIDIOCGAUDIO: + { + struct video_audio v; + if(copy_from_user(&v, arg, sizeof(v))) + return -EFAULT; + if(v.audio != 0) + return -EINVAL; + v.volume = 16384*current_volume; + v.step = 16384; + strcpy(v.name, "Radio"); + v.mode = VIDEO_SOUND_MONO; + v.balance = 0; + v.base = 0; + v.treble = 0; + + if(copy_to_user(arg. &v, sizeof(v))) + return -EFAULT; + return 0; + } + + + + Much like the tuner we start by copying the user structure into kernel + space. Again we check if the user has asked for a valid audio input. We have + only input 0 and we punt if they ask for another input. + + + Then we fill in the video_audio structure. This has the following format + + struct video_audio fields + + + + audioThe input the user wishes to query + + volumeThe volume setting on a scale of 0-65535 + + baseThe base level on a scale of 0-65535 + + trebleThe treble level on a scale of 0-65535 + + flagsThe features this audio device supports + + + nameA text name to display to the user. We picked + "Radio" as it explains things quite nicely. + + modeThe current reception mode for the audio + + We report MONO because our card is too stupid to know if it is in + mono or stereo. + + + balanceThe stereo balance on a scale of 0-65535, 32768 is + middle. + + stepThe step by which the volume control jumps. This is + used to help make it easy for applications to set + slider behaviour. + + + +
+ + struct video_audio flags + + + + VIDEO_AUDIO_MUTEThe audio is currently muted. We + could fake this in our driver but we + choose not to bother. + + VIDEO_AUDIO_MUTABLEThe input has a mute option + + VIDEO_AUDIO_TREBLEThe input has a treble control + + VIDEO_AUDIO_BASSThe input has a base control + + + +
+ + struct video_audio modes + + + + VIDEO_SOUND_MONOMono sound + + VIDEO_SOUND_STEREOStereo sound + + VIDEO_SOUND_LANG1Alternative language 1 (TV specific) + + VIDEO_SOUND_LANG2Alternative language 2 (TV specific) + + + +
+ + Having filled in the structure we copy it back to user space. + + + The VIDIOCSAUDIO ioctl allows the user to set the audio parameters in the + video_audio structure. The driver does its best to honour the request. + + + + case VIDIOCSAUDIO: + { + struct video_audio v; + if(copy_from_user(&v, arg, sizeof(v))) + return -EFAULT; + if(v.audio) + return -EINVAL; + current_volume = v/16384; + hardware_set_volume(current_volume); + return 0; + } + + + + In our case there is very little that the user can set. The volume is + basically the limit. Note that we could pretend to have a mute feature + by rewriting this to + + + + case VIDIOCSAUDIO: + { + struct video_audio v; + if(copy_from_user(&v, arg, sizeof(v))) + return -EFAULT; + if(v.audio) + return -EINVAL; + current_volume = v/16384; + if(v.flags&VIDEO_AUDIO_MUTE) + hardware_set_volume(0); + else + hardware_set_volume(current_volume); + current_muted = v.flags & + VIDEO_AUDIO_MUTE; + return 0; + } + + + + This with the corresponding changes to the VIDIOCGAUDIO code to report the + state of the mute flag we save and to report the card has a mute function, + will allow applications to use a mute facility with this card. It is + questionable whether this is a good idea however. User applications can already + fake this themselves and kernel space is precious. + + + We now have a working radio ioctl handler. So we just wrap up the function + + + + + } + return -ENOIOCTLCMD; +} + + + + and pass the Video4Linux layer back an error so that it knows we did not + understand the request we got passed. + +
+ + Module Wrapper + + Finally we add in the usual module wrapping and the driver is done. + + + +#ifndef MODULE + +static int io = 0x300; + +#else + +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_DESC(io, "I/O address of the card."); + +static int __init init(void) +{ + if(io==-1) + { + printk(KERN_ERR + "You must set an I/O address with io=0x???\n"); + return -EINVAL; + } + return myradio_init(NULL); +} + +static void __exit cleanup(void) +{ + video_unregister_device(&my_radio); + release_region(io, MY_IO_SIZE); +} + +module_init(init); +module_exit(cleanup); + + + + 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 + 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. + + + The clean-up routine unregisters the video_device we registered, and frees + up the I/O space. Note that the unregister takes the actual video_device + structure as its argument. Unlike the file operations structure which can be + shared by all instances of a device a video_device structure as an actual + instance of the device. If you are registering multiple radio devices you + need to fill in one structure per device (most likely by setting up a + template and copying it to each of the actual device structures). + + +
+ + Video Capture Devices + + Video Capture Device Types + + The video capture devices share the same interfaces as radio devices. In + order to explain the video capture interface I will use the example of a + camera that has no tuners or audio input. This keeps the example relatively + clean. To get both combine the two driver examples. + + + Video capture devices divide into four categories. A little technology + backgrounder. Full motion video even at television resolution (which is + actually fairly low) is pretty resource-intensive. You are continually + passing megabytes of data every second from the capture card to the display. + several alternative approaches have emerged because copying this through the + processor and the user program is a particularly bad idea . + + + The first is to add the television image onto the video output directly. + This is also how some 3D cards work. These basic cards can generally drop the + video into any chosen rectangle of the display. Cards like this, which + include most mpeg1 cards that used the feature connector, aren't very + friendly in a windowing environment. They don't understand windows or + clipping. The video window is always on the top of the display. + + + Chroma keying is a technique used by cards to get around this. It is an old + television mixing trick where you mark all the areas you wish to replace + with a single clear colour that isn't used in the image - TV people use an + incredibly bright blue while computing people often use a particularly + virulent purple. Bright blue occurs on the desktop. Anyone with virulent + purple windows has another problem besides their TV overlay. + + + The third approach is to copy the data from the capture card to the video + card, but to do it directly across the PCI bus. This relieves the processor + from doing the work but does require some smartness on the part of the video + capture chip, as well as a suitable video card. Programming this kind of + card and more so debugging it can be extremely tricky. There are some quite + complicated interactions with the display and you may also have to cope with + various chipset bugs that show up when PCI cards start talking to each + other. + + + To keep our example fairly simple we will assume a card that supports + overlaying a flat rectangular image onto the frame buffer output, and which + can also capture stuff into processor memory. + + + + Registering Video Capture Devices + + This time we need to add more functions for our camera device. + + +static struct video_device my_camera +{ + "My Camera", + VID_TYPE_OVERLAY|VID_TYPE_SCALES|\ + VID_TYPE_CAPTURE|VID_TYPE_CHROMAKEY, + VID_HARDWARE_MYCAMERA, + camera_open. + camera_close, + camera_read, /* no read */ + NULL, /* no write */ + camera_poll, /* no poll */ + camera_ioctl, + NULL, /* no special init function */ + NULL /* no private data */ +}; + + + We need a read() function which is used for capturing data from + the card, and we need a poll function so that a driver can wait for the next + frame to be captured. + + + We use the extra video capability flags that did not apply to the + radio interface. The video related flags are + + Capture Capabilities + + + +VID_TYPE_CAPTUREWe support image capture + +VID_TYPE_TELETEXTA teletext capture device (vbi{n]) + +VID_TYPE_OVERLAYThe image can be directly overlaid onto the + frame buffer + +VID_TYPE_CHROMAKEYChromakey can be used to select which parts + of the image to display + +VID_TYPE_CLIPPINGIt is possible to give the board a list of + rectangles to draw around. + +VID_TYPE_FRAMERAMThe video capture goes into the video memory + and actually changes it. Applications need + to know this so they can clean up after the + card + +VID_TYPE_SCALESThe image can be scaled to various sizes, + rather than being a single fixed size. + +VID_TYPE_MONOCHROMEThe capture will be monochrome. This isn't a + complete answer to the question since a mono + camera on a colour capture card will still + produce mono output. + +VID_TYPE_SUBCAPTUREThe card allows only part of its field of + view to be captured. This enables + applications to avoid copying all of a large + image into memory when only some section is + relevant. + + + +
+ + We set VID_TYPE_CAPTURE so that we are seen as a capture card, + VID_TYPE_CHROMAKEY so the application knows it is time to draw in virulent + purple, and VID_TYPE_SCALES because we can be resized. + + + Our setup is fairly similar. This time we also want an interrupt line + for the 'frame captured' signal. Not all cards have this so some of them + cannot handle poll(). + + + + +static int io = 0x320; +static int irq = 11; + +int __init mycamera_init(struct video_init *v) +{ + if(!request_region(io, MY_IO_SIZE, "mycamera")) + { + printk(KERN_ERR + "mycamera: port 0x%03X is in use.\n", io); + return -EBUSY; + } + + if(video_device_register(&my_camera, + VFL_TYPE_GRABBER)==-1) { + release_region(io, MY_IO_SIZE); + return -EINVAL; + } + return 0; +} + + + + This is little changed from the needs of the radio card. We specify + VFL_TYPE_GRABBER this time as we want to be allocated a /dev/video name. + +
+ + Opening And Closing The Capture Device + + + +static int users = 0; + +static int camera_open(stuct video_device *dev, int flags) +{ + if(users) + return -EBUSY; + if(request_irq(irq, camera_irq, 0, "camera", dev)<0) + return -EBUSY; + users++; + return 0; +} + + +static int camera_close(struct video_device *dev) +{ + users--; + free_irq(irq, dev); +} + + + The open and close routines are also quite similar. The only real change is + that we now request an interrupt for the camera device interrupt line. If we + cannot get the interrupt we report EBUSY to the application and give up. + + + + Interrupt Handling + + Our example handler is for an ISA bus device. If it was PCI you would be + able to share the interrupt and would have set SA_SHIRQ to indicate a + shared IRQ. We pass the device pointer as the interrupt routine argument. We + don't need to since we only support one card but doing this will make it + easier to upgrade the driver for multiple devices in the future. + + + Our interrupt routine needs to do little if we assume the card can simply + queue one frame to be read after it captures it. + + + + +static struct wait_queue *capture_wait; +static int capture_ready = 0; + +static void camera_irq(int irq, void *dev_id, + struct pt_regs *regs) +{ + capture_ready=1; + wake_up_interruptible(&capture_wait); +} + + + The interrupt handler is nice and simple for this card as we are assuming + the card is buffering the frame for us. This means we have little to do but + wake up anybody interested. We also set a capture_ready flag, as we may + capture a frame before an application needs it. In this case we need to know + that a frame is ready. If we had to collect the frame on the interrupt life + would be more complex. + + + The two new routines we need to supply are camera_read which returns a + frame, and camera_poll which waits for a frame to become ready. + + + + +static int camera_poll(struct video_device *dev, + struct file *file, struct poll_table *wait) +{ + poll_wait(file, &capture_wait, wait); + if(capture_read) + return POLLIN|POLLRDNORM; + return 0; +} + + + + Our wait queue for polling is the capture_wait queue. This will cause the + task to be woken up by our camera_irq routine. We check capture_read to see + if there is an image present and if so report that it is readable. + + + + Reading The Video Image + + + +static long camera_read(struct video_device *dev, char *buf, + unsigned long count) +{ + struct wait_queue wait = { current, NULL }; + u8 *ptr; + int len; + int i; + + add_wait_queue(&capture_wait, &wait); + + while(!capture_ready) + { + if(file->flags&O_NDELAY) + { + remove_wait_queue(&capture_wait, &wait); + current->state = TASK_RUNNING; + return -EWOULDBLOCK; + } + if(signal_pending(current)) + { + remove_wait_queue(&capture_wait, &wait); + current->state = TASK_RUNNING; + return -ERESTARTSYS; + } + schedule(); + current->state = TASK_INTERRUPTIBLE; + } + remove_wait_queue(&capture_wait, &wait); + current->state = TASK_RUNNING; + + + + The first thing we have to do is to ensure that the application waits until + the next frame is ready. The code here is almost identical to the mouse code + we used earlier in this chapter. It is one of the common building blocks of + Linux device driver code and probably one which you will find occurs in any + drivers you write. + + + We wait for a frame to be ready, or for a signal to interrupt our waiting. If a + signal occurs we need to return from the system call so that the signal can + be sent to the application itself. We also check to see if the user actually + wanted to avoid waiting - ie if they are using non-blocking I/O and have other things + to get on with. + + + Next we copy the data from the card to the user application. This is rarely + as easy as our example makes out. We will add capture_w, and capture_h here + to hold the width and height of the captured image. We assume the card only + supports 24bit RGB for now. + + + + + + capture_ready = 0; + + ptr=(u8 *)buf; + len = capture_w * 3 * capture_h; /* 24bit RGB */ + + if(len>count) + len=count; /* Doesn't all fit */ + + for(i=0; i<len; i++) + { + put_user(inb(io+IMAGE_DATA), ptr); + ptr++; + } + + hardware_restart_capture(); + + return i; +} + + + + For a real hardware device you would try to avoid the loop with put_user(). + Each call to put_user() has a time overhead checking whether the accesses to user + space are allowed. It would be better to read a line into a temporary buffer + then copy this to user space in one go. + + + Having captured the image and put it into user space we can kick the card to + get the next frame acquired. + + + + Video Ioctl Handling + + As with the radio driver the major control interface is via the ioctl() + function. Video capture devices support the same tuner calls as a radio + device and also support additional calls to control how the video functions + are handled. In this simple example the card has no tuners to avoid making + the code complex. + + + + + +static int camera_ioctl(struct video_device *dev, unsigned int cmd, void *arg) +{ + switch(cmd) + { + case VIDIOCGCAP: + { + struct video_capability v; + v.type = VID_TYPE_CAPTURE|\ + VID_TYPE_CHROMAKEY|\ + VID_TYPE_SCALES|\ + VID_TYPE_OVERLAY; + v.channels = 1; + v.audios = 0; + v.maxwidth = 640; + v.minwidth = 16; + v.maxheight = 480; + v.minheight = 16; + strcpy(v.name, "My Camera"); + if(copy_to_user(arg, &v, sizeof(v))) + return -EFAULT; + return 0; + } + + + + + The first ioctl we must support and which all video capture and radio + devices are required to support is VIDIOCGCAP. This behaves exactly the same + as with a radio device. This time, however, we report the extra capabilities + we outlined earlier on when defining our video_dev structure. + + + We now set the video flags saying that we support overlay, capture, + scaling and chromakey. We also report size limits - our smallest image is + 16x16 pixels, our largest is 640x480. + + + To keep things simple we report no audio and no tuning capabilities at all. + + + + case VIDIOCGCHAN: + { + struct video_channel v; + if(copy_from_user(&v, arg, sizeof(v))) + return -EFAULT; + if(v.channel != 0) + return -EINVAL; + v.flags = 0; + v.tuners = 0; + v.type = VIDEO_TYPE_CAMERA; + v.norm = VIDEO_MODE_AUTO; + strcpy(v.name, "Camera Input");break; + if(copy_to_user(&v, arg, sizeof(v))) + return -EFAULT; + return 0; + } + + + + + This follows what is very much the standard way an ioctl handler looks + in Linux. We copy the data into a kernel space variable and we check that the + request is valid (in this case that the input is 0). Finally we copy the + camera info back to the user. + + + The VIDIOCGCHAN ioctl allows a user to ask about video channels (that is + inputs to the video card). Our example card has a single camera input. The + fields in the structure are + + struct video_channel fields + + + + + channelThe channel number we are selecting + + nameThe name for this channel. This is intended + to describe the port to the user. + Appropriate names are therefore things like + "Camera" "SCART input" + + flagsChannel properties + + typeInput type + + normThe current television encoding being used + if relevant for this channel. + + + + +
+ struct video_channel flags + + + + VIDEO_VC_TUNERChannel has a tuner. + + VIDEO_VC_AUDIOChannel has audio. + + + +
+ struct video_channel types + + + + VIDEO_TYPE_TVTelevision input. + + VIDEO_TYPE_CAMERAFixed camera input. + + 0Type is unknown. + + + +
+ struct video_channel norms + + + + VIDEO_MODE_PALPAL encoded Television + + VIDEO_MODE_NTSCNTSC (US) encoded Television + + VIDEO_MODE_SECAMSECAM (French) Television + + VIDEO_MODE_AUTOAutomatic switching, or format does not + matter + + + +
+ + The corresponding VIDIOCSCHAN ioctl allows a user to change channel and to + request the norm is changed - for example to switch between a PAL or an NTSC + format camera. + + + + + case VIDIOCSCHAN: + { + struct video_channel v; + if(copy_from_user(&v, arg, sizeof(v))) + return -EFAULT; + if(v.channel != 0) + return -EINVAL; + if(v.norm != VIDEO_MODE_AUTO) + return -EINVAL; + return 0; + } + + + + + The implementation of this call in our driver is remarkably easy. Because we + are assuming fixed format hardware we need only check that the user has not + tried to change anything. + + + The user also needs to be able to configure and adjust the picture they are + seeing. This is much like adjusting a television set. A user application + also needs to know the palette being used so that it knows how to display + the image that has been captured. The VIDIOCGPICT and VIDIOCSPICT ioctl + calls provide this information. + + + + + case VIDIOCGPICT + { + struct video_picture v; + v.brightness = hardware_brightness(); + v.hue = hardware_hue(); + v.colour = hardware_saturation(); + v.contrast = hardware_brightness(); + /* Not settable */ + v.whiteness = 32768; + v.depth = 24; /* 24bit */ + v.palette = VIDEO_PALETTE_RGB24; + if(copy_to_user(&v, arg, + sizeof(v))) + return -EFAULT; + return 0; + } + + + + + The brightness, hue, color, and contrast provide the picture controls that + are akin to a conventional television. Whiteness provides additional + control for greyscale images. All of these values are scaled between 0-65535 + and have 32768 as the mid point setting. The scaling means that applications + do not have to worry about the capability range of the hardware but can let + it make a best effort attempt. + + + Our depth is 24, as this is in bits. We will be returning RGB24 format. This + has one byte of red, then one of green, then one of blue. This then repeats + for every other pixel in the image. The other common formats the interface + defines are + + Framebuffer Encodings + + + + GREYLinear greyscale. This is for simple cameras and the + like + + RGB565The top 5 bits hold 32 red levels, the next six bits + hold green and the low 5 bits hold blue. + + RGB555The top bit is clear. The red green and blue levels + each occupy five bits. + + + +
+ + Additional modes are support for YUV capture formats. These are common for + TV and video conferencing applications. + + + The VIDIOCSPICT ioctl allows a user to set some of the picture parameters. + Exactly which ones are supported depends heavily on the card itself. It is + possible to support many modes and effects in software. In general doing + this in the kernel is a bad idea. Video capture is a performance-sensitive + application and the programs can often do better if they aren't being + 'helped' by an overkeen driver writer. Thus for our device we will report + RGB24 only and refuse to allow a change. + + + + + case VIDIOCSPICT: + { + struct video_picture v; + if(copy_from_user(&v, arg, sizeof(v))) + return -EFAULT; + if(v.depth!=24 || + v.palette != VIDEO_PALETTE_RGB24) + return -EINVAL; + set_hardware_brightness(v.brightness); + set_hardware_hue(v.hue); + set_hardware_saturation(v.colour); + set_hardware_brightness(v.contrast); + return 0; + } + + + + + We check the user has not tried to change the palette or the depth. We do + not want to carry out some of the changes and then return an error. This may + confuse the application which will be assuming no change occurred. + + + In much the same way as you need to be able to set the picture controls to + get the right capture images, many cards need to know what they are + displaying onto when generating overlay output. In some cases getting this + wrong even makes a nasty mess or may crash the computer. For that reason + the VIDIOCSBUF ioctl used to set up the frame buffer information may well + only be usable by root. + + + We will assume our card is one of the old ISA devices with feature connector + and only supports a couple of standard video modes. Very common for older + cards although the PCI devices are way smarter than this. + + + + +static struct video_buffer capture_fb; + + case VIDIOCGFBUF: + { + if(copy_to_user(arg, &capture_fb, + sizeof(capture_fb))) + return -EFAULT; + return 0; + + } + + + + + We keep the frame buffer information in the format the ioctl uses. This + makes it nice and easy to work with in the ioctl calls. + + + + case VIDIOCSFBUF: + { + struct video_buffer v; + + if(!capable(CAP_SYS_ADMIN)) + return -EPERM; + + if(copy_from_user(&v, arg, sizeof(v))) + return -EFAULT; + if(v.width!=320 && v.width!=640) + return -EINVAL; + if(v.height!=200 && v.height!=240 + && v.height!=400 + && v.height !=480) + return -EINVAL; + memcpy(&capture_fb, &v, sizeof(v)); + hardware_set_fb(&v); + return 0; + } + + + + + + The capable() function checks a user has the required capability. The Linux + operating system has a set of about 30 capabilities indicating privileged + access to services. The default set up gives the superuser (uid 0) all of + them and nobody else has any. + + + We check that the user has the SYS_ADMIN capability, that is they are + allowed to operate as the machine administrator. We don't want anyone but + the administrator making a mess of the display. + + + Next we check for standard PC video modes (320 or 640 wide with either + EGA or VGA depths). If the mode is not a standard video mode we reject it as + not supported by our card. If the mode is acceptable we save it so that + VIDIOCFBUF will give the right answer next time it is called. The + hardware_set_fb() function is some undescribed card specific function to + program the card for the desired mode. + + + Before the driver can display an overlay window it needs to know where the + window should be placed, and also how large it should be. If the card + supports clipping it needs to know which rectangles to omit from the + display. The video_window structure is used to describe the way the image + should be displayed. + + struct video_window fields + + + + widthThe width in pixels of the desired image. The card + may use a smaller size if this size is not available + + heightThe height of the image. The card may use a smaller + size if this size is not available. + + x The X position of the top left of the window. This + is in pixels relative to the left hand edge of the + picture. Not all cards can display images aligned on + any pixel boundary. If the position is unsuitable + the card adjusts the image right and reduces the + width. + + y The Y position of the top left of the window. This + is counted in pixels relative to the top edge of the + picture. As with the width if the card cannot + display starting on this line it will adjust the + values. + + chromakeyThe colour (expressed in RGB32 format) for the + chromakey colour if chroma keying is being used. + + clipsAn array of rectangles that must not be drawn + over. + + clipcountThe number of clips in this array. + + + +
+ + Each clip is a struct video_clip which has the following fields + + video_clip fields + + + + x, yCo-ordinates relative to the display + + width, heightWidth and height in pixels + + nextA spare field for the application to use + + + +
+ + The driver is required to ensure it always draws in the area requested or a smaller area, and that it never draws in any of the areas that are clipped. + This may well mean it has to leave alone. small areas the application wished to be + drawn. + + + Our example card uses chromakey so does not have to address most of the + clipping. We will add a video_window structure to our global variables to + remember our parameters, as we did with the frame buffer. + + + + + case VIDIOCGWIN: + { + if(copy_to_user(arg, &capture_win, + sizeof(capture_win))) + return -EFAULT; + return 0; + } + + + case VIDIOCSWIN: + { + struct video_window v; + if(copy_from_user(&v, arg, sizeof(v))) + return -EFAULT; + if(v.width > 640 || v.height > 480) + return -EINVAL; + if(v.width < 16 || v.height < 16) + return -EINVAL; + hardware_set_key(v.chromakey); + hardware_set_window(v); + memcpy(&capture_win, &v, sizeof(v)); + capture_w = v.width; + capture_h = v.height; + return 0; + } + + + + + Because we are using Chromakey our setup is fairly simple. Mostly we have to + check the values are sane and load them into the capture card. + + + With all the setup done we can now turn on the actual capture/overlay. This + is done with the VIDIOCCAPTURE ioctl. This takes a single integer argument + where 0 is on and 1 is off. + + + + + case VIDIOCCAPTURE: + { + int v; + if(get_user(v, (int *)arg)) + return -EFAULT; + if(v==0) + hardware_capture_off(); + else + { + if(capture_fb.width == 0 + || capture_w == 0) + return -EINVAL; + hardware_capture_on(); + } + return 0; + } + + + + + We grab the flag from user space and either enable or disable according to + its value. There is one small corner case we have to consider here. Suppose + that the capture was requested before the video window or the frame buffer + had been set up. In those cases there will be unconfigured fields in our + card data, as well as unconfigured hardware settings. We check for this case and + return an error if the frame buffer or the capture window width is zero. + + + + + default: + return -ENOIOCTLCMD; + } +} + + + + We don't need to support any other ioctls, so if we get this far, it is time + to tell the video layer that we don't now what the user is talking about. + +
+ + Other Functionality + + The Video4Linux layer supports additional features, including a high + performance mmap() based capture mode and capturing part of the image. + These features are out of the scope of the book. You should however have enough + example code to implement most simple video4linux devices for radio and TV + cards. + + +
+ + Known Bugs And Assumptions + + + Multiple Opens + + + The driver assumes multiple opens should not be allowed. A driver + can work around this but not cleanly. + + + + API Deficiencies + + + The existing API poorly reflects compression capable devices. There + are plans afoot to merge V4L, V4L2 and some other ideas into a + better interface. + + + + + + + + + Public Functions Provided +!Edrivers/media/video/videodev.c + + +
diff --git a/Documentation/DocBook/wanbook.tmpl b/Documentation/DocBook/wanbook.tmpl new file mode 100644 index 000000000000..9eebcc304de4 --- /dev/null +++ b/Documentation/DocBook/wanbook.tmpl @@ -0,0 +1,99 @@ + + + + + + Synchronous PPP and Cisco HDLC Programming Guide + + + + 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 + + The syncppp drivers in Linux provide a fairly complete + implementation of Cisco HDLC and a minimal implementation of + PPP. The longer term goal is to switch the PPP layer to the + generic PPP interface that is new in Linux 2.3.x. The API should + remain unchanged when this is done, but support will then be + available for IPX, compression and other PPP features + + + + Known Bugs And Assumptions + + + PPP is minimal + + + The current PPP implementation is very basic, although sufficient + for most wan usages. + + + + Cisco HDLC Quirks + + + Currently we do not end all packets with the correct Cisco multicast + or unicast flags. Nothing appears to mind too much but this should + be corrected. + + + + + + + + + Public Functions Provided +!Edrivers/net/wan/syncppp.c + + +
diff --git a/Documentation/DocBook/writing_usb_driver.tmpl b/Documentation/DocBook/writing_usb_driver.tmpl new file mode 100644 index 000000000000..51f3bfb6fb6e --- /dev/null +++ b/Documentation/DocBook/writing_usb_driver.tmpl @@ -0,0 +1,419 @@ + + + + + + Writing USB Device Drivers + + + + Greg + Kroah-Hartman + +
+ greg@kroah.com +
+
+
+
+ + + 2001-2002 + Greg Kroah-Hartman + + + + + 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. + + + + This documentation is based on an article published in + Linux Journal Magazine, October 2001, Issue 90. + + +
+ + + + + Introduction + + The Linux USB subsystem has grown from supporting only two different + types of devices in the 2.2.7 kernel (mice and keyboards), to over 20 + different types of devices in the 2.4 kernel. Linux currently supports + almost all USB class devices (standard types of devices like keyboards, + mice, modems, printers and speakers) and an ever-growing number of + vendor-specific devices (such as USB to serial converters, digital + cameras, Ethernet devices and MP3 players). For a full list of the + different USB devices currently supported, see Resources. + + + The remaining kinds of USB devices that do not have support on Linux are + almost all vendor-specific devices. Each vendor decides to implement a + custom protocol to talk to their device, so a custom driver usually needs + to be created. Some vendors are open with their USB protocols and help + with the creation of Linux drivers, while others do not publish them, and + developers are forced to reverse-engineer. See Resources for some links + to handy reverse-engineering tools. + + + Because each different protocol causes a new driver to be created, I have + written a generic USB driver skeleton, modeled after the pci-skeleton.c + file in the kernel source tree upon which many PCI network drivers have + been based. This USB skeleton can be found at drivers/usb/usb-skeleton.c + in the kernel source tree. In this article I will walk through the basics + of the skeleton driver, explaining the different pieces and what needs to + be done to customize it to your specific device. + + + + + Linux USB Basics + + If you are going to write a Linux USB driver, please become familiar with + the USB protocol specification. It can be found, along with many other + useful documents, at the USB home page (see Resources). An excellent + introduction to the Linux USB subsystem can be found at the USB Working + Devices List (see Resources). It explains how the Linux USB subsystem is + structured and introduces the reader to the concept of USB urbs, which + are essential to USB drivers. + + + The first thing a Linux USB driver needs to do is register itself with + the Linux USB subsystem, giving it some information about which devices + the driver supports and which functions to call when a device supported + by the driver is inserted or removed from the system. All of this + information is passed to the USB subsystem in the usb_driver structure. + The skeleton driver declares a usb_driver as: + + +static struct usb_driver skel_driver = { + .name = "skeleton", + .probe = skel_probe, + .disconnect = skel_disconnect, + .fops = &skel_fops, + .minor = USB_SKEL_MINOR_BASE, + .id_table = skel_table, +}; + + + The variable name is a string that describes the driver. It is used in + informational messages printed to the system log. The probe and + disconnect function pointers are called when a device that matches the + information provided in the id_table variable is either seen or removed. + + + The fops and minor variables are optional. Most USB drivers hook into + another kernel subsystem, such as the SCSI, network or TTY subsystem. + These types of drivers register themselves with the other kernel + subsystem, and any user-space interactions are provided through that + interface. But for drivers that do not have a matching kernel subsystem, + such as MP3 players or scanners, a method of interacting with user space + is needed. The USB subsystem provides a way to register a minor device + number and a set of file_operations function pointers that enable this + user-space interaction. The skeleton driver needs this kind of interface, + so it provides a minor starting number and a pointer to its + file_operations functions. + + + The USB driver is then registered with a call to usb_register, usually in + the driver's init function, as shown here: + + +static int __init usb_skel_init(void) +{ + int result; + + /* register this driver with the USB subsystem */ + result = usb_register(&skel_driver); + if (result < 0) { + err("usb_register failed for the "__FILE__ "driver." + "Error number %d", result); + return -1; + } + + return 0; +} +module_init(usb_skel_init); + + + When the driver is unloaded from the system, it needs to unregister + itself with the USB subsystem. This is done with the usb_unregister + function: + + +static void __exit usb_skel_exit(void) +{ + /* deregister this driver with the USB subsystem */ + usb_deregister(&skel_driver); +} +module_exit(usb_skel_exit); + + + To enable the linux-hotplug system to load the driver automatically when + the device is plugged in, you need to create a MODULE_DEVICE_TABLE. The + following code tells the hotplug scripts that this module supports a + single device with a specific vendor and product ID: + + +/* table of devices that work with this driver */ +static struct usb_device_id skel_table [] = { + { USB_DEVICE(USB_SKEL_VENDOR_ID, USB_SKEL_PRODUCT_ID) }, + { } /* Terminating entry */ +}; +MODULE_DEVICE_TABLE (usb, skel_table); + + + There are other macros that can be used in describing a usb_device_id for + drivers that support a whole class of USB drivers. See usb.h for more + information on this. + + + + + Device operation + + When a device is plugged into the USB bus that matches the device ID + pattern that your driver registered with the USB core, the probe function + is called. The usb_device structure, interface number and the interface ID + are passed to the function: + + +static int skel_probe(struct usb_interface *interface, + const struct usb_device_id *id) + + + The driver now needs to verify that this device is actually one that it + can accept. If so, it returns 0. + If not, or if any error occurs during initialization, an errorcode + (such as -ENOMEM or -ENODEV) + is returned from the probe function. + + + In the skeleton driver, we determine what end points are marked as bulk-in + and bulk-out. We create buffers to hold the data that will be sent and + received from the device, and a USB urb to write data to the device is + initialized. + + + Conversely, when the device is removed from the USB bus, the disconnect + function is called with the device pointer. The driver needs to clean any + private data that has been allocated at this time and to shut down any + pending urbs that are in the USB system. The driver also unregisters + itself from the devfs subsystem with the call: + + +/* remove our devfs node */ +devfs_unregister(skel->devfs); + + + Now that the device is plugged into the system and the driver is bound to + the device, any of the functions in the file_operations structure that + were passed to the USB subsystem will be called from a user program trying + to talk to the device. The first function called will be open, as the + program tries to open the device for I/O. We increment our private usage + count and save off a pointer to our internal structure in the file + structure. This is done so that future calls to file operations will + enable the driver to determine which device the user is addressing. All + of this is done with the following code: + + +/* increment our usage count for the module */ +++skel->open_count; + +/* save our object in the file's private structure */ +file->private_data = dev; + + + After the open function is called, the read and write functions are called + to receive and send data to the device. In the skel_write function, we + receive a pointer to some data that the user wants to send to the device + and the size of the data. The function determines how much data it can + send to the device based on the size of the write urb it has created (this + size depends on the size of the bulk out end point that the device has). + Then it copies the data from user space to kernel space, points the urb to + the data and submits the urb to the USB subsystem. This can be shown in + he following code: + + +/* we can only write as much as 1 urb will hold */ +bytes_written = (count > skel->bulk_out_size) ? skel->bulk_out_size : count; + +/* copy the data from user space into our urb */ +copy_from_user(skel->write_urb->transfer_buffer, buffer, bytes_written); + +/* set up our urb */ +usb_fill_bulk_urb(skel->write_urb, + skel->dev, + usb_sndbulkpipe(skel->dev, skel->bulk_out_endpointAddr), + skel->write_urb->transfer_buffer, + bytes_written, + skel_write_bulk_callback, + skel); + +/* send the data out the bulk port */ +result = usb_submit_urb(skel->write_urb); +if (result) { + err("Failed submitting write urb, error %d", result); +} + + + When the write urb is filled up with the proper information using the + usb_fill_bulk_urb function, we point the urb's completion callback to call our + own skel_write_bulk_callback function. This function is called when the + urb is finished by the USB subsystem. The callback function is called in + interrupt context, so caution must be taken not to do very much processing + at that time. Our implementation of skel_write_bulk_callback merely + reports if the urb was completed successfully or not and then returns. + + + The read function works a bit differently from the write function in that + we do not use an urb to transfer data from the device to the driver. + Instead we call the usb_bulk_msg function, which can be used to send or + receive data from a device without having to create urbs and handle + urb completion callback functions. We call the usb_bulk_msg function, + giving it a buffer into which to place any data received from the device + and a timeout value. If the timeout period expires without receiving any + data from the device, the function will fail and return an error message. + This can be shown with the following code: + + +/* do an immediate bulk read to get data from the device */ +retval = usb_bulk_msg (skel->dev, + usb_rcvbulkpipe (skel->dev, + skel->bulk_in_endpointAddr), + skel->bulk_in_buffer, + skel->bulk_in_size, + &count, HZ*10); +/* if the read was successful, copy the data to user space */ +if (!retval) { + if (copy_to_user (buffer, skel->bulk_in_buffer, count)) + retval = -EFAULT; + else + retval = count; +} + + + The usb_bulk_msg function can be very useful for doing single reads or + writes to a device; however, if you need to read or write constantly to a + device, it is recommended to set up your own urbs and submit them to the + USB subsystem. + + + When the user program releases the file handle that it has been using to + talk to the device, the release function in the driver is called. In this + function we decrement our private usage count and wait for possible + pending writes: + + +/* decrement our usage count for the device */ +--skel->open_count; + + + One of the more difficult problems that USB drivers must be able to handle + smoothly is the fact that the USB device may be removed from the system at + any point in time, even if a program is currently talking to it. It needs + to be able to shut down any current reads and writes and notify the + user-space programs that the device is no longer there. The following + code (function skel_delete) + is an example of how to do this: + +static inline void skel_delete (struct usb_skel *dev) +{ + if (dev->bulk_in_buffer != NULL) + kfree (dev->bulk_in_buffer); + if (dev->bulk_out_buffer != NULL) + usb_buffer_free (dev->udev, dev->bulk_out_size, + dev->bulk_out_buffer, + dev->write_urb->transfer_dma); + if (dev->write_urb != NULL) + usb_free_urb (dev->write_urb); + kfree (dev); +} + + + If a program currently has an open handle to the device, we reset the flag + device_present. For + every read, write, release and other functions that expect a device to be + present, the driver first checks this flag to see if the device is + still present. If not, it releases that the device has disappeared, and a + -ENODEV error is returned to the user-space program. When the release + function is eventually called, it determines if there is no device + and if not, it does the cleanup that the skel_disconnect + function normally does if there are no open files on the device (see + Listing 5). + + + + + Isochronous Data + + This usb-skeleton driver does not have any examples of interrupt or + isochronous data being sent to or from the device. Interrupt data is sent + almost exactly as bulk data is, with a few minor exceptions. Isochronous + data works differently with continuous streams of data being sent to or + from the device. The audio and video camera drivers are very good examples + of drivers that handle isochronous data and will be useful if you also + need to do this. + + + + + Conclusion + + Writing Linux USB device drivers is not a difficult task as the + usb-skeleton driver shows. This driver, combined with the other current + USB drivers, should provide enough examples to help a beginning author + create a working driver in a minimal amount of time. The linux-usb-devel + mailing list archives also contain a lot of helpful information. + + + + + Resources + + The Linux USB Project: http://www.linux-usb.org/ + + + Linux Hotplug Project: http://linux-hotplug.sourceforge.net/ + + + Linux USB Working Devices List: http://www.qbik.ch/usb/devices/ + + + linux-usb-devel Mailing List Archives: http://marc.theaimsgroup.com/?l=linux-usb-devel + + + Programming Guide for Linux USB Device Drivers: http://usb.cs.tum.edu/usbdoc + + + USB Home Page: http://www.usb.org + + + +
diff --git a/Documentation/DocBook/z8530book.tmpl b/Documentation/DocBook/z8530book.tmpl new file mode 100644 index 000000000000..a507876447aa --- /dev/null +++ b/Documentation/DocBook/z8530book.tmpl @@ -0,0 +1,385 @@ + + + + + + Z8530 Programming Guide + + + + 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 + + The Z85x30 family synchronous/asynchronous controller chips are + used on a large number of cheap network interface cards. The + kernel provides a core interface layer that is designed to make + it easy to provide WAN services using this chip. + + + The current driver only support synchronous operation. Merging the + asynchronous driver support into this code to allow any Z85x30 + device to be used as both a tty interface and as a synchronous + controller is a project for Linux post the 2.4 release + + + The support code handles most common card configurations and + supports running both Cisco HDLC and Synchronous PPP. With extra + glue the frame relay and X.25 protocols can also be used with this + driver. + + + + + Driver Modes + + The Z85230 driver layer can drive Z8530, Z85C30 and Z85230 devices + in three different modes. Each mode can be applied to an individual + channel on the chip (each chip has two channels). + + + The PIO synchronous mode supports the most common Z8530 wiring. Here + the chip is interface to the I/O and interrupt facilities of the + host machine but not to the DMA subsystem. When running PIO the + Z8530 has extremely tight timing requirements. Doing high speeds, + even with a Z85230 will be tricky. Typically you should expect to + achieve at best 9600 baud with a Z8C530 and 64Kbits with a Z85230. + + + The DMA mode supports the chip when it is configured to use dual DMA + channels on an ISA bus. The better cards tend to support this mode + of operation for a single channel. With DMA running the Z85230 tops + out when it starts to hit ISA DMA constraints at about 512Kbits. It + is worth noting here that many PC machines hang or crash when the + chip is driven fast enough to hold the ISA bus solid. + + + Transmit DMA mode uses a single DMA channel. The DMA channel is used + for transmission as the transmit FIFO is smaller than the receive + FIFO. it gives better performance than pure PIO mode but is nowhere + near as ideal as pure DMA mode. + + + + + Using the Z85230 driver + + The Z85230 driver provides the back end interface to your board. To + configure a Z8530 interface you need to detect the board and to + identify its ports and interrupt resources. It is also your problem + to verify the resources are available. + + + Having identified the chip you need to fill in a struct z8530_dev, + which describes each chip. This object must exist until you finally + shutdown the board. Firstly zero the active field. This ensures + nothing goes off without you intending it. The irq field should + be set to the interrupt number of the chip. (Each chip has a single + interrupt source rather than each channel). You are responsible + for allocating the interrupt line. The interrupt handler should be + set to z8530_interrupt. The device id should + be set to the z8530_dev structure pointer. Whether the interrupt can + be shared or not is board dependent, and up to you to initialise. + + + The structure holds two channel structures. + Initialise chanA.ctrlio and chanA.dataio with the address of the + control and data ports. You can or this with Z8530_PORT_SLEEP to + indicate your interface needs the 5uS delay for chip settling done + in software. The PORT_SLEEP option is architecture specific. Other + flags may become available on future platforms, eg for MMIO. + Initialise the chanA.irqs to &z8530_nop to start the chip up + as disabled and discarding interrupt events. This ensures that + stray interrupts will be mopped up and not hang the bus. Set + chanA.dev to point to the device structure itself. The + private and name field you may use as you wish. The private field + is unused by the Z85230 layer. The name is used for error reporting + and it may thus make sense to make it match the network name. + + + Repeat the same operation with the B channel if your chip has + both channels wired to something useful. This isn't always the + case. If it is not wired then the I/O values do not matter, but + you must initialise chanB.dev. + + + If your board has DMA facilities then initialise the txdma and + rxdma fields for the relevant channels. You must also allocate the + ISA DMA channels and do any necessary board level initialisation + to configure them. The low level driver will do the Z8530 and + DMA controller programming but not board specific magic. + + + Having initialised the device you can then call + z8530_init. This will probe the chip and + reset it into a known state. An identification sequence is then + run to identify the chip type. If the checks fail to pass the + function returns a non zero error code. Typically this indicates + that the port given is not valid. After this call the + type field of the z8530_dev structure is initialised to either + Z8530, Z85C30 or Z85230 according to the chip found. + + + Once you have called z8530_init you can also make use of the utility + function z8530_describe. This provides a + consistent reporting format for the Z8530 devices, and allows all + the drivers to provide consistent reporting. + + + + + Attaching Network Interfaces + + If you wish to use the network interface facilities of the driver, + then you need to attach a network device to each channel that is + present and in use. In addition to use the SyncPPP and Cisco HDLC + you need to follow some additional plumbing rules. They may seem + complex but a look at the example hostess_sv11 driver should + reassure you. + + + The network device used for each channel should be pointed to by + the netdevice field of each channel. The dev-> priv field of the + network device points to your private data - you will need to be + able to find your ppp device from this. In addition to use the + sync ppp layer the private data must start with a void * pointer + to the syncppp structures. + + + The way most drivers approach this particular problem is to + create a structure holding the Z8530 device definition and + put that and the syncppp pointer into the private field of + the network device. The network device fields of the channels + then point back to the network devices. The ppp_device can also + be put in the private structure conveniently. + + + If you wish to use the synchronous ppp then you need to attach + the syncppp layer to the network device. You should do this before + you register the network device. The + sppp_attach requires that the first void * + pointer in your private data is pointing to an empty struct + ppp_device. The function fills in the initial data for the + ppp/hdlc layer. + + + Before you register your network device you will also need to + provide suitable handlers for most of the network device callbacks. + See the network device documentation for more details on this. + + + + + Configuring And Activating The Port + + The Z85230 driver provides helper functions and tables to load the + port registers on the Z8530 chips. When programming the register + settings for a channel be aware that the documentation recommends + initialisation orders. Strange things happen when these are not + followed. + + + z8530_channel_load takes an array of + pairs of initialisation values in an array of u8 type. The first + value is the Z8530 register number. Add 16 to indicate the alternate + register bank on the later chips. The array is terminated by a 255. + + + The driver provides a pair of public tables. The + z8530_hdlc_kilostream table is for the UK 'Kilostream' service and + also happens to cover most other end host configurations. The + z8530_hdlc_kilostream_85230 table is the same configuration using + the enhancements of the 85230 chip. The configuration loaded is + standard NRZ encoded synchronous data with HDLC bitstuffing. All + of the timing is taken from the other end of the link. + + + When writing your own tables be aware that the driver internally + tracks register values. It may need to reload values. You should + therefore be sure to set registers 1-7, 9-11, 14 and 15 in all + configurations. Where the register settings depend on DMA selection + the driver will update the bits itself when you open or close. + Loading a new table with the interface open is not recommended. + + + There are three standard configurations supported by the core + code. In PIO mode the interface is programmed up to use + interrupt driven PIO. This places high demands on the host processor + to avoid latency. The driver is written to take account of latency + issues but it cannot avoid latencies caused by other drivers, + notably IDE in PIO mode. Because the drivers allocate buffers you + must also prevent MTU changes while the port is open. + + + Once the port is open it will call the rx_function of each channel + whenever a completed packet arrived. This is invoked from + interrupt context and passes you the channel and a network + buffer (struct sk_buff) holding the data. The data includes + the CRC bytes so most users will want to trim the last two + bytes before processing the data. This function is very timing + critical. When you wish to simply discard data the support + code provides the function z8530_null_rx + to discard the data. + + + To active PIO mode sending and receiving the + z8530_sync_open is called. This expects to be passed + the network device and the channel. Typically this is called from + your network device open callback. On a failure a non zero error + status is returned. The z8530_sync_close + function shuts down a PIO channel. This must be done before the + channel is opened again and before the driver shuts down + and unloads. + + + The ideal mode of operation is dual channel DMA mode. Here the + kernel driver will configure the board for DMA in both directions. + The driver also handles ISA DMA issues such as controller + programming and the memory range limit for you. This mode is + activated by calling the z8530_sync_dma_open + function. On failure a non zero error value is returned. + Once this mode is activated it can be shut down by calling the + z8530_sync_dma_close. You must call the close + function matching the open mode you used. + + + The final supported mode uses a single DMA channel to drive the + transmit side. As the Z85C30 has a larger FIFO on the receive + channel this tends to increase the maximum speed a little. + This is activated by calling the z8530_sync_txdma_open + . This returns a non zero error code on failure. The + z8530_sync_txdma_close function closes down + the Z8530 interface from this mode. + + + + + Network Layer Functions + + The Z8530 layer provides functions to queue packets for + transmission. The driver internally buffers the frame currently + being transmitted and one further frame (in order to keep back + to back transmission running). Any further buffering is up to + the caller. + + + The function z8530_queue_xmit takes a network + buffer in sk_buff format and queues it for transmission. The + caller must provide the entire packet with the exception of the + bitstuffing and CRC. This is normally done by the caller via + the syncppp interface layer. It returns 0 if the buffer has been + queued and non zero values for queue full. If the function accepts + the buffer it becomes property of the Z8530 layer and the caller + should not free it. + + + The function z8530_get_stats returns a pointer + to an internally maintained per interface statistics block. This + provides most of the interface code needed to implement the network + layer get_stats callback. + + + + + Porting The Z8530 Driver + + The Z8530 driver is written to be portable. In DMA mode it makes + assumptions about the use of ISA DMA. These are probably warranted + in most cases as the Z85230 in particular was designed to glue to PC + type machines. The PIO mode makes no real assumptions. + + + Should you need to retarget the Z8530 driver to another architecture + the only code that should need changing are the port I/O functions. + At the moment these assume PC I/O port accesses. This may not be + appropriate for all platforms. Replacing + z8530_read_port and z8530_write_port + is intended to be all that is required to port this + driver layer. + + + + + Known Bugs And Assumptions + + + Interrupt Locking + + + The locking in the driver is done via the global cli/sti lock. This + makes for relatively poor SMP performance. Switching this to use a + per device spin lock would probably materially improve performance. + + + + Occasional Failures + + + We have reports of occasional failures when run for very long + periods of time and the driver starts to receive junk frames. At + the moment the cause of this is not clear. + + + + + + + + + Public Functions Provided +!Edrivers/net/wan/z85230.c + + + + Internal Functions +!Idrivers/net/wan/z85230.c + + +
diff --git a/Documentation/IO-mapping.txt b/Documentation/IO-mapping.txt new file mode 100644 index 000000000000..86edb61bdee6 --- /dev/null +++ b/Documentation/IO-mapping.txt @@ -0,0 +1,208 @@ +[ NOTE: The virt_to_bus() and bus_to_virt() functions have been + superseded by the functionality provided by the PCI DMA + interface (see Documentation/DMA-mapping.txt). They continue + to be documented below for historical purposes, but new code + must not use them. --davidm 00/12/12 ] + +[ This is a mail message in response to a query on IO mapping, thus the + strange format for a "document" ] + +The AHA-1542 is a bus-master device, and your patch makes the driver give the +controller the physical address of the buffers, which is correct on x86 +(because all bus master devices see the physical memory mappings directly). + +However, on many setups, there are actually _three_ different ways of looking +at memory addresses, and in this case we actually want the third, the +so-called "bus address". + +Essentially, the three ways of addressing memory are (this is "real memory", +that is, normal RAM--see later about other details): + + - CPU untranslated. This is the "physical" address. Physical address + 0 is what the CPU sees when it drives zeroes on the memory bus. + + - CPU translated address. This is the "virtual" address, and is + completely internal to the CPU itself with the CPU doing the appropriate + translations into "CPU untranslated". + + - bus address. This is the address of memory as seen by OTHER devices, + not the CPU. Now, in theory there could be many different bus + addresses, with each device seeing memory in some device-specific way, but + happily most hardware designers aren't actually actively trying to make + things any more complex than necessary, so you can assume that all + external hardware sees the memory the same way. + +Now, on normal PCs the bus address is exactly the same as the physical +address, and things are very simple indeed. However, they are that simple +because the memory and the devices share the same address space, and that is +not generally necessarily true on other PCI/ISA setups. + +Now, just as an example, on the PReP (PowerPC Reference Platform), the +CPU sees a memory map something like this (this is from memory): + + 0-2 GB "real memory" + 2 GB-3 GB "system IO" (inb/out and similar accesses on x86) + 3 GB-4 GB "IO memory" (shared memory over the IO bus) + +Now, that looks simple enough. However, when you look at the same thing from +the viewpoint of the devices, you have the reverse, and the physical memory +address 0 actually shows up as address 2 GB for any IO master. + +So when the CPU wants any bus master to write to physical memory 0, it +has to give the master address 0x80000000 as the memory address. + +So, for example, depending on how the kernel is actually mapped on the +PPC, you can end up with a setup like this: + + physical address: 0 + virtual address: 0xC0000000 + bus address: 0x80000000 + +where all the addresses actually point to the same thing. It's just seen +through different translations.. + +Similarly, on the Alpha, the normal translation is + + physical address: 0 + virtual address: 0xfffffc0000000000 + bus address: 0x40000000 + +(but there are also Alphas where the physical address and the bus address +are the same). + +Anyway, the way to look up all these translations, you do + + #include + + phys_addr = virt_to_phys(virt_addr); + virt_addr = phys_to_virt(phys_addr); + bus_addr = virt_to_bus(virt_addr); + virt_addr = bus_to_virt(bus_addr); + +Now, when do you need these? + +You want the _virtual_ address when you are actually going to access that +pointer from the kernel. So you can have something like this: + + /* + * this is the hardware "mailbox" we use to communicate with + * the controller. The controller sees this directly. + */ + struct mailbox { + __u32 status; + __u32 bufstart; + __u32 buflen; + .. + } mbox; + + unsigned char * retbuffer; + + /* get the address from the controller */ + retbuffer = bus_to_virt(mbox.bufstart); + switch (retbuffer[0]) { + case STATUS_OK: + ... + +on the other hand, you want the bus address when you have a buffer that +you want to give to the controller: + + /* ask the controller to read the sense status into "sense_buffer" */ + mbox.bufstart = virt_to_bus(&sense_buffer); + mbox.buflen = sizeof(sense_buffer); + mbox.status = 0; + notify_controller(&mbox); + +And you generally _never_ want to use the physical address, because you can't +use that from the CPU (the CPU only uses translated virtual addresses), and +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). + +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). + +There is a completely different type of memory too, and that's the "shared +memory" on the PCI or ISA bus. That's generally not RAM (although in the case +of a video graphics card it can be normal DRAM that is just used for a frame +buffer), but can be things like a packet buffer in a network card etc. + +This memory is called "PCI memory" or "shared memory" or "IO memory" or +whatever, and there is only one way to access it: the readb/writeb and +related functions. You should never take the address of such memory, because +there is really nothing you can do with such an address: it's not +conceptually in the same memory space as "real memory" at all, so you cannot +just dereference a pointer. (Sadly, on x86 it _is_ in the same memory space, +so on x86 it actually works to just deference a pointer, but it's not +portable). + +For such memory, you can do things like + + - reading: + /* + * read first 32 bits from ISA memory at 0xC0000, aka + * C000:0000 in DOS terms + */ + unsigned int signature = isa_readl(0xC0000); + + - remapping and writing: + /* + * remap framebuffer PCI memory area at 0xFC000000, + * size 1MB, so that we can access it: We can directly + * access only the 640k-1MB area, so anything else + * has to be remapped. + */ + char * baseptr = ioremap(0xFC000000, 1024*1024); + + /* write a 'A' to the offset 10 of the area */ + writeb('A',baseptr+10); + + /* unmap when we unload the driver */ + iounmap(baseptr); + + - copying and clearing: + /* get the 6-byte Ethernet address at ISA address E000:0040 */ + memcpy_fromio(kernel_buffer, 0xE0040, 6); + /* write a packet to the driver */ + memcpy_toio(0xE1000, skb->data, skb->len); + /* clear the frame buffer */ + memset_io(0xA0000, 0, 0x10000); + +OK, that just about covers the basics of accessing IO portably. Questions? +Comments? You may think that all the above is overly complex, but one day you +might find yourself with a 500 MHz Alpha in front of you, and then you'll be +happy that your driver works ;) + +Note that kernel versions 2.0.x (and earlier) mistakenly called the +ioremap() function "vremap()". ioremap() is the proper name, but I +didn't think straight when I wrote it originally. People who have to +support both can do something like: + + /* support old naming silliness */ + #if LINUX_VERSION_CODE < 0x020100 + #define ioremap vremap + #define iounmap vfree + #endif + +at the top of their source files, and then they can use the right names +even on 2.0.x systems. + +And the above sounds worse than it really is. Most real drivers really +don't do all that complex things (or rather: the complexity is not so +much in the actual IO accesses as in error handling and timeouts etc). +It's generally not hard to fix drivers, and in many cases the code +actually looks better afterwards: + + unsigned long signature = *(unsigned int *) 0xC0000; + vs + unsigned long signature = readl(0xC0000); + +I think the second version actually is more readable, no? + + Linus + diff --git a/Documentation/IPMI.txt b/Documentation/IPMI.txt new file mode 100644 index 000000000000..90d10e708ca3 --- /dev/null +++ b/Documentation/IPMI.txt @@ -0,0 +1,534 @@ + + The Linux IPMI Driver + --------------------- + Corey Minyard + + + +The Intelligent Platform Management Interface, or IPMI, is a +standard for controlling intelligent devices that monitor a system. +It provides for dynamic discovery of sensors in the system and the +ability to monitor the sensors and be informed when the sensor's +values change or go outside certain boundaries. It also has a +standardized database for field-replacable units (FRUs) and a watchdog +timer. + +To use this, you need an interface to an IPMI controller in your +system (called a Baseboard Management Controller, or BMC) and +management software that can use the IPMI system. + +This document describes how to use the IPMI driver for Linux. If you +are not familiar with IPMI itself, see the web site at +http://www.intel.com/design/servers/ipmi/index.htm. IPMI is a big +subject and I can't cover it all here! + +Configuration +------------- + +The LinuxIPMI driver is modular, which means you have to pick several +things to have it work right depending on your hardware. Most of +these are available in the 'Character Devices' menu. + +No matter what, you must pick 'IPMI top-level message handler' to use +IPMI. What you do beyond that depends on your needs and hardware. + +The message handler does not provide any user-level interfaces. +Kernel code (like the watchdog) can still use it. If you need access +from userland, you need to select 'Device interface for IPMI' if you +want access through a device driver. Another interface is also +available, you may select 'IPMI sockets' in the 'Networking Support' +main menu. This provides a socket interface to IPMI. You may select +both of these at the same time, they will both work together. + +The driver interface depends on your hardware. If you have a board +with a standard interface (These will generally be either "KCS", +"SMIC", or "BT", consult your hardware manual), choose the 'IPMI SI +handler' option. A driver also exists for direct I2C access to the +IPMI management controller. Some boards support this, but it is +unknown if it will work on every board. For this, choose 'IPMI SMBus +handler', but be ready to try to do some figuring to see if it will +work. + +There is also a KCS-only driver interface supplied, but it is +depracated in favor of the SI interface. + +You should generally enable ACPI on your system, as systems with IPMI +should have ACPI tables describing them. + +If you have a standard interface and the board manufacturer has done +their job correctly, the IPMI controller should be automatically +detect (via ACPI or SMBIOS tables) and should just work. Sadly, many +boards do not have this information. The driver attempts standard +defaults, but they may not work. If you fall into this situation, you +need to read the section below named 'The SI Driver' on how to +hand-configure your system. + +IPMI defines a standard watchdog timer. You can enable this with the +'IPMI Watchdog Timer' config option. If you compile the driver into +the kernel, then via a kernel command-line option you can have the +watchdog timer start as soon as it intitializes. It also have a lot +of other options, see the 'Watchdog' section below for more details. +Note that you can also have the watchdog continue to run if it is +closed (by default it is disabled on close). Go into the 'Watchdog +Cards' menu, enable 'Watchdog Timer Support', and enable the option +'Disable watchdog shutdown on close'. + + +Basic Design +------------ + +The Linux IPMI driver is designed to be very modular and flexible, you +only need to take the pieces you need and you can use it in many +different ways. Because of that, it's broken into many chunks of +code. These chunks are: + +ipmi_msghandler - This is the central piece of software for the IPMI +system. It handles all messages, message timing, and responses. The +IPMI users tie into this, and the IPMI physical interfaces (called +System Management Interfaces, or SMIs) also tie in here. This +provides the kernelland interface for IPMI, but does not provide an +interface for use by application processes. + +ipmi_devintf - This provides a userland IOCTL interface for the IPMI +driver, each open file for this device ties in to the message handler +as an IPMI user. + +ipmi_si - A driver for various system interfaces. This supports +KCS, SMIC, and may support BT in the future. Unless you have your own +custom interface, you probably need to use this. + +ipmi_smb - A driver for accessing BMCs on the SMBus. It uses the +I2C kernel driver's SMBus interfaces to send and receive IPMI messages +over the SMBus. + +af_ipmi - A network socket interface to IPMI. This doesn't take up +a character device in your system. + +Note that the KCS-only interface ahs been removed. + +Much documentation for the interface is in the include files. The +IPMI include files are: + +net/af_ipmi.h - Contains the socket interface. + +linux/ipmi.h - Contains the user interface and IOCTL interface for IPMI. + +linux/ipmi_smi.h - Contains the interface for system management interfaces +(things that interface to IPMI controllers) to use. + +linux/ipmi_msgdefs.h - General definitions for base IPMI messaging. + + +Addressing +---------- + +The IPMI addressing works much like IP addresses, you have an overlay +to handle the different address types. The overlay is: + + struct ipmi_addr + { + int addr_type; + short channel; + char data[IPMI_MAX_ADDR_SIZE]; + }; + +The addr_type determines what the address really is. The driver +currently understands two different types of addresses. + +"System Interface" addresses are defined as: + + struct ipmi_system_interface_addr + { + int addr_type; + short channel; + }; + +and the type is IPMI_SYSTEM_INTERFACE_ADDR_TYPE. This is used for talking +straight to the BMC on the current card. The channel must be +IPMI_BMC_CHANNEL. + +Messages that are destined to go out on the IPMB bus use the +IPMI_IPMB_ADDR_TYPE address type. The format is + + struct ipmi_ipmb_addr + { + int addr_type; + short channel; + unsigned char slave_addr; + unsigned char lun; + }; + +The "channel" here is generally zero, but some devices support more +than one channel, it corresponds to the channel as defined in the IPMI +spec. + + +Messages +-------- + +Messages are defined as: + +struct ipmi_msg +{ + unsigned char netfn; + unsigned char lun; + unsigned char cmd; + unsigned char *data; + int data_len; +}; + +The driver takes care of adding/stripping the header information. The +data portion is just the data to be send (do NOT put addressing info +here) or the response. Note that the completion code of a response is +the first item in "data", it is not stripped out because that is how +all the messages are defined in the spec (and thus makes counting the +offsets a little easier :-). + +When using the IOCTL interface from userland, you must provide a block +of data for "data", fill it, and set data_len to the length of the +block of data, even when receiving messages. Otherwise the driver +will have no place to put the message. + +Messages coming up from the message handler in kernelland will come in +as: + + struct ipmi_recv_msg + { + struct list_head link; + + /* The type of message as defined in the "Receive Types" + defines above. */ + int recv_type; + + ipmi_user_t *user; + struct ipmi_addr addr; + long msgid; + struct ipmi_msg msg; + + /* Call this when done with the message. It will presumably free + the message and do any other necessary cleanup. */ + void (*done)(struct ipmi_recv_msg *msg); + + /* Place-holder for the data, don't make any assumptions about + the size or existence of this, since it may change. */ + unsigned char msg_data[IPMI_MAX_MSG_LENGTH]; + }; + +You should look at the receive type and handle the message +appropriately. + + +The Upper Layer Interface (Message Handler) +------------------------------------------- + +The upper layer of the interface provides the users with a consistent +view of the IPMI interfaces. It allows multiple SMI interfaces to be +addressed (because some boards actually have multiple BMCs on them) +and the user should not have to care what type of SMI is below them. + + +Creating the User + +To user the message handler, you must first create a user using +ipmi_create_user. The interface number specifies which SMI you want +to connect to, and you must supply callback functions to be called +when data comes in. The callback function can run at interrupt level, +so be careful using the callbacks. This also allows to you pass in a +piece of data, the handler_data, that will be passed back to you on +all calls. + +Once you are done, call ipmi_destroy_user() to get rid of the user. + +From userland, opening the device automatically creates a user, and +closing the device automatically destroys the user. + + +Messaging + +To send a message from kernel-land, the ipmi_request() call does +pretty much all message handling. Most of the parameter are +self-explanatory. However, it takes a "msgid" parameter. This is NOT +the sequence number of messages. It is simply a long value that is +passed back when the response for the message is returned. You may +use it for anything you like. + +Responses come back in the function pointed to by the ipmi_recv_hndl +field of the "handler" that you passed in to ipmi_create_user(). +Remember again, these may be running at interrupt level. Remember to +look at the receive type, too. + +From userland, you fill out an ipmi_req_t structure and use the +IPMICTL_SEND_COMMAND ioctl. For incoming stuff, you can use select() +or poll() to wait for messages to come in. However, you cannot use +read() to get them, you must call the IPMICTL_RECEIVE_MSG with the +ipmi_recv_t structure to actually get the message. Remember that you +must supply a pointer to a block of data in the msg.data field, and +you must fill in the msg.data_len field with the size of the data. +This gives the receiver a place to actually put the message. + +If the message cannot fit into the data you provide, you will get an +EMSGSIZE error and the driver will leave the data in the receive +queue. If you want to get it and have it truncate the message, us +the IPMICTL_RECEIVE_MSG_TRUNC ioctl. + +When you send a command (which is defined by the lowest-order bit of +the netfn per the IPMI spec) on the IPMB bus, the driver will +automatically assign the sequence number to the command and save the +command. If the response is not receive in the IPMI-specified 5 +seconds, it will generate a response automatically saying the command +timed out. If an unsolicited response comes in (if it was after 5 +seconds, for instance), that response will be ignored. + +In kernelland, after you receive a message and are done with it, you +MUST call ipmi_free_recv_msg() on it, or you will leak messages. Note +that you should NEVER mess with the "done" field of a message, that is +required to properly clean up the message. + +Note that when sending, there is an ipmi_request_supply_msgs() call +that lets you supply the smi and receive message. This is useful for +pieces of code that need to work even if the system is out of buffers +(the watchdog timer uses this, for instance). You supply your own +buffer and own free routines. This is not recommended for normal use, +though, since it is tricky to manage your own buffers. + + +Events and Incoming Commands + +The driver takes care of polling for IPMI events and receiving +commands (commands are messages that are not responses, they are +commands that other things on the IPMB bus have sent you). To receive +these, you must register for them, they will not automatically be sent +to you. + +To receive events, you must call ipmi_set_gets_events() and set the +"val" to non-zero. Any events that have been received by the driver +since startup will immediately be delivered to the first user that +registers for events. After that, if multiple users are registered +for events, they will all receive all events that come in. + +For receiving commands, you have to individually register commands you +want to receive. Call ipmi_register_for_cmd() and supply the netfn +and command name for each command you want to receive. Only one user +may be registered for each netfn/cmd, but different users may register +for different commands. + +From userland, equivalent IOCTLs are provided to do these functions. + + +The Lower Layer (SMI) Interface +------------------------------- + +As mentioned before, multiple SMI interfaces may be registered to the +message handler, each of these is assigned an interface number when +they register with the message handler. They are generally assigned +in the order they register, although if an SMI unregisters and then +another one registers, all bets are off. + +The ipmi_smi.h defines the interface for management interfaces, see +that for more details. + + +The SI Driver +------------- + +The SI driver allows up to 4 KCS or SMIC interfaces to be configured +in the system. By default, scan the ACPI tables for interfaces, and +if it doesn't find any the driver will attempt to register one KCS +interface at the spec-specified I/O port 0xca2 without interrupts. +You can change this at module load time (for a module) with: + + modprobe ipmi_si.o type=,.... + ports=,... addrs=,... + irqs=,... trydefaults=[0|1] + regspacings=,,... regsizes=,,... + regshifts=,,... + slave_addrs=,,... + +Each of these except si_trydefaults is a list, the first item for the +first interface, second item for the second interface, etc. + +The si_type may be either "kcs", "smic", or "bt". If you leave it blank, it +defaults to "kcs". + +If you specify si_addrs as non-zero for an interface, the driver will +use the memory address given as the address of the device. This +overrides si_ports. + +If you specify si_ports as non-zero for an interface, the driver will +use the I/O port given as the device address. + +If you specify si_irqs as non-zero for an interface, the driver will +attempt to use the given interrupt for the device. + +si_trydefaults sets whether the standard IPMI interface at 0xca2 and +any interfaces specified by ACPE are tried. By default, the driver +tries it, set this value to zero to turn this off. + +The next three parameters have to do with register layout. The +registers used by the interfaces may not appear at successive +locations and they may not be in 8-bit registers. These parameters +allow the layout of the data in the registers to be more precisely +specified. + +The regspacings parameter give the number of bytes between successive +register start addresses. For instance, if the regspacing is set to 4 +and the start address is 0xca2, then the address for the second +register would be 0xca6. This defaults to 1. + +The regsizes parameter gives the size of a register, in bytes. The +data used by IPMI is 8-bits wide, but it may be inside a larger +register. This parameter allows the read and write type to specified. +It may be 1, 2, 4, or 8. The default is 1. + +Since the register size may be larger than 32 bits, the IPMI data may not +be in the lower 8 bits. The regshifts parameter give the amount to shift +the data to get to the actual IPMI data. + +The slave_addrs specifies the IPMI address of the local BMC. This is +usually 0x20 and the driver defaults to that, but in case it's not, it +can be specified when the driver starts up. + +When compiled into the kernel, the addresses can be specified on the +kernel command line as: + + ipmi_si.type=,... + ipmi_si.ports=,... ipmi_si.addrs=,... + ipmi_si.irqs=,... ipmi_si.trydefaults=[0|1] + ipmi_si.regspacings=,,... + ipmi_si.regsizes=,,... + ipmi_si.regshifts=,,... + ipmi_si.slave_addrs=,,... + +It works the same as the module parameters of the same names. + +By default, the driver will attempt to detect any device specified by +ACPI, and if none of those then a KCS device at the spec-specified +0xca2. If you want to turn this off, set the "trydefaults" option to +false. + +If you have high-res timers compiled into the kernel, the driver will +use them to provide much better performance. Note that if you do not +have high-res timers enabled in the kernel and you don't have +interrupts enabled, the driver will run VERY slowly. Don't blame me, +these interfaces suck. + + +The SMBus Driver +---------------- + +The SMBus driver allows up to 4 SMBus devices to be configured in the +system. By default, the driver will register any SMBus interfaces it finds +in the I2C address range of 0x20 to 0x4f on any adapter. You can change this +at module load time (for a module) with: + + modprobe ipmi_smb.o + addr=,[,,[,...]] + dbg=,... + [defaultprobe=0] [dbg_probe=1] + +The addresses are specified in pairs, the first is the adapter ID and the +second is the I2C address on that adapter. + +The debug flags are bit flags for each BMC found, they are: +IPMI messages: 1, driver state: 2, timing: 4, I2C probe: 8 + +Setting smb_defaultprobe to zero disabled the default probing of SMBus +interfaces at address range 0x20 to 0x4f. This means that only the +BMCs specified on the smb_addr line will be detected. + +Setting smb_dbg_probe to 1 will enable debugging of the probing and +detection process for BMCs on the SMBusses. + +Discovering the IPMI compilant BMC on the SMBus can cause devices +on the I2C bus to fail. The SMBus driver writes a "Get Device ID" IPMI +message as a block write to the I2C bus and waits for a response. +This action can be detrimental to some I2C devices. It is highly recommended +that the known I2c address be given to the SMBus driver in the smb_addr +parameter. The default adrress range will not be used when a smb_addr +parameter is provided. + +When compiled into the kernel, the addresses can be specified on the +kernel command line as: + + ipmb_smb.addr=,[,,[,...]] + ipmi_smb.dbg=,... + ipmi_smb.defaultprobe=0 ipmi_smb.dbg_probe=1 + +These are the same options as on the module command line. + +Note that you might need some I2C changes if CONFIG_IPMI_PANIC_EVENT +is enabled along with this, so the I2C driver knows to run to +completion during sending a panic event. + + +Other Pieces +------------ + +Watchdog +-------- + +A watchdog timer is provided that implements the Linux-standard +watchdog timer interface. It has three module parameters that can be +used to control it: + + modprobe ipmi_watchdog timeout= pretimeout= action= + preaction= preop= start_now=x + nowayout=x + +The timeout is the number of seconds to the action, and the pretimeout +is the amount of seconds before the reset that the pre-timeout panic will +occur (if pretimeout is zero, then pretimeout will not be enabled). Note +that the pretimeout is the time before the final timeout. So if the +timeout is 50 seconds and the pretimeout is 10 seconds, then the pretimeout +will occur in 40 second (10 seconds before the timeout). + +The action may be "reset", "power_cycle", or "power_off", and +specifies what to do when the timer times out, and defaults to +"reset". + +The preaction may be "pre_smi" for an indication through the SMI +interface, "pre_int" for an indication through the SMI with an +interrupts, and "pre_nmi" for a NMI on a preaction. This is how +the driver is informed of the pretimeout. + +The preop may be set to "preop_none" for no operation on a pretimeout, +"preop_panic" to set the preoperation to panic, or "preop_give_data" +to provide data to read from the watchdog device when the pretimeout +occurs. A "pre_nmi" setting CANNOT be used with "preop_give_data" +because you can't do data operations from an NMI. + +When preop is set to "preop_give_data", one byte comes ready to read +on the device when the pretimeout occurs. Select and fasync work on +the device, as well. + +If start_now is set to 1, the watchdog timer will start running as +soon as the driver is loaded. + +If nowayout is set to 1, the watchdog timer will not stop when the +watchdog device is closed. The default value of nowayout is true +if the CONFIG_WATCHDOG_NOWAYOUT option is enabled, or false if not. + +When compiled into the kernel, the kernel command line is available +for configuring the watchdog: + + ipmi_watchdog.timeout= ipmi_watchdog.pretimeout= + ipmi_watchdog.action= + ipmi_watchdog.preaction= + ipmi_watchdog.preop= + ipmi_watchdog.start_now=x + ipmi_watchdog.nowayout=x + +The options are the same as the module parameter options. + +The watchdog will panic and start a 120 second reset timeout if it +gets a pre-action. During a panic or a reboot, the watchdog will +start a 120 timer if it is running to make sure the reboot occurs. + +Note that if you use the NMI preaction for the watchdog, you MUST +NOT use nmi watchdog mode 1. If you use the NMI watchdog, you +must use mode 2. + +Once you open the watchdog timer, you must write a 'V' character to the +device to close it, or the timer will not stop. This is a new semantic +for the driver, but makes it consistent with the rest of the watchdog +drivers in Linux. diff --git a/Documentation/IRQ-affinity.txt b/Documentation/IRQ-affinity.txt new file mode 100644 index 000000000000..938d7dd05490 --- /dev/null +++ b/Documentation/IRQ-affinity.txt @@ -0,0 +1,37 @@ + +SMP IRQ affinity, started by Ingo Molnar + + +/proc/irq/IRQ#/smp_affinity specifies which target CPUs are permitted +for a given IRQ source. It's a bitmask of allowed CPUs. It's not allowed +to turn off all CPUs, and if an IRQ controller does not support IRQ +affinity then the value will not change from the default 0xffffffff. + +Here is an example of restricting IRQ44 (eth1) to CPU0-3 then restricting +the IRQ to CPU4-7 (this is an 8-CPU SMP box): + +[root@moon 44]# cat smp_affinity +ffffffff +[root@moon 44]# echo 0f > smp_affinity +[root@moon 44]# cat smp_affinity +0000000f +[root@moon 44]# ping -f h +PING hell (195.4.7.3): 56 data bytes +... +--- hell ping statistics --- +6029 packets transmitted, 6027 packets received, 0% packet loss +round-trip min/avg/max = 0.1/0.1/0.4 ms +[root@moon 44]# cat /proc/interrupts | grep 44: + 44: 0 1785 1785 1783 1783 1 +1 0 IO-APIC-level eth1 +[root@moon 44]# echo f0 > smp_affinity +[root@moon 44]# ping -f h +PING hell (195.4.7.3): 56 data bytes +.. +--- hell ping statistics --- +2779 packets transmitted, 2777 packets received, 0% packet loss +round-trip min/avg/max = 0.1/0.5/585.4 ms +[root@moon 44]# cat /proc/interrupts | grep 44: + 44: 1068 1785 1785 1784 1784 1069 1070 1069 IO-APIC-level eth1 +[root@moon 44]# + diff --git a/Documentation/MSI-HOWTO.txt b/Documentation/MSI-HOWTO.txt new file mode 100644 index 000000000000..d5032eb480aa --- /dev/null +++ b/Documentation/MSI-HOWTO.txt @@ -0,0 +1,503 @@ + The MSI Driver Guide HOWTO + Tom L Nguyen tom.l.nguyen@intel.com + 10/03/2003 + Revised Feb 12, 2004 by Martine Silbermann + email: Martine.Silbermann@hp.com + Revised Jun 25, 2004 by Tom L Nguyen + +1. About this guide + +This guide describes the basics of Message Signaled Interrupts (MSI), +the advantages of using MSI over traditional interrupt mechanisms, +and how to enable your driver to use MSI or MSI-X. Also included is +a Frequently Asked Questions. + +2. Copyright 2003 Intel Corporation + +3. What is MSI/MSI-X? + +Message Signaled Interrupt (MSI), as described in the PCI Local Bus +Specification Revision 2.3 or latest, is an optional feature, and a +required feature for PCI Express devices. MSI enables a device function +to request service by sending an Inbound Memory Write on its PCI bus to +the FSB as a Message Signal Interrupt transaction. Because MSI is +generated in the form of a Memory Write, all transaction conditions, +such as a Retry, Master-Abort, Target-Abort or normal completion, are +supported. + +A PCI device that supports MSI must also support pin IRQ assertion +interrupt mechanism to provide backward compatibility for systems that +do not support MSI. In Systems, which support MSI, the bus driver is +responsible for initializing the message address and message data of +the device function's MSI/MSI-X capability structure during device +initial configuration. + +An MSI capable device function indicates MSI support by implementing +the MSI/MSI-X capability structure in its PCI capability list. The +device function may implement both the MSI capability structure and +the MSI-X capability structure; however, the bus driver should not +enable both. + +The MSI capability structure contains Message Control register, +Message Address register and Message Data register. These registers +provide the bus driver control over MSI. The Message Control register +indicates the MSI capability supported by the device. The Message +Address register specifies the target address and the Message Data +register specifies the characteristics of the message. To request +service, the device function writes the content of the Message Data +register to the target address. The device and its software driver +are prohibited from writing to these registers. + +The MSI-X capability structure is an optional extension to MSI. It +uses an independent and separate capability structure. There are +some key advantages to implementing the MSI-X capability structure +over the MSI capability structure as described below. + + - Support a larger maximum number of vectors per function. + + - Provide the ability for system software to configure + each vector with an independent message address and message + data, specified by a table that resides in Memory Space. + + - MSI and MSI-X both support per-vector masking. Per-vector + masking is an optional extension of MSI but a required + feature for MSI-X. Per-vector masking provides the kernel + the ability to mask/unmask MSI when servicing its software + interrupt service routing handler. If per-vector masking is + not supported, then the device driver should provide the + hardware/software synchronization to ensure that the device + generates MSI when the driver wants it to do so. + +4. Why use MSI? + +As a benefit the simplification of board design, MSI allows board +designers to remove out of band interrupt routing. MSI is another +step towards a legacy-free environment. + +Due to increasing pressure on chipset and processor packages to +reduce pin count, the need for interrupt pins is expected to +diminish over time. Devices, due to pin constraints, may implement +messages to increase performance. + +PCI Express endpoints uses INTx emulation (in-band messages) instead +of IRQ pin assertion. Using INTx emulation requires interrupt +sharing among devices connected to the same node (PCI bridge) while +MSI is unique (non-shared) and does not require BIOS configuration +support. As a result, the PCI Express technology requires MSI +support for better interrupt performance. + +Using MSI enables the device functions to support two or more +vectors, which can be configured to target different CPU's to +increase scalability. + +5. Configuring a driver to use MSI/MSI-X + +By default, the kernel will not enable MSI/MSI-X on all devices that +support this capability. The CONFIG_PCI_MSI kernel option +must be selected to enable MSI/MSI-X support. + +5.1 Including MSI/MSI-X support into the kernel + +To allow MSI/MSI-X capable device drivers to selectively enable +MSI/MSI-X (using pci_enable_msi()/pci_enable_msix() as described +below), the VECTOR based scheme needs to be enabled by setting +CONFIG_PCI_MSI during kernel config. + +Since the target of the inbound message is the local APIC, providing +CONFIG_X86_LOCAL_APIC must be enabled as well as CONFIG_PCI_MSI. + +5.2 Configuring for MSI support + +Due to the non-contiguous fashion in vector assignment of the +existing Linux kernel, this version does not support multiple +messages regardless of a device function is capable of supporting +more than one vector. To enable MSI on a device function's MSI +capability structure requires a device driver to call the function +pci_enable_msi() explicitly. + +5.2.1 API pci_enable_msi + +int pci_enable_msi(struct pci_dev *dev) + +With this new API, any existing device driver, which like to have +MSI enabled on its device function, must call this API to enable MSI +A successful call will initialize the MSI capability structure +with ONE vector, regardless of whether a device function is +capable of supporting multiple messages. This vector replaces the +pre-assigned dev->irq with a new MSI vector. To avoid the conflict +of new assigned vector with existing pre-assigned vector requires +a device driver to call this API before calling request_irq(). + +5.2.2 API pci_disable_msi + +void pci_disable_msi(struct pci_dev *dev) + +This API should always be used to undo the effect of pci_enable_msi() +when a device driver is unloading. This API restores dev->irq with +the pre-assigned IOAPIC vector and switches a device's interrupt +mode to PCI pin-irq assertion/INTx emulation mode. + +Note that a device driver should always call free_irq() on MSI vector +it has done request_irq() on before calling this API. Failure to do +so results a BUG_ON() and a device will be left with MSI enabled and +leaks its vector. + +5.2.3 MSI mode vs. legacy mode diagram + +The below diagram shows the events, which switches the interrupt +mode on the MSI-capable device function between MSI mode and +PIN-IRQ assertion mode. + + ------------ pci_enable_msi ------------------------ + | | <=============== | | + | MSI MODE | | PIN-IRQ ASSERTION MODE | + | | ===============> | | + ------------ pci_disable_msi ------------------------ + + +Figure 1.0 MSI Mode vs. Legacy Mode + +In Figure 1.0, a device operates by default in legacy mode. Legacy +in this context means PCI pin-irq assertion or PCI-Express INTx +emulation. A successful MSI request (using pci_enable_msi()) switches +a device's interrupt mode to MSI mode. A pre-assigned IOAPIC vector +stored in dev->irq will be saved by the PCI subsystem and a new +assigned MSI vector will replace dev->irq. + +To return back to its default mode, a device driver should always call +pci_disable_msi() to undo the effect of pci_enable_msi(). Note that a +device driver should always call free_irq() on MSI vector it has done +request_irq() on before calling pci_disable_msi(). Failure to do so +results a BUG_ON() and a device will be left with MSI enabled and +leaks its vector. Otherwise, the PCI subsystem restores a device's +dev->irq with a pre-assigned IOAPIC vector and marks released +MSI vector as unused. + +Once being marked as unused, there is no guarantee that the PCI +subsystem will reserve this MSI vector for a device. Depending on +the availability of current PCI vector resources and the number of +MSI/MSI-X requests from other drivers, this MSI may be re-assigned. + +For the case where the PCI subsystem re-assigned this MSI vector +another driver, a request to switching back to MSI mode may result +in being assigned a different MSI vector or a failure if no more +vectors are available. + +5.3 Configuring for MSI-X support + +Due to the ability of the system software to configure each vector of +the MSI-X capability structure with an independent message address +and message data, the non-contiguous fashion in vector assignment of +the existing Linux kernel has no impact on supporting multiple +messages on an MSI-X capable device functions. To enable MSI-X on +a device function's MSI-X capability structure requires its device +driver to call the function pci_enable_msix() explicitly. + +The function pci_enable_msix(), once invoked, enables either +all or nothing, depending on the current availability of PCI vector +resources. If the PCI vector resources are available for the number +of vectors requested by a device driver, this function will configure +the MSI-X table of the MSI-X capability structure of a device with +requested messages. To emphasize this reason, for example, a device +may be capable for supporting the maximum of 32 vectors while its +software driver usually may request 4 vectors. It is recommended +that the device driver should call this function once during the +initialization phase of the device driver. + +Unlike the function pci_enable_msi(), the function pci_enable_msix() +does not replace the pre-assigned IOAPIC dev->irq with a new MSI +vector because the PCI subsystem writes the 1:1 vector-to-entry mapping +into the field vector of each element contained in a second argument. +Note that the pre-assigned IO-APIC dev->irq is valid only if the device +operates in PIN-IRQ assertion mode. In MSI-X mode, any attempt of +using dev->irq by the device driver to request for interrupt service +may result unpredictabe behavior. + +For each MSI-X vector granted, a device driver is responsible to call +other functions like request_irq(), enable_irq(), etc. to enable +this vector with its corresponding interrupt service handler. It is +a device driver's choice to assign all vectors with the same +interrupt service handler or each vector with a unique interrupt +service handler. + +5.3.1 Handling MMIO address space of MSI-X Table + +The PCI 3.0 specification has implementation notes that MMIO address +space for a device's MSI-X structure should be isolated so that the +software system can set different page for controlling accesses to +the MSI-X structure. The implementation of MSI patch requires the PCI +subsystem, not a device driver, to maintain full control of the MSI-X +table/MSI-X PBA and MMIO address space of the MSI-X table/MSI-X PBA. +A device driver is prohibited from requesting the MMIO address space +of the MSI-X table/MSI-X PBA. Otherwise, the PCI subsystem will fail +enabling MSI-X on its hardware device when it calls the function +pci_enable_msix(). + +5.3.2 Handling MSI-X allocation + +Determining the number of MSI-X vectors allocated to a function is +dependent on the number of MSI capable devices and MSI-X capable +devices populated in the system. The policy of allocating MSI-X +vectors to a function is defined as the following: + +#of MSI-X vectors allocated to a function = (x - y)/z where + +x = The number of available PCI vector resources by the time + the device driver calls pci_enable_msix(). The PCI vector + resources is the sum of the number of unassigned vectors + (new) and the number of released vectors when any MSI/MSI-X + device driver switches its hardware device back to a legacy + mode or is hot-removed. The number of unassigned vectors + may exclude some vectors reserved, as defined in parameter + NR_HP_RESERVED_VECTORS, for the case where the system is + capable of supporting hot-add/hot-remove operations. Users + may change the value defined in NR_HR_RESERVED_VECTORS to + meet their specific needs. + +y = The number of MSI capable devices populated in the system. + This policy ensures that each MSI capable device has its + vector reserved to avoid the case where some MSI-X capable + drivers may attempt to claim all available vector resources. + +z = The number of MSI-X capable devices pupulated in the system. + This policy ensures that maximum (x - y) is distributed + evenly among MSI-X capable devices. + +Note that the PCI subsystem scans y and z during a bus enumeration. +When the PCI subsystem completes configuring MSI/MSI-X capability +structure of a device as requested by its device driver, y/z is +decremented accordingly. + +5.3.3 Handling MSI-X shortages + +For the case where fewer MSI-X vectors are allocated to a function +than requested, the function pci_enable_msix() will return the +maximum number of MSI-X vectors available to the caller. A device +driver may re-send its request with fewer or equal vectors indicated +in a return. For example, if a device driver requests 5 vectors, but +the number of available vectors is 3 vectors, a value of 3 will be a +return as a result of pci_enable_msix() call. A function could be +designed for its driver to use only 3 MSI-X table entries as +different combinations as ABC--, A-B-C, A--CB, etc. Note that this +patch does not support multiple entries with the same vector. Such +attempt by a device driver to use 5 MSI-X table entries with 3 vectors +as ABBCC, AABCC, BCCBA, etc will result as a failure by the function +pci_enable_msix(). Below are the reasons why supporting multiple +entries with the same vector is an undesirable solution. + + - The PCI subsystem can not determine which entry, which + generated the message, to mask/unmask MSI while handling + software driver ISR. Attempting to walk through all MSI-X + table entries (2048 max) to mask/unmask any match vector + is an undesirable solution. + + - Walk through all MSI-X table entries (2048 max) to handle + SMP affinity of any match vector is an undesirable solution. + +5.3.4 API pci_enable_msix + +int pci_enable_msix(struct pci_dev *dev, u32 *entries, int nvec) + +This API enables a device driver to request the PCI subsystem +for enabling MSI-X messages on its hardware device. Depending on +the availability of PCI vectors resources, the PCI subsystem enables +either all or nothing. + +Argument dev points to the device (pci_dev) structure. + +Argument entries is a pointer of unsigned integer type. The number of +elements is indicated in argument nvec. The content of each element +will be mapped to the following struct defined in /driver/pci/msi.h. + +struct msix_entry { + u16 vector; /* kernel uses to write alloc vector */ + u16 entry; /* driver uses to specify entry */ +}; + +A device driver is responsible for initializing the field entry of +each element with unique entry supported by MSI-X table. Otherwise, +-EINVAL will be returned as a result. A successful return of zero +indicates the PCI subsystem completes initializing each of requested +entries of the MSI-X table with message address and message data. +Last but not least, the PCI subsystem will write the 1:1 +vector-to-entry mapping into the field vector of each element. A +device driver is responsible of keeping track of allocated MSI-X +vectors in its internal data structure. + +Argument nvec is an integer indicating the number of messages +requested. + +A return of zero indicates that the number of MSI-X vectors is +successfully allocated. A return of greater than zero indicates +MSI-X vector shortage. Or a return of less than zero indicates +a failure. This failure may be a result of duplicate entries +specified in second argument, or a result of no available vector, +or a result of failing to initialize MSI-X table entries. + +5.3.5 API pci_disable_msix + +void pci_disable_msix(struct pci_dev *dev) + +This API should always be used to undo the effect of pci_enable_msix() +when a device driver is unloading. Note that a device driver should +always call free_irq() on all MSI-X vectors it has done request_irq() +on before calling this API. Failure to do so results a BUG_ON() and +a device will be left with MSI-X enabled and leaks its vectors. + +5.3.6 MSI-X mode vs. legacy mode diagram + +The below diagram shows the events, which switches the interrupt +mode on the MSI-X capable device function between MSI-X mode and +PIN-IRQ assertion mode (legacy). + + ------------ pci_enable_msix(,,n) ------------------------ + | | <=============== | | + | MSI-X MODE | | PIN-IRQ ASSERTION MODE | + | | ===============> | | + ------------ pci_disable_msix ------------------------ + +Figure 2.0 MSI-X Mode vs. Legacy Mode + +In Figure 2.0, a device operates by default in legacy mode. A +successful MSI-X request (using pci_enable_msix()) switches a +device's interrupt mode to MSI-X mode. A pre-assigned IOAPIC vector +stored in dev->irq will be saved by the PCI subsystem; however, +unlike MSI mode, the PCI subsystem will not replace dev->irq with +assigned MSI-X vector because the PCI subsystem already writes the 1:1 +vector-to-entry mapping into the field vector of each element +specified in second argument. + +To return back to its default mode, a device driver should always call +pci_disable_msix() to undo the effect of pci_enable_msix(). Note that +a device driver should always call free_irq() on all MSI-X vectors it +has done request_irq() on before calling pci_disable_msix(). Failure +to do so results a BUG_ON() and a device will be left with MSI-X +enabled and leaks its vectors. Otherwise, the PCI subsystem switches a +device function's interrupt mode from MSI-X mode to legacy mode and +marks all allocated MSI-X vectors as unused. + +Once being marked as unused, there is no guarantee that the PCI +subsystem will reserve these MSI-X vectors for a device. Depending on +the availability of current PCI vector resources and the number of +MSI/MSI-X requests from other drivers, these MSI-X vectors may be +re-assigned. + +For the case where the PCI subsystem re-assigned these MSI-X vectors +to other driver, a request to switching back to MSI-X mode may result +being assigned with another set of MSI-X vectors or a failure if no +more vectors are available. + +5.4 Handling function implementng both MSI and MSI-X capabilities + +For the case where a function implements both MSI and MSI-X +capabilities, the PCI subsystem enables a device to run either in MSI +mode or MSI-X mode but not both. A device driver determines whether it +wants MSI or MSI-X enabled on its hardware device. Once a device +driver requests for MSI, for example, it is prohibited to request for +MSI-X; in other words, a device driver is not permitted to ping-pong +between MSI mod MSI-X mode during a run-time. + +5.5 Hardware requirements for MSI/MSI-X support +MSI/MSI-X support requires support from both system hardware and +individual hardware device functions. + +5.5.1 System hardware support +Since the target of MSI address is the local APIC CPU, enabling +MSI/MSI-X support in Linux kernel is dependent on whether existing +system hardware supports local APIC. Users should verify their +system whether it runs when CONFIG_X86_LOCAL_APIC=y. + +In SMP environment, CONFIG_X86_LOCAL_APIC is automatically set; +however, in UP environment, users must manually set +CONFIG_X86_LOCAL_APIC. Once CONFIG_X86_LOCAL_APIC=y, setting +CONFIG_PCI_MSI enables the VECTOR based scheme and +the option for MSI-capable device drivers to selectively enable +MSI/MSI-X. + +Note that CONFIG_X86_IO_APIC setting is irrelevant because MSI/MSI-X +vector is allocated new during runtime and MSI/MSI-X support does not +depend on BIOS support. This key independency enables MSI/MSI-X +support on future IOxAPIC free platform. + +5.5.2 Device hardware support +The hardware device function supports MSI by indicating the +MSI/MSI-X capability structure on its PCI capability list. By +default, this capability structure will not be initialized by +the kernel to enable MSI during the system boot. In other words, +the device function is running on its default pin assertion mode. +Note that in many cases the hardware supporting MSI have bugs, +which may result in system hang. The software driver of specific +MSI-capable hardware is responsible for whether calling +pci_enable_msi or not. A return of zero indicates the kernel +successfully initializes the MSI/MSI-X capability structure of the +device funtion. The device function is now running on MSI/MSI-X mode. + +5.6 How to tell whether MSI/MSI-X is enabled on device function + +At the driver level, a return of zero from the function call of +pci_enable_msi()/pci_enable_msix() indicates to a device driver that +its device function is initialized successfully and ready to run in +MSI/MSI-X mode. + +At the user level, users can use command 'cat /proc/interrupts' +to display the vector allocated for a device and its interrupt +MSI/MSI-X mode ("PCI MSI"/"PCI MSIX"). Below shows below MSI mode is +enabled on a SCSI Adaptec 39320D Ultra320. + + CPU0 CPU1 + 0: 324639 0 IO-APIC-edge timer + 1: 1186 0 IO-APIC-edge i8042 + 2: 0 0 XT-PIC cascade + 12: 2797 0 IO-APIC-edge i8042 + 14: 6543 0 IO-APIC-edge ide0 + 15: 1 0 IO-APIC-edge ide1 +169: 0 0 IO-APIC-level uhci-hcd +185: 0 0 IO-APIC-level uhci-hcd +193: 138 10 PCI MSI aic79xx +201: 30 0 PCI MSI aic79xx +225: 30 0 IO-APIC-level aic7xxx +233: 30 0 IO-APIC-level aic7xxx +NMI: 0 0 +LOC: 324553 325068 +ERR: 0 +MIS: 0 + +6. FAQ + +Q1. Are there any limitations on using the MSI? + +A1. If the PCI device supports MSI and conforms to the +specification and the platform supports the APIC local bus, +then using MSI should work. + +Q2. Will it work on all the Pentium processors (P3, P4, Xeon, +AMD processors)? In P3 IPI's are transmitted on the APIC local +bus and in P4 and Xeon they are transmitted on the system +bus. Are there any implications with this? + +A2. MSI support enables a PCI device sending an inbound +memory write (0xfeexxxxx as target address) on its PCI bus +directly to the FSB. Since the message address has a +redirection hint bit cleared, it should work. + +Q3. The target address 0xfeexxxxx will be translated by the +Host Bridge into an interrupt message. Are there any +limitations on the chipsets such as Intel 8xx, Intel e7xxx, +or VIA? + +A3. If these chipsets support an inbound memory write with +target address set as 0xfeexxxxx, as conformed to PCI +specification 2.3 or latest, then it should work. + +Q4. From the driver point of view, if the MSI is lost because +of the errors occur during inbound memory write, then it may +wait for ever. Is there a mechanism for it to recover? + +A4. Since the target of the transaction is an inbound memory +write, all transaction termination conditions (Retry, +Master-Abort, Target-Abort, or normal completion) are +supported. A device sending an MSI must abide by all the PCI +rules and conditions regarding that inbound memory write. So, +if a retry is signaled it must retry, etc... We believe that +the recommendation for Abort is also a retry (refer to PCI +specification 2.3 or latest). diff --git a/Documentation/ManagementStyle b/Documentation/ManagementStyle new file mode 100644 index 000000000000..cbbebfb51ffe --- /dev/null +++ b/Documentation/ManagementStyle @@ -0,0 +1,276 @@ + + Linux kernel management style + +This is a short document describing the preferred (or made up, depending +on who you ask) management style for the linux kernel. It's meant to +mirror the CodingStyle document to some degree, and mainly written to +avoid answering (*) the same (or similar) questions over and over again. + +Management style is very personal and much harder to quantify than +simple coding style rules, so this document may or may not have anything +to do with reality. It started as a lark, but that doesn't mean that it +might not actually be true. You'll have to decide for yourself. + +Btw, when talking about "kernel manager", it's all about the technical +lead persons, not the people who do traditional management inside +companies. If you sign purchase orders or you have any clue about the +budget of your group, you're almost certainly not a kernel manager. +These suggestions may or may not apply to you. + +First off, I'd suggest buying "Seven Habits of Highly Successful +People", and NOT read it. Burn it, it's a great symbolic gesture. + +(*) This document does so not so much by answering the question, but by +making it painfully obvious to the questioner that we don't have a clue +to what the answer is. + +Anyway, here goes: + + + Chapter 1: Decisions + +Everybody thinks managers make decisions, and that decision-making is +important. The bigger and more painful the decision, the bigger the +manager must be to make it. That's very deep and obvious, but it's not +actually true. + +The name of the game is to _avoid_ having to make a decision. In +particular, if somebody tells you "choose (a) or (b), we really need you +to decide on this", you're in trouble as a manager. The people you +manage had better know the details better than you, so if they come to +you for a technical decision, you're screwed. You're clearly not +competent to make that decision for them. + +(Corollary:if the people you manage don't know the details better than +you, you're also screwed, although for a totally different reason. +Namely that you are in the wrong job, and that _they_ should be managing +your brilliance instead). + +So the name of the game is to _avoid_ decisions, at least the big and +painful ones. Making small and non-consequential decisions is fine, and +makes you look like you know what you're doing, so what a kernel manager +needs to do is to turn the big and painful ones into small things where +nobody really cares. + +It helps to realize that the key difference between a big decision and a +small one is whether you can fix your decision afterwards. Any decision +can be made small by just always making sure that if you were wrong (and +you _will_ be wrong), you can always undo the damage later by +backtracking. Suddenly, you get to be doubly managerial for making +_two_ inconsequential decisions - the wrong one _and_ the right one. + +And people will even see that as true leadership (*cough* bullshit +*cough*). + +Thus the key to avoiding big decisions becomes to just avoiding to do +things that can't be undone. Don't get ushered into a corner from which +you cannot escape. A cornered rat may be dangerous - a cornered manager +is just pitiful. + +It turns out that since nobody would be stupid enough to ever really let +a kernel manager have huge fiscal responsibility _anyway_, it's usually +fairly easy to backtrack. Since you're not going to be able to waste +huge amounts of money that you might not be able to repay, the only +thing you can backtrack on is a technical decision, and there +back-tracking is very easy: just tell everybody that you were an +incompetent nincompoop, say you're sorry, and undo all the worthless +work you had people work on for the last year. Suddenly the decision +you made a year ago wasn't a big decision after all, since it could be +easily undone. + +It turns out that some people have trouble with this approach, for two +reasons: + - admitting you were an idiot is harder than it looks. We all like to + maintain appearances, and coming out in public to say that you were + wrong is sometimes very hard indeed. + - having somebody tell you that what you worked on for the last year + wasn't worthwhile after all can be hard on the poor lowly engineers + too, and while the actual _work_ was easy enough to undo by just + deleting it, you may have irrevocably lost the trust of that + engineer. And remember: "irrevocable" was what we tried to avoid in + the first place, and your decision ended up being a big one after + all. + +Happily, both of these reasons can be mitigated effectively by just +admitting up-front that you don't have a friggin' clue, and telling +people ahead of the fact that your decision is purely preliminary, and +might be the wrong thing. You should always reserve the right to change +your mind, and make people very _aware_ of that. And it's much easier +to admit that you are stupid when you haven't _yet_ done the really +stupid thing. + +Then, when it really does turn out to be stupid, people just roll their +eyes and say "Oops, he did it again". + +This preemptive admission of incompetence might also make the people who +actually do the work also think twice about whether it's worth doing or +not. After all, if _they_ aren't certain whether it's a good idea, you +sure as hell shouldn't encourage them by promising them that what they +work on will be included. Make them at least think twice before they +embark on a big endeavor. + +Remember: they'd better know more about the details than you do, and +they usually already think they have the answer to everything. The best +thing you can do as a manager is not to instill confidence, but rather a +healthy dose of critical thinking on what they do. + +Btw, another way to avoid a decision is to plaintively just whine "can't +we just do both?" and look pitiful. Trust me, it works. If it's not +clear which approach is better, they'll eventually figure it out. The +answer may end up being that both teams get so frustrated by the +situation that they just give up. + +That may sound like a failure, but it's usually a sign that there was +something wrong with both projects, and the reason the people involved +couldn't decide was that they were both wrong. You end up coming up +smelling like roses, and you avoided yet another decision that you could +have screwed up on. + + + Chapter 2: People + +Most people are idiots, and being a manager means you'll have to deal +with it, and perhaps more importantly, that _they_ have to deal with +_you_. + +It turns out that while it's easy to undo technical mistakes, it's not +as easy to undo personality disorders. You just have to live with +theirs - and yours. + +However, in order to prepare yourself as a kernel manager, it's best to +remember not to burn any bridges, bomb any innocent villagers, or +alienate too many kernel developers. It turns out that alienating people +is fairly easy, and un-alienating them is hard. Thus "alienating" +immediately falls under the heading of "not reversible", and becomes a +no-no according to Chapter 1. + +There's just a few simple rules here: + (1) don't call people d*ckheads (at least not in public) + (2) learn how to apologize when you forgot rule (1) + +The problem with #1 is that it's very easy to do, since you can say +"you're a d*ckhead" in millions of different ways (*), sometimes without +even realizing it, and almost always with a white-hot conviction that +you are right. + +And the more convinced you are that you are right (and let's face it, +you can call just about _anybody_ a d*ckhead, and you often _will_ be +right), the harder it ends up being to apologize afterwards. + +To solve this problem, you really only have two options: + - get really good at apologies + - spread the "love" out so evenly that nobody really ends up feeling + like they get unfairly targeted. Make it inventive enough, and they + might even be amused. + +The option of being unfailingly polite really doesn't exist. Nobody will +trust somebody who is so clearly hiding his true character. + +(*) Paul Simon sang "Fifty Ways to Lose Your Lover", because quite +frankly, "A Million Ways to Tell a Developer He Is a D*ckhead" doesn't +scan nearly as well. But I'm sure he thought about it. + + + Chapter 3: People II - the Good Kind + +While it turns out that most people are idiots, the corollary to that is +sadly that you are one too, and that while we can all bask in the secure +knowledge that we're better than the average person (let's face it, +nobody ever believes that they're average or below-average), we should +also admit that we're not the sharpest knife around, and there will be +other people that are less of an idiot that you are. + +Some people react badly to smart people. Others take advantage of them. + +Make sure that you, as a kernel maintainer, are in the second group. +Suck up to them, because they are the people who will make your job +easier. In particular, they'll be able to make your decisions for you, +which is what the game is all about. + +So when you find somebody smarter than you are, just coast along. Your +management responsibilities largely become ones of saying "Sounds like a +good idea - go wild", or "That sounds good, but what about xxx?". The +second version in particular is a great way to either learn something +new about "xxx" or seem _extra_ managerial by pointing out something the +smarter person hadn't thought about. In either case, you win. + +One thing to look out for is to realize that greatness in one area does +not necessarily translate to other areas. So you might prod people in +specific directions, but let's face it, they might be good at what they +do, and suck at everything else. The good news is that people tend to +naturally gravitate back to what they are good at, so it's not like you +are doing something irreversible when you _do_ prod them in some +direction, just don't push too hard. + + + Chapter 4: Placing blame + +Things will go wrong, and people want somebody to blame. Tag, you're it. + +It's not actually that hard to accept the blame, especially if people +kind of realize that it wasn't _all_ your fault. Which brings us to the +best way of taking the blame: do it for another guy. You'll feel good +for taking the fall, he'll feel good about not getting blamed, and the +guy who lost his whole 36GB porn-collection because of your incompetence +will grudgingly admit that you at least didn't try to weasel out of it. + +Then make the developer who really screwed up (if you can find him) know +_in_private_ that he screwed up. Not just so he can avoid it in the +future, but so that he knows he owes you one. And, perhaps even more +importantly, he's also likely the person who can fix it. Because, let's +face it, it sure ain't you. + +Taking the blame is also why you get to be manager in the first place. +It's part of what makes people trust you, and allow you the potential +glory, because you're the one who gets to say "I screwed up". And if +you've followed the previous rules, you'll be pretty good at saying that +by now. + + + Chapter 5: Things to avoid + +There's one thing people hate even more than being called "d*ckhead", +and that is being called a "d*ckhead" in a sanctimonious voice. The +first you can apologize for, the second one you won't really get the +chance. They likely will no longer be listening even if you otherwise +do a good job. + +We all think we're better than anybody else, which means that when +somebody else puts on airs, it _really_ rubs us the wrong way. You may +be morally and intellectually superior to everybody around you, but +don't try to make it too obvious unless you really _intend_ to irritate +somebody (*). + +Similarly, don't be too polite or subtle about things. Politeness easily +ends up going overboard and hiding the problem, and as they say, "On the +internet, nobody can hear you being subtle". Use a big blunt object to +hammer the point in, because you can't really depend on people getting +your point otherwise. + +Some humor can help pad both the bluntness and the moralizing. Going +overboard to the point of being ridiculous can drive a point home +without making it painful to the recipient, who just thinks you're being +silly. It can thus help get through the personal mental block we all +have about criticism. + +(*) Hint: internet newsgroups that are not directly related to your work +are great ways to take out your frustrations at other people. Write +insulting posts with a sneer just to get into a good flame every once in +a while, and you'll feel cleansed. Just don't crap too close to home. + + + Chapter 6: Why me? + +Since your main responsibility seems to be to take the blame for other +peoples mistakes, and make it painfully obvious to everybody else that +you're incompetent, the obvious question becomes one of why do it in the +first place? + +First off, while you may or may not get screaming teenage girls (or +boys, let's not be judgmental or sexist here) knocking on your dressing +room door, you _will_ get an immense feeling of personal accomplishment +for being "in charge". Never mind the fact that you're really leading +by trying to keep up with everybody else and running after them as fast +as you can. Everybody will still think you're the person in charge. + +It's a great job if you can hack it. diff --git a/Documentation/PCIEBUS-HOWTO.txt b/Documentation/PCIEBUS-HOWTO.txt new file mode 100644 index 000000000000..c93f42a74d7e --- /dev/null +++ b/Documentation/PCIEBUS-HOWTO.txt @@ -0,0 +1,217 @@ + The PCI Express Port Bus Driver Guide HOWTO + Tom L Nguyen tom.l.nguyen@intel.com + 11/03/2004 + +1. About this guide + +This guide describes the basics of the PCI Express Port Bus driver +and provides information on how to enable the service drivers to +register/unregister with the PCI Express Port Bus Driver. + +2. Copyright 2004 Intel Corporation + +3. What is the PCI Express Port Bus Driver + +A PCI Express Port is a logical PCI-PCI Bridge structure. There +are two types of PCI Express Port: the Root Port and the Switch +Port. The Root Port originates a PCI Express link from a PCI Express +Root Complex and the Switch Port connects PCI Express links to +internal logical PCI buses. The Switch Port, which has its secondary +bus representing the switch's internal routing logic, is called the +switch's Upstream Port. The switch's Downstream Port is bridging from +switch's internal routing bus to a bus representing the downstream +PCI Express link from the PCI Express Switch. + +A PCI Express Port can provide up to four distinct functions, +referred to in this document as services, depending on its port type. +PCI Express Port's services include native hotplug support (HP), +power management event support (PME), advanced error reporting +support (AER), and virtual channel support (VC). These services may +be handled by a single complex driver or be individually distributed +and handled by corresponding service drivers. + +4. Why use the PCI Express Port Bus Driver? + +In existing Linux kernels, the Linux Device Driver Model allows a +physical device to be handled by only a single driver. The PCI +Express Port is a PCI-PCI Bridge device with multiple distinct +services. To maintain a clean and simple solution each service +may have its own software service driver. In this case several +service drivers will compete for a single PCI-PCI Bridge device. +For example, if the PCI Express Root Port native hotplug service +driver is loaded first, it claims a PCI-PCI Bridge Root Port. The +kernel therefore does not load other service drivers for that Root +Port. In other words, it is impossible to have multiple service +drivers load and run on a PCI-PCI Bridge device simultaneously +using the current driver model. + +To enable multiple service drivers running simultaneously requires +having a PCI Express Port Bus driver, which manages all populated +PCI Express Ports and distributes all provided service requests +to the corresponding service drivers as required. Some key +advantages of using the PCI Express Port Bus driver are listed below: + + - Allow multiple service drivers to run simultaneously on + a PCI-PCI Bridge Port device. + + - Allow service drivers implemented in an independent + staged approach. + + - Allow one service driver to run on multiple PCI-PCI Bridge + Port devices. + + - Manage and distribute resources of a PCI-PCI Bridge Port + device to requested service drivers. + +5. Configuring the PCI Express Port Bus Driver vs. Service Drivers + +5.1 Including the PCI Express Port Bus Driver Support into the Kernel + +Including the PCI Express Port Bus driver depends on whether the PCI +Express support is included in the kernel config. The kernel will +automatically include the PCI Express Port Bus driver as a kernel +driver when the PCI Express support is enabled in the kernel. + +5.2 Enabling Service Driver Support + +PCI device drivers are implemented based on Linux Device Driver Model. +All service drivers are PCI device drivers. As discussed above, it is +impossible to load any service driver once the kernel has loaded the +PCI Express Port Bus Driver. To meet the PCI Express Port Bus Driver +Model requires some minimal changes on existing service drivers that +imposes no impact on the functionality of existing service drivers. + +A service driver is required to use the two APIs shown below to +register its service with the PCI Express Port Bus driver (see +section 5.2.1 & 5.2.2). It is important that a service driver +initializes the pcie_port_service_driver data structure, included in +header file /include/linux/pcieport_if.h, before calling these APIs. +Failure to do so will result an identity mismatch, which prevents +the PCI Express Port Bus driver from loading a service driver. + +5.2.1 pcie_port_service_register + +int pcie_port_service_register(struct pcie_port_service_driver *new) + +This API replaces the Linux Driver Model's pci_module_init API. A +service driver should always calls pcie_port_service_register at +module init. Note that after service driver being loaded, calls +such as pci_enable_device(dev) and pci_set_master(dev) are no longer +necessary since these calls are executed by the PCI Port Bus driver. + +5.2.2 pcie_port_service_unregister + +void pcie_port_service_unregister(struct pcie_port_service_driver *new) + +pcie_port_service_unregister replaces the Linux Driver Model's +pci_unregister_driver. It's always called by service driver when a +module exits. + +5.2.3 Sample Code + +Below is sample service driver code to initialize the port service +driver data structure. + +static struct pcie_port_service_id service_id[] = { { + .vendor = PCI_ANY_ID, + .device = PCI_ANY_ID, + .port_type = PCIE_RC_PORT, + .service_type = PCIE_PORT_SERVICE_AER, + }, { /* end: all zeroes */ } +}; + +static struct pcie_port_service_driver root_aerdrv = { + .name = (char *)device_name, + .id_table = &service_id[0], + + .probe = aerdrv_load, + .remove = aerdrv_unload, + + .suspend = aerdrv_suspend, + .resume = aerdrv_resume, +}; + +Below is a sample code for registering/unregistering a service +driver. + +static int __init aerdrv_service_init(void) +{ + int retval = 0; + + retval = pcie_port_service_register(&root_aerdrv); + if (!retval) { + /* + * FIX ME + */ + } + return retval; +} + +static void __exit aerdrv_service_exit(void) +{ + pcie_port_service_unregister(&root_aerdrv); +} + +module_init(aerdrv_service_init); +module_exit(aerdrv_service_exit); + +6. Possible Resource Conflicts + +Since all service drivers of a PCI-PCI Bridge Port device are +allowed to run simultaneously, below lists a few of possible resource +conflicts with proposed solutions. + +6.1 MSI Vector Resource + +The MSI capability structure enables a device software driver to call +pci_enable_msi to request MSI based interrupts. Once MSI interrupts +are enabled on a device, it stays in this mode until a device driver +calls pci_disable_msi to disable MSI interrupts and revert back to +INTx emulation mode. Since service drivers of the same PCI-PCI Bridge +port share the same physical device, if an individual service driver +calls pci_enable_msi/pci_disable_msi it may result unpredictable +behavior. For example, two service drivers run simultaneously on the +same physical Root Port. Both service drivers call pci_enable_msi to +request MSI based interrupts. A service driver may not know whether +any other service drivers have run on this Root Port. If either one +of them calls pci_disable_msi, it puts the other service driver +in a wrong interrupt mode. + +To avoid this situation all service drivers are not permitted to +switch interrupt mode on its device. The PCI Express Port Bus driver +is responsible for determining the interrupt mode and this should be +transparent to service drivers. Service drivers need to know only +the vector IRQ assigned to the field irq of struct pcie_device, which +is passed in when the PCI Express Port Bus driver probes each service +driver. Service drivers should use (struct pcie_device*)dev->irq to +call request_irq/free_irq. In addition, the interrupt mode is stored +in the field interrupt_mode of struct pcie_device. + +6.2 MSI-X Vector Resources + +Similar to the MSI a device driver for an MSI-X capable device can +call pci_enable_msix to request MSI-X interrupts. All service drivers +are not permitted to switch interrupt mode on its device. The PCI +Express Port Bus driver is responsible for determining the interrupt +mode and this should be transparent to service drivers. Any attempt +by service driver to call pci_enable_msix/pci_disable_msix may +result unpredictable behavior. Service drivers should use +(struct pcie_device*)dev->irq and call request_irq/free_irq. + +6.3 PCI Memory/IO Mapped Regions + +Service drivers for PCI Express Power Management (PME), Advanced +Error Reporting (AER), Hot-Plug (HP) and Virtual Channel (VC) access +PCI configuration space on the PCI Express port. In all cases the +registers accessed are independent of each other. This patch assumes +that all service drivers will be well behaved and not overwrite +other service driver's configuration settings. + +6.4 PCI Config Registers + +Each service driver runs its PCI config operations on its own +capability structure except the PCI Express capability structure, in +which Root Control register and Device Control register are shared +between PME and AER. This patch assumes that all service drivers +will be well behaved and not overwrite other service driver's +configuration settings. diff --git a/Documentation/RCU/RTFP.txt b/Documentation/RCU/RTFP.txt new file mode 100644 index 000000000000..12250b342e1f --- /dev/null +++ b/Documentation/RCU/RTFP.txt @@ -0,0 +1,387 @@ +Read the F-ing Papers! + + +This document describes RCU-related publications, and is followed by +the corresponding bibtex entries. + +The first thing resembling RCU was published in 1980, when Kung and Lehman +[Kung80] recommended use of a garbage collector to defer destruction +of nodes in a parallel binary search tree in order to simplify its +implementation. This works well in environments that have garbage +collectors, but current production garbage collectors incur significant +read-side overhead. + +In 1982, Manber and Ladner [Manber82,Manber84] recommended deferring +destruction until all threads running at that time have terminated, again +for a parallel binary search tree. This approach works well in systems +with short-lived threads, such as the K42 research operating system. +However, Linux has long-lived tasks, so more is needed. + +In 1986, Hennessy, Osisek, and Seigh [Hennessy89] introduced passive +serialization, which is an RCU-like mechanism that relies on the presence +of "quiescent states" in the VM/XA hypervisor that are guaranteed not +to be referencing the data structure. However, this mechanism was not +optimized for modern computer systems, which is not surprising given +that these overheads were not so expensive in the mid-80s. Nonetheless, +passive serialization appears to be the first deferred-destruction +mechanism to be used in production. Furthermore, the relevant patent has +lapsed, so this approach may be used in non-GPL software, if desired. +(In contrast, use of RCU is permitted only in software licensed under +GPL. Sorry!!!) + +In 1990, Pugh [Pugh90] noted that explicitly tracking which threads +were reading a given data structure permitted deferred free to operate +in the presence of non-terminating threads. However, this explicit +tracking imposes significant read-side overhead, which is undesirable +in read-mostly situations. This algorithm does take pains to avoid +write-side contention and parallelize the other write-side overheads by +providing a fine-grained locking design, however, it would be interesting +to see how much of the performance advantage reported in 1990 remains +in 2004. + +At about this same time, Adams [Adams91] described ``chaotic relaxation'', +where the normal barriers between successive iterations of convergent +numerical algorithms are relaxed, so that iteration $n$ might use +data from iteration $n-1$ or even $n-2$. This introduces error, +which typically slows convergence and thus increases the number of +iterations required. However, this increase is sometimes more than made +up for by a reduction in the number of expensive barrier operations, +which are otherwise required to synchronize the threads at the end +of each iteration. Unfortunately, chaotic relaxation requires highly +structured data, such as the matrices used in scientific programs, and +is thus inapplicable to most data structures in operating-system kernels. + +In 1993, Jacobson [Jacobson93] verbally described what is perhaps the +simplest deferred-free technique: simply waiting a fixed amount of time +before freeing blocks awaiting deferred free. Jacobson did not describe +any write-side changes he might have made in this work using SGI's Irix +kernel. Aju John published a similar technique in 1995 [AjuJohn95]. +This works well if there is a well-defined upper bound on the length of +time that reading threads can hold references, as there might well be in +hard real-time systems. However, if this time is exceeded, perhaps due +to preemption, excessive interrupts, or larger-than-anticipated load, +memory corruption can ensue, with no reasonable means of diagnosis. +Jacobson's technique is therefore inappropriate for use in production +operating-system kernels, except when such kernels can provide hard +real-time response guarantees for all operations. + +Also in 1995, Pu et al. [Pu95a] applied a technique similar to that of Pugh's +read-side-tracking to permit replugging of algorithms within a commercial +Unix operating system. However, this replugging permitted only a single +reader at a time. The following year, this same group of researchers +extended their technique to allow for multiple readers [Cowan96a]. +Their approach requires memory barriers (and thus pipeline stalls), +but reduces memory latency, contention, and locking overheads. + +1995 also saw the first publication of DYNIX/ptx's RCU mechanism +[Slingwine95], which was optimized for modern CPU architectures, +and was successfully applied to a number of situations within the +DYNIX/ptx kernel. The corresponding conference paper appeared in 1998 +[McKenney98]. + +In 1999, the Tornado and K42 groups described their "generations" +mechanism, which quite similar to RCU [Gamsa99]. These operating systems +made pervasive use of RCU in place of "existence locks", which greatly +simplifies locking hierarchies. + +2001 saw the first RCU presentation involving Linux [McKenney01a] +at OLS. The resulting abundance of RCU patches was presented the +following year [McKenney02a], and use of RCU in dcache was first +described that same year [Linder02a]. + +Also in 2002, Michael [Michael02b,Michael02a] presented techniques +that defer the destruction of data structures to simplify non-blocking +synchronization (wait-free synchronization, lock-free synchronization, +and obstruction-free synchronization are all examples of non-blocking +synchronization). In particular, this technique eliminates locking, +reduces contention, reduces memory latency for readers, and parallelizes +pipeline stalls and memory latency for writers. However, these +techniques still impose significant read-side overhead in the form of +memory barriers. Researchers at Sun worked along similar lines in the +same timeframe [HerlihyLM02,HerlihyLMS03]. + +In 2003, the K42 group described how RCU could be used to create +hot-pluggable implementations of operating-system functions. Later that +year saw a paper describing an RCU implementation of System V IPC +[Arcangeli03], and an introduction to RCU in Linux Journal [McKenney03a]. + +2004 has seen a Linux-Journal article on use of RCU in dcache +[McKenney04a], a performance comparison of locking to RCU on several +different CPUs [McKenney04b], a dissertation describing use of RCU in a +number of operating-system kernels [PaulEdwardMcKenneyPhD], and a paper +describing how to make RCU safe for soft-realtime applications [Sarma04c]. + + +Bibtex Entries + +@article{Kung80 +,author="H. T. Kung and Q. Lehman" +,title="Concurrent Maintenance of Binary Search Trees" +,Year="1980" +,Month="September" +,journal="ACM Transactions on Database Systems" +,volume="5" +,number="3" +,pages="354-382" +} + +@techreport{Manber82 +,author="Udi Manber and Richard E. Ladner" +,title="Concurrency Control in a Dynamic Search Structure" +,institution="Department of Computer Science, University of Washington" +,address="Seattle, Washington" +,year="1982" +,number="82-01-01" +,month="January" +,pages="28" +} + +@article{Manber84 +,author="Udi Manber and Richard E. Ladner" +,title="Concurrency Control in a Dynamic Search Structure" +,Year="1984" +,Month="September" +,journal="ACM Transactions on Database Systems" +,volume="9" +,number="3" +,pages="439-455" +} + +@techreport{Hennessy89 +,author="James P. Hennessy and Damian L. Osisek and Joseph W. {Seigh II}" +,title="Passive Serialization in a Multitasking Environment" +,institution="US Patent and Trademark Office" +,address="Washington, DC" +,year="1989" +,number="US Patent 4,809,168 (lapsed)" +,month="February" +,pages="11" +} + +@techreport{Pugh90 +,author="William Pugh" +,title="Concurrent Maintenance of Skip Lists" +,institution="Institute of Advanced Computer Science Studies, Department of Computer Science, University of Maryland" +,address="College Park, Maryland" +,year="1990" +,number="CS-TR-2222.1" +,month="June" +} + +@Book{Adams91 +,Author="Gregory R. Adams" +,title="Concurrent Programming, Principles, and Practices" +,Publisher="Benjamin Cummins" +,Year="1991" +} + +@unpublished{Jacobson93 +,author="Van Jacobson" +,title="Avoid Read-Side Locking Via Delayed Free" +,year="1993" +,month="September" +,note="Verbal discussion" +} + +@Conference{AjuJohn95 +,Author="Aju John" +,Title="Dynamic vnodes -- Design and Implementation" +,Booktitle="{USENIX Winter 1995}" +,Publisher="USENIX Association" +,Month="January" +,Year="1995" +,pages="11-23" +,Address="New Orleans, LA" +} + +@techreport{Slingwine95 +,author="John D. Slingwine and Paul E. McKenney" +,title="Apparatus and Method for Achieving Reduced Overhead Mutual +Exclusion and Maintaining Coherency in a Multiprocessor System +Utilizing Execution History and Thread Monitoring" +,institution="US Patent and Trademark Office" +,address="Washington, DC" +,year="1995" +,number="US Patent 5,442,758 (contributed under GPL)" +,month="August" +} + +@techreport{Slingwine97 +,author="John D. Slingwine and Paul E. McKenney" +,title="Method for maintaining data coherency using thread +activity summaries in a multicomputer system" +,institution="US Patent and Trademark Office" +,address="Washington, DC" +,year="1997" +,number="US Patent 5,608,893 (contributed under GPL)" +,month="March" +} + +@techreport{Slingwine98 +,author="John D. Slingwine and Paul E. McKenney" +,title="Apparatus and method for achieving reduced overhead +mutual exclusion and maintaining coherency in a multiprocessor +system utilizing execution history and thread monitoring" +,institution="US Patent and Trademark Office" +,address="Washington, DC" +,year="1998" +,number="US Patent 5,727,209 (contributed under GPL)" +,month="March" +} + +@Conference{McKenney98 +,Author="Paul E. McKenney and John D. Slingwine" +,Title="Read-Copy Update: Using Execution History to Solve Concurrency +Problems" +,Booktitle="{Parallel and Distributed Computing and Systems}" +,Month="October" +,Year="1998" +,pages="509-518" +,Address="Las Vegas, NV" +} + +@Conference{Gamsa99 +,Author="Ben Gamsa and Orran Krieger and Jonathan Appavoo and Michael Stumm" +,Title="Tornado: Maximizing Locality and Concurrency in a Shared Memory +Multiprocessor Operating System" +,Booktitle="{Proceedings of the 3\textsuperscript{rd} Symposium on +Operating System Design and Implementation}" +,Month="February" +,Year="1999" +,pages="87-100" +,Address="New Orleans, LA" +} + +@techreport{Slingwine01 +,author="John D. Slingwine and Paul E. McKenney" +,title="Apparatus and method for achieving reduced overhead +mutual exclusion and maintaining coherency in a multiprocessor +system utilizing execution history and thread monitoring" +,institution="US Patent and Trademark Office" +,address="Washington, DC" +,year="2001" +,number="US Patent 5,219,690 (contributed under GPL)" +,month="April" +} + +@Conference{McKenney01a +,Author="Paul E. McKenney and Jonathan Appavoo and Andi Kleen and +Orran Krieger and Rusty Russell and Dipankar Sarma and Maneesh Soni" +,Title="Read-Copy Update" +,Booktitle="{Ottawa Linux Symposium}" +,Month="July" +,Year="2001" +,note="Available: +\url{http://www.linuxsymposium.org/2001/abstracts/readcopy.php} +\url{http://www.rdrop.com/users/paulmck/rclock/rclock_OLS.2001.05.01c.pdf} +[Viewed June 23, 2004]" +annotation=" +Described RCU, and presented some patches implementing and using it in +the Linux kernel. +" +} + +@Conference{Linder02a +,Author="Hanna Linder and Dipankar Sarma and Maneesh Soni" +,Title="Scalability of the Directory Entry Cache" +,Booktitle="{Ottawa Linux Symposium}" +,Month="June" +,Year="2002" +,pages="289-300" +} + +@Conference{McKenney02a +,Author="Paul E. McKenney and Dipankar Sarma and +Andrea Arcangeli and Andi Kleen and Orran Krieger and Rusty Russell" +,Title="Read-Copy Update" +,Booktitle="{Ottawa Linux Symposium}" +,Month="June" +,Year="2002" +,pages="338-367" +,note="Available: +\url{http://www.linux.org.uk/~ajh/ols2002_proceedings.pdf.gz} +[Viewed June 23, 2004]" +} + +@article{Appavoo03a +,author="J. Appavoo and K. Hui and C. A. N. Soules and R. W. Wisniewski and +D. M. {Da Silva} and O. Krieger and M. A. Auslander and D. J. Edelsohn and +B. Gamsa and G. R. Ganger and P. McKenney and M. Ostrowski and +B. Rosenburg and M. Stumm and J. Xenidis" +,title="Enabling Autonomic Behavior in Systems Software With Hot Swapping" +,Year="2003" +,Month="January" +,journal="IBM Systems Journal" +,volume="42" +,number="1" +,pages="60-76" +} + +@Conference{Arcangeli03 +,Author="Andrea Arcangeli and Mingming Cao and Paul E. McKenney and +Dipankar Sarma" +,Title="Using Read-Copy Update Techniques for {System V IPC} in the +{Linux} 2.5 Kernel" +,Booktitle="Proceedings of the 2003 USENIX Annual Technical Conference +(FREENIX Track)" +,Publisher="USENIX Association" +,year="2003" +,month="June" +,pages="297-310" +} + +@article{McKenney03a +,author="Paul E. McKenney" +,title="Using {RCU} in the {Linux} 2.5 Kernel" +,Year="2003" +,Month="October" +,journal="Linux Journal" +,volume="1" +,number="114" +,pages="18-26" +} + +@article{McKenney04a +,author="Paul E. McKenney and Dipankar Sarma and Maneesh Soni" +,title="Scaling dcache with {RCU}" +,Year="2004" +,Month="January" +,journal="Linux Journal" +,volume="1" +,number="118" +,pages="38-46" +} + +@Conference{McKenney04b +,Author="Paul E. McKenney" +,Title="{RCU} vs. Locking Performance on Different {CPUs}" +,Booktitle="{linux.conf.au}" +,Month="January" +,Year="2004" +,Address="Adelaide, Australia" +,note="Available: +\url{http://www.linux.org.au/conf/2004/abstracts.html#90} +\url{http://www.rdrop.com/users/paulmck/rclock/lockperf.2004.01.17a.pdf} +[Viewed June 23, 2004]" +} + +@phdthesis{PaulEdwardMcKenneyPhD +,author="Paul E. McKenney" +,title="Exploiting Deferred Destruction: +An Analysis of Read-Copy-Update Techniques +in Operating System Kernels" +,school="OGI School of Science and Engineering at +Oregon Health and Sciences University" +,year="2004" +} + +@Conference{Sarma04c +,Author="Dipankar Sarma and Paul E. McKenney" +,Title="Making RCU Safe for Deep Sub-Millisecond Response Realtime Applications" +,Booktitle="Proceedings of the 2004 USENIX Annual Technical Conference +(FREENIX Track)" +,Publisher="USENIX Association" +,year="2004" +,month="June" +,pages="182-191" +} diff --git a/Documentation/RCU/UP.txt b/Documentation/RCU/UP.txt new file mode 100644 index 000000000000..551a803d82a8 --- /dev/null +++ b/Documentation/RCU/UP.txt @@ -0,0 +1,64 @@ +RCU on Uniprocessor Systems + + +A common misconception is that, on UP systems, the call_rcu() primitive +may immediately invoke its function, and that the synchronize_kernel +primitive may return immediately. The basis of this misconception +is that since there is only one CPU, it should not be necessary to +wait for anything else to get done, since there are no other CPUs for +anything else to be happening on. Although this approach will sort of +work a surprising amount of the time, it is a very bad idea in general. +This document presents two examples that demonstrate exactly how bad an +idea this is. + + +Example 1: softirq Suicide + +Suppose that an RCU-based algorithm scans a linked list containing +elements A, B, and C in process context, and can delete elements from +this same list in softirq context. Suppose that the process-context scan +is referencing element B when it is interrupted by softirq processing, +which deletes element B, and then invokes call_rcu() to free element B +after a grace period. + +Now, if call_rcu() were to directly invoke its arguments, then upon return +from softirq, the list scan would find itself referencing a newly freed +element B. This situation can greatly decrease the life expectancy of +your kernel. + + +Example 2: Function-Call Fatality + +Of course, one could avert the suicide described in the preceding example +by having call_rcu() directly invoke its arguments only if it was called +from process context. However, this can fail in a similar manner. + +Suppose that an RCU-based algorithm again scans a linked list containing +elements A, B, and C in process contexts, but that it invokes a function +on each element as it is scanned. Suppose further that this function +deletes element B from the list, then passes it to call_rcu() for deferred +freeing. This may be a bit unconventional, but it is perfectly legal +RCU usage, since call_rcu() must wait for a grace period to elapse. +Therefore, in this case, allowing call_rcu() to immediately invoke +its arguments would cause it to fail to make the fundamental guarantee +underlying RCU, namely that call_rcu() defers invoking its arguments until +all RCU read-side critical sections currently executing have completed. + +Quick Quiz: why is it -not- legal to invoke synchronize_kernel() in +this case? + + +Summary + +Permitting call_rcu() to immediately invoke its arguments or permitting +synchronize_kernel() to immediately return breaks RCU, even on a UP system. +So do not do it! Even on a UP system, the RCU infrastructure -must- +respect grace periods. + + +Answer to Quick Quiz + +The calling function is scanning an RCU-protected linked list, and +is therefore within an RCU read-side critical section. Therefore, +the called function has been invoked within an RCU read-side critical +section, and is not permitted to block. diff --git a/Documentation/RCU/arrayRCU.txt b/Documentation/RCU/arrayRCU.txt new file mode 100644 index 000000000000..453ebe6953ee --- /dev/null +++ b/Documentation/RCU/arrayRCU.txt @@ -0,0 +1,141 @@ +Using RCU to Protect Read-Mostly Arrays + + +Although RCU is more commonly used to protect linked lists, it can +also be used to protect arrays. Three situations are as follows: + +1. Hash Tables + +2. Static Arrays + +3. Resizeable Arrays + +Each of these situations are discussed below. + + +Situation 1: Hash Tables + +Hash tables are often implemented as an array, where each array entry +has a linked-list hash chain. Each hash chain can be protected by RCU +as described in the listRCU.txt document. This approach also applies +to other array-of-list situations, such as radix trees. + + +Situation 2: Static Arrays + +Static arrays, where the data (rather than a pointer to the data) is +located in each array element, and where the array is never resized, +have not been used with RCU. Rik van Riel recommends using seqlock in +this situation, which would also have minimal read-side overhead as long +as updates are rare. + +Quick Quiz: Why is it so important that updates be rare when + using seqlock? + + +Situation 3: Resizeable Arrays + +Use of RCU for resizeable arrays is demonstrated by the grow_ary() +function used by the System V IPC code. The array is used to map from +semaphore, message-queue, and shared-memory IDs to the data structure +that represents the corresponding IPC construct. The grow_ary() +function does not acquire any locks; instead its caller must hold the +ids->sem semaphore. + +The grow_ary() function, shown below, does some limit checks, allocates a +new ipc_id_ary, copies the old to the new portion of the new, initializes +the remainder of the new, updates the ids->entries pointer to point to +the new array, and invokes ipc_rcu_putref() to free up the old array. +Note that rcu_assign_pointer() is used to update the ids->entries pointer, +which includes any memory barriers required on whatever architecture +you are running on. + + static int grow_ary(struct ipc_ids* ids, int newsize) + { + struct ipc_id_ary* new; + struct ipc_id_ary* old; + int i; + int size = ids->entries->size; + + if(newsize > IPCMNI) + newsize = IPCMNI; + if(newsize <= size) + return newsize; + + new = ipc_rcu_alloc(sizeof(struct kern_ipc_perm *)*newsize + + sizeof(struct ipc_id_ary)); + if(new == NULL) + return size; + new->size = newsize; + memcpy(new->p, ids->entries->p, + sizeof(struct kern_ipc_perm *)*size + + sizeof(struct ipc_id_ary)); + for(i=size;ip[i] = NULL; + } + old = ids->entries; + + /* + * Use rcu_assign_pointer() to make sure the memcpyed + * contents of the new array are visible before the new + * array becomes visible. + */ + rcu_assign_pointer(ids->entries, new); + + ipc_rcu_putref(old); + return newsize; + } + +The ipc_rcu_putref() function decrements the array's reference count +and then, if the reference count has dropped to zero, uses call_rcu() +to free the array after a grace period has elapsed. + +The array is traversed by the ipc_lock() function. This function +indexes into the array under the protection of rcu_read_lock(), +using rcu_dereference() to pick up the pointer to the array so +that it may later safely be dereferenced -- memory barriers are +required on the Alpha CPU. Since the size of the array is stored +with the array itself, there can be no array-size mismatches, so +a simple check suffices. The pointer to the structure corresponding +to the desired IPC object is placed in "out", with NULL indicating +a non-existent entry. After acquiring "out->lock", the "out->deleted" +flag indicates whether the IPC object is in the process of being +deleted, and, if not, the pointer is returned. + + struct kern_ipc_perm* ipc_lock(struct ipc_ids* ids, int id) + { + struct kern_ipc_perm* out; + int lid = id % SEQ_MULTIPLIER; + struct ipc_id_ary* entries; + + rcu_read_lock(); + entries = rcu_dereference(ids->entries); + if(lid >= entries->size) { + rcu_read_unlock(); + return NULL; + } + out = entries->p[lid]; + if(out == NULL) { + rcu_read_unlock(); + return NULL; + } + spin_lock(&out->lock); + + /* ipc_rmid() may have already freed the ID while ipc_lock + * was spinning: here verify that the structure is still valid + */ + if (out->deleted) { + spin_unlock(&out->lock); + rcu_read_unlock(); + return NULL; + } + return out; + } + + +Answer to Quick Quiz: + + The reason that it is important that updates be rare when + using seqlock is that frequent updates can livelock readers. + One way to avoid this problem is to assign a seqlock for + each array entry rather than to the entire array. diff --git a/Documentation/RCU/checklist.txt b/Documentation/RCU/checklist.txt new file mode 100644 index 000000000000..b3a568abe6b1 --- /dev/null +++ b/Documentation/RCU/checklist.txt @@ -0,0 +1,157 @@ +Review Checklist for RCU Patches + + +This document contains a checklist for producing and reviewing patches +that make use of RCU. Violating any of the rules listed below will +result in the same sorts of problems that leaving out a locking primitive +would cause. This list is based on experiences reviewing such patches +over a rather long period of time, but improvements are always welcome! + +0. Is RCU being applied to a read-mostly situation? If the data + structure is updated more than about 10% of the time, then + you should strongly consider some other approach, unless + detailed performance measurements show that RCU is nonetheless + the right tool for the job. + + The other exception would be where performance is not an issue, + and RCU provides a simpler implementation. An example of this + situation is the dynamic NMI code in the Linux 2.6 kernel, + at least on architectures where NMIs are rare. + +1. Does the update code have proper mutual exclusion? + + RCU does allow -readers- to run (almost) naked, but -writers- must + still use some sort of mutual exclusion, such as: + + a. locking, + b. atomic operations, or + c. restricting updates to a single task. + + If you choose #b, be prepared to describe how you have handled + memory barriers on weakly ordered machines (pretty much all of + them -- even x86 allows reads to be reordered), and be prepared + to explain why this added complexity is worthwhile. If you + choose #c, be prepared to explain how this single task does not + become a major bottleneck on big multiprocessor machines. + +2. Do the RCU read-side critical sections make proper use of + rcu_read_lock() and friends? These primitives are needed + to suppress preemption (or bottom halves, in the case of + rcu_read_lock_bh()) in the read-side critical sections, + and are also an excellent aid to readability. + +3. Does the update code tolerate concurrent accesses? + + The whole point of RCU is to permit readers to run without + any locks or atomic operations. This means that readers will + be running while updates are in progress. There are a number + of ways to handle this concurrency, depending on the situation: + + a. Make updates appear atomic to readers. For example, + pointer updates to properly aligned fields will appear + atomic, as will individual atomic primitives. Operations + performed under a lock and sequences of multiple atomic + primitives will -not- appear to be atomic. + + This is almost always the best approach. + + b. Carefully order the updates and the reads so that + readers see valid data at all phases of the update. + This is often more difficult than it sounds, especially + given modern CPUs' tendency to reorder memory references. + One must usually liberally sprinkle memory barriers + (smp_wmb(), smp_rmb(), smp_mb()) through the code, + making it difficult to understand and to test. + + It is usually better to group the changing data into + a separate structure, so that the change may be made + to appear atomic by updating a pointer to reference + a new structure containing updated values. + +4. Weakly ordered CPUs pose special challenges. Almost all CPUs + are weakly ordered -- even i386 CPUs allow reads to be reordered. + RCU code must take all of the following measures to prevent + memory-corruption problems: + + a. Readers must maintain proper ordering of their memory + accesses. The rcu_dereference() primitive ensures that + the CPU picks up the pointer before it picks up the data + that the pointer points to. This really is necessary + on Alpha CPUs. If you don't believe me, see: + + http://www.openvms.compaq.com/wizard/wiz_2637.html + + The rcu_dereference() primitive is also an excellent + documentation aid, letting the person reading the code + know exactly which pointers are protected by RCU. + + The rcu_dereference() primitive is used by the various + "_rcu()" list-traversal primitives, such as the + list_for_each_entry_rcu(). + + b. If the list macros are being used, the list_del_rcu(), + list_add_tail_rcu(), and list_del_rcu() primitives must + be used in order to prevent weakly ordered machines from + misordering structure initialization and pointer planting. + Similarly, if the hlist macros are being used, the + hlist_del_rcu() and hlist_add_head_rcu() primitives + are required. + + c. Updates must ensure that initialization of a given + structure happens before pointers to that structure are + publicized. Use the rcu_assign_pointer() primitive + when publicizing a pointer to a structure that can + be traversed by an RCU read-side critical section. + + [The rcu_assign_pointer() primitive is in process.] + +5. If call_rcu(), or a related primitive such as call_rcu_bh(), + is used, the callback function must be written to be called + from softirq context. In particular, it cannot block. + +6. Since synchronize_kernel() blocks, it cannot be called from + any sort of irq context. + +7. If the updater uses call_rcu(), then the corresponding readers + must use rcu_read_lock() and rcu_read_unlock(). If the updater + uses call_rcu_bh(), then the corresponding readers must use + rcu_read_lock_bh() and rcu_read_unlock_bh(). Mixing things up + will result in confusion and broken kernels. + + One exception to this rule: rcu_read_lock() and rcu_read_unlock() + may be substituted for rcu_read_lock_bh() and rcu_read_unlock_bh() + in cases where local bottom halves are already known to be + disabled, for example, in irq or softirq context. Commenting + such cases is a must, of course! And the jury is still out on + whether the increased speed is worth it. + +8. Although synchronize_kernel() is a bit slower than is call_rcu(), + it usually results in simpler code. So, unless update performance + is important or the updaters cannot block, synchronize_kernel() + should be used in preference to call_rcu(). + +9. All RCU list-traversal primitives, which include + list_for_each_rcu(), list_for_each_entry_rcu(), + list_for_each_continue_rcu(), and list_for_each_safe_rcu(), + must be within an RCU read-side critical section. RCU + read-side critical sections are delimited by rcu_read_lock() + and rcu_read_unlock(), or by similar primitives such as + rcu_read_lock_bh() and rcu_read_unlock_bh(). + + Use of the _rcu() list-traversal primitives outside of an + RCU read-side critical section causes no harm other than + a slight performance degradation on Alpha CPUs and some + confusion on the part of people trying to read the code. + + Another way of thinking of this is "If you are holding the + lock that prevents the data structure from changing, why do + you also need RCU-based protection?" That said, there may + well be situations where use of the _rcu() list-traversal + primitives while the update-side lock is held results in + simpler and more maintainable code. The jury is still out + on this question. + +10. Conversely, if you are in an RCU read-side critical section, + you -must- use the "_rcu()" variants of the list macros. + Failing to do so will break Alpha and confuse people reading + your code. diff --git a/Documentation/RCU/listRCU.txt b/Documentation/RCU/listRCU.txt new file mode 100644 index 000000000000..bda6ead69bd0 --- /dev/null +++ b/Documentation/RCU/listRCU.txt @@ -0,0 +1,307 @@ +Using RCU to Protect Read-Mostly Linked Lists + + +One of the best applications of RCU is to protect read-mostly linked lists +("struct list_head" in list.h). One big advantage of this approach +is that all of the required memory barriers are included for you in +the list macros. This document describes several applications of RCU, +with the best fits first. + + +Example 1: Read-Side Action Taken Outside of Lock, No In-Place Updates + +The best applications are cases where, if reader-writer locking were +used, the read-side lock would be dropped before taking any action +based on the results of the search. The most celebrated example is +the routing table. Because the routing table is tracking the state of +equipment outside of the computer, it will at times contain stale data. +Therefore, once the route has been computed, there is no need to hold +the routing table static during transmission of the packet. After all, +you can hold the routing table static all you want, but that won't keep +the external Internet from changing, and it is the state of the external +Internet that really matters. In addition, routing entries are typically +added or deleted, rather than being modified in place. + +A straightforward example of this use of RCU may be found in the +system-call auditing support. For example, a reader-writer locked +implementation of audit_filter_task() might be as follows: + + static enum audit_state audit_filter_task(struct task_struct *tsk) + { + struct audit_entry *e; + enum audit_state state; + + read_lock(&auditsc_lock); + list_for_each_entry(e, &audit_tsklist, list) { + if (audit_filter_rules(tsk, &e->rule, NULL, &state)) { + read_unlock(&auditsc_lock); + return state; + } + } + read_unlock(&auditsc_lock); + return AUDIT_BUILD_CONTEXT; + } + +Here the list is searched under the lock, but the lock is dropped before +the corresponding value is returned. By the time that this value is acted +on, the list may well have been modified. This makes sense, since if +you are turning auditing off, it is OK to audit a few extra system calls. + +This means that RCU can be easily applied to the read side, as follows: + + static enum audit_state audit_filter_task(struct task_struct *tsk) + { + struct audit_entry *e; + enum audit_state state; + + rcu_read_lock(); + list_for_each_entry_rcu(e, &audit_tsklist, list) { + if (audit_filter_rules(tsk, &e->rule, NULL, &state)) { + rcu_read_unlock(); + return state; + } + } + rcu_read_unlock(); + return AUDIT_BUILD_CONTEXT; + } + +The read_lock() and read_unlock() calls have become rcu_read_lock() +and rcu_read_unlock(), respectively, and the list_for_each_entry() has +become list_for_each_entry_rcu(). The _rcu() list-traversal primitives +insert the read-side memory barriers that are required on DEC Alpha CPUs. + +The changes to the update side are also straightforward. A reader-writer +lock might be used as follows for deletion and insertion: + + static inline int audit_del_rule(struct audit_rule *rule, + struct list_head *list) + { + struct audit_entry *e; + + write_lock(&auditsc_lock); + list_for_each_entry(e, list, list) { + if (!audit_compare_rule(rule, &e->rule)) { + list_del(&e->list); + write_unlock(&auditsc_lock); + return 0; + } + } + write_unlock(&auditsc_lock); + return -EFAULT; /* No matching rule */ + } + + static inline int audit_add_rule(struct audit_entry *entry, + struct list_head *list) + { + write_lock(&auditsc_lock); + if (entry->rule.flags & AUDIT_PREPEND) { + entry->rule.flags &= ~AUDIT_PREPEND; + list_add(&entry->list, list); + } else { + list_add_tail(&entry->list, list); + } + write_unlock(&auditsc_lock); + return 0; + } + +Following are the RCU equivalents for these two functions: + + static inline int audit_del_rule(struct audit_rule *rule, + struct list_head *list) + { + struct audit_entry *e; + + /* Do not use the _rcu iterator here, since this is the only + * deletion routine. */ + list_for_each_entry(e, list, list) { + if (!audit_compare_rule(rule, &e->rule)) { + list_del_rcu(&e->list); + call_rcu(&e->rcu, audit_free_rule, e); + return 0; + } + } + return -EFAULT; /* No matching rule */ + } + + static inline int audit_add_rule(struct audit_entry *entry, + struct list_head *list) + { + if (entry->rule.flags & AUDIT_PREPEND) { + entry->rule.flags &= ~AUDIT_PREPEND; + list_add_rcu(&entry->list, list); + } else { + list_add_tail_rcu(&entry->list, list); + } + return 0; + } + +Normally, the write_lock() and write_unlock() would be replaced by +a spin_lock() and a spin_unlock(), but in this case, all callers hold +audit_netlink_sem, so no additional locking is required. The auditsc_lock +can therefore be eliminated, since use of RCU eliminates the need for +writers to exclude readers. + +The list_del(), list_add(), and list_add_tail() primitives have been +replaced by list_del_rcu(), list_add_rcu(), and list_add_tail_rcu(). +The _rcu() list-manipulation primitives add memory barriers that are +needed on weakly ordered CPUs (most of them!). + +So, when readers can tolerate stale data and when entries are either added +or deleted, without in-place modification, it is very easy to use RCU! + + +Example 2: Handling In-Place Updates + +The system-call auditing code does not update auditing rules in place. +However, if it did, reader-writer-locked code to do so might look as +follows (presumably, the field_count is only permitted to decrease, +otherwise, the added fields would need to be filled in): + + static inline int audit_upd_rule(struct audit_rule *rule, + struct list_head *list, + __u32 newaction, + __u32 newfield_count) + { + struct audit_entry *e; + struct audit_newentry *ne; + + write_lock(&auditsc_lock); + list_for_each_entry(e, list, list) { + if (!audit_compare_rule(rule, &e->rule)) { + e->rule.action = newaction; + e->rule.file_count = newfield_count; + write_unlock(&auditsc_lock); + return 0; + } + } + write_unlock(&auditsc_lock); + return -EFAULT; /* No matching rule */ + } + +The RCU version creates a copy, updates the copy, then replaces the old +entry with the newly updated entry. This sequence of actions, allowing +concurrent reads while doing a copy to perform an update, is what gives +RCU ("read-copy update") its name. The RCU code is as follows: + + static inline int audit_upd_rule(struct audit_rule *rule, + struct list_head *list, + __u32 newaction, + __u32 newfield_count) + { + struct audit_entry *e; + struct audit_newentry *ne; + + list_for_each_entry(e, list, list) { + if (!audit_compare_rule(rule, &e->rule)) { + ne = kmalloc(sizeof(*entry), GFP_ATOMIC); + if (ne == NULL) + return -ENOMEM; + audit_copy_rule(&ne->rule, &e->rule); + ne->rule.action = newaction; + ne->rule.file_count = newfield_count; + list_add_rcu(ne, e); + list_del(e); + call_rcu(&e->rcu, audit_free_rule, e); + return 0; + } + } + return -EFAULT; /* No matching rule */ + } + +Again, this assumes that the caller holds audit_netlink_sem. Normally, +the reader-writer lock would become a spinlock in this sort of code. + + +Example 3: Eliminating Stale Data + +The auditing examples above tolerate stale data, as do most algorithms +that are tracking external state. Because there is a delay from the +time the external state changes before Linux becomes aware of the change, +additional RCU-induced staleness is normally not a problem. + +However, there are many examples where stale data cannot be tolerated. +One example in the Linux kernel is the System V IPC (see the ipc_lock() +function in ipc/util.c). This code checks a "deleted" flag under a +per-entry spinlock, and, if the "deleted" flag is set, pretends that the +entry does not exist. For this to be helpful, the search function must +return holding the per-entry spinlock, as ipc_lock() does in fact do. + +Quick Quiz: Why does the search function need to return holding the +per-entry lock for this deleted-flag technique to be helpful? + +If the system-call audit module were to ever need to reject stale data, +one way to accomplish this would be to add a "deleted" flag and a "lock" +spinlock to the audit_entry structure, and modify audit_filter_task() +as follows: + + static enum audit_state audit_filter_task(struct task_struct *tsk) + { + struct audit_entry *e; + enum audit_state state; + + rcu_read_lock(); + list_for_each_entry_rcu(e, &audit_tsklist, list) { + if (audit_filter_rules(tsk, &e->rule, NULL, &state)) { + spin_lock(&e->lock); + if (e->deleted) { + spin_unlock(&e->lock); + rcu_read_unlock(); + return AUDIT_BUILD_CONTEXT; + } + rcu_read_unlock(); + return state; + } + } + rcu_read_unlock(); + return AUDIT_BUILD_CONTEXT; + } + +Note that this example assumes that entries are only added and deleted. +Additional mechanism is required to deal correctly with the +update-in-place performed by audit_upd_rule(). For one thing, +audit_upd_rule() would need additional memory barriers to ensure +that the list_add_rcu() was really executed before the list_del_rcu(). + +The audit_del_rule() function would need to set the "deleted" +flag under the spinlock as follows: + + static inline int audit_del_rule(struct audit_rule *rule, + struct list_head *list) + { + struct audit_entry *e; + + /* Do not use the _rcu iterator here, since this is the only + * deletion routine. */ + list_for_each_entry(e, list, list) { + if (!audit_compare_rule(rule, &e->rule)) { + spin_lock(&e->lock); + list_del_rcu(&e->list); + e->deleted = 1; + spin_unlock(&e->lock); + call_rcu(&e->rcu, audit_free_rule, e); + return 0; + } + } + return -EFAULT; /* No matching rule */ + } + + +Summary + +Read-mostly list-based data structures that can tolerate stale data are +the most amenable to use of RCU. The simplest case is where entries are +either added or deleted from the data structure (or atomically modified +in place), but non-atomic in-place modifications can be handled by making +a copy, updating the copy, then replacing the original with the copy. +If stale data cannot be tolerated, then a "deleted" flag may be used +in conjunction with a per-entry spinlock in order to allow the search +function to reject newly deleted data. + + +Answer to Quick Quiz + +If the search function drops the per-entry lock before returning, then +the caller will be processing stale data in any case. If it is really +OK to be processing stale data, then you don't need a "deleted" flag. +If processing stale data really is a problem, then you need to hold the +per-entry lock across all of the code that uses the value looked up. diff --git a/Documentation/RCU/rcu.txt b/Documentation/RCU/rcu.txt new file mode 100644 index 000000000000..7e0c2ab6f2bd --- /dev/null +++ b/Documentation/RCU/rcu.txt @@ -0,0 +1,67 @@ +RCU Concepts + + +The basic idea behind RCU (read-copy update) is to split destructive +operations into two parts, one that prevents anyone from seeing the data +item being destroyed, and one that actually carries out the destruction. +A "grace period" must elapse between the two parts, and this grace period +must be long enough that any readers accessing the item being deleted have +since dropped their references. For example, an RCU-protected deletion +from a linked list would first remove the item from the list, wait for +a grace period to elapse, then free the element. See the listRCU.txt +file for more information on using RCU with linked lists. + + +Frequently Asked Questions + +o Why would anyone want to use RCU? + + The advantage of RCU's two-part approach is that RCU readers need + not acquire any locks, perform any atomic instructions, write to + shared memory, or (on CPUs other than Alpha) execute any memory + barriers. The fact that these operations are quite expensive + on modern CPUs is what gives RCU its performance advantages + in read-mostly situations. The fact that RCU readers need not + acquire locks can also greatly simplify deadlock-avoidance code. + +o How can the updater tell when a grace period has completed + if the RCU readers give no indication when they are done? + + Just as with spinlocks, RCU readers are not permitted to + block, switch to user-mode execution, or enter the idle loop. + Therefore, as soon as a CPU is seen passing through any of these + three states, we know that that CPU has exited any previous RCU + read-side critical sections. So, if we remove an item from a + linked list, and then wait until all CPUs have switched context, + executed in user mode, or executed in the idle loop, we can + safely free up that item. + +o If I am running on a uniprocessor kernel, which can only do one + thing at a time, why should I wait for a grace period? + + See the UP.txt file in this directory. + +o How can I see where RCU is currently used in the Linux kernel? + + Search for "rcu_read_lock", "call_rcu", and "synchronize_kernel". + +o What guidelines should I follow when writing code that uses RCU? + + See the checklist.txt file in this directory. + +o Why the name "RCU"? + + "RCU" stands for "read-copy update". The file listRCU.txt has + more information on where this name came from, search for + "read-copy update" to find it. + +o I hear that RCU is patented? What is with that? + + Yes, it is. There are several known patents related to RCU, + search for the string "Patent" in RTFP.txt to find them. + Of these, one was allowed to lapse by the assignee, and the + others have been contributed to the Linux kernel under GPL. + +o Where can I find more information on RCU? + + See the RTFP.txt file in this directory. diff --git a/Documentation/README.DAC960 b/Documentation/README.DAC960 new file mode 100644 index 000000000000..98ea617a0dd6 --- /dev/null +++ b/Documentation/README.DAC960 @@ -0,0 +1,756 @@ + Linux Driver for Mylex DAC960/AcceleRAID/eXtremeRAID PCI RAID Controllers + + Version 2.2.11 for Linux 2.2.19 + Version 2.4.11 for Linux 2.4.12 + + PRODUCTION RELEASE + + 11 October 2001 + + Leonard N. Zubkoff + Dandelion Digital + lnz@dandelion.com + + Copyright 1998-2001 by Leonard N. Zubkoff + + + INTRODUCTION + +Mylex, Inc. designs and manufactures a variety of high performance PCI RAID +controllers. Mylex Corporation is located at 34551 Ardenwood Blvd., Fremont, +California 94555, USA and can be reached at 510.796.6100 or on the World Wide +Web at http://www.mylex.com. Mylex Technical Support can be reached by +electronic mail at mylexsup@us.ibm.com, by voice at 510.608.2400, or by FAX at +510.745.7715. Contact information for offices in Europe and Japan is available +on their Web site. + +The latest information on Linux support for DAC960 PCI RAID Controllers, as +well as the most recent release of this driver, will always be available from +my Linux Home Page at URL "http://www.dandelion.com/Linux/". The Linux DAC960 +driver supports all current Mylex PCI RAID controllers including the new +eXtremeRAID 2000/3000 and AcceleRAID 352/170/160 models which have an entirely +new firmware interface from the older eXtremeRAID 1100, AcceleRAID 150/200/250, +and DAC960PJ/PG/PU/PD/PL. See below for a complete controller list as well as +minimum firmware version requirements. For simplicity, in most places this +documentation refers to DAC960 generically rather than explicitly listing all +the supported models. + +Driver bug reports should be sent via electronic mail to "lnz@dandelion.com". +Please include with the bug report the complete configuration messages reported +by the driver at startup, along with any subsequent system messages relevant to +the controller's operation, and a detailed description of your system's +hardware configuration. Driver bugs are actually quite rare; if you encounter +problems with disks being marked offline, for example, please contact Mylex +Technical Support as the problem is related to the hardware configuration +rather than the Linux driver. + +Please consult the RAID controller documentation for detailed information +regarding installation and configuration of the controllers. This document +primarily provides information specific to the Linux support. + + + DRIVER FEATURES + +The DAC960 RAID controllers are supported solely as high performance RAID +controllers, not as interfaces to arbitrary SCSI devices. The Linux DAC960 +driver operates at the block device level, the same level as the SCSI and IDE +drivers. Unlike other RAID controllers currently supported on Linux, the +DAC960 driver is not dependent on the SCSI subsystem, and hence avoids all the +complexity and unnecessary code that would be associated with an implementation +as a SCSI driver. The DAC960 driver is designed for as high a performance as +possible with no compromises or extra code for compatibility with lower +performance devices. The DAC960 driver includes extensive error logging and +online configuration management capabilities. Except for initial configuration +of the controller and adding new disk drives, most everything can be handled +from Linux while the system is operational. + +The DAC960 driver is architected to support up to 8 controllers per system. +Each DAC960 parallel SCSI controller can support up to 15 disk drives per +channel, for a maximum of 60 drives on a four channel controller; the fibre +channel eXtremeRAID 3000 controller supports up to 125 disk drives per loop for +a total of 250 drives. The drives installed on a controller are divided into +one or more "Drive Groups", and then each Drive Group is subdivided further +into 1 to 32 "Logical Drives". Each Logical Drive has a specific RAID Level +and caching policy associated with it, and it appears to Linux as a single +block device. Logical Drives are further subdivided into up to 7 partitions +through the normal Linux and PC disk partitioning schemes. Logical Drives are +also known as "System Drives", and Drive Groups are also called "Packs". Both +terms are in use in the Mylex documentation; I have chosen to standardize on +the more generic "Logical Drive" and "Drive Group". + +DAC960 RAID disk devices are named in the style of the Device File System +(DEVFS). The device corresponding to Logical Drive D on Controller C is +referred to as /dev/rd/cCdD, and the partitions are called /dev/rd/cCdDp1 +through /dev/rd/cCdDp7. For example, partition 3 of Logical Drive 5 on +Controller 2 is referred to as /dev/rd/c2d5p3. Note that unlike with SCSI +disks the device names will not change in the event of a disk drive failure. +The DAC960 driver is assigned major numbers 48 - 55 with one major number per +controller. The 8 bits of minor number are divided into 5 bits for the Logical +Drive and 3 bits for the partition. + + + SUPPORTED DAC960/AcceleRAID/eXtremeRAID PCI RAID CONTROLLERS + +The following list comprises the supported DAC960, AcceleRAID, and eXtremeRAID +PCI RAID Controllers as of the date of this document. It is recommended that +anyone purchasing a Mylex PCI RAID Controller not in the following table +contact the author beforehand to verify that it is or will be supported. + +eXtremeRAID 3000 + 1 Wide Ultra-2/LVD SCSI channel + 2 External Fibre FC-AL channels + 233MHz StrongARM SA 110 Processor + 64 Bit 33MHz PCI (backward compatible with 32 Bit PCI slots) + 32MB/64MB ECC SDRAM Memory + +eXtremeRAID 2000 + 4 Wide Ultra-160 LVD SCSI channels + 233MHz StrongARM SA 110 Processor + 64 Bit 33MHz PCI (backward compatible with 32 Bit PCI slots) + 32MB/64MB ECC SDRAM Memory + +AcceleRAID 352 + 2 Wide Ultra-160 LVD SCSI channels + 100MHz Intel i960RN RISC Processor + 64 Bit 33MHz PCI (backward compatible with 32 Bit PCI slots) + 32MB/64MB ECC SDRAM Memory + +AcceleRAID 170 + 1 Wide Ultra-160 LVD SCSI channel + 100MHz Intel i960RM RISC Processor + 16MB/32MB/64MB ECC SDRAM Memory + +AcceleRAID 160 (AcceleRAID 170LP) + 1 Wide Ultra-160 LVD SCSI channel + 100MHz Intel i960RS RISC Processor + Built in 16M ECC SDRAM Memory + PCI Low Profile Form Factor - fit for 2U height + +eXtremeRAID 1100 (DAC1164P) + 3 Wide Ultra-2/LVD SCSI channels + 233MHz StrongARM SA 110 Processor + 64 Bit 33MHz PCI (backward compatible with 32 Bit PCI slots) + 16MB/32MB/64MB Parity SDRAM Memory with Battery Backup + +AcceleRAID 250 (DAC960PTL1) + Uses onboard Symbios SCSI chips on certain motherboards + Also includes one onboard Wide Ultra-2/LVD SCSI Channel + 66MHz Intel i960RD RISC Processor + 4MB/8MB/16MB/32MB/64MB/128MB ECC EDO Memory + +AcceleRAID 200 (DAC960PTL0) + Uses onboard Symbios SCSI chips on certain motherboards + Includes no onboard SCSI Channels + 66MHz Intel i960RD RISC Processor + 4MB/8MB/16MB/32MB/64MB/128MB ECC EDO Memory + +AcceleRAID 150 (DAC960PRL) + Uses onboard Symbios SCSI chips on certain motherboards + Also includes one onboard Wide Ultra-2/LVD SCSI Channel + 33MHz Intel i960RP RISC Processor + 4MB Parity EDO Memory + +DAC960PJ 1/2/3 Wide Ultra SCSI-3 Channels + 66MHz Intel i960RD RISC Processor + 4MB/8MB/16MB/32MB/64MB/128MB ECC EDO Memory + +DAC960PG 1/2/3 Wide Ultra SCSI-3 Channels + 33MHz Intel i960RP RISC Processor + 4MB/8MB ECC EDO Memory + +DAC960PU 1/2/3 Wide Ultra SCSI-3 Channels + Intel i960CF RISC Processor + 4MB/8MB EDRAM or 2MB/4MB/8MB/16MB/32MB DRAM Memory + +DAC960PD 1/2/3 Wide Fast SCSI-2 Channels + Intel i960CF RISC Processor + 4MB/8MB EDRAM or 2MB/4MB/8MB/16MB/32MB DRAM Memory + +DAC960PL 1/2/3 Wide Fast SCSI-2 Channels + Intel i960 RISC Processor + 2MB/4MB/8MB/16MB/32MB DRAM Memory + +DAC960P 1/2/3 Wide Fast SCSI-2 Channels + Intel i960 RISC Processor + 2MB/4MB/8MB/16MB/32MB DRAM Memory + +For the eXtremeRAID 2000/3000 and AcceleRAID 352/170/160, firmware version +6.00-01 or above is required. + +For the eXtremeRAID 1100, firmware version 5.06-0-52 or above is required. + +For the AcceleRAID 250, 200, and 150, firmware version 4.06-0-57 or above is +required. + +For the DAC960PJ and DAC960PG, firmware version 4.06-0-00 or above is required. + +For the DAC960PU, DAC960PD, DAC960PL, and DAC960P, either firmware version +3.51-0-04 or above is required (for dual Flash ROM controllers), or firmware +version 2.73-0-00 or above is required (for single Flash ROM controllers) + +Please note that not all SCSI disk drives are suitable for use with DAC960 +controllers, and only particular firmware versions of any given model may +actually function correctly. Similarly, not all motherboards have a BIOS that +properly initializes the AcceleRAID 250, AcceleRAID 200, AcceleRAID 150, +DAC960PJ, and DAC960PG because the Intel i960RD/RP is a multi-function device. +If in doubt, contact Mylex RAID Technical Support (mylexsup@us.ibm.com) to +verify compatibility. Mylex makes available a hard disk compatibility list at +http://www.mylex.com/support/hdcomp/hd-lists.html. + + + DRIVER INSTALLATION + +This distribution was prepared for Linux kernel version 2.2.19 or 2.4.12. + +To install the DAC960 RAID driver, you may use the following commands, +replacing "/usr/src" with wherever you keep your Linux kernel source tree: + + cd /usr/src + tar -xvzf DAC960-2.2.11.tar.gz (or DAC960-2.4.11.tar.gz) + mv README.DAC960 linux/Documentation + mv DAC960.[ch] linux/drivers/block + patch -p0 < DAC960.patch (if DAC960.patch is included) + cd linux + make config + make bzImage (or zImage) + +Then install "arch/i386/boot/bzImage" or "arch/i386/boot/zImage" as your +standard kernel, run lilo if appropriate, and reboot. + +To create the necessary devices in /dev, the "make_rd" script included in +"DAC960-Utilities.tar.gz" from http://www.dandelion.com/Linux/ may be used. +LILO 21 and FDISK v2.9 include DAC960 support; also included in this archive +are patches to LILO 20 and FDISK v2.8 that add DAC960 support, along with +statically linked executables of LILO and FDISK. This modified version of LILO +will allow booting from a DAC960 controller and/or mounting the root file +system from a DAC960. + +Red Hat Linux 6.0 and SuSE Linux 6.1 include support for Mylex PCI RAID +controllers. Installing directly onto a DAC960 may be problematic from other +Linux distributions until their installation utilities are updated. + + + INSTALLATION NOTES + +Before installing Linux or adding DAC960 logical drives to an existing Linux +system, the controller must first be configured to provide one or more logical +drives using the BIOS Configuration Utility or DACCF. Please note that since +there are only at most 6 usable partitions on each logical drive, systems +requiring more partitions should subdivide a drive group into multiple logical +drives, each of which can have up to 6 usable partitions. Also, note that with +large disk arrays it is advisable to enable the 8GB BIOS Geometry (255/63) +rather than accepting the default 2GB BIOS Geometry (128/32); failing to so do +will cause the logical drive geometry to have more than 65535 cylinders which +will make it impossible for FDISK to be used properly. The 8GB BIOS Geometry +can be enabled by configuring the DAC960 BIOS, which is accessible via Alt-M +during the BIOS initialization sequence. + +For maximum performance and the most efficient E2FSCK performance, it is +recommended that EXT2 file systems be built with a 4KB block size and 16 block +stride to match the DAC960 controller's 64KB default stripe size. The command +"mke2fs -b 4096 -R stride=16 " is appropriate. Unless there will be a +large number of small files on the file systems, it is also beneficial to add +the "-i 16384" option to increase the bytes per inode parameter thereby +reducing the file system metadata. Finally, on systems that will only be run +with Linux 2.2 or later kernels it is beneficial to enable sparse superblocks +with the "-s 1" option. + + + DAC960 ANNOUNCEMENTS MAILING LIST + +The DAC960 Announcements Mailing List provides a forum for informing Linux +users of new driver releases and other announcements regarding Linux support +for DAC960 PCI RAID Controllers. To join the mailing list, send a message to +"dac960-announce-request@dandelion.com" with the line "subscribe" in the +message body. + + + CONTROLLER CONFIGURATION AND STATUS MONITORING + +The DAC960 RAID controllers running firmware 4.06 or above include a Background +Initialization facility so that system downtime is minimized both for initial +installation and subsequent configuration of additional storage. The BIOS +Configuration Utility (accessible via Alt-R during the BIOS initialization +sequence) is used to quickly configure the controller, and then the logical +drives that have been created are available for immediate use even while they +are still being initialized by the controller. The primary need for online +configuration and status monitoring is then to avoid system downtime when disk +drives fail and must be replaced. Mylex's online monitoring and configuration +utilities are being ported to Linux and will become available at some point in +the future. Note that with a SAF-TE (SCSI Accessed Fault-Tolerant Enclosure) +enclosure, the controller is able to rebuild failed drives automatically as +soon as a drive replacement is made available. + +The primary interfaces for controller configuration and status monitoring are +special files created in the /proc/rd/... hierarchy along with the normal +system console logging mechanism. Whenever the system is operating, the DAC960 +driver queries each controller for status information every 10 seconds, and +checks for additional conditions every 60 seconds. The initial status of each +controller is always available for controller N in /proc/rd/cN/initial_status, +and the current status as of the last status monitoring query is available in +/proc/rd/cN/current_status. In addition, status changes are also logged by the +driver to the system console and will appear in the log files maintained by +syslog. The progress of asynchronous rebuild or consistency check operations +is also available in /proc/rd/cN/current_status, and progress messages are +logged to the system console at most every 60 seconds. + +Starting with the 2.2.3/2.0.3 versions of the driver, the status information +available in /proc/rd/cN/initial_status and /proc/rd/cN/current_status has been +augmented to include the vendor, model, revision, and serial number (if +available) for each physical device found connected to the controller: + +***** DAC960 RAID Driver Version 2.2.3 of 19 August 1999 ***** +Copyright 1998-1999 by Leonard N. Zubkoff +Configuring Mylex DAC960PRL PCI RAID Controller + Firmware Version: 4.07-0-07, Channels: 1, Memory Size: 16MB + PCI Bus: 1, Device: 4, Function: 1, I/O Address: Unassigned + PCI Address: 0xFE300000 mapped at 0xA0800000, IRQ Channel: 21 + Controller Queue Depth: 128, Maximum Blocks per Command: 128 + Driver Queue Depth: 127, Maximum Scatter/Gather Segments: 33 + Stripe Size: 64KB, Segment Size: 8KB, BIOS Geometry: 255/63 + SAF-TE Enclosure Management Enabled + Physical Devices: + 0:0 Vendor: IBM Model: DRVS09D Revision: 0270 + Serial Number: 68016775HA + Disk Status: Online, 17928192 blocks + 0:1 Vendor: IBM Model: DRVS09D Revision: 0270 + Serial Number: 68004E53HA + Disk Status: Online, 17928192 blocks + 0:2 Vendor: IBM Model: DRVS09D Revision: 0270 + Serial Number: 13013935HA + Disk Status: Online, 17928192 blocks + 0:3 Vendor: IBM Model: DRVS09D Revision: 0270 + Serial Number: 13016897HA + Disk Status: Online, 17928192 blocks + 0:4 Vendor: IBM Model: DRVS09D Revision: 0270 + Serial Number: 68019905HA + Disk Status: Online, 17928192 blocks + 0:5 Vendor: IBM Model: DRVS09D Revision: 0270 + Serial Number: 68012753HA + Disk Status: Online, 17928192 blocks + 0:6 Vendor: ESG-SHV Model: SCA HSBP M6 Revision: 0.61 + Logical Drives: + /dev/rd/c0d0: RAID-5, Online, 89640960 blocks, Write Thru + No Rebuild or Consistency Check in Progress + +To simplify the monitoring process for custom software, the special file +/proc/rd/status returns "OK" when all DAC960 controllers in the system are +operating normally and no failures have occurred, or "ALERT" if any logical +drives are offline or critical or any non-standby physical drives are dead. + +Configuration commands for controller N are available via the special file +/proc/rd/cN/user_command. A human readable command can be written to this +special file to initiate a configuration operation, and the results of the +operation can then be read back from the special file in addition to being +logged to the system console. The shell command sequence + + echo "" > /proc/rd/c0/user_command + cat /proc/rd/c0/user_command + +is typically used to execute configuration commands. The configuration +commands are: + + flush-cache + + The "flush-cache" command flushes the controller's cache. The system + automatically flushes the cache at shutdown or if the driver module is + unloaded, so this command is only needed to be certain a write back cache + is flushed to disk before the system is powered off by a command to a UPS. + Note that the flush-cache command also stops an asynchronous rebuild or + consistency check, so it should not be used except when the system is being + halted. + + kill : + + The "kill" command marks the physical drive : as DEAD. + This command is provided primarily for testing, and should not be used + during normal system operation. + + make-online : + + The "make-online" command changes the physical drive : + from status DEAD to status ONLINE. In cases where multiple physical drives + have been killed simultaneously, this command may be used to bring all but + one of them back online, after which a rebuild to the final drive is + necessary. + + Warning: make-online should only be used on a dead physical drive that is + an active part of a drive group, never on a standby drive. The command + should never be used on a dead drive that is part of a critical logical + drive; rebuild should be used if only a single drive is dead. + + make-standby : + + The "make-standby" command changes physical drive : + from status DEAD to status STANDBY. It should only be used in cases where + a dead drive was replaced after an automatic rebuild was performed onto a + standby drive. It cannot be used to add a standby drive to the controller + configuration if one was not created initially; the BIOS Configuration + Utility must be used for that currently. + + rebuild : + + The "rebuild" command initiates an asynchronous rebuild onto physical drive + :. It should only be used when a dead drive has been + replaced. + + check-consistency + + The "check-consistency" command initiates an asynchronous consistency check + of with automatic restoration. It can be used + whenever it is desired to verify the consistency of the redundancy + information. + + cancel-rebuild + cancel-consistency-check + + The "cancel-rebuild" and "cancel-consistency-check" commands cancel any + rebuild or consistency check operations previously initiated. + + + EXAMPLE I - DRIVE FAILURE WITHOUT A STANDBY DRIVE + +The following annotated logs demonstrate the controller configuration and and +online status monitoring capabilities of the Linux DAC960 Driver. The test +configuration comprises 6 1GB Quantum Atlas I disk drives on two channels of a +DAC960PJ controller. The physical drives are configured into a single drive +group without a standby drive, and the drive group has been configured into two +logical drives, one RAID-5 and one RAID-6. Note that these logs are from an +earlier version of the driver and the messages have changed somewhat with newer +releases, but the functionality remains similar. First, here is the current +status of the RAID configuration: + +gwynedd:/u/lnz# cat /proc/rd/c0/current_status +***** DAC960 RAID Driver Version 2.0.0 of 23 March 1999 ***** +Copyright 1998-1999 by Leonard N. Zubkoff +Configuring Mylex DAC960PJ PCI RAID Controller + Firmware Version: 4.06-0-08, Channels: 3, Memory Size: 8MB + PCI Bus: 0, Device: 19, Function: 1, I/O Address: Unassigned + PCI Address: 0xFD4FC000 mapped at 0x8807000, IRQ Channel: 9 + Controller Queue Depth: 128, Maximum Blocks per Command: 128 + Driver Queue Depth: 127, Maximum Scatter/Gather Segments: 33 + Stripe Size: 64KB, Segment Size: 8KB, BIOS Geometry: 255/63 + Physical Devices: + 0:1 - Disk: Online, 2201600 blocks + 0:2 - Disk: Online, 2201600 blocks + 0:3 - Disk: Online, 2201600 blocks + 1:1 - Disk: Online, 2201600 blocks + 1:2 - Disk: Online, 2201600 blocks + 1:3 - Disk: Online, 2201600 blocks + Logical Drives: + /dev/rd/c0d0: RAID-5, Online, 5498880 blocks, Write Thru + /dev/rd/c0d1: RAID-6, Online, 3305472 blocks, Write Thru + No Rebuild or Consistency Check in Progress + +gwynedd:/u/lnz# cat /proc/rd/status +OK + +The above messages indicate that everything is healthy, and /proc/rd/status +returns "OK" indicating that there are no problems with any DAC960 controller +in the system. For demonstration purposes, while I/O is active Physical Drive +1:1 is now disconnected, simulating a drive failure. The failure is noted by +the driver within 10 seconds of the controller's having detected it, and the +driver logs the following console status messages indicating that Logical +Drives 0 and 1 are now CRITICAL as a result of Physical Drive 1:1 being DEAD: + +DAC960#0: Physical Drive 1:2 Error Log: Sense Key = 6, ASC = 29, ASCQ = 02 +DAC960#0: Physical Drive 1:3 Error Log: Sense Key = 6, ASC = 29, ASCQ = 02 +DAC960#0: Physical Drive 1:1 killed because of timeout on SCSI command +DAC960#0: Physical Drive 1:1 is now DEAD +DAC960#0: Logical Drive 0 (/dev/rd/c0d0) is now CRITICAL +DAC960#0: Logical Drive 1 (/dev/rd/c0d1) is now CRITICAL + +The Sense Keys logged here are just Check Condition / Unit Attention conditions +arising from a SCSI bus reset that is forced by the controller during its error +recovery procedures. Concurrently with the above, the driver status available +from /proc/rd also reflects the drive failure. The status message in +/proc/rd/status has changed from "OK" to "ALERT": + +gwynedd:/u/lnz# cat /proc/rd/status +ALERT + +and /proc/rd/c0/current_status has been updated: + +gwynedd:/u/lnz# cat /proc/rd/c0/current_status + ... + Physical Devices: + 0:1 - Disk: Online, 2201600 blocks + 0:2 - Disk: Online, 2201600 blocks + 0:3 - Disk: Online, 2201600 blocks + 1:1 - Disk: Dead, 2201600 blocks + 1:2 - Disk: Online, 2201600 blocks + 1:3 - Disk: Online, 2201600 blocks + Logical Drives: + /dev/rd/c0d0: RAID-5, Critical, 5498880 blocks, Write Thru + /dev/rd/c0d1: RAID-6, Critical, 3305472 blocks, Write Thru + No Rebuild or Consistency Check in Progress + +Since there are no standby drives configured, the system can continue to access +the logical drives in a performance degraded mode until the failed drive is +replaced and a rebuild operation completed to restore the redundancy of the +logical drives. Once Physical Drive 1:1 is replaced with a properly +functioning drive, or if the physical drive was killed without having failed +(e.g., due to electrical problems on the SCSI bus), the user can instruct the +controller to initiate a rebuild operation onto the newly replaced drive: + +gwynedd:/u/lnz# echo "rebuild 1:1" > /proc/rd/c0/user_command +gwynedd:/u/lnz# cat /proc/rd/c0/user_command +Rebuild of Physical Drive 1:1 Initiated + +The echo command instructs the controller to initiate an asynchronous rebuild +operation onto Physical Drive 1:1, and the status message that results from the +operation is then available for reading from /proc/rd/c0/user_command, as well +as being logged to the console by the driver. + +Within 10 seconds of this command the driver logs the initiation of the +asynchronous rebuild operation: + +DAC960#0: Rebuild of Physical Drive 1:1 Initiated +DAC960#0: Physical Drive 1:1 Error Log: Sense Key = 6, ASC = 29, ASCQ = 01 +DAC960#0: Physical Drive 1:1 is now WRITE-ONLY +DAC960#0: Rebuild in Progress: Logical Drive 0 (/dev/rd/c0d0) 1% completed + +and /proc/rd/c0/current_status is updated: + +gwynedd:/u/lnz# cat /proc/rd/c0/current_status + ... + Physical Devices: + 0:1 - Disk: Online, 2201600 blocks + 0:2 - Disk: Online, 2201600 blocks + 0:3 - Disk: Online, 2201600 blocks + 1:1 - Disk: Write-Only, 2201600 blocks + 1:2 - Disk: Online, 2201600 blocks + 1:3 - Disk: Online, 2201600 blocks + Logical Drives: + /dev/rd/c0d0: RAID-5, Critical, 5498880 blocks, Write Thru + /dev/rd/c0d1: RAID-6, Critical, 3305472 blocks, Write Thru + Rebuild in Progress: Logical Drive 0 (/dev/rd/c0d0) 6% completed + +As the rebuild progresses, the current status in /proc/rd/c0/current_status is +updated every 10 seconds: + +gwynedd:/u/lnz# cat /proc/rd/c0/current_status + ... + Physical Devices: + 0:1 - Disk: Online, 2201600 blocks + 0:2 - Disk: Online, 2201600 blocks + 0:3 - Disk: Online, 2201600 blocks + 1:1 - Disk: Write-Only, 2201600 blocks + 1:2 - Disk: Online, 2201600 blocks + 1:3 - Disk: Online, 2201600 blocks + Logical Drives: + /dev/rd/c0d0: RAID-5, Critical, 5498880 blocks, Write Thru + /dev/rd/c0d1: RAID-6, Critical, 3305472 blocks, Write Thru + Rebuild in Progress: Logical Drive 0 (/dev/rd/c0d0) 15% completed + +and every minute a progress message is logged to the console by the driver: + +DAC960#0: Rebuild in Progress: Logical Drive 0 (/dev/rd/c0d0) 32% completed +DAC960#0: Rebuild in Progress: Logical Drive 0 (/dev/rd/c0d0) 63% completed +DAC960#0: Rebuild in Progress: Logical Drive 0 (/dev/rd/c0d0) 94% completed +DAC960#0: Rebuild in Progress: Logical Drive 1 (/dev/rd/c0d1) 94% completed + +Finally, the rebuild completes successfully. The driver logs the status of the +logical and physical drives and the rebuild completion: + +DAC960#0: Rebuild Completed Successfully +DAC960#0: Physical Drive 1:1 is now ONLINE +DAC960#0: Logical Drive 0 (/dev/rd/c0d0) is now ONLINE +DAC960#0: Logical Drive 1 (/dev/rd/c0d1) is now ONLINE + +/proc/rd/c0/current_status is updated: + +gwynedd:/u/lnz# cat /proc/rd/c0/current_status + ... + Physical Devices: + 0:1 - Disk: Online, 2201600 blocks + 0:2 - Disk: Online, 2201600 blocks + 0:3 - Disk: Online, 2201600 blocks + 1:1 - Disk: Online, 2201600 blocks + 1:2 - Disk: Online, 2201600 blocks + 1:3 - Disk: Online, 2201600 blocks + Logical Drives: + /dev/rd/c0d0: RAID-5, Online, 5498880 blocks, Write Thru + /dev/rd/c0d1: RAID-6, Online, 3305472 blocks, Write Thru + Rebuild Completed Successfully + +and /proc/rd/status indicates that everything is healthy once again: + +gwynedd:/u/lnz# cat /proc/rd/status +OK + + + EXAMPLE II - DRIVE FAILURE WITH A STANDBY DRIVE + +The following annotated logs demonstrate the controller configuration and and +online status monitoring capabilities of the Linux DAC960 Driver. The test +configuration comprises 6 1GB Quantum Atlas I disk drives on two channels of a +DAC960PJ controller. The physical drives are configured into a single drive +group with a standby drive, and the drive group has been configured into two +logical drives, one RAID-5 and one RAID-6. Note that these logs are from an +earlier version of the driver and the messages have changed somewhat with newer +releases, but the functionality remains similar. First, here is the current +status of the RAID configuration: + +gwynedd:/u/lnz# cat /proc/rd/c0/current_status +***** DAC960 RAID Driver Version 2.0.0 of 23 March 1999 ***** +Copyright 1998-1999 by Leonard N. Zubkoff +Configuring Mylex DAC960PJ PCI RAID Controller + Firmware Version: 4.06-0-08, Channels: 3, Memory Size: 8MB + PCI Bus: 0, Device: 19, Function: 1, I/O Address: Unassigned + PCI Address: 0xFD4FC000 mapped at 0x8807000, IRQ Channel: 9 + Controller Queue Depth: 128, Maximum Blocks per Command: 128 + Driver Queue Depth: 127, Maximum Scatter/Gather Segments: 33 + Stripe Size: 64KB, Segment Size: 8KB, BIOS Geometry: 255/63 + Physical Devices: + 0:1 - Disk: Online, 2201600 blocks + 0:2 - Disk: Online, 2201600 blocks + 0:3 - Disk: Online, 2201600 blocks + 1:1 - Disk: Online, 2201600 blocks + 1:2 - Disk: Online, 2201600 blocks + 1:3 - Disk: Standby, 2201600 blocks + Logical Drives: + /dev/rd/c0d0: RAID-5, Online, 4399104 blocks, Write Thru + /dev/rd/c0d1: RAID-6, Online, 2754560 blocks, Write Thru + No Rebuild or Consistency Check in Progress + +gwynedd:/u/lnz# cat /proc/rd/status +OK + +The above messages indicate that everything is healthy, and /proc/rd/status +returns "OK" indicating that there are no problems with any DAC960 controller +in the system. For demonstration purposes, while I/O is active Physical Drive +1:2 is now disconnected, simulating a drive failure. The failure is noted by +the driver within 10 seconds of the controller's having detected it, and the +driver logs the following console status messages: + +DAC960#0: Physical Drive 1:1 Error Log: Sense Key = 6, ASC = 29, ASCQ = 02 +DAC960#0: Physical Drive 1:3 Error Log: Sense Key = 6, ASC = 29, ASCQ = 02 +DAC960#0: Physical Drive 1:2 killed because of timeout on SCSI command +DAC960#0: Physical Drive 1:2 is now DEAD +DAC960#0: Physical Drive 1:2 killed because it was removed +DAC960#0: Logical Drive 0 (/dev/rd/c0d0) is now CRITICAL +DAC960#0: Logical Drive 1 (/dev/rd/c0d1) is now CRITICAL + +Since a standby drive is configured, the controller automatically begins +rebuilding onto the standby drive: + +DAC960#0: Physical Drive 1:3 is now WRITE-ONLY +DAC960#0: Rebuild in Progress: Logical Drive 0 (/dev/rd/c0d0) 4% completed + +Concurrently with the above, the driver status available from /proc/rd also +reflects the drive failure and automatic rebuild. The status message in +/proc/rd/status has changed from "OK" to "ALERT": + +gwynedd:/u/lnz# cat /proc/rd/status +ALERT + +and /proc/rd/c0/current_status has been updated: + +gwynedd:/u/lnz# cat /proc/rd/c0/current_status + ... + Physical Devices: + 0:1 - Disk: Online, 2201600 blocks + 0:2 - Disk: Online, 2201600 blocks + 0:3 - Disk: Online, 2201600 blocks + 1:1 - Disk: Online, 2201600 blocks + 1:2 - Disk: Dead, 2201600 blocks + 1:3 - Disk: Write-Only, 2201600 blocks + Logical Drives: + /dev/rd/c0d0: RAID-5, Critical, 4399104 blocks, Write Thru + /dev/rd/c0d1: RAID-6, Critical, 2754560 blocks, Write Thru + Rebuild in Progress: Logical Drive 0 (/dev/rd/c0d0) 4% completed + +As the rebuild progresses, the current status in /proc/rd/c0/current_status is +updated every 10 seconds: + +gwynedd:/u/lnz# cat /proc/rd/c0/current_status + ... + Physical Devices: + 0:1 - Disk: Online, 2201600 blocks + 0:2 - Disk: Online, 2201600 blocks + 0:3 - Disk: Online, 2201600 blocks + 1:1 - Disk: Online, 2201600 blocks + 1:2 - Disk: Dead, 2201600 blocks + 1:3 - Disk: Write-Only, 2201600 blocks + Logical Drives: + /dev/rd/c0d0: RAID-5, Critical, 4399104 blocks, Write Thru + /dev/rd/c0d1: RAID-6, Critical, 2754560 blocks, Write Thru + Rebuild in Progress: Logical Drive 0 (/dev/rd/c0d0) 40% completed + +and every minute a progress message is logged on the console by the driver: + +DAC960#0: Rebuild in Progress: Logical Drive 0 (/dev/rd/c0d0) 40% completed +DAC960#0: Rebuild in Progress: Logical Drive 0 (/dev/rd/c0d0) 76% completed +DAC960#0: Rebuild in Progress: Logical Drive 1 (/dev/rd/c0d1) 66% completed +DAC960#0: Rebuild in Progress: Logical Drive 1 (/dev/rd/c0d1) 84% completed + +Finally, the rebuild completes successfully. The driver logs the status of the +logical and physical drives and the rebuild completion: + +DAC960#0: Rebuild Completed Successfully +DAC960#0: Physical Drive 1:3 is now ONLINE +DAC960#0: Logical Drive 0 (/dev/rd/c0d0) is now ONLINE +DAC960#0: Logical Drive 1 (/dev/rd/c0d1) is now ONLINE + +/proc/rd/c0/current_status is updated: + +***** DAC960 RAID Driver Version 2.0.0 of 23 March 1999 ***** +Copyright 1998-1999 by Leonard N. Zubkoff +Configuring Mylex DAC960PJ PCI RAID Controller + Firmware Version: 4.06-0-08, Channels: 3, Memory Size: 8MB + PCI Bus: 0, Device: 19, Function: 1, I/O Address: Unassigned + PCI Address: 0xFD4FC000 mapped at 0x8807000, IRQ Channel: 9 + Controller Queue Depth: 128, Maximum Blocks per Command: 128 + Driver Queue Depth: 127, Maximum Scatter/Gather Segments: 33 + Stripe Size: 64KB, Segment Size: 8KB, BIOS Geometry: 255/63 + Physical Devices: + 0:1 - Disk: Online, 2201600 blocks + 0:2 - Disk: Online, 2201600 blocks + 0:3 - Disk: Online, 2201600 blocks + 1:1 - Disk: Online, 2201600 blocks + 1:2 - Disk: Dead, 2201600 blocks + 1:3 - Disk: Online, 2201600 blocks + Logical Drives: + /dev/rd/c0d0: RAID-5, Online, 4399104 blocks, Write Thru + /dev/rd/c0d1: RAID-6, Online, 2754560 blocks, Write Thru + Rebuild Completed Successfully + +and /proc/rd/status indicates that everything is healthy once again: + +gwynedd:/u/lnz# cat /proc/rd/status +OK + +Note that the absence of a viable standby drive does not create an "ALERT" +status. Once dead Physical Drive 1:2 has been replaced, the controller must be +told that this has occurred and that the newly replaced drive should become the +new standby drive: + +gwynedd:/u/lnz# echo "make-standby 1:2" > /proc/rd/c0/user_command +gwynedd:/u/lnz# cat /proc/rd/c0/user_command +Make Standby of Physical Drive 1:2 Succeeded + +The echo command instructs the controller to make Physical Drive 1:2 into a +standby drive, and the status message that results from the operation is then +available for reading from /proc/rd/c0/user_command, as well as being logged to +the console by the driver. Within 60 seconds of this command the driver logs: + +DAC960#0: Physical Drive 1:2 Error Log: Sense Key = 6, ASC = 29, ASCQ = 01 +DAC960#0: Physical Drive 1:2 is now STANDBY +DAC960#0: Make Standby of Physical Drive 1:2 Succeeded + +and /proc/rd/c0/current_status is updated: + +gwynedd:/u/lnz# cat /proc/rd/c0/current_status + ... + Physical Devices: + 0:1 - Disk: Online, 2201600 blocks + 0:2 - Disk: Online, 2201600 blocks + 0:3 - Disk: Online, 2201600 blocks + 1:1 - Disk: Online, 2201600 blocks + 1:2 - Disk: Standby, 2201600 blocks + 1:3 - Disk: Online, 2201600 blocks + Logical Drives: + /dev/rd/c0d0: RAID-5, Online, 4399104 blocks, Write Thru + /dev/rd/c0d1: RAID-6, Online, 2754560 blocks, Write Thru + Rebuild Completed Successfully diff --git a/Documentation/README.cycladesZ b/Documentation/README.cycladesZ new file mode 100644 index 000000000000..024a69443cc2 --- /dev/null +++ b/Documentation/README.cycladesZ @@ -0,0 +1,8 @@ + +The Cyclades-Z must have firmware loaded onto the card before it will +operate. This operation should be performed during system startup, + +The firmware, loader program and the latest device driver code are +available from Cyclades at + ftp://ftp.cyclades.com/pub/cyclades/cyclades-z/linux/ + diff --git a/Documentation/SAK.txt b/Documentation/SAK.txt new file mode 100644 index 000000000000..b9019ca872ea --- /dev/null +++ b/Documentation/SAK.txt @@ -0,0 +1,88 @@ +Linux 2.4.2 Secure Attention Key (SAK) handling +18 March 2001, Andrew Morton + +An operating system's Secure Attention Key is a security tool which is +provided as protection against trojan password capturing programs. It +is an undefeatable way of killing all programs which could be +masquerading as login applications. Users need to be taught to enter +this key sequence before they log in to the system. + +From the PC keyboard, Linux has two similar but different ways of +providing SAK. One is the ALT-SYSRQ-K sequence. You shouldn't use +this sequence. It is only available if the kernel was compiled with +sysrq support. + +The proper way of generating a SAK is to define the key sequence using +`loadkeys'. This will work whether or not sysrq support is compiled +into the kernel. + +SAK works correctly when the keyboard is in raw mode. This means that +once defined, SAK will kill a running X server. If the system is in +run level 5, the X server will restart. This is what you want to +happen. + +What key sequence should you use? Well, CTRL-ALT-DEL is used to reboot +the machine. CTRL-ALT-BACKSPACE is magical to the X server. We'll +choose CTRL-ALT-PAUSE. + +In your rc.sysinit (or rc.local) file, add the command + + echo "control alt keycode 101 = SAK" | /bin/loadkeys + +And that's it! Only the superuser may reprogram the SAK key. + + +NOTES +===== + +1: Linux SAK is said to be not a "true SAK" as is required by + systems which implement C2 level security. This author does not + know why. + + +2: On the PC keyboard, SAK kills all applications which have + /dev/console opened. + + Unfortunately this includes a number of things which you don't + actually want killed. This is because these applications are + incorrectly holding /dev/console open. Be sure to complain to your + Linux distributor about this! + + You can identify processes which will be killed by SAK with the + command + + # ls -l /proc/[0-9]*/fd/* | grep console + l-wx------ 1 root root 64 Mar 18 00:46 /proc/579/fd/0 -> /dev/console + + Then: + + # ps aux|grep 579 + root 579 0.0 0.1 1088 436 ? S 00:43 0:00 gpm -t ps/2 + + So `gpm' will be killed by SAK. This is a bug in gpm. It should + be closing standard input. You can work around this by finding the + initscript which launches gpm and changing it thusly: + + Old: + + daemon gpm + + New: + + daemon gpm < /dev/null + + Vixie cron also seems to have this problem, and needs the same treatment. + + Also, one prominent Linux distribution has the following three + lines in its rc.sysinit and rc scripts: + + exec 3<&0 + exec 4>&1 + exec 5>&2 + + These commands cause *all* daemons which are launched by the + initscripts to have file descriptors 3, 4 and 5 attached to + /dev/console. So SAK kills them all. A workaround is to simply + delete these lines, but this may cause system management + applications to malfunction - test everything well. + diff --git a/Documentation/SecurityBugs b/Documentation/SecurityBugs new file mode 100644 index 000000000000..26c3b3635d9f --- /dev/null +++ b/Documentation/SecurityBugs @@ -0,0 +1,38 @@ +Linux kernel developers take security very seriously. As such, we'd +like to know when a security bug is found so that it can be fixed and +disclosed as quickly as possible. Please report security bugs to the +Linux kernel security team. + +1) Contact + +The Linux kernel security team can be contacted by email at +. This is a private list of security officers +who will help verify the bug report and develop and release a fix. +It is possible that the security team will bring in extra help from +area maintainers to understand and fix the security vulnerability. + +As it is with any bug, the more information provided the easier it +will be to diagnose and fix. Please review the procedure outlined in +REPORTING-BUGS if you are unclear about what information is helpful. +Any exploit code is very helpful and will not be released without +consent from the reporter unless it has already been made public. + +2) Disclosure + +The goal of the Linux kernel security team is to work with the +bug submitter to bug resolution as well as disclosure. We prefer +to fully disclose the bug as soon as possible. It is reasonable to +delay disclosure when the bug or the fix is not yet fully understood, +the solution is not well-tested or for vendor coordination. However, we +expect these delays to be short, measurable in days, not weeks or months. +A disclosure date is negotiated by the security team working with the +bug submitter as well as vendors. However, the kernel security team +holds the final say when setting a disclosure date. The timeframe for +disclosure is from immediate (esp. if it's already publically known) +to a few weeks. As a basic default policy, we expect report date to +disclosure date to be on the order of 7 days. + +3) Non-disclosure agreements + +The Linux kernel security team is not a formal body and therefore unable +to enter any non-disclosure agreements. diff --git a/Documentation/SubmittingDrivers b/Documentation/SubmittingDrivers new file mode 100644 index 000000000000..de3b252e717d --- /dev/null +++ b/Documentation/SubmittingDrivers @@ -0,0 +1,145 @@ +Submitting Drivers For The Linux Kernel +--------------------------------------- + +This document is intended to explain how to submit device drivers to the +various kernel trees. Note that if you are interested in video card drivers +you should probably talk to XFree86 (http://www.xfree86.org/) and/or X.Org +(http://x.org/) instead. + +Also read the Documentation/SubmittingPatches document. + + +Allocating Device Numbers +------------------------- + +Major and minor numbers for block and character devices are allocated +by the Linux assigned name and number authority (currently better +known as H Peter Anvin). The site is http://www.lanana.org/. This +also deals with allocating numbers for devices that are not going to +be submitted to the mainstream kernel. + +If you don't use assigned numbers then when you device is submitted it will +get given an assigned number even if that is different from values you may +have shipped to customers before. + +Who To Submit Drivers To +------------------------ + +Linux 2.0: + No new drivers are accepted for this kernel tree + +Linux 2.2: + If the code area has a general maintainer then please submit it to + the maintainer listed in MAINTAINERS in the kernel file. If the + maintainer does not respond or you cannot find the appropriate + maintainer then please contact Alan Cox + +Linux 2.4: + The same rules apply as 2.2. The final contact point for Linux 2.4 + submissions is Marcelo Tosatti . + +Linux 2.6: + The same rules apply as 2.4 except that you should follow linux-kernel + to track changes in API's. The final contact point for Linux 2.6 + submissions is Andrew Morton . + +What Criteria Determine Acceptance +---------------------------------- + +Licensing: The code must be released to us under the + GNU General Public License. We don't insist on any kind + of exclusively GPL licensing, and if you wish the driver + to be useful to other communities such as BSD you may well + wish to release under multiple licenses. + +Copyright: The copyright owner must agree to use of GPL. + It's best if the submitter and copyright owner + are the same person/entity. If not, the name of + the person/entity authorizing use of GPL should be + listed in case it's necessary to verify the will of + the copright owner. + +Interfaces: If your driver uses existing interfaces and behaves like + other drivers in the same class it will be much more likely + to be accepted than if it invents gratuitous new ones. + If you need to implement a common API over Linux and NT + drivers do it in userspace. + +Code: Please use the Linux style of code formatting as documented + in Documentation/CodingStyle. If you have sections of code + that need to be in other formats, for example because they + are shared with a windows driver kit and you want to + maintain them just once separate them out nicely and note + this fact. + +Portability: Pointers are not always 32bits, not all computers are little + endian, people do not all have floating point and you + shouldn't use inline x86 assembler in your driver without + careful thought. Pure x86 drivers generally are not popular. + If you only have x86 hardware it is hard to test portability + but it is easy to make sure the code can easily be made + portable. + +Clarity: It helps if anyone can see how to fix the driver. It helps + you because you get patches not bug reports. If you submit a + driver that intentionally obfuscates how the hardware works + it will go in the bitbucket. + +Control: In general if there is active maintainance of a driver by + the author then patches will be redirected to them unless + they are totally obvious and without need of checking. + If you want to be the contact and update point for the + driver it is a good idea to state this in the comments, + and include an entry in MAINTAINERS for your driver. + +What Criteria Do Not Determine Acceptance +----------------------------------------- + +Vendor: Being the hardware vendor and maintaining the driver is + often a good thing. If there is a stable working driver from + other people already in the tree don't expect 'we are the + vendor' to get your driver chosen. Ideally work with the + existing driver author to build a single perfect driver. + +Author: It doesn't matter if a large Linux company wrote the driver, + or you did. Nobody has any special access to the kernel + tree. Anyone who tells you otherwise isn't telling the + whole story. + + +Resources +--------- + +Linux kernel master tree: + ftp.??.kernel.org:/pub/linux/kernel/... + ?? == your country code, such as "us", "uk", "fr", etc. + +Linux kernel mailing list: + linux-kernel@vger.kernel.org + [mail majordomo@vger.kernel.org to subscribe] + +Linux Device Drivers, Third Edition (covers 2.6.10): + http://lwn.net/Kernel/LDD3/ (free version) + +Kernel traffic: + Weekly summary of kernel list activity (much easier to read) + http://www.kerneltraffic.org/kernel-traffic/ + +LWN.net: + Weekly summary of kernel development activity - http://lwn.net/ + 2.6 API changes: + http://lwn.net/Articles/2.6-kernel-api/ + Porting drivers from prior kernels to 2.6: + http://lwn.net/Articles/driver-porting/ + +KernelTrap: + Occasional Linux kernel articles and developer interviews + http://kerneltrap.org/ + +KernelNewbies: + Documentation and assistance for new kernel programmers + http://kernelnewbies.org/ + +Linux USB project: + http://sourceforge.net/projects/linux-usb/ + diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches new file mode 100644 index 000000000000..9838d32b2fe7 --- /dev/null +++ b/Documentation/SubmittingPatches @@ -0,0 +1,374 @@ + + How to Get Your Change Into the Linux Kernel + or + Care And Operation Of Your Linus Torvalds + + + +For a person or company who wishes to submit a change to the Linux +kernel, the process can sometimes be daunting if you're not familiar +with "the system." This text is a collection of suggestions which +can greatly increase the chances of your change being accepted. + +If you are submitting a driver, also read Documentation/SubmittingDrivers. + + + +-------------------------------------------- +SECTION 1 - CREATING AND SENDING YOUR CHANGE +-------------------------------------------- + + + +1) "diff -up" +------------ + +Use "diff -up" or "diff -uprN" to create patches. + +All changes to the Linux kernel occur in the form of patches, as +generated by diff(1). When creating your patch, make sure to create it +in "unified diff" format, as supplied by the '-u' argument to diff(1). +Also, please use the '-p' argument which shows which C function each +change is in - that makes the resultant diff a lot easier to read. +Patches should be based in the root kernel source directory, +not in any lower subdirectory. + +To create a patch for a single file, it is often sufficient to do: + + SRCTREE= linux-2.4 + MYFILE= drivers/net/mydriver.c + + cd $SRCTREE + cp $MYFILE $MYFILE.orig + vi $MYFILE # make your change + cd .. + diff -up $SRCTREE/$MYFILE{.orig,} > /tmp/patch + +To create a patch for multiple files, you should unpack a "vanilla", +or unmodified kernel source tree, and generate a diff against your +own source tree. For example: + + MYSRC= /devel/linux-2.4 + + tar xvfz linux-2.4.0-test11.tar.gz + mv linux linux-vanilla + wget http://www.moses.uklinux.net/patches/dontdiff + diff -uprN -X dontdiff linux-vanilla $MYSRC > /tmp/patch + rm -f dontdiff + +"dontdiff" is a list of files which are generated by the kernel during +the build process, and should be ignored in any diff(1)-generated +patch. dontdiff is maintained by Tigran Aivazian + +Make sure your patch does not include any extra files which do not +belong in a patch submission. Make sure to review your patch -after- +generated it with diff(1), to ensure accuracy. + +If your changes produce a lot of deltas, you may want to look into +splitting them into individual patches which modify things in +logical stages, this will facilitate easier reviewing by other +kernel developers, very important if you want your patch accepted. +There are a number of scripts which can aid in this; + +Quilt: +http://savannah.nongnu.org/projects/quilt + +Randy Dunlap's patch scripts: +http://developer.osdl.org/rddunlap/scripts/patching-scripts.tgz + +Andrew Morton's patch scripts: +http://www.zip.com.au/~akpm/linux/patches/patch-scripts-0.16 + +2) Describe your changes. + +Describe the technical detail of the change(s) your patch includes. + +Be as specific as possible. The WORST descriptions possible include +things like "update driver X", "bug fix for driver X", or "this patch +includes updates for subsystem X. Please apply." + +If your description starts to get long, that's a sign that you probably +need to split up your patch. See #3, next. + + + +3) Separate your changes. + +Separate each logical change into its own patch. + +For example, if your changes include both bug fixes and performance +enhancements for a single driver, separate those changes into two +or more patches. If your changes include an API update, and a new +driver which uses that new API, separate those into two patches. + +On the other hand, if you make a single change to numerous files, +group those changes into a single patch. Thus a single logical change +is contained within a single patch. + +If one patch depends on another patch in order for a change to be +complete, that is OK. Simply note "this patch depends on patch X" +in your patch description. + + +4) Select e-mail destination. + +Look through the MAINTAINERS file and the source code, and determine +if your change applies to a specific subsystem of the kernel, with +an assigned maintainer. If so, e-mail that person. + +If no maintainer is listed, or the maintainer does not respond, send +your patch to the primary Linux kernel developer's mailing list, +linux-kernel@vger.kernel.org. Most kernel developers monitor this +e-mail list, and can comment on your changes. + +Linus Torvalds is the final arbiter of all changes accepted into the +Linux kernel. His e-mail address is . He gets +a lot of e-mail, so typically you should do your best to -avoid- sending +him e-mail. + +Patches which are bug fixes, are "obvious" changes, or similarly +require little discussion should be sent or CC'd to Linus. Patches +which require discussion or do not have a clear advantage should +usually be sent first to linux-kernel. Only after the patch is +discussed should the patch then be submitted to Linus. + +For small patches you may want to CC the Trivial Patch Monkey +trivial@rustcorp.com.au set up by Rusty Russell; which collects "trivial" +patches. Trivial patches must qualify for one of the following rules: + Spelling fixes in documentation + Spelling fixes which could break grep(1). + Warning fixes (cluttering with useless warnings is bad) + Compilation fixes (only if they are actually correct) + Runtime fixes (only if they actually fix things) + Removing use of deprecated functions/macros (eg. check_region). + Contact detail and documentation fixes + Non-portable code replaced by portable code (even in arch-specific, + since people copy, as long as it's trivial) + Any fix by the author/maintainer of the file. (ie. patch monkey + in re-transmission mode) + + + +5) Select your CC (e-mail carbon copy) list. + +Unless you have a reason NOT to do so, CC linux-kernel@vger.kernel.org. + +Other kernel developers besides Linus need to be aware of your change, +so that they may comment on it and offer code review and suggestions. +linux-kernel is the primary Linux kernel developer mailing list. +Other mailing lists are available for specific subsystems, such as +USB, framebuffer devices, the VFS, the SCSI subsystem, etc. See the +MAINTAINERS file for a mailing list that relates specifically to +your change. + +Even if the maintainer did not respond in step #4, make sure to ALWAYS +copy the maintainer when you change their code. + +For small patches you may want to CC the Trivial Patch Monkey +trivial@rustcorp.com.au set up by Rusty Russell; which collects "trivial" +patches. Trivial patches must qualify for one of the following rules: + Spelling fixes in documentation + Spelling fixes which could break grep(1). + Warning fixes (cluttering with useless warnings is bad) + Compilation fixes (only if they are actually correct) + Runtime fixes (only if they actually fix things) + Removing use of deprecated functions/macros (eg. check_region). + Contact detail and documentation fixes + Non-portable code replaced by portable code (even in arch-specific, + since people copy, as long as it's trivial) + Any fix by the author/maintainer of the file. (ie. patch monkey + in re-transmission mode) + + + +6) No MIME, no links, no compression, no attachments. Just plain text. + +Linus and other kernel developers need to be able to read and comment +on the changes you are submitting. It is important for a kernel +developer to be able to "quote" your changes, using standard e-mail +tools, so that they may comment on specific portions of your code. + +For this reason, all patches should be submitting e-mail "inline". +WARNING: Be wary of your editor's word-wrap corrupting your patch, +if you choose to cut-n-paste your patch. + +Do not attach the patch as a MIME attachment, compressed or not. +Many popular e-mail applications will not always transmit a MIME +attachment as plain text, making it impossible to comment on your +code. A MIME attachment also takes Linus a bit more time to process, +decreasing the likelihood of your MIME-attached change being accepted. + +Exception: If your mailer is mangling patches then someone may ask +you to re-send them using MIME. + + + +7) E-mail size. + +When sending patches to Linus, always follow step #6. + +Large changes are not appropriate for mailing lists, and some +maintainers. If your patch, uncompressed, exceeds 40 kB in size, +it is preferred that you store your patch on an Internet-accessible +server, and provide instead a URL (link) pointing to your patch. + + + +8) Name your kernel version. + +It is important to note, either in the subject line or in the patch +description, the kernel version to which this patch applies. + +If the patch does not apply cleanly to the latest kernel version, +Linus will not apply it. + + + +9) Don't get discouraged. Re-submit. + +After you have submitted your change, be patient and wait. If Linus +likes your change and applies it, it will appear in the next version +of the kernel that he releases. + +However, if your change doesn't appear in the next version of the +kernel, there could be any number of reasons. It's YOUR job to +narrow down those reasons, correct what was wrong, and submit your +updated change. + +It is quite common for Linus to "drop" your patch without comment. +That's the nature of the system. If he drops your patch, it could be +due to +* Your patch did not apply cleanly to the latest kernel version +* Your patch was not sufficiently discussed on linux-kernel. +* A style issue (see section 2), +* An e-mail formatting issue (re-read this section) +* A technical problem with your change +* He gets tons of e-mail, and yours got lost in the shuffle +* You are being annoying (See Figure 1) + +When in doubt, solicit comments on linux-kernel mailing list. + + + +10) Include PATCH in the subject + +Due to high e-mail traffic to Linus, and to linux-kernel, it is common +convention to prefix your subject line with [PATCH]. This lets Linus +and other kernel developers more easily distinguish patches from other +e-mail discussions. + + + +11) Sign your work + +To improve tracking of who did what, especially with patches that can +percolate to their final resting place in the kernel through several +layers of maintainers, we've introduced a "sign-off" procedure on +patches that are being emailed around. + +The sign-off is a simple line at the end of the explanation for the +patch, which certifies that you wrote it or otherwise have the right to +pass it on as a open-source patch. The rules are pretty simple: if you +can certify the below: + + Developer's Certificate of Origin 1.0 + + By making a contribution to this project, I certify that: + + (a) The contribution was created in whole or in part by me and I + have the right to submit it under the open source license + indicated in the file; or + + (b) The contribution is based upon previous work that, to the best + of my knowledge, is covered under an appropriate open source + license and I have the right under that license to submit that + work with modifications, whether created in whole or in part + by me, under the same open source license (unless I am + permitted to submit under a different license), as indicated + in the file; or + + (c) The contribution was provided directly to me by some other + person who certified (a), (b) or (c) and I have not modified + it. + +then you just add a line saying + + Signed-off-by: Random J Developer + +Some people also put extra tags at the end. They'll just be ignored for +now, but you can do this to mark internal company procedures or just +point out some special detail about the sign-off. + + +----------------------------------- +SECTION 2 - HINTS, TIPS, AND TRICKS +----------------------------------- + +This section lists many of the common "rules" associated with code +submitted to the kernel. There are always exceptions... but you must +have a really good reason for doing so. You could probably call this +section Linus Computer Science 101. + + + +1) Read Documentation/CodingStyle + +Nuff said. If your code deviates too much from this, it is likely +to be rejected without further review, and without comment. + + + +2) #ifdefs are ugly + +Code cluttered with ifdefs is difficult to read and maintain. Don't do +it. Instead, put your ifdefs in a header, and conditionally define +'static inline' functions, or macros, which are used in the code. +Let the compiler optimize away the "no-op" case. + +Simple example, of poor code: + + dev = alloc_etherdev (sizeof(struct funky_private)); + if (!dev) + return -ENODEV; + #ifdef CONFIG_NET_FUNKINESS + init_funky_net(dev); + #endif + +Cleaned-up example: + +(in header) + #ifndef CONFIG_NET_FUNKINESS + static inline void init_funky_net (struct net_device *d) {} + #endif + +(in the code itself) + dev = alloc_etherdev (sizeof(struct funky_private)); + if (!dev) + return -ENODEV; + init_funky_net(dev); + + + +3) 'static inline' is better than a macro + +Static inline functions are greatly preferred over macros. +They provide type safety, have no length limitations, no formatting +limitations, and under gcc they are as cheap as macros. + +Macros should only be used for cases where a static inline is clearly +suboptimal [there a few, isolated cases of this in fast paths], +or where it is impossible to use a static inline function [such as +string-izing]. + +'static inline' is preferred over 'static __inline__', 'extern inline', +and 'extern __inline__'. + + + +4) Don't over-design. + +Don't try to anticipate nebulous future cases which may or may not +be useful: "Make it as simple as you can, and no simpler" + + + diff --git a/Documentation/VGA-softcursor.txt b/Documentation/VGA-softcursor.txt new file mode 100644 index 000000000000..70acfbf399eb --- /dev/null +++ b/Documentation/VGA-softcursor.txt @@ -0,0 +1,39 @@ +Software cursor for VGA by Pavel Machek +======================= and Martin Mares + + Linux now has some ability to manipulate cursor appearance. Normally, you +can set the size of hardware cursor (and also work around some ugly bugs in +those miserable Trident cards--see #define TRIDENT_GLITCH in drivers/video/ +vgacon.c). You can now play a few new tricks: you can make your cursor look +like a non-blinking red block, make it inverse background of the character it's +over or to highlight that character and still choose whether the original +hardware cursor should remain visible or not. There may be other things I have +never thought of. + + The cursor appearance is controlled by a "[?1;2;3c" escape sequence +where 1, 2 and 3 are parameters described below. If you omit any of them, +they will default to zeroes. + + Parameter 1 specifies cursor size (0=default, 1=invisible, 2=underline, ..., +8=full block) + 16 if you want the software cursor to be applied + 32 if you +want to always change the background color + 64 if you dislike having the +background the same as the foreground. Highlights are ignored for the last two +flags. + + The second parameter selects character attribute bits you want to change +(by simply XORing them with the value of this parameter). On standard VGA, +the high four bits specify background and the low four the foreground. In both +groups, low three bits set color (as in normal color codes used by the console) +and the most significant one turns on highlight (or sometimes blinking--it +depends on the configuration of your VGA). + + The third parameter consists of character attribute bits you want to set. +Bit setting takes place before bit toggling, so you can simply clear a bit by +including it in both the set mask and the toggle mask. + +Examples: +========= + +To get normal blinking underline, use: echo -e '\033[?2c' +To get blinking block, use: echo -e '\033[?6c' +To get red non-blinking block, use: echo -e '\033[?17;0;64c' diff --git a/Documentation/aoe/aoe.txt b/Documentation/aoe/aoe.txt new file mode 100644 index 000000000000..43e50108d0e2 --- /dev/null +++ b/Documentation/aoe/aoe.txt @@ -0,0 +1,91 @@ +The EtherDrive (R) HOWTO for users of 2.6 kernels is found at ... + + http://www.coraid.com/support/linux/EtherDrive-2.6-HOWTO.html + + It has many tips and hints! + +CREATING DEVICE NODES + + Users of udev should find the block device nodes created + automatically, but to create all the necessary device nodes, use the + udev configuration rules provided in udev.txt (in this directory). + + There is a udev-install.sh script that shows how to install these + rules on your system. + + If you are not using udev, two scripts are provided in + Documentation/aoe as examples of static device node creation for + using the aoe driver. + + rm -rf /dev/etherd + sh Documentation/aoe/mkdevs.sh /dev/etherd + + ... or to make just one shelf's worth of block device nodes ... + + sh Documentation/aoe/mkshelf.sh /dev/etherd 0 + + There is also an autoload script that shows how to edit + /etc/modprobe.conf to ensure that the aoe module is loaded when + necessary. + +USING DEVICE NODES + + "cat /dev/etherd/err" blocks, waiting for error diagnostic output, + like any retransmitted packets. + + "echo eth2 eth4 > /dev/etherd/interfaces" tells the aoe driver to + limit ATA over Ethernet traffic to eth2 and eth4. AoE traffic from + untrusted networks should be ignored as a matter of security. + + "echo > /dev/etherd/discover" tells the driver to find out what AoE + devices are available. + + These character devices may disappear and be replaced by sysfs + counterparts, so distribution maintainers are encouraged to create + scripts that use these devices. + + The block devices are named like this: + + e{shelf}.{slot} + e{shelf}.{slot}p{part} + + ... so that "e0.2" is the third blade from the left (slot 2) in the + first shelf (shelf address zero). That's the whole disk. The first + partition on that disk would be "e0.2p1". + +USING SYSFS + + Each aoe block device in /sys/block has the extra attributes of + state, mac, and netif. The state attribute is "up" when the device + is ready for I/O and "down" if detected but unusable. The + "down,closewait" state shows that the device is still open and + cannot come up again until it has been closed. + + The mac attribute is the ethernet address of the remote AoE device. + The netif attribute is the network interface on the localhost + through which we are communicating with the remote AoE device. + + There is a script in this directory that formats this information + in a convenient way. + + root@makki root# sh Documentation/aoe/status.sh + e10.0 eth3 up + e10.1 eth3 up + e10.2 eth3 up + e10.3 eth3 up + e10.4 eth3 up + e10.5 eth3 up + e10.6 eth3 up + e10.7 eth3 up + e10.8 eth3 up + e10.9 eth3 up + e4.0 eth1 up + e4.1 eth1 up + e4.2 eth1 up + e4.3 eth1 up + e4.4 eth1 up + e4.5 eth1 up + e4.6 eth1 up + e4.7 eth1 up + e4.8 eth1 up + e4.9 eth1 up diff --git a/Documentation/aoe/autoload.sh b/Documentation/aoe/autoload.sh new file mode 100644 index 000000000000..78dad1334c6f --- /dev/null +++ b/Documentation/aoe/autoload.sh @@ -0,0 +1,17 @@ +#!/bin/sh +# set aoe to autoload by installing the +# aliases in /etc/modprobe.conf + +f=/etc/modprobe.conf + +if test ! -r $f || test ! -w $f; then + echo "cannot configure $f for module autoloading" 1>&2 + exit 1 +fi + +grep major-152 $f >/dev/null +if [ $? = 1 ]; then + echo alias block-major-152 aoe >> $f + echo alias char-major-152 aoe >> $f +fi + diff --git a/Documentation/aoe/mkdevs.sh b/Documentation/aoe/mkdevs.sh new file mode 100644 index 000000000000..6ce70703eb47 --- /dev/null +++ b/Documentation/aoe/mkdevs.sh @@ -0,0 +1,36 @@ +#!/bin/sh + +n_shelves=${n_shelves:-10} +n_partitions=${n_partitions:-16} + +if test "$#" != "1"; then + echo "Usage: sh `basename $0` {dir}" 1>&2 + exit 1 +fi +dir=$1 + +MAJOR=152 + +echo "Creating AoE devnode files in $dir ..." + +set -e + +mkdir -p $dir + +# (Status info is in sysfs. See status.sh.) +# rm -f $dir/stat +# mknod -m 0400 $dir/stat c $MAJOR 1 +rm -f $dir/err +mknod -m 0400 $dir/err c $MAJOR 2 +rm -f $dir/discover +mknod -m 0200 $dir/discover c $MAJOR 3 +rm -f $dir/interfaces +mknod -m 0200 $dir/interfaces c $MAJOR 4 + +export n_partitions +mkshelf=`echo $0 | sed 's!mkdevs!mkshelf!'` +i=0 +while test $i -lt $n_shelves; do + sh -xc "sh $mkshelf $dir $i" + i=`expr $i + 1` +done diff --git a/Documentation/aoe/mkshelf.sh b/Documentation/aoe/mkshelf.sh new file mode 100644 index 000000000000..40932836bb80 --- /dev/null +++ b/Documentation/aoe/mkshelf.sh @@ -0,0 +1,25 @@ +#! /bin/sh + +if test "$#" != "2"; then + echo "Usage: sh `basename $0` {dir} {shelfaddress}" 1>&2 + exit 1 +fi +n_partitions=${n_partitions:-16} +dir=$1 +shelf=$2 +MAJOR=152 + +set -e + +minor=`echo 10 \* $shelf \* $n_partitions | bc` +endp=`echo $n_partitions - 1 | bc` +for slot in `seq 0 9`; do + for part in `seq 0 $endp`; do + name=e$shelf.$slot + test "$part" != "0" && name=${name}p$part + rm -f $dir/$name + mknod -m 0660 $dir/$name b $MAJOR $minor + + minor=`expr $minor + 1` + done +done diff --git a/Documentation/aoe/status.sh b/Documentation/aoe/status.sh new file mode 100644 index 000000000000..6628116d4a9f --- /dev/null +++ b/Documentation/aoe/status.sh @@ -0,0 +1,31 @@ +#! /bin/sh +# collate and present sysfs information about AoE storage + +set -e +format="%8s\t%8s\t%8s\n" +me=`basename $0` +sysd=${sysfs_dir:-/sys} + +# printf "$format" device mac netif state + +# Suse 9.1 Pro doesn't put /sys in /etc/mtab +#test -z "`mount | grep sysfs`" && { +test ! -d "$sysd/block" && { + echo "$me Error: sysfs is not mounted" 1>&2 + exit 1 +} +test -z "`lsmod | grep '^aoe'`" && { + echo "$me Error: aoe module is not loaded" 1>&2 + exit 1 +} + +for d in `ls -d $sysd/block/etherd* 2>/dev/null | grep -v p` end; do + # maybe ls comes up empty, so we use "end" + test $d = end && continue + + dev=`echo "$d" | sed 's/.*!//'` + printf "$format" \ + "$dev" \ + "`cat \"$d/netif\"`" \ + "`cat \"$d/state\"`" +done | sort diff --git a/Documentation/aoe/udev-install.sh b/Documentation/aoe/udev-install.sh new file mode 100644 index 000000000000..861a27f98771 --- /dev/null +++ b/Documentation/aoe/udev-install.sh @@ -0,0 +1,26 @@ +# install the aoe-specific udev rules from udev.txt into +# the system's udev configuration +# + +me="`basename $0`" + +# find udev.conf, often /etc/udev/udev.conf +# (or environment can specify where to find udev.conf) +# +if test -z "$conf"; then + if test -r /etc/udev/udev.conf; then + conf=/etc/udev/udev.conf + else + conf="`find /etc -type f -name udev.conf 2> /dev/null`" + if test -z "$conf" || test ! -r "$conf"; then + echo "$me Error: no udev.conf found" 1>&2 + exit 1 + fi + fi +fi + +# find the directory where udev rules are stored, often +# /etc/udev/rules.d +# +rules_d="`sed -n '/^udev_rules=/{ s!udev_rules=!!; s!\"!!g; p; }' $conf`" +test "$rules_d" && sh -xc "cp `dirname $0`/udev.txt $rules_d/60-aoe.rules" diff --git a/Documentation/aoe/udev.txt b/Documentation/aoe/udev.txt new file mode 100644 index 000000000000..ab39d8bb634c --- /dev/null +++ b/Documentation/aoe/udev.txt @@ -0,0 +1,23 @@ +# These rules tell udev what device nodes to create for aoe support. +# They may be installed along the following lines (adjusted to what +# you see on your system). +# +# ecashin@makki ~$ su +# Password: +# bash# find /etc -type f -name udev.conf +# /etc/udev/udev.conf +# bash# grep udev_rules= /etc/udev/udev.conf +# udev_rules="/etc/udev/rules.d/" +# bash# ls /etc/udev/rules.d/ +# 10-wacom.rules 50-udev.rules +# bash# cp /path/to/linux-2.6.xx/Documentation/aoe/udev.txt \ +# /etc/udev/rules.d/60-aoe.rules +# + +# aoe char devices +SUBSYSTEM="aoe", KERNEL="discover", NAME="etherd/%k", GROUP="disk", MODE="0220" +SUBSYSTEM="aoe", KERNEL="err", NAME="etherd/%k", GROUP="disk", MODE="0440" +SUBSYSTEM="aoe", KERNEL="interfaces", NAME="etherd/%k", GROUP="disk", MODE="0220" + +# aoe block devices +KERNEL="etherd*", NAME="%k", GROUP="disk" diff --git a/Documentation/arm/00-INDEX b/Documentation/arm/00-INDEX new file mode 100644 index 000000000000..d753fe59a248 --- /dev/null +++ b/Documentation/arm/00-INDEX @@ -0,0 +1,20 @@ +00-INDEX + - this file +Booting + - requirements for booting +Interrupts + - ARM Interrupt subsystem documentation +Netwinder + - Netwinder specific documentation +README + - General ARM documentation +SA1100 + - SA1100 documentation +XScale + - XScale documentation +empeg + - Empeg documentation +mem_alignment + - alignment abort handler documentation +nwfpe + - NWFPE floating point emulator documentation diff --git a/Documentation/arm/Booting b/Documentation/arm/Booting new file mode 100644 index 000000000000..fad566bb02fc --- /dev/null +++ b/Documentation/arm/Booting @@ -0,0 +1,141 @@ + Booting ARM Linux + ================= + +Author: Russell King +Date : 18 May 2002 + +The following documentation is relevant to 2.4.18-rmk6 and beyond. + +In order to boot ARM Linux, you require a boot loader, which is a small +program that runs before the main kernel. The boot loader is expected +to initialise various devices, and eventually call the Linux kernel, +passing information to the kernel. + +Essentially, the boot loader should provide (as a minimum) the +following: + +1. Setup and initialise the RAM. +2. Initialise one serial port. +3. Detect the machine type. +4. Setup the kernel tagged list. +5. Call the kernel image. + + +1. Setup and initialise RAM +--------------------------- + +Existing boot loaders: MANDATORY +New boot loaders: MANDATORY + +The boot loader is expected to find and initialise all RAM that the +kernel will use for volatile data storage in the system. It performs +this in a machine dependent manner. (It may use internal algorithms +to automatically locate and size all RAM, or it may use knowledge of +the RAM in the machine, or any other method the boot loader designer +sees fit.) + + +2. Initialise one serial port +----------------------------- + +Existing boot loaders: OPTIONAL, RECOMMENDED +New boot loaders: OPTIONAL, RECOMMENDED + +The boot loader should initialise and enable one serial port on the +target. This allows the kernel serial driver to automatically detect +which serial port it should use for the kernel console (generally +used for debugging purposes, or communication with the target.) + +As an alternative, the boot loader can pass the relevant 'console=' +option to the kernel via the tagged lists specifying the port, and +serial format options as described in + + Documentation/kernel-parameters.txt. + + +3. Detect the machine type +-------------------------- + +Existing boot loaders: OPTIONAL +New boot loaders: MANDATORY + +The boot loader should detect the machine type its running on by some +method. Whether this is a hard coded value or some algorithm that +looks at the connected hardware is beyond the scope of this document. +The boot loader must ultimately be able to provide a MACH_TYPE_xxx +value to the kernel. (see linux/arch/arm/tools/mach-types). + + +4. Setup the kernel tagged list +------------------------------- + +Existing boot loaders: OPTIONAL, HIGHLY RECOMMENDED +New boot loaders: MANDATORY + +The boot loader must create and initialise the kernel tagged list. +A valid tagged list starts with ATAG_CORE and ends with ATAG_NONE. +The ATAG_CORE tag may or may not be empty. An empty ATAG_CORE tag +has the size field set to '2' (0x00000002). The ATAG_NONE must set +the size field to zero. + +Any number of tags can be placed in the list. It is undefined +whether a repeated tag appends to the information carried by the +previous tag, or whether it replaces the information in its +entirety; some tags behave as the former, others the latter. + +The boot loader must pass at a minimum the size and location of +the system memory, and root filesystem location. Therefore, the +minimum tagged list should look: + + +-----------+ +base -> | ATAG_CORE | | + +-----------+ | + | ATAG_MEM | | increasing address + +-----------+ | + | ATAG_NONE | | + +-----------+ v + +The tagged list should be stored in system RAM. + +The tagged list must be placed in a region of memory where neither +the kernel decompressor nor initrd 'bootp' program will overwrite +it. The recommended placement is in the first 16KiB of RAM. + +5. Calling the kernel image +--------------------------- + +Existing boot loaders: MANDATORY +New boot loaders: MANDATORY + +There are two options for calling the kernel zImage. If the zImage +is stored in flash, and is linked correctly to be run from flash, +then it is legal for the boot loader to call the zImage in flash +directly. + +The zImage may also be placed in system RAM (at any location) and +called there. Note that the kernel uses 16K of RAM below the image +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. + r2 = physical address of tagged list in system RAM. + +- CPU mode + All forms of interrupts must be disabled (IRQs and FIQs) + The CPU must be in SVC mode. (A special exception exists for Angel) + +- Caches, MMUs + The MMU must be off. + Instruction cache may be on or off. + Data cache must be off. + +- The boot loader is expected to call the kernel image by jumping + directly to the first instruction of the kernel image. + diff --git a/Documentation/arm/IXP2000 b/Documentation/arm/IXP2000 new file mode 100644 index 000000000000..e0148b6b2c40 --- /dev/null +++ b/Documentation/arm/IXP2000 @@ -0,0 +1,69 @@ + +------------------------------------------------------------------------- +Release Notes for Linux on Intel's IXP2000 Network Processor + +Maintained by Deepak Saxena +------------------------------------------------------------------------- + +1. Overview + +Intel's IXP2000 family of NPUs (IXP2400, IXP2800, IXP2850) is designed +for high-performance network applications such high-availability +telecom systems. In addition to an XScale core, it contains up to 8 +"MicroEngines" that run special code, several high-end networking +interfaces (UTOPIA, SPI, etc), a PCI host bridge, one serial port, +flash interface, and some other odds and ends. For more information, see: + +http://developer.intel.com/design/network/products/npfamily/ixp2xxx.htm + +2. Linux Support + +Linux currently supports the following features on the IXP2000 NPUs: + +- On-chip serial +- PCI +- Flash (MTD/JFFS2) +- I2C through GPIO +- Timers (watchdog, OS) + +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 + +WHATEVER YOU DO, DO NOT POST EMAIL TO THE LINUX-ARM OR LINUX-ARM-KERNEL +MAILING LISTS REGARDING THE INTEL SDK. + +3. Supported Platforms + +- Intel IXDP2400 Reference Platform +- Intel IXDP2800 Reference Platform +- Intel IXDP2401 Reference Platform +- Intel IXDP2801 Reference Platform +- RadiSys ENP-2611 + +4. Usage Notes + +- The IXP2000 platforms usually 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 + 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 + to pass the clock rate to the board port. + +5. Thanks + +The IXP2000 work has been funded by Intel Corp. and MontaVista Software, Inc. + +The following people have contributed patches/comments/etc: + +Naeem F. Afzal +Lennert Buytenhek +Jeffrey Daly + +------------------------------------------------------------------------- +Last Update: 8/09/2004 diff --git a/Documentation/arm/IXP4xx b/Documentation/arm/IXP4xx new file mode 100644 index 000000000000..d4c6d3aa0c25 --- /dev/null +++ b/Documentation/arm/IXP4xx @@ -0,0 +1,174 @@ + +------------------------------------------------------------------------- +Release Notes for Linux on Intel's IXP4xx Network Processor + +Maintained by Deepak Saxena +------------------------------------------------------------------------- + +1. Overview + +Intel's IXP4xx network processor is a highly integrated SOC that +is targeted for network applications, though it has become popular +in industrial control and other areas due to low cost and power +consumption. The IXP4xx family currently consists of several processors +that support different network offload functions such as encryption, +routing, firewalling, etc. The IXP46x family is an updated version which +supports faster speeds, new memory and flash configurations, and more +integration such as an on-chip I2C controller. + +For more information on the various versions of the CPU, see: + + http://developer.intel.com/design/network/products/npfamily/ixp4xx.htm + +Intel also made the IXCP1100 CPU for sometime which is an IXP4xx +stripped of much of the network intelligence. + +2. Linux Support + +Linux currently supports the following features on the IXP4xx chips: + +- Dual serial ports +- PCI interface +- Flash access (MTD/JFFS) +- I2C through GPIO on IXP42x +- GPIO for input/output/interrupts + See include/asm-arm/arch-ixp4xx/platform.h for access functions. +- Timers (watchdog, OS) + +The following components of the chips are not supported by Linux and +require the use of Intel's propietary CSR softare: + +- USB device interface +- Network interfaces (HSS, Utopia, NPEs, etc) +- Network offload functionality + +If you need to use any of the above, you need to download Intel's +software from: + + http://developer.intel.com/design/network/products/npfamily/ixp425swr1.htm + +DO NOT POST QUESTIONS TO THE LINUX MAILING LISTS REGARDING THE PROPIETARY +SOFTWARE. + +There are several websites that provide directions/pointers on using +Intel's software: + +http://ixp4xx-osdg.sourceforge.net/ + Open Source Developer's Guide for using uClinux and the Intel libraries + +http://gatewaymaker.sourceforge.net/ + Simple one page summary of building a gateway using an IXP425 and Linux + +http://ixp425.sourceforge.net/ + ATM device driver for IXP425 that relies on Intel's libraries + +3. Known Issues/Limitations + +3a. Limited inbound PCI window + +The IXP4xx family allows for up to 256MB of memory but the PCI interface +can only expose 64MB of that memory to the PCI bus. This means that if +you are running with > 64MB, all PCI buffers outside of the accessible +range will be bounced using the routines in arch/arm/common/dmabounce.c. + +3b. Limited outbound PCI window + +IXP4xx provides two methods of accessing PCI memory space: + +1) A direct mapped window from 0x48000000 to 0x4bffffff (64MB). + To access PCI via this space, we simply ioremap() the BAR + into the kernel and we can use the standard read[bwl]/write[bwl] + macros. This is the preffered method due to speed but it + limits the system to just 64MB of PCI memory. This can be + problamatic if using video cards and other memory-heavy devices. + +2) If > 64MB of memory space is required, the IXP4xx can be + configured to use indirect registers to access PCI This allows + for up to 128MB (0x48000000 to 0x4fffffff) of memory on the bus. + The disadvantadge of this is that every PCI access requires + three local register accesses plus a spinlock, but in some + cases the performance hit is acceptable. In addition, you cannot + mmap() PCI devices in this case due to the indirect nature + of the PCI window. + +By default, the direct method is used for performance reasons. If +you need more PCI memory, enable the IXP4XX_INDIRECT_PCI config option. + +3c. GPIO as Interrupts + +Currently the code only handles level-sensitive GPIO interrupts + +4. Supported platforms + +ADI Engineering Coyote Gateway Reference Platform +http://www.adiengineering.com/productsCoyote.html + + The ADI Coyote platform is reference design for those building + small residential/office gateways. One NPE is connected to a 10/100 + interface, one to 4-port 10/100 switch, and the third to and ADSL + interface. In addition, it also supports to POTs interfaces connected + via SLICs. Note that those are not supported by Linux ATM. Finally, + the platform has two mini-PCI slots used for 802.11[bga] cards. + Finally, there is an IDE port hanging off the expansion bus. + +Gateworks Avila Network Platform +http://www.gateworks.com/avila_sbc.htm + + The Avila platform is basically and IXDP425 with the 4 PCI slots + replaced with mini-PCI slots and a CF IDE interface hanging off + the expansion bus. + +Intel IXDP425 Development Platform +http://developer.intel.com/design/network/products/npfamily/ixdp425.htm + + This is Intel's standard reference platform for the IXDP425 and is + also known as the Richfield board. It contains 4 PCI slots, 16MB + of flash, two 10/100 ports and one ADSL port. + +Intel IXDP465 Development Platform +http://developer.intel.com/design/network/products/npfamily/ixdp465.htm + + This is basically an IXDP425 with an IXP465 and 32M of flash instead + of just 16. + +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 + + The PrPMC1100 is based on the IXCP1100 and is meant to plug into + and IXP2400/2800 system to act as the system controller. It simply + contains a CPU and 16MB of flash on the board and needs to be + plugged into a carrier board to function. Currently Linux only + supports the Motorola PrPMC carrier board for this platform. + See https://mcg.motorola.com/us/ds/pdf/ds0144.pdf for info + on the carrier board. + +5. TODO LIST + +- Add support for Coyote IDE +- Add support for edge-based GPIO interrupts +- Add support for CF IDE on expansion bus + +6. Thanks + +The IXP4xx work has been funded by Intel Corp. and MontaVista Software, Inc. + +The following people have contributed patches/comments/etc: + +Lennerty Buytenhek +Lutz Jaenicke +Justin Mayfield +Robert E. Ranslam +[I know I've forgotten others, please email me to be added] + +------------------------------------------------------------------------- + +Last Update: 01/04/2005 diff --git a/Documentation/arm/Interrupts b/Documentation/arm/Interrupts new file mode 100644 index 000000000000..72c93de8cd4e --- /dev/null +++ b/Documentation/arm/Interrupts @@ -0,0 +1,173 @@ +2.5.2-rmk5 +---------- + +This is the first kernel that contains a major shake up of some of the +major architecture-specific subsystems. + +Firstly, it contains some pretty major changes to the way we handle the +MMU TLB. Each MMU TLB variant is now handled completely separately - +we have TLB v3, TLB v4 (without write buffer), TLB v4 (with write buffer), +and finally TLB v4 (with write buffer, with I TLB invalidate entry). +There is more assembly code inside each of these functions, mainly to +allow more flexible TLB handling for the future. + +Secondly, the IRQ subsystem. + +The 2.5 kernels will be having major changes to the way IRQs are handled. +Unfortunately, this means that machine types that touch the irq_desc[] +array (basically all machine types) will break, and this means every +machine type that we currently have. + +Lets take an example. On the Assabet with Neponset, we have: + + GPIO25 IRR:2 + SA1100 ------------> Neponset -----------> SA1111 + IIR:1 + -----------> USAR + IIR:0 + -----------> SMC9196 + +The way stuff currently works, all SA1111 interrupts are mutually +exclusive of each other - if you're processing one interrupt from the +SA1111 and another comes in, you have to wait for that interrupt to +finish processing before you can service the new interrupt. Eg, an +IDE PIO-based interrupt on the SA1111 excludes all other SA1111 and +SMC9196 interrupts until it has finished transferring its multi-sector +data, which can be a long time. Note also that since we loop in the +SA1111 IRQ handler, SA1111 IRQs can hold off SMC9196 IRQs indefinitely. + + +The new approach brings several new ideas... + +We introduce the concept of a "parent" and a "child". For example, +to the Neponset handler, the "parent" is GPIO25, and the "children"d +are SA1111, SMC9196 and USAR. + +We also bring the idea of an IRQ "chip" (mainly to reduce the size of +the irqdesc array). This doesn't have to be a real "IC"; indeed the +SA11x0 IRQs are handled by two separate "chip" structures, one for +GPIO0-10, and another for all the rest. It is just a container for +the various operations (maybe this'll change to a better name). +This structure has the following operations: + +struct irqchip { + /* + * Acknowledge the IRQ. + * If this is a level-based IRQ, then it is expected to mask the IRQ + * as well. + */ + void (*ack)(unsigned int irq); + /* + * Mask the IRQ in hardware. + */ + void (*mask)(unsigned int irq); + /* + * Unmask the IRQ in hardware. + */ + void (*unmask)(unsigned int irq); + /* + * Re-run the IRQ + */ + void (*rerun)(unsigned int irq); + /* + * Set the type of the IRQ. + */ + int (*type)(unsigned int irq, unsigned int, type); +}; + +ack - required. May be the same function as mask for IRQs + handled by do_level_IRQ. +mask - required. +unmask - required. +rerun - optional. Not required if you're using do_level_IRQ for all + IRQs that use this 'irqchip'. Generally expected to re-trigger + the hardware IRQ if possible. If not, may call the handler + directly. +type - optional. If you don't support changing the type of an IRQ, + it should be null so people can detect if they are unable to + set the IRQ type. + +For each IRQ, we keep the following information: + + - "disable" depth (number of disable_irq()s without enable_irq()s) + - flags indicating what we can do with this IRQ (valid, probe, + noautounmask) as before + - status of the IRQ (probing, enable, etc) + - chip + - per-IRQ handler + - irqaction structure list + +The handler can be one of the 3 standard handlers - "level", "edge" and +"simple", or your own specific handler if you need to do something special. + +The "level" handler is what we currently have - its pretty simple. +"edge" knows about the brokenness of such IRQ implementations - that you +need to leave the hardware IRQ enabled while processing it, and queueing +further IRQ events should the IRQ happen again while processing. The +"simple" handler is very basic, and does not perform any hardware +manipulation, nor state tracking. This is useful for things like the +SMC9196 and USAR above. + +So, what's changed? + +1. Machine implementations must not write to the irqdesc array. + +2. New functions to manipulate the irqdesc array. The first 4 are expected + to be useful only to machine specific code. The last is recommended to + only be used by machine specific code, but may be used in drivers if + absolutely necessary. + + set_irq_chip(irq,chip) + + Set the mask/unmask methods for handling this IRQ + + set_irq_handler(irq,handler) + + Set the handler for this IRQ (level, edge, simple) + + set_irq_chained_handler(irq,handler) + + Set a "chained" handler for this IRQ - automatically + enables this IRQ (eg, Neponset and SA1111 handlers). + + set_irq_flags(irq,flags) + + Set the valid/probe/noautoenable flags. + + set_irq_type(irq,type) + + Set active the IRQ edge(s)/level. This replaces the + SA1111 INTPOL manipulation, and the set_GPIO_IRQ_edge() + function. Type should be one of the following: + + #define IRQT_NOEDGE (0) + #define IRQT_RISING (__IRQT_RISEDGE) + #define IRQT_FALLING (__IRQT_FALEDGE) + #define IRQT_BOTHEDGE (__IRQT_RISEDGE|__IRQT_FALEDGE) + #define IRQT_LOW (__IRQT_LOWLVL) + #define IRQT_HIGH (__IRQT_HIGHLVL) + +3. set_GPIO_IRQ_edge() is obsolete, and should be replaced by set_irq_type. + +4. Direct access to SA1111 INTPOL is depreciated. Use set_irq_type instead. + +5. A handler is expected to perform any necessary acknowledgement of the + parent IRQ via the correct chip specific function. For instance, if + the SA1111 is directly connected to a SA1110 GPIO, then you should + acknowledge the SA1110 IRQ each time you re-read the SA1111 IRQ status. + +6. For any child which doesn't have its own IRQ enable/disable controls + (eg, SMC9196), the handler must mask or acknowledge the parent IRQ + while the child handler is called, and the child handler should be the + "simple" handler (not "edge" nor "level"). After the handler completes, + the parent IRQ should be unmasked, and the status of all children must + be re-checked for pending events. (see the Neponset IRQ handler for + details). + +7. fixup_irq() is gone, as is include/asm-arm/arch-*/irq.h + +Please note that this will not solve all problems - some of them are +hardware based. Mixing level-based and edge-based IRQs on the same +parent signal (eg neponset) is one such area where a software based +solution can't provide the full answer to low IRQ latency. + diff --git a/Documentation/arm/Netwinder b/Documentation/arm/Netwinder new file mode 100644 index 000000000000..f1b457fbd3de --- /dev/null +++ b/Documentation/arm/Netwinder @@ -0,0 +1,78 @@ +NetWinder specific documentation +================================ + +The NetWinder is a small low-power computer, primarily designed +to run Linux. It is based around the StrongARM RISC processor, +DC21285 PCI bridge, with PC-type hardware glued around it. + +Port usage +========== + +Min - Max Description +--------------------------- +0x0000 - 0x000f DMA1 +0x0020 - 0x0021 PIC1 +0x0060 - 0x006f Keyboard +0x0070 - 0x007f RTC +0x0080 - 0x0087 DMA1 +0x0088 - 0x008f DMA2 +0x00a0 - 0x00a3 PIC2 +0x00c0 - 0x00df DMA2 +0x0180 - 0x0187 IRDA +0x01f0 - 0x01f6 ide0 +0x0201 Game port +0x0203 RWA010 configuration read +0x0220 - ? SoundBlaster +0x0250 - ? WaveArtist +0x0279 RWA010 configuration index +0x02f8 - 0x02ff Serial ttyS1 +0x0300 - 0x031f Ether10 +0x0338 GPIO1 +0x033a GPIO2 +0x0370 - 0x0371 W83977F configuration registers +0x0388 - ? AdLib +0x03c0 - 0x03df VGA +0x03f6 ide0 +0x03f8 - 0x03ff Serial ttyS0 +0x0400 - 0x0408 DC21143 +0x0480 - 0x0487 DMA1 +0x0488 - 0x048f DMA2 +0x0a79 RWA010 configuration write +0xe800 - 0xe80f ide0/ide1 BM DMA + + +Interrupt usage +=============== + +IRQ type Description +--------------------------- + 0 ISA 100Hz timer + 1 ISA Keyboard + 2 ISA cascade + 3 ISA Serial ttyS1 + 4 ISA Serial ttyS0 + 5 ISA PS/2 mouse + 6 ISA IRDA + 7 ISA Printer + 8 ISA RTC alarm + 9 ISA +10 ISA GP10 (Orange reset button) +11 ISA +12 ISA WaveArtist +13 ISA +14 ISA hda1 +15 ISA + +DMA usage +========= + +DMA type Description +--------------------------- + 0 ISA IRDA + 1 ISA + 2 ISA cascade + 3 ISA WaveArtist + 4 ISA + 5 ISA + 6 ISA + 7 ISA WaveArtist diff --git a/Documentation/arm/Porting b/Documentation/arm/Porting new file mode 100644 index 000000000000..a492233931b9 --- /dev/null +++ b/Documentation/arm/Porting @@ -0,0 +1,135 @@ +Taken from list archive at http://lists.arm.linux.org.uk/pipermail/linux-arm-kernel/2001-July/004064.html + +Initial definitions +------------------- + +The following symbol definitions rely on you knowing the translation that +__virt_to_phys() does for your machine. This macro converts the passed +virtual address to a physical address. Normally, it is simply: + + phys = virt - PAGE_OFFSET + PHYS_OFFSET + + +Decompressor Symbols +-------------------- + +ZTEXTADDR + Start address of decompressor. There's no point in talking about + virtual or physical addresses here, since the MMU will be off at + the time when you call the decompressor code. You normally call + the kernel at this address to start it booting. This doesn't have + to be located in RAM, it can be in flash or other read-only or + read-write addressable medium. + +ZBSSADDR + Start address of zero-initialised work area for the decompressor. + This must be pointing at RAM. The decompressor will zero initialise + this for you. Again, the MMU will be off. + +ZRELADDR + This is the address where the decompressed kernel will be written, + and eventually executed. The following constraint must be valid: + + __virt_to_phys(TEXTADDR) == ZRELADDR + + The initial part of the kernel is carefully coded to be position + independent. + +INITRD_PHYS + Physical address to place the initial RAM disk. Only relevant if + you are using the bootpImage stuff (which only works on the old + struct param_struct). + +INITRD_VIRT + Virtual address of the initial RAM disk. The following constraint + must be valid: + + __virt_to_phys(INITRD_VIRT) == INITRD_PHYS + +PARAMS_PHYS + Physical address of the struct param_struct or tag list, giving the + kernel various parameters about its execution environment. + + +Kernel Symbols +-------------- + +PHYS_OFFSET + Physical start address of the first bank of RAM. + +PAGE_OFFSET + Virtual start address of the first bank of RAM. During the kernel + boot phase, virtual address PAGE_OFFSET will be mapped to physical + address PHYS_OFFSET, along with any other mappings you supply. + This should be the same value as TASK_SIZE. + +TASK_SIZE + The maximum size of a user process in bytes. Since user space + always starts at zero, this is the maximum address that a user + process can access+1. The user space stack grows down from this + address. + + Any virtual address below TASK_SIZE is deemed to be user process + area, and therefore managed dynamically on a process by process + basis by the kernel. I'll call this the user segment. + + Anything above TASK_SIZE is common to all processes. I'll call + this the kernel segment. + + (In other words, you can't put IO mappings below TASK_SIZE, and + hence PAGE_OFFSET). + +TEXTADDR + Virtual start address of kernel, normally PAGE_OFFSET + 0x8000. + This is where the kernel image ends up. With the latest kernels, + it must be located at 32768 bytes into a 128MB region. Previous + kernels placed a restriction of 256MB here. + +DATAADDR + Virtual address for the kernel data segment. Must not be defined + when using the decompressor. + +VMALLOC_START +VMALLOC_END + Virtual addresses bounding the vmalloc() area. There must not be + any static mappings in this area; vmalloc will overwrite them. + The addresses must also be in the kernel segment (see above). + Normally, the vmalloc() area starts VMALLOC_OFFSET bytes above the + last virtual RAM address (found using variable high_memory). + +VMALLOC_OFFSET + Offset normally incorporated into VMALLOC_START to provide a hole + between virtual RAM and the vmalloc area. We do this to allow + out of bounds memory accesses (eg, something writing off the end + of the mapped memory map) to be caught. Normally set to 8MB. + +Architecture Specific Macros +---------------------------- + +BOOT_MEM(pram,pio,vio) + `pram' specifies the physical start address of RAM. Must always + be present, and should be the same as PHYS_OFFSET. + + `pio' is the physical address of an 8MB region containing IO for + use with the debugging macros in arch/arm/kernel/debug-armv.S. + + `vio' is the virtual address of the 8MB debugging region. + + It is expected that the debugging region will be re-initialised + by the architecture specific code later in the code (via the + MAPIO function). + +BOOT_PARAMS + Same as, and see PARAMS_PHYS. + +FIXUP(func) + Machine specific fixups, run before memory subsystems have been + initialised. + +MAPIO(func) + Machine specific function to map IO areas (including the debug + region above). + +INITIRQ(func) + Machine specific function to initialise interrupts. + diff --git a/Documentation/arm/README b/Documentation/arm/README new file mode 100644 index 000000000000..a6f718e90a86 --- /dev/null +++ b/Documentation/arm/README @@ -0,0 +1,198 @@ + ARM Linux 2.6 + ============= + + Please check for + updates. + +Compilation of kernel +--------------------- + + In order to compile ARM Linux, you will need a compiler capable of + generating ARM ELF code with GNU extensions. GCC 2.95.1, EGCS + 1.1.2, and GCC 3.3 are known to be good compilers. Fortunately, you + needn't guess. The kernel will report an error if your compiler is + a recognized offender. + + To build ARM Linux natively, you shouldn't have to alter the ARCH = line + in the top level Makefile. However, if you don't have the ARM Linux ELF + tools installed as default, then you should change the CROSS_COMPILE + line as detailed below. + + If you wish to cross-compile, then alter the following lines in the top + level make file: + + ARCH = + with + ARCH = arm + + and + + CROSS_COMPILE= + to + CROSS_COMPILE= + eg. + CROSS_COMPILE=arm-linux- + + Do a 'make config', followed by 'make Image' to build the kernel + (arch/arm/boot/Image). A compressed image can be built by doing a + 'make zImage' instead of 'make Image'. + + +Bug reports etc +--------------- + + Please send patches to the patch system. For more information, see + http://www.arm.linux.org.uk/patches/info.html Always include some + explanation as to what the patch does and why it is needed. + + Bug reports should be sent to linux-arm-kernel@lists.arm.linux.org.uk, + or submitted through the web form at + http://www.arm.linux.org.uk/forms/solution.shtml + + When sending bug reports, please ensure that they contain all relevant + information, eg. the kernel messages that were printed before/during + the problem, what you were doing, etc. + + +Include files +------------- + + Several new include directories have been created under include/asm-arm, + which are there to reduce the clutter in the top-level directory. These + directories, and their purpose is listed below: + + arch-* machine/platform specific header files + hardware driver-internal ARM specific data structures/definitions + mach descriptions of generic ARM to specific machine interfaces + proc-* processor dependent header files (currently only two + categories) + + +Machine/Platform support +------------------------ + + The ARM tree contains support for a lot of different machine types. To + continue supporting these differences, it has become necessary to split + machine-specific parts by directory. For this, the machine category is + used to select which directories and files get included (we will use + $(MACHINE) to refer to the category) + + To this end, we now have arch/arm/mach-$(MACHINE) directories which are + designed to house the non-driver files for a particular machine (eg, PCI, + memory management, architecture definitions etc). For all future + machines, there should be a corresponding include/asm-arm/arch-$(MACHINE) + directory. + + +Modules +------- + + Although modularisation is supported (and required for the FP emulator), + each module on an ARM2/ARM250/ARM3 machine when is loaded will take + memory up to the next 32k boundary due to the size of the pages. + Therefore, modularisation on these machines really worth it? + + However, ARM6 and up machines allow modules to take multiples of 4k, and + as such Acorn RiscPCs and other architectures using these processors can + make good use of modularisation. + + +ADFS Image files +---------------- + + You can access image files on your ADFS partitions by mounting the ADFS + partition, and then using the loopback device driver. You must have + losetup installed. + + Please note that the PCEmulator DOS partitions have a partition table at + the start, and as such, you will have to give '-o offset' to losetup. + + +Request to developers +--------------------- + + When writing device drivers which include a separate assembler file, please + include it in with the C file, and not the arch/arm/lib directory. This + allows the driver to be compiled as a loadable module without requiring + half the code to be compiled into the kernel image. + + In general, try to avoid using assembler unless it is really necessary. It + makes drivers far less easy to port to other hardware. + + +ST506 hard drives +----------------- + + The ST506 hard drive controllers seem to be working fine (if a little + slowly). At the moment they will only work off the controllers on an + A4x0's motherboard, but for it to work off a Podule just requires + someone with a podule to add the addresses for the IRQ mask and the + HDC base to the source. + + As of 31/3/96 it works with two drives (you should get the ADFS + *configure harddrive set to 2). I've got an internal 20MB and a great + big external 5.25" FH 64MB drive (who could ever want more :-) ). + + I've just got 240K/s off it (a dd with bs=128k); thats about half of what + RiscOS gets; but it's a heck of a lot better than the 50K/s I was getting + last week :-) + + Known bug: Drive data errors can cause a hang; including cases where + the controller has fixed the error using ECC. (Possibly ONLY + in that case...hmm). + + +1772 Floppy +----------- + This also seems to work OK, but hasn't been stressed much lately. It + hasn't got any code for disc change detection in there at the moment which + could be a bit of a problem! Suggestions on the correct way to do this + are welcome. + + +CONFIG_MACH_ and CONFIG_ARCH_ +----------------------------- + A change was made in 2003 to the macro names for new machines. + Historically, CONFIG_ARCH_ was used for the bonafide architecture, + e.g. SA1100, as well as implementations of the architecture, + e.g. Assabet. It was decided to change the implementation macros + to read CONFIG_MACH_ for clarity. Moreover, a retroactive fixup has + not been made because it would complicate patching. + + Previous registrations may be found online. + + + +Kernel entry (head.S) +-------------------------- + The initial entry into the kernel is via head.S, which uses machine + independent code. The machine is selected by the value of 'r1' on + entry, which must be kept unique. + + Due to the large number of machines which the ARM port of Linux provides + for, we have a method to manage this which ensures that we don't end up + duplicating large amounts of code. + + We group machine (or platform) support code into machine classes. A + class typically based around one or more system on a chip devices, and + acts as a natural container around the actual implementations. These + classes are given directories - arch/arm/mach- and + include/asm-arm/arch- - which contain the source files to + support the machine class. This directories also contain any machine + specific supporting code. + + For example, the SA1100 class is based upon the SA1100 and SA1110 SoC + devices, and contains the code to support the way the on-board and off- + board devices are used, or the device is setup, and provides that + machine specific "personality." + + This fine-grained machine specific selection is controlled by the machine + type ID, which acts both as a run-time and a compile-time code selection + method. + + You can register a new machine via the web site at: + + + +--- +Russell King (15/03/2004) diff --git a/Documentation/arm/SA1100/ADSBitsy b/Documentation/arm/SA1100/ADSBitsy new file mode 100644 index 000000000000..ab47c3833908 --- /dev/null +++ b/Documentation/arm/SA1100/ADSBitsy @@ -0,0 +1,43 @@ +ADS Bitsy Single Board Computer +(It is different from Bitsy(iPAQ) of Compaq) + +For more details, contact Applied Data Systems or see +http://www.applieddata.net/products.html + +The Linux support for this product has been provided by +Woojung Huh + +Use 'make adsbitsy_config' before any 'make config'. +This will set up defaults for ADS Bitsy support. + +The kernel zImage is linked to be loaded and executed at 0xc0400000. + +Linux can be used with the ADS BootLoader that ships with the +newer rev boards. See their documentation on how to load Linux. + +Supported peripherals: +- SA1100 LCD frame buffer (8/16bpp...sort of) +- SA1111 USB Master +- SA1100 serial port +- pcmcia, compact flash +- touchscreen(ucb1200) +- console on LCD screen +- serial ports (ttyS[0-2]) + - ttyS0 is default for serial console + +To do: +- everything else! :-) + +Notes: + +- The flash on board is divided into 3 partitions. + You should be careful to use flash on board. + It's partition is different from GraphicsClient Plus and GraphicsMaster + +- 16bpp mode requires a different cable than what ships with the board. + Contact ADS or look through the manual to wire your own. Currently, + if you compile with 16bit mode support and switch into a lower bpp + mode, the timing is off so the image is corrupted. This will be + fixed soon. + +Any contribution can be sent to nico@cam.org and will be greatly welcome! diff --git a/Documentation/arm/SA1100/Assabet b/Documentation/arm/SA1100/Assabet new file mode 100644 index 000000000000..cbbe5587c78d --- /dev/null +++ b/Documentation/arm/SA1100/Assabet @@ -0,0 +1,301 @@ +The Intel Assabet (SA-1110 evaluation) board +============================================ + +Please see: +http://developer.intel.com/design/strong/quicklist/eval-plat/sa-1110.htm +http://developer.intel.com/design/strong/guides/278278.htm + +Also some notes from John G Dorsey : +http://www.cs.cmu.edu/~wearable/software/assabet.html + + +Building the kernel +------------------- + +To build the kernel with current defaults: + + make assabet_config + make oldconfig + make zImage + +The resulting kernel image should be available in linux/arch/arm/boot/zImage. + + +Installing a bootloader +----------------------- + +A couple of bootloaders able to boot Linux on Assabet are available: + +BLOB (http://www.lart.tudelft.nl/lartware/blob/) + + BLOB is a bootloader used within the LART project. Some contributed + patches were merged into BLOB to add support for Assabet. + +Compaq's Bootldr + John Dorsey's patch for Assabet support +(http://www.handhelds.org/Compaq/bootldr.html) +(http://www.wearablegroup.org/software/bootldr/) + + Bootldr is the bootloader developed by Compaq for the iPAQ Pocket PC. + John Dorsey has produced add-on patches to add support for Assabet and + the JFFS filesystem. + +RedBoot (http://sources.redhat.com/redboot/) + + RedBoot is a bootloader developed by Red Hat based on the eCos RTOS + hardware abstraction layer. It supports Assabet amongst many other + hardware platforms. + +RedBoot is currently the recommended choice since it's the only one to have +networking support, and is the most actively maintained. + +Brief examples on how to boot Linux with RedBoot are shown below. But first +you need to have RedBoot installed in your flash memory. A known to work +precompiled RedBoot binary is available from the following location: + +ftp://ftp.netwinder.org/users/n/nico/ +ftp://ftp.arm.linux.org.uk/pub/linux/arm/people/nico/ +ftp://ftp.handhelds.org/pub/linux/arm/sa-1100-patches/ + +Look for redboot-assabet*.tgz. Some installation infos are provided in +redboot-assabet*.txt. + + +Initial RedBoot configuration +----------------------------- + +The commands used here are explained in The RedBoot User's Guide available +on-line at http://sources.redhat.com/ecos/docs-latest/redboot/redboot.html. +Please refer to it for explanations. + +If you have a CF network card (my Assabet kit contained a CF+ LP-E from +Socket Communications Inc.), you should strongly consider using it for TFTP +file transfers. You must insert it before RedBoot runs since it can't detect +it dynamically. + +To initialize the flash directory: + + fis init -f + +To initialize the non-volatile settings, like whether you want to use BOOTP or +a static IP address, etc, use this command: + + fconfig -i + + +Writing a kernel image into flash +--------------------------------- + +First, the kernel image must be loaded into RAM. If you have the zImage file +available on a TFTP server: + + load zImage -r -b 0x100000 + +If you rather want to use Y-Modem upload over the serial port: + + load -m ymodem -r -b 0x100000 + +To write it to flash: + + fis create "Linux kernel" -b 0x100000 -l 0xc0000 + + +Booting the kernel +------------------ + +The kernel still requires a filesystem to boot. A ramdisk image can be loaded +as follows: + + load ramdisk_image.gz -r -b 0x800000 + +Again, Y-Modem upload can be used instead of TFTP by replacing the file name +by '-y ymodem'. + +Now the kernel can be retrieved from flash like this: + + fis load "Linux kernel" + +or loaded as described previously. To boot the kernel: + + exec -b 0x100000 -l 0xc0000 + +The ramdisk image could be stored into flash as well, but there are better +solutions for on-flash filesystems as mentioned below. + + +Using JFFS2 +----------- + +Using JFFS2 (the Second Journalling Flash File System) is probably the most +convenient way to store a writable filesystem into flash. JFFS2 is used in +conjunction with the MTD layer which is responsible for low-level flash +management. More information on the Linux MTD can be found on-line at: +http://www.linux-mtd.infradead.org/. A JFFS howto with some infos about +creating JFFS/JFFS2 images is available from the same site. + +For instance, a sample JFFS2 image can be retrieved from the same FTP sites +mentioned below for the precompiled RedBoot image. + +To load this file: + + load sample_img.jffs2 -r -b 0x100000 + +The result should look like: + +RedBoot> load sample_img.jffs2 -r -b 0x100000 +Raw file loaded 0x00100000-0x00377424 + +Now we must know the size of the unallocated flash: + + fis free + +Result: + +RedBoot> fis free + 0x500E0000 .. 0x503C0000 + +The values above may be different depending on the size of the filesystem and +the type of flash. See their usage below as an example and take care of +substituting yours appropriately. + +We must determine some values: + +size of unallocated flash: 0x503c0000 - 0x500e0000 = 0x2e0000 +size of the filesystem image: 0x00377424 - 0x00100000 = 0x277424 + +We want to fit the filesystem image of course, but we also want to give it all +the remaining flash space as well. To write it: + + fis unlock -f 0x500E0000 -l 0x2e0000 + fis erase -f 0x500E0000 -l 0x2e0000 + fis write -b 0x100000 -l 0x277424 -f 0x500E0000 + fis create "JFFS2" -n -f 0x500E0000 -l 0x2e0000 + +Now the filesystem is associated to a MTD "partition" once Linux has discovered +what they are in the boot process. From Redboot, the 'fis list' command +displays them: + +RedBoot> fis list +Name FLASH addr Mem addr Length Entry point +RedBoot 0x50000000 0x50000000 0x00020000 0x00000000 +RedBoot config 0x503C0000 0x503C0000 0x00020000 0x00000000 +FIS directory 0x503E0000 0x503E0000 0x00020000 0x00000000 +Linux kernel 0x50020000 0x00100000 0x000C0000 0x00000000 +JFFS2 0x500E0000 0x500E0000 0x002E0000 0x00000000 + +However Linux should display something like: + +SA1100 flash: probing 32-bit flash bus +SA1100 flash: Found 2 x16 devices at 0x0 in 32-bit mode +Using RedBoot partition definition +Creating 5 MTD partitions on "SA1100 flash": +0x00000000-0x00020000 : "RedBoot" +0x00020000-0x000e0000 : "Linux kernel" +0x000e0000-0x003c0000 : "JFFS2" +0x003c0000-0x003e0000 : "RedBoot config" +0x003e0000-0x00400000 : "FIS directory" + +What's important here is the position of the partition we are interested in, +which is the third one. Within Linux, this correspond to /dev/mtdblock2. +Therefore to boot Linux with the kernel and its root filesystem in flash, we +need this RedBoot command: + + fis load "Linux kernel" + exec -b 0x100000 -l 0xc0000 -c "root=/dev/mtdblock2" + +Of course other filesystems than JFFS might be used, like cramfs for example. +You might want to boot with a root filesystem over NFS, etc. It is also +possible, and sometimes more convenient, to flash a filesystem directly from +within Linux while booted from a ramdisk or NFS. The Linux MTD repository has +many tools to deal with flash memory as well, to erase it for example. JFFS2 +can then be mounted directly on a freshly erased partition and files can be +copied over directly. Etc... + + +RedBoot scripting +----------------- + +All the commands above aren't so useful if they have to be typed in every +time the Assabet is rebooted. Therefore it's possible to automatize the boot +process using RedBoot's scripting capability. + +For example, I use this to boot Linux with both the kernel and the ramdisk +images retrieved from a TFTP server on the network: + +RedBoot> fconfig +Run script at boot: false true +Boot script: +Enter script, terminate with empty line +>> load zImage -r -b 0x100000 +>> load ramdisk_ks.gz -r -b 0x800000 +>> exec -b 0x100000 -l 0xc0000 +>> +Boot script timeout (1000ms resolution): 3 +Use BOOTP for network configuration: true +GDB connection port: 9000 +Network debug at boot time: false +Update RedBoot non-volatile configuration - are you sure (y/n)? y + +Then, rebooting the Assabet is just a matter of waiting for the login prompt. + + + +Nicolas Pitre +nico@cam.org +June 12, 2001 + + +Status of peripherals in -rmk tree (updated 14/10/2001) +------------------------------------------------------- + +Assabet: + Serial ports: + Radio: TX, RX, CTS, DSR, DCD, RI + PM: Not tested. + COM: TX, RX, CTS, DSR, DCD, RTS, DTR, PM + PM: Not tested. + I2C: Implemented, not fully tested. + L3: Fully tested, pass. + PM: Not tested. + + Video: + LCD: Fully tested. PM + (LCD doesn't like being blanked with + neponset connected) + Video out: Not fully + + Audio: + UDA1341: + Playback: Fully tested, pass. + Record: Implemented, not tested. + PM: Not tested. + + UCB1200: + Audio play: Implemented, not heavily tested. + Audio rec: Implemented, not heavily tested. + Telco audio play: Implemented, not heavily tested. + Telco audio rec: Implemented, not heavily tested. + POTS control: No + Touchscreen: Yes + PM: Not tested. + + Other: + PCMCIA: + LPE: Fully tested, pass. + USB: No + IRDA: + SIR: Fully tested, pass. + FIR: Fully tested, pass. + PM: Not tested. + +Neponset: + Serial ports: + COM1,2: TX, RX, CTS, DSR, DCD, RTS, DTR + PM: Not tested. + USB: Implemented, not heavily tested. + PCMCIA: Implemented, not heavily tested. + PM: Not tested. + CF: Implemented, not heavily tested. + PM: Not tested. + +More stuff can be found in the -np (Nicolas Pitre's) tree. + diff --git a/Documentation/arm/SA1100/Brutus b/Documentation/arm/SA1100/Brutus new file mode 100644 index 000000000000..2254c8f0b326 --- /dev/null +++ b/Documentation/arm/SA1100/Brutus @@ -0,0 +1,66 @@ +Brutus is an evaluation platform for the SA1100 manufactured by Intel. +For more details, see: + +http://developer.intel.com/design/strong/applnots/sa1100lx/getstart.htm + +To compile for Brutus, you must issue the following commands: + + make brutus_config + make config + [accept all the defaults] + make zImage + +The resulting kernel will end up in linux/arch/arm/boot/zImage. This file +must be loaded at 0xc0008000 in Brutus's memory and execution started at +0xc0008000 as well with the value of registers r0 = 0 and r1 = 16 upon +entry. + +But prior to execute the kernel, a ramdisk image must also be loaded in +memory. Use memory address 0xd8000000 for this. Note that the file +containing the (compressed) ramdisk image must not exceed 4 MB. + +Typically, you'll need angelboot to load the kernel. +The following angelboot.opt file should be used: + +----- begin angelboot.opt ----- +base 0xc0008000 +entry 0xc0008000 +r0 0x00000000 +r1 0x00000010 +device /dev/ttyS0 +options "9600 8N1" +baud 115200 +otherfile ramdisk_img.gz +otherbase 0xd8000000 +----- end angelboot.opt ----- + +Then load the kernel and ramdisk with: + + angelboot -f angelboot.opt zImage + +The first Brutus serial port (assumed to be linked to /dev/ttyS0 on your +host PC) is used by angel to load the kernel and ramdisk image. The serial +console is provided through the second Brutus serial port. To access it, +you may use minicom configured with /dev/ttyS1, 9600 baud, 8N1, no flow +control. + +Currently supported: + - RS232 serial ports + - audio output + - LCD screen + - keyboard + +The actual Brutus support may not be complete without extra patches. +If such patches exist, they should be found from +ftp.netwinder.org/users/n/nico. + +A full PCMCIA support is still missing, although it's possible to hack +some drivers in order to drive already inserted cards at boot time with +little modifications. + +Any contribution is welcome. + +Please send patches to nico@cam.org + +Have Fun ! + diff --git a/Documentation/arm/SA1100/CERF b/Documentation/arm/SA1100/CERF new file mode 100644 index 000000000000..b3d845301ef1 --- /dev/null +++ b/Documentation/arm/SA1100/CERF @@ -0,0 +1,29 @@ +*** The StrongARM version of the CerfBoard/Cube has been discontinued *** + +The Intrinsyc CerfBoard is a StrongARM 1110-based computer on a board +that measures approximately 2" square. It includes an Ethernet +controller, an RS232-compatible serial port, a USB function port, and +one CompactFlash+ slot on the back. Pictures can be found at the +Intrinsyc website, http://www.intrinsyc.com. + +This document describes the support in the Linux kernel for the +Intrinsyc CerfBoard. + +Supported in this version: + - CompactFlash+ slot (select PCMCIA in General Setup and any options + that may be required) + - Onboard Crystal CS8900 Ethernet controller (Cerf CS8900A support in + Network Devices) + - Serial ports with a serial console (hardcoded to 38400 8N1) + +In order to get this kernel onto your Cerf, you need a server that runs +both BOOTP and TFTP. Detailed instructions should have come with your +evaluation kit on how to use the bootloader. This series of commands +will suffice: + + make ARCH=arm CROSS_COMPILE=arm-linux- cerfcube_defconfig + make ARCH=arm CROSS_COMPILE=arm-linux- zImage + make ARCH=arm CROSS_COMPILE=arm-linux- modules + cp arch/arm/boot/zImage + +support@intrinsyc.com diff --git a/Documentation/arm/SA1100/FreeBird b/Documentation/arm/SA1100/FreeBird new file mode 100644 index 000000000000..eda28b3232e7 --- /dev/null +++ b/Documentation/arm/SA1100/FreeBird @@ -0,0 +1,21 @@ +Freebird-1.1 is produced by Legned(C) ,Inc. +(http://www.legend.com.cn) +and software/linux mainatined by Coventive(C),Inc. +(http://www.coventive.com) + +Based on the Nicolas's strongarm kernel tree. + +=============================================================== +Maintainer: + +Chester Kuo + + +Author : +Tim wu +CIH +Eric Peng +Jeff Lee +Allen Cheng +Tony Liu + diff --git a/Documentation/arm/SA1100/GraphicsClient b/Documentation/arm/SA1100/GraphicsClient new file mode 100644 index 000000000000..8fa7e8027ff1 --- /dev/null +++ b/Documentation/arm/SA1100/GraphicsClient @@ -0,0 +1,98 @@ +ADS GraphicsClient Plus Single Board Computer + +For more details, contact Applied Data Systems or see +http://www.applieddata.net/products.html + +The original Linux support for this product has been provided by +Nicolas Pitre . Continued development work by +Woojung Huh + +It's currently possible to mount a root filesystem via NFS providing a +complete Linux environment. Otherwise a ramdisk image may be used. The +board supports MTD/JFFS, so you could also mount something on there. + +Use 'make graphicsclient_config' before any 'make config'. This will set up +defaults for GraphicsClient Plus support. + +The kernel zImage is linked to be loaded and executed at 0xc0200000. +Also the following registers should have the specified values upon entry: + + r0 = 0 + r1 = 29 (this is the GraphicsClient architecture number) + +Linux can be used with the ADS BootLoader that ships with the +newer rev boards. See their documentation on how to load Linux. +Angel is not available for the GraphicsClient Plus AFAIK. + +There is a board known as just the GraphicsClient that ADS used to +produce but has end of lifed. This code will not work on the older +board with the ADS bootloader, but should still work with Angel, +as outlined below. In any case, if you're planning on deploying +something en masse, you should probably get the newer board. + +If using Angel on the older boards, here is a typical angel.opt option file +if the kernel is loaded through the Angel Debug Monitor: + +----- begin angelboot.opt ----- +base 0xc0200000 +entry 0xc0200000 +r0 0x00000000 +r1 0x0000001d +device /dev/ttyS1 +options "38400 8N1" +baud 115200 +#otherfile ramdisk.gz +#otherbase 0xc0800000 +exec minicom +----- end angelboot.opt ----- + +Then the kernel (and ramdisk if otherfile/otherbase lines above are +uncommented) would be loaded with: + + angelboot -f angelboot.opt zImage + +Here it is assumed that the board is connected to ttyS1 on your PC +and that minicom is preconfigured with /dev/ttyS1, 38400 baud, 8N1, no flow +control by default. + +If any other bootloader is used, ensure it accomplish the same, especially +for r0/r1 register values before jumping into the kernel. + + +Supported peripherals: +- SA1100 LCD frame buffer (8/16bpp...sort of) +- on-board SMC 92C96 ethernet NIC +- SA1100 serial port +- flash memory access (MTD/JFFS) +- pcmcia +- touchscreen(ucb1200) +- ps/2 keyboard +- console on LCD screen +- serial ports (ttyS[0-2]) + - ttyS0 is default for serial console +- Smart I/O (ADC, keypad, digital inputs, etc) + See http://www.applieddata.com/developers/linux for IOCTL documentation + and example user space code. ps/2 keybd is multiplexed through this driver + +To do: +- UCB1200 audio with new ucb_generic layer +- everything else! :-) + +Notes: + +- The flash on board is divided into 3 partitions. mtd0 is where + the ADS boot ROM and zImage is stored. It's been marked as + read-only to keep you from blasting over the bootloader. :) mtd1 is + for the ramdisk.gz image. mtd2 is user flash space and can be + utilized for either JFFS or if you're feeling crazy, running ext2 + on top of it. If you're not using the ADS bootloader, you're + welcome to blast over the mtd1 partition also. + +- 16bpp mode requires a different cable than what ships with the board. + Contact ADS or look through the manual to wire your own. Currently, + if you compile with 16bit mode support and switch into a lower bpp + mode, the timing is off so the image is corrupted. This will be + fixed soon. + +Any contribution can be sent to nico@cam.org and will be greatly welcome! + diff --git a/Documentation/arm/SA1100/GraphicsMaster b/Documentation/arm/SA1100/GraphicsMaster new file mode 100644 index 000000000000..dd28745ac521 --- /dev/null +++ b/Documentation/arm/SA1100/GraphicsMaster @@ -0,0 +1,53 @@ +ADS GraphicsMaster Single Board Computer + +For more details, contact Applied Data Systems or see +http://www.applieddata.net/products.html + +The original Linux support for this product has been provided by +Nicolas Pitre . Continued development work by +Woojung Huh + +Use 'make graphicsmaster_config' before any 'make config'. +This will set up defaults for GraphicsMaster support. + +The kernel zImage is linked to be loaded and executed at 0xc0400000. + +Linux can be used with the ADS BootLoader that ships with the +newer rev boards. See their documentation on how to load Linux. + +Supported peripherals: +- SA1100 LCD frame buffer (8/16bpp...sort of) +- SA1111 USB Master +- on-board SMC 92C96 ethernet NIC +- SA1100 serial port +- flash memory access (MTD/JFFS) +- pcmcia, compact flash +- touchscreen(ucb1200) +- ps/2 keyboard +- console on LCD screen +- serial ports (ttyS[0-2]) + - ttyS0 is default for serial console +- Smart I/O (ADC, keypad, digital inputs, etc) + See http://www.applieddata.com/developers/linux for IOCTL documentation + and example user space code. ps/2 keybd is multiplexed through this driver + +To do: +- everything else! :-) + +Notes: + +- The flash on board is divided into 3 partitions. mtd0 is where + the zImage is stored. It's been marked as read-only to keep you + from blasting over the bootloader. :) mtd1 is + for the ramdisk.gz image. mtd2 is user flash space and can be + utilized for either JFFS or if you're feeling crazy, running ext2 + on top of it. If you're not using the ADS bootloader, you're + welcome to blast over the mtd1 partition also. + +- 16bpp mode requires a different cable than what ships with the board. + Contact ADS or look through the manual to wire your own. Currently, + if you compile with 16bit mode support and switch into a lower bpp + mode, the timing is off so the image is corrupted. This will be + fixed soon. + +Any contribution can be sent to nico@cam.org and will be greatly welcome! diff --git a/Documentation/arm/SA1100/HUW_WEBPANEL b/Documentation/arm/SA1100/HUW_WEBPANEL new file mode 100644 index 000000000000..fd56b48d4833 --- /dev/null +++ b/Documentation/arm/SA1100/HUW_WEBPANEL @@ -0,0 +1,17 @@ +The HUW_WEBPANEL is a product of the german company Hoeft & Wessel AG + +If you want more information, please visit +http://www.hoeft-wessel.de + +To build the kernel: + make huw_webpanel_config + make oldconfig + [accept all defaults] + make zImage + +Mostly of the work is done by: +Roman Jordan jor@hoeft-wessel.de +Christoph Schulz schu@hoeft-wessel.de + +2000/12/18/ + diff --git a/Documentation/arm/SA1100/Itsy b/Documentation/arm/SA1100/Itsy new file mode 100644 index 000000000000..3b594534323b --- /dev/null +++ b/Documentation/arm/SA1100/Itsy @@ -0,0 +1,39 @@ +Itsy is a research project done by the Western Research Lab, and Systems +Research Center in Palo Alto, CA. The Itsy project is one of several +research projects at Compaq that are related to pocket computing. + +For more information, see: + + http://www.research.digital.com/wrl/itsy/index.html + +Notes on initial 2.4 Itsy support (8/27/2000) : +The port was done on an Itsy version 1.5 machine with a daughtercard with +64 Meg of DRAM and 32 Meg of Flash. The initial work includes support for +serial console (to see what you're doing). No other devices have been +enabled. + +To build, do a "make menuconfig" (or xmenuconfig) and select Itsy support. +Disable Flash and LCD support. and then do a make zImage. +Finally, you will need to cd to arch/arm/boot/tools and execute a make there +to build the params-itsy program used to boot the kernel. + +In order to install the port of 2.4 to the itsy, You will need to set the +configuration parameters in the monitor as follows: +Arg 1:0x08340000, Arg2: 0xC0000000, Arg3:18 (0x12), Arg4:0 +Make sure the start-routine address is set to 0x00060000. + +Next, flash the params-itsy program to 0x00060000 ("p 1 0x00060000" in the +flash menu) Flash the kernel in arch/arm/boot/zImage into 0x08340000 +("p 1 0x00340000"). Finally flash an initial ramdisk into 0xC8000000 +("p 2 0x0") We used ramdisk-2-30.gz from the 0.11 version directory on +handhelds.org. + +The serial connection we established was at: + 8-bit data, no parity, 1 stop bit(s), 115200.00 b/s. in the monitor, in the +params-itsy program, and in the kernel itself. This can be changed, but +not easily. The monitor parameters are easily changed, the params program +setup is assembly outl's, and the kernel is a configuration item specific to +the itsy. (i.e. grep for CONFIG_SA1100_ITSY and you'll find where it is.) + + +This should get you a properly booting 2.4 kernel on the itsy. diff --git a/Documentation/arm/SA1100/LART b/Documentation/arm/SA1100/LART new file mode 100644 index 000000000000..2f73f513e16a --- /dev/null +++ b/Documentation/arm/SA1100/LART @@ -0,0 +1,14 @@ +Linux Advanced Radio Terminal (LART) +------------------------------------ + +The LART is a small (7.5 x 10cm) SA-1100 board, designed for embedded +applications. It has 32 MB DRAM, 4MB Flash ROM, double RS232 and all +other StrongARM-gadgets. Almost all SA signals are directly accessible +through a number of connectors. The powersupply accepts voltages +between 3.5V and 16V and is overdimensioned to support a range of +daughterboards. A quad Ethernet / IDE / PS2 / sound daughterboard +is under development, with plenty of others in different stages of +planning. + +The hardware designs for this board have been released under an open license; +see the LART page at http://www.lart.tudelft.nl/ for more information. diff --git a/Documentation/arm/SA1100/PLEB b/Documentation/arm/SA1100/PLEB new file mode 100644 index 000000000000..92cae066908d --- /dev/null +++ b/Documentation/arm/SA1100/PLEB @@ -0,0 +1,11 @@ +The PLEB project was started as a student initiative at the School of +Computer Science and Engineering, University of New South Wales to make a +pocket computer capable of running the Linux Kernel. + +PLEB support has yet to be fully integrated. + +For more information, see: + + http://www.cse.unsw.edu.au/~pleb/ + + diff --git a/Documentation/arm/SA1100/Pangolin b/Documentation/arm/SA1100/Pangolin new file mode 100644 index 000000000000..077a6120e129 --- /dev/null +++ b/Documentation/arm/SA1100/Pangolin @@ -0,0 +1,23 @@ +Pangolin is a StrongARM 1110-based evaluation platform produced +by Dialogue Technology (http://www.dialogue.com.tw/). +It has EISA slots for ease of configuration with SDRAM/Flash +memory card, USB/Serial/Audio card, Compact Flash card, +PCMCIA/IDE card and TFT-LCD card. + +To compile for Pangolin, you must issue the following commands: + + make pangolin_config + make oldconfig + make zImage + +Supported peripherals: +- SA1110 serial port (UART1/UART2/UART3) +- flash memory access +- compact flash driver +- UDA1341 sound driver +- SA1100 LCD controller for 800x600 16bpp TFT-LCD +- MQ-200 driver for 800x600 16bpp TFT-LCD +- Penmount(touch panel) driver +- PCMCIA driver +- SMC91C94 LAN driver +- IDE driver (experimental) diff --git a/Documentation/arm/SA1100/Tifon b/Documentation/arm/SA1100/Tifon new file mode 100644 index 000000000000..dd1934d9c851 --- /dev/null +++ b/Documentation/arm/SA1100/Tifon @@ -0,0 +1,7 @@ +Tifon +----- + +More info has to come... + +Contact: Peter Danielsson + diff --git a/Documentation/arm/SA1100/Victor b/Documentation/arm/SA1100/Victor new file mode 100644 index 000000000000..01e81fc49461 --- /dev/null +++ b/Documentation/arm/SA1100/Victor @@ -0,0 +1,16 @@ +Victor is known as a "digital talking book player" manufactured by +VisuAide, Inc. to be used by blind people. + +For more information related to Victor, see: + + http://www.visuaide.com/victor + +Of course Victor is using Linux as its main operating system. +The Victor implementation for Linux is maintained by Nicolas Pitre: + + nico@visuaide.com + nico@cam.org + +For any comments, please feel free to contact me through the above +addresses. + diff --git a/Documentation/arm/SA1100/Yopy b/Documentation/arm/SA1100/Yopy new file mode 100644 index 000000000000..e14f16d836ac --- /dev/null +++ b/Documentation/arm/SA1100/Yopy @@ -0,0 +1,2 @@ +See http://www.yopydeveloper.org for more. + diff --git a/Documentation/arm/SA1100/empeg b/Documentation/arm/SA1100/empeg new file mode 100644 index 000000000000..4ece4849a42c --- /dev/null +++ b/Documentation/arm/SA1100/empeg @@ -0,0 +1,2 @@ +See ../empeg/README + diff --git a/Documentation/arm/SA1100/nanoEngine b/Documentation/arm/SA1100/nanoEngine new file mode 100644 index 000000000000..fc431cbfefc2 --- /dev/null +++ b/Documentation/arm/SA1100/nanoEngine @@ -0,0 +1,11 @@ +nanoEngine +---------- + +"nanoEngine" is a SA1110 based single board computer from +Bright Star Engineering Inc. See www.brightstareng.com/arm +for more info. +(Ref: Stuart Adams ) + +Also visit Larry Doolittle's "Linux for the nanoEngine" site: +http://recycle.lbl.gov/~ldoolitt/bse/ + diff --git a/Documentation/arm/SA1100/serial_UART b/Documentation/arm/SA1100/serial_UART new file mode 100644 index 000000000000..aea2e91ca0ef --- /dev/null +++ b/Documentation/arm/SA1100/serial_UART @@ -0,0 +1,47 @@ +The SA1100 serial port had its major/minor numbers officially assigned: + +> Date: Sun, 24 Sep 2000 21:40:27 -0700 +> From: H. Peter Anvin +> To: Nicolas Pitre +> Cc: Device List Maintainer +> Subject: Re: device +> +> Okay. Note that device numbers 204 and 205 are used for "low density +> serial devices", so you will have a range of minors on those majors (the +> tty device layer handles this just fine, so you don't have to worry about +> doing anything special.) +> +> So your assignments are: +> +> 204 char Low-density serial ports +> 5 = /dev/ttySA0 SA1100 builtin serial port 0 +> 6 = /dev/ttySA1 SA1100 builtin serial port 1 +> 7 = /dev/ttySA2 SA1100 builtin serial port 2 +> +> 205 char Low-density serial ports (alternate device) +> 5 = /dev/cusa0 Callout device for ttySA0 +> 6 = /dev/cusa1 Callout device for ttySA1 +> 7 = /dev/cusa2 Callout device for ttySA2 +> + +If you're not using devfs, you must create those inodes in /dev +on the root filesystem used by your SA1100-based device: + + mknod ttySA0 c 204 5 + mknod ttySA1 c 204 6 + mknod ttySA2 c 204 7 + mknod cusa0 c 205 5 + mknod cusa1 c 205 6 + mknod cusa2 c 205 7 + +In addition to the creation of the appropriate device nodes above, you +must ensure your user space applications make use of the correct device +name. The classic example is the content of the /etc/inittab file where +you might have a getty process started on ttyS0. In this case: + +- replace occurrences of ttyS0 with ttySA0, ttyS1 with ttySA1, etc. + +- don't forget to add 'ttySA0', 'console', or the appropriate tty name + in /etc/securetty for root to be allowed to login as well. + + diff --git a/Documentation/arm/Samsung-S3C24XX/EB2410ITX.txt b/Documentation/arm/Samsung-S3C24XX/EB2410ITX.txt new file mode 100644 index 000000000000..000e3d7a78b2 --- /dev/null +++ b/Documentation/arm/Samsung-S3C24XX/EB2410ITX.txt @@ -0,0 +1,58 @@ + Simtec Electronics EB2410ITX (BAST) + =================================== + + http://www.simtec.co.uk/products/EB2410ITX/ + +Introduction +------------ + + The EB2410ITX is a S3C2410 based development board with a variety of + peripherals and expansion connectors. This board is also known by + the shortened name of Bast. + + +Configuration +------------- + + To set the default configuration, use `make bast_defconfig` which + supports the commonly used features of this board. + + +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 + + +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. + + +IDE +--- + + Both onboard IDE ports are supported, however there is no support for + 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/GPIO.txt b/Documentation/arm/Samsung-S3C24XX/GPIO.txt new file mode 100644 index 000000000000..0822764ec270 --- /dev/null +++ b/Documentation/arm/Samsung-S3C24XX/GPIO.txt @@ -0,0 +1,122 @@ + S3C2410 GPIO Control + ==================== + +Introduction +------------ + + The s3c2410 kernel provides an interface to configure and + manipulate the state of the GPIO pins, and find out other + information about them. + + There are a number of conditions attached to the configuration + of the s3c2410 GPIO system, please read the Samsung provided + data-sheet/users manual to find out the complete list. + + +Headers +------- + + See include/asm-arm/arch-s3c2410/regs-gpio.h for the list + of GPIO pins, and the configuration values for them. This + is included by using #include + + The GPIO management functions are defined in the hardware + header include/asm-arm/arch-s3c2410/hardware.h which can be + included by #include + + A useful ammount of documentation can be found in the hardware + header on how the GPIO functions (and others) work. + + Whilst a number of these functions do make some checks on what + is passed to them, for speed of use, they may not always ensure + that the user supplied data to them is correct. + + +PIN Numbers +----------- + + Each pin has an unique number associated with it in regs-gpio.h, + eg S3C2410_GPA0 or S3C2410_GPF1. These defines are used to tell + the GPIO functions which pin is to be used. + + +Configuring a pin +----------------- + + The following function allows the configuration of a given pin to + be changed. + + void s3c2410_gpio_cfgpin(unsigned int pin, unsigned int function); + + Eg: + + s3c2410_gpio_cfgpin(S3C2410_GPA0, S3C2410_GPA0_ADDR0); + s3c2410_gpio_cfgpin(S3C2410_GPE8, S3C2410_GPE8_SDDAT1); + + which would turn GPA0 into the lowest Address line A0, and set + GPE8 to be connected to the SDIO/MMC controller's SDDAT1 line. + + +Reading the current configuration +--------------------------------- + + The current configuration of a pin can be read by using: + + s3c2410_gpio_getcfg(unsigned int pin); + + The return value will be from the same set of values which can be + passed to s3c2410_gpio_cfgpin(). + + +Configuring a pull-up resistor +------------------------------ + + A large proportion of the GPIO pins on the S3C2410 can have weak + pull-up resistors enabled. This can be configured by the following + function: + + void s3c2410_gpio_pullup(unsigned int pin, unsigned int to); + + Where the to value is zero to set the pull-up off, and 1 to enable + the specified pull-up. Any other values are currently undefined. + + +Getting the state of a PIN +-------------------------- + + The state of a pin can be read by using the function: + + unsigned int s3c2410_gpio_getpin(unsigned int pin); + + This will return either zero or non-zero. Do not count on this + function returning 1 if the pin is set. + + +Setting the state of a PIN +-------------------------- + + The value an pin is outputing can be modified by using the following: + + void s3c2410_gpio_setpin(unsigned int pin, unsigned int to); + + Which sets the given pin to the value. Use 0 to write 0, and 1 to + set the output to 1. + + +Getting the IRQ number associated with a PIN +-------------------------------------------- + + The following function can map the given pin number to an IRQ + number to pass to the IRQ system. + + int s3c2410_gpio_getirq(unsigned int pin); + + Note, not all pins have an IRQ. + + +Authour +------- + + +Ben Dooks, 03 October 2004 +(c) 2004 Ben Dooks, Simtec Electronics diff --git a/Documentation/arm/Samsung-S3C24XX/H1940.txt b/Documentation/arm/Samsung-S3C24XX/H1940.txt new file mode 100644 index 000000000000..d6b1de92b111 --- /dev/null +++ b/Documentation/arm/Samsung-S3C24XX/H1940.txt @@ -0,0 +1,40 @@ + HP IPAQ H1940 + ============= + +http://www.handhelds.org/projects/h1940.html + +Introduction +------------ + + The HP H1940 is a S3C2410 based handheld device, with + bluetooth connectivity. + + +Support +------- + + A variety of information is available + + handhelds.org project page: + + http://www.handhelds.org/projects/h1940.html + + handhelds.org wiki page: + + http://handhelds.org/moin/moin.cgi/HpIpaqH1940 + + Herbert Pötzl pages: + + http://vserver.13thfloor.at/H1940/ + + +Maintainers +----------- + + This project is being maintained and developed by a variety + of people, including Ben Dooks, Arnaud Patard, and Herbert Pötzl. + + Thanks to the many others who have also provided support. + + +(c) 2005 Ben Dooks \ No newline at end of file diff --git a/Documentation/arm/Samsung-S3C24XX/Overview.txt b/Documentation/arm/Samsung-S3C24XX/Overview.txt new file mode 100644 index 000000000000..3af4d29a8938 --- /dev/null +++ b/Documentation/arm/Samsung-S3C24XX/Overview.txt @@ -0,0 +1,156 @@ + S3C24XX ARM Linux Overview + ========================== + + + +Introduction +------------ + + The Samsung S3C24XX range of ARM9 System-on-Chip CPUs are supported + by the 's3c2410' architecture of ARM Linux. Currently the S3C2410 and + the S3C2440 are supported CPUs. + + +Configuration +------------- + + A generic S3C2410 configuration is provided, and can be used as the + default by `make s3c2410_defconfig`. This configuration has support + for all the machines, and the commonly used features on them. + + Certain machines may have their own default configurations as well, + please check the machine specific documentation. + + +Machines +-------- + + The currently supported machines are as follows: + + Simtec Electronics EB2410ITX (BAST) + + A general purpose development board, see EB2410ITX.txt for further + details + + Samsung SMDK2410 + + Samsung's own development board, geared for PDA work. + + Samsung/Meritech SMDK2440 + + The S3C2440 compatible version of the SMDK2440 + + Thorcom VR1000 + + Custom embedded board + + HP IPAQ 1940 + + Handheld (IPAQ), available in several varieties + + HP iPAQ rx3715 + + S3C2440 based IPAQ, with a number of variations depending on + features shipped. + + Acer N30 + + A S3C2410 based PDA from Acer. There is a Wiki page at + http://handhelds.org/moin/moin.cgi/AcerN30Documentation . + + +Adding New Machines +------------------- + + The archicture has been designed to support as many machines as can + be configured for it in one kernel build, and any future additions + should keep this in mind before altering items outside of their own + machine files. + + Machine definitions should be kept in linux/arch/arm/mach-s3c2410, + and there are a number of examples that can be looked at. + + Read the kernel patch submission policies as well as the + Documentation/arm directory before submitting patches. The + ARM kernel series is managed by Russell King, and has a patch system + located at http://www.arm.linux.org.uk/developer/patches/ + as well as mailing lists that can be found from the same site. + + As a courtesy, please notify of any new + machines or other modifications. + + Any large scale modifications, or new drivers should be discussed + on the ARM kernel mailing list (linux-arm-kernel) before being + attempted. + + +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/ + + +Serial +------ + + The s3c2410 serial driver provides support for the internal + serial ports. These devices appear as /dev/ttySAC0 through 3. + + To create device nodes for these, use the following commands + + mknod ttySAC0 c 204 64 + mknod ttySAC1 c 204 65 + mknod ttySAC2 c 204 66 + + +GPIO +---- + + The core contains support for manipulating the GPIO, see the + documentation in GPIO.txt in the same directory as this file. + + +Clock Management +---------------- + + The core provides the interface defined in the header file + include/asm-arm/hardware/clock.h, to allow control over the + various clock units + + +Port Contributors +----------------- + + Ben Dooks (BJD) + Vincent Sanders + Herbert Potzl + Arnaud Patard (RTP) + Roc Wu + Klaus Fetscher + Dimitry Andric + Shannon Holland + Guillaume Gourat (NexVision) + Christer Weinigel (wingel) (Acer N30) + Lucas Correia Villa Real (S3C2400 port) + + +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 + 21 Jan 2005 - BJD - Added rx3715, added Shannon to contributors + 10 Feb 2005 - BJD - Added Guillaume Gourat to contributors + 02 Mar 2005 - BJD - Added SMDK2440 to list of machines + 06 Mar 2005 - BJD - Added Christer Weinigel + 08 Mar 2005 - BJD - Added LCVR to list of people, updated introduction + 08 Mar 2005 - BJD - Added section on adding machines + +Document Author +--------------- + +Ben Dooks, (c) 2004-2005 Simtec Electronics diff --git a/Documentation/arm/Samsung-S3C24XX/SMDK2440.txt b/Documentation/arm/Samsung-S3C24XX/SMDK2440.txt new file mode 100644 index 000000000000..32e1eae6a25f --- /dev/null +++ b/Documentation/arm/Samsung-S3C24XX/SMDK2440.txt @@ -0,0 +1,56 @@ + Samsung/Meritech SMDK2440 + ========================= + +Introduction +------------ + + The SMDK2440 is a two part evaluation board for the Samsung S3C2440 + processor. It includes support for LCD, SmartMedia, Audio, SD and + 10MBit Ethernet, and expansion headers for various signals, including + the camera and unused GPIO. + + +Configuration +------------- + + To set the default configuration, use `make smdk2440_defconfig` which + will configure the common features of this board, or use + `make s3c2410_config` to include support for all s3c2410/s3c2440 machines + + +Support +------- + + Ben Dooks' SMDK2440 site at http://www.fluff.org/ben/smdk2440/ which + includes linux based USB download tools. + + Some of the h1940 patches that can be found from the H1940 project + site at http://www.handhelds.org/projects/h1940.html can also be + applied to this board. + + +Peripherals +----------- + + There is no current support for any of the extra peripherals on the + base-board itself. + + +MTD +--- + + The NAND flash should be supported by the in kernel MTD NAND support, + NOR flash will be added later. + + +Maintainers +----------- + + This board is being maintained by Ben Dooks, for more info, see + http://www.fluff.org/ben/smdk2440/ + + Many thanks to Dimitry Andric of TomTom for the loan of the SMDK2440, + and to Simtec Electronics for allowing me time to work on this. + + +(c) 2004 Ben Dooks \ No newline at end of file diff --git a/Documentation/arm/Samsung-S3C24XX/Suspend.txt b/Documentation/arm/Samsung-S3C24XX/Suspend.txt new file mode 100644 index 000000000000..e12bc3284a27 --- /dev/null +++ b/Documentation/arm/Samsung-S3C24XX/Suspend.txt @@ -0,0 +1,106 @@ + 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/Setup b/Documentation/arm/Setup new file mode 100644 index 000000000000..0abd0720d7ed --- /dev/null +++ b/Documentation/arm/Setup @@ -0,0 +1,129 @@ +Kernel initialisation parameters on ARM Linux +--------------------------------------------- + +The following document describes the kernel initialisation parameter +structure, otherwise known as 'struct param_struct' which is used +for most ARM Linux architectures. + +This structure is used to pass initialisation parameters from the +kernel loader to the Linux kernel proper, and may be short lived +through the kernel initialisation process. As a general rule, it +should not be referenced outside of arch/arm/kernel/setup.c:setup_arch(). + +There are a lot of parameters listed in there, and they are described +below: + + page_size + + This parameter must be set to the page size of the machine, and + will be checked by the kernel. + + nr_pages + + This is the total number of pages of memory in the system. If + the memory is banked, then this should contain the total number + of pages in the system. + + If the system contains separate VRAM, this value should not + include this information. + + ramdisk_size + + This is now obsolete, and should not be used. + + flags + + Various kernel flags, including: + bit 0 - 1 = mount root read only + bit 1 - unused + bit 2 - 0 = load ramdisk + bit 3 - 0 = prompt for ramdisk + + rootdev + + major/minor number pair of device to mount as the root filesystem. + + video_num_cols + video_num_rows + + These two together describe the character size of the dummy console, + or VGA console character size. They should not be used for any other + purpose. + + It's generally a good idea to set these to be either standard VGA, or + the equivalent character size of your fbcon display. This then allows + all the bootup messages to be displayed correctly. + + video_x + video_y + + This describes the character position of cursor on VGA console, and + is otherwise unused. (should not used for other console types, and + should not be used for other purposes). + + memc_control_reg + + MEMC chip control register for Acorn Archimedes and Acorn A5000 + based machines. May be used differently by different architectures. + + sounddefault + + Default sound setting on Acorn machines. May be used differently by + different architectures. + + adfsdrives + + Number of ADFS/MFM disks. May be used differently by different + architectures. + + bytes_per_char_h + bytes_per_char_v + + These are now obsolete, and should not be used. + + pages_in_bank[4] + + Number of pages in each bank of the systems memory (used for RiscPC). + This is intended to be used on systems where the physical memory + is non-contiguous from the processors point of view. + + pages_in_vram + + Number of pages in VRAM (used on Acorn RiscPC). This value may also + be used by loaders if the size of the video RAM can't be obtained + from the hardware. + + initrd_start + initrd_size + + This describes the kernel virtual start address and size of the + initial ramdisk. + + rd_start + + Start address in sectors of the ramdisk image on a floppy disk. + + system_rev + + system revision number. + + system_serial_low + system_serial_high + + system 64-bit serial number + + mem_fclk_21285 + + The speed of the external oscillator to the 21285 (footbridge), + which control's the speed of the memory bus, timer & serial port. + Depending upon the speed of the cpu its value can be between + 0-66 MHz. If no params are passed or a value of zero is passed, + then a value of 50 Mhz is the default on 21285 architectures. + + paths[8][128] + + These are now obsolete, and should not be used. + + commandline + + Kernel command line parameters. Details can be found elsewhere. diff --git a/Documentation/arm/Sharp-LH/CompactFlash b/Documentation/arm/Sharp-LH/CompactFlash new file mode 100644 index 000000000000..8616d877df9e --- /dev/null +++ b/Documentation/arm/Sharp-LH/CompactFlash @@ -0,0 +1,32 @@ +README on the Compact Flash for Card Engines +============================================ + +There are three challenges in supporting the CF interface of the Card +Engines. First, every IO operation must be followed with IO to +another memory region. Second, the slot is wired for one-to-one +address mapping *and* it is wired for 16 bit access only. Second, the +interrupt request line from the CF device isn't wired. + +The IOBARRIER issue is covered in README.IOBARRIER. This isn't an +onerous problem. Enough said here. + +The addressing issue is solved in the +arch/arm/mach-lh7a40x/ide-lpd7a40x.c file with some awkward +work-arounds. We implement a special SELECT_DRIVE routine that is +called before the IDE driver performs its own SELECT_DRIVE. Our code +recognizes that the SELECT register cannot be modified without also +writing a command. It send an IDLE_IMMEDIATE command on selecting a +drive. The function also prevents drive select to the slave drive +since there can be only one. The awkward part is that the IDE driver, +even though we have a select procedure, also attempts to change the +drive by writing directly the SELECT register. This attempt is +explicitly blocked by the OUTB function--not pretty, but effective. + +The lack of interrupts is a more serious problem. Even though the CF +card is fast when compared to a normal IDE device, we don't know that +the CF is really flash. A user could use one of the very small hard +drives being shipped with a CF interface. The IDE code includes a +check for interfaces that lack an IRQ. In these cases, submitting a +command to the IDE controller is followed by a call to poll for +completion. If the device isn't immediately ready, it schedules a +timer to poll again later. diff --git a/Documentation/arm/Sharp-LH/IOBarrier b/Documentation/arm/Sharp-LH/IOBarrier new file mode 100644 index 000000000000..c0d8853672dc --- /dev/null +++ b/Documentation/arm/Sharp-LH/IOBarrier @@ -0,0 +1,45 @@ +README on the IOBARRIER for CardEngine IO +========================================= + +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 +unreliable data. With the SMC chip, you'll see errors about the bank +register being 'screwed'. + +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. + +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. + + 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 +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. diff --git a/Documentation/arm/Sharp-LH/KEV7A400 b/Documentation/arm/Sharp-LH/KEV7A400 new file mode 100644 index 000000000000..be32b14cd535 --- /dev/null +++ b/Documentation/arm/Sharp-LH/KEV7A400 @@ -0,0 +1,8 @@ +README on Implementing Linux for Sharp's KEV7a400 +================================================= + +This product has been discontinued by Sharp. For the time being, the +partially implemented code remains in the kernel. At some point in +the future, either the code will be finished or it will be removed +completely. This depends primarily on how many of the development +boards are in the field. diff --git a/Documentation/arm/Sharp-LH/LPD7A400 b/Documentation/arm/Sharp-LH/LPD7A400 new file mode 100644 index 000000000000..3275b453bfdf --- /dev/null +++ b/Documentation/arm/Sharp-LH/LPD7A400 @@ -0,0 +1,15 @@ +README on Implementing Linux for the Logic PD LPD7A400-10 +========================================================= + +- CPLD memory mapping + + The board designers chose to use high address lines for controlling + access to the CPLD registers. It turns out to be a big waste + because we're using an MMU and must map IO space into virtual + memory. The result is that we have to make a mapping for every + register. + +- Serial Console + + It may be OK not to use the serial console option if the user passes + the console device name to the kernel. This deserves some exploration. diff --git a/Documentation/arm/Sharp-LH/LPD7A40X b/Documentation/arm/Sharp-LH/LPD7A40X new file mode 100644 index 000000000000..8c29a27e208f --- /dev/null +++ b/Documentation/arm/Sharp-LH/LPD7A40X @@ -0,0 +1,16 @@ +README on Implementing Linux for the Logic PD LPD7A40X-10 +========================================================= + +- CPLD memory mapping + + The board designers chose to use high address lines for controlling + access to the CPLD registers. It turns out to be a big waste + because we're using an MMU and must map IO space into virtual + memory. The result is that we have to make a mapping for every + register. + +- Serial Console + + It may be OK not to use the serial console option if the user passes + the console device name to the kernel. This deserves some exploration. + diff --git a/Documentation/arm/Sharp-LH/SDRAM b/Documentation/arm/Sharp-LH/SDRAM new file mode 100644 index 000000000000..93ddc23c2faa --- /dev/null +++ b/Documentation/arm/Sharp-LH/SDRAM @@ -0,0 +1,51 @@ +README on the SDRAM Controller for the LH7a40X +============================================== + +The standard configuration for the SDRAM controller generates a sparse +memory array. The precise layout is determined by the SDRAM chips. A +default kernel configuration assembles the discontiguous memory +regions into separate memory nodes via the NUMA (Non-Uniform Memory +Architecture) facilities. In this default configuration, the kernel +is forgiving about the precise layout. As long as it is given an +accurate picture of available memory by the bootloader the kernel will +execute correctly. + +The SDRC supports a mode where some of the chip select lines are +swapped in order to make SDRAM look like a synchronous ROM. Setting +this bit means that the RAM will present as a contiguous array. Some +programmers prefer this to the discontiguous layout. Be aware that +may be a penalty for this feature where some some configurations of +memory are significantly reduced; i.e. 64MiB of RAM appears as only 32 +MiB. + +There are a couple of configuration options to override the default +behavior. When the SROMLL bit is set and memory appears as a +contiguous array, there is no reason to support NUMA. +CONFIG_LH7A40X_CONTIGMEM disables NUMA support. When physical memory +is discontiguous, the memory tables are organized such that there are +two banks per nodes with a small gap between them. This layout wastes +some kernel memory for page tables representing non-existent memory. +CONFIG_LH7A40X_ONE_BANK_PER_NODE optimizes the node tables such that +there are no gaps. These options control the low level organization +of the memory management tables in ways that may prevent the kernel +from booting or may cause the kernel to allocated excessively large +page tables. Be warned. Only change these options if you know what +you are doing. The default behavior is a reasonable compromise that +will suit all users. + +-- + +A typical 32MiB system with the default configuration options will +find physical memory managed as follows. + + node 0: 0xc0000000 4MiB + 0xc1000000 4MiB + node 1: 0xc4000000 4MiB + 0xc5000000 4MiB + node 2: 0xc8000000 4MiB + 0xc9000000 4MiB + node 3: 0xcc000000 4MiB + 0xcd000000 4MiB + +Setting CONFIG_LH7A40X_ONE_BANK_PER_NODE will put each bank into a +separate node. diff --git a/Documentation/arm/Sharp-LH/VectoredInterruptController b/Documentation/arm/Sharp-LH/VectoredInterruptController new file mode 100644 index 000000000000..23047e9861ee --- /dev/null +++ b/Documentation/arm/Sharp-LH/VectoredInterruptController @@ -0,0 +1,80 @@ +README on the Vectored Interrupt Controller of the LH7A404 +========================================================== + +The 404 revision of the LH7A40X series comes with two vectored +interrupts controllers. While the kernel does use some of the +features of these devices, it is far from the purpose for which they +were designed. + +When this README was written, the implementation of the VICs was in +flux. It is possible that some details, especially with priorities, +will change. + +The VIC support code is inspired by routines written by Sharp. + + +Priority Control +---------------- + +The significant reason for using the VIC's vectoring is to control +interrupt priorities. There are two tables in +arch/arm/mach-lh7a40x/irq-lh7a404.c that look something like this. + + static unsigned char irq_pri_vic1[] = { IRQ_GPIO3INTR, }; + static unsigned char irq_pri_vic2[] = { + IRQ_T3UI, IRQ_GPIO7INTR, + IRQ_UART1INTR, IRQ_UART2INTR, IRQ_UART3INTR, }; + +The initialization code reads these tables and inserts a vector +address and enable for each indicated IRQ. Vectored interrupts have +higher priority than non-vectored interrupts. So, on VIC1, +IRQ_GPIO3INTR will be served before any other non-FIQ interrupt. Due +to the way that the vectoring works, IRQ_T3UI is the next highest +priority followed by the other vectored interrupts on VIC2. After +that, the non-vectored interrupts are scanned in VIC1 then in VIC2. + + +ISR +--- + +The interrupt service routine macro get_irqnr() in +arch/arm/kernel/entry-armv.S scans the VICs for the next active +interrupt. The vectoring makes this code somewhat larger than it was +before using vectoring (refer to the LH7A400 implementation). In the +case where an interrupt is vectored, the implementation will tend to +be faster than the non-vectored version. However, the worst-case path +is longer. + +It is worth noting that at present, there is no need to read +VIC2_VECTADDR because the register appears to be shared between the +controllers. The code is written such that if this changes, it ought +to still work properly. + + +Vector Addresses +---------------- + +The proper use of the vectoring hardware would jump to the ISR +specified by the vectoring address. Linux isn't structured to take +advantage of this feature, though it might be possible to change +things to support it. + +In this implementation, the vectoring address is used to speed the +search for the active IRQ. The address is coded such that the lowest +6 bits store the IRQ number for vectored interrupts. These numbers +correspond to the bits in the interrupt status registers. IRQ zero is +the lowest interrupt bit in VIC1. IRQ 32 is the lowest interrupt bit +in VIC2. Because zero is a valid IRQ number and because we cannot +detect whether or not there is a valid vectoring address if that +address is zero, the eigth bit (0x100) is set for vectored interrupts. +The address for IRQ 0x18 (VIC2) is 0x118. Only the ninth bit is set +for the default handler on VIC1 and only the tenth bit is set for the +default handler on VIC2. + +In other words. + + 0x000 - no active interrupt + 0x1ii - vectored interrupt 0xii + 0x2xx - unvectored interrupt on VIC1 (xx is don't care) + 0x4xx - unvectored interrupt on VIC2 (xx is don't care) + diff --git a/Documentation/arm/VFP/release-notes.txt b/Documentation/arm/VFP/release-notes.txt new file mode 100644 index 000000000000..f28e0222f5e5 --- /dev/null +++ b/Documentation/arm/VFP/release-notes.txt @@ -0,0 +1,55 @@ +Release notes for Linux Kernel VFP support code +----------------------------------------------- + +Date: 20 May 2004 +Author: Russell King + +This is the first release of the Linux Kernel VFP support code. It +provides support for the exceptions bounced from VFP hardware found +on ARM926EJ-S. + +This release has been validated against the SoftFloat-2b library by +John R. Hauser using the TestFloat-2a test suite. Details of this +library and test suite can be found at: + + http://www.cs.berkeley.edu/~jhauser/arithmetic/SoftFloat.html + +The operations which have been tested with this package are: + + - fdiv + - fsub + - fadd + - fmul + - fcmp + - fcmpe + - fcvtd + - fcvts + - fsito + - ftosi + - fsqrt + +All the above pass softfloat tests with the following exceptions: + +- fadd/fsub shows some differences in the handling of +0 / -0 results + when input operands differ in signs. +- the handling of underflow exceptions is slightly different. If a + result underflows before rounding, but becomes a normalised number + after rounding, we do not signal an underflow exception. + +Other operations which have been tested by basic assembly-only tests +are: + + - fcpy + - fabs + - fneg + - ftoui + - ftosiz + - ftouiz + +The combination operations have not been tested: + + - fmac + - fnmac + - fmsc + - fnmsc + - fnmul diff --git a/Documentation/arm/empeg/README b/Documentation/arm/empeg/README new file mode 100644 index 000000000000..09cc8d03ae58 --- /dev/null +++ b/Documentation/arm/empeg/README @@ -0,0 +1,13 @@ +Empeg, Ltd's Empeg MP3 Car Audio Player + +The initial design is to go in your car, but you can use it at home, on a +boat... almost anywhere. The principle is to store CD-quality music using +MPEG technology onto a hard disk in the unit, and use the power of the +embedded computer to serve up the music you want. + +For more details, see: + + http://www.empeg.com + + + diff --git a/Documentation/arm/empeg/ir.txt b/Documentation/arm/empeg/ir.txt new file mode 100644 index 000000000000..10a297450164 --- /dev/null +++ b/Documentation/arm/empeg/ir.txt @@ -0,0 +1,49 @@ +Infra-red driver documentation. + +Mike Crowe +(C) Empeg Ltd 1999 + +Not a lot here yet :-) + +The Kenwood KCA-R6A remote control generates a sequence like the following: + +Go low for approx 16T (Around 9000us) +Go high for approx 8T (Around 4000us) +Go low for less than 2T (Around 750us) + +For each of the 32 bits + Go high for more than 2T (Around 1500us) == 1 + Go high for less than T (Around 400us) == 0 + Go low for less than 2T (Around 750us) + +Rather than repeat a signal when the button is held down certain buttons +generate the following code to indicate repetition. + +Go low for approx 16T +Go high for approx 4T +Go low for less than 2T + +(By removing the <2T from the start of the sequence and placing at the end + it can be considered a stop bit but I found it easier to deal with it at + the start). + +The 32 bits are encoded as XxYy where x and y are the actual data values +while X and Y are the logical inverses of the associated data values. Using +LSB first yields sensible codes for the numbers. + +All codes are of the form b9xx + +The numeric keys generate the code 0x where x is the number pressed. + +Tuner 1c +Tape 1d +CD 1e +CD-MD-CH 1f +Track- 0a +Track+ 0b +Rewind 0c +FF 0d +DNPP 5e +Play/Pause 0e +Vol+ 14 +Vol- 15 diff --git a/Documentation/arm/empeg/mkdevs b/Documentation/arm/empeg/mkdevs new file mode 100644 index 000000000000..7a85e28d14f3 --- /dev/null +++ b/Documentation/arm/empeg/mkdevs @@ -0,0 +1,11 @@ +#!/bin/sh +mknod /dev/display c 244 0 +mknod /dev/ir c 242 0 +mknod /dev/usb0 c 243 0 +mknod /dev/audio c 245 4 +mknod /dev/dsp c 245 3 +mknod /dev/mixer c 245 0 +mknod /dev/empeg_state c 246 0 +mknod /dev/radio0 c 81 64 +ln -sf radio0 radio +ln -sf usb0 usb diff --git a/Documentation/arm/mem_alignment b/Documentation/arm/mem_alignment new file mode 100644 index 000000000000..d145ccca169a --- /dev/null +++ b/Documentation/arm/mem_alignment @@ -0,0 +1,58 @@ +Too many problems poped up because of unnoticed misaligned memory access in +kernel code lately. Therefore the alignment fixup is now unconditionally +configured in for SA11x0 based targets. According to Alan Cox, this is a +bad idea to configure it out, but Russell King has some good reasons for +doing so on some f***ed up ARM architectures like the EBSA110. However +this is not the case on many design I'm aware of, like all SA11x0 based +ones. + +Of course this is a bad idea to rely on the alignment trap to perform +unaligned memory access in general. If those access are predictable, you +are better to use the macros provided by include/asm/unaligned.h. The +alignment trap can fixup misaligned access for the exception cases, but at +a high performance cost. It better be rare. + +Now for user space applications, it is possible to configure the alignment +trap to SIGBUS any code performing unaligned access (good for debugging bad +code), or even fixup the access by software like for kernel code. The later +mode isn't recommended for performance reasons (just think about the +floating point emulation that works about the same way). Fix your code +instead! + +Please note that randomly changing the behaviour without good thought is +real bad - it changes the behaviour of all unaligned instructions in user +space, and might cause programs to fail unexpectedly. + +To change the alignment trap behavior, simply echo a number into +/proc/sys/debug/alignment. The number is made up from various bits: + +bit behavior when set +--- ----------------- + +0 A user process performing an unaligned memory access + will cause the kernel to print a message indicating + process name, pid, pc, instruction, address, and the + fault code. + +1 The kernel will attempt to fix up the user process + performing the unaligned access. This is of course + slow (think about the floating point emulator) and + not recommended for production use. + +2 The kernel will send a SIGBUS signal to the user process + performing the unaligned access. + +Note that not all combinations are supported - only values 0 through 5. +(6 and 7 don't make sense). + +For example, the following will turn on the warnings, but without +fixing up or sending SIGBUS signals: + + echo 1 > /proc/sys/debug/alignment + +You can also read the content of the same file to get statistical +information on unaligned access occurrences plus the current mode of +operation for user space code. + + +Nicolas Pitre, Mar 13, 2001. Modified Russell King, Nov 30, 2001. diff --git a/Documentation/arm/memory.txt b/Documentation/arm/memory.txt new file mode 100644 index 000000000000..4b1c93a8177b --- /dev/null +++ b/Documentation/arm/memory.txt @@ -0,0 +1,72 @@ + Kernel Memory Layout on ARM Linux + + Russell King + May 21, 2004 (2.6.6) + +This document describes the virtual memory layout which the Linux +kernel uses for ARM processors. It indicates which regions are +free for platforms to use, and which are used by generic code. + +The ARM CPU is capable of addressing a maximum of 4GB virtual memory +space, and this must be shared between user space processes, the +kernel, and hardware devices. + +As the ARM architecture matures, it becomes necessary to reserve +certain regions of VM space for use for new facilities; therefore +this document may reserve more VM space over time. + +Start End Use +-------------------------------------------------------------------------- +ffff8000 ffffffff copy_user_page / clear_user_page use. + For SA11xx and Xscale, this is used to + setup a minicache mapping. + +ffff1000 ffff7fff Reserved. + Platforms must not use this address range. + +ffff0000 ffff0fff CPU vector page. + The CPU vectors are mapped here if the + CPU supports vector relocation (control + register V bit.) + +ffc00000 fffeffff DMA memory mapping region. Memory returned + by the dma_alloc_xxx functions will be + dynamically mapped here. + +ff000000 ffbfffff Reserved for future expansion of DMA + mapping region. + +VMALLOC_END feffffff Free for platform use, recommended. + +VMALLOC_START VMALLOC_END-1 vmalloc() / ioremap() space. + Memory returned by vmalloc/ioremap will + be dynamically placed in this region. + VMALLOC_START may be based upon the value + of the high_memory variable. + +PAGE_OFFSET high_memory-1 Kernel direct-mapped RAM region. + This maps the platforms RAM, and typically + maps all platform RAM in a 1:1 relationship. + +TASK_SIZE PAGE_OFFSET-1 Kernel module space + Kernel modules inserted via insmod are + placed here using dynamic mappings. + +00001000 TASK_SIZE-1 User space mappings + Per-thread mappings are placed here via + the mmap() system call. + +00000000 00000fff CPU vector page / null pointer trap + CPUs which do not support vector remapping + place their vector page here. NULL pointer + dereferences by both the kernel and user + space are also caught via this mapping. + +Please note that mappings which collide with the above areas may result +in a non-bootable kernel, or may cause the kernel to (eventually) panic +at run time. + +Since future CPUs may impact the kernel mapping layout, user programs +must not access any memory which is not mapped inside their 0x0001000 +to TASK_SIZE address range. If they wish to access these areas, they +must set up their own mappings using open() and mmap(). diff --git a/Documentation/arm/nwfpe/NOTES b/Documentation/arm/nwfpe/NOTES new file mode 100644 index 000000000000..40577b5a49d3 --- /dev/null +++ b/Documentation/arm/nwfpe/NOTES @@ -0,0 +1,29 @@ +There seems to be a problem with exp(double) and our emulator. I haven't +been able to track it down yet. This does not occur with the emulator +supplied by Russell King. + +I also found one oddity in the emulator. I don't think it is serious but +will point it out. The ARM calling conventions require floating point +registers f4-f7 to be preserved over a function call. The compiler quite +often uses an stfe instruction to save f4 on the stack upon entry to a +function, and an ldfe instruction to restore it before returning. + +I was looking at some code, that calculated a double result, stored it in f4 +then made a function call. Upon return from the function call the number in +f4 had been converted to an extended value in the emulator. + +This is a side effect of the stfe instruction. The double in f4 had to be +converted to extended, then stored. If an lfm/sfm combination had been used, +then no conversion would occur. This has performance considerations. The +result from the function call and f4 were used in a multiplication. If the +emulator sees a multiply of a double and extended, it promotes the double to +extended, then does the multiply in extended precision. + +This code will cause this problem: + +double x, y, z; +z = log(x)/log(y); + +The result of log(x) (a double) will be calculated, returned in f0, then +moved to f4 to preserve it over the log(y) call. The division will be done +in extended precision, due to the stfe instruction used to save f4 in log(y). diff --git a/Documentation/arm/nwfpe/README b/Documentation/arm/nwfpe/README new file mode 100644 index 000000000000..771871de0c8b --- /dev/null +++ b/Documentation/arm/nwfpe/README @@ -0,0 +1,70 @@ +This directory contains the version 0.92 test release of the NetWinder +Floating Point Emulator. + +The majority of the code was written by me, Scott Bambrough It is +written in C, with a small number of routines in inline assembler +where required. It was written quickly, with a goal of implementing a +working version of all the floating point instructions the compiler +emits as the first target. I have attempted to be as optimal as +possible, but there remains much room for improvement. + +I have attempted to make the emulator as portable as possible. One of +the problems is with leading underscores on kernel symbols. Elf +kernels have no leading underscores, a.out compiled kernels do. I +have attempted to use the C_SYMBOL_NAME macro wherever this may be +important. + +Another choice I made was in the file structure. I have attempted to +contain all operating system specific code in one module (fpmodule.*). +All the other files contain emulator specific code. This should allow +others to port the emulator to NetBSD for instance relatively easily. + +The floating point operations are based on SoftFloat Release 2, by +John Hauser. SoftFloat is a software implementation of floating-point +that conforms to the IEC/IEEE Standard for Binary Floating-point +Arithmetic. As many as four formats are supported: single precision, +double precision, extended double precision, and quadruple precision. +All operations required by the standard are implemented, except for +conversions to and from decimal. We use only the single precision, +double precision and extended double precision formats. The port of +SoftFloat to the ARM was done by Phil Blundell, based on an earlier +port of SoftFloat version 1 by Neil Carson for NetBSD/arm32. + +The file README.FPE contains a description of what has been implemented +so far in the emulator. The file TODO contains a information on what +remains to be done, and other ideas for the emulator. + +Bug reports, comments, suggestions should be directed to me at +. General reports of "this program doesn't +work correctly when your emulator is installed" are useful for +determining that bugs still exist; but are virtually useless when +attempting to isolate the problem. Please report them, but don't +expect quick action. Bugs still exist. The problem remains in isolating +which instruction contains the bug. Small programs illustrating a specific +problem are a godsend. + +Legal Notices +------------- + +The NetWinder Floating Point Emulator is free software. Everything Rebel.com +has written is provided under the GNU GPL. See the file COPYING for copying +conditions. Excluded from the above is the SoftFloat code. John Hauser's +legal notice for SoftFloat is included below. + +------------------------------------------------------------------------------- +SoftFloat Legal Notice + +SoftFloat was written by John R. Hauser. This work was made possible in +part by the International Computer Science Institute, located at Suite 600, +1947 Center Street, Berkeley, California 94704. Funding was partially +provided by the National Science Foundation under grant MIP-9311980. The +original version of this code was written as part of a project to build +a fixed-point vector processor in collaboration with the University of +California at Berkeley, overseen by Profs. Nelson Morgan and John Wawrzynek. + +THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE. Although reasonable effort +has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT +TIMES RESULT IN INCORRECT BEHAVIOR. USE OF THIS SOFTWARE IS RESTRICTED TO +PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY +AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE. +------------------------------------------------------------------------------- diff --git a/Documentation/arm/nwfpe/README.FPE b/Documentation/arm/nwfpe/README.FPE new file mode 100644 index 000000000000..26f5d7bb9a41 --- /dev/null +++ b/Documentation/arm/nwfpe/README.FPE @@ -0,0 +1,156 @@ +The following describes the current state of the NetWinder's floating point +emulator. + +In the following nomenclature is used to describe the floating point +instructions. It follows the conventions in the ARM manual. + + = , no default +{P|M|Z} = {round to +infinity,round to -infinity,round to zero}, + default = round to nearest + +Note: items enclosed in {} are optional. + +Floating Point Coprocessor Data Transfer Instructions (CPDT) +------------------------------------------------------------ + +LDF/STF - load and store floating + +{cond} Fd, Rn +{cond} Fd, [Rn, #]{!} +{cond} Fd, [Rn], # + +These instructions are fully implemented. + +LFM/SFM - load and store multiple floating + +Form 1 syntax: +{cond} Fd, , [Rn] +{cond} Fd, , [Rn, #]{!} +{cond} Fd, , [Rn], # + +Form 2 syntax: +{cond} Fd, , [Rn]{!} + +These instructions are fully implemented. They store/load three words +for each floating point register into the memory location given in the +instruction. The format in memory is unlikely to be compatible with +other implementations, in particular the actual hardware. Specific +mention of this is made in the ARM manuals. + +Floating Point Coprocessor Register Transfer Instructions (CPRT) +---------------------------------------------------------------- + +Conversions, read/write status/control register instructions + +FLT{cond}{P,M,Z} Fn, Rd Convert integer to floating point +FIX{cond}{P,M,Z} Rd, Fn Convert floating point to integer +WFS{cond} Rd Write floating point status register +RFS{cond} Rd Read floating point status register +WFC{cond} Rd Write floating point control register +RFC{cond} Rd Read floating point control register + +FLT/FIX are fully implemented. + +RFS/WFS are fully implemented. + +RFC/WFC are fully implemented. RFC/WFC are supervisor only instructions, and +presently check the CPU mode, and do an invalid instruction trap if not called +from supervisor mode. + +Compare instructions + +CMF{cond} Fn, Fm Compare floating +CMFE{cond} Fn, Fm Compare floating with exception +CNF{cond} Fn, Fm Compare negated floating +CNFE{cond} Fn, Fm Compare negated floating with exception + +These are fully implemented. + +Floating Point Coprocessor Data Instructions (CPDT) +--------------------------------------------------- + +Dyadic operations: + +ADF{cond}{P,M,Z} Fd, Fn, - add +SUF{cond}{P,M,Z} Fd, Fn, - subtract +RSF{cond}{P,M,Z} Fd, Fn, - reverse subtract +MUF{cond}{P,M,Z} Fd, Fn, - multiply +DVF{cond}{P,M,Z} Fd, Fn, - divide +RDV{cond}{P,M,Z} Fd, Fn, - reverse divide + +These are fully implemented. + +FML{cond}{P,M,Z} Fd, Fn, - fast multiply +FDV{cond}{P,M,Z} Fd, Fn, - fast divide +FRD{cond}{P,M,Z} Fd, Fn, - fast reverse divide + +These are fully implemented as well. They use the same algorithm as the +non-fast versions. Hence, in this implementation their performance is +equivalent to the MUF/DVF/RDV instructions. This is acceptable according +to the ARM manual. The manual notes these are defined only for single +operands, on the actual FPA11 hardware they do not work for double or +extended precision operands. The emulator currently does not check +the requested permissions conditions, and performs the requested operation. + +RMF{cond}{P,M,Z} Fd, Fn, - IEEE remainder + +This is fully implemented. + +Monadic operations: + +MVF{cond}{P,M,Z} Fd, - move +MNF{cond}{P,M,Z} Fd, - move negated + +These are fully implemented. + +ABS{cond}{P,M,Z} Fd, - absolute value +SQT{cond}{P,M,Z} Fd, - square root +RND{cond}{P,M,Z} Fd, - round + +These are fully implemented. + +URD{cond}{P,M,Z} Fd, - unnormalized round +NRM{cond}{P,M,Z} Fd, - normalize + +These are implemented. URD is implemented using the same code as the RND +instruction. Since URD cannot return a unnormalized number, NRM becomes +a NOP. + +Library calls: + +POW{cond}{P,M,Z} Fd, Fn, - power +RPW{cond}{P,M,Z} Fd, Fn, - reverse power +POL{cond}{P,M,Z} Fd, Fn, - polar angle (arctan2) + +LOG{cond}{P,M,Z} Fd, - logarithm to base 10 +LGN{cond}{P,M,Z} Fd, - logarithm to base e +EXP{cond}{P,M,Z} Fd, - exponent +SIN{cond}{P,M,Z} Fd, - sine +COS{cond}{P,M,Z} Fd, - cosine +TAN{cond}{P,M,Z} Fd, - tangent +ASN{cond}{P,M,Z} Fd, - arcsine +ACS{cond}{P,M,Z} Fd, - arccosine +ATN{cond}{P,M,Z} Fd, - arctangent + +These are not implemented. They are not currently issued by the compiler, +and are handled by routines in libc. These are not implemented by the FPA11 +hardware, but are handled by the floating point support code. They should +be implemented in future versions. + +Signalling: + +Signals are implemented. However current ELF kernels produced by Rebel.com +have a bug in them that prevents the module from generating a SIGFPE. This +is caused by a failure to alias fp_current to the kernel variable +current_set[0] correctly. + +The kernel provided with this distribution (vmlinux-nwfpe-0.93) contains +a fix for this problem and also incorporates the current version of the +emulator directly. It is possible to run with no floating point module +loaded with this kernel. It is provided as a demonstration of the +technology and for those who want to do floating point work that depends +on signals. It is not strictly necessary to use the module. + +A module (either the one provided by Russell King, or the one in this +distribution) can be loaded to replace the functionality of the emulator +built into the kernel. diff --git a/Documentation/arm/nwfpe/TODO b/Documentation/arm/nwfpe/TODO new file mode 100644 index 000000000000..8027061b60eb --- /dev/null +++ b/Documentation/arm/nwfpe/TODO @@ -0,0 +1,67 @@ +TODO LIST +--------- + +POW{cond}{P,M,Z} Fd, Fn, - power +RPW{cond}{P,M,Z} Fd, Fn, - reverse power +POL{cond}{P,M,Z} Fd, Fn, - polar angle (arctan2) + +LOG{cond}{P,M,Z} Fd, - logarithm to base 10 +LGN{cond}{P,M,Z} Fd, - logarithm to base e +EXP{cond}{P,M,Z} Fd, - exponent +SIN{cond}{P,M,Z} Fd, - sine +COS{cond}{P,M,Z} Fd, - cosine +TAN{cond}{P,M,Z} Fd, - tangent +ASN{cond}{P,M,Z} Fd, - arcsine +ACS{cond}{P,M,Z} Fd, - arccosine +ATN{cond}{P,M,Z} Fd, - arctangent + +These are not implemented. They are not currently issued by the compiler, +and are handled by routines in libc. These are not implemented by the FPA11 +hardware, but are handled by the floating point support code. They should +be implemented in future versions. + +There are a couple of ways to approach the implementation of these. One +method would be to use accurate table methods for these routines. I have +a couple of papers by S. Gal from IBM's research labs in Haifa, Israel that +seem to promise extreme accuracy (in the order of 99.8%) and reasonable speed. +These methods are used in GLIBC for some of the transcendental functions. + +Another approach, which I know little about is CORDIC. This stands for +Coordinate Rotation Digital Computer, and is a method of computing +transcendental functions using mostly shifts and adds and a few +multiplications and divisions. The ARM excels at shifts and adds, +so such a method could be promising, but requires more research to +determine if it is feasible. + +Rounding Methods + +The IEEE standard defines 4 rounding modes. Round to nearest is the +default, but rounding to + or - infinity or round to zero are also allowed. +Many architectures allow the rounding mode to be specified by modifying bits +in a control register. Not so with the ARM FPA11 architecture. To change +the rounding mode one must specify it with each instruction. + +This has made porting some benchmarks difficult. It is possible to +introduce such a capability into the emulator. The FPCR contains +bits describing the rounding mode. The emulator could be altered to +examine a flag, which if set forced it to ignore the rounding mode in +the instruction, and use the mode specified in the bits in the FPCR. + +This would require a method of getting/setting the flag, and the bits +in the FPCR. This requires a kernel call in ArmLinux, as WFC/RFC are +supervisor only instructions. If anyone has any ideas or comments I +would like to hear them. + +[NOTE: pulled out from some docs on ARM floating point, specifically + for the Acorn FPE, but not limited to it: + + The floating point control register (FPCR) may only be present in some + implementations: it is there to control the hardware in an implementation- + specific manner, for example to disable the floating point system. The user + mode of the ARM is not permitted to use this register (since the right is + reserved to alter it between implementations) and the WFC and RFC + instructions will trap if tried in user mode. + + Hence, the answer is yes, you could do this, but then you will run a high + risk of becoming isolated if and when hardware FP emulation comes out + -- Russell]. diff --git a/Documentation/atomic_ops.txt b/Documentation/atomic_ops.txt new file mode 100644 index 000000000000..8eedaa24f5e2 --- /dev/null +++ b/Documentation/atomic_ops.txt @@ -0,0 +1,456 @@ + Semantics and Behavior of Atomic and + Bitmask Operations + + David S. Miller + + This document is intended to serve as a guide to Linux port +maintainers on how to implement atomic counter, bitops, and spinlock +interfaces properly. + + The atomic_t type should be defined as a signed integer. +Also, it should be made opaque such that any kind of cast to a normal +C integer type will fail. Something like the following should +suffice: + + typedef struct { volatile int counter; } atomic_t; + + The first operations to implement for atomic_t's are the +initializers and plain reads. + + #define ATOMIC_INIT(i) { (i) } + #define atomic_set(v, i) ((v)->counter = (i)) + +The first macro is used in definitions, such as: + +static atomic_t my_counter = ATOMIC_INIT(1); + +The second interface can be used at runtime, as in: + + struct foo { atomic_t counter; }; + ... + + struct foo *k; + + k = kmalloc(sizeof(*k), GFP_KERNEL); + if (!k) + return -ENOMEM; + atomic_set(&k->counter, 0); + +Next, we have: + + #define atomic_read(v) ((v)->counter) + +which simply reads the current value of the counter. + +Now, we move onto the actual atomic operation interfaces. + + void atomic_add(int i, atomic_t *v); + void atomic_sub(int i, atomic_t *v); + void atomic_inc(atomic_t *v); + void atomic_dec(atomic_t *v); + +These four routines add and subtract integral values to/from the given +atomic_t value. The first two routines pass explicit integers by +which to make the adjustment, whereas the latter two use an implicit +adjustment value of "1". + +One very important aspect of these two routines is that they DO NOT +require any explicit memory barriers. They need only perform the +atomic_t counter update in an SMP safe manner. + +Next, we have: + + int atomic_inc_return(atomic_t *v); + int atomic_dec_return(atomic_t *v); + +These routines add 1 and subtract 1, respectively, from the given +atomic_t and return the new counter value after the operation is +performed. + +Unlike the above routines, it is required that explicit memory +barriers are performed before and after the operation. It must be +done such that all memory operations before and after the atomic +operation calls are strongly ordered with respect to the atomic +operation itself. + +For example, it should behave as if a smp_mb() call existed both +before and after the atomic operation. + +If the atomic instructions used in an implementation provide explicit +memory barrier semantics which satisfy the above requirements, that is +fine as well. + +Let's move on: + + int atomic_add_return(int i, atomic_t *v); + int atomic_sub_return(int i, atomic_t *v); + +These behave just like atomic_{inc,dec}_return() except that an +explicit counter adjustment is given instead of the implicit "1". +This means that like atomic_{inc,dec}_return(), the memory barrier +semantics are required. + +Next: + + int atomic_inc_and_test(atomic_t *v); + int atomic_dec_and_test(atomic_t *v); + +These two routines increment and decrement by 1, respectively, the +given atomic counter. They return a boolean indicating whether the +resulting counter value was zero or not. + +It requires explicit memory barrier semantics around the operation as +above. + + int atomic_sub_and_test(int i, atomic_t *v); + +This is identical to atomic_dec_and_test() except that an explicit +decrement is given instead of the implicit "1". It requires explicit +memory barrier semantics around the operation. + + int atomic_add_negative(int i, atomic_t *v); + +The given increment is added to the given atomic counter value. A +boolean is return which indicates whether the resulting counter value +is negative. It requires explicit memory barrier semantics around the +operation. + +If a caller requires memory barrier semantics around an atomic_t +operation which does not return a value, a set of interfaces are +defined which accomplish this: + + void smp_mb__before_atomic_dec(void); + void smp_mb__after_atomic_dec(void); + void smp_mb__before_atomic_inc(void); + void smp_mb__after_atomic_dec(void); + +For example, smp_mb__before_atomic_dec() can be used like so: + + obj->dead = 1; + smp_mb__before_atomic_dec(); + atomic_dec(&obj->ref_count); + +It makes sure that all memory operations preceeding the atomic_dec() +call are strongly ordered with respect to the atomic counter +operation. In the above example, it guarentees that the assignment of +"1" to obj->dead will be globally visible to other cpus before the +atomic counter decrement. + +Without the explicitl smp_mb__before_atomic_dec() call, the +implementation could legally allow the atomic counter update visible +to other cpus before the "obj->dead = 1;" assignment. + +The other three interfaces listed are used to provide explicit +ordering with respect to memory operations after an atomic_dec() call +(smp_mb__after_atomic_dec()) and around atomic_inc() calls +(smp_mb__{before,after}_atomic_inc()). + +A missing memory barrier in the cases where they are required by the +atomic_t implementation above can have disasterous results. Here is +an example, which follows a pattern occuring frequently in the Linux +kernel. It is the use of atomic counters to implement reference +counting, and it works such that once the counter falls to zero it can +be guarenteed that no other entity can be accessing the object: + +static void obj_list_add(struct obj *obj) +{ + obj->active = 1; + list_add(&obj->list); +} + +static void obj_list_del(struct obj *obj) +{ + list_del(&obj->list); + obj->active = 0; +} + +static void obj_destroy(struct obj *obj) +{ + BUG_ON(obj->active); + kfree(obj); +} + +struct obj *obj_list_peek(struct list_head *head) +{ + if (!list_empty(head)) { + struct obj *obj; + + obj = list_entry(head->next, struct obj, list); + atomic_inc(&obj->refcnt); + return obj; + } + return NULL; +} + +void obj_poke(void) +{ + struct obj *obj; + + spin_lock(&global_list_lock); + obj = obj_list_peek(&global_list); + spin_unlock(&global_list_lock); + + if (obj) { + obj->ops->poke(obj); + if (atomic_dec_and_test(&obj->refcnt)) + obj_destroy(obj); + } +} + +void obj_timeout(struct obj *obj) +{ + spin_lock(&global_list_lock); + obj_list_del(obj); + spin_unlock(&global_list_lock); + + if (atomic_dec_and_test(&obj->refcnt)) + obj_destroy(obj); +} + +(This is a simplification of the ARP queue management in the + generic neighbour discover code of the networking. Olaf Kirch + found a bug wrt. memory barriers in kfree_skb() that exposed + the atomic_t memory barrier requirements quite clearly.) + +Given the above scheme, it must be the case that the obj->active +update done by the obj list deletion be visible to other processors +before the atomic counter decrement is performed. + +Otherwise, the counter could fall to zero, yet obj->active would still +be set, thus triggering the assertion in obj_destroy(). The error +sequence looks like this: + + cpu 0 cpu 1 + obj_poke() obj_timeout() + obj = obj_list_peek(); + ... gains ref to obj, refcnt=2 + obj_list_del(obj); + obj->active = 0 ... + ... visibility delayed ... + atomic_dec_and_test() + ... refcnt drops to 1 ... + atomic_dec_and_test() + ... refcount drops to 0 ... + obj_destroy() + BUG() triggers since obj->active + still seen as one + obj->active update visibility occurs + +With the memory barrier semantics required of the atomic_t operations +which return values, the above sequence of memory visibility can never +happen. Specifically, in the above case the atomic_dec_and_test() +counter decrement would not become globally visible until the +obj->active update does. + +As a historical note, 32-bit Sparc used to only allow usage of +24-bits of it's atomic_t type. This was because it used 8 bits +as a spinlock for SMP safety. Sparc32 lacked a "compare and swap" +type instruction. However, 32-bit Sparc has since been moved over +to a "hash table of spinlocks" scheme, that allows the full 32-bit +counter to be realized. Essentially, an array of spinlocks are +indexed into based upon the address of the atomic_t being operated +on, and that lock protects the atomic operation. Parisc uses the +same scheme. + +Another note is that the atomic_t operations returning values are +extremely slow on an old 386. + +We will now cover the atomic bitmask operations. You will find that +their SMP and memory barrier semantics are similar in shape and scope +to the atomic_t ops above. + +Native atomic bit operations are defined to operate on objects aligned +to the size of an "unsigned long" C data type, and are least of that +size. The endianness of the bits within each "unsigned long" are the +native endianness of the cpu. + + void set_bit(unsigned long nr, volatils unsigned long *addr); + void clear_bit(unsigned long nr, volatils unsigned long *addr); + void change_bit(unsigned long nr, volatils unsigned long *addr); + +These routines set, clear, and change, respectively, the bit number +indicated by "nr" on the bit mask pointed to by "ADDR". + +They must execute atomically, yet there are no implicit memory barrier +semantics required of these interfaces. + + int test_and_set_bit(unsigned long nr, volatils unsigned long *addr); + int test_and_clear_bit(unsigned long nr, volatils unsigned long *addr); + int test_and_change_bit(unsigned long nr, volatils unsigned long *addr); + +Like the above, except that these routines return a boolean which +indicates whether the changed bit was set _BEFORE_ the atomic bit +operation. + +WARNING! It is incredibly important that the value be a boolean, +ie. "0" or "1". Do not try to be fancy and save a few instructions by +declaring the above to return "long" and just returning something like +"old_val & mask" because that will not work. + +For one thing, this return value gets truncated to int in many code +paths using these interfaces, so on 64-bit if the bit is set in the +upper 32-bits then testers will never see that. + +One great example of where this problem crops up are the thread_info +flag operations. Routines such as test_and_set_ti_thread_flag() chop +the return value into an int. There are other places where things +like this occur as well. + +These routines, like the atomic_t counter operations returning values, +require explicit memory barrier semantics around their execution. All +memory operations before the atomic bit operation call must be made +visible globally before the atomic bit operation is made visible. +Likewise, the atomic bit operation must be visible globally before any +subsequent memory operation is made visible. For example: + + obj->dead = 1; + if (test_and_set_bit(0, &obj->flags)) + /* ... */; + obj->killed = 1; + +The implementation of test_and_set_bit() must guarentee that +"obj->dead = 1;" is visible to cpus before the atomic memory operation +done by test_and_set_bit() becomes visible. Likewise, the atomic +memory operation done by test_and_set_bit() must become visible before +"obj->killed = 1;" is visible. + +Finally there is the basic operation: + + int test_bit(unsigned long nr, __const__ volatile unsigned long *addr); + +Which returns a boolean indicating if bit "nr" is set in the bitmask +pointed to by "addr". + +If explicit memory barriers are required around clear_bit() (which +does not return a value, and thus does not need to provide memory +barrier semantics), two interfaces are provided: + + void smp_mb__before_clear_bit(void); + void smp_mb__after_clear_bit(void); + +They are used as follows, and are akin to their atomic_t operation +brothers: + + /* All memory operations before this call will + * be globally visible before the clear_bit(). + */ + smp_mb__before_clear_bit(); + clear_bit( ... ); + + /* The clear_bit() will be visible before all + * subsequent memory operations. + */ + smp_mb__after_clear_bit(); + +Finally, there are non-atomic versions of the bitmask operations +provided. They are used in contexts where some other higher-level SMP +locking scheme is being used to protect the bitmask, and thus less +expensive non-atomic operations may be used in the implementation. +They have names similar to the above bitmask operation interfaces, +except that two underscores are prefixed to the interface name. + + void __set_bit(unsigned long nr, volatile unsigned long *addr); + void __clear_bit(unsigned long nr, volatile unsigned long *addr); + void __change_bit(unsigned long nr, volatile unsigned long *addr); + int __test_and_set_bit(unsigned long nr, volatile unsigned long *addr); + int __test_and_clear_bit(unsigned long nr, volatile unsigned long *addr); + int __test_and_change_bit(unsigned long nr, volatile unsigned long *addr); + +These non-atomic variants also do not require any special memory +barrier semantics. + +The routines xchg() and cmpxchg() need the same exact memory barriers +as the atomic and bit operations returning values. + +Spinlocks and rwlocks have memory barrier expectations as well. +The rule to follow is simple: + +1) When acquiring a lock, the implementation must make it globally + visible before any subsequent memory operation. + +2) When releasing a lock, the implementation must make it such that + all previous memory operations are globally visible before the + lock release. + +Which finally brings us to _atomic_dec_and_lock(). There is an +architecture-neutral version implemented in lib/dec_and_lock.c, +but most platforms will wish to optimize this in assembler. + + int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock); + +Atomically decrement the given counter, and if will drop to zero +atomically acquire the given spinlock and perform the decrement +of the counter to zero. If it does not drop to zero, do nothing +with the spinlock. + +It is actually pretty simple to get the memory barrier correct. +Simply satisfy the spinlock grab requirements, which is make +sure the spinlock operation is globally visible before any +subsequent memory operation. + +We can demonstrate this operation more clearly if we define +an abstract atomic operation: + + long cas(long *mem, long old, long new); + +"cas" stands for "compare and swap". It atomically: + +1) Compares "old" with the value currently at "mem". +2) If they are equal, "new" is written to "mem". +3) Regardless, the current value at "mem" is returned. + +As an example usage, here is what an atomic counter update +might look like: + +void example_atomic_inc(long *counter) +{ + long old, new, ret; + + while (1) { + old = *counter; + new = old + 1; + + ret = cas(counter, old, new); + if (ret == old) + break; + } +} + +Let's use cas() in order to build a pseudo-C atomic_dec_and_lock(): + +int _atomic_dec_and_lock(atomic_t *atomic, spinlock_t *lock) +{ + long old, new, ret; + int went_to_zero; + + went_to_zero = 0; + while (1) { + old = atomic_read(atomic); + new = old - 1; + if (new == 0) { + went_to_zero = 1; + spin_lock(lock); + } + ret = cas(atomic, old, new); + if (ret == old) + break; + if (went_to_zero) { + spin_unlock(lock); + went_to_zero = 0; + } + } + + return went_to_zero; +} + +Now, as far as memory barriers go, as long as spin_lock() +strictly orders all subsequent memory operations (including +the cas()) with respect to itself, things will be fine. + +Said another way, _atomic_dec_and_lock() must guarentee that +a counter dropping to zero is never made visible before the +spinlock being acquired. + +Note that this also means that for the case where the counter +is not dropping to zero, there are no memory ordering +requirements. diff --git a/Documentation/basic_profiling.txt b/Documentation/basic_profiling.txt new file mode 100644 index 000000000000..65e3dc2d4437 --- /dev/null +++ b/Documentation/basic_profiling.txt @@ -0,0 +1,52 @@ +These instructions are deliberately very basic. If you want something clever, +go read the real docs ;-) Please don't add more stuff, but feel free to +correct my mistakes ;-) (mbligh@aracnet.com) +Thanks to John Levon, Dave Hansen, et al. for help writing this. + + is the thing you're trying to measure. +Make sure you have the correct System.map / vmlinux referenced! + +It is probably easiest to use "make install" for linux and hack +/sbin/installkernel to copy vmlinux to /boot, in addition to vmlinuz, +config, System.map, which are usually installed by default. + +Readprofile +----------- +A recent readprofile command is needed for 2.6, such as found in util-linux +2.12a, which can be downloaded from: + +http://www.kernel.org/pub/linux/utils/util-linux/ + +Most distributions will ship it already. + +Add "profile=2" to the kernel command line. + +clear readprofile -r + +dump output readprofile -m /boot/System.map > captured_profile + +Oprofile +-------- +Get the source (I use 0.8) from http://oprofile.sourceforge.net/ +and add "idle=poll" to the kernel command line +Configure with CONFIG_PROFILING=y and CONFIG_OPROFILE=y & reboot on new kernel +./configure --with-kernel-support +make install + +For superior results, be sure to enable the local APIC. If opreport sees +a 0Hz CPU, APIC was not on. Be aware that idle=poll may mean a performance +penalty. + +One time setup: + opcontrol --setup --vmlinux=/boot/vmlinux + +clear opcontrol --reset +start opcontrol --start + +stop opcontrol --stop +dump output opreport > output_file + +To only report on the kernel, run opreport /boot/vmlinux > output_file + +A reset is needed to clear old statistics, which survive a reboot. + diff --git a/Documentation/binfmt_misc.txt b/Documentation/binfmt_misc.txt new file mode 100644 index 000000000000..d097f09ee15a --- /dev/null +++ b/Documentation/binfmt_misc.txt @@ -0,0 +1,116 @@ + Kernel Support for miscellaneous (your favourite) Binary Formats v1.1 + ===================================================================== + +This Kernel feature allows you to invoke almost (for restrictions see below) +every program by simply typing its name in the shell. +This includes for example compiled Java(TM), Python or Emacs programs. + +To achieve this you must tell binfmt_misc which interpreter has to be invoked +with which binary. Binfmt_misc recognises the binary-type by matching some bytes +at the beginning of the file with a magic byte sequence (masking out specified +bits) you have supplied. Binfmt_misc can also recognise a filename extension +aka '.com' or '.exe'. + +First you must mount binfmt_misc: + mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc + +To actually register a new binary type, you have to set up a string looking like +:name:type:offset:magic:mask:interpreter:flags (where you can choose the ':' upon +your needs) and echo it to /proc/sys/fs/binfmt_misc/register. +Here is what the fields mean: + - 'name' is an identifier string. A new /proc file will be created with this + name below /proc/sys/fs/binfmt_misc + - 'type' is the type of recognition. Give 'M' for magic and 'E' for extension. + - 'offset' is the offset of the magic/mask in the file, counted in bytes. This + defaults to 0 if you omit it (i.e. you write ':name:type::magic...') + - 'magic' is the byte sequence binfmt_misc is matching for. The magic string + may contain hex-encoded characters like \x0a or \xA4. In a shell environment + you will have to write \\x0a to prevent the shell from eating your \. + If you chose filename extension matching, this is the extension to be + recognised (without the '.', the \x0a specials are not allowed). Extension + matching is case sensitive! + - 'mask' is an (optional, defaults to all 0xff) mask. You can mask out some + bits from matching by supplying a string like magic and as long as magic. + The mask is anded with the byte sequence of the file. + - 'interpreter' is the program that should be invoked with the binary as first + argument (specify the full path) + - 'flags' is an optional field that controls several aspects of the invocation + of the interpreter. It is a string of capital letters, each controls a certain + aspect. The following flags are supported - + 'P' - preserve-argv[0]. Legacy behavior of binfmt_misc is to overwrite the + original argv[0] with the full path to the binary. When this flag is + included, binfmt_misc will add an argument to the argument vector for + this purpose, thus preserving the original argv[0]. + 'O' - open-binary. Legacy behavior of binfmt_misc is to pass the full path + of the binary to the interpreter as an argument. When this flag is + included, binfmt_misc will open the file for reading and pass its + descriptor as an argument, instead of the full path, thus allowing + the interpreter to execute non-readable binaries. This feature should + be used with care - the interpreter has to be trusted not to emit + the contents of the non-readable binary. + 'C' - credentials. Currently, the behavior of binfmt_misc is to calculate + the credentials and security token of the new process according to + the interpreter. When this flag is included, these attributes are + calculated according to the binary. It also implies the 'O' flag. + This feature should be used with care as the interpreter + will run with root permissions when a setuid binary owned by root + is run with binfmt_misc. + + +There are some restrictions: + - the whole register string may not exceed 255 characters + - the magic must reside in the first 128 bytes of the file, i.e. + offset+size(magic) has to be less than 128 + - the interpreter string may not exceed 127 characters + +To use binfmt_misc you have to mount it first. You can mount it with +"mount -t binfmt_misc none /proc/sys/fs/binfmt_misc" command, or you can add +a line "none /proc/sys/fs/binfmt_misc binfmt_misc defaults 0 0" to your +/etc/fstab so it auto mounts on boot. + +You may want to add the binary formats in one of your /etc/rc scripts during +boot-up. Read the manual of your init program to figure out how to do this +right. + +Think about the order of adding entries! Later added entries are matched first! + + +A few examples (assumed you are in /proc/sys/fs/binfmt_misc): + +- enable support for em86 (like binfmt_em86, for Alpha AXP only): + echo ':i386:M::\x7fELF\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x03:\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfb\xff\xff:/bin/em86:' > register + echo ':i486:M::\x7fELF\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x06:\xff\xff\xff\xff\xff\xfe\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xff\xfb\xff\xff:/bin/em86:' > register + +- enable support for packed DOS applications (pre-configured dosemu hdimages): + echo ':DEXE:M::\x0eDEX::/usr/bin/dosexec:' > register + +- enable support for Windows executables using wine: + echo ':DOSWin:M::MZ::/usr/local/bin/wine:' > register + +For java support see Documentation/java.txt + + +You can enable/disable binfmt_misc or one binary type by echoing 0 (to disable) +or 1 (to enable) to /proc/sys/fs/binfmt_misc/status or /proc/.../the_name. +Catting the file tells you the current status of binfmt_misc/the entry. + +You can remove one entry or all entries by echoing -1 to /proc/.../the_name +or /proc/sys/fs/binfmt_misc/status. + + +HINTS: +====== + +If you want to pass special arguments to your interpreter, you can +write a wrapper script for it. See Documentation/java.txt for an +example. + +Your interpreter should NOT look in the PATH for the filename; the kernel +passes it the full filename (or the file descriptor) to use. Using $PATH can +cause unexpected behaviour and can be a security hazard. + + +There is a web page about binfmt_misc at +http://www.tat.physik.uni-tuebingen.de/~rguenth/linux/binfmt_misc.html + +Richard Günther diff --git a/Documentation/block/as-iosched.txt b/Documentation/block/as-iosched.txt new file mode 100644 index 000000000000..6f47332c883d --- /dev/null +++ b/Documentation/block/as-iosched.txt @@ -0,0 +1,165 @@ +Anticipatory IO scheduler +------------------------- +Nick Piggin 13 Sep 2003 + +Attention! Database servers, especially those using "TCQ" disks should +investigate performance with the 'deadline' IO scheduler. Any system with high +disk performance requirements should do so, in fact. + +If you see unusual performance characteristics of your disk systems, or you +see big performance regressions versus the deadline scheduler, please email +me. Database users don't bother unless you're willing to test a lot of patches +from me ;) its a known issue. + +Also, users with hardware RAID controllers, doing striping, may find +highly variable performance results with using the as-iosched. The +as-iosched anticipatory implementation is based on the notion that a disk +device has only one physical seeking head. A striped RAID controller +actually has a head for each physical device in the logical RAID device. + +However, setting the antic_expire (see tunable parameters below) produces +very similar behavior to the deadline IO scheduler. + + +Selecting IO schedulers +----------------------- +To choose IO schedulers at boot time, use the argument 'elevator=deadline'. +'noop' and 'as' (the default) are also available. IO schedulers are assigned +globally at boot time only presently. + + +Anticipatory IO scheduler Policies +---------------------------------- +The as-iosched implementation implements several layers of policies +to determine when an IO request is dispatched to the disk controller. +Here are the policies outlined, in order of application. + +1. one-way Elevator algorithm. + +The elevator algorithm is similar to that used in deadline scheduler, with +the addition that it allows limited backward movement of the elevator +(i.e. seeks backwards). A seek backwards can occur when choosing between +two IO requests where one is behind the elevator's current position, and +the other is in front of the elevator's position. If the seek distance to +the request in back of the elevator is less than half the seek distance to +the request in front of the elevator, then the request in back can be chosen. +Backward seeks are also limited to a maximum of MAXBACK (1024*1024) sectors. +This favors forward movement of the elevator, while allowing opportunistic +"short" backward seeks. + +2. FIFO expiration times for reads and for writes. + +This is again very similar to the deadline IO scheduler. The expiration +times for requests on these lists is tunable using the parameters read_expire +and write_expire discussed below. When a read or a write expires in this way, +the IO scheduler will interrupt its current elevator sweep or read anticipation +to service the expired request. + +3. Read and write request batching + +A batch is a collection of read requests or a collection of write +requests. The as scheduler alternates dispatching read and write batches +to the driver. In the case a read batch, the scheduler submits read +requests to the driver as long as there are read requests to submit, and +the read batch time limit has not been exceeded (read_batch_expire). +The read batch time limit begins counting down only when there are +competing write requests pending. + +In the case of a write batch, the scheduler submits write requests to +the driver as long as there are write requests available, and the +write batch time limit has not been exceeded (write_batch_expire). +However, the length of write batches will be gradually shortened +when read batches frequently exceed their time limit. + +When changing between batch types, the scheduler waits for all requests +from the previous batch to complete before scheduling requests for the +next batch. + +The read and write fifo expiration times described in policy 2 above +are checked only when in scheduling IO of a batch for the corresponding +(read/write) type. So for example, the read FIFO timeout values are +tested only during read batches. Likewise, the write FIFO timeout +values are tested only during write batches. For this reason, +it is generally not recommended for the read batch time +to be longer than the write expiration time, nor for the write batch +time to exceed the read expiration time (see tunable parameters below). + +When the IO scheduler changes from a read to a write batch, +it begins the elevator from the request that is on the head of the +write expiration FIFO. Likewise, when changing from a write batch to +a read batch, scheduler begins the elevator from the first entry +on the read expiration FIFO. + +4. Read anticipation. + +Read anticipation occurs only when scheduling a read batch. +This implementation of read anticipation allows only one read request +to be dispatched to the disk controller at a time. In +contrast, many write requests may be dispatched to the disk controller +at a time during a write batch. It is this characteristic that can make +the anticipatory scheduler perform anomalously with controllers supporting +TCQ, or with hardware striped RAID devices. Setting the antic_expire +queue paramter (see below) to zero disables this behavior, and the anticipatory +scheduler behaves essentially like the deadline scheduler. + +When read anticipation is enabled (antic_expire is not zero), reads +are dispatched to the disk controller one at a time. +At the end of each read request, the IO scheduler examines its next +candidate read request from its sorted read list. If that next request +is from the same process as the request that just completed, +or if the next request in the queue is "very close" to the +just completed request, it is dispatched immediately. Otherwise, +statistics (average think time, average seek distance) on the process +that submitted the just completed request are examined. If it seems +likely that that process will submit another request soon, and that +request is likely to be near the just completed request, then the IO +scheduler will stop dispatching more read requests for up time (antic_expire) +milliseconds, hoping that process will submit a new request near the one +that just completed. If such a request is made, then it is dispatched +immediately. If the antic_expire wait time expires, then the IO scheduler +will dispatch the next read request from the sorted read queue. + +To decide whether an anticipatory wait is worthwhile, the scheduler +maintains statistics for each process that can be used to compute +mean "think time" (the time between read requests), and mean seek +distance for that process. One observation is that these statistics +are associated with each process, but those statistics are not associated +with a specific IO device. So for example, if a process is doing IO +on several file systems on separate devices, the statistics will be +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. + +The parameters are: +* read_expire + Controls how long until a read request becomes "expired". It also controls the + interval between which expired requests are served, so set to 50, a request + might take anywhere < 100ms to be serviced _if_ it is the next on the + expired list. Obviously request expiration strategies won't make the disk + go faster. The result basically equates to the timeslice a single reader + gets in the presence of other IO. 100*((seek time / read_expire) + 1) is + very roughly the % streaming read efficiency your disk should get with + multiple readers. + +* read_batch_expire + Controls how much time a batch of reads is given before pending writes are + served. A higher value is more efficient. This might be set below read_expire + if writes are to be given higher priority than reads, but reads are to be + as efficient as possible when there are no writes. Generally though, it + should be some multiple of read_expire. + +* write_expire, and +* write_batch_expire are equivalent to the above, for writes. + +* antic_expire + Controls the maximum amount of time we can anticipate a good read (one + with a short seek distance from the most recently completed request) before + giving up. Many other factors may cause anticipation to be stopped early, + or some processes will not be "anticipated" at all. Should be a bit higher + for big seek time devices though not a linear correspondence - most + processes have only a few ms thinktime. + diff --git a/Documentation/block/biodoc.txt b/Documentation/block/biodoc.txt new file mode 100644 index 000000000000..6dd274d7e1cf --- /dev/null +++ b/Documentation/block/biodoc.txt @@ -0,0 +1,1213 @@ + Notes on the Generic Block Layer Rewrite in Linux 2.5 + ===================================================== + +Notes Written on Jan 15, 2002: + Jens Axboe + Suparna Bhattacharya + +Last Updated May 2, 2002 +September 2003: Updated I/O Scheduler portions + Nick Piggin + +Introduction: + +These are some notes describing some aspects of the 2.5 block layer in the +context of the bio rewrite. The idea is to bring out some of the key +changes and a glimpse of the rationale behind those changes. + +Please mail corrections & suggestions to suparna@in.ibm.com. + +Credits: +--------- + +2.5 bio rewrite: + Jens Axboe + +Many aspects of the generic block layer redesign were driven by and evolved +over discussions, prior patches and the collective experience of several +people. See sections 8 and 9 for a list of some related references. + +The following people helped with review comments and inputs for this +document: + Christoph Hellwig + Arjan van de Ven + Randy Dunlap + Andre Hedrick + +The following people helped with fixes/contributions to the bio patches +while it was still work-in-progress: + David S. Miller + + +Description of Contents: +------------------------ + +1. Scope for tuning of logic to various needs + 1.1 Tuning based on device or low level driver capabilities + - Per-queue parameters + - Highmem I/O support + - I/O scheduler modularization + 1.2 Tuning based on high level requirements/capabilities + 1.2.1 I/O Barriers + 1.2.2 Request Priority/Latency + 1.3 Direct access/bypass to lower layers for diagnostics and special + device operations + 1.3.1 Pre-built commands +2. New flexible and generic but minimalist i/o structure or descriptor + (instead of using buffer heads at the i/o layer) + 2.1 Requirements/Goals addressed + 2.2 The bio struct in detail (multi-page io unit) + 2.3 Changes in the request structure +3. Using bios + 3.1 Setup/teardown (allocation, splitting) + 3.2 Generic bio helper routines + 3.2.1 Traversing segments and completion units in a request + 3.2.2 Setting up DMA scatterlists + 3.2.3 I/O completion + 3.2.4 Implications for drivers that do not interpret bios (don't handle + multiple segments) + 3.2.5 Request command tagging + 3.3 I/O submission +4. The I/O scheduler +5. Scalability related changes + 5.1 Granular locking: Removal of io_request_lock + 5.2 Prepare for transition to 64 bit sector_t +6. Other Changes/Implications + 6.1 Partition re-mapping handled by the generic block layer +7. A few tips on migration of older drivers +8. A list of prior/related/impacted patches/ideas +9. Other References/Discussion Threads + +--------------------------------------------------------------------------- + +Bio Notes +-------- + +Let us discuss the changes in the context of how some overall goals for the +block layer are addressed. + +1. Scope for tuning the generic logic to satisfy various requirements + +The block layer design supports adaptable abstractions to handle common +processing with the ability to tune the logic to an appropriate extent +depending on the nature of the device and the requirements of the caller. +One of the objectives of the rewrite was to increase the degree of tunability +and to enable higher level code to utilize underlying device/driver +capabilities to the maximum extent for better i/o performance. This is +important especially in the light of ever improving hardware capabilities +and application/middleware software designed to take advantage of these +capabilities. + +1.1 Tuning based on low level device / driver capabilities + +Sophisticated devices with large built-in caches, intelligent i/o scheduling +optimizations, high memory DMA support, etc may find some of the +generic processing an overhead, while for less capable devices the +generic functionality is essential for performance or correctness reasons. +Knowledge of some of the capabilities or parameters of the device should be +used at the generic block layer to take the right decisions on +behalf of the driver. + +How is this achieved ? + +Tuning at a per-queue level: + +i. Per-queue limits/values exported to the generic layer by the driver + +Various parameters that the generic i/o scheduler logic uses are set at +a per-queue level (e.g maximum request size, maximum number of segments in +a scatter-gather list, hardsect size) + +Some parameters that were earlier available as global arrays indexed by +major/minor are now directly associated with the queue. Some of these may +move into the block device structure in the future. Some characteristics +have been incorporated into a queue flags field rather than separate fields +in themselves. There are blk_queue_xxx functions to set the parameters, +rather than update the fields directly + +Some new queue property settings: + + blk_queue_bounce_limit(q, u64 dma_address) + Enable I/O to highmem pages, dma_address being the + limit. No highmem default. + + blk_queue_max_sectors(q, max_sectors) + Maximum size request you can handle in units of 512 byte + sectors. 255 default. + + blk_queue_max_phys_segments(q, max_segments) + Maximum physical segments you can handle in a request. 128 + default (driver limit). (See 3.2.2) + + blk_queue_max_hw_segments(q, max_segments) + Maximum dma segments the hardware can handle in a request. 128 + default (host adapter limit, after dma remapping). + (See 3.2.2) + + blk_queue_max_segment_size(q, max_seg_size) + Maximum size of a clustered segment, 64kB default. + + blk_queue_hardsect_size(q, hardsect_size) + Lowest possible sector size that the hardware can operate + on, 512 bytes default. + +New queue flags: + + QUEUE_FLAG_CLUSTER (see 3.2.2) + QUEUE_FLAG_QUEUED (see 3.2.4) + + +ii. High-mem i/o capabilities are now considered the default + +The generic bounce buffer logic, present in 2.4, where the block layer would +by default copyin/out i/o requests on high-memory buffers to low-memory buffers +assuming that the driver wouldn't be able to handle it directly, has been +changed in 2.5. The bounce logic is now applied only for memory ranges +for which the device cannot handle i/o. A driver can specify this by +setting the queue bounce limit for the request queue for the device +(blk_queue_bounce_limit()). This avoids the inefficiencies of the copyin/out +where a device is capable of handling high memory i/o. + +In order to enable high-memory i/o where the device is capable of supporting +it, the pci dma mapping routines and associated data structures have now been +modified to accomplish a direct page -> bus translation, without requiring +a virtual address mapping (unlike the earlier scheme of virtual address +-> bus translation). So this works uniformly for high-memory pages (which +do not have a correponding kernel virtual address space mapping) and +low-memory pages. + +Note: Please refer to DMA-mapping.txt for a discussion on PCI high mem DMA +aspects and mapping of scatter gather lists, and support for 64 bit PCI. + +Special handling is required only for cases where i/o needs to happen on +pages at physical memory addresses beyond what the device can support. In these +cases, a bounce bio representing a buffer from the supported memory range +is used for performing the i/o with copyin/copyout as needed depending on +the type of the operation. For example, in case of a read operation, the +data read has to be copied to the original buffer on i/o completion, so a +callback routine is set up to do this, while for write, the data is copied +from the original buffer to the bounce buffer prior to issuing the +operation. Since an original buffer may be in a high memory area that's not +mapped in kernel virtual addr, a kmap operation may be required for +performing the copy, and special care may be needed in the completion path +as it may not be in irq context. Special care is also required (by way of +GFP flags) when allocating bounce buffers, to avoid certain highmem +deadlock possibilities. + +It is also possible that a bounce buffer may be allocated from high-memory +area that's not mapped in kernel virtual addr, but within the range that the +device can use directly; so the bounce page may need to be kmapped during +copy operations. [Note: This does not hold in the current implementation, +though] + +There are some situations when pages from high memory may need to +be kmapped, even if bounce buffers are not necessary. For example a device +may need to abort DMA operations and revert to PIO for the transfer, in +which case a virtual mapping of the page is required. For SCSI it is also +done in some scenarios where the low level driver cannot be trusted to +handle a single sg entry correctly. The driver is expected to perform the +kmaps as needed on such occasions using the __bio_kmap_atomic and bio_kmap_irq +routines as appropriate. A driver could also use the blk_queue_bounce() +routine on its own to bounce highmem i/o to low memory for specific requests +if so desired. + +iii. The i/o scheduler algorithm itself can be replaced/set as appropriate + +As in 2.4, it is possible to plugin a brand new i/o scheduler for a particular +queue or pick from (copy) existing generic schedulers and replace/override +certain portions of it. The 2.5 rewrite provides improved modularization +of the i/o scheduler. There are more pluggable callbacks, e.g for init, +add request, extract request, which makes it possible to abstract specific +i/o scheduling algorithm aspects and details outside of the generic loop. +It also makes it possible to completely hide the implementation details of +the i/o scheduler from block drivers. + +I/O scheduler wrappers are to be used instead of accessing the queue directly. +See section 4. The I/O scheduler for details. + +1.2 Tuning Based on High level code capabilities + +i. Application capabilities for raw i/o + +This comes from some of the high-performance database/middleware +requirements where an application prefers to make its own i/o scheduling +decisions based on an understanding of the access patterns and i/o +characteristics + +ii. High performance filesystems or other higher level kernel code's +capabilities + +Kernel components like filesystems could also take their own i/o scheduling +decisions for optimizing performance. Journalling filesystems may need +some control over i/o ordering. + +What kind of support exists at the generic block layer for this ? + +The flags and rw fields in the bio structure can be used for some tuning +from above e.g indicating that an i/o is just a readahead request, or for +marking barrier requests (discussed next), or priority settings (currently +unused). As far as user applications are concerned they would need an +additional mechanism either via open flags or ioctls, or some other upper +level mechanism to communicate such settings to block. + +1.2.1 I/O Barriers + +There is a way to enforce strict ordering for i/os through barriers. +All requests before a barrier point must be serviced before the barrier +request and any other requests arriving after the barrier will not be +serviced until after the barrier has completed. This is useful for higher +level control on write ordering, e.g flushing a log of committed updates +to disk before the corresponding updates themselves. + +A flag in the bio structure, BIO_BARRIER is used to identify a barrier i/o. +The generic i/o scheduler would make sure that it places the barrier request and +all other requests coming after it after all the previous requests in the +queue. Barriers may be implemented in different ways depending on the +driver. A SCSI driver for example could make use of ordered tags to +preserve the necessary ordering with a lower impact on throughput. For IDE +this might be two sync cache flush: a pre and post flush when encountering +a barrier write. + +There is a provision for queues to indicate what kind of barriers they +can provide. This is as of yet unmerged, details will be added here once it +is in the kernel. + +1.2.2 Request Priority/Latency + +Todo/Under discussion: +Arjan's proposed request priority scheme allows higher levels some broad + control (high/med/low) over the priority of an i/o request vs other pending + requests in the queue. For example it allows reads for bringing in an + executable page on demand to be given a higher priority over pending write + requests which haven't aged too much on the queue. Potentially this priority + could even be exposed to applications in some manner, providing higher level + tunability. Time based aging avoids starvation of lower priority + requests. Some bits in the bi_rw flags field in the bio structure are + intended to be used for this priority information. + + +1.3 Direct Access to Low level Device/Driver Capabilities (Bypass mode) + (e.g Diagnostics, Systems Management) + +There are situations where high-level code needs to have direct access to +the low level device capabilities or requires the ability to issue commands +to the device bypassing some of the intermediate i/o layers. +These could, for example, be special control commands issued through ioctl +interfaces, or could be raw read/write commands that stress the drive's +capabilities for certain kinds of fitness tests. Having direct interfaces at +multiple levels without having to pass through upper layers makes +it possible to perform bottom up validation of the i/o path, layer by +layer, starting from the media. + +The normal i/o submission interfaces, e.g submit_bio, could be bypassed +for specially crafted requests which such ioctl or diagnostics +interfaces would typically use, and the elevator add_request routine +can instead be used to directly insert such requests in the queue or preferably +the blk_do_rq routine can be used to place the request on the queue and +wait for completion. Alternatively, sometimes the caller might just +invoke a lower level driver specific interface with the request as a +parameter. + +If the request is a means for passing on special information associated with +the command, then such information is associated with the request->special +field (rather than misuse the request->buffer field which is meant for the +request data buffer's virtual mapping). + +For passing request data, the caller must build up a bio descriptor +representing the concerned memory buffer if the underlying driver interprets +bio segments or uses the block layer end*request* functions for i/o +completion. Alternatively one could directly use the request->buffer field to +specify the virtual address of the buffer, if the driver expects buffer +addresses passed in this way and ignores bio entries for the request type +involved. In the latter case, the driver would modify and manage the +request->buffer, request->sector and request->nr_sectors or +request->current_nr_sectors fields itself rather than using the block layer +end_request or end_that_request_first completion interfaces. +(See 2.3 or Documentation/block/request.txt for a brief explanation of +the request structure fields) + +[TBD: end_that_request_last should be usable even in this case; +Perhaps an end_that_direct_request_first routine could be implemented to make +handling direct requests easier for such drivers; Also for drivers that +expect bios, a helper function could be provided for setting up a bio +corresponding to a data buffer] + + + + +1.3.1 Pre-built Commands + +A request can be created with a pre-built custom command to be sent directly +to the device. The cmd block in the request structure has room for filling +in the command bytes. (i.e rq->cmd is now 16 bytes in size, and meant for +command pre-building, and the type of the request is now indicated +through rq->flags instead of via rq->cmd) + +The request structure flags can be set up to indicate the type of request +in such cases (REQ_PC: direct packet command passed to driver, REQ_BLOCK_PC: +packet command issued via blk_do_rq, REQ_SPECIAL: special request). + +It can help to pre-build device commands for requests in advance. +Drivers can now specify a request prepare function (q->prep_rq_fn) that the +block layer would invoke to pre-build device commands for a given request, +or perform other preparatory processing for the request. This is routine is +called by elv_next_request(), i.e. typically just before servicing a request. +(The prepare function would not be called for requests that have REQ_DONTPREP +enabled) + +Aside: + Pre-building could possibly even be done early, i.e before placing the + request on the queue, rather than construct the command on the fly in the + driver while servicing the request queue when it may affect latencies in + interrupt context or responsiveness in general. One way to add early + pre-building would be to do it whenever we fail to merge on a request. + Now REQ_NOMERGE is set in the request flags to skip this one in the future, + which means that it will not change before we feed it to the device. So + the pre-builder hook can be invoked there. + + +2. Flexible and generic but minimalist i/o structure/descriptor. + +2.1 Reason for a new structure and requirements addressed + +Prior to 2.5, buffer heads were used as the unit of i/o at the generic block +layer, and the low level request structure was associated with a chain of +buffer heads for a contiguous i/o request. This led to certain inefficiencies +when it came to large i/o requests and readv/writev style operations, as it +forced such requests to be broken up into small chunks before being passed +on to the generic block layer, only to be merged by the i/o scheduler +when the underlying device was capable of handling the i/o in one shot. +Also, using the buffer head as an i/o structure for i/os that didn't originate +from the buffer cache unecessarily added to the weight of the descriptors +which were generated for each such chunk. + +The following were some of the goals and expectations considered in the +redesign of the block i/o data structure in 2.5. + +i. Should be appropriate as a descriptor for both raw and buffered i/o - + avoid cache related fields which are irrelevant in the direct/page i/o path, + or filesystem block size alignment restrictions which may not be relevant + for raw i/o. +ii. Ability to represent high-memory buffers (which do not have a virtual + address mapping in kernel address space). +iii.Ability to represent large i/os w/o unecessarily breaking them up (i.e + greater than PAGE_SIZE chunks in one shot) +iv. At the same time, ability to retain independent identity of i/os from + different sources or i/o units requiring individual completion (e.g. for + latency reasons) +v. Ability to represent an i/o involving multiple physical memory segments + (including non-page aligned page fragments, as specified via readv/writev) + without unecessarily breaking it up, if the underlying device is capable of + handling it. +vi. Preferably should be based on a memory descriptor structure that can be + passed around different types of subsystems or layers, maybe even + networking, without duplication or extra copies of data/descriptor fields + themselves in the process +vii.Ability to handle the possibility of splits/merges as the structure passes + through layered drivers (lvm, md, evms), with minimal overhead. + +The solution was to define a new structure (bio) for the block layer, +instead of using the buffer head structure (bh) directly, the idea being +avoidance of some associated baggage and limitations. The bio structure +is uniformly used for all i/o at the block layer ; it forms a part of the +bh structure for buffered i/o, and in the case of raw/direct i/o kiobufs are +mapped to bio structures. + +2.2 The bio struct + +The bio structure uses a vector representation pointing to an array of tuples +of to describe the i/o buffer, and has various other +fields describing i/o parameters and state that needs to be maintained for +performing the i/o. + +Notice that this representation means that a bio has no virtual address +mapping at all (unlike buffer heads). + +struct bio_vec { + struct page *bv_page; + unsigned short bv_len; + unsigned short bv_offset; +}; + +/* + * main unit of I/O for the block layer and lower layers (ie drivers) + */ +struct bio { + sector_t bi_sector; + struct bio *bi_next; /* request queue link */ + struct block_device *bi_bdev; /* target device */ + unsigned long bi_flags; /* status, command, etc */ + unsigned long bi_rw; /* low bits: r/w, high: priority */ + + unsigned int bi_vcnt; /* how may bio_vec's */ + unsigned int bi_idx; /* current index into bio_vec array */ + + unsigned int bi_size; /* total size in bytes */ + unsigned short bi_phys_segments; /* segments after physaddr coalesce*/ + unsigned short bi_hw_segments; /* segments after DMA remapping */ + unsigned int bi_max; /* max bio_vecs we can hold + used as index into pool */ + struct bio_vec *bi_io_vec; /* the actual vec list */ + bio_end_io_t *bi_end_io; /* bi_end_io (bio) */ + atomic_t bi_cnt; /* pin count: free when it hits zero */ + void *bi_private; + bio_destructor_t *bi_destructor; /* bi_destructor (bio) */ +}; + +With this multipage bio design: + +- Large i/os can be sent down in one go using a bio_vec list consisting + of an array of fragments (similar to the way fragments + are represented in the zero-copy network code) +- Splitting of an i/o request across multiple devices (as in the case of + lvm or raid) is achieved by cloning the bio (where the clone points to + the same bi_io_vec array, but with the index and size accordingly modified) +- A linked list of bios is used as before for unrelated merges (*) - this + avoids reallocs and makes independent completions easier to handle. +- Code that traverses the req list needs to make a distinction between + segments of a request (bio_for_each_segment) and the distinct completion + units/bios (rq_for_each_bio). +- Drivers which can't process a large bio in one shot can use the bi_idx + field to keep track of the next bio_vec entry to process. + (e.g a 1MB bio_vec needs to be handled in max 128kB chunks for IDE) + [TBD: Should preferably also have a bi_voffset and bi_vlen to avoid modifying + bi_offset an len fields] + +(*) unrelated merges -- a request ends up containing two or more bios that + didn't originate from the same place. + +bi_end_io() i/o callback gets called on i/o completion of the entire bio. + +At a lower level, drivers build a scatter gather list from the merged bios. +The scatter gather list is in the form of an array of +entries with their corresponding dma address mappings filled in at the +appropriate time. As an optimization, contiguous physical pages can be +covered by a single entry where refers to the first page and +covers the range of pages (upto 16 contiguous pages could be covered this +way). There is a helper routine (blk_rq_map_sg) which drivers can use to build +the sg list. + +Note: Right now the only user of bios with more than one page is ll_rw_kio, +which in turn means that only raw I/O uses it (direct i/o may not work +right now). The intent however is to enable clustering of pages etc to +become possible. The pagebuf abstraction layer from SGI also uses multi-page +bios, but that is currently not included in the stock development kernels. +The same is true of Andrew Morton's work-in-progress multipage bio writeout +and readahead patches. + +2.3 Changes in the Request Structure + +The request structure is the structure that gets passed down to low level +drivers. The block layer make_request function builds up a request structure, +places it on the queue and invokes the drivers request_fn. The driver makes +use of block layer helper routine elv_next_request to pull the next request +off the queue. Control or diagnostic functions might bypass block and directly +invoke underlying driver entry points passing in a specially constructed +request structure. + +Only some relevant fields (mainly those which changed or may be referred +to in some of the discussion here) are listed below, not necessarily in +the order in which they occur in the structure (see include/linux/blkdev.h) +Refer to Documentation/block/request.txt for details about all the request +structure fields and a quick reference about the layers which are +supposed to use or modify those fields. + +struct request { + struct list_head queuelist; /* Not meant to be directly accessed by + the driver. + Used by q->elv_next_request_fn + rq->queue is gone + */ + . + . + unsigned char cmd[16]; /* prebuilt command data block */ + unsigned long flags; /* also includes earlier rq->cmd settings */ + . + . + sector_t sector; /* this field is now of type sector_t instead of int + preparation for 64 bit sectors */ + . + . + + /* Number of scatter-gather DMA addr+len pairs after + * physical address coalescing is performed. + */ + unsigned short nr_phys_segments; + + /* Number of scatter-gather addr+len pairs after + * physical and DMA remapping hardware coalescing is performed. + * This is the number of scatter-gather entries the driver + * will actually have to deal with after DMA mapping is done. + */ + unsigned short nr_hw_segments; + + /* Various sector counts */ + unsigned long nr_sectors; /* no. of sectors left: driver modifiable */ + unsigned long hard_nr_sectors; /* block internal copy of above */ + unsigned int current_nr_sectors; /* no. of sectors left in the + current segment:driver modifiable */ + unsigned long hard_cur_sectors; /* block internal copy of the above */ + . + . + int tag; /* command tag associated with request */ + void *special; /* same as before */ + char *buffer; /* valid only for low memory buffers upto + current_nr_sectors */ + . + . + struct bio *bio, *biotail; /* bio list instead of bh */ + struct request_list *rl; +} + +See the rq_flag_bits definitions for an explanation of the various flags +available. Some bits are used by the block layer or i/o scheduler. + +The behaviour of the various sector counts are almost the same as before, +except that since we have multi-segment bios, current_nr_sectors refers +to the numbers of sectors in the current segment being processed which could +be one of the many segments in the current bio (i.e i/o completion unit). +The nr_sectors value refers to the total number of sectors in the whole +request that remain to be transferred (no change). The purpose of the +hard_xxx values is for block to remember these counts every time it hands +over the request to the driver. These values are updated by block on +end_that_request_first, i.e. every time the driver completes a part of the +transfer and invokes block end*request helpers to mark this. The +driver should not modify these values. The block layer sets up the +nr_sectors and current_nr_sectors fields (based on the corresponding +hard_xxx values and the number of bytes transferred) and updates it on +every transfer that invokes end_that_request_first. It does the same for the +buffer, bio, bio->bi_idx fields too. + +The buffer field is just a virtual address mapping of the current segment +of the i/o buffer in cases where the buffer resides in low-memory. For high +memory i/o, this field is not valid and must not be used by drivers. + +Code that sets up its own request structures and passes them down to +a driver needs to be careful about interoperation with the block layer helper +functions which the driver uses. (Section 1.3) + +3. Using bios + +3.1 Setup/Teardown + +There are routines for managing the allocation, and reference counting, and +freeing of bios (bio_alloc, bio_get, bio_put). + +This makes use of Ingo Molnar's mempool implementation, which enables +subsystems like bio to maintain their own reserve memory pools for guaranteed +deadlock-free allocations during extreme VM load. For example, the VM +subsystem makes use of the block layer to writeout dirty pages in order to be +able to free up memory space, a case which needs careful handling. The +allocation logic draws from the preallocated emergency reserve in situations +where it cannot allocate through normal means. If the pool is empty and it +can wait, then it would trigger action that would help free up memory or +replenish the pool (without deadlocking) and wait for availability in the pool. +If it is in IRQ context, and hence not in a position to do this, allocation +could fail if the pool is empty. In general mempool always first tries to +perform allocation without having to wait, even if it means digging into the +pool as long it is not less that 50% full. + +On a free, memory is released to the pool or directly freed depending on +the current availability in the pool. The mempool interface lets the +subsystem specify the routines to be used for normal alloc and free. In the +case of bio, these routines make use of the standard slab allocator. + +The caller of bio_alloc is expected to taken certain steps to avoid +deadlocks, e.g. avoid trying to allocate more memory from the pool while +already holding memory obtained from the pool. +[TBD: This is a potential issue, though a rare possibility + in the bounce bio allocation that happens in the current code, since + it ends up allocating a second bio from the same pool while + holding the original bio ] + +Memory allocated from the pool should be released back within a limited +amount of time (in the case of bio, that would be after the i/o is completed). +This ensures that if part of the pool has been used up, some work (in this +case i/o) must already be in progress and memory would be available when it +is over. If allocating from multiple pools in the same code path, the order +or hierarchy of allocation needs to be consistent, just the way one deals +with multiple locks. + +The bio_alloc routine also needs to allocate the bio_vec_list (bvec_alloc()) +for a non-clone bio. There are the 6 pools setup for different size biovecs, +so bio_alloc(gfp_mask, nr_iovecs) will allocate a vec_list of the +given size from these slabs. + +The bi_destructor() routine takes into account the possibility of the bio +having originated from a different source (see later discussions on +n/w to block transfers and kvec_cb) + +The bio_get() routine may be used to hold an extra reference on a bio prior +to i/o submission, if the bio fields are likely to be accessed after the +i/o is issued (since the bio may otherwise get freed in case i/o completion +happens in the meantime). + +The bio_clone() routine may be used to duplicate a bio, where the clone +shares the bio_vec_list with the original bio (i.e. both point to the +same bio_vec_list). This would typically be used for splitting i/o requests +in lvm or md. + +3.2 Generic bio helper Routines + +3.2.1 Traversing segments and completion units in a request + +The macros bio_for_each_segment() and rq_for_each_bio() should be used for +traversing the bios in the request list (drivers should avoid directly +trying to do it themselves). Using these helpers should also make it easier +to cope with block changes in the future. + + rq_for_each_bio(bio, rq) + bio_for_each_segment(bio_vec, bio, i) + /* bio_vec is now current segment */ + +I/O completion callbacks are per-bio rather than per-segment, so drivers +that traverse bio chains on completion need to keep that in mind. Drivers +which don't make a distinction between segments and completion units would +need to be reorganized to support multi-segment bios. + +3.2.2 Setting up DMA scatterlists + +The blk_rq_map_sg() helper routine would be used for setting up scatter +gather lists from a request, so a driver need not do it on its own. + + nr_segments = blk_rq_map_sg(q, rq, scatterlist); + +The helper routine provides a level of abstraction which makes it easier +to modify the internals of request to scatterlist conversion down the line +without breaking drivers. The blk_rq_map_sg routine takes care of several +things like collapsing physically contiguous segments (if QUEUE_FLAG_CLUSTER +is set) and correct segment accounting to avoid exceeding the limits which +the i/o hardware can handle, based on various queue properties. + +- Prevents a clustered segment from crossing a 4GB mem boundary +- Avoids building segments that would exceed the number of physical + memory segments that the driver can handle (phys_segments) and the + number that the underlying hardware can handle at once, accounting for + DMA remapping (hw_segments) (i.e. IOMMU aware limits). + +Routines which the low level driver can use to set up the segment limits: + +blk_queue_max_hw_segments() : Sets an upper limit of the maximum number of +hw data segments in a request (i.e. the maximum number of address/length +pairs the host adapter can actually hand to the device at once) + +blk_queue_max_phys_segments() : Sets an upper limit on the maximum number +of physical data segments in a request (i.e. the largest sized scatter list +a driver could handle) + +3.2.3 I/O completion + +The existing generic block layer helper routines end_request, +end_that_request_first and end_that_request_last can be used for i/o +completion (and setting things up so the rest of the i/o or the next +request can be kicked of) as before. With the introduction of multi-page +bio support, end_that_request_first requires an additional argument indicating +the number of sectors completed. + +3.2.4 Implications for drivers that do not interpret bios (don't handle + multiple segments) + +Drivers that do not interpret bios e.g those which do not handle multiple +segments and do not support i/o into high memory addresses (require bounce +buffers) and expect only virtually mapped buffers, can access the rq->buffer +field. As before the driver should use current_nr_sectors to determine the +size of remaining data in the current segment (that is the maximum it can +transfer in one go unless it interprets segments), and rely on the block layer +end_request, or end_that_request_first/last to take care of all accounting +and transparent mapping of the next bio segment when a segment boundary +is crossed on completion of a transfer. (The end*request* functions should +be used if only if the request has come down from block/bio path, not for +direct access requests which only specify rq->buffer without a valid rq->bio) + +3.2.5 Generic request command tagging + +3.2.5.1 Tag helpers + +Block now offers some simple generic functionality to help support command +queueing (typically known as tagged command queueing), ie manage more than +one outstanding command on a queue at any given time. + + blk_queue_init_tags(request_queue_t *q, int depth) + + Initialize internal command tagging structures for a maximum + depth of 'depth'. + + blk_queue_free_tags((request_queue_t *q) + + Teardown tag info associated with the queue. This will be done + automatically by block if blk_queue_cleanup() is called on a queue + that is using tagging. + +The above are initialization and exit management, the main helpers during +normal operations are: + + blk_queue_start_tag(request_queue_t *q, struct request *rq) + + Start tagged operation for this request. A free tag number between + 0 and 'depth' is assigned to the request (rq->tag holds this number), + and 'rq' is added to the internal tag management. If the maximum depth + for this queue is already achieved (or if the tag wasn't started for + some other reason), 1 is returned. Otherwise 0 is returned. + + blk_queue_end_tag(request_queue_t *q, struct request *rq) + + End tagged operation on this request. 'rq' is removed from the internal + book keeping structures. + +To minimize struct request and queue overhead, the tag helpers utilize some +of the same request members that are used for normal request queue management. +This means that a request cannot both be an active tag and be on the queue +list at the same time. blk_queue_start_tag() will remove the request, but +the driver must remember to call blk_queue_end_tag() before signalling +completion of the request to the block layer. This means ending tag +operations before calling end_that_request_last()! For an example of a user +of these helpers, see the IDE tagged command queueing support. + +Certain hardware conditions may dictate a need to invalidate the block tag +queue. For instance, on IDE any tagged request error needs to clear both +the hardware and software block queue and enable the driver to sanely restart +all the outstanding requests. There's a third helper to do that: + + blk_queue_invalidate_tags(request_queue_t *q) + + Clear the internal block tag queue and readd all the pending requests + to the request queue. The driver will receive them again on the + next request_fn run, just like it did the first time it encountered + them. + +3.2.5.2 Tag info + +Some block functions exist to query current tag status or to go from a +tag number to the associated request. These are, in no particular order: + + blk_queue_tagged(q) + + Returns 1 if the queue 'q' is using tagging, 0 if not. + + blk_queue_tag_request(q, tag) + + Returns a pointer to the request associated with tag 'tag'. + + blk_queue_tag_depth(q) + + Return current queue depth. + + blk_queue_tag_queue(q) + + Returns 1 if the queue can accept a new queued command, 0 if we are + at the maximum depth already. + + blk_queue_rq_tagged(rq) + + Returns 1 if the request 'rq' is tagged. + +3.2.5.2 Internal structure + +Internally, block manages tags in the blk_queue_tag structure: + + struct blk_queue_tag { + struct request **tag_index; /* array or pointers to rq */ + unsigned long *tag_map; /* bitmap of free tags */ + struct list_head busy_list; /* fifo list of busy tags */ + int busy; /* queue depth */ + int max_depth; /* max queue depth */ + }; + +Most of the above is simple and straight forward, however busy_list may need +a bit of explaining. Normally we don't care too much about request ordering, +but in the event of any barrier requests in the tag queue we need to ensure +that requests are restarted in the order they were queue. This may happen +if the driver needs to use blk_queue_invalidate_tags(). + +Tagging also defines a new request flag, REQ_QUEUED. This is set whenever +a request is currently tagged. You should not use this flag directly, +blk_rq_tagged(rq) is the portable way to do so. + +3.3 I/O Submission + +The routine submit_bio() is used to submit a single io. Higher level i/o +routines make use of this: + +(a) Buffered i/o: +The routine submit_bh() invokes submit_bio() on a bio corresponding to the +bh, allocating the bio if required. ll_rw_block() uses submit_bh() as before. + +(b) Kiobuf i/o (for raw/direct i/o): +The ll_rw_kio() routine breaks up the kiobuf into page sized chunks and +maps the array to one or more multi-page bios, issuing submit_bio() to +perform the i/o on each of these. + +The embedded bh array in the kiobuf structure has been removed and no +preallocation of bios is done for kiobufs. [The intent is to remove the +blocks array as well, but it's currently in there to kludge around direct i/o.] +Thus kiobuf allocation has switched back to using kmalloc rather than vmalloc. + +Todo/Observation: + + A single kiobuf structure is assumed to correspond to a contiguous range + of data, so brw_kiovec() invokes ll_rw_kio for each kiobuf in a kiovec. + So right now it wouldn't work for direct i/o on non-contiguous blocks. + This is to be resolved. The eventual direction is to replace kiobuf + by kvec's. + + Badari Pulavarty has a patch to implement direct i/o correctly using + bio and kvec. + + +(c) Page i/o: +Todo/Under discussion: + + Andrew Morton's multi-page bio patches attempt to issue multi-page + writeouts (and reads) from the page cache, by directly building up + large bios for submission completely bypassing the usage of buffer + heads. This work is still in progress. + + Christoph Hellwig had some code that uses bios for page-io (rather than + bh). This isn't included in bio as yet. Christoph was also working on a + design for representing virtual/real extents as an entity and modifying + some of the address space ops interfaces to utilize this abstraction rather + than buffer_heads. (This is somewhat along the lines of the SGI XFS pagebuf + abstraction, but intended to be as lightweight as possible). + +(d) Direct access i/o: +Direct access requests that do not contain bios would be submitted differently +as discussed earlier in section 1.3. + +Aside: + + Kvec i/o: + + Ben LaHaise's aio code uses a slighly different structure instead + of kiobufs, called a kvec_cb. This contains an array of + tuples (very much like the networking code), together with a callback function + and data pointer. This is embedded into a brw_cb structure when passed + to brw_kvec_async(). + + Now it should be possible to directly map these kvecs to a bio. Just as while + cloning, in this case rather than PRE_BUILT bio_vecs, we set the bi_io_vec + array pointer to point to the veclet array in kvecs. + + TBD: In order for this to work, some changes are needed in the way multi-page + bios are handled today. The values of the tuples in such a vector passed in + from higher level code should not be modified by the block layer in the course + of its request processing, since that would make it hard for the higher layer + to continue to use the vector descriptor (kvec) after i/o completes. Instead, + all such transient state should either be maintained in the request structure, + and passed on in some way to the endio completion routine. + + +4. The I/O scheduler +I/O schedulers are now per queue. They should be runtime switchable and modular +but aren't yet. Jens has most bits to do this, but the sysfs implementation is +missing. + +A block layer call to the i/o scheduler follows the convention elv_xxx(). This +calls elevator_xxx_fn in the elevator switch (drivers/block/elevator.c). Oh, +xxx and xxx might not match exactly, but use your imagination. If an elevator +doesn't implement a function, the switch does nothing or some minimal house +keeping work. + +4.1. I/O scheduler API + +The functions an elevator may implement are: (* are mandatory) +elevator_merge_fn called to query requests for merge with a bio + +elevator_merge_req_fn " " " with another request + +elevator_merged_fn called when a request in the scheduler has been + involved in a merge. It is used in the deadline + scheduler for example, to reposition the request + if its sorting order has changed. + +*elevator_next_req_fn returns the next scheduled request, or NULL + if there are none (or none are ready). + +*elevator_add_req_fn called to add a new request into the scheduler + +elevator_queue_empty_fn returns true if the merge queue is empty. + Drivers shouldn't use this, but rather check + if elv_next_request is NULL (without losing the + request if one exists!) + +elevator_remove_req_fn This is called when a driver claims ownership of + the target request - it now belongs to the + driver. It must not be modified or merged. + Drivers must not lose the request! A subsequent + call of elevator_next_req_fn must return the + _next_ request. + +elevator_requeue_req_fn called to add a request to the scheduler. This + is used when the request has alrnadebeen + returned by elv_next_request, but hasn't + completed. If this is not implemented then + elevator_add_req_fn is called instead. + +elevator_former_req_fn +elevator_latter_req_fn These return the request before or after the + one specified in disk sort order. Used by the + block layer to find merge possibilities. + +elevator_completed_req_fn called when a request is completed. This might + come about due to being merged with another or + when the device completes the request. + +elevator_may_queue_fn returns true if the scheduler wants to allow the + current context to queue a new request even if + it is over the queue limit. This must be used + very carefully!! + +elevator_set_req_fn +elevator_put_req_fn Must be used to allocate and free any elevator + specific storate for a request. + +elevator_init_fn +elevator_exit_fn Allocate and free any elevator specific storage + for a queue. + +4.2 I/O scheduler implementation +The generic i/o scheduler algorithm attempts to sort/merge/batch requests for +optimal disk scan and request servicing performance (based on generic +principles and device capabilities), optimized for: +i. improved throughput +ii. improved latency +iii. better utilization of h/w & CPU time + +Characteristics: + +i. Binary tree +AS and deadline i/o schedulers use red black binary trees for disk position +sorting and searching, and a fifo linked list for time-based searching. This +gives good scalability and good availablility of information. Requests are +almost always dispatched in disk sort order, so a cache is kept of the next +request in sort order to prevent binary tree lookups. + +This arrangement is not a generic block layer characteristic however, so +elevators may implement queues as they please. + +ii. Last merge hint +The last merge hint is part of the generic queue layer. I/O schedulers must do +some management on it. For the most part, the most important thing is to make +sure q->last_merge is cleared (set to NULL) when the request on it is no longer +a candidate for merging (for example if it has been sent to the driver). + +The last merge performed is cached as a hint for the subsequent request. If +sequential data is being submitted, the hint is used to perform merges without +any scanning. This is not sufficient when there are multiple processes doing +I/O though, so a "merge hash" is used by some schedulers. + +iii. Merge hash +AS and deadline use a hash table indexed by the last sector of a request. This +enables merging code to quickly look up "back merge" candidates, even when +multiple I/O streams are being performed at once on one disk. + +"Front merges", a new request being merged at the front of an existing request, +are far less common than "back merges" due to the nature of most I/O patterns. +Front merges are handled by the binary trees in AS and deadline schedulers. + +iv. Handling barrier cases +A request with flags REQ_HARDBARRIER or REQ_SOFTBARRIER must not be ordered +around. That is, they must be processed after all older requests, and before +any newer ones. This includes merges! + +In AS and deadline schedulers, barriers have the effect of flushing the reorder +queue. The performance cost of this will vary from nothing to a lot depending +on i/o patterns and device characteristics. Obviously they won't improve +performance, so their use should be kept to a minimum. + +v. Handling insertion position directives +A request may be inserted with a position directive. The directives are one of +ELEVATOR_INSERT_BACK, ELEVATOR_INSERT_FRONT, ELEVATOR_INSERT_SORT. + +ELEVATOR_INSERT_SORT is a general directive for non-barrier requests. +ELEVATOR_INSERT_BACK is used to insert a barrier to the back of the queue. +ELEVATOR_INSERT_FRONT is used to insert a barrier to the front of the queue, and +overrides the ordering requested by any previous barriers. In practice this is +harmless and required, because it is used for SCSI requeueing. This does not +require flushing the reorder queue, so does not impose a performance penalty. + +vi. Plugging the queue to batch requests in anticipation of opportunities for + merge/sort optimizations + +This is just the same as in 2.4 so far, though per-device unplugging +support is anticipated for 2.5. Also with a priority-based i/o scheduler, +such decisions could be based on request priorities. + +Plugging is an approach that the current i/o scheduling algorithm resorts to so +that it collects up enough requests in the queue to be able to take +advantage of the sorting/merging logic in the elevator. If the +queue is empty when a request comes in, then it plugs the request queue +(sort of like plugging the bottom of a vessel to get fluid to build up) +till it fills up with a few more requests, before starting to service +the requests. This provides an opportunity to merge/sort the requests before +passing them down to the device. There are various conditions when the queue is +unplugged (to open up the flow again), either through a scheduled task or +could be on demand. For example wait_on_buffer sets the unplugging going +(by running tq_disk) so the read gets satisfied soon. So in the read case, +the queue gets explicitly unplugged as part of waiting for completion, +in fact all queues get unplugged as a side-effect. + +Aside: + This is kind of controversial territory, as it's not clear if plugging is + always the right thing to do. Devices typically have their own queues, + and allowing a big queue to build up in software, while letting the device be + idle for a while may not always make sense. The trick is to handle the fine + balance between when to plug and when to open up. Also now that we have + multi-page bios being queued in one shot, we may not need to wait to merge + a big request from the broken up pieces coming by. + + Per-queue granularity unplugging (still a Todo) may help reduce some of the + concerns with just a single tq_disk flush approach. Something like + blk_kick_queue() to unplug a specific queue (right away ?) + or optionally, all queues, is in the plan. + +4.3 I/O contexts +I/O contexts provide a dynamically allocated per process data area. They may +be used in I/O schedulers, and in the block layer (could be used for IO statis, +priorities for example). See *io_context in drivers/block/ll_rw_blk.c, and +as-iosched.c for an example of usage in an i/o scheduler. + + +5. Scalability related changes + +5.1 Granular Locking: io_request_lock replaced by a per-queue lock + +The global io_request_lock has been removed as of 2.5, to avoid +the scalability bottleneck it was causing, and has been replaced by more +granular locking. The request queue structure has a pointer to the +lock to be used for that queue. As a result, locking can now be +per-queue, with a provision for sharing a lock across queues if +necessary (e.g the scsi layer sets the queue lock pointers to the +corresponding adapter lock, which results in a per host locking +granularity). The locking semantics are the same, i.e. locking is +still imposed by the block layer, grabbing the lock before +request_fn execution which it means that lots of older drivers +should still be SMP safe. Drivers are free to drop the queue +lock themselves, if required. Drivers that explicitly used the +io_request_lock for serialization need to be modified accordingly. +Usually it's as easy as adding a global lock: + + static spinlock_t my_driver_lock = SPIN_LOCK_UNLOCKED; + +and passing the address to that lock to blk_init_queue(). + +5.2 64 bit sector numbers (sector_t prepares for 64 bit support) + +The sector number used in the bio structure has been changed to sector_t, +which could be defined as 64 bit in preparation for 64 bit sector support. + +6. Other Changes/Implications + +6.1 Partition re-mapping handled by the generic block layer + +In 2.5 some of the gendisk/partition related code has been reorganized. +Now the generic block layer performs partition-remapping early and thus +provides drivers with a sector number relative to whole device, rather than +having to take partition number into account in order to arrive at the true +sector number. The routine blk_partition_remap() is invoked by +generic_make_request even before invoking the queue specific make_request_fn, +so the i/o scheduler also gets to operate on whole disk sector numbers. This +should typically not require changes to block drivers, it just never gets +to invoke its own partition sector offset calculations since all bios +sent are offset from the beginning of the device. + + +7. A Few Tips on Migration of older drivers + +Old-style drivers that just use CURRENT and ignores clustered requests, +may not need much change. The generic layer will automatically handle +clustered requests, multi-page bios, etc for the driver. + +For a low performance driver or hardware that is PIO driven or just doesn't +support scatter-gather changes should be minimal too. + +The following are some points to keep in mind when converting old drivers +to bio. + +Drivers should use elv_next_request to pick up requests and are no longer +supposed to handle looping directly over the request list. +(struct request->queue has been removed) + +Now end_that_request_first takes an additional number_of_sectors argument. +It used to handle always just the first buffer_head in a request, now +it will loop and handle as many sectors (on a bio-segment granularity) +as specified. + +Now bh->b_end_io is replaced by bio->bi_end_io, but most of the time the +right thing to use is bio_endio(bio, uptodate) instead. + +If the driver is dropping the io_request_lock from its request_fn strategy, +then it just needs to replace that with q->queue_lock instead. + +As described in Sec 1.1, drivers can set max sector size, max segment size +etc per queue now. Drivers that used to define their own merge functions i +to handle things like this can now just use the blk_queue_* functions at +blk_init_queue time. + +Drivers no longer have to map a {partition, sector offset} into the +correct absolute location anymore, this is done by the block layer, so +where a driver received a request ala this before: + + rq->rq_dev = mk_kdev(3, 5); /* /dev/hda5 */ + rq->sector = 0; /* first sector on hda5 */ + + it will now see + + rq->rq_dev = mk_kdev(3, 0); /* /dev/hda */ + rq->sector = 123128; /* offset from start of disk */ + +As mentioned, there is no virtual mapping of a bio. For DMA, this is +not a problem as the driver probably never will need a virtual mapping. +Instead it needs a bus mapping (pci_map_page for a single segment or +use blk_rq_map_sg for scatter gather) to be able to ship it to the driver. For +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. + + +8. Prior/Related/Impacted patches + +8.1. Earlier kiobuf patches (sct/axboe/chait/hch/mkp) +- orig kiobuf & raw i/o patches (now in 2.4 tree) +- direct kiobuf based i/o to devices (no intermediate bh's) +- page i/o using kiobuf +- kiobuf splitting for lvm (mkp) +- elevator support for kiobuf request merging (axboe) +8.2. Zero-copy networking (Dave Miller) +8.3. SGI XFS - pagebuf patches - use of kiobufs +8.4. Multi-page pioent patch for bio (Christoph Hellwig) +8.5. Direct i/o implementation (Andrea Arcangeli) since 2.4.10-pre11 +8.6. Async i/o implementation patch (Ben LaHaise) +8.7. EVMS layering design (IBM EVMS team) +8.8. Larger page cache size patch (Ben LaHaise) and + Large page size (Daniel Phillips) + => larger contiguous physical memory buffers +8.9. VM reservations patch (Ben LaHaise) +8.10. Write clustering patches ? (Marcelo/Quintela/Riel ?) +8.11. Block device in page cache patch (Andrea Archangeli) - now in 2.4.10+ +8.12. Multiple block-size transfers for faster raw i/o (Shailabh Nagar, + Badari) +8.13 Priority based i/o scheduler - prepatches (Arjan van de Ven) +8.14 IDE Taskfile i/o patch (Andre Hedrick) +8.15 Multi-page writeout and readahead patches (Andrew Morton) +8.16 Direct i/o patches for 2.5 using kvec and bio (Badari Pulavarthy) + +9. Other References: + +9.1 The Splice I/O Model - Larry McVoy (and subsequent discussions on lkml, +and Linus' comments - Jan 2001) +9.2 Discussions about kiobuf and bh design on lkml between sct, linus, alan +et al - Feb-March 2001 (many of the initial thoughts that led to bio were +brought up in this discusion thread) +9.3 Discussions on mempool on lkml - Dec 2001. + diff --git a/Documentation/block/deadline-iosched.txt b/Documentation/block/deadline-iosched.txt new file mode 100644 index 000000000000..c918b3a6022d --- /dev/null +++ b/Documentation/block/deadline-iosched.txt @@ -0,0 +1,78 @@ +Deadline IO scheduler tunables +============================== + +This little file attempts to document how the deadline io scheduler works. +In particular, it will clarify the meaning of the exposed tunables that may be +of interest to power users. + +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 + +assuming that you have sysfs mounted on /sys. If you don't have sysfs mounted, +you can do so by typing: + +# mount none /sys -t sysfs + + +******************************************************************************** + + +read_expire (in ms) +----------- + +The goal of the deadline io scheduler is to attempt to guarentee a start +service time for a request. As we focus mainly on read latencies, this is +tunable. When a read request first enters the io scheduler, it is assigned +a deadline that is the current time + the read_expire value in units of +miliseconds. + + +write_expire (in ms) +----------- + +Similar to read_expire mentioned above, but for writes. + + +fifo_batch +---------- + +When a read request expires its deadline, we must move some requests from +the sorted io scheduler list to the block device dispatch queue. fifo_batch +controls how many requests we move, based on the cost of each request. A +request is either qualified as a seek or a stream. The io scheduler knows +the last request that was serviced by the drive (or will be serviced right +before this one). See seek_cost and stream_unit. + + +write_starved (number of dispatches) +------------- + +When we have to move requests from the io scheduler queue to the block +device dispatch queue, we always give a preference to reads. However, we +don't want to starve writes indefinitely either. So writes_starved controls +how many times we give preference to reads over writes. When that has been +done writes_starved number of times, we dispatch some writes based on the +same criteria as reads. + + +front_merges (bool) +------------ + +Sometimes it happens that a request enters the io scheduler that is contigious +with a request that is already on the queue. Either it fits in the back of that +request, or it fits at the front. That is called either a back merge candidate +or a front merge candidate. Due to the way files are typically laid out, +back merges are much more common than front merges. For some work loads, you +may even know that it is a waste of time to spend any time attempting to +front merge requests. Setting front_merges to 0 disables this functionality. +Front merges may still occur due to the cached last_merge hint, but since +that comes at basically 0 cost we leave that on. We simply disable the +rbtree front sector lookup when the io scheduler merge function is called. + + +Nov 11 2002, Jens Axboe + + diff --git a/Documentation/block/request.txt b/Documentation/block/request.txt new file mode 100644 index 000000000000..75924e2a6975 --- /dev/null +++ b/Documentation/block/request.txt @@ -0,0 +1,88 @@ + +struct request documentation + +Jens Axboe 27/05/02 + +1.0 +Index + +2.0 Struct request members classification + + 2.1 struct request members explanation + +3.0 + + +2.0 +Short explanation of request members + +Classification flags: + + D driver member + B block layer member + I I/O scheduler member + +Unless an entry contains a D classification, a device driver must not access +this member. Some members may contain D classifications, but should only be +access through certain macros or functions (eg ->flags). + + + +2.1 +Member Flag Comment +------ ---- ------- + +struct list_head queuelist BI Organization on various internal + queues + +void *elevator_private I I/O scheduler private data + +unsigned char cmd[16] D Driver can use this for setting up + a cdb before execution, see + blk_queue_prep_rq + +unsigned long flags DBI Contains info about data direction, + request type, etc. + +int rq_status D Request status bits + +kdev_t rq_dev DBI Target device + +int errors DB Error counts + +sector_t sector DBI Target location + +unsigned long hard_nr_sectors B Used to keep sector sane + +unsigned long nr_sectors DBI Total number of sectors in request + +unsigned long hard_nr_sectors B Used to keep nr_sectors sane + +unsigned short nr_phys_segments DB Number of physical scatter gather + segments in a request + +unsigned short nr_hw_segments DB Number of hardware scatter gather + segments in a request + +unsigned int current_nr_sectors DB Number of sectors in first segment + of request + +unsigned int hard_cur_sectors B Used to keep current_nr_sectors sane + +int tag DB TCQ tag, if assigned + +void *special D Free to be used by driver + +char *buffer D Map of first segment, also see + section on bouncing SECTION + +struct completion *waiting D Can be used by driver to get signalled + on request completion + +struct bio *bio DBI First bio in request + +struct bio *biotail DBI Last bio in request + +request_queue_t *q DB Request queue this request belongs to + +struct request_list *rl B Request list this request came from diff --git a/Documentation/cachetlb.txt b/Documentation/cachetlb.txt new file mode 100644 index 000000000000..e132fb1163b0 --- /dev/null +++ b/Documentation/cachetlb.txt @@ -0,0 +1,384 @@ + Cache and TLB Flushing + Under Linux + + David S. Miller + +This document describes the cache/tlb flushing interfaces called +by the Linux VM subsystem. It enumerates over each interface, +describes it's intended purpose, and what side effect is expected +after the interface is invoked. + +The side effects described below are stated for a uniprocessor +implementation, and what is to happen on that single processor. The +SMP cases are a simple extension, in that you just extend the +definition such that the side effect for a particular interface occurs +on all processors in the system. Don't let this scare you into +thinking SMP cache/tlb flushing must be so inefficient, this is in +fact an area where many optimizations are possible. For example, +if it can be proven that a user address space has never executed +on a cpu (see vma->cpu_vm_mask), one need not perform a flush +for this address space on that cpu. + +First, the TLB flushing interfaces, since they are the simplest. The +"TLB" is abstracted under Linux as something the cpu uses to cache +virtual-->physical address translations obtained from the software +page tables. Meaning that if the software page tables change, it is +possible for stale translations to exist in this "TLB" cache. +Therefore when software page table changes occur, the kernel will +invoke one of the following flush methods _after_ the page table +changes occur: + +1) void flush_tlb_all(void) + + The most severe flush of all. After this interface runs, + any previous page table modification whatsoever will be + visible to the cpu. + + This is usually invoked when the kernel page tables are + changed, since such translations are "global" in nature. + +2) void flush_tlb_mm(struct mm_struct *mm) + + This interface flushes an entire user address space from + the TLB. After running, this interface must make sure that + any previous page table modifications for the address space + 'mm' will be visible to the cpu. That is, after running, + there will be no entries in the TLB for 'mm'. + + This interface is used to handle whole address space + page table operations such as what happens during + fork, and exec. + + Platform developers note that generic code will always + invoke this interface without mm->page_table_lock held. + +3) void flush_tlb_range(struct vm_area_struct *vma, + unsigned long start, unsigned long end) + + Here we are flushing a specific range of (user) virtual + address translations from the TLB. After running, this + interface must make sure that any previous page table + modifications for the address space 'vma->vm_mm' in the range + 'start' to 'end-1' will be visible to the cpu. That is, after + running, here will be no entries in the TLB for 'mm' for + virtual addresses in the range 'start' to 'end-1'. + + The "vma" is the backing store being used for the region. + Primarily, this is used for munmap() type operations. + + The interface is provided in hopes that the port can find + a suitably efficient method for removing multiple page + sized translations from the TLB, instead of having the kernel + call flush_tlb_page (see below) for each entry which may be + modified. + + Platform developers note that generic code will always + invoke this interface with mm->page_table_lock held. + +4) void flush_tlb_page(struct vm_area_struct *vma, unsigned long addr) + + This time we need to remove the PAGE_SIZE sized translation + from the TLB. The 'vma' is the backing structure used by + Linux to keep track of mmap'd regions for a process, the + address space is available via vma->vm_mm. Also, one may + test (vma->vm_flags & VM_EXEC) to see if this region is + executable (and thus could be in the 'instruction TLB' in + split-tlb type setups). + + After running, this interface must make sure that any previous + page table modification for address space 'vma->vm_mm' for + user virtual address 'addr' will be visible to the cpu. That + is, after running, there will be no entries in the TLB for + 'vma->vm_mm' for virtual address 'addr'. + + This is used primarily during fault processing. + + Platform developers note that generic code will always + invoke this interface with mm->page_table_lock held. + +5) void flush_tlb_pgtables(struct mm_struct *mm, + unsigned long start, unsigned long end) + + The software page tables for address space 'mm' for virtual + addresses in the range 'start' to 'end-1' are being torn down. + + Some platforms cache the lowest level of the software page tables + in a linear virtually mapped array, to make TLB miss processing + more efficient. On such platforms, since the TLB is caching the + software page table structure, it needs to be flushed when parts + of the software page table tree are unlinked/freed. + + Sparc64 is one example of a platform which does this. + + Usually, when munmap()'ing an area of user virtual address + space, the kernel leaves the page table parts around and just + marks the individual pte's as invalid. However, if very large + portions of the address space are unmapped, the kernel frees up + those portions of the software page tables to prevent potential + excessive kernel memory usage caused by erratic mmap/mmunmap + sequences. It is at these times that flush_tlb_pgtables will + be invoked. + +6) void update_mmu_cache(struct vm_area_struct *vma, + unsigned long address, pte_t pte) + + At the end of every page fault, this routine is invoked to + tell the architecture specific code that a translation + described by "pte" now exists at virtual address "address" + for address space "vma->vm_mm", in the software page tables. + + A port may use this information in any way it so chooses. + For example, it could use this event to pre-load TLB + translations for software managed TLB configurations. + The sparc64 port currently does this. + +7) void tlb_migrate_finish(struct mm_struct *mm) + + This interface is called at the end of an explicit + process migration. This interface provides a hook + to allow a platform to update TLB or context-specific + information for the address space. + + The ia64 sn2 platform is one example of a platform + that uses this interface. + +8) void lazy_mmu_prot_update(pte_t pte) + This interface is called whenever the protection on + any user PTEs change. This interface provides a notification + to architecture specific code to take appropiate action. + + +Next, we have the cache flushing interfaces. In general, when Linux +is changing an existing virtual-->physical mapping to a new value, +the sequence will be in one of the following forms: + + 1) flush_cache_mm(mm); + change_all_page_tables_of(mm); + flush_tlb_mm(mm); + + 2) flush_cache_range(vma, start, end); + change_range_of_page_tables(mm, start, end); + flush_tlb_range(vma, start, end); + + 3) flush_cache_page(vma, addr, pfn); + set_pte(pte_pointer, new_pte_val); + flush_tlb_page(vma, addr); + +The cache level flush will always be first, because this allows +us to properly handle systems whose caches are strict and require +a virtual-->physical translation to exist for a virtual address +when that virtual address is flushed from the cache. The HyperSparc +cpu is one such cpu with this attribute. + +The cache flushing routines below need only deal with cache flushing +to the extent that it is necessary for a particular cpu. Mostly, +these routines must be implemented for cpus which have virtually +indexed caches which must be flushed when virtual-->physical +translations are changed or removed. So, for example, the physically +indexed physically tagged caches of IA32 processors have no need to +implement these interfaces since the caches are fully synchronized +and have no dependency on translation information. + +Here are the routines, one by one: + +1) void flush_cache_mm(struct mm_struct *mm) + + This interface flushes an entire user address space from + the caches. That is, after running, there will be no cache + lines associated with 'mm'. + + This interface is used to handle whole address space + page table operations such as what happens during + fork, exit, and exec. + +2) void flush_cache_range(struct vm_area_struct *vma, + unsigned long start, unsigned long end) + + Here we are flushing a specific range of (user) virtual + addresses from the cache. After running, there will be no + entries in the cache for 'vma->vm_mm' for virtual addresses in + the range 'start' to 'end-1'. + + The "vma" is the backing store being used for the region. + Primarily, this is used for munmap() type operations. + + The interface is provided in hopes that the port can find + a suitably efficient method for removing multiple page + sized regions from the cache, instead of having the kernel + call flush_cache_page (see below) for each entry which may be + modified. + +3) void flush_cache_page(struct vm_area_struct *vma, unsigned long addr, unsigned long pfn) + + This time we need to remove a PAGE_SIZE sized range + from the cache. The 'vma' is the backing structure used by + Linux to keep track of mmap'd regions for a process, the + address space is available via vma->vm_mm. Also, one may + test (vma->vm_flags & VM_EXEC) to see if this region is + executable (and thus could be in the 'instruction cache' in + "Harvard" type cache layouts). + + The 'pfn' indicates the physical page frame (shift this value + left by PAGE_SHIFT to get the physical address) that 'addr' + translates to. It is this mapping which should be removed from + the cache. + + After running, there will be no entries in the cache for + 'vma->vm_mm' for virtual address 'addr' which translates + to 'pfn'. + + This is used primarily during fault processing. + +4) void flush_cache_kmaps(void) + + This routine need only be implemented if the platform utilizes + highmem. It will be called right before all of the kmaps + are invalidated. + + After running, there will be no entries in the cache for + the kernel virtual address range PKMAP_ADDR(0) to + PKMAP_ADDR(LAST_PKMAP). + + This routing should be implemented in asm/highmem.h + +5) void flush_cache_vmap(unsigned long start, unsigned long end) + void flush_cache_vunmap(unsigned long start, unsigned long end) + + Here in these two interfaces we are flushing a specific range + of (kernel) virtual addresses from the cache. After running, + there will be no entries in the cache for the kernel address + space for virtual addresses in the range 'start' to 'end-1'. + + The first of these two routines is invoked after map_vm_area() + has installed the page table entries. The second is invoked + before unmap_vm_area() deletes the page table entries. + +There exists another whole class of cpu cache issues which currently +require a whole different set of interfaces to handle properly. +The biggest problem is that of virtual aliasing in the data cache +of a processor. + +Is your port susceptible to virtual aliasing in it's D-cache? +Well, if your D-cache is virtually indexed, is larger in size than +PAGE_SIZE, and does not prevent multiple cache lines for the same +physical address from existing at once, you have this problem. + +If your D-cache has this problem, first define asm/shmparam.h SHMLBA +properly, it should essentially be the size of your virtually +addressed D-cache (or if the size is variable, the largest possible +size). This setting will force the SYSv IPC layer to only allow user +processes to mmap shared memory at address which are a multiple of +this value. + +NOTE: This does not fix shared mmaps, check out the sparc64 port for +one way to solve this (in particular SPARC_FLAG_MMAPSHARED). + +Next, you have to solve the D-cache aliasing issue for all +other cases. Please keep in mind that fact that, for a given page +mapped into some user address space, there is always at least one more +mapping, that of the kernel in it's linear mapping starting at +PAGE_OFFSET. So immediately, once the first user maps a given +physical page into its address space, by implication the D-cache +aliasing problem has the potential to exist since the kernel already +maps this page at its virtual address. + + void copy_user_page(void *to, void *from, unsigned long addr, struct page *page) + void clear_user_page(void *to, unsigned long addr, struct page *page) + + These two routines store data in user anonymous or COW + pages. It allows a port to efficiently avoid D-cache alias + issues between userspace and the kernel. + + For example, a port may temporarily map 'from' and 'to' to + kernel virtual addresses during the copy. The virtual address + for these two pages is chosen in such a way that the kernel + load/store instructions happen to virtual addresses which are + of the same "color" as the user mapping of the page. Sparc64 + for example, uses this technique. + + The 'addr' parameter tells the virtual address where the + user will ultimately have this page mapped, and the 'page' + parameter gives a pointer to the struct page of the target. + + If D-cache aliasing is not an issue, these two routines may + simply call memcpy/memset directly and do nothing more. + + void flush_dcache_page(struct page *page) + + Any time the kernel writes to a page cache page, _OR_ + the kernel is about to read from a page cache page and + user space shared/writable mappings of this page potentially + exist, this routine is called. + + NOTE: This routine need only be called for page cache pages + which can potentially ever be mapped into the address + space of a user process. So for example, VFS layer code + handling vfs symlinks in the page cache need not call + this interface at all. + + The phrase "kernel writes to a page cache page" means, + specifically, that the kernel executes store instructions + that dirty data in that page at the page->virtual mapping + of that page. It is important to flush here to handle + D-cache aliasing, to make sure these kernel stores are + visible to user space mappings of that page. + + The corollary case is just as important, if there are users + which have shared+writable mappings of this file, we must make + sure that kernel reads of these pages will see the most recent + stores done by the user. + + If D-cache aliasing is not an issue, this routine may + simply be defined as a nop on that architecture. + + There is a bit set aside in page->flags (PG_arch_1) as + "architecture private". The kernel guarantees that, + for pagecache pages, it will clear this bit when such + a page first enters the pagecache. + + This allows these interfaces to be implemented much more + efficiently. It allows one to "defer" (perhaps indefinitely) + the actual flush if there are currently no user processes + mapping this page. See sparc64's flush_dcache_page and + update_mmu_cache implementations for an example of how to go + about doing this. + + The idea is, first at flush_dcache_page() time, if + page->mapping->i_mmap is an empty tree and ->i_mmap_nonlinear + an empty list, just mark the architecture private page flag bit. + Later, in update_mmu_cache(), a check is made of this flag bit, + and if set the flush is done and the flag bit is cleared. + + IMPORTANT NOTE: It is often important, if you defer the flush, + that the actual flush occurs on the same CPU + as did the cpu stores into the page to make it + dirty. Again, see sparc64 for examples of how + to deal with this. + + void copy_to_user_page(struct vm_area_struct *vma, struct page *page, + unsigned long user_vaddr, + void *dst, void *src, int len) + void copy_from_user_page(struct vm_area_struct *vma, struct page *page, + unsigned long user_vaddr, + void *dst, void *src, int len) + When the kernel needs to copy arbitrary data in and out + of arbitrary user pages (f.e. for ptrace()) it will use + these two routines. + + Any necessary cache flushing or other coherency operations + that need to occur should happen here. If the processor's + instruction cache does not snoop cpu stores, it is very + likely that you will need to flush the instruction cache + for copy_to_user_page(). + + void flush_icache_range(unsigned long start, unsigned long end) + When the kernel stores into addresses that it will execute + out of (eg when loading modules), this function is called. + + If the icache does not snoop stores then this routine will need + to flush it. + + void flush_icache_page(struct vm_area_struct *vma, struct page *page) + All the functionality of flush_icache_page can be implemented in + flush_dcache_page and update_mmu_cache. In 2.7 the hope is to + remove this interface completely. diff --git a/Documentation/cciss.txt b/Documentation/cciss.txt new file mode 100644 index 000000000000..d599beb9df8a --- /dev/null +++ b/Documentation/cciss.txt @@ -0,0 +1,132 @@ +This driver is for Compaq's SMART Array Controllers. + +Supported Cards: +---------------- + +This driver is known to work with the following cards: + + * SA 5300 + * SA 5i + * SA 532 + * SA 5312 + * SA 641 + * SA 642 + * SA 6400 + * SA 6400 U320 Expansion Module + * SA 6i + * SA P600 + * SA P800 + * SA E400 + +If nodes are not already created in the /dev/cciss directory, run as root: + +# cd /dev +# ./MAKEDEV cciss + +Device Naming: +-------------- + +You need some entries in /dev for the cciss device. The MAKEDEV script +can make device nodes for you automatically. Currently the device setup +is as follows: + +Major numbers: + 104 cciss0 + 105 cciss1 + 106 cciss2 + 105 cciss3 + 108 cciss4 + 109 cciss5 + 110 cciss6 + 111 cciss7 + +Minor numbers: + b7 b6 b5 b4 b3 b2 b1 b0 + |----+----| |----+----| + | | + | +-------- Partition ID (0=wholedev, 1-15 partition) + | + +-------------------- Logical Volume number + +The device naming scheme is: +/dev/cciss/c0d0 Controller 0, disk 0, whole device +/dev/cciss/c0d0p1 Controller 0, disk 0, partition 1 +/dev/cciss/c0d0p2 Controller 0, disk 0, partition 2 +/dev/cciss/c0d0p3 Controller 0, disk 0, partition 3 + +/dev/cciss/c1d1 Controller 1, disk 1, whole device +/dev/cciss/c1d1p1 Controller 1, disk 1, partition 1 +/dev/cciss/c1d1p2 Controller 1, disk 1, partition 2 +/dev/cciss/c1d1p3 Controller 1, disk 1, partition 3 + +SCSI tape drive and medium changer support +------------------------------------------ + +SCSI sequential access devices and medium changer devices are supported and +appropriate device nodes are automatically created. (e.g. +/dev/st0, /dev/st1, etc. See the "st" man page for more details.) +You must enable "SCSI tape drive support for Smart Array 5xxx" and +"SCSI support" in your kernel configuration to be able to use SCSI +tape drives with your Smart Array 5xxx controller. + +Additionally, note that the driver will not engage the SCSI core at init +time. The driver must be directed to dynamically engage the SCSI core via +the /proc filesystem entry which the "block" side of the driver creates as +/proc/driver/cciss/cciss* at runtime. This is because at driver init time, +the SCSI core may not yet be initialized (because the driver is a block +driver) and attempting to register it with the SCSI core in such a case +would cause a hang. This is best done via an initialization script +(typically in /etc/init.d, but could vary depending on distibution). +For example: + + for x in /proc/driver/cciss/cciss[0-9]* + do + echo "engage scsi" > $x + done + +Once the SCSI core is engaged by the driver, it cannot be disengaged +(except by unloading the driver, if it happens to be linked as a module.) + +Note also that if no sequential access devices or medium changers are +detected, the SCSI core will not be engaged by the action of the above +script. + +Hot plug support for SCSI tape drives +------------------------------------- + +Hot plugging of SCSI tape drives is supported, with some caveats. +The cciss driver must be informed that changes to the SCSI bus +have been made, in addition to and prior to informing the SCSI +mid layer. This may be done via the /proc filesystem. For example: + + echo "rescan" > /proc/scsi/cciss0/1 + +This causes the adapter to query the adapter about changes to the +physical SCSI buses and/or fibre channel arbitrated loop and the +driver to make note of any new or removed sequential access devices +or medium changers. The driver will output messages indicating what +devices have been added or removed and the controller, bus, target and +lun used to address the device. Once this is done, the SCSI mid layer +can be informed of changes to the virtual SCSI bus which the driver +presents to it in the usual way. For example: + + echo scsi add-single-device 3 2 1 0 > /proc/scsi/scsi + +to add a device on controller 3, bus 2, target 1, lun 0. Note that +the driver makes an effort to preserve the devices positions +in the virtual SCSI bus, so if you are only moving tape drives +around on the same adapter and not adding or removing tape drives +from the adapter, informing the SCSI mid layer may not be necessary. + +Note that the naming convention of the /proc filesystem entries +contains a number in addition to the driver name. (E.g. "cciss0" +instead of just "cciss" which you might expect.) + +Note: ONLY sequential access devices and medium changers are presented +as SCSI devices to the SCSI mid layer by the cciss driver. Specifically, +physical SCSI disk drives are NOT presented to the SCSI mid layer. The +physical SCSI disk drives are controlled directly by the array controller +hardware and it is important to prevent the kernel from attempting to directly +access these devices too, as if the array controller were merely a SCSI +controller in the same way that we are allowing it to access SCSI tape drives. + diff --git a/Documentation/cdrom/00-INDEX b/Documentation/cdrom/00-INDEX new file mode 100644 index 000000000000..916dafe29d3f --- /dev/null +++ b/Documentation/cdrom/00-INDEX @@ -0,0 +1,33 @@ +00-INDEX + - this file (info on CD-ROMs and Linux) +Makefile + - only used to generate TeX output from the documentation. +aztcd + - info on Aztech/Orchid/Okano/Wearnes/Conrad/CyCDROM driver. +cdrom-standard.tex + - LaTeX document on standardizing the CD-ROM programming interface. +cdu31a + - info on the Sony CDU31A/CDU33A CD-ROM driver. +cm206 + - info on the Philips/LMS cm206/cm260 CD-ROM driver. +gscd + - info on the Goldstar R420 CD-ROM driver. +ide-cd + - info on setting up and using ATAPI (aka IDE) CD-ROMs. +isp16 + - info on the CD-ROM interface on ISP16, MAD16 or Mozart sound card. +mcd + - info on limitations of standard Mitsumi CD-ROM driver. +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 + - info on the SANYO CDR-H94A CD-ROM interface driver. +sonycd535 + - info on the Sony CDU-535 (and 531) CD-ROM driver. + diff --git a/Documentation/cdrom/Makefile b/Documentation/cdrom/Makefile new file mode 100644 index 000000000000..a19e321928e1 --- /dev/null +++ b/Documentation/cdrom/Makefile @@ -0,0 +1,21 @@ +LATEXFILE = cdrom-standard + +all: + make clean + latex $(LATEXFILE) + latex $(LATEXFILE) + @if [ -x `which gv` ]; then \ + `dvips -q -t letter -o $(LATEXFILE).ps $(LATEXFILE).dvi` ;\ + `gv -antialias -media letter -nocenter $(LATEXFILE).ps` ;\ + else \ + `xdvi $(LATEXFILE).dvi &` ;\ + fi + make sortofclean + +clean: + rm -f $(LATEXFILE).ps $(LATEXFILE).dvi $(LATEXFILE).aux $(LATEXFILE).log + +sortofclean: + rm -f $(LATEXFILE).aux $(LATEXFILE).log + + diff --git a/Documentation/cdrom/aztcd b/Documentation/cdrom/aztcd new file mode 100644 index 000000000000..6bf0290ef7ce --- /dev/null +++ b/Documentation/cdrom/aztcd @@ -0,0 +1,822 @@ +$Id: README.aztcd,v 2.60 1997/11/29 09:51:25 root Exp root $ + Readme-File Documentation/cdrom/aztcd + for + AZTECH CD-ROM CDA268-01A, ORCHID CD-3110, + OKANO/WEARNES CDD110, CONRAD TXC, CyCDROM CR520, CR540 + CD-ROM Drives + Version 2.6 and newer + (for other drives see 6.-8.) + +NOTE: THIS DRIVER WILL WORK WITH THE CD-ROM DRIVES LISTED, WHICH HAVE + A PROPRIETARY INTERFACE (implemented on a sound card or on an + ISA-AT-bus card). + IT WILL DEFINITELY NOT WORK WITH CD-ROM DRIVES WITH *IDE*-INTERFACE, + such as the Aztech CDA269-031SE !!! (The only known exceptions are + 'faked' IDE drives like the CyCDROM CR520ie which work with aztcd + under certain conditions, see 7.). IF YOU'RE USING A CD-ROM DRIVE + WITH IDE-INTERFACE, SOMETIMES ALSO CALLED ATAPI-COMPATIBLE, PLEASE + USE THE ide-cd.c DRIVER, WRITTEN BY MARK LORD AND SCOTT SNYDER ! + THE STANDARD-KERNEL 1.2.x NOW ALSO SUPPORTS IDE-CDROM-DRIVES, SEE THE + HARDDISK (!) SECTION OF make config, WHEN COMPILING A NEW KERNEL!!! +---------------------------------------------------------------------------- + +Contents of this file: + 1. NOTE + 2. INSTALLATION + 3. CONFIGURING YOUR KERNEL + 4. RECOMPILING YOUR KERNEL + 4.1 AZTCD AS A RUN-TIME LOADABLE MODULE + 4.2 CDROM CONNECTED TO A SOUNDCARD + 5. KNOWN PROBLEMS, FUTURE DEVELOPMENTS + 5.1 MULTISESSION SUPPORT + 5.2 STATUS RECOGNITION + 5.3 DOSEMU's CDROM SUPPORT + 6. BUG REPORTS + 7. OTHER DRIVES + 8. IF YOU DON'T SUCCEED ... DEBUGGING + 9. TECHNICAL HISTORY OF THE DRIVER + 10. ACKNOWLEDGMENTS + 11. PROGRAMMING ADD ONS: CDPLAY.C + APPENDIX: Source code of cdplay.c +---------------------------------------------------------------------------- + +1. NOTE +This software has been successfully in alpha and beta test and is part of +the standard kernel since kernel 1.1.8x since December 1994. It works with +AZTECH CDA268-01A, ORCHID CDS-3110, ORCHID/WEARNES CDD110 and CONRAD TXC +(Nr.99 31 23 -series 04) and has proven to be stable with kernel +versions 1.0.9 and newer. But with any software there still may be bugs in it. +So if you encounter problems, you are invited to help us improve this software. +Please send me a detailed bug report (see chapter BUG REPORTS). You are also +invited in helping us to increase the number of drives, which are supported. + +Please read the README-files carefully and always keep a backup copy of your +old kernel, in order to reboot if something goes wrong! + +2. INSTALLATION +The driver consists of a header file 'aztcd.h', which normally should reside +in /usr/src/linux/drivers/cdrom and the source code 'aztcd.c', which normally +resides in the same place. It uses /dev/aztcd (/dev/aztcd0 in some distri- +butions), which must be a valid block device with major number 29 and reside +in directory /dev. To mount a CD-ROM, your kernel needs to have the ISO9660- +filesystem support included. + +PLEASE NOTE: aztcd.c has been developed in parallel to the linux kernel, +which had and is having many major and minor changes which are not backward +compatible. Quite definitely aztcd.c version 1.80 and newer will NOT work +in kernels older than 1.3.33. So please always use the most recent version +of aztcd.c with the appropriate linux-kernel. + +3. CONFIGURING YOUR KERNEL +If your kernel is already configured for using the AZTECH driver you will +see the following message while Linux boots: + Aztech CD-ROM Init: DriverVersion= BaseAddress= + Aztech CD-ROM Init: FirmwareVersion=>> + Aztech CD-ROM Init: detected + Aztech CD-ROM Init: End +If the message looks different and you are sure to have a supported drive, +it may have a different base address. The Aztech driver does look for the +CD-ROM drive at the base address specified in aztcd.h at compile time. This +address can be overwritten by boot parameter aztcd=....You should reboot and +start Linux with boot parameter aztcd=, e.g. aztcd=0x320. If +you do not know the base address, start your PC with DOS and look at the boot +message of your CD-ROM's DOS driver. If that still does not help, use boot +parameter aztcd=,0x79 , this tells aztcd to try a little harder. +aztcd may be configured to use autoprobing the base address by recompiling +it (see chapter 4.). + +If the message looks correct, as user 'root' you should be able to mount the +drive by + mount -t iso9660 -r /dev/aztcd0 /mnt +and use it as any other filesystem. (If this does not work, check if +/dev/aztcd0 and /mnt do exist and create them, if necessary by doing + mknod /dev/aztcd0 b 29 0 + mkdir /mnt + +If you still get a different message while Linux boots or when you get the +message, that the ISO9660-filesystem is not supported by your kernel, when +you try to mount the CD-ROM drive, you have to recompile your kernel. + +If you do *not* have an Aztech/Orchid/Okano/Wearnes/TXC drive and want to +bypass drive detection during Linux boot up, start with boot parameter aztcd=0. + +Most distributions nowadays do contain a boot disk image containing aztcd. +Please note, that this driver will not work with IDE/ATAPI drives! With these +you must use ide-cd.c instead. + +4. RECOMPILING YOUR KERNEL +If your kernel is not yet configured for the AZTECH driver and the ISO9660- +filesystem, you have to recompile your kernel: + +- Edit aztcd.h to set the I/O-address to your I/O-Base address (AZT_BASE_ADDR), + the driver does not use interrupts or DMA, so if you are using an AZTECH + CD268, an ORCHID CD-3110 or ORCHID/WEARNES CDD110 that's the only item you + have to set up. If you have a soundcard, read chapter 4.2. + Users of other drives should read chapter OTHER DRIVES of this file. + You also can configure that address by kernel boot parameter aztcd=... +- aztcd may be configured to use autoprobing the base address by setting + AZT_BASE_ADDR to '-1'. In that case aztcd probes the addresses listed + under AZT_BASE_AUTO. But please remember, that autoprobing always may + incorrectly influence other hardware components too! +- There are some other points, which may be configured, e.g. auto-eject the + CD when unmounting a drive, tray locking etc., see aztcd.h for details. +- If you're using a linux kernel version prior to 2.1.0, in aztcd.h + uncomment the line '#define AZT_KERNEL_PRIOR_2_1' +- Build a new kernel, configure it for 'Aztech/Orchid/Okano/Wearnes support' + (if you want aztcd to be part of the kernel). Do not configure it for + 'Aztech... support', if you want to use aztcd as a run time loadable module. + But in any case you must have the ISO9660-filesystem included in your + kernel. +- Activate the new kernel, normally this is done by running LILO (don't for- + get to configure it before and to keep a copy of your old kernel in case + something goes wrong!). +- Reboot +- If you've included aztcd in your kernel, you now should see during boot + some messages like + Aztech CD-ROM Init: DriverVersion= BaseAddress= + Aztech CD-ROM Init: FirmwareVersion= + Aztech CD-ROM Init: detected + Aztech CD-ROM Init: End +- If you have not included aztcd in your kernel, but want to load aztcd as a + run time loadable module see 4.1. +- If the message looks correct, as user 'root' you should be able to mount + the drive by + mount -t iso9660 -r /dev/aztcd0 /mnt + and use it as any other filesystem. (If this does not work, check if + /dev/aztcd0 and /mnt do exist and create them, if necessary by doing + mknod /dev/aztcd0 b 29 0 + mkdir /mnt +- If this still does not help, see chapters OTHER DRIVES and DEBUGGING. + +4.1 AZTCD AS A RUN-TIME LOADABLE MODULE +If you do not need aztcd permanently, you can also load and remove the driver +during runtime via insmod and rmmod. To build aztcd as a loadable module you +must configure your kernel for AZTECH module support (answer 'm' when con- +figuring the kernel). Anyhow, you may run into problems, if the version of +your boot kernel is not the same than the source kernel version, from which +you create the modules. So rebuild your kernel, if necessary. + +Now edit the base address of your AZTECH interface card in +/usr/src/linux/drivers/cdrom/aztcd.h to the appropriate value. +aztcd may be configured to use autoprobing the base address by setting +AZT_BASE_ADDR to '-1'. In that case aztcd probes the addresses listed +under AZT_BASE_AUTO. But please remember, that autoprobing always may +incorrectly influence other hardware components too! +There are also some special features which may be configured, e.g. +auto-eject a CD when unmounting the drive etc; see aztcd.h for details. +Then change to /usr/src/linux and do a + make modules + make modules_install +After that you can run-time load the driver via + insmod /lib/modules/X.X.X/misc/aztcd.o +and remove it via rmmod aztcd. +If you did not set the correct base address in aztcd.h, you can also supply the +base address when loading the driver via + insmod /lib/modules/X.X.X/misc/aztcd.o aztcd= +Again specifying aztcd=-1 will cause autoprobing. +If you do not have the iso9660-filesystem in your boot kernel, you also have +to load it before you can mount the CDROM: + insmod /lib/modules/X.X.X/fs/isofs.o +The mount procedure works as described in 4. above. +(In all commands 'X.X.X' is the current linux kernel version number) + +4.2 CDROM CONNECTED TO A SOUNDCARD +Most soundcards do have a bus interface to the CDROM-drive. In many cases +this soundcard needs to be configured, before the CDROM can be used. This +configuration procedure consists of writing some kind of initialization +data to the soundcard registers. The AZTECH-CDROM driver in the moment does +only support one type of soundcard (SoundWave32). Users of other soundcards +should try to boot DOS first and let their DOS drivers initialize the +soundcard and CDROM, then warm boot (or use loadlin) their PC to start +Linux. +Support for the CDROM-interface of SoundWave32-soundcards is directly +implemented in the AZTECH driver. Please edit linux/drivers/cdrom/aztdc.h, +uncomment line '#define AZT_SW32' and set the appropriate value for +AZT_BASE_ADDR and AZT_SW32_BASE_ADDR. This support was tested with an Orchid +CDS-3110 connected to a SoundWave32. +If you want your soundcard to be supported, find out, how it needs to be +configured and mail me (see 6.) the appropriate information. + +5. KNOWN PROBLEMS, FUTURE DEVELOPMENTS +5.1 MULTISESSION SUPPORT +Multisession support for CD's still is a myth. I implemented and tested a basic +support for multisession and XA CDs, but I still have not enough CDs and appli- +cations to test it rigorously. So if you'd like to help me, please contact me +(Email address see below). As of version 1.4 and newer you can enable the +multisession support in aztcd.h by setting AZT_MULTISESSION to 1. Doing so +will cause the ISO9660-filesystem to deal with multisession CDs, ie. redirect +requests to the Table of Contents (TOC) information from the last session, +which contains the info of all previous sessions etc.. If you do set +AZT_MULTISESSION to 0, you can use multisession CDs anyway. In that case the +drive's firmware will do automatic redirection. For the ISO9660-filesystem any +multisession CD will then look like a 'normal' single session CD. But never- +theless the data of all sessions are viewable and accessible. So with practical- +ly all real world applications you won't notice the difference. But as future +applications may make use of advanced multisession features, I've started to +implement the interface for the ISO9660 multisession interface via ioctl +CDROMMULTISESSION. + +5.2 STATUS RECOGNITION +The drive status recognition does not work correctly in all cases. Changing +a disk or having the door open, when a drive is already mounted, is detected +by the Aztech driver itself, but nevertheless causes multiple read attempts +by the different layers of the ISO9660-filesystem driver, which finally timeout, +so you have to wait quite a little... But isn't it bad style to change a disk +in a mounted drive, anyhow ?! + +The driver uses busy wait in most cases for the drive handshake (macros +STEN_LOW and DTEN_LOW). I tested with a 486/DX2 at 66MHz and a Pentium at +60MHz and 90MHz. Whenever you use a much faster machine you are likely to get +timeout messages. In that case edit aztcd.h and increase the timeout value +AZT_TIMEOUT. + +For some 'slow' drive commands I implemented waiting with a timer waitqueue +(macro STEN_LOW_WAIT). If you get this timeout message, you may also edit +aztcd.h and increase the timeout value AZT_STATUS_DELAY. The waitqueue has +shown to be a little critical. If you get kernel panic messages, edit aztcd.c +and substitute STEN_LOW_WAIT by STEN_LOW. Busy waiting with STEN_LOW is more +stable, but also causes CPU overhead. + +5.3 DOSEMU's CD-ROM SUPPORT +With release 1.20 aztcd was modified to allow access to CD-ROMS when running +under dosemu-0.60.0 aztcd-versions before 1.20 are most likely to crash +Linux, when a CD-ROM is accessed under dosemu. This problem has partly been +fixed, but still when accessing a directory for the first time the system +might hang for some 30sec. So be patient, when using dosemu's CD-ROM support +in combination with aztcd :-) ! +This problem has now (July 1995) been fixed by a modification to dosemu's +CD-ROM driver. The new version came with dosemu-0.60.2, see dosemu's +README.CDROM. + +6. BUG REPORTS +Please send detailed bug reports and bug fixes via EMail to + + Werner.Zimmermann@fht-esslingen.de + +Please include a description of your CD-ROM drive type and interface card, +the exact firmware message during Linux bootup, the version number of the +AZTECH-CDROM-driver and the Linux kernel version. Also a description of your +system's other hardware could be of interest, especially microprocessor type, +clock frequency, other interface cards such as soundcards, ethernet adapter, +game cards etc.. + +I will try to collect the reports and make the necessary modifications from +time to time. I may also come back to you directly with some bug fixes and +ask you to do further testing and debugging. + +Editors of CD-ROMs are invited to send a 'cooperation' copy of their +CD-ROMs to the volunteers, who provided the CD-ROM support for Linux. My +snail mail address for such 'stuff' is + Prof. Dr. W. Zimmermann + Fachhochschule fuer Technik Esslingen + Fachbereich IT + Flandernstrasse 101 + D-73732 Esslingen + Germany + + +7. OTHER DRIVES +The following drives ORCHID CDS3110, OKANO CDD110, WEARNES CDD110 and Conrad +TXC Nr. 993123-series 04 nearly look the same as AZTECH CDA268-01A, especially +they seem to use the same command codes. So it was quite simple to make the +AZTECH driver work with these drives. + +Unfortunately I do not have any of these drives available, so I couldn't test +it myself. In some installations, it seems necessary to initialize the drive +with the DOS driver before (especially if combined with a sound card) and then +do a warm boot (CTRL-ALT-RESET) or start Linux from DOS, e.g. with 'loadlin'. + +If you do not succeed, read chapter DEBUGGING. Thanks in advance! + +Sorry for the inconvenience, but it is difficult to develop for hardware, +which you don't have available for testing. So if you like, please help us. + +If you do have a CyCDROM CR520ie thanks to Hilmar Berger's help your chances +are good, that it will work with aztcd. The CR520ie is sold as an IDE-drive +and really is connected to the IDE interface (primary at 0x1F0 or secondary +at 0x170, configured as slave, not as master). Nevertheless it is not ATAPI +compatible but still uses Aztech's command codes. + + +8. DEBUGGING : IF YOU DON'T SUCCEED, TRY THE FOLLOWING +-reread the complete README file +-make sure, that your drive is hardware configured for + transfer mode: polled + IRQ: not used + DMA: not used + Base Address: something like 300, 320 ... + You can check this, when you start the DOS driver, which came with your + drive. By appropriately configuring the drive and the DOS driver you can + check, whether your drive does operate in this mode correctly under DOS. If + it does not operate under DOS, it won't under Linux. + If your drive's base address is something like 0x170 or 0x1F0 (and it is + not a CyCDROM CR520ie or CR 940ie) you most likely are having an IDE/ATAPI- + compatible drive, which is not supported by aztcd.c, use ide-cd.c instead. + Make sure the Base Address is configured correctly in aztcd.h, also make + sure, that /dev/aztcd0 exists with the correct major number (compare it with + the entry in file /usr/include/linux/major.h for the Aztech drive). +-insert a CD-ROM and close the tray +-cold boot your PC (i.e. via the power on switch or the reset button) +-if you start Linux via DOS, e.g. using loadlin, make sure, that the DOS + driver for the CD-ROM drive is not loaded (comment out the calling lines + in DOS' config.sys!) +-look for the aztcd: init message during Linux init and note them exactly +-log in as root and do a mount -t iso9660 /dev/aztcd0 /mnt +-if you don't succeed in the first time, try several times. Try also to open + and close the tray, then mount again. Please note carefully all commands + you typed in and the aztcd-messages, which you get. +-if you get an 'Aztech CD-ROM init: aborted' message, read the remarks about + the version string below. + +If this does not help, do the same with the following differences +-start DOS before; make now sure, that the DOS driver for the CD-ROM is + loaded under DOS (i.e. uncomment it again in config.sys) +-warm boot your PC (i.e. via CTRL-ALT-DEL) + if you have it, you can also start via loadlin (try both). + ... + Again note all commands and the aztcd-messages. + +If you see STEN_LOW or STEN_LOW_WAIT error messages, increase the timeout +values. + +If this still does not help, +-look in aztcd.c for the lines #if 0 + #define AZT_TEST1 + ... + #endif + and substitute '#if 0' by '#if 1'. +-recompile your kernel and repeat the above two procedures. You will now get + a bundle of debugging messages from the driver. Again note your commands + and the appropriate messages. If you have syslogd running, these messages + may also be found in syslogd's kernel log file. Nevertheless in some + installations syslogd does not yet run, when init() is called, thus look for + the aztcd-messages during init, before the login-prompt appears. + Then look in aztcd.c, to find out, what happened. The normal calling sequence + is: aztcd_init() during Linux bootup procedure init() + after doing a 'mount -t iso9660 /dev/aztcd0 /mnt' the normal calling sequence is + aztcd_open() -> Status 2c after cold reboot with CDROM or audio CD inserted + -> Status 8 after warm reboot with CDROM inserted + -> Status 2e after cold reboot with no disk, closed tray + -> Status 6e after cold reboot, mount with door open + aztUpdateToc() + aztGetDiskInfo() + aztGetQChannelInfo() repeated several times + aztGetToc() + aztGetQChannelInfo() repeated several times + a list of track information + do_aztcd_request() } + azt_transfer() } repeated several times + azt_poll } + Check, if there is a difference in the calling sequence or the status flags! + + There are a lot of other messages, eg. the ACMD-command code (defined in + aztcd.h), status info from the getAztStatus-command and the state sequence of + the finite state machine in azt_poll(). The most important are the status + messages, look how they are defined and try to understand, if they make + sense in the context where they appear. With a CD-ROM inserted the status + should always be 8, except in aztcd_open(). Try to open the tray, insert an + audio disk, insert no disk or reinsert the CD-ROM and check, if the status + bits change accordingly. The status bits are the most likely point, where + the drive manufacturers may implement changes. + +If you still don't succeed, a good point to start is to look in aztcd.c in +function aztcd_init, where the drive should be detected during init. Do the +following: +-reboot the system with boot parameter 'aztcd=,0x79'. With + parameter 0x79 most of the drive version detection is bypassed. After that + you should see the complete version string including leading and trailing + blanks during init. + Now adapt the statement + if ((result[1]=='A')&&(result[2]=='Z' ...) + in aztcd_init() to exactly match the first 3 or 4 letters you have seen. +-Another point is the 'smart' card detection feature in aztcd_init(). Normally + the CD-ROM drive is ready, when aztcd_init is trying to read the version + string and a time consuming ACMD_SOFT_RESET command can be avoided. This is + detected by looking, if AFL_OP_OK can be read correctly. If the CD-ROM drive + hangs in some unknown state, e.g. because of an error before a warm start or + because you first operated under DOS, even the version string may be correct, + but the following commands will not. Then change the code in such a way, + that the ACMD_SOFT_RESET is issued in any case, by substituting the + if-statement 'if ( ...=AFL_OP_OK)' by 'if (1)'. + +If you succeed, please mail me the exact version string of your drive and +the code modifications, you have made together with a short explanation. +If you don't succeed, you may mail me the output of the debugging messages. +But remember, they are only useful, if they are exact and complete and you +describe in detail your hardware setup and what you did (cold/warm reboot, +with/without DOS, DOS-driver started/not started, which Linux-commands etc.) + + +9. TECHNICAL HISTORY OF THE DRIVER +The AZTECH-Driver is a rework of the Mitsumi-Driver. Four major items had to +be reworked: + +a) The Mitsumi drive does issue complete status information acknowledging +each command, the Aztech drive does only signal that the command was +processed. So whenever the complete status information is needed, an extra +ACMD_GET_STATUS command is issued. The handshake procedure for the drive +can be found in the functions aztSendCmd(), sendAztCmd() and getAztStatus(). + +b) The Aztech Drive does not have a ACMD_GET_DISK_INFO command, so the +necessary info about the number of tracks (firstTrack, lastTrack), disk +length etc. has to be read from the TOC in the lead in track (see function +aztGetDiskInfo()). + +c) Whenever data is read from the drive, the Mitsumi drive is started with a +command to read an indefinite (0xffffff) number of sectors. When the appropriate +number of sectors is read, the drive is stopped by a ACDM_STOP command. This +does not work with the Aztech drive. I did not find a way to stop it. The +stop and pause commands do only work in AUDIO mode but not in DATA mode. +Therefore I had to modify the 'finite state machine' in function azt_poll to +only read a certain number of sectors and then start a new read on demand. As I +have not completely understood, how the buffer/caching scheme of the Mitsumi +driver was implemented, I am not sure, if I have covered all cases correctly, +whenever you get timeout messages, the bug is most likely to be in that +function azt_poll() around switch(cmd) .... case ACD_S_DATA. + +d) I did not get information about changing drive mode. So I doubt, that the +code around function azt_poll() case AZT_S_MODE does work. In my test I have +not been able to switch to reading in raw mode. For reading raw mode, Aztech +uses a different command than for cooked mode, which I only have implemen- +ted in the ioctl-section but not in the section which is used by the ISO9660. + +The driver was developed on an AST PC with Intel 486/DX2, 8MB RAM, 340MB IDE +hard disk and on an AST PC with Intel Pentium 60MHz, 16MB RAM, 520MB IDE +running Linux kernel version 1.0.9 from the LST 1.8 Distribution. The kernel +was compiled with gcc.2.5.8. My CD-ROM drive is an Aztech CDA268-01A. My +drive says, that it has Firmware Version AZT26801A1.3. It came with an ISA-bus +interface card and works with polled I/O without DMA and without interrupts. +The code for all other drives was 'remote' tested and debugged by a number of +volunteers on the Internet. + +Points, where I feel that possible problems might be and all points where I +did not completely understand the drive's behaviour or trust my own code are +marked with /*???*/ in the source code. There are also some parts in the +Mitsumi driver, where I did not completely understand their code. + + +10. ACKNOWLEDGMENTS +Without the help of P.Bush, Aztech, who delivered technical information +about the Aztech Drive and without the help of E.Moenkeberg, GWDG, who did a +great job in analyzing the command structure of various CD-ROM drives, this +work would not have been possible. E.Moenkeberg was also a great help in +making the software 'kernel ready' and in answering many of the CDROM-related +questions in the newsgroups. He really is *the* Linux CD-ROM guru. Thanks +also to all the guys on the Internet, who collected valuable technical +information about CDROMs. + +Joe Nardone (joe@access.digex.net) was a patient tester even for my first +trial, which was more than slow, and made suggestions for code improvement. +Especially the 'finite state machine' azt_poll() was rewritten by Joe to get +clean C code and avoid the ugly 'gotos', which I copied from mcd.c. + +Robby Schirmer (schirmer@fmi.uni-passau.de) tested the audio stuff (ioctls) +and suggested a lot of patches for them. + +Joseph Piskor and Peter Nugent were the first users with the ORCHID CD3110 +and also were very patient with the problems which occurred. + +Reinhard Max delivered the information for the CDROM-interface of the +SoundWave32 soundcards. + +Jochen Kunz and Olaf Kaluza delivered the information for supporting Conrad's +TXC drive. + +Hilmar Berger delivered the patches for supporting CyCDROM CR520ie. + +Anybody, who is interested in these items should have a look at 'ftp.gwdg.de', +directory 'pub/linux/cdrom' and at 'ftp.cdrom.com', directory 'pub/cdrom'. + +11. PROGRAMMING ADD ONs: cdplay.c +You can use the ioctl-functions included in aztcd.c in your own programs. As +an example on how to do this, you will find a tiny CD Player for audio CDs +named 'cdplay.c'. It allows you to play audio CDs. You can play a specified +track, pause and resume or skip tracks forward and backwards. If you quit the +program without stopping the drive, playing is continued. You can also +(mis)use cdplay to read and hexdump data disks. You can find the code in the +APPENDIX of this file, which you should cut out with an editor and store in a +separate file 'cdplay.c'. To compile it and make it executable, do + gcc -s -Wall -O2 -L/usr/lib cdplay.c -o /usr/local/bin/cdplay # compiles it + chmod +755 /usr/local/bin/cdplay # makes it executable + ln -s /dev/aztcd0 /dev/cdrom # creates a link + (for /usr/lib substitute the top level directory, where your include files + reside, and for /usr/local/bin the directory, where you want the executable + binary to reside ) + +You have to set the correct permissions for cdplay *and* for /dev/mcd0 or +/dev/aztcd0 in order to use it. Remember, that you should not have /dev/cdrom +mounted, when you're playing audio CDs. + +This program is just a hack for testing the ioctl-functions in aztcd.c. I will +not maintain it, so if you run into problems, discard it or have a look into +the source code 'cdplay.c'. The program does only contain a minimum of user +protection and input error detection. If you use the commands in the wrong +order or if you try to read a CD at wrong addresses, you may get error messages +or even hang your machine. If you get STEN_LOW, STEN_LOW_WAIT or segment violation +error messages when using cdplay, after that, the system might not be stable +any more, so you'd better reboot. As the ioctl-functions run in kernel mode, +most normal Linux-multitasking protection features do not work. By using +uninitialized 'wild' pointers etc., it is easy to write to other users' data +and program areas, destroy kernel tables etc.. So if you experiment with ioctls +as always when you are doing systems programming and kernel hacking, you +should have a backup copy of your system in a safe place (and you also +should try restoring from a backup copy first)! + +A reworked and improved version called 'cdtester.c', which has yet more +features for testing CDROM-drives can be found in +Documentation/cdrom/sbpcd, written by E.Moenkeberg. + +Werner Zimmermann +Fachhochschule fuer Technik Esslingen +(EMail: Werner.Zimmermann@fht-esslingen.de) +October, 1997 + +--------------------------------------------------------------------------- +APPENDIX: Source code of cdplay.c + +/* Tiny Audio CD Player + + Copyright 1994, 1995, 1996 Werner Zimmermann (Werner.Zimmermann@fht-esslingen.de) + +This program originally was written to test the audio functions of the +AZTECH.CDROM-driver, but it should work with every CD-ROM drive. Before +using it, you should set a symlink from /dev/cdrom to your real CDROM +device. + +The GNU General Public License applies to this program. + +History: V0.1 W.Zimmermann: First release. Nov. 8, 1994 + V0.2 W.Zimmermann: Enhanced functionality. Nov. 9, 1994 + V0.3 W.Zimmermann: Additional functions. Nov. 28, 1994 + V0.4 W.Zimmermann: fixed some bugs. Dec. 17, 1994 + V0.5 W.Zimmermann: clean 'scanf' commands without compiler warnings + Jan. 6, 1995 + V0.6 W.Zimmermann: volume control (still experimental). Jan. 24, 1995 + V0.7 W.Zimmermann: read raw modified. July 26, 95 +*/ + +#include +#include +#include +#include +#include +#include +#include +#include + +void help(void) +{ printf("Available Commands: STOP s EJECT/CLOSE e QUIT q\n"); + printf(" PLAY TRACK t PAUSE p RESUME r\n"); + printf(" NEXT TRACK n REPEAT LAST l HELP h\n"); + printf(" SUB CHANNEL c TRACK INFO i PLAY AT a\n"); + printf(" READ d READ RAW w VOLUME v\n"); +} + +int main(void) +{ int handle; + unsigned char command=' ', ini=0, first=1, last=1; + unsigned int cmd, i,j,k, arg1,arg2,arg3; + struct cdrom_ti ti; + struct cdrom_tochdr tocHdr; + struct cdrom_subchnl subchnl; + struct cdrom_tocentry entry; + struct cdrom_msf msf; + union { struct cdrom_msf msf; + unsigned char buf[CD_FRAMESIZE_RAW]; + } azt; + struct cdrom_volctrl volctrl; + + printf("\nMini-Audio CD-Player V0.72 (C) 1994,1995,1996 W.Zimmermann\n"); + handle=open("/dev/cdrom",O_RDWR); + ioctl(handle,CDROMRESUME); + + if (handle<=0) + { printf("Drive Error: already playing, no audio disk, door open\n"); + printf(" or no permission (you must be ROOT in order to use this program)\n"); + } + else + { help(); + while (1) + { printf("Type command (h = help): "); + scanf("%s",&command); + switch (command) + { case 'e': cmd=CDROMEJECT; + ioctl(handle,cmd); + break; + case 'p': if (!ini) + { printf("Command not allowed - play track first\n"); + } + else + { cmd=CDROMPAUSE; + if (ioctl(handle,cmd)) printf("Drive Error\n"); + } + break; + case 'r': if (!ini) + { printf("Command not allowed - play track first\n"); + } + else + { cmd=CDROMRESUME; + if (ioctl(handle,cmd)) printf("Drive Error\n"); + } + break; + case 's': cmd=CDROMPAUSE; + if (ioctl(handle,cmd)) printf("Drive error or already stopped\n"); + cmd=CDROMSTOP; + if (ioctl(handle,cmd)) printf("Drive error\n"); + break; + case 't': cmd=CDROMREADTOCHDR; + if (ioctl(handle,cmd,&tocHdr)) printf("Drive Error\n"); + first=tocHdr.cdth_trk0; + last= tocHdr.cdth_trk1; + if ((first==0)||(first>last)) + { printf ("--could not read TOC\n"); + } + else + { printf("--first track: %d --last track: %d --enter track number: ",first,last); + cmd=CDROMPLAYTRKIND; + scanf("%i",&arg1); + ti.cdti_trk0=arg1; + if (ti.cdti_trk0last) ti.cdti_trk0=last; + ti.cdti_ind0=0; + ti.cdti_trk1=last; + ti.cdti_ind1=0; + if (ioctl(handle,cmd,&ti)) printf("Drive Error\n"); + ini=1; + } + break; + case 'n': if (!ini++) + { if (ioctl(handle,CDROMREADTOCHDR,&tocHdr)) printf("Drive Error\n"); + first=tocHdr.cdth_trk0; + last= tocHdr.cdth_trk1; + ti.cdti_trk0=first-1; + } + if ((first==0)||(first>last)) + { printf ("--could not read TOC\n"); + } + else + { cmd=CDROMPLAYTRKIND; + if (++ti.cdti_trk0 > last) ti.cdti_trk0=last; + ti.cdti_ind0=0; + ti.cdti_trk1=last; + ti.cdti_ind1=0; + if (ioctl(handle,cmd,&ti)) printf("Drive Error\n"); + ini=1; + } + break; + case 'l': if (!ini++) + { if (ioctl(handle,CDROMREADTOCHDR,&tocHdr)) printf("Drive Error\n"); + first=tocHdr.cdth_trk0; + last= tocHdr.cdth_trk1; + ti.cdti_trk0=first+1; + } + if ((first==0)||(first>last)) + { printf ("--could not read TOC\n"); + } + else + { cmd=CDROMPLAYTRKIND; + if (--ti.cdti_trk0 < first) ti.cdti_trk0=first; + ti.cdti_ind0=0; + ti.cdti_trk1=last; + ti.cdti_ind1=0; + if (ioctl(handle,cmd,&ti)) printf("Drive Error\n"); + ini=1; + } + break; + case 'c': subchnl.cdsc_format=CDROM_MSF; + if (ioctl(handle,CDROMSUBCHNL,&subchnl)) + printf("Drive Error\n"); + else + { printf("AudioStatus:%s Track:%d Mode:%d MSF=%d:%d:%d\n", \ + subchnl.cdsc_audiostatus==CDROM_AUDIO_PLAY ? "PLAYING":"NOT PLAYING",\ + subchnl.cdsc_trk,subchnl.cdsc_adr, \ + subchnl.cdsc_absaddr.msf.minute, subchnl.cdsc_absaddr.msf.second, \ + subchnl.cdsc_absaddr.msf.frame); + } + break; + case 'i': if (!ini) + { printf("Command not allowed - play track first\n"); + } + else + { cmd=CDROMREADTOCENTRY; + printf("Track No.: "); + scanf("%d",&arg1); + entry.cdte_track=arg1; + if (entry.cdte_tracklast) entry.cdte_track=last; + entry.cdte_format=CDROM_MSF; + if (ioctl(handle,cmd,&entry)) + { printf("Drive error or invalid track no.\n"); + } + else + { printf("Mode %d Track, starts at %d:%d:%d\n", \ + entry.cdte_adr,entry.cdte_addr.msf.minute, \ + entry.cdte_addr.msf.second,entry.cdte_addr.msf.frame); + } + } + break; + case 'a': cmd=CDROMPLAYMSF; + printf("Address (min:sec:frame) "); + scanf("%d:%d:%d",&arg1,&arg2,&arg3); + msf.cdmsf_min0 =arg1; + msf.cdmsf_sec0 =arg2; + msf.cdmsf_frame0=arg3; + if (msf.cdmsf_sec0 > 59) msf.cdmsf_sec0 =59; + if (msf.cdmsf_frame0> 74) msf.cdmsf_frame0=74; + msf.cdmsf_min1=60; + msf.cdmsf_sec1=00; + msf.cdmsf_frame1=00; + if (ioctl(handle,cmd,&msf)) + { printf("Drive error or invalid address\n"); + } + break; +#ifdef AZT_PRIVATE_IOCTLS /*not supported by every CDROM driver*/ + case 'd': cmd=CDROMREADCOOKED; + printf("Address (min:sec:frame) "); + scanf("%d:%d:%d",&arg1,&arg2,&arg3); + azt.msf.cdmsf_min0 =arg1; + azt.msf.cdmsf_sec0 =arg2; + azt.msf.cdmsf_frame0=arg3; + if (azt.msf.cdmsf_sec0 > 59) azt.msf.cdmsf_sec0 =59; + if (azt.msf.cdmsf_frame0> 74) azt.msf.cdmsf_frame0=74; + if (ioctl(handle,cmd,&azt.msf)) + { printf("Drive error, invalid address or unsupported command\n"); + } + k=0; + getchar(); + for (i=0;i<128;i++) + { printf("%4d:",i*16); + for (j=0;j<16;j++) + { printf("%2x ",azt.buf[i*16+j]); + } + for (j=0;j<16;j++) + { if (isalnum(azt.buf[i*16+j])) + printf("%c",azt.buf[i*16+j]); + else + printf("."); + } + printf("\n"); + k++; + if (k>=20) + { printf("press ENTER to continue\n"); + getchar(); + k=0; + } + } + break; + case 'w': cmd=CDROMREADRAW; + printf("Address (min:sec:frame) "); + scanf("%d:%d:%d",&arg1,&arg2,&arg3); + azt.msf.cdmsf_min0 =arg1; + azt.msf.cdmsf_sec0 =arg2; + azt.msf.cdmsf_frame0=arg3; + if (azt.msf.cdmsf_sec0 > 59) azt.msf.cdmsf_sec0 =59; + if (azt.msf.cdmsf_frame0> 74) azt.msf.cdmsf_frame0=74; + if (ioctl(handle,cmd,&azt)) + { printf("Drive error, invalid address or unsupported command\n"); + } + k=0; + for (i=0;i<147;i++) + { printf("%4d:",i*16); + for (j=0;j<16;j++) + { printf("%2x ",azt.buf[i*16+j]); + } + for (j=0;j<16;j++) + { if (isalnum(azt.buf[i*16+j])) + printf("%c",azt.buf[i*16+j]); + else + printf("."); + } + printf("\n"); + k++; + if (k>=20) + { getchar(); + k=0; + } + } + break; +#endif + case 'v': cmd=CDROMVOLCTRL; + printf("--Channel 0 Left (0-255): "); + scanf("%d",&arg1); + printf("--Channel 1 Right (0-255): "); + scanf("%d",&arg2); + volctrl.channel0=arg1; + volctrl.channel1=arg2; + volctrl.channel2=0; + volctrl.channel3=0; + if (ioctl(handle,cmd,&volctrl)) + { printf("Drive error or unsupported command\n"); + } + break; + case 'q': if (close(handle)) printf("Drive Error: CLOSE\n"); + exit(0); + case 'h': help(); + break; + default: printf("unknown command\n"); + break; + } + } + } + return 0; +} diff --git a/Documentation/cdrom/cdrom-standard.tex b/Documentation/cdrom/cdrom-standard.tex new file mode 100644 index 000000000000..92f94e597582 --- /dev/null +++ b/Documentation/cdrom/cdrom-standard.tex @@ -0,0 +1,1022 @@ +\documentclass{article} +\def\version{$Id: cdrom-standard.tex,v 1.9 1997/12/28 15:42:49 david Exp $} +\newcommand{\newsection}[1]{\newpage\section{#1}} + +\evensidemargin=0pt +\oddsidemargin=0pt +\topmargin=-\headheight \advance\topmargin by -\headsep +\textwidth=15.99cm \textheight=24.62cm % normal A4, 1'' margin + +\def\linux{{\sc Linux}} +\def\cdrom{{\sc cd-rom}} +\def\UCD{{\sc Uniform cd-rom Driver}} +\def\cdromc{{\tt {cdrom.c}}} +\def\cdromh{{\tt {cdrom.h}}} +\def\fo{\sl} % foreign words +\def\ie{{\fo i.e.}} +\def\eg{{\fo e.g.}} + +\everymath{\it} \everydisplay{\it} +\catcode `\_=\active \def_{\_\penalty100 } +\catcode`\<=\active \def<#1>{{\langle\hbox{\rm#1}\rangle}} + +\begin{document} +\title{A \linux\ \cdrom\ standard} +\author{David van Leeuwen\\{\normalsize\tt david@ElseWare.cistron.nl} +\\{\footnotesize updated by Erik Andersen {\tt(andersee@debian.org)}} +\\{\footnotesize updated by Jens Axboe {\tt(axboe@image.dk)}}} +\date{12 March 1999} + +\maketitle + +\newsection{Introduction} + +\linux\ is probably the Unix-like operating system that supports +the widest variety of hardware devices. The reasons for this are +presumably +\begin{itemize} +\item + The large list of hardware devices available for the many platforms + that \linux\ now supports (\ie, i386-PCs, Sparc Suns, etc.) +\item + The open design of the operating system, such that anybody can write a + driver for \linux. +\item + There is plenty of source code around as examples of how to write a driver. +\end{itemize} +The openness of \linux, and the many different types of available +hardware has allowed \linux\ to support many different hardware devices. +Unfortunately, the very openness that has allowed \linux\ to support +all these different devices has also allowed the behavior of each +device driver to differ significantly from one device to another. +This divergence of behavior has been very significant for \cdrom\ +devices; the way a particular drive reacts to a `standard' $ioctl()$ +call varies greatly from one device driver to another. To avoid making +their drivers totally inconsistent, the writers of \linux\ \cdrom\ +drivers generally created new device drivers by understanding, copying, +and then changing an existing one. Unfortunately, this practice did not +maintain uniform behavior across all the \linux\ \cdrom\ drivers. + +This document describes an effort to establish Uniform behavior across +all the different \cdrom\ device drivers for \linux. This document also +defines the various $ioctl$s, and how the low-level \cdrom\ device +drivers should implement them. Currently (as of the \linux\ 2.1.$x$ +development kernels) several low-level \cdrom\ device drivers, including +both IDE/ATAPI and SCSI, now use this Uniform interface. + +When the \cdrom\ was developed, the interface between the \cdrom\ drive +and the computer was not specified in the standards. As a result, many +different \cdrom\ interfaces were developed. Some of them had their +own proprietary design (Sony, Mitsumi, Panasonic, Philips), other +manufacturers adopted an existing electrical interface and changed +the functionality (CreativeLabs/SoundBlaster, Teac, Funai) or simply +adapted their drives to one or more of the already existing electrical +interfaces (Aztech, Sanyo, Funai, Vertos, Longshine, Optics Storage and +most of the `NoName' manufacturers). In cases where a new drive really +brought its own interface or used its own command set and flow control +scheme, either a separate driver had to be written, or an existing +driver had to be enhanced. History has delivered us \cdrom\ support for +many of these different interfaces. Nowadays, almost all new \cdrom\ +drives are either IDE/ATAPI or SCSI, and it is very unlikely that any +manufacturer will create a new interface. Even finding drives for the +old proprietary interfaces is getting difficult. + +When (in the 1.3.70's) I looked at the existing software interface, +which was expressed through \cdromh, it appeared to be a rather wild +set of commands and data formats.\footnote{I cannot recollect what +kernel version I looked at, then, presumably 1.2.13 and 1.3.34---the +latest kernel that I was indirectly involved in.} It seemed that many +features of the software interface had been added to accommodate the +capabilities of a particular drive, in an {\fo ad hoc\/} manner. More +importantly, it appeared that the behavior of the `standard' commands +was different for most of the different drivers: \eg, some drivers +close the tray if an $open()$ call occurs when the tray is open, while +others do not. Some drivers lock the door upon opening the device, to +prevent an incoherent file system, but others don't, to allow software +ejection. Undoubtedly, the capabilities of the different drives vary, +but even when two drives have the same capability their drivers' +behavior was usually different. + +I decided to start a discussion on how to make all the \linux\ \cdrom\ +drivers behave more uniformly. I began by contacting the developers of +the many \cdrom\ drivers found in the \linux\ kernel. Their reactions +encouraged me to write the \UCD\ which this document is intended to +describe. The implementation of the \UCD\ is in the file \cdromc. This +driver is intended to be an additional software layer that sits on top +of the low-level device drivers for each \cdrom\ drive. By adding this +additional layer, it is possible to have all the different \cdrom\ +devices behave {\em exactly\/} the same (insofar as the underlying +hardware will allow). + +The goal of the \UCD\ is {\em not\/} to alienate driver developers who +have not yet taken steps to support this effort. The goal of \UCD\ is +simply to give people writing application programs for \cdrom\ drives +{\em one\/} \linux\ \cdrom\ interface with consistent behavior for all +\cdrom\ devices. In addition, this also provides a consistent interface +between the low-level device driver code and the \linux\ kernel. Care +is taken that 100\,\% compatibility exists with the data structures and +programmer's interface defined in \cdromh. This guide was written to +help \cdrom\ driver developers adapt their code to use the \UCD\ code +defined in \cdromc. + +Personally, I think that the most important hardware interfaces are +the IDE/ATAPI drives and, of course, the SCSI drives, but as prices +of hardware drop continuously, it is also likely that people may have +more than one \cdrom\ drive, possibly of mixed types. It is important +that these drives behave in the same way. In December 1994, one of the +cheapest \cdrom\ drives was a Philips cm206, a double-speed proprietary +drive. In the months that I was busy writing a \linux\ driver for it, +proprietary drives became obsolete and IDE/ATAPI drives became the +standard. At the time of the last update to this document (November +1997) it is becoming difficult to even {\em find} anything less than a +16 speed \cdrom\ drive, and 24 speed drives are common. + +\newsection{Standardizing through another software level} +\label{cdrom.c} + +At the time this document was conceived, all drivers directly +implemented the \cdrom\ $ioctl()$ calls through their own routines. This +led to the danger of different drivers forgetting to do important things +like checking that the user was giving the driver valid data. More +importantly, this led to the divergence of behavior, which has already +been discussed. + +For this reason, the \UCD\ was created to enforce consistent \cdrom\ +drive behavior, and to provide a common set of services to the various +low-level \cdrom\ device drivers. The \UCD\ now provides another +software-level, that separates the $ioctl()$ and $open()$ implementation +from the actual hardware implementation. Note that this effort has +made few changes which will affect a user's application programs. The +greatest change involved moving the contents of the various low-level +\cdrom\ drivers' header files to the kernel's cdrom directory. This was +done to help ensure that the user is only presented with only one cdrom +interface, the interface defined in \cdromh. + +\cdrom\ drives are specific enough (\ie, different from other +block-devices such as floppy or hard disc drives), to define a set +of common {\em \cdrom\ device operations}, $_dops$. +These operations are different from the classical block-device file +operations, $_fops$. + +The routines for the \UCD\ interface level are implemented in the file +\cdromc. In this file, the \UCD\ interfaces with the kernel as a block +device by registering the following general $struct\ file_operations$: +$$ +\halign{$#$\ \hfil&$#$\ \hfil&$/*$ \rm# $*/$\hfil\cr +struct& file_operations\ cdrom_fops = \{\hidewidth\cr + &NULL, & lseek \cr + &block_read, & read---general block-dev read \cr + &block_write, & write---general block-dev write \cr + &NULL, & readdir \cr + &NULL, & select \cr + &cdrom_ioctl, & ioctl \cr + &NULL, & mmap \cr + &cdrom_open, & open \cr + &cdrom_release, & release \cr + &NULL, & fsync \cr + &NULL, & fasync \cr + &cdrom_media_changed, & media change \cr + &NULL & revalidate \cr +\};\cr +} +$$ + +Every active \cdrom\ device shares this $struct$. The routines +declared above are all implemented in \cdromc, since this file is the +place where the behavior of all \cdrom-devices is defined and +standardized. The actual interface to the various types of \cdrom\ +hardware is still performed by various low-level \cdrom-device +drivers. These routines simply implement certain {\em capabilities\/} +that are common to all \cdrom\ (and really, all removable-media +devices). + +Registration of a low-level \cdrom\ device driver is now done through +the general routines in \cdromc, not through the Virtual File System +(VFS) any more. The interface implemented in \cdromc\ is carried out +through two general structures that contain information about the +capabilities of the driver, and the specific drives on which the +driver operates. The structures are: +\begin{description} +\item[$cdrom_device_ops$] + This structure contains information about the low-level driver for a + \cdrom\ device. This structure is conceptually connected to the major + number of the device (although some drivers may have different + major numbers, as is the case for the IDE driver). +\item[$cdrom_device_info$] + This structure contains information about a particular \cdrom\ drive, + such as its device name, speed, etc. This structure is conceptually + connected to the minor number of the device. +\end{description} + +Registering a particular \cdrom\ drive with the \UCD\ is done by the +low-level device driver though a call to: +$$register_cdrom(struct\ cdrom_device_info * _info) +$$ +The device information structure, $_info$, contains all the +information needed for the kernel to interface with the low-level +\cdrom\ device driver. One of the most important entries in this +structure is a pointer to the $cdrom_device_ops$ structure of the +low-level driver. + +The device operations structure, $cdrom_device_ops$, contains a list +of pointers to the functions which are implemented in the low-level +device driver. When \cdromc\ accesses a \cdrom\ device, it does it +through the functions in this structure. It is impossible to know all +the capabilities of future \cdrom\ drives, so it is expected that this +list may need to be expanded from time to time as new technologies are +developed. For example, CD-R and CD-R/W drives are beginning to become +popular, and support will soon need to be added for them. For now, the +current $struct$ is: +$$ +\halign{$#$\ \hfil&$#$\ \hfil&\hbox to 10em{$#$\hss}& + $/*$ \rm# $*/$\hfil\cr +struct& cdrom_device_ops\ \{ \hidewidth\cr + &int& (* open)(struct\ cdrom_device_info *, int)\cr + &void& (* release)(struct\ cdrom_device_info *);\cr + &int& (* drive_status)(struct\ cdrom_device_info *, int);\cr + &int& (* media_changed)(struct\ cdrom_device_info *, int);\cr + &int& (* tray_move)(struct\ cdrom_device_info *, int);\cr + &int& (* lock_door)(struct\ cdrom_device_info *, int);\cr + &int& (* select_speed)(struct\ cdrom_device_info *, int);\cr + &int& (* select_disc)(struct\ cdrom_device_info *, int);\cr + &int& (* get_last_session) (struct\ cdrom_device_info *, + struct\ cdrom_multisession *{});\cr + &int& (* get_mcn)(struct\ cdrom_device_info *, struct\ cdrom_mcn *{});\cr + &int& (* reset)(struct\ cdrom_device_info *);\cr + &int& (* audio_ioctl)(struct\ cdrom_device_info *, unsigned\ int, + void *{});\cr + &int& (* dev_ioctl)(struct\ cdrom_device_info *, unsigned\ int, + unsigned\ long);\cr +\noalign{\medskip} + &const\ int& capability;& capability flags \cr + &int& n_minors;& number of active minor devices \cr +\};\cr +} +$$ +When a low-level device driver implements one of these capabilities, +it should add a function pointer to this $struct$. When a particular +function is not implemented, however, this $struct$ should contain a +NULL instead. The $capability$ flags specify the capabilities of the +\cdrom\ hardware and/or low-level \cdrom\ driver when a \cdrom\ drive +is registered with the \UCD. The value $n_minors$ should be a positive +value indicating the number of minor devices that are supported by +the low-level device driver, normally~1. Although these two variables +are `informative' rather than `operational,' they are included in +$cdrom_device_ops$ because they describe the capability of the {\em +driver\/} rather than the {\em drive}. Nomenclature has always been +difficult in computer programming. + +Note that most functions have fewer parameters than their +$blkdev_fops$ counterparts. This is because very little of the +information in the structures $inode$ and $file$ is used. For most +drivers, the main parameter is the $struct$ $cdrom_device_info$, from +which the major and minor number can be extracted. (Most low-level +\cdrom\ drivers don't even look at the major and minor number though, +since many of them only support one device.) This will be available +through $dev$ in $cdrom_device_info$ described below. + +The drive-specific, minor-like information that is registered with +\cdromc, currently contains the following fields: +$$ +\halign{$#$\ \hfil&$#$\ \hfil&\hbox to 10em{$#$\hss}& + $/*$ \rm# $*/$\hfil\cr +struct& cdrom_device_info\ \{ \hidewidth\cr + & struct\ cdrom_device_ops *& ops;& device operations for this major\cr + & struct\ cdrom_device_info *& next;& next device_info for this major\cr + & void *& handle;& driver-dependent data\cr +\noalign{\medskip} + & kdev_t& dev;& device number (incorporates minor)\cr + & int& mask;& mask of capability: disables them \cr + & int& speed;& maximum speed for reading data \cr + & int& capacity;& number of discs in a jukebox \cr +\noalign{\medskip} + &int& options : 30;& options flags \cr + &unsigned& mc_flags : 2;& media-change buffer flags \cr + & int& use_count;& number of times device is opened\cr + & char& name[20];& name of the device type\cr +\}\cr +}$$ +Using this $struct$, a linked list of the registered minor devices is +built, using the $next$ field. The device number, the device operations +struct and specifications of properties of the drive are stored in this +structure. + +The $mask$ flags can be used to mask out some of the capabilities listed +in $ops\to capability$, if a specific drive doesn't support a feature +of the driver. The value $speed$ specifies the maximum head-rate of the +drive, measured in units of normal audio speed (176\,kB/sec raw data or +150\,kB/sec file system data). The value $n_discs$ should reflect the +number of discs the drive can hold simultaneously, if it is designed +as a juke-box, or otherwise~1. The parameters are declared $const$ +because they describe properties of the drive, which don't change after +registration. + +A few registers contain variables local to the \cdrom\ drive. The +flags $options$ are used to specify how the general \cdrom\ routines +should behave. These various flags registers should provide enough +flexibility to adapt to the different users' wishes (and {\em not\/} the +`arbitrary' wishes of the author of the low-level device driver, as is +the case in the old scheme). The register $mc_flags$ is used to buffer +the information from $media_changed()$ to two separate queues. Other +data that is specific to a minor drive, can be accessed through $handle$, +which can point to a data structure specific to the low-level driver. +The fields $use_count$, $next$, $options$ and $mc_flags$ need not be +initialized. + +The intermediate software layer that \cdromc\ forms will perform some +additional bookkeeping. The use count of the device (the number of +processes that have the device opened) is registered in $use_count$. The +function $cdrom_ioctl()$ will verify the appropriate user-memory regions +for read and write, and in case a location on the CD is transferred, +it will `sanitize' the format by making requests to the low-level +drivers in a standard format, and translating all formats between the +user-software and low level drivers. This relieves much of the drivers' +memory checking and format checking and translation. Also, the necessary +structures will be declared on the program stack. + +The implementation of the functions should be as defined in the +following sections. Two functions {\em must\/} be implemented, namely +$open()$ and $release()$. Other functions may be omitted, their +corresponding capability flags will be cleared upon registration. +Generally, a function returns zero on success and negative on error. A +function call should return only after the command has completed, but of +course waiting for the device should not use processor time. + +\subsection{$Int\ open(struct\ cdrom_device_info * cdi, int\ purpose)$} + +$Open()$ should try to open the device for a specific $purpose$, which +can be either: +\begin{itemize} +\item[0] Open for reading data, as done by {\tt {mount()}} (2), or the +user commands {\tt {dd}} or {\tt {cat}}. +\item[1] Open for $ioctl$ commands, as done by audio-CD playing +programs. +\end{itemize} +Notice that any strategic code (closing tray upon $open()$, etc.)\ is +done by the calling routine in \cdromc, so the low-level routine +should only be concerned with proper initialization, such as spinning +up the disc, etc. % and device-use count + + +\subsection{$Void\ release(struct\ cdrom_device_info * cdi)$} + + +Device-specific actions should be taken such as spinning down the device. +However, strategic actions such as ejection of the tray, or unlocking +the door, should be left over to the general routine $cdrom_release()$. +This is the only function returning type $void$. + +\subsection{$Int\ drive_status(struct\ cdrom_device_info * cdi, int\ slot_nr)$} +\label{drive status} + +The function $drive_status$, if implemented, should provide +information on the status of the drive (not the status of the disc, +which may or may not be in the drive). If the drive is not a changer, +$slot_nr$ should be ignored. In \cdromh\ the possibilities are listed: +$$ +\halign{$#$\ \hfil&$/*$ \rm# $*/$\hfil\cr +CDS_NO_INFO& no information available\cr +CDS_NO_DISC& no disc is inserted, tray is closed\cr +CDS_TRAY_OPEN& tray is opened\cr +CDS_DRIVE_NOT_READY& something is wrong, tray is moving?\cr +CDS_DISC_OK& a disc is loaded and everything is fine\cr +} +$$ + +\subsection{$Int\ media_changed(struct\ cdrom_device_info * cdi, int\ disc_nr)$} + +This function is very similar to the original function in $struct\ +file_operations$. It returns 1 if the medium of the device $cdi\to +dev$ has changed since the last call, and 0 otherwise. The parameter +$disc_nr$ identifies a specific slot in a juke-box, it should be +ignored for single-disc drives. Note that by `re-routing' this +function through $cdrom_media_changed()$, we can implement separate +queues for the VFS and a new $ioctl()$ function that can report device +changes to software (\eg, an auto-mounting daemon). + +\subsection{$Int\ tray_move(struct\ cdrom_device_info * cdi, int\ position)$} + +This function, if implemented, should control the tray movement. (No +other function should control this.) The parameter $position$ controls +the desired direction of movement: +\begin{itemize} +\item[0] Close tray +\item[1] Open tray +\end{itemize} +This function returns 0 upon success, and a non-zero value upon +error. Note that if the tray is already in the desired position, no +action need be taken, and the return value should be 0. + +\subsection{$Int\ lock_door(struct\ cdrom_device_info * cdi, int\ lock)$} + +This function (and no other code) controls locking of the door, if the +drive allows this. The value of $lock$ controls the desired locking +state: +\begin{itemize} +\item[0] Unlock door, manual opening is allowed +\item[1] Lock door, tray cannot be ejected manually +\end{itemize} +This function returns 0 upon success, and a non-zero value upon +error. Note that if the door is already in the requested state, no +action need be taken, and the return value should be 0. + +\subsection{$Int\ select_speed(struct\ cdrom_device_info * cdi, int\ speed)$} + +Some \cdrom\ drives are capable of changing their head-speed. There +are several reasons for changing the speed of a \cdrom\ drive. Badly +pressed \cdrom s may benefit from less-than-maximum head rate. Modern +\cdrom\ drives can obtain very high head rates (up to $24\times$ is +common). It has been reported that these drives can make reading +errors at these high speeds, reducing the speed can prevent data loss +in these circumstances. Finally, some of these drives can +make an annoyingly loud noise, which a lower speed may reduce. %Finally, +%although the audio-low-pass filters probably aren't designed for it, +%more than real-time playback of audio might be used for high-speed +%copying of audio tracks. + +This function specifies the speed at which data is read or audio is +played back. The value of $speed$ specifies the head-speed of the +drive, measured in units of standard cdrom speed (176\,kB/sec raw data +or 150\,kB/sec file system data). So to request that a \cdrom\ drive +operate at 300\,kB/sec you would call the CDROM_SELECT_SPEED $ioctl$ +with $speed=2$. The special value `0' means `auto-selection', \ie, +maximum data-rate or real-time audio rate. If the drive doesn't have +this `auto-selection' capability, the decision should be made on the +current disc loaded and the return value should be positive. A negative +return value indicates an error. + +\subsection{$Int\ select_disc(struct\ cdrom_device_info * cdi, int\ number)$} + +If the drive can store multiple discs (a juke-box) this function +will perform disc selection. It should return the number of the +selected disc on success, a negative value on error. Currently, only +the ide-cd driver supports this functionality. + +\subsection{$Int\ get_last_session(struct\ cdrom_device_info * cdi, struct\ + cdrom_multisession * ms_info)$} + +This function should implement the old corresponding $ioctl()$. For +device $cdi\to dev$, the start of the last session of the current disc +should be returned in the pointer argument $ms_info$. Note that +routines in \cdromc\ have sanitized this argument: its requested +format will {\em always\/} be of the type $CDROM_LBA$ (linear block +addressing mode), whatever the calling software requested. But +sanitization goes even further: the low-level implementation may +return the requested information in $CDROM_MSF$ format if it wishes so +(setting the $ms_info\rightarrow addr_format$ field appropriately, of +course) and the routines in \cdromc\ will make the transformation if +necessary. The return value is 0 upon success. + +\subsection{$Int\ get_mcn(struct\ cdrom_device_info * cdi, struct\ + cdrom_mcn * mcn)$} + +Some discs carry a `Media Catalog Number' (MCN), also called +`Universal Product Code' (UPC). This number should reflect the number +that is generally found in the bar-code on the product. Unfortunately, +the few discs that carry such a number on the disc don't even use the +same format. The return argument to this function is a pointer to a +pre-declared memory region of type $struct\ cdrom_mcn$. The MCN is +expected as a 13-character string, terminated by a null-character. + +\subsection{$Int\ reset(struct\ cdrom_device_info * cdi)$} + +This call should perform a hard-reset on the drive (although in +circumstances that a hard-reset is necessary, a drive may very well not +listen to commands anymore). Preferably, control is returned to the +caller only after the drive has finished resetting. If the drive is no +longer listening, it may be wise for the underlying low-level cdrom +driver to time out. + +\subsection{$Int\ audio_ioctl(struct\ cdrom_device_info * cdi, unsigned\ + int\ cmd, void * arg)$} + +Some of the \cdrom-$ioctl$s defined in \cdromh\ can be +implemented by the routines described above, and hence the function +$cdrom_ioctl$ will use those. However, most $ioctl$s deal with +audio-control. We have decided to leave these to be accessed through a +single function, repeating the arguments $cmd$ and $arg$. Note that +the latter is of type $void*{}$, rather than $unsigned\ long\ +int$. The routine $cdrom_ioctl()$ does do some useful things, +though. It sanitizes the address format type to $CDROM_MSF$ (Minutes, +Seconds, Frames) for all audio calls. It also verifies the memory +location of $arg$, and reserves stack-memory for the argument. This +makes implementation of the $audio_ioctl()$ much simpler than in the +old driver scheme. For example, you may look up the function +$cm206_audio_ioctl()$ in {\tt {cm206.c}} that should be updated with +this documentation. + +An unimplemented ioctl should return $-ENOSYS$, but a harmless request +(\eg, $CDROMSTART$) may be ignored by returning 0 (success). Other +errors should be according to the standards, whatever they are. When +an error is returned by the low-level driver, the \UCD\ tries whenever +possible to return the error code to the calling program. (We may decide +to sanitize the return value in $cdrom_ioctl()$ though, in order to +guarantee a uniform interface to the audio-player software.) + +\subsection{$Int\ dev_ioctl(struct\ cdrom_device_info * cdi, unsigned\ int\ + cmd, unsigned\ long\ arg)$} + +Some $ioctl$s seem to be specific to certain \cdrom\ drives. That is, +they are introduced to service some capabilities of certain drives. In +fact, there are 6 different $ioctl$s for reading data, either in some +particular kind of format, or audio data. Not many drives support +reading audio tracks as data, I believe this is because of protection +of copyrights of artists. Moreover, I think that if audio-tracks are +supported, it should be done through the VFS and not via $ioctl$s. A +problem here could be the fact that audio-frames are 2352 bytes long, +so either the audio-file-system should ask for 75264 bytes at once +(the least common multiple of 512 and 2352), or the drivers should +bend their backs to cope with this incoherence (to which I would be +opposed). Furthermore, it is very difficult for the hardware to find +the exact frame boundaries, since there are no synchronization headers +in audio frames. Once these issues are resolved, this code should be +standardized in \cdromc. + +Because there are so many $ioctl$s that seem to be introduced to +satisfy certain drivers,\footnote{Is there software around that + actually uses these? I'd be interested!} any `non-standard' $ioctl$s +are routed through the call $dev_ioctl()$. In principle, `private' +$ioctl$s should be numbered after the device's major number, and not +the general \cdrom\ $ioctl$ number, {\tt {0x53}}. Currently the +non-supported $ioctl$s are: {\it CDROMREADMODE1, CDROMREADMODE2, + CDROMREADAUDIO, CDROMREADRAW, CDROMREADCOOKED, CDROMSEEK, + CDROMPLAY\-BLK and CDROM\-READALL}. + + +\subsection{\cdrom\ capabilities} +\label{capability} + +Instead of just implementing some $ioctl$ calls, the interface in +\cdromc\ supplies the possibility to indicate the {\em capabilities\/} +of a \cdrom\ drive. This can be done by ORing any number of +capability-constants that are defined in \cdromh\ at the registration +phase. Currently, the capabilities are any of: +$$ +\halign{$#$\ \hfil&$/*$ \rm# $*/$\hfil\cr +CDC_CLOSE_TRAY& can close tray by software control\cr +CDC_OPEN_TRAY& can open tray\cr +CDC_LOCK& can lock and unlock the door\cr +CDC_SELECT_SPEED& can select speed, in units of $\sim$150\,kB/s\cr +CDC_SELECT_DISC& drive is juke-box\cr +CDC_MULTI_SESSION& can read sessions $>\rm1$\cr +CDC_MCN& can read Media Catalog Number\cr +CDC_MEDIA_CHANGED& can report if disc has changed\cr +CDC_PLAY_AUDIO& can perform audio-functions (play, pause, etc)\cr +CDC_RESET& hard reset device\cr +CDC_IOCTLS& driver has non-standard ioctls\cr +CDC_DRIVE_STATUS& driver implements drive status\cr +} +$$ +The capability flag is declared $const$, to prevent drivers from +accidentally tampering with the contents. The capability fags actually +inform \cdromc\ of what the driver can do. If the drive found +by the driver does not have the capability, is can be masked out by +the $cdrom_device_info$ variable $mask$. For instance, the SCSI \cdrom\ +driver has implemented the code for loading and ejecting \cdrom's, and +hence its corresponding flags in $capability$ will be set. But a SCSI +\cdrom\ drive might be a caddy system, which can't load the tray, and +hence for this drive the $cdrom_device_info$ struct will have set +the $CDC_CLOSE_TRAY$ bit in $mask$. + +In the file \cdromc\ you will encounter many constructions of the type +$$\it +if\ (cdo\rightarrow capability \mathrel\& \mathord{\sim} cdi\rightarrow mask + \mathrel{\&} CDC_) \ldots +$$ +There is no $ioctl$ to set the mask\dots The reason is that +I think it is better to control the {\em behavior\/} rather than the +{\em capabilities}. + +\subsection{Options} + +A final flag register controls the {\em behavior\/} of the \cdrom\ +drives, in order to satisfy different users' wishes, hopefully +independently of the ideas of the respective author who happened to +have made the drive's support available to the \linux\ community. The +current behavior options are: +$$ +\halign{$#$\ \hfil&$/*$ \rm# $*/$\hfil\cr +CDO_AUTO_CLOSE& try to close tray upon device $open()$\cr +CDO_AUTO_EJECT& try to open tray on last device $close()$\cr +CDO_USE_FFLAGS& use $file_pointer\rightarrow f_flags$ to indicate + purpose for $open()$\cr +CDO_LOCK& try to lock door if device is opened\cr +CDO_CHECK_TYPE& ensure disc type is data if opened for data\cr +} +$$ + +The initial value of this register is $CDO_AUTO_CLOSE \mathrel| +CDO_USE_FFLAGS \mathrel| CDO_LOCK$, reflecting my own view on user +interface and software standards. Before you protest, there are two +new $ioctl$s implemented in \cdromc, that allow you to control the +behavior by software. These are: +$$ +\halign{$#$\ \hfil&$/*$ \rm# $*/$\hfil\cr +CDROM_SET_OPTIONS& set options specified in $(int)\ arg$\cr +CDROM_CLEAR_OPTIONS& clear options specified in $(int)\ arg$\cr +} +$$ +One option needs some more explanation: $CDO_USE_FFLAGS$. In the next +newsection we explain what the need for this option is. + +A software package {\tt setcd}, available from the Debian distribution +and {\tt sunsite.unc.edu}, allows user level control of these flags. + +\newsection{The need to know the purpose of opening the \cdrom\ device} + +Traditionally, Unix devices can be used in two different `modes', +either by reading/writing to the device file, or by issuing +controlling commands to the device, by the device's $ioctl()$ +call. The problem with \cdrom\ drives, is that they can be used for +two entirely different purposes. One is to mount removable +file systems, \cdrom s, the other is to play audio CD's. Audio commands +are implemented entirely through $ioctl$s, presumably because the +first implementation (SUN?) has been such. In principle there is +nothing wrong with this, but a good control of the `CD player' demands +that the device can {\em always\/} be opened in order to give the +$ioctl$ commands, regardless of the state the drive is in. + +On the other hand, when used as a removable-media disc drive (what the +original purpose of \cdrom s is) we would like to make sure that the +disc drive is ready for operation upon opening the device. In the old +scheme, some \cdrom\ drivers don't do any integrity checking, resulting +in a number of i/o errors reported by the VFS to the kernel when an +attempt for mounting a \cdrom\ on an empty drive occurs. This is not a +particularly elegant way to find out that there is no \cdrom\ inserted; +it more-or-less looks like the old IBM-PC trying to read an empty floppy +drive for a couple of seconds, after which the system complains it +can't read from it. Nowadays we can {\em sense\/} the existence of a +removable medium in a drive, and we believe we should exploit that +fact. An integrity check on opening of the device, that verifies the +availability of a \cdrom\ and its correct type (data), would be +desirable. + +These two ways of using a \cdrom\ drive, principally for data and +secondarily for playing audio discs, have different demands for the +behavior of the $open()$ call. Audio use simply wants to open the +device in order to get a file handle which is needed for issuing +$ioctl$ commands, while data use wants to open for correct and +reliable data transfer. The only way user programs can indicate what +their {\em purpose\/} of opening the device is, is through the $flags$ +parameter (see {\tt {open(2)}}). For \cdrom\ devices, these flags aren't +implemented (some drivers implement checking for write-related flags, +but this is not strictly necessary if the device file has correct +permission flags). Most option flags simply don't make sense to +\cdrom\ devices: $O_CREAT$, $O_NOCTTY$, $O_TRUNC$, $O_APPEND$, and +$O_SYNC$ have no meaning to a \cdrom. + +We therefore propose to use the flag $O_NONBLOCK$ to indicate +that the device is opened just for issuing $ioctl$ +commands. Strictly, the meaning of $O_NONBLOCK$ is that opening and +subsequent calls to the device don't cause the calling process to +wait. We could interpret this as ``don't wait until someone has +inserted some valid data-\cdrom.'' Thus, our proposal of the +implementation for the $open()$ call for \cdrom s is: +\begin{itemize} +\item If no other flags are set than $O_RDONLY$, the device is opened +for data transfer, and the return value will be 0 only upon successful +initialization of the transfer. The call may even induce some actions +on the \cdrom, such as closing the tray. +\item If the option flag $O_NONBLOCK$ is set, opening will always be +successful, unless the whole device doesn't exist. The drive will take +no actions whatsoever. +\end{itemize} + +\subsection{And what about standards?} + +You might hesitate to accept this proposal as it comes from the +\linux\ community, and not from some standardizing institute. What +about SUN, SGI, HP and all those other Unix and hardware vendors? +Well, these companies are in the lucky position that they generally +control both the hardware and software of their supported products, +and are large enough to set their own standard. They do not have to +deal with a dozen or more different, competing hardware +configurations.\footnote{Incidentally, I think that SUN's approach to +mounting \cdrom s is very good in origin: under Solaris a +volume-daemon automatically mounts a newly inserted \cdrom\ under {\tt +{/cdrom/$$/}}. In my opinion they should have pushed this +further and have {\em every\/} \cdrom\ on the local area network be +mounted at the similar location, \ie, no matter in which particular +machine you insert a \cdrom, it will always appear at the same +position in the directory tree, on every system. When I wanted to +implement such a user-program for \linux, I came across the +differences in behavior of the various drivers, and the need for an +$ioctl$ informing about media changes.} + +We believe that using $O_NONBLOCK$ to indicate that a device is being opened +for $ioctl$ commands only can be easily introduced in the \linux\ +community. All the CD-player authors will have to be informed, we can +even send in our own patches to the programs. The use of $O_NONBLOCK$ +has most likely no influence on the behavior of the CD-players on +other operating systems than \linux. Finally, a user can always revert +to old behavior by a call to $ioctl(file_descriptor, CDROM_CLEAR_OPTIONS, +CDO_USE_FFLAGS)$. + +\subsection{The preferred strategy of $open()$} + +The routines in \cdromc\ are designed in such a way that run-time +configuration of the behavior of \cdrom\ devices (of {\em any\/} type) +can be carried out, by the $CDROM_SET/CLEAR_OPTIONS$ $ioctls$. Thus, various +modes of operation can be set: +\begin{description} +\item[$CDO_AUTO_CLOSE \mathrel| CDO_USE_FFLAGS \mathrel| CDO_LOCK$] This +is the default setting. (With $CDO_CHECK_TYPE$ it will be better, in the +future.) If the device is not yet opened by any other process, and if +the device is being opened for data ($O_NONBLOCK$ is not set) and the +tray is found to be open, an attempt to close the tray is made. Then, +it is verified that a disc is in the drive and, if $CDO_CHECK_TYPE$ is +set, that it contains tracks of type `data mode 1.' Only if all tests +are passed is the return value zero. The door is locked to prevent file +system corruption. If the drive is opened for audio ($O_NONBLOCK$ is +set), no actions are taken and a value of 0 will be returned. +\item[$CDO_AUTO_CLOSE \mathrel| CDO_AUTO_EJECT \mathrel| CDO_LOCK$] This +mimics the behavior of the current sbpcd-driver. The option flags are +ignored, the tray is closed on the first open, if necessary. Similarly, +the tray is opened on the last release, \ie, if a \cdrom\ is unmounted, +it is automatically ejected, such that the user can replace it. +\end{description} +We hope that these option can convince everybody (both driver +maintainers and user program developers) to adopt the new \cdrom\ +driver scheme and option flag interpretation. + +\newsection{Description of routines in \cdromc} + +Only a few routines in \cdromc\ are exported to the drivers. In this +new section we will discuss these, as well as the functions that `take +over' the \cdrom\ interface to the kernel. The header file belonging +to \cdromc\ is called \cdromh. Formerly, some of the contents of this +file were placed in the file {\tt {ucdrom.h}}, but this file has now been +merged back into \cdromh. + +\subsection{$Struct\ file_operations\ cdrom_fops$} + +The contents of this structure were described in section~\ref{cdrom.c}. +A pointer to this structure is assigned to the $fops$ field +of the $struct gendisk$. + +\subsection{$Int\ register_cdrom( struct\ cdrom_device_info\ * cdi)$} + +This function is used in about the same way one registers $cdrom_fops$ +with the kernel, the device operations and information structures, +as described in section~\ref{cdrom.c}, should be registered with the +\UCD: +$$ +register_cdrom(\&_info)); +$$ +This function returns zero upon success, and non-zero upon +failure. The structure $_info$ should have a pointer to the +driver's $_dops$, as in +$$ +\vbox{\halign{&$#$\hfil\cr +struct\ &cdrom_device_info\ _info = \{\cr +& _dops;\cr +&\ldots\cr +\}\cr +}}$$ +Note that a driver must have one static structure, $_dops$, while +it may have as many structures $_info$ as there are minor devices +active. $Register_cdrom()$ builds a linked list from these. + +\subsection{$Int\ unregister_cdrom(struct\ cdrom_device_info * cdi)$} + +Unregistering device $cdi$ with minor number $MINOR(cdi\to dev)$ removes +the minor device from the list. If it was the last registered minor for +the low-level driver, this disconnects the registered device-operation +routines from the \cdrom\ interface. This function returns zero upon +success, and non-zero upon failure. + +\subsection{$Int\ cdrom_open(struct\ inode * ip, struct\ file * fp)$} + +This function is not called directly by the low-level drivers, it is +listed in the standard $cdrom_fops$. If the VFS opens a file, this +function becomes active. A strategy is implemented in this routine, +taking care of all capabilities and options that are set in the +$cdrom_device_ops$ connected to the device. Then, the program flow is +transferred to the device_dependent $open()$ call. + +\subsection{$Void\ cdrom_release(struct\ inode *ip, struct\ file +*fp)$} + +This function implements the reverse-logic of $cdrom_open()$, and then +calls the device-dependent $release()$ routine. When the use-count has +reached 0, the allocated buffers are flushed by calls to $sync_dev(dev)$ +and $invalidate_buffers(dev)$. + + +\subsection{$Int\ cdrom_ioctl(struct\ inode *ip, struct\ file *fp, +unsigned\ int\ cmd, unsigned\ long\ arg)$} +\label{cdrom-ioctl} + +This function handles all the standard $ioctl$ requests for \cdrom\ +devices in a uniform way. The different calls fall into three +categories: $ioctl$s that can be directly implemented by device +operations, ones that are routed through the call $audio_ioctl()$, and +the remaining ones, that are presumable device-dependent. Generally, a +negative return value indicates an error. + +\subsubsection{Directly implemented $ioctl$s} +\label{ioctl-direct} + +The following `old' \cdrom-$ioctl$s are implemented by directly +calling device-operations in $cdrom_device_ops$, if implemented and +not masked: +\begin{description} +\item[CDROMMULTISESSION] Requests the last session on a \cdrom. +\item[CDROMEJECT] Open tray. +\item[CDROMCLOSETRAY] Close tray. +\item[CDROMEJECT_SW] If $arg\not=0$, set behavior to auto-close (close +tray on first open) and auto-eject (eject on last release), otherwise +set behavior to non-moving on $open()$ and $release()$ calls. +\item[CDROM_GET_MCN] Get the Media Catalog Number from a CD. +\end{description} + +\subsubsection{$Ioctl$s routed through $audio_ioctl()$} +\label{ioctl-audio} + +The following set of $ioctl$s are all implemented through a call to +the $cdrom_fops$ function $audio_ioctl()$. Memory checks and +allocation are performed in $cdrom_ioctl()$, and also sanitization of +address format ($CDROM_LBA$/$CDROM_MSF$) is done. +\begin{description} +\item[CDROMSUBCHNL] Get sub-channel data in argument $arg$ of type $struct\ +cdrom_subchnl *{}$. +\item[CDROMREADTOCHDR] Read Table of Contents header, in $arg$ of type +$struct\ cdrom_tochdr *{}$. +\item[CDROMREADTOCENTRY] Read a Table of Contents entry in $arg$ and +specified by $arg$ of type $struct\ cdrom_tocentry *{}$. +\item[CDROMPLAYMSF] Play audio fragment specified in Minute, Second, +Frame format, delimited by $arg$ of type $struct\ cdrom_msf *{}$. +\item[CDROMPLAYTRKIND] Play audio fragment in track-index format +delimited by $arg$ of type $struct\ \penalty-1000 cdrom_ti *{}$. +\item[CDROMVOLCTRL] Set volume specified by $arg$ of type $struct\ +cdrom_volctrl *{}$. +\item[CDROMVOLREAD] Read volume into by $arg$ of type $struct\ +cdrom_volctrl *{}$. +\item[CDROMSTART] Spin up disc. +\item[CDROMSTOP] Stop playback of audio fragment. +\item[CDROMPAUSE] Pause playback of audio fragment. +\item[CDROMRESUME] Resume playing. +\end{description} + +\subsubsection{New $ioctl$s in \cdromc} + +The following $ioctl$s have been introduced to allow user programs to +control the behavior of individual \cdrom\ devices. New $ioctl$ +commands can be identified by the underscores in their names. +\begin{description} +\item[CDROM_SET_OPTIONS] Set options specified by $arg$. Returns the +option flag register after modification. Use $arg = \rm0$ for reading +the current flags. +\item[CDROM_CLEAR_OPTIONS] Clear options specified by $arg$. Returns + the option flag register after modification. +\item[CDROM_SELECT_SPEED] Select head-rate speed of disc specified as + by $arg$ in units of standard cdrom speed (176\,kB/sec raw data or + 150\,kB/sec file system data). The value 0 means `auto-select', \ie, + play audio discs at real time and data discs at maximum speed. The value + $arg$ is checked against the maximum head rate of the drive found in the + $cdrom_dops$. +\item[CDROM_SELECT_DISC] Select disc numbered $arg$ from a juke-box. + First disc is numbered 0. The number $arg$ is checked against the + maximum number of discs in the juke-box found in the $cdrom_dops$. +\item[CDROM_MEDIA_CHANGED] Returns 1 if a disc has been changed since + the last call. Note that calls to $cdrom_media_changed$ by the VFS + are treated by an independent queue, so both mechanisms will detect + a media change once. For juke-boxes, an extra argument $arg$ + specifies the slot for which the information is given. The special + value $CDSL_CURRENT$ requests that information about the currently + selected slot be returned. +\item[CDROM_DRIVE_STATUS] Returns the status of the drive by a call to + $drive_status()$. Return values are defined in section~\ref{drive + status}. Note that this call doesn't return information on the + current playing activity of the drive; this can be polled through an + $ioctl$ call to $CDROMSUBCHNL$. For juke-boxes, an extra argument + $arg$ specifies the slot for which (possibly limited) information is + given. The special value $CDSL_CURRENT$ requests that information + about the currently selected slot be returned. +\item[CDROM_DISC_STATUS] Returns the type of the disc currently in the + drive. It should be viewed as a complement to $CDROM_DRIVE_STATUS$. + This $ioctl$ can provide \emph {some} information about the current + disc that is inserted in the drive. This functionality used to be + implemented in the low level drivers, but is now carried out + entirely in \UCD. + + The history of development of the CD's use as a carrier medium for + various digital information has lead to many different disc types. + This $ioctl$ is useful only in the case that CDs have \emph {only + one} type of data on them. While this is often the case, it is + also very common for CDs to have some tracks with data, and some + tracks with audio. Because this is an existing interface, rather + than fixing this interface by changing the assumptions it was made + under, thereby breaking all user applications that use this + function, the \UCD\ implements this $ioctl$ as follows: If the CD in + question has audio tracks on it, and it has absolutely no CD-I, XA, + or data tracks on it, it will be reported as $CDS_AUDIO$. If it has + both audio and data tracks, it will return $CDS_MIXED$. If there + are no audio tracks on the disc, and if the CD in question has any + CD-I tracks on it, it will be reported as $CDS_XA_2_2$. Failing + that, if the CD in question has any XA tracks on it, it will be + reported as $CDS_XA_2_1$. Finally, if the CD in question has any + data tracks on it, it will be reported as a data CD ($CDS_DATA_1$). + + This $ioctl$ can return: + $$ + \halign{$#$\ \hfil&$/*$ \rm# $*/$\hfil\cr + CDS_NO_INFO& no information available\cr + CDS_NO_DISC& no disc is inserted, or tray is opened\cr + CDS_AUDIO& Audio disc (2352 audio bytes/frame)\cr + CDS_DATA_1& data disc, mode 1 (2048 user bytes/frame)\cr + CDS_XA_2_1& mixed data (XA), mode 2, form 1 (2048 user bytes)\cr + CDS_XA_2_2& mixed data (XA), mode 2, form 1 (2324 user bytes)\cr + CDS_MIXED& mixed audio/data disc\cr + } + $$ + For some information concerning frame layout of the various disc + types, see a recent version of \cdromh. + +\item[CDROM_CHANGER_NSLOTS] Returns the number of slots in a + juke-box. +\item[CDROMRESET] Reset the drive. +\item[CDROM_GET_CAPABILITY] Returns the $capability$ flags for the + drive. Refer to section \ref{capability} for more information on + these flags. +\item[CDROM_LOCKDOOR] Locks the door of the drive. $arg == \rm0$ + unlocks the door, any other value locks it. +\item[CDROM_DEBUG] Turns on debugging info. Only root is allowed + to do this. Same semantics as CDROM_LOCKDOOR. +\end{description} + +\subsubsection{Device dependent $ioctl$s} + +Finally, all other $ioctl$s are passed to the function $dev_ioctl()$, +if implemented. No memory allocation or verification is carried out. + +\newsection{How to update your driver} + +\begin{enumerate} +\item Make a backup of your current driver. +\item Get hold of the files \cdromc\ and \cdromh, they should be in + the directory tree that came with this documentation. +\item Make sure you include \cdromh. +\item Change the 3rd argument of $register_blkdev$ from +$\&_fops$ to $\&cdrom_fops$. +\item Just after that line, add the following to register with the \UCD: + $$register_cdrom(\&_info);$$ + Similarly, add a call to $unregister_cdrom()$ at the appropriate place. +\item Copy an example of the device-operations $struct$ to your + source, \eg, from {\tt {cm206.c}} $cm206_dops$, and change all + entries to names corresponding to your driver, or names you just + happen to like. If your driver doesn't support a certain function, + make the entry $NULL$. At the entry $capability$ you should list all + capabilities your driver currently supports. If your driver + has a capability that is not listed, please send me a message. +\item Copy the $cdrom_device_info$ declaration from the same example + driver, and modify the entries according to your needs. If your + driver dynamically determines the capabilities of the hardware, this + structure should also be declared dynamically. +\item Implement all functions in your $_dops$ structure, + according to prototypes listed in \cdromh, and specifications given + in section~\ref{cdrom.c}. Most likely you have already implemented + the code in a large part, and you will almost certainly need to adapt the + prototype and return values. +\item Rename your $_ioctl()$ function to $audio_ioctl$ and + change the prototype a little. Remove entries listed in the first + part in section~\ref{cdrom-ioctl}, if your code was OK, these are + just calls to the routines you adapted in the previous step. +\item You may remove all remaining memory checking code in the + $audio_ioctl()$ function that deals with audio commands (these are + listed in the second part of section~\ref{cdrom-ioctl}). There is no + need for memory allocation either, so most $case$s in the $switch$ + statement look similar to: + $$ + case\ CDROMREADTOCENTRY\colon get_toc_entry\bigl((struct\ + cdrom_tocentry *{})\ arg\bigr); + $$ +\item All remaining $ioctl$ cases must be moved to a separate + function, $_ioctl$, the device-dependent $ioctl$s. Note that + memory checking and allocation must be kept in this code! +\item Change the prototypes of $_open()$ and + $_release()$, and remove any strategic code (\ie, tray + movement, door locking, etc.). +\item Try to recompile the drivers. We advise you to use modules, both + for {\tt {cdrom.o}} and your driver, as debugging is much easier this + way. +\end{enumerate} + +\newsection{Thanks} + +Thanks to all the people involved. First, Erik Andersen, who has +taken over the torch in maintaining \cdromc\ and integrating much +\cdrom-related code in the 2.1-kernel. Thanks to Scott Snyder and +Gerd Knorr, who were the first to implement this interface for SCSI +and IDE-CD drivers and added many ideas for extension of the data +structures relative to kernel~2.0. Further thanks to Heiko Eissfeldt, +Thomas Quinot, Jon Tombs, Ken Pizzini, Eberhard M\"onkeberg and Andrew +Kroll, the \linux\ \cdrom\ device driver developers who were kind +enough to give suggestions and criticisms during the writing. Finally +of course, I want to thank Linus Torvalds for making this possible in +the first place. + +\vfill +$ \version\ $ +\eject +\end{document} diff --git a/Documentation/cdrom/cdu31a b/Documentation/cdrom/cdu31a new file mode 100644 index 000000000000..c0667da09c00 --- /dev/null +++ b/Documentation/cdrom/cdu31a @@ -0,0 +1,196 @@ + + CDU31A/CDU33A Driver Info + ------------------------- + +Information on the Sony CDU31A/CDU33A CDROM driver for the Linux +kernel. + + Corey Minyard (minyard@metronet.com) + + Colossians 3:17 + +Crude Table of Contents +----------------------- + + Setting Up the Hardware + Configuring the Kernel + Configuring as a Module + Driver Special Features + + +This device driver handles Sony CDU31A/CDU33A CDROM drives and +provides a complete block-level interface as well as an ioctl() +interface as specified in include/linux/cdrom.h). With this +interface, CDROMs can be accessed, standard audio CDs can be played +back normally, and CD audio information can be read off the drive. + +Note that this will only work for CDU31A/CDU33A drives. Some vendors +market their drives as CDU31A compatible. They lie. Their drives are +really CDU31A hardware interface compatible (they can plug into the +same card). They are not software compatible. + +Setting Up the Hardware +----------------------- + +The CDU31A driver is unable to safely tell if an interface card is +present that it can use because the interface card does not announce +its presence in any way besides placing 4 I/O locations in memory. It +used to just probe memory and attempt commands, but Linus wisely asked +me to remove that because it could really screw up other hardware in +the system. + +Because of this, you must tell the kernel where the drive interface +is, what interrupts are used, and possibly if you are on a PAS-16 +soundcard. + +If you have the Sony CDU31A/CDU33A drive interface card, the following +diagram will help you set it up. If you have another card, you are on +your own. You need to make sure that the I/O address and interrupt is +not used by another card in the system. You will need to know the I/O +address and interrupt you have set. Note that use of interrupts is +highly recommended, if possible, it really cuts down on CPU used. +Unfortunately, most soundcards do not support interrupts for their +CDROM interfaces. By default, the Sony interface card comes with +interrupts disabled. + + +----------+-----------------+----------------------+ + | JP1 | 34 Pin Conn | | + | JP2 +-----------------+ | + | JP3 | + | JP4 | + | +--+ + | | +-+ + | | | | External + | | | | Connector + | | | | + | | +-+ + | +--+ + | | + | +--------+ + | | + +------------------------------------------+ + + JP1 sets the Base Address, using the following settings: + + Address Pin 1 Pin 2 + ------- ----- ----- + 0x320 Short Short + 0x330 Short Open + 0x340 Open Short + 0x360 Open Open + + JP2 and JP3 configure the DMA channel; they must be set the same. + + DMA Pin 1 Pin 2 Pin 3 + --- ----- ----- ----- + 1 On Off On + 2 Off On Off + 3 Off Off On + + JP4 Configures the IRQ: + + IRQ Pin 1 Pin 2 Pin 3 Pin 4 + --- ----- ----- ----- ----- + 3 Off Off On Off + 4 Off Off* Off On + 5 On Off Off Off + 6 Off On Off Off + + The documentation states to set this for interrupt + 4, but I think that is a mistake. + +Note that if you have another interface card, you will need to look at +the documentation to find the I/O base address. This is specified to +the SLCD.SYS driver for DOS with the /B: parameter, so you can look at +you DOS driver setup to find the address, if necessary. + +Configuring the Kernel +---------------------- + +You must tell the kernel where the drive is at boot time. This can be +done at the Linux boot prompt, by using LILO, or by using Bootlin. +Note that this is no substitute for HOWTOs and LILO documentation, if +you are confused please read those for info on bootline configuration +and LILO. + +At the linux boot prompt, press the ALT key and add the following line +after the boot name (you can let the kernel boot, it will tell you the +default boot name while booting): + + cdu31a=,[,PAS] + +The base address needs to have "0x" in front of it, since it is in +hex. For instance, to configure a drive at address 320 on interrupt 5, +use the following: + + cdu31a=0x320,5 + +I use the following boot line: + + cdu31a=0x1f88,0,PAS + +because I have a PAS-16 which does not support interrupt for the +CDU31A interface. + +Adding this as an append line at the beginning of the /etc/lilo.conf +file will set it for lilo configurations. I have the following as the +first line in my lilo.conf file: + + append="cdu31a=0x1f88,0" + +I'm not sure how to set up Bootlin (I have never used it), if someone +would like to fill in this section please do. + + +Configuring as a Module +----------------------- + +The driver supports loading as a module. However, you must specify +the boot address and interrupt on the boot line to insmod. You can't +use modprobe to load it, since modprobe doesn't support setting +variables. + +Anyway, I use the following line to load my driver as a module + + /sbin/insmod /lib/modules/`uname -r`/misc/cdu31a.o cdu31a_port=0x1f88 + +You can set the following variables in the driver: + + cdu31a_port= - sets the base I/O. If hex, put 0x in + front of it. This must be specified. + + cdu31a_irq= - Sets the interrupt number. Leaving this + off will turn interrupts off. + + +Driver Special Features +----------------------- + +This section describes features beyond the normal audio and CD-ROM +functions of the drive. + +2048 byte buffer mode + +If a disk is mounted with -o block=2048, data is copied straight from +the drive data port to the buffer. Otherwise, the readahead buffer +must be involved to hold the other 1K of data when a 1K block +operation is done. Note that with 2048 byte blocks you cannot execute +files from the CD. + +XA compatibility + +The driver should support XA disks for both the CDU31A and CDU33A. It +does this transparently, the using program doesn't need to set it. + +Multi-Session + +A multi-session disk looks just like a normal disk to the user. Just +mount one normally, and all the data should be there. A special +thanks to Koen for help with this! + +Raw sector I/O + +Using the CDROMREADAUDIO it is possible to read raw audio and data +tracks. Both operations return 2352 bytes per sector. On the data +tracks, the first 12 bytes is not returned by the drive and the value +of that data is indeterminate. diff --git a/Documentation/cdrom/cm206 b/Documentation/cdrom/cm206 new file mode 100644 index 000000000000..810368f4f7c4 --- /dev/null +++ b/Documentation/cdrom/cm206 @@ -0,0 +1,185 @@ +This is the readme file for the driver for the Philips/LMS cdrom drive +cm206 in combination with the cm260 host adapter card. + + (c) 1995 David A. van Leeuwen + +Changes since version 0.99 +-------------------------- +- Interfacing to the kernel is routed though an extra interface layer, + cdrom.c. This allows runtime-configurable `behavior' of the cdrom-drive, + independent of the driver. + +Features since version 0.33 +--------------------------- +- Full audio support, that is, both workman, workbone and cdp work + now reasonably. Reading TOC still takes some time. xmcd has been + reported to run successfully. +- Made auto-probe code a little better, I hope + +Features since version 0.28 +--------------------------- +- Full speed transfer rate (300 kB/s). +- Minimum kernel memory usage for buffering (less than 3 kB). +- Multisession support. +- Tray locking. +- Statistics of driver accessible to the user. +- Module support. +- Auto-probing of adapter card's base port and irq line, + also configurable at boot time or module load time. + + +Decide how you are going to use the driver. There are two +options: + + (a) installing the driver as a resident part of the kernel + (b) compiling the driver as a loadable module + + Further, you must decide if you are going to specify the base port + address and the interrupt request line of the adapter card cm260 as + boot options for (a), module parameters for (b), use automatic + probing of these values, or hard-wire your adaptor card's settings + into the source code. If you don't care, you can choose + autoprobing, which is the default. In that case you can move on to + the next step. + +Compiling the kernel +-------------------- +1) move to /usr/src/linux and do a + + make config + + If you have chosen option (a), answer yes to CONFIG_CM206 and + CONFIG_ISO9660_FS. + + If you have chosen option (b), answer yes to CONFIG_MODVERSIONS + and no (!) to CONFIG_CM206 and CONFIG_ISO9660_FS. + +2) then do a + + make clean; make zImage; make modules + +3) do the usual things to install a new image (backup the old one, run + `rdev -R zImage 1', copy the new image in place, run lilo). Might + be `make zlilo'. + +Using the driver as a module +---------------------------- +If you will only occasionally use the cd-rom driver, you can choose +option (b), install as a loadable module. You may have to re-compile +the module when you upgrade the kernel to a new version. + +Since version 0.96, much of the functionality has been transferred to +a generic cdrom interface in the file cdrom.c. The module cm206.o +depends on cdrom.o. If the latter is not compiled into the kernel, +you must explicitly load it before cm206.o: + + insmod /usr/src/linux/modules/cdrom.o + +To install the module, you use the command, as root + + insmod /usr/src/linux/modules/cm206.o + +You can specify the base address on the command line as well as the irq +line to be used, e.g. + + insmod /usr/src/linux/modules/cm206.o cm206=0x300,11 + +The order of base port and irq line doesn't matter; if you specify only +one, the other will have the value of the compiled-in default. You +may also have to install the file-system module `iso9660.o', if you +didn't compile that into the kernel. + + +Using the driver as part of the kernel +-------------------------------------- +If you have chosen option (a), you can specify the base-port +address and irq on the lilo boot command line, e.g.: + + LILO: linux cm206=0x340,11 + +This assumes that your linux kernel image keyword is `linux'. +If you specify either IRQ (3--11) or base port (0x300--0x370), +auto probing is turned off for both settings, thus setting the +other value to the compiled-in default. + +Note that you can also put these parameters in the lilo configuration file: + +# linux config +image = /vmlinuz + root = /dev/hda1 + label = Linux + append = "cm206=0x340,11" + read-only + + +If module parameters and LILO config options don't work +------------------------------------------------------- +If autoprobing does not work, you can hard-wire the default values +of the base port address (CM206_BASE) and interrupt request line +(CM206_IRQ) into the file /usr/src/linux/drivers/cdrom/cm206.h. Change +the defines of CM206_IRQ and CM206_BASE. + + +Mounting the cdrom +------------------ +1) Make sure that the right device is installed in /dev. + + mknod /dev/cm206cd b 32 0 + +2) Make sure there is a mount point, e.g., /cdrom + + mkdir /cdrom + +3) mount using a command like this (run as root): + + mount -rt iso9660 /dev/cm206cd /cdrom + +4) For user-mounts, add a line in /etc/fstab + + /dev/cm206cd /cdrom iso9660 ro,noauto,user + + This will allow users to give the commands + + mount /cdrom + umount /cdrom + +If things don't work +-------------------- + +- Try to do a `dmesg' to find out if the driver said anything about + what is going wrong during the initialization. + +- Try to do a `dd if=/dev/cm206cd | od -tc | less' to read from the + CD. + +- Look in the /proc directory to see if `cm206' shows up under one of + `interrupts', `ioports', `devices' or `modules' (if applicable). + + +DISCLAIMER +---------- +I cannot guarantee that this driver works, or that the hardware will +not be harmed, although I consider it most unlikely. + +I hope that you'll find this driver in some way useful. + + David van Leeuwen + david@tm.tno.nl + +Note for Linux CDROM vendors +----------------------------- +You are encouraged to include this driver on your Linux CDROM. If +you do, you might consider sending me a free copy of that cd-rom. +You can contact me through my e-mail address, david@tm.tno.nl. +If this driver is compiled into a kernel to boot off a cdrom, +you should actually send me a free copy of that cd-rom. + +Copyright +--------- +The copyright of the cm206 driver for Linux is + + (c) 1995 David A. van Leeuwen + +The driver is released under the conditions of the GNU general public +license, which can be found in the file COPYING in the root of this +source tree. diff --git a/Documentation/cdrom/gscd b/Documentation/cdrom/gscd new file mode 100644 index 000000000000..d01ca36b5c43 --- /dev/null +++ b/Documentation/cdrom/gscd @@ -0,0 +1,60 @@ + Goldstar R420 CD-Rom device driver README + +For all kind of other information about the GoldStar R420 CDROM +and this Linux device driver see the WWW page: + + http://linux.rz.fh-hannover.de/~raupach + + + If you are the editor of a Linux CD, you should + enable gscd.c within your boot floppy kernel. Please, + send me one of your CDs for free. + + +This current driver version 0.4a only supports reading data from the disk. +Currently we have no audio and no multisession or XA support. +The polling interface is used, no DMA. + + +Sometimes the GoldStar R420 is sold in a 'Reveal Multimedia Kit'. This kit's +drive interface is compatible, too. + + +Installation +------------ + +Change to '/usr/src/linux/drivers/cdrom' and edit the file 'gscd.h'. Insert +the i/o address of your interface card. + +The default base address is 0x340. This will work for most applications. +Address selection is accomplished by jumpers PN801-1 to PN801-4 on the +GoldStar Interface Card. +Appropriate settings are: 0x300, 0x310, 0x320, 0x330, 0x340, 0x350, 0x360 +0x370, 0x380, 0x390, 0x3A0, 0x3B0, 0x3C0, 0x3D0, 0x3E0, 0x3F0 + +Then go back to '/usr/src/linux/' and 'make config' to build the new +configuration for your kernel. If you want to use the GoldStar driver +like a module, don't select 'GoldStar CDROM support'. By the way, you +have to include the iso9660 filesystem. + +Now start compiling the kernel with 'make zImage'. +If you want to use the driver as a module, you have to do 'make modules' +and 'make modules_install', additionally. +Install your new kernel as usual - maybe you do it with 'make zlilo'. + +Before you can use the driver, you have to + mknod /dev/gscd0 b 16 0 +to create the appropriate device file (you only need to do this once). + +If you use modules, you can try to insert the driver. +Say: 'insmod /usr/src/linux/modules/gscd.o' +or: 'insmod /usr/src/linux/modules/gscd.o gscd=
' +The driver should report its results. + +That's it! Mount a disk, i.e. 'mount -rt iso9660 /dev/gscd0 /cdrom' + +Feel free to report errors and suggestions to the following address. +Be sure, I'm very happy to receive your comments! + + Oliver Raupach Hannover, Juni 1995 +(raupach@nwfs1.rz.fh-hannover.de) diff --git a/Documentation/cdrom/ide-cd b/Documentation/cdrom/ide-cd new file mode 100644 index 000000000000..29721bfcde12 --- /dev/null +++ b/Documentation/cdrom/ide-cd @@ -0,0 +1,574 @@ +IDE-CD driver documentation +Originally by scott snyder (19 May 1996) +Carrying on the torch is: Erik Andersen +New maintainers (19 Oct 1998): Jens Axboe + +1. Introduction +--------------- + +The ide-cd driver should work with all ATAPI ver 1.2 to ATAPI 2.6 compliant +CDROM drives which attach to an IDE interface. Note that some CDROM vendors +(including Mitsumi, Sony, Creative, Aztech, and Goldstar) have made +both ATAPI-compliant drives and drives which use a proprietary +interface. If your drive uses one of those proprietary interfaces, +this driver will not work with it (but one of the other CDROM drivers +probably will). This driver will not work with `ATAPI' drives which +attach to the parallel port. In addition, there is at least one drive +(CyCDROM CR520ie) which attaches to the IDE port but is not ATAPI; +this driver will not work with drives like that either (but see the +aztcd driver). + +This driver provides the following features: + + - Reading from data tracks, and mounting ISO 9660 filesystems. + + - Playing audio tracks. Most of the CDROM player programs floating + around should work; I usually use Workman. + + - Multisession support. + + - On drives which support it, reading digital audio data directly + from audio tracks. The program cdda2wav can be used for this. + Note, however, that only some drives actually support this. + + - There is now support for CDROM changers which comply with the + ATAPI 2.6 draft standard (such as the NEC CDR-251). This additional + functionality includes a function call to query which slot is the + currently selected slot, a function call to query which slots contain + CDs, etc. A sample program which demonstrates this functionality is + appended to the end of this file. The Sanyo 3-disc changer + (which does not conform to the standard) is also now supported. + Please note the driver refers to the first CD as slot # 0. + + +2. Installation +--------------- + +0. The ide-cd relies on the ide disk driver. See + Documentation/ide.txt for up-to-date information on the ide + driver. + +1. Make sure that the ide and ide-cd drivers are compiled into the + kernel you're using. When configuring the kernel, in the section + entitled "Floppy, IDE, and other block devices", say either `Y' + (which will compile the support directly into the kernel) or `M' + (to compile support as a module which can be loaded and unloaded) + to the options: + + Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support + Include IDE/ATAPI CDROM support + + and `no' to + + Use old disk-only driver on primary interface + + Depending on what type of IDE interface you have, you may need to + specify additional configuration options. See + Documentation/ide.txt. + +2. You should also ensure that the iso9660 filesystem is either + compiled into the kernel or available as a loadable module. You + can see if a filesystem is known to the kernel by catting + /proc/filesystems. + +3. The CDROM drive should be connected to the host on an IDE + interface. Each interface on a system is defined by an I/O port + address and an IRQ number, the standard assignments being + 0x1f0 and 14 for the primary interface and 0x170 and 15 for the + secondary interface. Each interface can control up to two devices, + where each device can be a hard drive, a CDROM drive, a floppy drive, + or a tape drive. The two devices on an interface are called `master' + and `slave'; this is usually selectable via a jumper on the drive. + + Linux names these devices as follows. The master and slave devices + on the primary IDE interface are called `hda' and `hdb', + respectively. The drives on the secondary interface are called + `hdc' and `hdd'. (Interfaces at other locations get other letters + in the third position; see Documentation/ide.txt.) + + If you want your CDROM drive to be found automatically by the + driver, you should make sure your IDE interface uses either the + primary or secondary addresses mentioned above. In addition, if + the CDROM drive is the only device on the IDE interface, it should + be jumpered as `master'. (If for some reason you cannot configure + your system in this manner, you can probably still use the driver. + You may have to pass extra configuration information to the kernel + when you boot, however. See Documentation/ide.txt for more + information.) + +4. Boot the system. If the drive is recognized, you should see a + message which looks like + + hdb: NEC CD-ROM DRIVE:260, ATAPI CDROM drive + + If you do not see this, see section 5 below. + +5. You may want to create a symbolic link /dev/cdrom pointing to the + actual device. You can do this with the command + + ln -s /dev/hdX /dev/cdrom + + where X should be replaced by the letter indicating where your + drive is installed. + +6. You should be able to see any error messages from the driver with + the `dmesg' command. + + +3. Basic usage +-------------- + +An ISO 9660 CDROM can be mounted by putting the disc in the drive and +typing (as root) + + mount -t iso9660 /dev/cdrom /mnt/cdrom + +where it is assumed that /dev/cdrom is a link pointing to the actual +device (as described in step 5 of the last section) and /mnt/cdrom is +an empty directory. You should now be able to see the contents of the +CDROM under the /mnt/cdrom directory. If you want to eject the CDROM, +you must first dismount it with a command like + + umount /mnt/cdrom + +Note that audio CDs cannot be mounted. + +Some distributions set up /etc/fstab to always try to mount a CDROM +filesystem on bootup. It is not required to mount the CDROM in this +manner, though, and it may be a nuisance if you change CDROMs often. +You should feel free to remove the cdrom line from /etc/fstab and +mount CDROMs manually if that suits you better. + +Multisession and photocd discs should work with no special handling. +The hpcdtoppm package (ftp.gwdg.de:/pub/linux/hpcdtoppm/) may be +useful for reading photocds. + +To play an audio CD, you should first unmount and remove any data +CDROM. Any of the CDROM player programs should then work (workman, +workbone, cdplayer, etc.). Lacking anything else, you could use the +cdtester program in Documentation/cdrom/sbpcd. + +On a few drives, you can read digital audio directly using a program +such as cdda2wav. The only types of drive which I've heard support +this are Sony and Toshiba drives. You will get errors if you try to +use this function on a drive which does not support it. + +For supported changers, you can use the `cdchange' program (appended to +the end of this file) to switch between changer slots. Note that the +drive should be unmounted before attempting this. The program takes +two arguments: the CDROM device, and the slot number to which you wish +to change. If the slot number is -1, the drive is unloaded. + + +4. Compilation options +---------------------- + +There are a few additional options which can be set when compiling the +driver. Most people should not need to mess with any of these; they +are listed here simply for completeness. A compilation option can be +enabled by adding a line of the form `#define