Merge branch 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband
authorLinus Torvalds <torvalds@g5.osdl.org>
Sat, 25 Mar 2006 16:51:35 +0000 (08:51 -0800)
committerLinus Torvalds <torvalds@g5.osdl.org>
Sat, 25 Mar 2006 16:51:35 +0000 (08:51 -0800)
* 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/roland/infiniband:
  IPoIB: P_Key change event handling
  IB/mthca: Fix modify QP error path
  IPoIB: Fix network interface "RUNNING" status
  IB/mthca: Fix indentation
  IB/mthca: Fix uninitialized variable in mthca_alloc_qp()
  IB/mthca: Check SRQ limit in modify SRQ operation
  IB/mthca: Check that SRQ WQE size does not exceed device's max value
  IB/mthca: Check that sgid_index and path_mtu are valid in modify_qp
  IB/srp: Use a fake scatterlist for non-SG SCSI commands
  IPoIB: Pass correct pointer when flushing child interfaces

657 files changed:
CREDITS
Documentation/DocBook/Makefile
Documentation/RCU/whatisRCU.txt
Documentation/arm/Booting
Documentation/arm/README
Documentation/arm/Setup
Documentation/feature-removal-schedule.txt
Documentation/filesystems/9p.txt [moved from Documentation/filesystems/v9fs.txt with 82% similarity]
Documentation/filesystems/proc.txt
Documentation/filesystems/udf.txt
Documentation/filesystems/vfs.txt
Documentation/firmware_class/firmware_sample_driver.c
Documentation/firmware_class/firmware_sample_firmware_class.c
Documentation/kbuild/makefiles.txt
Documentation/kbuild/modules.txt
Documentation/kernel-parameters.txt
Documentation/networking/packet_mmap.txt
Documentation/networking/ray_cs.txt
Documentation/serial-console.txt
Documentation/smart-config.txt
Documentation/sound/oss/Introduction
Documentation/sound/oss/cs46xx
Documentation/video4linux/CQcam.txt
Documentation/video4linux/README.cpia
Documentation/video4linux/Zoran
Documentation/video4linux/bttv/ICs
Documentation/video4linux/bttv/PROBLEMS
Documentation/video4linux/bttv/README.quirks
Documentation/video4linux/bttv/THANKS
Documentation/video4linux/radiotrack.txt
Documentation/video4linux/w9966.txt
Documentation/video4linux/zr36120.txt
MAINTAINERS
Makefile
arch/arm/Makefile
arch/arm/boot/Makefile
arch/arm/boot/bootp/Makefile
arch/arm/mach-sa1100/collie.c
arch/arm26/Makefile
arch/arm26/boot/Makefile
arch/i386/Kconfig
arch/i386/Kconfig.debug
arch/i386/Makefile
arch/i386/boot/edd.S
arch/i386/kernel/cpu/cpufreq/speedstep-smi.c
arch/i386/kernel/dmi_scan.c
arch/i386/kernel/smpboot.c
arch/i386/kernel/vmlinux.lds.S
arch/ia64/Kconfig
arch/ia64/Makefile
arch/ia64/configs/gensparse_defconfig
arch/ia64/configs/sn2_defconfig
arch/ia64/defconfig
arch/ia64/dig/setup.c
arch/ia64/ia32/sys_ia32.c
arch/ia64/kernel/acpi.c
arch/ia64/kernel/ivt.S
arch/ia64/kernel/machvec.c
arch/ia64/kernel/mca.c
arch/ia64/kernel/mca_drv.c
arch/ia64/kernel/mca_drv.h
arch/ia64/kernel/mca_drv_asm.S
arch/ia64/kernel/numa.c
arch/ia64/kernel/patch.c
arch/ia64/kernel/setup.c
arch/ia64/kernel/smpboot.c
arch/ia64/kernel/vmlinux.lds.S
arch/ia64/mm/contig.c
arch/ia64/mm/discontig.c
arch/ia64/mm/hugetlbpage.c
arch/ia64/mm/init.c
arch/ia64/sn/kernel/io_init.c
arch/ia64/sn/kernel/irq.c
arch/ia64/sn/kernel/tiocx.c
arch/ia64/sn/pci/pcibr/pcibr_provider.c
arch/m32r/Kconfig.debug
arch/m32r/Makefile
arch/mips/kernel/sysirix.c
arch/powerpc/Makefile
arch/ppc/8xx_io/cs4218_tdm.c
arch/ppc/Makefile
arch/ppc/boot/Makefile
arch/ppc/boot/openfirmware/Makefile
arch/sh/Makefile
arch/sparc/Kconfig
arch/sparc/kernel/irq.c
arch/sparc/kernel/smp.c
arch/sparc/kernel/sparc_ksyms.c
arch/sparc/kernel/sun4d_irq.c
arch/sparc/kernel/sun4d_smp.c
arch/sparc/kernel/sun4m_smp.c
arch/sparc/mm/srmmu.c
arch/sparc64/Kconfig.debug
arch/um/Makefile
arch/x86_64/Makefile
arch/x86_64/ia32/sys_ia32.c
block/elevator.c
drivers/acpi/Kconfig
drivers/atm/.gitignore [new file with mode: 0644]
drivers/base/cpu.c
drivers/block/DAC960.c
drivers/block/Kconfig
drivers/block/ataflop.c
drivers/block/cciss.c
drivers/block/cciss_scsi.c
drivers/block/cpqarray.c
drivers/block/floppy.c
drivers/block/nbd.c
drivers/cdrom/cm206.c
drivers/cdrom/sbpcd.c
drivers/char/Makefile
drivers/char/ipmi/ipmi_msghandler.c
drivers/char/istallion.c
drivers/char/mem.c
drivers/char/mxser.c
drivers/char/ppdev.c
drivers/char/riscom8.c
drivers/char/sysrq.c
drivers/char/tpm/tpm.h
drivers/char/tty_io.c
drivers/char/watchdog/Kconfig
drivers/char/watchdog/Makefile
drivers/char/watchdog/ep93xx_wdt.c [new file with mode: 0644]
drivers/dio/dio-driver.c
drivers/eisa/.gitignore [new file with mode: 0644]
drivers/eisa/eisa-bus.c
drivers/ide/ide.c
drivers/input/serio/hil_mlc.c
drivers/input/touchscreen/ads7846.c
drivers/isdn/hardware/avm/b1dma.c
drivers/isdn/hardware/avm/b1isa.c
drivers/isdn/hardware/avm/c4.c
drivers/isdn/hardware/avm/t1isa.c
drivers/isdn/hysdn/boardergo.c
drivers/isdn/hysdn/boardergo.h
drivers/isdn/hysdn/hycapi.c
drivers/isdn/hysdn/hysdn_boot.c
drivers/isdn/hysdn/hysdn_defs.h
drivers/isdn/hysdn/hysdn_init.c
drivers/isdn/hysdn/hysdn_net.c
drivers/isdn/hysdn/hysdn_pof.h
drivers/isdn/hysdn/hysdn_procconf.c
drivers/isdn/hysdn/hysdn_proclog.c
drivers/isdn/hysdn/hysdn_sched.c
drivers/isdn/hysdn/ince1pc.h
drivers/isdn/i4l/isdn_ppp.c
drivers/isdn/i4l/isdn_tty.c
drivers/isdn/i4l/isdn_x25iface.c
drivers/isdn/isdnloop/isdnloop.c
drivers/md/bitmap.c
drivers/md/dm-hw-handler.c
drivers/media/Kconfig
drivers/media/common/saa7146_fops.c
drivers/media/common/saa7146_vbi.c
drivers/media/common/saa7146_video.c
drivers/media/dvb/b2c2/flexcop-usb.c
drivers/media/dvb/bt8xx/Makefile
drivers/media/dvb/dvb-usb/cxusb.c
drivers/media/dvb/dvb-usb/cxusb.h
drivers/media/dvb/ttpci/av7110_v4l.c
drivers/media/video/Kconfig
drivers/media/video/Makefile
drivers/media/video/adv7170.c
drivers/media/video/adv7175.c
drivers/media/video/arv.c
drivers/media/video/bt819.c
drivers/media/video/bt856.c
drivers/media/video/bt8xx/Kconfig [new file with mode: 0644]
drivers/media/video/bt8xx/Makefile [new file with mode: 0644]
drivers/media/video/bt8xx/bt832.c [moved from drivers/media/video/bt832.c with 98% similarity]
drivers/media/video/bt8xx/bt832.h [moved from drivers/media/video/bt832.h with 100% similarity]
drivers/media/video/bt8xx/bt848.h [moved from drivers/media/video/bt848.h with 100% similarity]
drivers/media/video/bt8xx/bttv-cards.c [moved from drivers/media/video/bttv-cards.c with 95% similarity]
drivers/media/video/bt8xx/bttv-driver.c [moved from drivers/media/video/bttv-driver.c with 97% similarity]
drivers/media/video/bt8xx/bttv-gpio.c [moved from drivers/media/video/bttv-gpio.c with 100% similarity]
drivers/media/video/bt8xx/bttv-i2c.c [moved from drivers/media/video/bttv-i2c.c with 98% similarity]
drivers/media/video/bt8xx/bttv-if.c [moved from drivers/media/video/bttv-if.c with 100% similarity]
drivers/media/video/bt8xx/bttv-input.c [moved from drivers/media/video/bttv-input.c with 100% similarity]
drivers/media/video/bt8xx/bttv-risc.c [moved from drivers/media/video/bttv-risc.c with 99% similarity]
drivers/media/video/bt8xx/bttv-vbi.c [moved from drivers/media/video/bttv-vbi.c with 98% similarity]
drivers/media/video/bt8xx/bttv.h [moved from drivers/media/video/bttv.h with 95% similarity]
drivers/media/video/bt8xx/bttvp.h [moved from drivers/media/video/bttvp.h with 98% similarity]
drivers/media/video/bw-qcam.c
drivers/media/video/c-qcam.c
drivers/media/video/cpia.c
drivers/media/video/cpia.h
drivers/media/video/cpia2/cpia2.h
drivers/media/video/cpia2/cpia2_core.c
drivers/media/video/cpia2/cpia2_v4l.c
drivers/media/video/cpia_pp.c
drivers/media/video/cpia_usb.c
drivers/media/video/cs53l32a.c
drivers/media/video/cs8420.h
drivers/media/video/cx25840/cx25840-audio.c
drivers/media/video/cx25840/cx25840-core.c
drivers/media/video/cx88/Kconfig
drivers/media/video/cx88/cx88-alsa.c
drivers/media/video/cx88/cx88-blackbird.c
drivers/media/video/cx88/cx88-core.c
drivers/media/video/cx88/cx88-dvb.c
drivers/media/video/cx88/cx88-mpeg.c
drivers/media/video/cx88/cx88-tvaudio.c
drivers/media/video/cx88/cx88-vbi.c
drivers/media/video/cx88/cx88-video.c
drivers/media/video/cx88/cx88.h
drivers/media/video/dabfirmware.h [moved from drivers/usb/media/dabfirmware.h with 100% similarity]
drivers/media/video/dabusb.c [moved from drivers/usb/media/dabusb.c with 99% similarity]
drivers/media/video/dabusb.h [moved from drivers/usb/media/dabusb.h with 96% similarity]
drivers/media/video/dsbr100.c [moved from drivers/usb/media/dsbr100.c with 92% similarity]
drivers/media/video/em28xx/em28xx-cards.c
drivers/media/video/em28xx/em28xx-video.c
drivers/media/video/et61x251/Makefile [new file with mode: 0644]
drivers/media/video/et61x251/et61x251.h [moved from drivers/usb/media/et61x251.h with 97% similarity]
drivers/media/video/et61x251/et61x251_core.c [moved from drivers/usb/media/et61x251_core.c with 91% similarity]
drivers/media/video/et61x251/et61x251_sensor.h [moved from drivers/usb/media/et61x251_sensor.h with 87% similarity]
drivers/media/video/et61x251/et61x251_tas5130d1b.c [moved from drivers/usb/media/et61x251_tas5130d1b.c with 93% similarity]
drivers/media/video/font.h [new file with mode: 0644]
drivers/media/video/msp3400-driver.c
drivers/media/video/msp3400-driver.h [moved from drivers/media/video/msp3400.h with 86% similarity]
drivers/media/video/msp3400-kthreads.c
drivers/media/video/mxb.c
drivers/media/video/ov511.c [moved from drivers/usb/media/ov511.c with 99% similarity]
drivers/media/video/ov511.h [moved from drivers/usb/media/ov511.h with 99% similarity]
drivers/media/video/ovcamchip/Makefile
drivers/media/video/ovcamchip/ovcamchip_core.c
drivers/media/video/ovcamchip/ovcamchip_priv.h
drivers/media/video/planb.c
drivers/media/video/planb.h
drivers/media/video/pms.c
drivers/media/video/pwc/Makefile [moved from drivers/usb/media/pwc/Makefile with 84% similarity]
drivers/media/video/pwc/philips.txt [moved from drivers/usb/media/pwc/philips.txt with 90% similarity]
drivers/media/video/pwc/pwc-ctrl.c [moved from drivers/usb/media/pwc/pwc-ctrl.c with 92% similarity]
drivers/media/video/pwc/pwc-if.c [moved from drivers/usb/media/pwc/pwc-if.c with 93% similarity]
drivers/media/video/pwc/pwc-ioctl.h [moved from drivers/usb/media/pwc/pwc-ioctl.h with 94% similarity]
drivers/media/video/pwc/pwc-kiara.c [new file with mode: 0644]
drivers/media/video/pwc/pwc-kiara.h [moved from drivers/usb/media/pwc/pwc-kiara.h with 100% similarity]
drivers/media/video/pwc/pwc-misc.c [moved from drivers/usb/media/pwc/pwc-misc.c with 87% similarity]
drivers/media/video/pwc/pwc-nala.h [moved from drivers/usb/media/pwc/pwc-nala.h with 99% similarity]
drivers/media/video/pwc/pwc-timon.c [new file with mode: 0644]
drivers/media/video/pwc/pwc-timon.h [moved from drivers/usb/media/pwc/pwc-timon.h with 100% similarity]
drivers/media/video/pwc/pwc-uncompress.c [moved from drivers/usb/media/pwc/pwc-uncompress.c with 96% similarity]
drivers/media/video/pwc/pwc-uncompress.h [moved from drivers/usb/media/pwc/pwc-uncompress.h with 96% similarity]
drivers/media/video/pwc/pwc.h [moved from drivers/usb/media/pwc/pwc.h with 99% similarity]
drivers/media/video/saa5249.c
drivers/media/video/saa6588.c
drivers/media/video/saa7110.c
drivers/media/video/saa7111.c
drivers/media/video/saa7114.c
drivers/media/video/saa7115.c
drivers/media/video/saa7121.h
drivers/media/video/saa7134/saa7134-alsa.c
drivers/media/video/saa7134/saa7134-core.c
drivers/media/video/saa7134/saa7134-oss.c
drivers/media/video/saa7134/saa7134-ts.c
drivers/media/video/saa7134/saa7134-tvaudio.c
drivers/media/video/saa7134/saa7134-vbi.c
drivers/media/video/saa7134/saa7134-video.c
drivers/media/video/saa7134/saa7134.h
drivers/media/video/saa7146.h
drivers/media/video/saa7146reg.h
drivers/media/video/saa7185.c
drivers/media/video/saa7196.h
drivers/media/video/se401.c [moved from drivers/usb/media/se401.c with 89% similarity]
drivers/media/video/se401.h [moved from drivers/usb/media/se401.h with 99% similarity]
drivers/media/video/sn9c102/Makefile [new file with mode: 0644]
drivers/media/video/sn9c102/sn9c102.h [moved from drivers/usb/media/sn9c102.h with 96% similarity]
drivers/media/video/sn9c102/sn9c102_core.c [moved from drivers/usb/media/sn9c102_core.c with 90% similarity]
drivers/media/video/sn9c102/sn9c102_hv7131d.c [moved from drivers/usb/media/sn9c102_hv7131d.c with 93% similarity]
drivers/media/video/sn9c102/sn9c102_mi0343.c [moved from drivers/usb/media/sn9c102_mi0343.c with 73% similarity]
drivers/media/video/sn9c102/sn9c102_ov7630.c [moved from drivers/usb/media/sn9c102_ov7630.c with 95% similarity]
drivers/media/video/sn9c102/sn9c102_pas106b.c [moved from drivers/usb/media/sn9c102_pas106b.c with 94% similarity]
drivers/media/video/sn9c102/sn9c102_pas202bca.c [moved from drivers/usb/media/sn9c102_pas202bca.c with 97% similarity]
drivers/media/video/sn9c102/sn9c102_pas202bcb.c [moved from drivers/usb/media/sn9c102_pas202bcb.c with 93% similarity]
drivers/media/video/sn9c102/sn9c102_sensor.h [moved from drivers/usb/media/sn9c102_sensor.h with 91% similarity]
drivers/media/video/sn9c102/sn9c102_tas5110c1b.c [moved from drivers/usb/media/sn9c102_tas5110c1b.c with 93% similarity]
drivers/media/video/sn9c102/sn9c102_tas5130d1b.c [moved from drivers/usb/media/sn9c102_tas5130d1b.c with 93% similarity]
drivers/media/video/stradis.c
drivers/media/video/stv680.c [moved from drivers/usb/media/stv680.c with 98% similarity]
drivers/media/video/stv680.h [moved from drivers/usb/media/stv680.h with 54% similarity]
drivers/media/video/tda7432.c
drivers/media/video/tda9840.c
drivers/media/video/tda9840.h
drivers/media/video/tda9875.c
drivers/media/video/tea6415c.c
drivers/media/video/tea6420.c
drivers/media/video/tea6420.h
drivers/media/video/tuner-3036.c
drivers/media/video/tuner-core.c
drivers/media/video/tvaudio.c
drivers/media/video/tvaudio.h [deleted file]
drivers/media/video/tveeprom.c
drivers/media/video/usbvideo/Makefile [new file with mode: 0644]
drivers/media/video/usbvideo/ibmcam.c [moved from drivers/usb/media/ibmcam.c with 99% similarity]
drivers/media/video/usbvideo/konicawc.c [moved from drivers/usb/media/konicawc.c with 97% similarity]
drivers/media/video/usbvideo/ultracam.c [moved from drivers/usb/media/ultracam.c with 99% similarity]
drivers/media/video/usbvideo/usbvideo.c [moved from drivers/usb/media/usbvideo.c with 99% similarity]
drivers/media/video/usbvideo/usbvideo.h [moved from drivers/usb/media/usbvideo.h with 97% similarity]
drivers/media/video/usbvideo/vicam.c [moved from drivers/usb/media/vicam.c with 99% similarity]
drivers/media/video/v4l2-common.c
drivers/media/video/video-buf.c
drivers/media/video/videocodec.h
drivers/media/video/vino.c
drivers/media/video/vivi.c [new file with mode: 0644]
drivers/media/video/vpx3220.c
drivers/media/video/w9966.c
drivers/media/video/w9968cf.c [moved from drivers/usb/media/w9968cf.c with 80% similarity]
drivers/media/video/w9968cf.h [moved from drivers/usb/media/w9968cf.h with 97% similarity]
drivers/media/video/w9968cf_decoder.h [moved from drivers/usb/media/w9968cf_decoder.h with 94% similarity]
drivers/media/video/w9968cf_vpp.h [moved from drivers/usb/media/w9968cf_vpp.h with 98% similarity]
drivers/media/video/wm8775.c
drivers/media/video/zc0301/Makefile [new file with mode: 0644]
drivers/media/video/zc0301/zc0301.h [moved from drivers/usb/media/zc0301.h with 97% similarity]
drivers/media/video/zc0301/zc0301_core.c [moved from drivers/usb/media/zc0301_core.c with 92% similarity]
drivers/media/video/zc0301/zc0301_pas202bcb.c [moved from drivers/usb/media/zc0301_pas202bcb.c with 96% similarity]
drivers/media/video/zc0301/zc0301_sensor.h [moved from drivers/usb/media/zc0301_sensor.h with 97% similarity]
drivers/media/video/zoran.h
drivers/media/video/zoran_card.c
drivers/media/video/zoran_card.h
drivers/media/video/zoran_device.c
drivers/media/video/zoran_device.h
drivers/media/video/zoran_driver.c
drivers/media/video/zoran_procfs.c
drivers/media/video/zoran_procfs.h
drivers/media/video/zr36016.c
drivers/media/video/zr36050.c
drivers/media/video/zr36057.h
drivers/media/video/zr36060.c
drivers/media/video/zr36120.c
drivers/media/video/zr36120.h
drivers/message/i2o/debug.c
drivers/mmc/au1xmmc.c
drivers/mtd/maps/pcmciamtd.c
drivers/net/3c59x.c
drivers/net/a2065.c
drivers/net/ariadne.c
drivers/net/atari_bionet.c
drivers/net/atari_pamsnet.c
drivers/net/atarilance.c
drivers/net/cassini.c
drivers/net/chelsio/cxgb2.c
drivers/net/dgrs.c
drivers/net/fec_8xx/fec_main.c
drivers/net/fs_enet/fs_enet-main.c
drivers/net/gt96100eth.c
drivers/net/hamradio/dmascc.c
drivers/net/hamradio/mkiss.c
drivers/net/hplance.c
drivers/net/hydra.c
drivers/net/irda/irport.c
drivers/net/lasi_82596.c
drivers/net/mac89x0.c
drivers/net/mace.c
drivers/net/meth.c
drivers/net/ne-h8300.c
drivers/net/ni5010.c
drivers/net/sun3lance.c
drivers/net/wireless/Kconfig
drivers/net/zorro8390.c
drivers/parisc/sba_iommu.c
drivers/parisc/superio.c
drivers/pnp/isapnp/core.c
drivers/s390/block/dasd.c
drivers/s390/block/dasd_devmap.c
drivers/scsi/arm/cumana_2.c
drivers/scsi/arm/eesox.c
drivers/scsi/arm/powertec.c
drivers/scsi/atari_scsi.c
drivers/scsi/sd.c
drivers/serial/8250_hp300.c
drivers/serial/ioc4_serial.c
drivers/serial/mpc52xx_uart.c
drivers/serial/mpsc.c
drivers/serial/mpsc.h [deleted file]
drivers/usb/Kconfig
drivers/usb/Makefile
drivers/usb/media/Kconfig [deleted file]
drivers/usb/media/Makefile [deleted file]
drivers/usb/media/pwc/pwc-kiara.c [deleted file]
drivers/usb/media/pwc/pwc-timon.c [deleted file]
drivers/usb/serial/option.c
drivers/video/backlight/locomolcd.c
drivers/video/bw2.c
drivers/video/cirrusfb.c
drivers/video/ffb.c
drivers/video/hpfb.c
drivers/video/matrox/matroxfb_DAC1064.c
drivers/video/matrox/matroxfb_DAC1064.h
drivers/video/matrox/matroxfb_Ti3026.c
drivers/video/matrox/matroxfb_Ti3026.h
drivers/video/matrox/matroxfb_base.c
drivers/video/matrox/matroxfb_misc.c
drivers/video/pm3fb.c
drivers/video/sstfb.c
drivers/w1/masters/matrox_w1.c
drivers/zorro/zorro-driver.c
fs/9p/9p.h
fs/9p/Makefile
fs/9p/conv.c
fs/9p/conv.h
fs/9p/debug.h
fs/9p/error.c
fs/9p/error.h
fs/9p/fcall.c [moved from fs/9p/9p.c with 96% similarity]
fs/9p/fcprint.c [new file with mode: 0644]
fs/9p/fid.c
fs/9p/fid.h
fs/9p/mux.c
fs/9p/mux.h
fs/9p/trans_fd.c
fs/9p/trans_sock.c [deleted file]
fs/9p/transport.h
fs/9p/v9fs.c
fs/9p/v9fs.h
fs/9p/v9fs_vfs.h
fs/9p/vfs_addr.c
fs/9p/vfs_dentry.c
fs/9p/vfs_dir.c
fs/9p/vfs_file.c
fs/9p/vfs_inode.c
fs/9p/vfs_super.c
fs/aio.c
fs/befs/datastream.c
fs/binfmt_elf.c
fs/binfmt_elf_fdpic.c
fs/binfmt_flat.c
fs/bio.c
fs/buffer.c
fs/char_dev.c
fs/coda/cache.c
fs/coda/cnode.c
fs/compat.c
fs/dcache.c
fs/direct-io.c
fs/eventpoll.c
fs/exec.c
fs/ext2/super.c
fs/ext3/bitmap.c
fs/fs-writeback.c
fs/inode.c
fs/inotify.c
fs/jbd/journal.c
fs/jbd/transaction.c
fs/minix/bitmap.c
fs/minix/inode.c
fs/minix/itree_v1.c
fs/minix/itree_v2.c
fs/namei.c
fs/ocfs2/alloc.c
fs/ocfs2/aops.c
fs/ocfs2/buffer_head_io.c
fs/ocfs2/cluster/heartbeat.c
fs/ocfs2/cluster/masklog.h
fs/ocfs2/dcache.c
fs/ocfs2/dir.c
fs/ocfs2/dlm/dlmast.c
fs/ocfs2/dlm/dlmcommon.h
fs/ocfs2/dlm/dlmconvert.c
fs/ocfs2/dlm/dlmdebug.c
fs/ocfs2/dlm/dlmlock.c
fs/ocfs2/dlm/dlmmaster.c
fs/ocfs2/dlm/dlmrecovery.c
fs/ocfs2/dlm/dlmunlock.c
fs/ocfs2/dlmglue.c
fs/ocfs2/export.c
fs/ocfs2/extent_map.c
fs/ocfs2/file.c
fs/ocfs2/inode.c
fs/ocfs2/journal.c
fs/ocfs2/localalloc.c
fs/ocfs2/namei.c
fs/ocfs2/ocfs2.h
fs/ocfs2/suballoc.c
fs/ocfs2/super.c
fs/ocfs2/super.h
fs/ocfs2/uptodate.c
fs/ocfs2/vote.c
fs/open.c
fs/pipe.c
fs/proc/proc_misc.c
fs/read_write.c
fs/reiserfs/file.c
fs/reiserfs/fix_node.c
fs/reiserfs/item_ops.c
fs/reiserfs/journal.c
fs/reiserfs/stree.c
fs/reiserfs/super.c
fs/reiserfs/xattr_acl.c
fs/smbfs/inode.c
fs/super.c
fs/udf/inode.c
fs/ufs/super.c
include/asm-alpha/poll.h
include/asm-arm/poll.h
include/asm-arm26/poll.h
include/asm-cris/poll.h
include/asm-frv/poll.h
include/asm-h8300/poll.h
include/asm-i386/poll.h
include/asm-ia64/acpi.h
include/asm-ia64/asmmacro.h
include/asm-ia64/machvec_dig.h
include/asm-ia64/numa.h
include/asm-ia64/numnodes.h
include/asm-ia64/page.h
include/asm-ia64/pal.h
include/asm-ia64/poll.h
include/asm-ia64/processor.h
include/asm-ia64/sn/l1.h
include/asm-ia64/sn/pcibr_provider.h
include/asm-ia64/sn/pcidev.h
include/asm-ia64/sn/sn_feature_sets.h
include/asm-ia64/sn/sn_sal.h
include/asm-m32r/poll.h
include/asm-m68k/poll.h
include/asm-mips/poll.h
include/asm-parisc/poll.h
include/asm-powerpc/poll.h
include/asm-s390/poll.h
include/asm-sh/poll.h
include/asm-sh64/poll.h
include/asm-sparc/cpudata.h
include/asm-sparc/poll.h
include/asm-sparc/smp.h
include/asm-sparc/spinlock.h
include/asm-sparc64/poll.h
include/asm-v850/poll.h
include/asm-x86_64/poll.h
include/asm-xtensa/poll.h
include/linux/bitops.h
include/linux/capability.h
include/linux/cpu.h
include/linux/cpumask.h
include/linux/dcache.h
include/linux/dio.h
include/linux/fs.h
include/linux/fsnotify.h
include/linux/i2c-id.h
include/linux/init.h
include/linux/inotify.h
include/linux/irq.h
include/linux/jbd.h
include/linux/kernel.h
include/linux/major.h
include/linux/module.h
include/linux/moduleparam.h
include/linux/ppdev.h
include/linux/quota.h
include/linux/radix-tree.h
include/linux/reiserfs_fs.h
include/linux/reiserfs_xattr.h
include/linux/security.h
include/linux/slab.h
include/linux/time.h
include/linux/timer.h
include/linux/timex.h
include/linux/tty_flip.h
include/linux/udf_fs_i.h
include/linux/videodev2.h
include/linux/zorro.h
include/media/audiochip.h
include/media/cs53l32a.h [new file with mode: 0644]
include/media/i2c-addr.h [new file with mode: 0644]
include/media/msp3400.h [new file with mode: 0644]
include/media/rds.h [moved from drivers/media/video/rds.h with 99% similarity]
include/media/saa7146_vv.h
include/media/tvaudio.h [new file with mode: 0644]
include/media/v4l2-common.h
include/media/video-buf.h
include/media/wm8775.h [new file with mode: 0644]
include/net/route.h
include/net/sock.h
include/video/pm3fb.h
init/Kconfig
init/initramfs.c
init/main.c
ipc/msg.c
kernel/capability.c
kernel/cpu.c
kernel/irq/Makefile
kernel/irq/manage.c
kernel/irq/migration.c [new file with mode: 0644]
kernel/itimer.c
kernel/kthread.c
kernel/module.c
kernel/params.c
kernel/power/smp.c
kernel/rcutorture.c
kernel/softlockup.c
kernel/sys.c
kernel/time.c
kernel/timer.c
lib/Kconfig.debug
lib/Makefile
lib/cpumask.c [new file with mode: 0644]
lib/radix-tree.c
lib/swiotlb.c
mm/Kconfig
mm/memory.c
mm/mmap.c
mm/msync.c
mm/page_alloc.c
mm/slab.c
mm/slob.c
mm/util.c
mm/vmscan.c
net/bluetooth/af_bluetooth.c
net/bridge/br_stp_bpdu.c
net/core/datagram.c
net/core/dev.c
net/core/skbuff.c
net/core/sock.c
net/dccp/proto.c
net/ipv4/icmp.c
net/ipv4/route.c
net/ipv4/tcp.c
net/netfilter/x_tables.c
net/rxrpc/main.c
net/sctp/input.c
net/sctp/socket.c
net/unix/af_unix.c
scripts/Kbuild.include
scripts/Makefile.build
scripts/Makefile.clean
scripts/Makefile.modinst
scripts/Makefile.modpost
scripts/basic/fixdep.c
scripts/checkconfig.pl [deleted file]
scripts/genksyms/genksyms.c
scripts/genksyms/genksyms.h
scripts/kallsyms.c
scripts/kconfig/Makefile
scripts/kconfig/confdata.c
scripts/kconfig/lxdialog/Makefile
scripts/mkmakefile
scripts/mod/file2alias.c
scripts/mod/mk_elfconfig.c
scripts/mod/modpost.c
scripts/mod/modpost.h
scripts/mod/sumversion.c
scripts/namespace.pl
scripts/package/Makefile
scripts/reference_discarded.pl [deleted file]
scripts/reference_init.pl [deleted file]
security/commoncap.c
security/keys/key.c
security/security.c
sound/oss/.gitignore [new file with mode: 0644]
sound/oss/au1000.c
sound/oss/au1550_ac97.c
sound/oss/awe_wave.c
sound/oss/dmasound/dmasound_core.c
sound/oss/ite8172.c
sound/oss/sb_mixer.c
sound/oss/sequencer.c
sound/oss/swarm_cs4297a.c
sound/oss/waveartist.c
sound/sparc/cs4231.c

diff --git a/CREDITS b/CREDITS
index af70678a0afdf95ef720e7b35202eda1323a68c9..c6d69bf10e1513cf366ffe7e576ddb519433f869 100644 (file)
--- a/CREDITS
+++ b/CREDITS
@@ -2007,13 +2007,14 @@ S: University of Stuttgart, Germany and
 S: Ecole Nationale Superieure des Telecommunications, Paris
 
 N: Jamie Lokier
-E: jamie@imbolc.ucc.ie
+E: jamie@shareable.org
+W: http://www.shareable.org/
 D: Reboot-through-BIOS for broken 486 motherboards
-D: Some parport fixes
-S: 11 Goodson Walk
-S: Marston
+D: Parport fixes, futex improvements
+D: First instruction of x86 sysenter path :)
+S: 51 Sunningwell Road
 S: Oxford
-S: OX3 0HX
+S: OX1 4SZ
 S: United Kingdom
 
 N: Mark Lord
index 2975291e296a01b2ad8afd70e99f2e66326780ba..7d87dd73cbe40552d67450059c45934faff45529 100644 (file)
@@ -28,7 +28,7 @@ PS_METHOD     = $(prefer-db2x)
 
 ###
 # The targets that may be used.
-.PHONY:        xmldocs sgmldocs psdocs pdfdocs htmldocs mandocs installmandocs
+PHONY += xmldocs sgmldocs psdocs pdfdocs htmldocs mandocs installmandocs
 
 BOOKS := $(addprefix $(obj)/,$(DOCBOOKS))
 xmldocs: $(BOOKS)
@@ -211,3 +211,9 @@ clean-dirs := $(patsubst %.xml,%,$(DOCBOOKS))
 
 #man put files in man subdir - traverse down
 subdir- := man/
+
+
+# Declare the contents of the .PHONY variable as phony.  We keep that
+# information in a variable se we can use it in if_changed and friends.
+
+.PHONY: $(PHONY)
index 5ed85af88789afc46c0f1065ca701552d96cfebc..b4ea51ad3610f7c2a99f18c3ee2dc776ebfe0731 100644 (file)
@@ -360,7 +360,7 @@ uses of RCU may be found in listRCU.txt, arrayRCU.txt, and NMI-RCU.txt.
                struct foo *new_fp;
                struct foo *old_fp;
 
-               new_fp = kmalloc(sizeof(*fp), GFP_KERNEL);
+               new_fp = kmalloc(sizeof(*new_fp), GFP_KERNEL);
                spin_lock(&foo_mutex);
                old_fp = gbl_foo;
                *new_fp = *old_fp;
@@ -461,7 +461,7 @@ The foo_update_a() function might then be written as follows:
                struct foo *new_fp;
                struct foo *old_fp;
 
-               new_fp = kmalloc(sizeof(*fp), GFP_KERNEL);
+               new_fp = kmalloc(sizeof(*new_fp), GFP_KERNEL);
                spin_lock(&foo_mutex);
                old_fp = gbl_foo;
                *new_fp = *old_fp;
index fad566bb02fc8fdc509aa0b27c122fafe55d655e..76850295af8f93b0627f8a220f90ee8c6a677e92 100644 (file)
@@ -118,7 +118,7 @@ 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
+- Quiesce all DMA capable devices so that memory does not get
   corrupted by bogus network packets or disk data. This will save
   you many hours of debug.
 
index 5ed6f3530b869fea639028a576fb33d364873a66..9b9c8226fdc428665fb2e792ce142b77abf2d80d 100644 (file)
@@ -89,7 +89,7 @@ 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?
+  Therefore, is 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
index 0abd0720d7ed0d59d5b8b88b7589e2266646811d..0cb1e64bde80129a3d5e36935b082e516afc8a6c 100644 (file)
@@ -58,7 +58,7 @@ below:
  video_y
 
    This describes the character position of cursor on VGA console, and
-   is otherwise unused. (should not used for other console types, and
+   is otherwise unused. (should not be used for other console types, and
    should not be used for other purposes).
 
  memc_control_reg
index 21272e4b4a5c43bb79b0493954f2be58af4a34a1..495858b236b615a08a2824922c546fc1e2b13c9b 100644 (file)
@@ -176,6 +176,18 @@ Who:       Richard Knutsson <ricknu-0@student.ltu.se> and Greg Kroah-Hartman <gregkh@s
 
 ---------------------------
 
+What:  Usage of invalid timevals in setitimer
+When:  March 2007
+Why:   POSIX requires to validate timevals in the setitimer call. This
+       was never done by Linux. The invalid (e.g. negative timevals) were
+       silently converted to more or less random timeouts and intervals.
+       Until the removal a per boot limited number of warnings is printed
+       and the timevals are sanitized.
+
+Who:   Thomas Gleixner <tglx@linutronix.de>
+
+---------------------------
+
 What:  I2C interface of the it87 driver
 When:  January 2007
 Why:   The ISA interface is faster and should be always available. The I2C
similarity index 82%
rename from Documentation/filesystems/v9fs.txt
rename to Documentation/filesystems/9p.txt
index 24c7a9c41f0d0c820216722dfbba5eceb6fd96b4..43b89c214d2015a1026ceae21b266c3dbd82a58b 100644 (file)
@@ -1,5 +1,5 @@
-                       V9FS: 9P2000 for Linux
-                       ======================
+                   v9fs: Plan 9 Resource Sharing for Linux
+                   =======================================
 
 ABOUT
 =====
@@ -9,18 +9,19 @@ v9fs is a Unix implementation of the Plan 9 9p remote filesystem protocol.
 This software was originally developed by Ron Minnich <rminnich@lanl.gov>
 and Maya Gokhale <maya@lanl.gov>.  Additional development by Greg Watson
 <gwatson@lanl.gov> and most recently Eric Van Hensbergen
-<ericvh@gmail.com> and Latchesar Ionkov <lucho@ionkov.net>.
+<ericvh@gmail.com>, Latchesar Ionkov <lucho@ionkov.net> and Russ Cox
+<rsc@swtch.com>.
 
 USAGE
 =====
 
 For remote file server:
 
-       mount -t 9P 10.10.1.2 /mnt/9
+       mount -t 9p 10.10.1.2 /mnt/9
 
 For Plan 9 From User Space applications (http://swtch.com/plan9)
 
-       mount -t 9P `namespace`/acme /mnt/9 -o proto=unix,name=$USER
+       mount -t 9p `namespace`/acme /mnt/9 -o proto=unix,uname=$USER
 
 OPTIONS
 =======
@@ -32,7 +33,7 @@ OPTIONS
                        fd   - used passed file descriptors for connection
                                 (see rfdno and wfdno)
 
-  name=name    user name to attempt mount as on the remote server.  The
+  uname=name   user name to attempt mount as on the remote server.  The
                server may override or ignore this value.  Certain user
                names may require authentication.
 
@@ -42,7 +43,7 @@ OPTIONS
   debug=n      specifies debug level.  The debug level is a bitmask.
                        0x01 = display verbose error messages
                        0x02 = developer debug (DEBUG_CURRENT)
-                       0x04 = display 9P trace
+                       0x04 = display 9p trace
                        0x08 = display VFS trace
                        0x10 = display Marshalling debug
                        0x20 = display RPC debug
@@ -53,11 +54,11 @@ OPTIONS
 
   wfdno=n      the file descriptor for writing with proto=fd
 
-  maxdata=n    the number of bytes to use for 9P packet payload (msize)
+  maxdata=n    the number of bytes to use for 9p packet payload (msize)
 
   port=n       port to connect to on the remote server
 
-  noextend     force legacy mode (no 9P2000.u semantics)
+  noextend     force legacy mode (no 9p2000.u semantics)
 
   uid          attempt to mount as a particular uid
 
@@ -72,7 +73,7 @@ OPTIONS
 RESOURCES
 =========
 
-The Linux version of the 9P server is now maintained under the npfs project
+The Linux version of the 9p server is now maintained under the npfs project
 on sourceforge (http://sourceforge.net/projects/npfs).
 
 There are user and developer mailing lists available through the v9fs project
index 944cf109a6f5a36ad51cf6d8fd47819ab220986e..99902ae6804e6edb0550fac53ce34b9070842895 100644 (file)
@@ -121,7 +121,7 @@ Table 1-1: Process specific entries in /proc
 ..............................................................................
  File    Content                                        
  cmdline Command line arguments                         
- cpu    Current and last cpu in wich it was executed           (2.4)(smp)
+ cpu    Current and last cpu in which it was executed          (2.4)(smp)
  cwd    Link to the current working directory
  environ Values of environment variables      
  exe    Link to the executable of this process
@@ -309,13 +309,13 @@ is the same by default:
   > cat /proc/irq/0/smp_affinity 
   ffffffff
 
-It's a bitmask, in wich you can specify wich CPUs can handle the IRQ, you can
+It's a bitmask, in which you can specify which CPUs can handle the IRQ, you can
 set it by doing:
 
   > echo 1 > /proc/irq/prof_cpu_mask
 
 This means that only the first CPU will handle the IRQ, but you can also echo 5
-wich means that only the first and fourth CPU can handle the IRQ.
+which means that only the first and fourth CPU can handle the IRQ.
 
 The way IRQs are routed is handled by the IO-APIC, and it's Round Robin
 between all the CPUs which are allowed to handle it. As usual the kernel has
index e5213bc301f721a1c3236a4469194982c9653865..511b4230c0536add9d0650cbc1f702becc2e54e2 100644 (file)
@@ -26,6 +26,20 @@ The following mount options are supported:
        nostrict        Unset strict conformance
        iocharset=      Set the NLS character set
 
+The uid= and gid= options need a bit more explaining.  They will accept a
+decimal numeric value which will be used as the default ID for that mount.
+They will also accept the string "ignore" and "forget".  For files on the disk
+that are owned by nobody ( -1 ), they will instead look as if they are owned
+by the default ID.  The ignore option causes the default ID to override all
+IDs on the disk, not just -1.  The forget option causes all IDs to be written
+to disk as -1, so when the media is later remounted, they will appear to be
+owned by whatever default ID it is mounted with at that time.
+
+For typical desktop use of removable media, you should set the ID to that
+of the interactively logged on user, and also specify both the forget and
+ignore options.  This way the interactive user will always see the files
+on the disk as belonging to him.
+
 The remaining are for debugging and disaster recovery:
 
        novrs           Skip volume sequence recognition 
index e56e842847d3ee3e48c79b4099bc0d6040d730a1..adaa899e5c903763a4f0938efedd1bd3bbdce4a0 100644 (file)
@@ -230,10 +230,15 @@ only called from a process context (i.e. not from an interrupt handler
 or bottom half).
 
   alloc_inode: this method is called by inode_alloc() to allocate memory
-       for struct inode and initialize it.
+       for struct inode and initialize it.  If this function is not
+       defined, a simple 'struct inode' is allocated.  Normally
+       alloc_inode will be used to allocate a larger structure which
+       contains a 'struct inode' embedded within it.
 
   destroy_inode: this method is called by destroy_inode() to release
-       resources allocated for struct inode.
+       resources allocated for struct inode.  It is only required if
+       ->alloc_inode was defined and simply undoes anything done by
+       ->alloc_inode.
 
   read_inode: this method is called to read a specific inode from the
         mounted filesystem.  The i_ino member in the struct inode is
@@ -443,14 +448,81 @@ otherwise noted.
 The Address Space Object
 ========================
 
-The address space object is used to identify pages in the page cache.
-
+The address space object is used to group and manage pages in the page
+cache.  It can be used to keep track of the pages in a file (or
+anything else) and also track the mapping of sections of the file into
+process address spaces.
+
+There are a number of distinct yet related services that an
+address-space can provide.  These include communicating memory
+pressure, page lookup by address, and keeping track of pages tagged as
+Dirty or Writeback.
+
+The first can be used independently to the others.  The VM can try to
+either write dirty pages in order to clean them, or release clean
+pages in order to reuse them.  To do this it can call the ->writepage
+method on dirty pages, and ->releasepage on clean pages with
+PagePrivate set. Clean pages without PagePrivate and with no external
+references will be released without notice being given to the
+address_space.
+
+To achieve this functionality, pages need to be placed on an LRU with
+lru_cache_add and mark_page_active needs to be called whenever the
+page is used.
+
+Pages are normally kept in a radix tree index by ->index. This tree
+maintains information about the PG_Dirty and PG_Writeback status of
+each page, so that pages with either of these flags can be found
+quickly.
+
+The Dirty tag is primarily used by mpage_writepages - the default
+->writepages method.  It uses the tag to find dirty pages to call
+->writepage on.  If mpage_writepages is not used (i.e. the address
+provides its own ->writepages) , the PAGECACHE_TAG_DIRTY tag is
+almost unused.  write_inode_now and sync_inode do use it (through
+__sync_single_inode) to check if ->writepages has been successful in
+writing out the whole address_space.
+
+The Writeback tag is used by filemap*wait* and sync_page* functions,
+via wait_on_page_writeback_range, to wait for all writeback to
+complete.  While waiting ->sync_page (if defined) will be called on
+each page that is found to require writeback.
+
+An address_space handler may attach extra information to a page,
+typically using the 'private' field in the 'struct page'.  If such
+information is attached, the PG_Private flag should be set.  This will
+cause various VM routines to make extra calls into the address_space
+handler to deal with that data.
+
+An address space acts as an intermediate between storage and
+application.  Data is read into the address space a whole page at a
+time, and provided to the application either by copying of the page,
+or by memory-mapping the page.
+Data is written into the address space by the application, and then
+written-back to storage typically in whole pages, however the
+address_space has finer control of write sizes.
+
+The read process essentially only requires 'readpage'.  The write
+process is more complicated and uses prepare_write/commit_write or
+set_page_dirty to write data into the address_space, and writepage,
+sync_page, and writepages to writeback data to storage.
+
+Adding and removing pages to/from an address_space is protected by the
+inode's i_mutex.
+
+When data is written to a page, the PG_Dirty flag should be set.  It
+typically remains set until writepage asks for it to be written.  This
+should clear PG_Dirty and set PG_Writeback.  It can be actually
+written at any point after PG_Dirty is clear.  Once it is known to be
+safe, PG_Writeback is cleared.
+
+Writeback makes use of a writeback_control structure...
 
 struct address_space_operations
 -------------------------------
 
 This describes how the VFS can manipulate mapping of a file to page cache in
-your filesystem. As of kernel 2.6.13, the following members are defined:
+your filesystem. As of kernel 2.6.16, the following members are defined:
 
 struct address_space_operations {
        int (*writepage)(struct page *page, struct writeback_control *wbc);
@@ -469,47 +541,148 @@ struct address_space_operations {
                        loff_t offset, unsigned long nr_segs);
        struct page* (*get_xip_page)(struct address_space *, sector_t,
                        int);
+       /* migrate the contents of a page to the specified target */
+       int (*migratepage) (struct page *, struct page *);
 };
 
-  writepage: called by the VM write a dirty page to backing store.
+  writepage: called by the VM to write a dirty page to backing store.
+      This may happen for data integrity reasons (i.e. 'sync'), or
+      to free up memory (flush).  The difference can be seen in
+      wbc->sync_mode.
+      The PG_Dirty flag has been cleared and PageLocked is true.
+      writepage should start writeout, should set PG_Writeback,
+      and should make sure the page is unlocked, either synchronously
+      or asynchronously when the write operation completes.
+
+      If wbc->sync_mode is WB_SYNC_NONE, ->writepage doesn't have to
+      try too hard if there are problems, and may choose to write out
+      other pages from the mapping if that is easier (e.g. due to
+      internal dependencies).  If it chooses not to start writeout, it
+      should return AOP_WRITEPAGE_ACTIVATE so that the VM will not keep
+      calling ->writepage on that page.
+
+      See the file "Locking" for more details.
 
   readpage: called by the VM to read a page from backing store.
+       The page will be Locked when readpage is called, and should be
+       unlocked and marked uptodate once the read completes.
+       If ->readpage discovers that it needs to unlock the page for
+       some reason, it can do so, and then return AOP_TRUNCATED_PAGE.
+       In this case, the page will be relocated, relocked and if
+       that all succeeds, ->readpage will be called again.
 
   sync_page: called by the VM to notify the backing store to perform all
        queued I/O operations for a page. I/O operations for other pages
        associated with this address_space object may also be performed.
 
+       This function is optional and is called only for pages with
+       PG_Writeback set while waiting for the writeback to complete.
+
   writepages: called by the VM to write out pages associated with the
-       address_space object.
+       address_space object.  If wbc->sync_mode is WBC_SYNC_ALL, then
+       the writeback_control will specify a range of pages that must be
+       written out.  If it is WBC_SYNC_NONE, then a nr_to_write is given
+       and that many pages should be written if possible.
+       If no ->writepages is given, then mpage_writepages is used
+       instead.  This will choose pages from the address space that are
+       tagged as DIRTY and will pass them to ->writepage.
 
   set_page_dirty: called by the VM to set a page dirty.
+        This is particularly needed if an address space attaches
+        private data to a page, and that data needs to be updated when
+        a page is dirtied.  This is called, for example, when a memory
+       mapped page gets modified.
+       If defined, it should set the PageDirty flag, and the
+        PAGECACHE_TAG_DIRTY tag in the radix tree.
 
   readpages: called by the VM to read pages associated with the address_space
-       object.
+       object. This is essentially just a vector version of
+       readpage.  Instead of just one page, several pages are
+       requested.
+       readpages is only used for read-ahead, so read errors are
+       ignored.  If anything goes wrong, feel free to give up.
 
   prepare_write: called by the generic write path in VM to set up a write
-       request for a page.
-
-  commit_write: called by the generic write path in VM to write page to
-       its backing store.
+       request for a page.  This indicates to the address space that
+       the given range of bytes is about to be written.  The
+       address_space should check that the write will be able to
+       complete, by allocating space if necessary and doing any other
+       internal housekeeping.  If the write will update parts of
+       any basic-blocks on storage, then those blocks should be
+       pre-read (if they haven't been read already) so that the
+       updated blocks can be written out properly.
+       The page will be locked.  If prepare_write wants to unlock the
+       page it, like readpage, may do so and return
+       AOP_TRUNCATED_PAGE.
+       In this case the prepare_write will be retried one the lock is
+       regained.
+
+  commit_write: If prepare_write succeeds, new data will be copied
+        into the page and then commit_write will be called.  It will
+        typically update the size of the file (if appropriate) and
+        mark the inode as dirty, and do any other related housekeeping
+        operations.  It should avoid returning an error if possible -
+        errors should have been handled by prepare_write.
 
   bmap: called by the VFS to map a logical block offset within object to
-       physical block number. This method is use by for the legacy FIBMAP
-       ioctl. Other uses are discouraged.
-
-  invalidatepage: called by the VM on truncate to disassociate a page from its
-       address_space mapping.
-
-  releasepage: called by the VFS to release filesystem specific metadata from
-       a page.
-
-  direct_IO: called by the VM for direct I/O writes and reads.
+       physical block number. This method is used by the FIBMAP
+       ioctl and for working with swap-files.  To be able to swap to
+       a file, the file must have a stable mapping to a block
+       device.  The swap system does not go through the filesystem
+       but instead uses bmap to find out where the blocks in the file
+       are and uses those addresses directly.
+
+
+  invalidatepage: If a page has PagePrivate set, then invalidatepage
+        will be called when part or all of the page is to be removed
+       from the address space.  This generally corresponds to either a
+       truncation or a complete invalidation of the address space
+       (in the latter case 'offset' will always be 0).
+       Any private data associated with the page should be updated
+       to reflect this truncation.  If offset is 0, then
+       the private data should be released, because the page
+       must be able to be completely discarded.  This may be done by
+        calling the ->releasepage function, but in this case the
+        release MUST succeed.
+
+  releasepage: releasepage is called on PagePrivate pages to indicate
+        that the page should be freed if possible.  ->releasepage
+        should remove any private data from the page and clear the
+        PagePrivate flag.  It may also remove the page from the
+        address_space.  If this fails for some reason, it may indicate
+        failure with a 0 return value.
+       This is used in two distinct though related cases.  The first
+        is when the VM finds a clean page with no active users and
+        wants to make it a free page.  If ->releasepage succeeds, the
+        page will be removed from the address_space and become free.
+
+       The second case if when a request has been made to invalidate
+        some or all pages in an address_space.  This can happen
+        through the fadvice(POSIX_FADV_DONTNEED) system call or by the
+        filesystem explicitly requesting it as nfs and 9fs do (when
+        they believe the cache may be out of date with storage) by
+        calling invalidate_inode_pages2().
+       If the filesystem makes such a call, and needs to be certain
+        that all pages are invalidated, then its releasepage will
+        need to ensure this.  Possibly it can clear the PageUptodate
+        bit if it cannot free private data yet.
+
+  direct_IO: called by the generic read/write routines to perform
+        direct_IO - that is IO requests which bypass the page cache
+        and transfer data directly between the storage and the
+        application's address space.
 
   get_xip_page: called by the VM to translate a block number to a page.
        The page is valid until the corresponding filesystem is unmounted.
        Filesystems that want to use execute-in-place (XIP) need to implement
        it.  An example implementation can be found in fs/ext2/xip.c.
 
+  migrate_page:  This is used to compact the physical memory usage.
+        If the VM wants to relocate a page (maybe off a memory card
+        that is signalling imminent failure) it will pass a new page
+       and an old page to this function.  migrate_page should
+       transfer any private data across and update any references
+        that it has to the page.
 
 The File Object
 ===============
index d3ad2c24490aa4361ad83d841aca57607f83e5db..ad3edaba4533cf33d5452e5b4bb877455000c05b 100644 (file)
@@ -23,7 +23,6 @@ char __init inkernel_firmware[] = "let's say that this is firmware\n";
 #endif
 
 static struct device ghost_device = {
-       .name      = "Ghost Device",
        .bus_id    = "ghost0",
 };
 
@@ -92,7 +91,7 @@ static void sample_probe_async(void)
 {
        /* Let's say that I can't sleep */
        int error;
-       error = request_firmware_nowait (THIS_MODULE,
+       error = request_firmware_nowait (THIS_MODULE, FW_ACTION_NOHOTPLUG,
                                         "sample_driver_fw", &ghost_device,
                                         "my device pointer",
                                         sample_probe_async_cont);
index 57b956aecbc52c0d4c7402611edc83304870dad0..9e1b0e4051cd0546985b9985fd308d301d537c41 100644 (file)
@@ -172,7 +172,6 @@ static void fw_remove_class_device(struct class_device *class_dev)
 static struct class_device *class_dev;
 
 static struct device my_device = {
-       .name      = "Sample Device",
        .bus_id    = "my_dev0",
 };
 
index 443230b43e092804b7573a16619e4b668803d864..a9c00facdf401103a2ef7cb1301694c34a49432d 100644 (file)
@@ -17,6 +17,7 @@ This document describes the Linux kernel Makefiles.
           --- 3.8 Command line dependency
           --- 3.9 Dependency tracking
           --- 3.10 Special Rules
+          --- 3.11 $(CC) support functions
 
        === 4 Host Program support
           --- 4.1 Simple Host Program
@@ -38,7 +39,6 @@ This document describes the Linux kernel Makefiles.
           --- 6.6 Commands useful for building a boot image
           --- 6.7 Custom kbuild commands
           --- 6.8 Preprocessing linker scripts
-          --- 6.9 $(CC) support functions
 
        === 7 Kbuild Variables
        === 8 Makefile language
@@ -106,9 +106,9 @@ This document is aimed towards normal developers and arch developers.
 Most Makefiles within the kernel are kbuild Makefiles that use the
 kbuild infrastructure. This chapter introduce the syntax used in the
 kbuild makefiles.
-The preferred name for the kbuild files is 'Kbuild' but 'Makefile' will
-continue to be supported. All new developmen is expected to use the
-Kbuild filename.
+The preferred name for the kbuild files are 'Makefile' but 'Kbuild' can
+be used and if both a 'Makefile' and a 'Kbuild' file exists then the 'Kbuild'
+file will be used.
 
 Section 3.1 "Goal definitions" is a quick intro, further chapters provide
 more details, with real examples.
@@ -385,6 +385,102 @@ more details, with real examples.
        to prerequisites are referenced with $(src) (because they are not
        generated files).
 
+--- 3.11 $(CC) support functions
+
+       The kernel may be build with several different versions of
+       $(CC), each supporting a unique set of features and options.
+       kbuild provide basic support to check for valid options for $(CC).
+       $(CC) is useally the gcc compiler, but other alternatives are
+       available.
+
+    as-option
+       as-option is used to check if $(CC) when used to compile
+       assembler (*.S) files supports the given option. An optional
+       second option may be specified if first option are not supported.
+
+       Example:
+               #arch/sh/Makefile
+               cflags-y += $(call as-option,-Wa$(comma)-isa=$(isa-y),)
+
+       In the above example cflags-y will be assinged the the option
+       -Wa$(comma)-isa=$(isa-y) if it is supported by $(CC).
+       The second argument is optional, and if supplied will be used
+       if first argument is not supported.
+
+    cc-option
+       cc-option is used to check if $(CC) support a given option, and not
+       supported to use an optional second option.
+
+       Example:
+               #arch/i386/Makefile
+               cflags-y += $(call cc-option,-march=pentium-mmx,-march=i586)
+
+       In the above example cflags-y will be assigned the option
+       -march=pentium-mmx if supported by $(CC), otherwise -march-i586.
+       The second argument to cc-option is optional, and if omitted
+       cflags-y will be assigned no value if first option is not supported.
+
+   cc-option-yn
+       cc-option-yn is used to check if gcc supports a given option
+       and return 'y' if supported, otherwise 'n'.
+
+       Example:
+               #arch/ppc/Makefile
+               biarch := $(call cc-option-yn, -m32)
+               aflags-$(biarch) += -a32
+               cflags-$(biarch) += -m32
+       
+       In the above example $(biarch) is set to y if $(CC) supports the -m32
+       option. When $(biarch) equals to y the expanded variables $(aflags-y)
+       and $(cflags-y) will be assigned the values -a32 and -m32.
+
+    cc-option-align
+       gcc version >= 3.0 shifted type of options used to speify
+       alignment of functions, loops etc. $(cc-option-align) whrn used
+       as prefix to the align options will select the right prefix:
+       gcc < 3.00
+               cc-option-align = -malign
+       gcc >= 3.00
+               cc-option-align = -falign
+       
+       Example:
+               CFLAGS += $(cc-option-align)-functions=4
+
+       In the above example the option -falign-functions=4 is used for
+       gcc >= 3.00. For gcc < 3.00 -malign-functions=4 is used.
+       
+    cc-version
+       cc-version return a numerical version of the $(CC) compiler version.
+       The format is <major><minor> where both are two digits. So for example
+       gcc 3.41 would return 0341.
+       cc-version is useful when a specific $(CC) version is faulty in one
+       area, for example the -mregparm=3 were broken in some gcc version
+       even though the option was accepted by gcc.
+
+       Example:
+               #arch/i386/Makefile
+               cflags-y += $(shell \
+               if [ $(call cc-version) -ge 0300 ] ; then \
+                       echo "-mregparm=3"; fi ;)
+
+       In the above example -mregparm=3 is only used for gcc version greater
+       than or equal to gcc 3.0.
+
+    cc-ifversion
+       cc-ifversion test the version of $(CC) and equals last argument if
+       version expression is true.
+
+       Example:
+               #fs/reiserfs/Makefile
+               EXTRA_CFLAGS := $(call cc-ifversion, -lt, 0402, -O1)
+
+       In this example EXTRA_CFLAGS will be assigned the value -O1 if the
+       $(CC) version is less than 4.2.
+       cc-ifversion takes all the shell operators: 
+       -eq, -ne, -lt, -le, -gt, and -ge
+       The third parameter may be a text as in this example, but it may also
+       be an expanded variable or a macro.
+
 
 === 4 Host Program support
 
@@ -973,74 +1069,6 @@ When kbuild executes the following steps are followed (roughly):
        architecture specific files.
 
 
---- 6.9 $(CC) support functions
-
-       The kernel may be build with several different versions of
-       $(CC), each supporting a unique set of features and options.
-       kbuild provide basic support to check for valid options for $(CC).
-       $(CC) is useally the gcc compiler, but other alternatives are
-       available.
-
-    cc-option
-       cc-option is used to check if $(CC) support a given option, and not
-       supported to use an optional second option.
-
-       Example:
-               #arch/i386/Makefile
-               cflags-y += $(call cc-option,-march=pentium-mmx,-march=i586)
-
-       In the above example cflags-y will be assigned the option
-       -march=pentium-mmx if supported by $(CC), otherwise -march-i586.
-       The second argument to cc-option is optional, and if omitted
-       cflags-y will be assigned no value if first option is not supported.
-
-   cc-option-yn
-       cc-option-yn is used to check if gcc supports a given option
-       and return 'y' if supported, otherwise 'n'.
-
-       Example:
-               #arch/ppc/Makefile
-               biarch := $(call cc-option-yn, -m32)
-               aflags-$(biarch) += -a32
-               cflags-$(biarch) += -m32
-       
-       In the above example $(biarch) is set to y if $(CC) supports the -m32
-       option. When $(biarch) equals to y the expanded variables $(aflags-y)
-       and $(cflags-y) will be assigned the values -a32 and -m32.
-
-    cc-option-align
-       gcc version >= 3.0 shifted type of options used to speify
-       alignment of functions, loops etc. $(cc-option-align) whrn used
-       as prefix to the align options will select the right prefix:
-       gcc < 3.00
-               cc-option-align = -malign
-       gcc >= 3.00
-               cc-option-align = -falign
-       
-       Example:
-               CFLAGS += $(cc-option-align)-functions=4
-
-       In the above example the option -falign-functions=4 is used for
-       gcc >= 3.00. For gcc < 3.00 -malign-functions=4 is used.
-       
-    cc-version
-       cc-version return a numerical version of the $(CC) compiler version.
-       The format is <major><minor> where both are two digits. So for example
-       gcc 3.41 would return 0341.
-       cc-version is useful when a specific $(CC) version is faulty in one
-       area, for example the -mregparm=3 were broken in some gcc version
-       even though the option was accepted by gcc.
-
-       Example:
-               #arch/i386/Makefile
-               cflags-y += $(shell \
-               if [ $(call cc-version) -ge 0300 ] ; then \
-                       echo "-mregparm=3"; fi ;)
-
-       In the above example -mregparm=3 is only used for gcc version greater
-       than or equal to gcc 3.0.
-       
-
 === 7 Kbuild Variables
 
 The top Makefile exports the following variables:
index 7e77f93634ea507569e3554434fe7978767d7fba..fcccf2432f98ff48d8d87b040c92e9ab5a8ef01a 100644 (file)
@@ -13,6 +13,7 @@ In this document you will find information about:
           --- 2.2 Available targets
           --- 2.3 Available options
           --- 2.4 Preparing the kernel tree for module build
+          --- 2.5 Building separate files for a module
        === 3. Example commands
        === 4. Creating a kbuild file for an external module
        === 5. Include files
@@ -22,7 +23,10 @@ In this document you will find information about:
        === 6. Module installation
           --- 6.1 INSTALL_MOD_PATH
           --- 6.2 INSTALL_MOD_DIR
-       === 7. Module versioning
+       === 7. Module versioning & Module.symvers
+          --- 7.1 Symbols fron the kernel (vmlinux + modules)
+          --- 7.2 Symbols and external modules
+          --- 7.3 Symbols from another external module
        === 8. Tips & Tricks
           --- 8.1 Testing for CONFIG_FOO_BAR
 
@@ -88,7 +92,8 @@ when building an external module.
        make -C $KDIR M=$PWD modules_install
                Install the external module(s).
                Installation default is in /lib/modules/<kernel-version>/extra,
-               but may be prefixed with INSTALL_MOD_PATH - see separate chapter.
+               but may be prefixed with INSTALL_MOD_PATH - see separate
+               chapter.
 
        make -C $KDIR M=$PWD clean
                Remove all generated files for the module - the kernel
@@ -131,6 +136,16 @@ when building an external module.
              Therefore a full kernel build needs to be executed to make
              module versioning work.
 
+--- 2.5 Building separate files for a module
+       It is possible to build single files which is part of a module.
+       This works equal for the kernel, a module and even for external
+       modules.
+       Examples (module foo.ko, consist of bar.o, baz.o):
+               make -C $KDIR M=`pwd` bar.lst
+               make -C $KDIR M=`pwd` bar.o
+               make -C $KDIR M=`pwd` foo.ko
+               make -C $KDIR M=`pwd` /
+       
 
 === 3. Example commands
 
@@ -422,7 +437,7 @@ External modules are installed in the directory:
                => Install dir: /lib/modules/$(KERNELRELEASE)/gandalf
 
 
-=== 7. Module versioning
+=== 7. Module versioning & Module.symvers
 
 Module versioning is enabled by the CONFIG_MODVERSIONS tag.
 
@@ -432,11 +447,80 @@ when a module is loaded/used then the CRC values contained in the kernel are
 compared with similar values in the module. If they are not equal then the
 kernel refuses to load the module.
 
-During a kernel build a file named Module.symvers will be generated. This
-file includes the symbol version of all symbols within the kernel. If the 
-Module.symvers file is saved from the last full kernel compile one does not
-have to do a full kernel compile to build a module version's compatible module.
+Module.symvers contains a list of all exported symbols from a kernel build.
+
+--- 7.1 Symbols fron the kernel (vmlinux + modules)
+
+       During a kernel build a file named Module.symvers will be generated.
+       Module.symvers contains all exported symbols from the kernel and
+       compiled modules. For each symbols the corresponding CRC value
+       is stored too.
+
+       The syntax of the Module.symvers file is:
+               <CRC>       <Symbol>           <module>
+       Sample:
+               0x2d036834  scsi_remove_host   drivers/scsi/scsi_mod
 
+       For a kernel build without CONFIG_MODVERSIONING enabled the crc
+       would read: 0x00000000
+
+       Module.symvers serve two purposes.
+       1) It list all exported symbols both from vmlinux and all modules
+       2) It list CRC if CONFIG_MODVERSION is enabled
+
+--- 7.2 Symbols and external modules
+
+       When building an external module the build system needs access to
+       the symbols from the kernel to check if all external symbols are
+       defined. This is done in the MODPOST step and to obtain all
+       symbols modpost reads Module.symvers from the kernel.
+       If a Module.symvers file is present in the directory where
+       the external module is being build this file will be read too.
+       During the MODPOST step a new Module.symvers file will be written
+       containing all exported symbols that was not defined in the kernel.
+       
+--- 7.3 Symbols from another external module
+
+       Sometimes one external module uses exported symbols from another
+       external module. Kbuild needs to have full knowledge on all symbols
+       to avoid spitting out warnings about undefined symbols.
+       Two solutions exist to let kbuild know all symbols of more than
+       one external module.
+       The method with a top-level kbuild file is recommended but may be
+       impractical in certain situations.
+
+       Use a top-level Kbuild file
+               If you have two modules: 'foo', 'bar' and 'foo' needs symbols
+               from 'bar' then one can use a common top-level kbuild file so
+               both modules are compiled in same build.
+
+               Consider following directory layout:
+               ./foo/ <= contains the foo module
+               ./bar/ <= contains the bar module
+               The top-level Kbuild file would then look like:
+               
+               #./Kbuild: (this file may also be named Makefile)
+                       obj-y := foo/ bar/
+
+               Executing:
+                       make -C $KDIR M=`pwd`
+
+               will then do the expected and compile both modules with full
+               knowledge on symbols from both modules.
+
+       Use an extra Module.symvers file
+               When an external module is build a Module.symvers file is
+               generated containing all exported symbols which are not
+               defined in the kernel.
+               To get access to symbols from module 'bar' one can copy the
+               Module.symvers file from the compilation of the 'bar' module
+               to the directory where the 'foo' module is build.
+               During the module build kbuild will read the Module.symvers
+               file in the directory of the external module and when the
+               build is finished a new Module.symvers file is created
+               containing the sum of all symbols defined and not part of the
+               kernel.
+               
 === 8. Tips & Tricks
 
 --- 8.1 Testing for CONFIG_FOO_BAR
index 44a25f3f51d11cf5977c0542c1db71d4b501b75d..f8cb55c30b0fb4d3c8a9931d15c0eedb13684b46 100644 (file)
@@ -367,12 +367,17 @@ running once the system is up.
                tty<n>  Use the virtual console device <n>.
 
                ttyS<n>[,options]
+               ttyUSB0[,options]
                        Use the specified serial port.  The options are of
-                       the form "bbbbpn", where "bbbb" is the baud rate,
-                       "p" is parity ("n", "o", or "e"), and "n" is bits.
-                       Default is "9600n8".
-
-                       See also Documentation/serial-console.txt.
+                       the form "bbbbpnf", where "bbbb" is the baud rate,
+                       "p" is parity ("n", "o", or "e"), "n" is number of
+                       bits, and "f" is flow control ("r" for RTS or
+                       omit it).  Default is "9600n8".
+
+                       See Documentation/serial-console.txt for more
+                       information.  See
+                       Documentation/networking/netconsole.txt for an
+                       alternative.
 
                uart,io,<addr>[,options]
                uart,mmio,<addr>[,options]
index 8d4cf78258e428a828ffc3a35f6bbfc33d2e9837..4fc8e987432073e8f10a81d6ee52fd9ac9cf696e 100644 (file)
@@ -40,7 +40,7 @@ network interface card supports some sort of interrupt load mitigation or
 + How to use CONFIG_PACKET_MMAP
 --------------------------------------------------------------------------------
 
-From the user standpoint, you should use the higher level libpcap library, wich
+From the user standpoint, you should use the higher level libpcap library, which
 is a de facto standard, portable across nearly all operating systems
 including Win32. 
 
@@ -217,8 +217,8 @@ called pg_vec, its size limits the number of blocks that can be allocated.
 
 kmalloc allocates any number of bytes of phisically contiguous memory from 
 a pool of pre-determined sizes. This pool of memory is mantained by the slab 
-allocator wich is at the end the responsible for doing the allocation and 
-hence wich imposes the maximum memory that kmalloc can allocate. 
+allocator which is at the end the responsible for doing the allocation and 
+hence which imposes the maximum memory that kmalloc can allocate. 
 
 In a 2.4/2.6 kernel and the i386 architecture, the limit is 131072 bytes. The 
 predetermined sizes that kmalloc uses can be checked in the "size-<bytes>" 
@@ -254,7 +254,7 @@ and, the number of frames be
 
        <block number> * <block size> / <frame size>
 
-Suposse the following parameters, wich apply for 2.6 kernel and an
+Suposse the following parameters, which apply for 2.6 kernel and an
 i386 architecture:
 
        <size-max> = 131072 bytes
@@ -360,7 +360,7 @@ TP_STATUS_LOSING      : indicates there were packet drops from last time
                         statistics where checked with getsockopt() and
                         the PACKET_STATISTICS option.
 
-TP_STATUS_CSUMNOTREADY: currently it's used for outgoing IP packets wich 
+TP_STATUS_CSUMNOTREADY: currently it's used for outgoing IP packets which 
                         it's checksum will be done in hardware. So while 
                         reading the packet we should not try to check the 
                         checksum. 
index 5427f8c7df95c9ed18885b664bffb8406bbe05f8..145d27a5239547774fa1e67808ffa63e0277f19e 100644 (file)
@@ -25,7 +25,7 @@ the essid= string parameter is available via the kernel command line.
 This will change after the method of sorting out parameters for all
 the PCMCIA drivers is agreed upon.  If you must have a built in driver
 with nondefault parameters, they can be edited in
-/usr/src/linux/drivers/net/pcmcia/ray_cs.c.  Searching for MODULE_PARM
+/usr/src/linux/drivers/net/pcmcia/ray_cs.c.  Searching for module_param
 will find them all.
 
 Information on card services is available at:
index 6c689b0df2b81e9c5b1f914ca7a2c9068bdfea17..9a7bc8b3f479b2b82dbfa1056df060366dbafdec 100644 (file)
@@ -17,11 +17,13 @@ The format of this option is:
                        ttyX for any other virtual console
                        ttySx for a serial port
                        lp0 for the first parallel port
+                       ttyUSB0 for the first USB serial device
 
        options:        depend on the driver. For the serial port this
-                       defines the baudrate/parity/bits of the port,
-                       in the format BBBBPN, where BBBB is the speed,
-                       P is parity (n/o/e), and N is bits. Default is
+                       defines the baudrate/parity/bits/flow control of
+                       the port, in the format BBBBPNF, where BBBB is the
+                       speed, P is parity (n/o/e), N is number of bits,
+                       and F is flow control ('r' for RTS). Default is
                        9600n8. The maximum baudrate is 115200.
 
 You can specify multiple console= options on the kernel command line.
@@ -45,6 +47,9 @@ become the console.
 You will need to create a new device to use /dev/console. The official
 /dev/console is now character device 5,1.
 
+(You can also use a network device as a console.  See
+Documentation/networking/netconsole.txt for information on that.)
+
 Here's an example that will use /dev/ttyS1 (COM2) as the console.
 Replace the sample values as needed.
 
index c9bed4cf8773b942e1ed01db1238a0ba306ddfa6..8467447b5a87adbd0252dfb31f166471cbacf3f0 100644 (file)
@@ -56,10 +56,6 @@ Here is the solution:
     writing one file per option.  It updates only the files for options
     that have changed.
 
-    mkdep.c no longer generates warning messages for missing or unneeded
-    <linux/config.h> lines.  The new top-level target 'make checkconfig'
-    checks for these problems.
-
 Flag Dependencies
 
     Martin Von Loewis contributed another feature to this patch:
index 15d4fb975ac0b636f56f40a015e9ad06f583d102..f04ba6bb7395685719bb883abd74b7ee7c5333a0 100644 (file)
@@ -69,7 +69,7 @@ are available, for example IRQ, address, DMA.
 
 Warning, the options for different cards sometime use different names 
 for the same or a similar feature (dma1= versus dma16=).  As a last 
-resort, inspect the code (search for MODULE_PARM).
+resort, inspect the code (search for module_param).
 
 Notes:
 
index 88d6cf8b39f309150ed7926acf3cc2e6d2c65b33..b5443270986307e7b5275849540d014e02c173c9 100644 (file)
@@ -88,7 +88,7 @@ parameters.  for a copy email: twoller@crystal.cirrus.com
 
 MODULE_PARMS definitions
 ------------------------
-MODULE_PARM(defaultorder, "i");
+module_param(defaultorder, ulong, 0);
 defaultorder=N
 where N is a value from 1 to 12
 The buffer order determines the size of the dma buffer for the driver.
@@ -98,18 +98,18 @@ to not underrun the dma buffer as easily.  As default, use 32k (order=3)
 rather than 64k as some of the games work more responsively.
 (2^N) * PAGE_SIZE = allocated buffer size
 
-MODULE_PARM(cs_debuglevel, "i");
-MODULE_PARM(cs_debugmask, "i");
+module_param(cs_debuglevel, ulong, 0644);
+module_param(cs_debugmask, ulong, 0644);
 cs_debuglevel=N
 cs_debugmask=0xMMMMMMMM
 where N is a value from 0 (no debug printfs), to 9 (maximum)
 0xMMMMMMMM is a debug mask corresponding to the CS_xxx bits (see driver source).
 
-MODULE_PARM(hercules_egpio_disable, "i");
+module_param(hercules_egpio_disable, ulong, 0);
 hercules_egpio_disable=N
 where N is a 0 (enable egpio), or a 1 (disable egpio support)
 
-MODULE_PARM(initdelay, "i");
+module_param(initdelay, ulong, 0);
 initdelay=N
 This value is used to determine the millescond delay during the initialization
 code prior to powering up the PLL.  On laptops this value can be used to
@@ -118,19 +118,19 @@ system is booted under battery power then the mdelay()/udelay() functions fail t
 properly delay the required time.  Also, if the system is booted under AC power
 and then the power removed, the mdelay()/udelay() functions will not delay properly.
  
-MODULE_PARM(powerdown, "i");
+module_param(powerdown, ulong, 0);
 powerdown=N
 where N is 0 (disable any powerdown of the internal blocks) or 1 (enable powerdown)
 
 
-MODULE_PARM(external_amp, "i");
+module_param(external_amp, bool, 0);
 external_amp=1
 if N is set to 1, then force enabling the EAPD support in the primary AC97 codec.
 override the detection logic and force the external amp bit in the AC97 0x26 register
 to be reset (0).  EAPD should be 0 for powerup, and 1 for powerdown.  The VTB Santa Cruz
 card has inverted logic, so there is a special function for these cards.
 
-MODULE_PARM(thinkpad, "i");
+module_param(thinkpad, bool, 0);
 thinkpad=1
 if N is set to 1, then force enabling the clkrun functionality.
 Currently, when the part is being used, then clkrun is disabled for the entire system,
index e415e36045395bd0fdc66cbcc9bffd1b2d8424a5..464e4cec94cb82eca91d20d0e411bfdf61c32792 100644 (file)
@@ -1,7 +1,7 @@
 c-qcam - Connectix Color QuickCam video4linux kernel driver
 
 Copyright (C) 1999  Dave Forrest  <drf5n@virginia.edu>
-                    released under GNU GPL.
+                   released under GNU GPL.
 
 1999-12-08 Dave Forrest, written with kernel version 2.2.12 in mind
 
@@ -45,21 +45,21 @@ configuration.  The appropriate flags are:
     CONFIG_PNP_PARPORT   M for autoprobe.o IEEE1284 readback module
     CONFIG_PRINTER_READBACK M for parport_probe.o IEEE1284 readback module
     CONFIG_VIDEO_DEV     M    for videodev.o video4linux module
-    CONFIG_VIDEO_CQCAM   M    for c-qcam.o  Color Quickcam module 
+    CONFIG_VIDEO_CQCAM   M    for c-qcam.o  Color Quickcam module
 
   With these flags, the kernel should compile and install the modules.
 To record and monitor the compilation, I use:
 
  (make zlilo ; \
   make modules; \
-  make modules_install ; 
+  make modules_install ;
   depmod -a ) &>log &
  less log  # then a capital 'F' to watch the progress
-  
+
 But that is my personal preference.
 
 2.2 Configuration
+
   The configuration requires module configuration and device
 configuration.  I like kmod or kerneld process with the
 /etc/modprobe.conf file so the modules can automatically load/unload as
@@ -68,7 +68,7 @@ using MAKEDEV, or need to be created.  The following sections detail
 these procedures.
 
 
-2.1 Module Configuration  
+2.1 Module Configuration
 
   Using modules requires a bit of work to install and pass the
 parameters.  Understand that entries in /etc/modprobe.conf of:
@@ -128,9 +128,9 @@ system (CONFIG_PROC_FS), the parallel printer support
 (CONFIG_PRINTER), the IEEE 1284 system,(CONFIG_PRINTER_READBACK), you
 should be able to read some identification from your quickcam with
 
-         modprobe -v parport
-         modprobe -v parport_probe
-         cat /proc/parport/PORTNUMBER/autoprobe
+        modprobe -v parport
+        modprobe -v parport_probe
+        cat /proc/parport/PORTNUMBER/autoprobe
 Returns:
   CLASS:MEDIA;
   MODEL:Color QuickCam 2.0;
@@ -140,7 +140,7 @@ Returns:
 and well.  A common problem is that the current driver does not
 reliably detect a c-qcam, even though one is attached.  In this case,
 
-     modprobe -v c-qcam     
+     modprobe -v c-qcam
 or
      insmod -v c-qcam
 
@@ -152,16 +152,16 @@ video4linux mailing list and archive for more current information.
 3.1 Checklist:
 
   Can you get an image?
-            v4lgrab >qcam.ppm ; wc qcam.ppm ; xv qcam.ppm
+           v4lgrab >qcam.ppm ; wc qcam.ppm ; xv qcam.ppm
 
-  Is a working c-qcam connected to the port? 
-            grep ^ /proc/parport/?/autoprobe
+  Is a working c-qcam connected to the port?
+           grep ^ /proc/parport/?/autoprobe
 
-  Do the /dev/video* files exist?  
-            ls -lad /dev/video
+  Do the /dev/video* files exist?
+           ls -lad /dev/video
 
-  Is the c-qcam module loaded?     
-            modprobe -v c-qcam ; lsmod
+  Is the c-qcam module loaded?
+           modprobe -v c-qcam ; lsmod
 
   Does the camera work with alternate programs? cqcam, etc?
 
@@ -174,7 +174,7 @@ video4linux mailing list and archive for more current information.
 isn't, you might try patching the c-qcam module to add a parport=xxx
 option as in the bw-qcam module so you can specify the parallel port:
 
-       insmod -v c-qcam parport=0  
+       insmod -v c-qcam parport=0
 
 And bypass the detection code, see ../../drivers/char/c-qcam.c and
 look for the 'qc_detect' code and call.
@@ -183,12 +183,12 @@ look for the 'qc_detect' code and call.
 this work is documented at the video4linux2 site listed below.
 
 
-9.0 --- A sample program using v4lgrabber, 
+9.0 --- A sample program using v4lgrabber,
 
 This program is a simple image grabber that will copy a frame from the
 first video device, /dev/video0 to standard output in portable pixmap
 format (.ppm)  Using this like: 'v4lgrab | convert - c-qcam.jpg'
-produced this picture of me at 
+produced this picture of me at
     http://mug.sys.virginia.edu/~drf5n/extras/c-qcam.jpg
 
 -------------------- 8< ---------------- 8< -----------------------------
@@ -202,8 +202,8 @@ produced this picture of me at
  *      Use as:
  *              v4lgrab >image.ppm
  *
- *     Copyright (C) 1998-05-03, Phil Blundell <philb@gnu.org>  
- *      Copied from http://www.tazenda.demon.co.uk/phil/vgrabber.c 
+ *     Copyright (C) 1998-05-03, Phil Blundell <philb@gnu.org>
+ *      Copied from http://www.tazenda.demon.co.uk/phil/vgrabber.c
  *      with minor modifications (Dave Forrest, drf5n@virginia.edu).
  *
  */
@@ -225,55 +225,55 @@ produced this picture of me at
 
 #define READ_VIDEO_PIXEL(buf, format, depth, r, g, b)                   \
 {                                                                       \
-        switch (format)                                                 \
-        {                                                               \
-                case VIDEO_PALETTE_GREY:                                \
-                        switch (depth)                                  \
-                        {                                               \
-                                case 4:                                 \
-                                case 6:                                 \
-                                case 8:                                 \
-                                        (r) = (g) = (b) = (*buf++ << 8);\
-                                        break;                          \
-                                                                        \
-                                case 16:                                \
-                                        (r) = (g) = (b) =               \
-                                                *((unsigned short *) buf);      \
-                                        buf += 2;                       \
-                                        break;                          \
-                        }                                               \
-                        break;                                          \
-                                                                        \
-                                                                        \
-                case VIDEO_PALETTE_RGB565:                              \
-                {                                                       \
-                        unsigned short tmp = *(unsigned short *)buf;    \
-                        (r) = tmp&0xF800;                               \
-                        (g) = (tmp<<5)&0xFC00;                          \
-                        (b) = (tmp<<11)&0xF800;                         \
-                        buf += 2;                                       \
-                }                                                       \
-                break;                                                  \
-                                                                        \
-                case VIDEO_PALETTE_RGB555:                              \
-                        (r) = (buf[0]&0xF8)<<8;                         \
-                        (g) = ((buf[0] << 5 | buf[1] >> 3)&0xF8)<<8;    \
-                        (b) = ((buf[1] << 2 ) & 0xF8)<<8;               \
-                        buf += 2;                                       \
-                        break;                                          \
-                                                                        \
-                case VIDEO_PALETTE_RGB24:                               \
-                        (r) = buf[0] << 8; (g) = buf[1] << 8;           \
-                        (b) = buf[2] << 8;                              \
-                        buf += 3;                                       \
-                        break;                                          \
-                                                                        \
-                default:                                                \
-                        fprintf(stderr,                                 \
-                                "Format %d not yet supported\n",        \
-                                format);                                \
-        }                                                               \
-}                                               
+       switch (format)                                                 \
+       {                                                               \
+               case VIDEO_PALETTE_GREY:                                \
+                       switch (depth)                                  \
+                       {                                               \
+                               case 4:                                 \
+                               case 6:                                 \
+                               case 8:                                 \
+                                       (r) = (g) = (b) = (*buf++ << 8);\
+                                       break;                          \
+                                                                       \
+                               case 16:                                \
+                                       (r) = (g) = (b) =               \
+                                               *((unsigned short *) buf);      \
+                                       buf += 2;                       \
+                                       break;                          \
+                       }                                               \
+                       break;                                          \
+                                                                       \
+                                                                       \
+               case VIDEO_PALETTE_RGB565:                              \
+               {                                                       \
+                       unsigned short tmp = *(unsigned short *)buf;    \
+                       (r) = tmp&0xF800;                               \
+                       (g) = (tmp<<5)&0xFC00;                          \
+                       (b) = (tmp<<11)&0xF800;                         \
+                       buf += 2;                                       \
+               }                                                       \
+               break;                                                  \
+                                                                       \
+               case VIDEO_PALETTE_RGB555:                              \
+                       (r) = (buf[0]&0xF8)<<8;                         \
+                       (g) = ((buf[0] << 5 | buf[1] >> 3)&0xF8)<<8;    \
+                       (b) = ((buf[1] << 2 ) & 0xF8)<<8;               \
+                       buf += 2;                                       \
+                       break;                                          \
+                                                                       \
+               case VIDEO_PALETTE_RGB24:                               \
+                       (r) = buf[0] << 8; (g) = buf[1] << 8;           \
+                       (b) = buf[2] << 8;                              \
+                       buf += 3;                                       \
+                       break;                                          \
+                                                                       \
+               default:                                                \
+                       fprintf(stderr,                                 \
+                               "Format %d not yet supported\n",        \
+                               format);                                \
+       }                                                               \
+}
 
 int get_brightness_adj(unsigned char *image, long size, int *brightness) {
   long i, tot = 0;
@@ -324,40 +324,40 @@ int main(int argc, char ** argv)
     if(ioctl(fd, VIDIOCSPICT, &vpic) < 0) {
       vpic.depth=6;
       if(ioctl(fd, VIDIOCSPICT, &vpic) < 0) {
-        vpic.depth=4;
-        if(ioctl(fd, VIDIOCSPICT, &vpic) < 0) {
-          fprintf(stderr, "Unable to find a supported capture format.\n");
-          close(fd);
-          exit(1);
-        }
+       vpic.depth=4;
+       if(ioctl(fd, VIDIOCSPICT, &vpic) < 0) {
+         fprintf(stderr, "Unable to find a supported capture format.\n");
+         close(fd);
+         exit(1);
+       }
       }
     }
   } else {
     vpic.depth=24;
     vpic.palette=VIDEO_PALETTE_RGB24;
-    
+
     if(ioctl(fd, VIDIOCSPICT, &vpic) < 0) {
       vpic.palette=VIDEO_PALETTE_RGB565;
       vpic.depth=16;
-      
+
       if(ioctl(fd, VIDIOCSPICT, &vpic)==-1) {
-        vpic.palette=VIDEO_PALETTE_RGB555;
-        vpic.depth=15;
-        
-        if(ioctl(fd, VIDIOCSPICT, &vpic)==-1) {
-          fprintf(stderr, "Unable to find a supported capture format.\n");
-          return -1;
-        }
+       vpic.palette=VIDEO_PALETTE_RGB555;
+       vpic.depth=15;
+
+       if(ioctl(fd, VIDIOCSPICT, &vpic)==-1) {
+         fprintf(stderr, "Unable to find a supported capture format.\n");
+         return -1;
+       }
       }
     }
   }
-  
+
   buffer = malloc(win.width * win.height * bpp);
   if (!buffer) {
     fprintf(stderr, "Out of memory.\n");
     exit(1);
   }
-  
+
   do {
     int newbright;
     read(fd, buffer, win.width * win.height * bpp);
@@ -365,8 +365,8 @@ int main(int argc, char ** argv)
     if (f) {
       vpic.brightness += (newbright << 8);
       if(ioctl(fd, VIDIOCSPICT, &vpic)==-1) {
-        perror("VIDIOSPICT");
-        break;
+       perror("VIDIOSPICT");
+       break;
       }
     }
   } while (f);
@@ -381,7 +381,7 @@ int main(int argc, char ** argv)
     fputc(g>>8, stdout);
     fputc(b>>8, stdout);
   }
-    
+
   close(fd);
   return 0;
 }
index c95e7bbc0fdfc8763aaaffa01194b2f235891c35..19cd3bf24981aa254b63b960f68a3eefb5bb1ba0 100644 (file)
@@ -87,7 +87,7 @@ hardware configuration of the parport. You can give the boot-parameter
 at the LILO-prompt or specify it in lilo.conf. I use the following
 append-line in lilo.conf:
 
-        append="parport=0x378,7,3"
+       append="parport=0x378,7,3"
 
 See Documentation/parport.txt for more information about the
 configuration of the parport and the values given above. Do not simply
@@ -175,7 +175,7 @@ THANKS (in no particular order):
 - Manuel J. Petit de Gabriel <mpetit@dit.upm.es> for providing help
   with Isabel (http://isabel.dit.upm.es/)
 - Bas Huisman <bhuism@cs.utwente.nl> for writing the initial parport code
-- Jarl Totland <Jarl.Totland@bdc.no> for setting up the mailing list 
+- Jarl Totland <Jarl.Totland@bdc.no> for setting up the mailing list
   and maintaining the web-server[3]
 - Chris Whiteford <Chris@informinteractive.com> for fixes related to the
   1.02 firmware
index 52c94bd7dca1f909cc16ddc2f40351cfbefad5ab..be9f21b8455589b6c697b888c1132858bce043ce 100644 (file)
@@ -28,7 +28,7 @@ Iomega Buz:
 * Philips saa7111 TV decoder
 * Philips saa7185 TV encoder
 Drivers to use: videodev, i2c-core, i2c-algo-bit,
-                videocodec, saa7111, saa7185, zr36060, zr36067
+               videocodec, saa7111, saa7185, zr36060, zr36067
 Inputs/outputs: Composite and S-video
 Norms: PAL, SECAM (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps)
 Card number: 7
@@ -39,7 +39,7 @@ Linux Media Labs LML33:
 * Brooktree bt819 TV decoder
 * Brooktree bt856 TV encoder
 Drivers to use: videodev, i2c-core, i2c-algo-bit,
-                videocodec, bt819, bt856, zr36060, zr36067
+               videocodec, bt819, bt856, zr36060, zr36067
 Inputs/outputs: Composite and S-video
 Norms: PAL (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps)
 Card number: 5
@@ -50,7 +50,7 @@ Linux Media Labs LML33R10:
 * Philips saa7114 TV decoder
 * Analog Devices adv7170 TV encoder
 Drivers to use: videodev, i2c-core, i2c-algo-bit,
-                videocodec, saa7114, adv7170, zr36060, zr36067
+               videocodec, saa7114, adv7170, zr36060, zr36067
 Inputs/outputs: Composite and S-video
 Norms: PAL (720x576 @ 25 fps), NTSC (720x480 @ 29.97 fps)
 Card number: 6
@@ -61,7 +61,7 @@ Pinnacle/Miro DC10(new):
 * Philips saa7110a TV decoder
 * Analog Devices adv7176 TV encoder
 Drivers to use: videodev, i2c-core, i2c-algo-bit,
-                videocodec, saa7110, adv7175, zr36060, zr36067
+               videocodec, saa7110, adv7175, zr36060, zr36067
 Inputs/outputs: Composite, S-video and Internal
 Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps)
 Card number: 1
@@ -84,7 +84,7 @@ Pinnacle/Miro DC10(old): *
 * Micronas vpx3220a TV decoder
 * mse3000 TV encoder or Analog Devices adv7176 TV encoder *
 Drivers to use: videodev, i2c-core, i2c-algo-bit,
-                videocodec, vpx3220, mse3000/adv7175, zr36050, zr36016, zr36067
+               videocodec, vpx3220, mse3000/adv7175, zr36050, zr36016, zr36067
 Inputs/outputs: Composite, S-video and Internal
 Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps)
 Card number: 0
@@ -96,7 +96,7 @@ Pinnacle/Miro DC30: *
 * Micronas vpx3225d/vpx3220a/vpx3216b TV decoder
 * Analog Devices adv7176 TV encoder
 Drivers to use: videodev, i2c-core, i2c-algo-bit,
-                videocodec, vpx3220/vpx3224, adv7175, zr36050, zr36016, zr36067
+               videocodec, vpx3220/vpx3224, adv7175, zr36050, zr36016, zr36067
 Inputs/outputs: Composite, S-video and Internal
 Norms: PAL, SECAM (768x576 @ 25 fps), NTSC (640x480 @ 29.97 fps)
 Card number: 3
@@ -123,11 +123,11 @@ Note: use encoder=X or decoder=X for non-default i2c chips (see i2c-id.h)
 
 The best know TV standards are NTSC/PAL/SECAM. but for decoding a frame that
 information is not enough. There are several formats of the TV standards.
-And not every TV decoder is able to handle every format. Also the every 
-combination is supported by the driver. There are currently 11 different 
-tv broadcast formats all aver the world. 
+And not every TV decoder is able to handle every format. Also the every
+combination is supported by the driver. There are currently 11 different
+tv broadcast formats all aver the world.
 
-The CCIR defines parameters needed for broadcasting the signal. 
+The CCIR defines parameters needed for broadcasting the signal.
 The CCIR has defined different standards: A,B,D,E,F,G,D,H,I,K,K1,L,M,N,...
 The CCIR says not much about about the colorsystem used !!!
 And talking about a colorsystem says not to much about how it is broadcast.
@@ -136,18 +136,18 @@ The CCIR standards A,E,F are not used any more.
 
 When you speak about NTSC, you usually mean the standard: CCIR - M using
 the NTSC colorsystem which is used in the USA, Japan, Mexico, Canada
-and a few others. 
+and a few others.
 
 When you talk about PAL, you usually mean: CCIR - B/G using the PAL
-colorsystem which is used in many Countries. 
+colorsystem which is used in many Countries.
 
-When you talk about SECAM, you mean: CCIR - L using the SECAM Colorsystem 
+When you talk about SECAM, you mean: CCIR - L using the SECAM Colorsystem
 which is used in France, and a few others.
 
 There the other version of SECAM, CCIR - D/K is used in Bulgaria, China,
-Slovakai, Hungary, Korea (Rep.), Poland, Rumania and a others. 
+Slovakai, Hungary, Korea (Rep.), Poland, Rumania and a others.
 
-The CCIR - H uses the PAL colorsystem (sometimes SECAM) and is used in 
+The CCIR - H uses the PAL colorsystem (sometimes SECAM) and is used in
 Egypt, Libya, Sri Lanka, Syrain Arab. Rep.
 
 The CCIR - I uses the PAL colorsystem, and is used in Great Britain, Hong Kong,
@@ -158,30 +158,30 @@ and is used in Argentinia, Uruguay, an a few others
 
 We do not talk about how the audio is broadcast !
 
-A rather good sites about the TV standards are: 
+A rather good sites about the TV standards are:
 http://www.sony.jp/ServiceArea/Voltage_map/
 http://info.electronicwerkstatt.de/bereiche/fernsehtechnik/frequenzen_und_normen/Fernsehnormen/
 and http://www.cabl.com/restaurant/channel.html
 
 Other weird things around: NTSC 4.43 is a modificated NTSC, which is mainly
 used in PAL VCR's that are able to play back NTSC. PAL 60 seems to be the same
-as NTSC 4.43 . The Datasheets also talk about NTSC 44, It seems as if it would 
-be the same as NTSC 4.43. 
+as NTSC 4.43 . The Datasheets also talk about NTSC 44, It seems as if it would
+be the same as NTSC 4.43.
 NTSC Combs seems to be a decoder mode where the decoder uses a comb filter
 to split coma and luma instead of a Delay line.
 
 But I did not defiantly find out what NTSC Comb is.
 
 Philips saa7111 TV decoder
-was introduced in 1997, is used in the BUZ and 
-can handle: PAL B/G/H/I, PAL N, PAL M, NTSC M, NTSC N, NTSC 4.43 and SECAM 
+was introduced in 1997, is used in the BUZ and
+can handle: PAL B/G/H/I, PAL N, PAL M, NTSC M, NTSC N, NTSC 4.43 and SECAM
 
 Philips saa7110a TV decoder
 was introduced in 1995, is used in the Pinnacle/Miro DC10(new), DC10+ and
-can handle: PAL B/G, NTSC M and SECAM 
+can handle: PAL B/G, NTSC M and SECAM
 
 Philips saa7114 TV decoder
-was introduced in 2000, is used in the LML33R10 and  
+was introduced in 2000, is used in the LML33R10 and
 can handle: PAL B/G/D/H/I/N, PAL N, PAL M, NTSC M, NTSC 4.43 and SECAM
 
 Brooktree bt819 TV decoder
@@ -206,7 +206,7 @@ was introduced in 1996, is used in the BUZ
 can generate: PAL B/G, NTSC M
 
 Brooktree bt856 TV Encoder
-was introduced in 1994, is used in the LML33 
+was introduced in 1994, is used in the LML33
 can generate: PAL B/D/G/H/I/N, PAL M, NTSC M, PAL-N (Argentina)
 
 Analog Devices adv7170 TV Encoder
@@ -221,9 +221,9 @@ ITT mse3000 TV encoder
 was introduced in 1991, is used in the DC10 old
 can generate: PAL , NTSC , SECAM
 
-The adv717x, should be able to produce PAL N. But you find nothing PAL N 
+The adv717x, should be able to produce PAL N. But you find nothing PAL N
 specific in the registers. Seem that you have to reuse a other standard
-to generate PAL N, maybe it would work if you use the PAL M settings. 
+to generate PAL N, maybe it would work if you use the PAL M settings.
 
 ==========================
 
@@ -261,7 +261,7 @@ Here's my experience of using LML33 and Buz on various motherboards:
 
 VIA MVP3
        Forget it. Pointless. Doesn't work.
-Intel 430FX (Pentium 200) 
+Intel 430FX (Pentium 200)
        LML33 perfect, Buz tolerable (3 or 4 frames dropped per movie)
 Intel 440BX (early stepping)
        LML33 tolerable. Buz starting to get annoying (6-10 frames/hour)
@@ -438,52 +438,52 @@ importance of buffer sizes:
 > -q 25 -b 128 : 24.655.992
 > -q 25 -b 256 : 25.859.820
 
-I woke up, and can't go to sleep again. I'll kill some time explaining why 
+I woke up, and can't go to sleep again. I'll kill some time explaining why
 this doesn't look strange to me.
 
-Let's do some math using a width of 704 pixels. I'm not sure whether the Buz 
+Let's do some math using a width of 704 pixels. I'm not sure whether the Buz
 actually use that number or not, but that's not too important right now.
 
-704x288 pixels, one field, is 202752 pixels. Divided by 64 pixels per block; 
-3168 blocks per field. Each pixel consist of two bytes; 128 bytes per block; 
-1024 bits per block. 100% in the new driver mean 1:2 compression; the maximum 
-output becomes 512 bits per block. Actually 510, but 512 is simpler to use 
+704x288 pixels, one field, is 202752 pixels. Divided by 64 pixels per block;
+3168 blocks per field. Each pixel consist of two bytes; 128 bytes per block;
+1024 bits per block. 100% in the new driver mean 1:2 compression; the maximum
+output becomes 512 bits per block. Actually 510, but 512 is simpler to use
 for calculations.
 
-Let's say that we specify d1q50. We thus want 256 bits per block; times 3168 
-becomes 811008 bits; 101376 bytes per field. We're talking raw bits and bytes 
-here, so we don't need to do any fancy corrections for bits-per-pixel or such 
+Let's say that we specify d1q50. We thus want 256 bits per block; times 3168
+becomes 811008 bits; 101376 bytes per field. We're talking raw bits and bytes
+here, so we don't need to do any fancy corrections for bits-per-pixel or such
 things. 101376 bytes per field.
 
-d1 video contains two fields per frame. Those sum up to 202752 bytes per 
+d1 video contains two fields per frame. Those sum up to 202752 bytes per
 frame, and one of those frames goes into each buffer.
 
-But wait a second! -b128 gives 128kB buffers! It's not possible to cram 
+But wait a second! -b128 gives 128kB buffers! It's not possible to cram
 202752 bytes of JPEG data into 128kB!
 
-This is what the driver notice and automatically compensate for in your 
+This is what the driver notice and automatically compensate for in your
 examples. Let's do some math using this information:
 
-128kB is 131072 bytes. In this buffer, we want to store two fields, which 
-leaves 65536 bytes for each field. Using 3168 blocks per field, we get 
-20.68686868... available bytes per block; 165 bits. We can't allow the 
-request for 256 bits per block when there's only 165 bits available! The -q50 
-option is silently overridden, and the -b128 option takes precedence, leaving 
+128kB is 131072 bytes. In this buffer, we want to store two fields, which
+leaves 65536 bytes for each field. Using 3168 blocks per field, we get
+20.68686868... available bytes per block; 165 bits. We can't allow the
+request for 256 bits per block when there's only 165 bits available! The -q50
+option is silently overridden, and the -b128 option takes precedence, leaving
 us with the equivalence of -q32.
 
-This gives us a data rate of 165 bits per block, which, times 3168, sums up 
-to 65340 bytes per field, out of the allowed 65536. The current driver has 
-another level of rate limiting; it won't accept -q values that fill more than 
-6/8 of the specified buffers. (I'm not sure why. "Playing it safe" seem to be 
-a safe bet. Personally, I think I would have lowered requested-bits-per-block 
-by one, or something like that.) We can't use 165 bits per block, but have to 
-lower it again, to 6/8 of the available buffer space: We end up with 124 bits 
-per block, the equivalence of -q24. With 128kB buffers, you can't use greater 
+This gives us a data rate of 165 bits per block, which, times 3168, sums up
+to 65340 bytes per field, out of the allowed 65536. The current driver has
+another level of rate limiting; it won't accept -q values that fill more than
+6/8 of the specified buffers. (I'm not sure why. "Playing it safe" seem to be
+a safe bet. Personally, I think I would have lowered requested-bits-per-block
+by one, or something like that.) We can't use 165 bits per block, but have to
+lower it again, to 6/8 of the available buffer space: We end up with 124 bits
+per block, the equivalence of -q24. With 128kB buffers, you can't use greater
 than -q24 at -d1. (And PAL, and 704 pixels width...)
 
-The third example is limited to -q24 through the same process. The second 
-example, using very similar calculations, is limited to -q48. The only 
-example that actually grab at the specified -q value is the last one, which 
+The third example is limited to -q24 through the same process. The second
+example, using very similar calculations, is limited to -q48. The only
+example that actually grab at the specified -q value is the last one, which
 is clearly visible, looking at the file size.
 --
 
index 6b749133696756d37eb9f88879c4d6945ca4c6a6..611315f87c3ec2fd818529093fbd14772fb71030 100644 (file)
@@ -14,13 +14,13 @@ Hauppauge Win/TV pci (version 405):
 
 Microchip 24LC02B or
 Philips 8582E2Y: 256 Byte EEPROM with configuration information
-                 I2C 0xa0-0xa1, (24LC02B also responds to 0xa2-0xaf)
+                I2C 0xa0-0xa1, (24LC02B also responds to 0xa2-0xaf)
 Philips SAA5246AGP/E: Videotext decoder chip, I2C 0x22-0x23
 TDA9800: sound decoder
 Winbond W24257AS-35: 32Kx8 CMOS static RAM (Videotext buffer mem)
 14052B: analog switch for selection of sound source
 
-PAL: 
+PAL:
 TDA5737: VHF, hyperband and UHF mixer/oscillator for TV and VCR 3-band tuners
 TSA5522: 1.4 GHz I2C-bus controlled synthesizer, I2C 0xc2-0xc3
 
index 8e31e9e36bf7ee2f123d7125959f1980e1df1c03..2b8b0079f7c788a2888821d65b691779b8c5b15d 100644 (file)
@@ -3,7 +3,7 @@
 - Start capturing by pressing "c" or by selecting it via a menu!!!
 
 - The memory of some S3 cards is not recognized right:
-  
+
   First of all, if you are not using XFree-3.2 or newer, upgrade AT LEAST to
   XFree-3.2A! This solved the problem for most people.
 
   (mostly with Trio 64 but also with some others)
   Get the free demo version of Accelerated X from www.xinside.com and try
   bttv with it. bttv seems to work with most S3 cards with Accelerated X.
-  
+
   Since I do not know much (better make that almost nothing) about VGA card
   programming I do not know the reason for this.
   Looks like XFree does something different when setting up the video memory?
-  Maybe somebody can enlighten me?  
-  Would be nice if somebody could get this to work with XFree since 
-  Accelerated X costs more than some of the grabber cards ... 
+  Maybe somebody can enlighten me?
+  Would be nice if somebody could get this to work with XFree since
+  Accelerated X costs more than some of the grabber cards ...
+
   Better linear frame buffer support for S3 cards will probably be in
   XFree 4.0.
-  
+
 - Grabbing is not switched off when changing consoles with XFree.
   That's because XFree and some AcceleratedX versions do not send unmap
   events.
 
 - Some popup windows (e.g. of the window manager) are not refreshed.
-  
+
   Disable backing store by starting X with the option "-bs"
 
 - When using 32 bpp in XFree or 24+8bpp mode in AccelX 3.1 the system
index e8edb87df711846bc24ae75db728490d414da7ab..92e03929a6b2c1ac2b77cc146e1d2b5eed9fc8a9 100644 (file)
@@ -38,9 +38,9 @@ tolerate.
 ------------------------
 
 When using the 430FX PCI, the following rules will ensure
-compatibility: 
+compatibility:
 
- (1) Deassert REQ at the same time as asserting FRAME. 
+ (1) Deassert REQ at the same time as asserting FRAME.
  (2) Do not reassert REQ to request another bus transaction until after
      finish-ing the previous transaction.
 
index 2085399da7d4c3274b39c133bd253523af370ef1..950aa781c2e98722d11b1d51e9cf22026d257bbe 100644 (file)
@@ -1,6 +1,6 @@
 Many thanks to:
 
-- Markus Schroeder <schroedm@uni-duesseldorf.de> for information on the Bt848 
+- Markus Schroeder <schroedm@uni-duesseldorf.de> for information on the Bt848
   and tuner programming and his control program xtvc.
 
 - Martin Buck <martin-2.buck@student.uni-ulm.de> for his great Videotext
@@ -16,7 +16,7 @@ Many thanks to:
 - MIRO for providing a free PCTV card and detailed information about the
   components on their cards. (E.g. how the tuner type is detected)
   Without their card I could not have debugged the NTSC mode.
-       
+
 - Hauppauge for telling how the sound input is selected and what components
   they do and will use on their radio cards.
   Also many thanks for faxing me the FM1216 data sheet.
index 2b75345f13e3a428a862b18348e5a724a7b4c3fc..d1f3ed199186e1b059d3b31e66284d680513a846 100644 (file)
@@ -131,17 +131,17 @@ Check Stereo:   BASE <-- 0xd8  (current volume, stereo detect,
                x=0xff ==> "not stereo", x=0xfd ==> "stereo detected"
 
 Set Frequency:  code = (freq*40) + 10486188
-                foreach of the 24 bits in code,
-                (from Least to Most Significant):
-                  to write a "zero" bit,
-                    BASE <-- 0x01  (audio mute, no stereo detect, radio
+               foreach of the 24 bits in code,
+               (from Least to Most Significant):
+                 to write a "zero" bit,
+                   BASE <-- 0x01  (audio mute, no stereo detect, radio
                                    disable, "zero" bit phase 1, tuner adjust)
-                    BASE <-- 0x03  (audio mute, no stereo detect, radio
+                   BASE <-- 0x03  (audio mute, no stereo detect, radio
                                    disable, "zero" bit phase 2, tuner adjust)
-                  to write a "one" bit,
-                    BASE <-- 0x05  (audio mute, no stereo detect, radio
+                 to write a "one" bit,
+                   BASE <-- 0x05  (audio mute, no stereo detect, radio
                                    disable, "one" bit phase 1, tuner adjust)
-                    BASE <-- 0x07  (audio mute, no stereo detect, radio
+                   BASE <-- 0x07  (audio mute, no stereo detect, radio
                                    disable, "one" bit phase 2, tuner adjust)
 
 ----------------------------------------------------------------------------
index e7ac33a7eb06c5fa5b63f9cef1e2adcdb6e5b57a..78a651254b84eaa57bf0a8b662e3478190b9c0d7 100644 (file)
@@ -26,7 +26,7 @@ is called VIDEO_PALETTE_YUV422 (16 bpp).
 A minimal test application (with source) is available from:
   http://hem.fyristorg.com/mogul/w9966.html
 
-The slow framerate is due to missing DMA ECP read support in the 
+The slow framerate is due to missing DMA ECP read support in the
 parport drivers. I might add working EPP support later.
 
 Good luck!
index 5d6357eefde4ce15f3d2dd0a23c231da9a9a4361..ac6d92d0194470170aa3c569b3de1179557efdb7 100644 (file)
@@ -2,7 +2,7 @@ Driver for Trust Computer Products Framegrabber, version 0.6.1
 ------ --- ----- -------- -------- ------------  ------- - - -
 
 - ZORAN ------------------------------------------------------
- Author: Pauline Middelink <middelin@polyware.nl> 
+ Author: Pauline Middelink <middelin@polyware.nl>
    Date: 18 September 1999
 Version: 0.6.1
 
@@ -115,7 +115,7 @@ After making/checking the devices do:
 <n> is the cardtype of the card you have. The cardnumber can
 be found in the source of zr36120. Look for tvcards. If your
 card is not there, please try if any other card gives some
-response, and mail me if you got a working tvcard addition. 
+response, and mail me if you got a working tvcard addition.
 
 PS. <TVCard editors behold!)
     Dont forget to set video_input to the number of inputs
index 5b6a0145505dabbf389464a96cd6effd8347268e..4e8fbbc5566de6683aa151d167a64a4e13eb0ed0 100644 (file)
@@ -147,6 +147,18 @@ M: p_gortmaker@yahoo.com
 L:     netdev@vger.kernel.org
 S:     Maintained
 
+9P FILE SYSTEM
+P:      Eric Van Hensbergen
+M:      ericvh@gmail.com
+P:      Ron Minnich
+M:      rminnich@lanl.gov
+P:      Latchesar Ionkov
+M:      lucho@ionkov.net
+L:      v9fs-developer@lists.sourceforge.net
+W:      http://v9fs.sf.net
+T:      git kernel.org:/pub/scm/linux/kernel/ericvh/v9fs.git
+S:      Maintained
+
 A2232 SERIAL BOARD DRIVER
 P:     Enver Haase
 M:     ehaase@inf.fu-berlin.de
@@ -2013,12 +2025,6 @@ L:       parisc-linux@parisc-linux.org
 W:     http://www.parisc-linux.org/
 S:     Maintained
 
-PERSONALITY HANDLING
-P:     Christoph Hellwig
-M:     hch@infradead.org
-L:     linux-abi-devel@lists.sourceforge.net
-S:     Maintained
-
 PCI ERROR RECOVERY
 P:     Linas Vepstas
 M:     linas@austin.ibm.com
@@ -2069,6 +2075,12 @@ M:       tsbogend@alpha.franken.de
 L:     netdev@vger.kernel.org
 S:     Maintained
 
+PERSONALITY HANDLING
+P:     Christoph Hellwig
+M:     hch@infradead.org
+L:     linux-abi-devel@lists.sourceforge.net
+S:     Maintained
+
 PHRAM MTD DRIVER
 P:     Jörn Engel
 M:     joern@wh.fh-wedel.de
@@ -2212,13 +2224,6 @@ S:       Maintained
 RISCOM8 DRIVER
 S:     Orphan
 
-RTLINUX  REALTIME  LINUX
-P:     Victor Yodaiken
-M:     yodaiken@fsmlabs.com
-L:     rtl@rtlinux.org
-W:     www.rtlinux.org
-S:     Maintained
-
 S3 SAVAGE FRAMEBUFFER DRIVER
 P:      Antonino Daplas
 M:      adaplas@pol.net
@@ -2531,7 +2536,6 @@ S:        Unsupported ?
 STRADIS MPEG-2 DECODER DRIVER
 P:     Nathan Laredo
 M:     laredo@gnu.org
-W:     http://mpeg.openprojects.net/
 W:     http://www.stradis.com/
 S:     Maintained
 
@@ -2650,7 +2654,7 @@ S:        Maintained
 
 TUN/TAP driver
 P:     Maxim Krasnyansky
-M:     maxk@qualcomm.com, max_mk@yahoo.com
+M:     maxk@qualcomm.com
 L:     vtun@office.satix.net
 W:     http://vtun.sourceforge.net/tun
 S:     Maintained
@@ -2979,18 +2983,6 @@ L:       rio500-users@lists.sourceforge.net
 W:     http://rio500.sourceforge.net
 S:     Maintained
 
-V9FS FILE SYSTEM
-P:      Eric Van Hensbergen
-M:      ericvh@gmail.com
-P:      Ron Minnich
-M:      rminnich@lanl.gov
-P:      Latchesar Ionkov
-M:      lucho@ionkov.net
-L:      v9fs-developer@lists.sourceforge.net
-W:      http://v9fs.sf.net
-T:      git kernel.org:/pub/scm/linux/kernel/ericvh/v9fs-devel.git
-S:      Maintained
-
 VIDEO FOR LINUX
 P:     Mauro Carvalho Chehab
 M:     mchehab@infradead.org
index 14781f36e3274cb269f8ac6427b96c828e9c22e0..7bc2f4ad80939a58f0db535ea7f8b8329f5cea67 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -95,7 +95,7 @@ ifdef O
 endif
 
 # That's our default target when none is given on the command line
-.PHONY: _all
+PHONY := _all
 _all:
 
 ifneq ($(KBUILD_OUTPUT),)
@@ -106,7 +106,7 @@ KBUILD_OUTPUT := $(shell cd $(KBUILD_OUTPUT) && /bin/pwd)
 $(if $(KBUILD_OUTPUT),, \
      $(error output directory "$(saved-output)" does not exist))
 
-.PHONY: $(MAKECMDGOALS)
+PHONY += $(MAKECMDGOALS)
 
 $(filter-out _all,$(MAKECMDGOALS)) _all:
        $(if $(KBUILD_VERBOSE:1=),@)$(MAKE) -C $(KBUILD_OUTPUT) \
@@ -123,7 +123,7 @@ ifeq ($(skip-makefile),)
 
 # If building an external module we do not care about the all: rule
 # but instead _all depend on modules
-.PHONY: all
+PHONY += all
 ifeq ($(KBUILD_EXTMOD),)
 _all: all
 else
@@ -137,7 +137,7 @@ objtree             := $(CURDIR)
 src            := $(srctree)
 obj            := $(objtree)
 
-VPATH          := $(srctree)
+VPATH          := $(srctree)$(if $(KBUILD_EXTMOD),:$(KBUILD_EXTMOD))
 
 export srctree objtree VPATH TOPDIR
 
@@ -151,7 +151,7 @@ export srctree objtree VPATH TOPDIR
 SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ \
                                  -e s/arm.*/arm/ -e s/sa110/arm/ \
                                  -e s/s390x/s390/ -e s/parisc64/parisc/ \
-                                 -e s/ppc.*/powerpc/ )
+                                 -e s/ppc.*/powerpc/ -e s/mips.*/mips/ )
 
 # Cross compiling and selecting different set of gcc/bin-utils
 # ---------------------------------------------------------------------------
@@ -258,38 +258,6 @@ endif
 
 export quiet Q KBUILD_VERBOSE
 
-######
-# cc support functions to be used (only) in arch/$(ARCH)/Makefile
-# See documentation in Documentation/kbuild/makefiles.txt
-
-# as-option
-# Usage: cflags-y += $(call as-option, -Wa$(comma)-isa=foo,)
-
-as-option = $(shell if $(CC) $(CFLAGS) $(1) -Wa,-Z -c -o /dev/null \
-            -xassembler /dev/null > /dev/null 2>&1; then echo "$(1)"; \
-            else echo "$(2)"; fi ;)
-
-# cc-option
-# Usage: cflags-y += $(call cc-option, -march=winchip-c6, -march=i586)
-
-cc-option = $(shell if $(CC) $(CFLAGS) $(1) -S -o /dev/null -xc /dev/null \
-             > /dev/null 2>&1; then echo "$(1)"; else echo "$(2)"; fi ;)
-
-# cc-option-yn
-# Usage: flag := $(call cc-option-yn, -march=winchip-c6)
-cc-option-yn = $(shell if $(CC) $(CFLAGS) $(1) -S -o /dev/null -xc /dev/null \
-                > /dev/null 2>&1; then echo "y"; else echo "n"; fi;)
-
-# cc-option-align
-# Prefix align with either -falign or -malign
-cc-option-align = $(subst -functions=0,,\
-       $(call cc-option,-falign-functions=0,-malign-functions=0))
-
-# cc-version
-# Usage gcc-ver := $(call cc-version $(CC))
-cc-version = $(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-version.sh \
-              $(if $(1), $(1), $(CC)))
-
 
 # Look for make include files relative to root of kernel src
 MAKEFLAGS += --include-dir=$(srctree)
@@ -369,14 +337,14 @@ export RCS_TAR_IGNORE := --exclude SCCS --exclude BitKeeper --exclude .svn --exc
 # Rules shared between *config targets and build targets
 
 # Basic helpers built in scripts/
-.PHONY: scripts_basic
+PHONY += scripts_basic
 scripts_basic:
        $(Q)$(MAKE) $(build)=scripts/basic
 
 # To avoid any implicit rule to kick in, define an empty command.
 scripts/basic/%: scripts_basic ;
 
-.PHONY: outputmakefile
+PHONY += outputmakefile
 # outputmakefile generate a Makefile to be placed in output directory, if
 # using a seperate output directory. This allows convinient use
 # of make in output directory
@@ -452,7 +420,7 @@ ifeq ($(KBUILD_EXTMOD),)
 # Additional helpers built in scripts/
 # Carefully list dependencies so we do not try to build scripts twice
 # in parrallel
-.PHONY: scripts
+PHONY += scripts
 scripts: scripts_basic include/config/MARKER
        $(Q)$(MAKE) $(build)=$(@)
 
@@ -504,13 +472,6 @@ else
 CFLAGS         += -O2
 endif
 
-#Add align options if CONFIG_CC_* is not equal to 0
-add-align = $(if $(filter-out 0,$($(1))),$(cc-option-align)$(2)=$($(1)))
-CFLAGS         += $(call add-align,CONFIG_CC_ALIGN_FUNCTIONS,-functions)
-CFLAGS         += $(call add-align,CONFIG_CC_ALIGN_LABELS,-labels)
-CFLAGS         += $(call add-align,CONFIG_CC_ALIGN_LOOPS,-loops)
-CFLAGS         += $(call add-align,CONFIG_CC_ALIGN_JUMPS,-jumps)
-
 ifdef CONFIG_FRAME_POINTER
 CFLAGS         += -fno-omit-frame-pointer $(call cc-option,-fno-optimize-sibling-calls,)
 else
@@ -756,7 +717,7 @@ $(sort $(vmlinux-init) $(vmlinux-main)) $(vmlinux-lds): $(vmlinux-dirs) ;
 # make menuconfig etc.
 # Error messages still appears in the original language
 
-.PHONY: $(vmlinux-dirs)
+PHONY += $(vmlinux-dirs)
 $(vmlinux-dirs): prepare scripts
        $(Q)$(MAKE) $(build)=$@
 
@@ -809,10 +770,10 @@ kernelrelease = $(KERNELVERSION)$(localver-full)
 # version.h and scripts_basic is processed / created.
 
 # Listed in dependency order
-.PHONY: prepare archprepare prepare0 prepare1 prepare2 prepare3
+PHONY += prepare archprepare prepare0 prepare1 prepare2 prepare3
 
 # prepare-all is deprecated, use prepare as valid replacement
-.PHONY: prepare-all
+PHONY += prepare-all
 
 # prepare3 is used to check if we are building in a separate output directory,
 # and if so do:
@@ -853,27 +814,6 @@ prepare prepare-all: prepare0
 
 export CPPFLAGS_vmlinux.lds += -P -C -U$(ARCH)
 
-# Single targets
-# ---------------------------------------------------------------------------
-
-%.s: %.c scripts FORCE
-       $(Q)$(MAKE) $(build)=$(@D) $@
-%.i: %.c scripts FORCE
-       $(Q)$(MAKE) $(build)=$(@D) $@
-%.o: %.c scripts FORCE
-       $(Q)$(MAKE) $(build)=$(@D) $@
-%.ko: scripts FORCE
-       $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) $(build)=$(@D) $(@:.ko=.o)
-       $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modpost
-%/:      scripts prepare FORCE
-       $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) $(build)=$(@D)
-%.lst: %.c scripts FORCE
-       $(Q)$(MAKE) $(build)=$(@D) $@
-%.s: %.S scripts FORCE
-       $(Q)$(MAKE) $(build)=$(@D) $@
-%.o: %.S scripts FORCE
-       $(Q)$(MAKE) $(build)=$(@D) $@
-
 #      FIXME: The asm symlink changes when $(ARCH) changes. That's
 #      hard to detect, but I suppose "make mrproper" is a good idea
 #      before switching between archs anyway.
@@ -914,7 +854,7 @@ include/linux/version.h: $(srctree)/Makefile .config .kernelrelease FORCE
 
 # ---------------------------------------------------------------------------
 
-.PHONY: depend dep
+PHONY += depend dep
 depend dep:
        @echo '*** Warning: make $@ is unnecessary now.'
 
@@ -929,21 +869,21 @@ all: modules
 
 #      Build modules
 
-.PHONY: modules
+PHONY += modules
 modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux)
        @echo '  Building modules, stage 2.';
        $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modpost
 
 
 # Target to prepare building external modules
-.PHONY: modules_prepare
+PHONY += modules_prepare
 modules_prepare: prepare scripts
 
 # Target to install modules
-.PHONY: modules_install
+PHONY += modules_install
 modules_install: _modinst_ _modinst_post
 
-.PHONY: _modinst_
+PHONY += _modinst_
 _modinst_:
        @if [ -z "`$(DEPMOD) -V 2>/dev/null | grep module-init-tools`" ]; then \
                echo "Warning: you may need to install module-init-tools"; \
@@ -970,7 +910,7 @@ depmod_opts :=
 else
 depmod_opts    := -b $(INSTALL_MOD_PATH) -r
 endif
-.PHONY: _modinst_post
+PHONY += _modinst_post
 _modinst_post: _modinst_
        if [ -r System.map -a -x $(DEPMOD) ]; then $(DEPMOD) -ae -F System.map $(depmod_opts) $(KERNELRELEASE); fi
 
@@ -1013,7 +953,7 @@ clean: rm-dirs  := $(CLEAN_DIRS)
 clean: rm-files := $(CLEAN_FILES)
 clean-dirs      := $(addprefix _clean_,$(srctree) $(vmlinux-alldirs))
 
-.PHONY: $(clean-dirs) clean archclean
+PHONY += $(clean-dirs) clean archclean
 $(clean-dirs):
        $(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@)
 
@@ -1031,7 +971,7 @@ mrproper: rm-dirs  := $(wildcard $(MRPROPER_DIRS))
 mrproper: rm-files := $(wildcard $(MRPROPER_FILES))
 mrproper-dirs      := $(addprefix _mrproper_,Documentation/DocBook scripts)
 
-.PHONY: $(mrproper-dirs) mrproper archmrproper
+PHONY += $(mrproper-dirs) mrproper archmrproper
 $(mrproper-dirs):
        $(Q)$(MAKE) $(clean)=$(patsubst _mrproper_%,%,$@)
 
@@ -1041,7 +981,7 @@ mrproper: clean archmrproper $(mrproper-dirs)
 
 # distclean
 #
-.PHONY: distclean
+PHONY += distclean
 
 distclean: mrproper
        @find $(srctree) $(RCS_FIND_IGNORE) \
@@ -1057,12 +997,10 @@ distclean: mrproper
 # rpm target kept for backward compatibility
 package-dir    := $(srctree)/scripts/package
 
-.PHONY: %-pkg rpm
-
 %pkg: FORCE
-       $(Q)$(MAKE) -f $(package-dir)/Makefile $@
+       $(Q)$(MAKE) $(build)=$(package-dir) $@
 rpm: FORCE
-       $(Q)$(MAKE) -f $(package-dir)/Makefile $@
+       $(Q)$(MAKE) $(build)=$(package-dir) $@
 
 
 # Brief documentation of the typical targets used
@@ -1094,13 +1032,11 @@ help:
        @echo  '  kernelversion   - Output the version stored in Makefile'
        @echo  ''
        @echo  'Static analysers'
-       @echo  '  buildcheck      - List dangling references to vmlinux discarded sections'
-       @echo  '                    and init sections from non-init sections'
        @echo  '  checkstack      - Generate a list of stack hogs'
        @echo  '  namespacecheck  - Name space analysis on compiled kernel'
        @echo  ''
        @echo  'Kernel packaging:'
-       @$(MAKE) -f $(package-dir)/Makefile help
+       @$(MAKE) $(build)=$(package-dir) help
        @echo  ''
        @echo  'Documentation targets:'
        @$(MAKE) -f $(srctree)/Documentation/DocBook/Makefile dochelp
@@ -1149,11 +1085,12 @@ else # KBUILD_EXTMOD
 
 # We are always building modules
 KBUILD_MODULES := 1
-.PHONY: crmodverdir
+PHONY += crmodverdir
 crmodverdir:
+       $(Q)rm -rf $(MODVERDIR)
        $(Q)mkdir -p $(MODVERDIR)
 
-.PHONY: $(objtree)/Module.symvers
+PHONY += $(objtree)/Module.symvers
 $(objtree)/Module.symvers:
        @test -e $(objtree)/Module.symvers || ( \
        echo; \
@@ -1162,7 +1099,7 @@ $(objtree)/Module.symvers:
        echo )
 
 module-dirs := $(addprefix _module_,$(KBUILD_EXTMOD))
-.PHONY: $(module-dirs) modules
+PHONY += $(module-dirs) modules
 $(module-dirs): crmodverdir $(objtree)/Module.symvers
        $(Q)$(MAKE) $(build)=$(patsubst _module_%,%,$@)
 
@@ -1170,13 +1107,32 @@ modules: $(module-dirs)
        @echo '  Building modules, stage 2.';
        $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modpost
 
-.PHONY: modules_install
-modules_install:
+PHONY += modules_install
+modules_install: _emodinst_ _emodinst_post
+
+install-dir := $(if $(INSTALL_MOD_DIR),$(INSTALL_MOD_DIR),extra)
+PHONY += _emodinst_
+_emodinst_:
+       $(Q)rm -rf $(MODLIB)/$(install-dir)
+       $(Q)mkdir -p $(MODLIB)/$(install-dir)
        $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modinst
 
+# Run depmod only is we have System.map and depmod is executable
+quiet_cmd_depmod = DEPMOD  $(KERNELRELEASE)
+      cmd_depmod = if [ -r System.map -a -x $(DEPMOD) ]; then \
+                      $(DEPMOD) -ae -F System.map             \
+                      $(if $(strip $(INSTALL_MOD_PATH)),      \
+                     -b $(INSTALL_MOD_PATH) -r)              \
+                     $(KERNELRELEASE);                       \
+                   fi
+
+PHONY += _emodinst_post
+_emodinst_post: _emodinst_
+       $(call cmd,depmod)
+
 clean-dirs := $(addprefix _clean_,$(KBUILD_EXTMOD))
 
-.PHONY: $(clean-dirs) clean
+PHONY += $(clean-dirs) clean
 $(clean-dirs):
        $(Q)$(MAKE) $(clean)=$(patsubst _clean_%,%,$@)
 
@@ -1196,6 +1152,11 @@ help:
        @echo  '  modules_install - install the module'
        @echo  '  clean           - remove generated files in module directory only'
        @echo  ''
+
+# Dummies...
+PHONY += prepare scripts
+prepare: ;
+scripts: ;
 endif # KBUILD_EXTMOD
 
 # Generate tags for editors
@@ -1296,17 +1257,13 @@ versioncheck:
                -name '*.[hcS]' -type f -print | sort \
                | xargs $(PERL) -w scripts/checkversion.pl
 
-buildcheck:
-       $(PERL) $(srctree)/scripts/reference_discarded.pl
-       $(PERL) $(srctree)/scripts/reference_init.pl
-
 namespacecheck:
        $(PERL) $(srctree)/scripts/namespace.pl
 
 endif #ifeq ($(config-targets),1)
 endif #ifeq ($(mixed-targets),1)
 
-.PHONY: checkstack
+PHONY += checkstack
 checkstack:
        $(OBJDUMP) -d vmlinux $$(find . -name '*.ko') | \
        $(PERL) $(src)/scripts/checkstack.pl $(ARCH)
@@ -1317,6 +1274,44 @@ kernelrelease:
 kernelversion:
        @echo $(KERNELVERSION)
 
+# Single targets
+# ---------------------------------------------------------------------------
+# The directory part is taken from first prerequisite, so this
+# works even with external modules
+%.s: %.c prepare scripts FORCE
+       $(Q)$(MAKE) $(build)=$(dir $<) $(dir $<)$(notdir $@)
+%.i: %.c prepare scripts FORCE
+       $(Q)$(MAKE) $(build)=$(dir $<) $(dir $<)$(notdir $@)
+%.o: %.c prepare scripts FORCE
+       $(Q)$(MAKE) $(build)=$(dir $<) $(dir $<)$(notdir $@)
+%.lst: %.c prepare scripts FORCE
+       $(Q)$(MAKE) $(build)=$(dir $<) $(dir $<)$(notdir $@)
+%.s: %.S prepare scripts FORCE
+       $(Q)$(MAKE) $(build)=$(dir $<) $(dir $<)$(notdir $@)
+%.o: %.S prepare scripts FORCE
+       $(Q)$(MAKE) $(build)=$(dir $<) $(dir $<)$(notdir $@)
+
+# For external modules we shall include any directory of the target,
+# but usual case there is no directory part.
+# make M=`pwd` module.o     => $(dir $@)=./
+# make M=`pwd` foo/module.o => $(dir $@)=foo/
+# make M=`pwd` /            => $(dir $@)=/
+ifeq ($(KBUILD_EXTMOD),)
+        target-dir = $(@D)
+else
+        zap-slash=$(filter-out .,$(patsubst %/,%,$(dir $@)))
+        target-dir = $(KBUILD_EXTMOD)$(if $(zap-slash),/$(zap-slash))
+endif
+
+/ %/:      scripts prepare FORCE
+       $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
+       $(build)=$(target-dir)
+%.ko: scripts FORCE
+       $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1)   \
+       $(build)=$(target-dir) $(@:.ko=.o)
+       $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modpost
+
 # FIXME Should go into a make.lib or something 
 # ===========================================================================
 
@@ -1351,4 +1346,10 @@ clean := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.clean obj
 
 endif  # skip-makefile
 
+PHONY += FORCE
 FORCE:
+
+
+# Declare the contents of the .PHONY variable as phony.  We keep that
+# information in a variable se we can use it in if_changed and friends.
+.PHONY: $(PHONY)
index b5b1e4087516cf925de7d352f7a4fb898c22b371..99c0d323719a08bf7398031c5e0674b9aa424918 100644 (file)
@@ -1,6 +1,9 @@
 #
 # arch/arm/Makefile
 #
+# This file is included by the global makefile so that you can add your own
+# architecture-specific flags and dependencies.
+#
 # This file is subject to the terms and conditions of the GNU General Public
 # License.  See the file "COPYING" in the main directory of this archive
 # for more details.
@@ -177,7 +180,7 @@ endif
 
 archprepare: maketools
 
-.PHONY: maketools FORCE
+PHONY += maketools FORCE
 maketools: include/linux/version.h include/asm-arm/.arch FORCE
        $(Q)$(MAKE) $(build)=arch/arm/tools include/asm-arm/mach-types.h
 
index a174d63395ea7df73883480f79f5dd54fdaeeaaa..ec9c400c7f82d171ba9ccf6e52cdb055bf1a50cb 100644 (file)
@@ -1,6 +1,9 @@
 #
 # arch/arm/boot/Makefile
 #
+# This file is included by the global makefile so that you can add your own
+# architecture-specific flags and dependencies.
+#
 # This file is subject to the terms and conditions of the GNU General Public
 # License.  See the file "COPYING" in the main directory of this archive
 # for more details.
@@ -73,7 +76,7 @@ $(obj)/bootpImage: $(obj)/bootp/bootp FORCE
        $(call if_changed,objcopy)
        @echo '  Kernel: $@ is ready'
 
-.PHONY: initrd FORCE
+PHONY += initrd FORCE
 initrd:
        @test "$(INITRD_PHYS)" != "" || \
        (echo This machine does not support INITRD; exit -1)
index 8e8879b6b3d786fa62c8baa49c49a52a4129ed48..c394e305447c504ed3884a6e894c35afad48eb42 100644 (file)
@@ -1,6 +1,9 @@
 #
 # linux/arch/arm/boot/bootp/Makefile
 #
+# This file is included by the global makefile so that you can add your own
+# architecture-specific flags and dependencies.
+#
 
 LDFLAGS_bootp  :=-p --no-undefined -X \
                 --defsym initrd_phys=$(INITRD_PHYS) \
@@ -21,4 +24,4 @@ $(obj)/kernel.o: arch/arm/boot/zImage FORCE
 
 $(obj)/initrd.o: $(INITRD) FORCE
 
-.PHONY:        $(INITRD) FORCE
+PHONY += $(INITRD) FORCE
index 6888816a1935f3047f96f09980ebfe58447adefa..10245408247446818755c7256cdcc9fe54531533 100644 (file)
@@ -40,6 +40,7 @@
 #include <asm/hardware/scoop.h>
 #include <asm/mach/sharpsl_param.h>
 #include <asm/hardware/locomo.h>
+#include <asm/arch/mcp.h>
 
 #include "generic.h"
 
@@ -66,6 +67,32 @@ struct platform_device colliescoop_device = {
        .resource       = collie_scoop_resources,
 };
 
+static struct scoop_pcmcia_dev collie_pcmcia_scoop[] = {
+{
+       .dev        = &colliescoop_device.dev,
+       .irq        = COLLIE_IRQ_GPIO_CF_IRQ,
+       .cd_irq     = COLLIE_IRQ_GPIO_CF_CD,
+       .cd_irq_str = "PCMCIA0 CD",
+},
+};
+
+static struct scoop_pcmcia_config collie_pcmcia_config = {
+       .devs         = &collie_pcmcia_scoop[0],
+       .num_devs     = 1,
+};
+
+
+static struct mcp_plat_data collie_mcp_data = {
+       .mccr0          = MCCR0_ADM,
+       .sclk_rate      = 11981000,
+};
+
+
+static struct sa1100_port_fns collie_port_fns __initdata = {
+       .set_mctrl      = collie_uart_set_mctrl,
+       .get_mctrl      = collie_uart_get_mctrl,
+};
+
 
 static struct resource locomo_resources[] = {
        [0] = {
@@ -159,6 +186,8 @@ static void __init collie_init(void)
        GPDR |= GPIO_32_768kHz;
        TUCR  = TUCR_32_768kHz;
 
+       platform_scoop_config = &collie_pcmcia_config;
+
        ret = platform_add_devices(devices, ARRAY_SIZE(devices));
        if (ret) {
                printk(KERN_WARNING "collie: Unable to register LoCoMo device\n");
@@ -166,6 +195,7 @@ static void __init collie_init(void)
 
        sa11x0_set_flash_data(&collie_flash_data, collie_flash_resources,
                              ARRAY_SIZE(collie_flash_resources));
+       sa11x0_set_mcp_data(&collie_mcp_data);
 
        sharpsl_save_param();
 }
index 844a9e46886e531584ff70c7a3c62a708fd3769a..fe91eda98a94bd1f4266e0cac8f8129bba57d874 100644 (file)
@@ -1,6 +1,9 @@
 #
 # arch/arm26/Makefile
 #
+# This file is included by the global makefile so that you can add your own
+# architecture-specific flags and dependencies.
+#
 # This file is subject to the terms and conditions of the GNU General Public
 # License.  See the file "COPYING" in the main directory of this archive
 # for more details.
@@ -49,9 +52,9 @@ all: zImage
 
 boot := arch/arm26/boot
 
-.PHONY: maketools FORCE
+PHONY += maketools FORCE
 maketools: FORCE
-       
+
 
 # Convert bzImage to zImage
 bzImage: vmlinux
index b5c2277654d42d85374c0f933f34af7a7f747f34..68acb7b0d47fb42f3af2bbbecf98850b997c7ad0 100644 (file)
@@ -1,6 +1,9 @@
 #
 # arch/arm26/boot/Makefile
 #
+# This file is included by the global makefile so that you can add your own
+# architecture-specific flags and dependencies.
+#
 # This file is subject to the terms and conditions of the GNU General Public
 # License.  See the file "COPYING" in the main directory of this archive
 # for more details.
@@ -60,7 +63,7 @@ $(obj)/xipImage: vmlinux FORCE
        @echo '  Kernel: $@ is ready'
 endif
 
-.PHONY: initrd
+PHONY += initrd
 initrd:
        @test "$(INITRD_PHYS)" != "" || \
        (echo This machine does not support INITRD; exit -1)
index bfea1bedcbf24af0c2574be0711c3a9f8d05a23b..b008fb0cd7b7faa4c6114d6a49fa632522108edc 100644 (file)
@@ -737,7 +737,7 @@ config PHYSICAL_START
 
 config HOTPLUG_CPU
        bool "Support for hot-pluggable CPUs (EXPERIMENTAL)"
-       depends on SMP && HOTPLUG && EXPERIMENTAL && !X86_VOYAGER
+       depends on SMP && HOTPLUG && EXPERIMENTAL && !X86_VOYAGER && !X86_PC
        ---help---
          Say Y here to experiment with turning CPUs off and on.  CPUs
          can be controlled through /sys/devices/system/cpu.
index 00108ba9a78dcef5629ead0e8bea35d0c08c9ea7..6e97df6979e859cd9e82b4c47d40a13f0af197d0 100644 (file)
@@ -44,8 +44,8 @@ comment "Page alloc debug is incompatible with Software Suspend on i386"
        depends on DEBUG_KERNEL && SOFTWARE_SUSPEND
 
 config DEBUG_PAGEALLOC
-       bool "Page alloc debugging"
-       depends on DEBUG_KERNEL && !SOFTWARE_SUSPEND
+       bool "Debug page memory allocations"
+       depends on DEBUG_KERNEL && !SOFTWARE_SUSPEND && !HUGETLBFS
        help
          Unmap pages from the kernel linear mapping after free_pages().
          This results in a large slowdown, but helps to find certain types
index 36bef6543ac14e6d7bd8a51157c1657e76509bb8..ff6973a85c8f538d843dc6dce95a717c32f4d673 100644 (file)
@@ -99,8 +99,8 @@ AFLAGS += $(mflags-y)
 
 boot := arch/i386/boot
 
-.PHONY: zImage bzImage compressed zlilo bzlilo \
-       zdisk bzdisk fdimage fdimage144 fdimage288 install
+PHONY += zImage bzImage compressed zlilo bzlilo \
+         zdisk bzdisk fdimage fdimage144 fdimage288 install
 
 all: bzImage
 
index d8d69f2b911d62c909b651de0d9e61a7c7b3b461..4b84ea216f2b81ede738e80206a5fafd8e5ef994 100644 (file)
@@ -76,6 +76,8 @@ edd_mbr_sig_read:
        popw    %es
        popw    %bx
        jc      edd_mbr_sig_done                # on failure, we're done.
+       cmpb    $0, %ah         # some BIOSes do not set CF
+       jne     edd_mbr_sig_done                # on failure, we're done.
        movl    (EDDBUF+EDD_MBR_SIG_OFFSET), %eax # read sig out of the MBR
        movl    %eax, (%bx)                     # store success
        incb    (EDD_MBR_SIG_NR_BUF)            # note that we stored something
index 28cc5d524afcd18a2dce1ee4f5ccb3d2c737faf1..cfc4276e670e3eac2ccc2f1c0a81f3258ff8a586 100644 (file)
@@ -75,7 +75,9 @@ static int speedstep_smi_ownership (void)
        __asm__ __volatile__(
                "out %%al, (%%dx)\n"
                : "=D" (result)
-               : "a" (command), "b" (function), "c" (0), "d" (smi_port), "D" (0), "S" (magic)
+               : "a" (command), "b" (function), "c" (0), "d" (smi_port),
+                       "D" (0), "S" (magic)
+               : "memory"
        );
 
        dprintk("result is %x\n", result);
index 6a93d75db4313a5b3355c0b2896917b13f0c32f8..ca2a0cbcac049883046dc09ba2dd6f0de7c0a9ea 100644 (file)
@@ -106,7 +106,7 @@ static void __init dmi_save_devices(struct dmi_header *dm)
        struct dmi_device *dev;
 
        for (i = 0; i < count; i++) {
-               char *d = ((char *) dm) + (i * 2);
+               char *d = (char *)(dm + 1) + (i * 2);
 
                /* Skip disabled device */
                if ((*d & 0x80) == 0)
index 4c470e99a74202d4afd857e0797dfdfd7ab687a5..82371d83bfa912719c57971980c103b28504cea2 100644 (file)
@@ -1003,7 +1003,6 @@ void cpu_exit_clear(void)
 
        cpu_clear(cpu, cpu_callout_map);
        cpu_clear(cpu, cpu_callin_map);
-       cpu_clear(cpu, cpu_present_map);
 
        cpu_clear(cpu, smp_commenced_mask);
        unmap_cpu_to_logical_apicid(cpu);
@@ -1015,31 +1014,20 @@ struct warm_boot_cpu_info {
        int cpu;
 };
 
-static void __devinit do_warm_boot_cpu(void *p)
+static void __cpuinit do_warm_boot_cpu(void *p)
 {
        struct warm_boot_cpu_info *info = p;
        do_boot_cpu(info->apicid, info->cpu);
        complete(info->complete);
 }
 
-int __devinit smp_prepare_cpu(int cpu)
+static int __cpuinit __smp_prepare_cpu(int cpu)
 {
        DECLARE_COMPLETION(done);
        struct warm_boot_cpu_info info;
        struct work_struct task;
        int     apicid, ret;
 
-       lock_cpu_hotplug();
-
-       /*
-        * On x86, CPU0 is never offlined.  Trying to bring up an
-        * already-booted CPU will hang.  So check for that case.
-        */
-       if (cpu_online(cpu)) {
-               ret = -EINVAL;
-               goto exit;
-       }
-
        apicid = x86_cpu_to_apicid[cpu];
        if (apicid == BAD_APICID) {
                ret = -ENODEV;
@@ -1064,7 +1052,6 @@ int __devinit smp_prepare_cpu(int cpu)
        zap_low_mappings();
        ret = 0;
 exit:
-       unlock_cpu_hotplug();
        return ret;
 }
 #endif
@@ -1392,6 +1379,22 @@ void __cpu_die(unsigned int cpu)
 
 int __devinit __cpu_up(unsigned int cpu)
 {
+#ifdef CONFIG_HOTPLUG_CPU
+       int ret=0;
+
+       /*
+        * We do warm boot only on cpus that had booted earlier
+        * Otherwise cold boot is all handled from smp_boot_cpus().
+        * cpu_callin_map is set during AP kickstart process. Its reset
+        * when a cpu is taken offline from cpu_exit_clear().
+        */
+       if (!cpu_isset(cpu, cpu_callin_map))
+               ret = __smp_prepare_cpu(cpu);
+
+       if (ret)
+               return -EIO;
+#endif
+
        /* In case one didn't come up */
        if (!cpu_isset(cpu, cpu_callin_map)) {
                printk(KERN_DEBUG "skipping cpu%d, didn't come online\n", cpu);
index 3f21c6f6466d912c1051e5030a5dd20923dce38a..8831303a473f607c02c2c6c1a4343f66ef7e2eb5 100644 (file)
@@ -7,6 +7,7 @@
 #include <asm-generic/vmlinux.lds.h>
 #include <asm/thread_info.h>
 #include <asm/page.h>
+#include <asm/cache.h>
 
 OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386")
 OUTPUT_ARCH(i386)
@@ -135,7 +136,7 @@ SECTIONS
   __initramfs_start = .;
   .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) { *(.init.ramfs) }
   __initramfs_end = .;
-  . = ALIGN(32);
+  . = ALIGN(L1_CACHE_BYTES);
   __per_cpu_start = .;
   .data.percpu  : AT(ADDR(.data.percpu) - LOAD_OFFSET) { *(.data.percpu) }
   __per_cpu_end = .;
index ff7ae6b664e8af12509a0f5d19f0231ce34dd14d..10b6b9e7716baae92d2d5fe2b852d965c86b2e07 100644 (file)
@@ -252,6 +252,15 @@ config NR_CPUS
          than 64 will cause the use of a CPU mask array, causing a small
          performance hit.
 
+config IA64_NR_NODES
+       int "Maximum number of NODEs (256-1024)" if (IA64_SGI_SN2 || IA64_GENERIC)
+       range 256 1024
+       depends on IA64_SGI_SN2 || IA64_GENERIC
+       default "256"
+       help
+         This option specifies the maximum number of nodes in your SSI system.
+         If in doubt, use the default.
+
 config HOTPLUG_CPU
        bool "Support for hot-pluggable CPUs (EXPERIMENTAL)"
        depends on SMP && EXPERIMENTAL
index f722e1a25948018826db23c9b482707c20ba8393..80ea7506fa1aa1c18708dcd88ce46c4abe88648d 100644 (file)
@@ -1,6 +1,9 @@
 #
 # ia64/Makefile
 #
+# This file is included by the global makefile so that you can add your own
+# architecture-specific flags and dependencies.
+#
 # This file is subject to the terms and conditions of the GNU General Public
 # License.  See the file "COPYING" in the main directory of this archive
 # for more details.
@@ -62,7 +65,7 @@ drivers-$(CONFIG_OPROFILE)    += arch/ia64/oprofile/
 
 boot := arch/ia64/hp/sim/boot
 
-.PHONY: boot compressed check
+PHONY += boot compressed check
 
 all: compressed unwcheck
 
index 744fd2f79f6166c4e95ecaaacab875807ab1ffc5..0d29aa2066b309036f42d389d06411da4d9d36dd 100644 (file)
@@ -116,6 +116,7 @@ CONFIG_IOSAPIC=y
 CONFIG_FORCE_MAX_ZONEORDER=17
 CONFIG_SMP=y
 CONFIG_NR_CPUS=512
+CONFIG_IA64_NR_NODES=256
 CONFIG_HOTPLUG_CPU=y
 # CONFIG_SCHED_SMT is not set
 # CONFIG_PREEMPT is not set
index 8206752161bbaed56ea47af8d41ed537880f288d..a718034d68d0b0e7ac9e2ebfa378e013cd10d6ab 100644 (file)
@@ -116,6 +116,7 @@ CONFIG_IA64_SGI_SN_XP=m
 CONFIG_FORCE_MAX_ZONEORDER=17
 CONFIG_SMP=y
 CONFIG_NR_CPUS=1024
+CONFIG_IA64_NR_NODES=256
 # CONFIG_HOTPLUG_CPU is not set
 CONFIG_SCHED_SMT=y
 CONFIG_PREEMPT=y
index 3e767288a745ed387d2a39f0db53c9e008a118be..6cba55da572a0bb28c6399142765df87aeeb4b96 100644 (file)
@@ -116,6 +116,7 @@ CONFIG_IOSAPIC=y
 CONFIG_FORCE_MAX_ZONEORDER=17
 CONFIG_SMP=y
 CONFIG_NR_CPUS=512
+CONFIG_IA64_NR_NODES=256
 CONFIG_HOTPLUG_CPU=y
 # CONFIG_SCHED_SMT is not set
 # CONFIG_PREEMPT is not set
index c9104bfff667cafcc5e15af27b9beae9813f20a3..38aa9c108857824b674636dbcdf577dbdd623447 100644 (file)
@@ -69,8 +69,3 @@ dig_setup (char **cmdline_p)
        screen_info.orig_video_isVGA = 1;       /* XXX fake */
        screen_info.orig_video_ega_bx = 3;      /* XXX fake */
 }
-
-void __init
-dig_irq_init (void)
-{
-}
index 70dba1f0e2ee916a7cd032080c96b69e0896ff04..13e739e4c84d9827ca49506175a1fabfb225f1ae 100644 (file)
@@ -1166,19 +1166,7 @@ put_tv32 (struct compat_timeval __user *o, struct timeval *i)
 asmlinkage unsigned long
 sys32_alarm (unsigned int seconds)
 {
-       struct itimerval it_new, it_old;
-       unsigned int oldalarm;
-
-       it_new.it_interval.tv_sec = it_new.it_interval.tv_usec = 0;
-       it_new.it_value.tv_sec = seconds;
-       it_new.it_value.tv_usec = 0;
-       do_setitimer(ITIMER_REAL, &it_new, &it_old);
-       oldalarm = it_old.it_value.tv_sec;
-       /* ehhh.. We can't return 0 if we have an alarm pending.. */
-       /* And we'd better return too much than too little anyway */
-       if (it_old.it_value.tv_usec)
-               oldalarm++;
-       return oldalarm;
+       return alarm_setitimer(seconds);
 }
 
 /* Translations due to time_t size differences.  Which affects all
index 4722ec51c70c6583ca38729f181d3779ad2e5146..a4e218ce2edb89c045efc53ddb07b2eb2c472255 100644 (file)
@@ -420,6 +420,26 @@ int __devinitdata pxm_to_nid_map[MAX_PXM_DOMAINS];
 int __initdata nid_to_pxm_map[MAX_NUMNODES];
 static struct acpi_table_slit __initdata *slit_table;
 
+static int get_processor_proximity_domain(struct acpi_table_processor_affinity *pa)
+{
+       int pxm;
+
+       pxm = pa->proximity_domain;
+       if (ia64_platform_is("sn2"))
+               pxm += pa->reserved[0] << 8;
+       return pxm;
+}
+
+static int get_memory_proximity_domain(struct acpi_table_memory_affinity *ma)
+{
+       int pxm;
+
+       pxm = ma->proximity_domain;
+       if (ia64_platform_is("sn2"))
+               pxm += ma->reserved1[0] << 8;
+       return pxm;
+}
+
 /*
  * ACPI 2.0 SLIT (System Locality Information Table)
  * http://devresource.hp.com/devresource/Docs/TechPapers/IA64/slit.pdf
@@ -443,13 +463,20 @@ void __init acpi_numa_slit_init(struct acpi_table_slit *slit)
 void __init
 acpi_numa_processor_affinity_init(struct acpi_table_processor_affinity *pa)
 {
+       int pxm;
+
+       if (!pa->flags.enabled)
+               return;
+
+       pxm = get_processor_proximity_domain(pa);
+
        /* record this node in proximity bitmap */
-       pxm_bit_set(pa->proximity_domain);
+       pxm_bit_set(pxm);
 
        node_cpuid[srat_num_cpus].phys_id =
            (pa->apic_id << 8) | (pa->lsapic_eid);
        /* nid should be overridden as logical node id later */
-       node_cpuid[srat_num_cpus].nid = pa->proximity_domain;
+       node_cpuid[srat_num_cpus].nid = pxm;
        srat_num_cpus++;
 }
 
@@ -457,10 +484,10 @@ void __init
 acpi_numa_memory_affinity_init(struct acpi_table_memory_affinity *ma)
 {
        unsigned long paddr, size;
-       u8 pxm;
+       int pxm;
        struct node_memblk_s *p, *q, *pend;
 
-       pxm = ma->proximity_domain;
+       pxm = get_memory_proximity_domain(ma);
 
        /* fill node memory chunk structure */
        paddr = ma->base_addr_hi;
index dcd906fe574949f032ff449fe2f46d8527bdba1d..829a43cab79705e998e7aff8f6d577b2e7cede50 100644 (file)
@@ -865,6 +865,7 @@ ENTRY(interrupt)
        ;;
        SAVE_REST
        ;;
+       MCA_RECOVER_RANGE(interrupt)
        alloc r14=ar.pfs,0,0,2,0 // must be first in an insn group
        mov out0=cr.ivr         // pass cr.ivr as first arg
        add out1=16,sp          // pass pointer to pt_regs as second arg
index c3a04ee7f4f612764731723c396c5ef07b8ed109..4b0b71d5aef4520700c259258eddd801378e0fb9 100644 (file)
 struct ia64_machine_vector ia64_mv;
 EXPORT_SYMBOL(ia64_mv);
 
-static struct ia64_machine_vector *
+static __initdata const char *mvec_name;
+static __init int setup_mvec(char *s)
+{
+       mvec_name = s;
+       return 0;
+}
+early_param("machvec", setup_mvec);
+
+static struct ia64_machine_vector * __init
 lookup_machvec (const char *name)
 {
        extern struct ia64_machine_vector machvec_start[];
@@ -33,10 +41,13 @@ machvec_init (const char *name)
 {
        struct ia64_machine_vector *mv;
 
+       if (!name)
+               name = mvec_name ? mvec_name : acpi_get_sysname();
        mv = lookup_machvec(name);
-       if (!mv) {
-               panic("generic kernel failed to find machine vector for platform %s!", name);
-       }
+       if (!mv)
+               panic("generic kernel failed to find machine vector for"
+                     " platform %s!", name);
+
        ia64_mv = *mv;
        printk(KERN_INFO "booting generic kernel on platform %s\n", name);
 }
index b57e723f194c782aa6bc639717dcd57d5db0a947..87ff7fe33cfb3b4e81568b58bac575d36e3bb20f 100644 (file)
@@ -83,6 +83,7 @@
 #include <asm/irq.h>
 #include <asm/hw_irq.h>
 
+#include "mca_drv.h"
 #include "entry.h"
 
 #if defined(IA64_MCA_DEBUG_INFO)
@@ -133,7 +134,7 @@ static int cpe_poll_enabled = 1;
 
 extern void salinfo_log_wakeup(int type, u8 *buffer, u64 size, int irqsafe);
 
-static int mca_init;
+static int mca_init __initdata;
 
 
 static void inline
@@ -184,7 +185,7 @@ static ia64_state_log_t ia64_state_log[IA64_MAX_LOG_TYPES];
  * Inputs   :   info_type   (SAL_INFO_TYPE_{MCA,INIT,CMC,CPE})
  * Outputs     :       None
  */
-static void
+static void __init
 ia64_log_init(int sal_info_type)
 {
        u64     max_size = 0;
@@ -281,6 +282,50 @@ ia64_mca_log_sal_error_record(int sal_info_type)
                ia64_sal_clear_state_info(sal_info_type);
 }
 
+/*
+ * search_mca_table
+ *  See if the MCA surfaced in an instruction range
+ *  that has been tagged as recoverable.
+ *
+ *  Inputs
+ *     first   First address range to check
+ *     last    Last address range to check
+ *     ip      Instruction pointer, address we are looking for
+ *
+ * Return value:
+ *      1 on Success (in the table)/ 0 on Failure (not in the  table)
+ */
+int
+search_mca_table (const struct mca_table_entry *first,
+                const struct mca_table_entry *last,
+                unsigned long ip)
+{
+        const struct mca_table_entry *curr;
+        u64 curr_start, curr_end;
+
+        curr = first;
+        while (curr <= last) {
+                curr_start = (u64) &curr->start_addr + curr->start_addr;
+                curr_end = (u64) &curr->end_addr + curr->end_addr;
+
+                if ((ip >= curr_start) && (ip <= curr_end)) {
+                        return 1;
+                }
+                curr++;
+        }
+        return 0;
+}
+
+/* Given an address, look for it in the mca tables. */
+int mca_recover_range(unsigned long addr)
+{
+       extern struct mca_table_entry __start___mca_table[];
+       extern struct mca_table_entry __stop___mca_table[];
+
+       return search_mca_table(__start___mca_table, __stop___mca_table-1, addr);
+}
+EXPORT_SYMBOL_GPL(mca_recover_range);
+
 #ifdef CONFIG_ACPI
 
 int cpe_vector = -1;
@@ -355,7 +400,7 @@ ia64_mca_cpe_int_handler (int cpe_irq, void *arg, struct pt_regs *ptregs)
  *  Outputs
  *      None
  */
-static void
+static void __init
 ia64_mca_register_cpev (int cpev)
 {
        /* Register the CPE interrupt vector with SAL */
@@ -386,7 +431,7 @@ ia64_mca_register_cpev (int cpev)
  * Outputs
  *     None
  */
-void
+void __cpuinit
 ia64_mca_cmc_vector_setup (void)
 {
        cmcv_reg_t      cmcv;
@@ -747,31 +792,34 @@ ia64_mca_modify_original_stack(struct pt_regs *regs,
                ia64_mca_modify_comm(previous_current);
                goto no_mod;
        }
-       if (r13 != sos->prev_IA64_KR_CURRENT) {
-               msg = "inconsistent previous current and r13";
-               goto no_mod;
-       }
-       if ((r12 - r13) >= KERNEL_STACK_SIZE) {
-               msg = "inconsistent r12 and r13";
-               goto no_mod;
-       }
-       if ((ar_bspstore - r13) >= KERNEL_STACK_SIZE) {
-               msg = "inconsistent ar.bspstore and r13";
-               goto no_mod;
-       }
-       va.p = old_bspstore;
-       if (va.f.reg < 5) {
-               msg = "old_bspstore is in the wrong region";
-               goto no_mod;
-       }
-       if ((ar_bsp - r13) >= KERNEL_STACK_SIZE) {
-               msg = "inconsistent ar.bsp and r13";
-               goto no_mod;
-       }
-       size += (ia64_rse_skip_regs(old_bspstore, slots) - old_bspstore) * 8;
-       if (ar_bspstore + size > r12) {
-               msg = "no room for blocked state";
-               goto no_mod;
+
+       if (!mca_recover_range(ms->pmsa_iip)) {
+               if (r13 != sos->prev_IA64_KR_CURRENT) {
+                       msg = "inconsistent previous current and r13";
+                       goto no_mod;
+               }
+               if ((r12 - r13) >= KERNEL_STACK_SIZE) {
+                       msg = "inconsistent r12 and r13";
+                       goto no_mod;
+               }
+               if ((ar_bspstore - r13) >= KERNEL_STACK_SIZE) {
+                       msg = "inconsistent ar.bspstore and r13";
+                       goto no_mod;
+               }
+               va.p = old_bspstore;
+               if (va.f.reg < 5) {
+                       msg = "old_bspstore is in the wrong region";
+                       goto no_mod;
+               }
+               if ((ar_bsp - r13) >= KERNEL_STACK_SIZE) {
+                       msg = "inconsistent ar.bsp and r13";
+                       goto no_mod;
+               }
+               size += (ia64_rse_skip_regs(old_bspstore, slots) - old_bspstore) * 8;
+               if (ar_bspstore + size > r12) {
+                       msg = "no room for blocked state";
+                       goto no_mod;
+               }
        }
 
        ia64_mca_modify_comm(previous_current);
@@ -1443,7 +1491,7 @@ static struct irqaction mca_cpep_irqaction = {
  * format most of the fields.
  */
 
-static void
+static void __cpuinit
 format_mca_init_stack(void *mca_data, unsigned long offset,
                const char *type, int cpu)
 {
@@ -1467,7 +1515,7 @@ format_mca_init_stack(void *mca_data, unsigned long offset,
 
 /* Do per-CPU MCA-related initialization.  */
 
-void __devinit
+void __cpuinit
 ia64_mca_cpu_init(void *cpu_data)
 {
        void *pal_vaddr;
index e883d85906db5aa583db42f3dcbb9146e40af1a6..37c88eb55873792250d74ac22455ee5cdcab93af 100644 (file)
@@ -6,6 +6,7 @@
  * Copyright (C) Hidetoshi Seto (seto.hidetoshi@jp.fujitsu.com)
  * Copyright (C) 2005 Silicon Graphics, Inc
  * Copyright (C) 2005 Keith Owens <kaos@sgi.com>
+ * Copyright (C) 2006 Russ Anderson <rja@sgi.com>
  */
 #include <linux/config.h>
 #include <linux/types.h>
@@ -121,11 +122,12 @@ mca_page_isolate(unsigned long paddr)
  */
 
 void
-mca_handler_bh(unsigned long paddr)
+mca_handler_bh(unsigned long paddr, void *iip, unsigned long ipsr)
 {
-       printk(KERN_ERR
-               "OS_MCA: process [pid: %d](%s) encounters MCA (paddr=%lx)\n",
-               current->pid, current->comm, paddr);
+       printk(KERN_ERR "OS_MCA: process [cpu %d, pid: %d, uid: %d, "
+               "iip: %p, psr: 0x%lx,paddr: 0x%lx](%s) encounters MCA.\n",
+               raw_smp_processor_id(), current->pid, current->uid,
+               iip, ipsr, paddr, current->comm);
 
        spin_lock(&mca_bh_lock);
        switch (mca_page_isolate(paddr)) {
@@ -442,21 +444,26 @@ recover_from_read_error(slidx_table_t *slidx,
        if (!peidx_bottom(peidx) || !(peidx_bottom(peidx)->valid.minstate))
                return 0;
        psr1 =(struct ia64_psr *)&(peidx_minstate_area(peidx)->pmsa_ipsr);
+       psr2 =(struct ia64_psr *)&(peidx_minstate_area(peidx)->pmsa_xpsr);
 
        /*
         *  Check the privilege level of interrupted context.
         *   If it is user-mode, then terminate affected process.
         */
-       if (psr1->cpl != 0) {
+
+       pmsa = sos->pal_min_state;
+       if (psr1->cpl != 0 ||
+          ((psr2->cpl != 0) && mca_recover_range(pmsa->pmsa_iip))) {
                smei = peidx_bus_check(peidx, 0);
                if (smei->valid.target_identifier) {
                        /*
                         *  setup for resume to bottom half of MCA,
                         * "mca_handler_bhhook"
                         */
-                       pmsa = sos->pal_min_state;
-                       /* pass to bhhook as 1st argument (gr8) */
+                       /* pass to bhhook as argument (gr8, ...) */
                        pmsa->pmsa_gr[8-1] = smei->target_identifier;
+                       pmsa->pmsa_gr[9-1] = pmsa->pmsa_iip;
+                       pmsa->pmsa_gr[10-1] = pmsa->pmsa_ipsr;
                        /* set interrupted return address (but no use) */
                        pmsa->pmsa_br0 = pmsa->pmsa_iip;
                        /* change resume address to bottom half */
@@ -466,6 +473,7 @@ recover_from_read_error(slidx_table_t *slidx,
                        psr2 = (struct ia64_psr *)&pmsa->pmsa_ipsr;
                        psr2->cpl = 0;
                        psr2->ri  = 0;
+                       psr2->bn  = 1;
                        psr2->i  = 0;
 
                        return 1;
index e2f6fa1e0ef6908121cea86108fbcaffe5498707..31a2e52bb16fc7c6b6af5bcfdb8a9caebd95cdb1 100644 (file)
@@ -111,3 +111,10 @@ typedef struct slidx_table {
        slidx_foreach_entry(__pos, &((slidx)->sec)) { __count++; }\
        __count; })
 
+struct mca_table_entry {
+       int start_addr; /* location-relative starting address of MCA recoverable range */
+       int end_addr;   /* location-relative ending address of MCA recoverable range */
+};
+
+extern const struct mca_table_entry *search_mca_tables (unsigned long addr);
+extern int mca_recover_range(unsigned long);
index 3f298ee4d00cbd828a0f53a69ded4cd18363428d..e6a580d354b9e001bc9c2f9f2006ff8dc281e04c 100644 (file)
 
 GLOBAL_ENTRY(mca_handler_bhhook)
        invala                          // clear RSE ?
-       ;;
        cover
        ;;
        clrrrb
        ;;                                              
-       alloc   r16=ar.pfs,0,2,1,0      // make a new frame
-       ;;
+       alloc   r16=ar.pfs,0,2,3,0      // make a new frame
        mov     ar.rsc=0
-       ;;
        mov     r13=IA64_KR(CURRENT)    // current task pointer
        ;;
        mov     r2=r13
@@ -30,7 +27,6 @@ GLOBAL_ENTRY(mca_handler_bhhook)
        addl    r22=IA64_RBS_OFFSET,r2
        ;;
        mov     ar.bspstore=r22
-       ;;
        addl    sp=IA64_STK_OFFSET-IA64_PT_REGS_SIZE,r2
        ;;
        adds    r2=IA64_TASK_THREAD_ON_USTACK_OFFSET,r13
@@ -40,12 +36,12 @@ GLOBAL_ENTRY(mca_handler_bhhook)
        movl    loc1=mca_handler_bh     // recovery C function
        ;;
        mov     out0=r8                 // poisoned address
+       mov     out1=r9                 // iip
+       mov     out2=r10                // psr
        mov     b6=loc1
        ;;
        mov     loc1=rp
-       ;;
-       ssm     psr.i
-       ;;
+       ssm     psr.i | psr.ic
        br.call.sptk.many rp=b6         // does not return ...
        ;;
        mov     ar.pfs=loc0
@@ -53,5 +49,4 @@ GLOBAL_ENTRY(mca_handler_bhhook)
        ;;
        mov     r8=r0
        br.ret.sptk.many rp
-       ;;
 END(mca_handler_bhhook)
index a68ce667809270e17ccb8c44f1f1aa4975501bbb..0766493d4d0061ff99a48de4a2359d2852e24904 100644 (file)
@@ -25,7 +25,7 @@
 #include <asm/processor.h>
 #include <asm/smp.h>
 
-u8 cpu_to_node_map[NR_CPUS] __cacheline_aligned;
+u16 cpu_to_node_map[NR_CPUS] __cacheline_aligned;
 EXPORT_SYMBOL(cpu_to_node_map);
 
 cpumask_t node_to_cpu_mask[MAX_NUMNODES] __cacheline_aligned;
index 6a4ac7d70b357e34901faec54e77009d9d9cd505..bc11bb096f584735fe8220c3f30c9063e9b4a8c2 100644 (file)
@@ -115,7 +115,7 @@ ia64_patch_vtop (unsigned long start, unsigned long end)
        ia64_srlz_i();
 }
 
-void
+void __init
 ia64_patch_mckinley_e9 (unsigned long start, unsigned long end)
 {
        static int first_time = 1;
@@ -149,7 +149,7 @@ ia64_patch_mckinley_e9 (unsigned long start, unsigned long end)
        ia64_srlz_i();
 }
 
-static void
+static void __init
 patch_fsyscall_table (unsigned long start, unsigned long end)
 {
        extern unsigned long fsyscall_table[NR_syscalls];
@@ -166,7 +166,7 @@ patch_fsyscall_table (unsigned long start, unsigned long end)
        ia64_srlz_i();
 }
 
-static void
+static void __init
 patch_brl_fsys_bubble_down (unsigned long start, unsigned long end)
 {
        extern char fsys_bubble_down[];
@@ -184,7 +184,7 @@ patch_brl_fsys_bubble_down (unsigned long start, unsigned long end)
        ia64_srlz_i();
 }
 
-void
+void __init
 ia64_patch_gate (void)
 {
 #      define START(name)      ((unsigned long) __start_gate_##name##_patchlist)
index 958c1508036fc52e6afe77d01940932b86e22f7d..eb388e271b2b5a73746f4454347882c04aa0c8cc 100644 (file)
@@ -130,8 +130,8 @@ EXPORT_SYMBOL(ia64_max_iommu_merge_mask);
 /*
  * We use a special marker for the end of memory and it uses the extra (+1) slot
  */
-struct rsvd_region rsvd_region[IA64_MAX_RSVD_REGIONS + 1];
-int num_rsvd_regions;
+struct rsvd_region rsvd_region[IA64_MAX_RSVD_REGIONS + 1] __initdata;
+int num_rsvd_regions __initdata;
 
 
 /*
@@ -140,7 +140,7 @@ int num_rsvd_regions;
  * caller-specified function is called with the memory ranges that remain after filtering.
  * This routine does not assume the incoming segments are sorted.
  */
-int
+int __init
 filter_rsvd_memory (unsigned long start, unsigned long end, void *arg)
 {
        unsigned long range_start, range_end, prev_start;
@@ -176,7 +176,7 @@ filter_rsvd_memory (unsigned long start, unsigned long end, void *arg)
        return 0;
 }
 
-static void
+static void __init
 sort_regions (struct rsvd_region *rsvd_region, int max)
 {
        int j;
@@ -217,7 +217,7 @@ __initcall(register_memory);
  * initrd, etc.  There are currently %IA64_MAX_RSVD_REGIONS defined,
  * see include/asm-ia64/meminit.h if you need to define more.
  */
-void
+void __init
 reserve_memory (void)
 {
        int n = 0;
@@ -269,7 +269,7 @@ reserve_memory (void)
  * Grab the initrd start and end from the boot parameter struct given us by
  * the boot loader.
  */
-void
+void __init
 find_initrd (void)
 {
 #ifdef CONFIG_BLK_DEV_INITRD
@@ -361,7 +361,7 @@ mark_bsp_online (void)
 }
 
 #ifdef CONFIG_SMP
-static void
+static void __init
 check_for_logical_procs (void)
 {
        pal_logical_to_physical_t info;
@@ -388,6 +388,14 @@ check_for_logical_procs (void)
 }
 #endif
 
+static __initdata int nomca;
+static __init int setup_nomca(char *s)
+{
+       nomca = 1;
+       return 0;
+}
+early_param("nomca", setup_nomca);
+
 void __init
 setup_arch (char **cmdline_p)
 {
@@ -401,35 +409,15 @@ setup_arch (char **cmdline_p)
        efi_init();
        io_port_init();
 
+       parse_early_param();
+
 #ifdef CONFIG_IA64_GENERIC
-       {
-               const char *mvec_name = strstr (*cmdline_p, "machvec=");
-               char str[64];
-
-               if (mvec_name) {
-                       const char *end;
-                &