Merge branch 'linus' of master.kernel.org:/pub/scm/linux/kernel/git/perex/alsa
authorLinus Torvalds <torvalds@woody.linux-foundation.org>
Tue, 16 Oct 2007 17:13:38 +0000 (10:13 -0700)
committerLinus Torvalds <torvalds@woody.linux-foundation.org>
Tue, 16 Oct 2007 17:13:38 +0000 (10:13 -0700)
* 'linus' of master.kernel.org:/pub/scm/linux/kernel/git/perex/alsa: (264 commits)
  [ALSA] version 1.0.15
  [ALSA] Fix thinko in cs4231 mce down check
  [ALSA] sun-cs4231: improved waiting after MCE down
  [ALSA] sun-cs4231: use cs4231-regs.h
  [ALSA] This simplifies and fixes waiting loops of the mce_down()
  [ALSA] This patch adds support for a wavetable chip on
  [ALSA] This patch removes open_mutex from the ad1848-lib as
  [ALSA] fix bootup crash in snd_gus_interrupt()
  [ALSA] hda-codec - Fix SKU ID function for realtek codecs
  [ALSA] Support  ASUS P701 eeepc [0x1043 0x82a1] support
  [ALSA] hda-codec - Add array terminator for dmic in STAC codec
  [ALSA] hdsp - Fix zero division
  [ALSA] usb-audio - Fix double comment
  [ALSA] hda-codec - Fix STAC922x volume knob control
  [ALSA] Changed Jaroslav Kysela's e-mail from perex@suse.cz to perex@perex.cz
  [ALSA] hda-codec - Fix for Fujitsu Lifebook C1410
  [ALSA] mpu-401: remove MPU401_INFO_UART_ONLY flag
  [ALSA] mpu-401: do not require an ACK byte for the ENTER_UART command
  [ALSA] via82xx - Add DXS quirk for Shuttle AK31v2
  [ALSA] hda-codec - Fix input_mux numbers for vaio stac92xx
  ...

850 files changed:
CREDITS
Documentation/DMA-mapping.txt
Documentation/HOWTO
Documentation/block/00-INDEX [new file with mode: 0644]
Documentation/block/as-iosched.txt
Documentation/block/biodoc.txt
Documentation/block/deadline-iosched.txt
Documentation/block/ioprio.txt
Documentation/block/request.txt
Documentation/block/switching-sched.txt
Documentation/cachetlb.txt
Documentation/cpusets.txt
Documentation/fb/00-INDEX
Documentation/fb/uvesafb.txt [new file with mode: 0644]
Documentation/filesystems/Locking
Documentation/filesystems/vfs.txt
Documentation/kernel-parameters.txt
Documentation/spi/spi-summary
Documentation/spi/spidev_test.c
Documentation/vm/numa_memory_policy.txt
Documentation/x86_64/mm.txt
arch/alpha/Makefile
arch/alpha/kernel/entry.S
arch/alpha/kernel/ptrace.c
arch/alpha/kernel/vmlinux.lds.S
arch/alpha/mm/fault.c
arch/arm/kernel/ptrace.c
arch/arm/mach-s3c2410/mach-amlm5900.c
arch/arm/mach-s3c2410/mach-bast.c
arch/arm/mach-s3c2410/mach-h1940.c
arch/arm/mach-s3c2410/mach-qt2410.c
arch/arm/mach-s3c2440/mach-rx3715.c
arch/arm/mach-s3c2440/mach-smdk2440.c
arch/arm/mm/fault.c
arch/avr32/kernel/kprobes.c
arch/avr32/kernel/ptrace.c
arch/avr32/mm/fault.c
arch/blackfin/kernel/ptrace.c
arch/cris/arch-v10/kernel/ptrace.c
arch/cris/arch-v10/kernel/time.c
arch/cris/arch-v32/kernel/ptrace.c
arch/cris/arch-v32/kernel/smp.c
arch/cris/mm/fault.c
arch/frv/kernel/time.c
arch/frv/mm/fault.c
arch/ia64/Kconfig
arch/ia64/hp/common/sba_iommu.c
arch/ia64/hp/sim/simscsi.c
arch/ia64/kernel/gate.lds.S
arch/ia64/kernel/kprobes.c
arch/ia64/kernel/setup.c
arch/ia64/kernel/smpboot.c
arch/ia64/kernel/uncached.c
arch/ia64/mm/discontig.c
arch/ia64/mm/fault.c
arch/ia64/mm/hugetlbpage.c
arch/ia64/mm/init.c
arch/ia64/sn/pci/pci_dma.c
arch/m32r/kernel/ptrace.c
arch/m32r/kernel/time.c
arch/m32r/mm/fault.c
arch/m68k/kernel/ptrace.c
arch/m68k/mm/fault.c
arch/mips/jmr3927/rbhma3100/setup.c
arch/mips/kernel/ptrace.c
arch/mips/mm/fault.c
arch/mips/tx4927/toshiba_rbtx4927/toshiba_rbtx4927_setup.c
arch/parisc/kernel/ptrace.c
arch/parisc/mm/fault.c
arch/powerpc/Kconfig
arch/powerpc/kernel/dma_64.c
arch/powerpc/kernel/ibmebus.c
arch/powerpc/kernel/iommu.c
arch/powerpc/kernel/kprobes.c
arch/powerpc/kernel/ptrace.c
arch/powerpc/kernel/setup-common.c
arch/powerpc/kernel/setup_64.c
arch/powerpc/kernel/smp.c
arch/powerpc/kernel/vdso32/vdso32.lds.S
arch/powerpc/kernel/vdso64/vdso64.lds.S
arch/powerpc/mm/init_64.c
arch/powerpc/mm/mem.c
arch/powerpc/platforms/cell/cbe_cpufreq.c
arch/powerpc/platforms/ps3/system-bus.c
arch/ppc/mm/fault.c
arch/s390/kernel/kprobes.c
arch/s390/kernel/ptrace.c
arch/s390/mm/fault.c
arch/sh/kernel/ptrace.c
arch/sh/kernel/vsyscall/vsyscall.lds.S
arch/sh/mm/fault.c
arch/sh/mm/init.c
arch/sh64/kernel/ptrace.c
arch/sh64/mm/fault.c
arch/sparc/kernel/ioport.c
arch/sparc/mm/fault.c
arch/sparc/mm/io-unit.c
arch/sparc/mm/iommu.c
arch/sparc/mm/sun4c.c
arch/sparc64/Kconfig
arch/sparc64/kernel/iommu.c
arch/sparc64/kernel/kprobes.c
arch/sparc64/kernel/ktlb.S
arch/sparc64/kernel/pci_sun4v.c
arch/sparc64/kernel/smp.c
arch/sparc64/mm/fault.c
arch/sparc64/mm/init.c
arch/um/Kconfig
arch/um/Kconfig.char
arch/um/Kconfig.debug
arch/um/Kconfig.i386
arch/um/Kconfig.net
arch/um/Kconfig.x86_64
arch/um/Makefile
arch/um/Makefile-i386
arch/um/defconfig
arch/um/drivers/Makefile
arch/um/drivers/chan_kern.c
arch/um/drivers/chan_user.c
arch/um/drivers/cow_user.c
arch/um/drivers/daemon.h
arch/um/drivers/daemon_kern.c
arch/um/drivers/daemon_user.c
arch/um/drivers/fd.c
arch/um/drivers/harddog_kern.c
arch/um/drivers/harddog_user.c
arch/um/drivers/hostaudio_kern.c
arch/um/drivers/line.c
arch/um/drivers/mcast.h
arch/um/drivers/mcast_kern.c
arch/um/drivers/mcast_user.c
arch/um/drivers/mconsole_kern.c
arch/um/drivers/mconsole_user.c
arch/um/drivers/mmapper_kern.c
arch/um/drivers/net_kern.c
arch/um/drivers/net_user.c
arch/um/drivers/null.c
arch/um/drivers/pcap_kern.c
arch/um/drivers/pcap_user.c
arch/um/drivers/port_kern.c
arch/um/drivers/port_user.c
arch/um/drivers/pty.c
arch/um/drivers/slip_kern.c
arch/um/drivers/slip_user.c
arch/um/drivers/slirp_kern.c
arch/um/drivers/slirp_user.c
arch/um/drivers/tty.c
arch/um/drivers/ubd_kern.c
arch/um/drivers/vde.h [new file with mode: 0644]
arch/um/drivers/vde_kern.c [new file with mode: 0644]
arch/um/drivers/vde_user.c [new file with mode: 0644]
arch/um/drivers/xterm.c
arch/um/include/arch.h
arch/um/include/as-layout.h
arch/um/include/choose-mode.h [deleted file]
arch/um/include/common-offsets.h
arch/um/include/irq_user.h
arch/um/include/kern_util.h
arch/um/include/mconsole.h
arch/um/include/mem.h
arch/um/include/mode.h [deleted file]
arch/um/include/mode_kern.h [deleted file]
arch/um/include/net_kern.h
arch/um/include/net_user.h
arch/um/include/os.h
arch/um/include/registers.h
arch/um/include/skas/mmu-skas.h [deleted file]
arch/um/include/skas/mode-skas.h
arch/um/include/skas/mode_kern_skas.h [deleted file]
arch/um/include/skas/skas.h
arch/um/include/skas/uaccess-skas.h [deleted file]
arch/um/include/sysdep-i386/kernel-offsets.h
arch/um/include/sysdep-i386/ptrace.h
arch/um/include/sysdep-i386/sigcontext.h
arch/um/include/sysdep-i386/stub.h
arch/um/include/sysdep-i386/thread.h [deleted file]
arch/um/include/sysdep-x86_64/ptrace.h
arch/um/include/sysdep-x86_64/sigcontext.h
arch/um/include/sysdep-x86_64/stub.h
arch/um/include/sysdep-x86_64/thread.h [deleted file]
arch/um/include/task.h
arch/um/include/tlb.h
arch/um/include/tt/debug.h [deleted file]
arch/um/include/tt/mmu-tt.h [deleted file]
arch/um/include/tt/mode-tt.h [deleted file]
arch/um/include/tt/mode_kern_tt.h [deleted file]
arch/um/include/tt/tt.h [deleted file]
arch/um/include/tt/uaccess-tt.h [deleted file]
arch/um/include/um_mmu.h
arch/um/include/um_uaccess.h
arch/um/include/uml_uaccess.h [deleted file]
arch/um/include/user.h
arch/um/kernel/Makefile
arch/um/kernel/dyn.lds.S
arch/um/kernel/exec.c
arch/um/kernel/init_task.c
arch/um/kernel/irq.c
arch/um/kernel/ksyms.c
arch/um/kernel/mem.c
arch/um/kernel/physmem.c
arch/um/kernel/process.c
arch/um/kernel/ptrace.c
arch/um/kernel/reboot.c
arch/um/kernel/signal.c
arch/um/kernel/skas/Makefile
arch/um/kernel/skas/clone.c
arch/um/kernel/skas/exec.c [deleted file]
arch/um/kernel/skas/mem.c [deleted file]
arch/um/kernel/skas/mmu.c
arch/um/kernel/skas/process.c
arch/um/kernel/skas/syscall.c
arch/um/kernel/skas/tlb.c [deleted file]
arch/um/kernel/skas/uaccess.c
arch/um/kernel/smp.c
arch/um/kernel/syscall.c
arch/um/kernel/time.c
arch/um/kernel/tlb.c
arch/um/kernel/trap.c
arch/um/kernel/tt/Makefile [deleted file]
arch/um/kernel/tt/exec_kern.c [deleted file]
arch/um/kernel/tt/exec_user.c [deleted file]
arch/um/kernel/tt/gdb.c [deleted file]
arch/um/kernel/tt/gdb_kern.c [deleted file]
arch/um/kernel/tt/include/mode-tt.h [deleted file]
arch/um/kernel/tt/ksyms.c [deleted file]
arch/um/kernel/tt/mem.c [deleted file]
arch/um/kernel/tt/mem_user.c [deleted file]
arch/um/kernel/tt/process_kern.c [deleted file]
arch/um/kernel/tt/ptproxy/Makefile [deleted file]
arch/um/kernel/tt/ptproxy/proxy.c [deleted file]
arch/um/kernel/tt/ptproxy/ptproxy.h [deleted file]
arch/um/kernel/tt/ptproxy/ptrace.c [deleted file]
arch/um/kernel/tt/ptproxy/sysdep.c [deleted file]
arch/um/kernel/tt/ptproxy/sysdep.h [deleted file]
arch/um/kernel/tt/ptproxy/wait.c [deleted file]
arch/um/kernel/tt/ptproxy/wait.h [deleted file]
arch/um/kernel/tt/syscall_kern.c [deleted file]
arch/um/kernel/tt/syscall_user.c [deleted file]
arch/um/kernel/tt/tlb.c [deleted file]
arch/um/kernel/tt/tracer.c [deleted file]
arch/um/kernel/tt/trap_user.c [deleted file]
arch/um/kernel/tt/uaccess.c [deleted file]
arch/um/kernel/tt/uaccess_user.c [deleted file]
arch/um/kernel/uaccess.c
arch/um/kernel/um_arch.c
arch/um/kernel/uml.lds.S
arch/um/os-Linux/Makefile
arch/um/os-Linux/aio.c
arch/um/os-Linux/drivers/etap.h
arch/um/os-Linux/drivers/ethertap_kern.c
arch/um/os-Linux/drivers/ethertap_user.c
arch/um/os-Linux/drivers/tuntap.h
arch/um/os-Linux/drivers/tuntap_kern.c
arch/um/os-Linux/drivers/tuntap_user.c
arch/um/os-Linux/file.c
arch/um/os-Linux/helper.c
arch/um/os-Linux/irq.c
arch/um/os-Linux/main.c
arch/um/os-Linux/mem.c
arch/um/os-Linux/process.c
arch/um/os-Linux/registers.c [new file with mode: 0644]
arch/um/os-Linux/signal.c
arch/um/os-Linux/skas/mem.c
arch/um/os-Linux/skas/process.c
arch/um/os-Linux/skas/trap.c
arch/um/os-Linux/start_up.c
arch/um/os-Linux/sys-i386/Makefile
arch/um/os-Linux/sys-i386/registers.c
arch/um/os-Linux/sys-x86_64/Makefile
arch/um/os-Linux/sys-x86_64/registers.c
arch/um/os-Linux/time.c
arch/um/os-Linux/tls.c
arch/um/os-Linux/trap.c
arch/um/os-Linux/tt.c [deleted file]
arch/um/os-Linux/uaccess.c
arch/um/os-Linux/umid.c
arch/um/os-Linux/util.c
arch/um/scripts/Makefile.rules
arch/um/sys-i386/Makefile
arch/um/sys-i386/bugs.c
arch/um/sys-i386/fault.c
arch/um/sys-i386/ldt.c
arch/um/sys-i386/ptrace.c
arch/um/sys-i386/ptrace_user.c
arch/um/sys-i386/sigcontext.c [deleted file]
arch/um/sys-i386/signal.c
arch/um/sys-i386/stub.S
arch/um/sys-i386/stub_segv.c
arch/um/sys-i386/tls.c
arch/um/sys-i386/unmap.c [deleted file]
arch/um/sys-i386/user-offsets.c
arch/um/sys-x86_64/Makefile
arch/um/sys-x86_64/bugs.c
arch/um/sys-x86_64/fault.c
arch/um/sys-x86_64/ptrace.c
arch/um/sys-x86_64/sigcontext.c [deleted file]
arch/um/sys-x86_64/signal.c
arch/um/sys-x86_64/stub.S
arch/um/sys-x86_64/stub_segv.c
arch/um/sys-x86_64/syscalls.c
arch/um/sys-x86_64/tls.c
arch/um/sys-x86_64/unmap.c [deleted file]
arch/um/sys-x86_64/user-offsets.c
arch/v850/kernel/fpga85e2c.c
arch/v850/kernel/time.c
arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c
arch/x86/kernel/cpu/cpufreq/p4-clockmod.c
arch/x86/kernel/cpu/cpufreq/powernow-k8.c
arch/x86/kernel/cpu/cpufreq/speedstep-ich.c
arch/x86/kernel/cpu/proc.c
arch/x86/kernel/io_apic_32.c
arch/x86/kernel/kprobes_32.c
arch/x86/kernel/kprobes_64.c
arch/x86/kernel/mce_amd_64.c
arch/x86/kernel/pci-calgary_64.c
arch/x86/kernel/pci-gart_64.c
arch/x86/kernel/pci-nommu_64.c
arch/x86/kernel/process_64.c
arch/x86/kernel/ptrace_32.c
arch/x86/kernel/ptrace_64.c
arch/x86/kernel/setup_64.c
arch/x86/kernel/smpboot_32.c
arch/x86/kernel/smpboot_64.c
arch/x86/mm/fault_32.c
arch/x86/mm/fault_64.c
arch/x86/mm/init_32.c
arch/x86/mm/init_64.c
arch/x86/oprofile/op_model_p4.c
arch/x86/xen/smp.c
arch/x86_64/Kconfig
arch/xtensa/kernel/ptrace.c
arch/xtensa/mm/fault.c
block/blktrace.c
block/bsg.c
block/elevator.c
block/ll_rw_blk.c
crypto/digest.c
crypto/scatterwalk.c
crypto/scatterwalk.h
drivers/Kconfig
drivers/Makefile
drivers/ata/libata-core.c
drivers/ata/libata-scsi.c
drivers/base/memory.c
drivers/base/node.c
drivers/block/cciss.c
drivers/block/cpqarray.c
drivers/block/loop.c
drivers/block/pktcdvd.c
drivers/block/ps3disk.c
drivers/char/Kconfig
drivers/char/agp/Kconfig
drivers/char/drm/Kconfig
drivers/char/drm/radeon_irq.c
drivers/char/mem.c
drivers/char/mspec.c
drivers/char/vt.c
drivers/char/vt_ioctl.c
drivers/dca/Kconfig [new file with mode: 0644]
drivers/dca/Makefile [new file with mode: 0644]
drivers/dca/dca-core.c [new file with mode: 0644]
drivers/dca/dca-sysfs.c [new file with mode: 0644]
drivers/dma/Kconfig
drivers/dma/Makefile
drivers/dma/ioat.c [new file with mode: 0644]
drivers/dma/ioat_dca.c [new file with mode: 0644]
drivers/dma/ioat_dma.c [moved from drivers/dma/ioatdma.c with 55% similarity]
drivers/dma/ioatdma.h
drivers/dma/ioatdma_hw.h
drivers/dma/ioatdma_registers.h
drivers/ide/cris/ide-cris.c
drivers/ide/ide-disk.c
drivers/ide/ide-dma.c
drivers/ide/ide-io.c
drivers/ide/ide-probe.c
drivers/ide/ide-taskfile.c
drivers/ide/mips/au1xxx-ide.c
drivers/ide/pci/sgiioc4.c
drivers/ide/ppc/pmac.c
drivers/infiniband/hw/ipath/ipath_dma.c
drivers/infiniband/ulp/iser/iser_memory.c
drivers/isdn/capi/capidrv.c
drivers/isdn/capi/kcapi.c
drivers/isdn/gigaset/bas-gigaset.c
drivers/isdn/gigaset/i4l.c
drivers/isdn/gigaset/proc.c
drivers/isdn/gigaset/usb-gigaset.c
drivers/isdn/i4l/isdn_common.c
drivers/md/dm-crypt.c
drivers/md/dm-table.c
drivers/md/dm.c
drivers/md/dm.h
drivers/md/linear.c
drivers/md/md.c
drivers/md/multipath.c
drivers/md/raid0.c
drivers/md/raid1.c
drivers/md/raid10.c
drivers/md/raid5.c
drivers/message/fusion/mptscsih.c
drivers/message/i2o/i2o_block.c
drivers/mmc/card/queue.c
drivers/mmc/host/mmc_spi.c
drivers/pcmcia/Kconfig
drivers/pcmcia/au1000_xxs1500.c
drivers/pcmcia/cistpl.c
drivers/pcmcia/ds.c
drivers/pcmcia/pxa2xx_base.c
drivers/ps3/ps3av.c
drivers/ps3/ps3av_cmd.c
drivers/rtc/Kconfig
drivers/rtc/Makefile
drivers/rtc/class.c
drivers/rtc/interface.c
drivers/rtc/rtc-cmos.c
drivers/rtc/rtc-dev.c
drivers/rtc/rtc-ds1374.c [new file with mode: 0644]
drivers/rtc/rtc-ds1553.c
drivers/rtc/rtc-ds1742.c
drivers/rtc/rtc-pcf8583.c
drivers/rtc/rtc-sysfs.c
drivers/s390/scsi/zfcp_def.h
drivers/s390/scsi/zfcp_qdio.c
drivers/scsi/3w-9xxx.c
drivers/scsi/3w-xxxx.c
drivers/scsi/BusLogic.c
drivers/scsi/NCR53c406a.c
drivers/scsi/a100u2w.c
drivers/scsi/aacraid/linit.c
drivers/scsi/aha1542.c
drivers/scsi/aha1740.c
drivers/scsi/aic7xxx/aic79xx_osm.c
drivers/scsi/aic7xxx/aic7xxx_osm.c
drivers/scsi/aic7xxx_old.c
drivers/scsi/aic94xx/aic94xx_task.c
drivers/scsi/arcmsr/arcmsr_hba.c
drivers/scsi/dc395x.c
drivers/scsi/dpt_i2o.c
drivers/scsi/eata.c
drivers/scsi/hosts.c
drivers/scsi/hptiop.c
drivers/scsi/ibmmca.c
drivers/scsi/ibmvscsi/ibmvscsi.c
drivers/scsi/ide-scsi.c
drivers/scsi/initio.c
drivers/scsi/ips.c
drivers/scsi/lpfc/lpfc_scsi.c
drivers/scsi/mac53c94.c
drivers/scsi/mac_scsi.c
drivers/scsi/megaraid.c
drivers/scsi/megaraid/megaraid_mbox.c
drivers/scsi/megaraid/megaraid_sas.c
drivers/scsi/mesh.c
drivers/scsi/nsp32.c
drivers/scsi/pcmcia/sym53c500_cs.c
drivers/scsi/qla1280.c
drivers/scsi/qla2xxx/qla_os.c
drivers/scsi/qla4xxx/ql4_os.c
drivers/scsi/qlogicfas.c
drivers/scsi/qlogicpti.c
drivers/scsi/scsi_debug.c
drivers/scsi/scsi_lib.c
drivers/scsi/scsi_tgt_lib.c
drivers/scsi/sd.c
drivers/scsi/sg.c
drivers/scsi/stex.c
drivers/scsi/sym53c416.c
drivers/scsi/sym53c8xx_2/sym_glue.c
drivers/scsi/u14-34f.c
drivers/scsi/ultrastor.c
drivers/scsi/wd7000.c
drivers/serial/8250_pci.c
drivers/serial/8250_pnp.c
drivers/serial/crisv10.c
drivers/serial/m32r_sio.c
drivers/serial/m32r_sio.h
drivers/serial/serial_core.c
drivers/serial/serial_cs.c
drivers/serial/serial_txx9.c
drivers/spi/Kconfig
drivers/spi/atmel_spi.c
drivers/spi/mpc52xx_psc_spi.c
drivers/spi/omap2_mcspi.c
drivers/spi/omap_uwire.c
drivers/spi/pxa2xx_spi.c
drivers/spi/spi.c
drivers/spi/spi_bfin5xx.c
drivers/spi/spi_bitbang.c
drivers/spi/spi_imx.c
drivers/spi/spi_lm70llp.c
drivers/spi/spi_mpc83xx.c
drivers/spi/spi_s3c24xx.c
drivers/spi/spi_txx9.c
drivers/usb/core/hub.c
drivers/usb/misc/sisusbvga/sisusb_con.c
drivers/usb/storage/alauda.c
drivers/usb/storage/datafab.c
drivers/usb/storage/jumpshot.c
drivers/usb/storage/protocol.c
drivers/usb/storage/protocol.h
drivers/usb/storage/sddr09.c
drivers/usb/storage/sddr55.c
drivers/usb/storage/shuttle_usbat.c
drivers/video/Kconfig
drivers/video/Makefile
drivers/video/amifb.c
drivers/video/arcfb.c
drivers/video/atafb.c
drivers/video/aty/ati_ids.h
drivers/video/aty/aty128fb.c
drivers/video/aty/atyfb.h
drivers/video/aty/atyfb_base.c
drivers/video/aty/mach64_cursor.c
drivers/video/aty/radeon_base.c
drivers/video/aty/radeonfb.h
drivers/video/backlight/cr_bllcd.c
drivers/video/backlight/progear_bl.c
drivers/video/bf54x-lq043fb.c [new file with mode: 0644]
drivers/video/cfbcopyarea.c
drivers/video/cfbfillrect.c
drivers/video/cfbimgblt.c
drivers/video/cirrusfb.c
drivers/video/clps711xfb.c
drivers/video/console/fbcon.c
drivers/video/console/font_10x18.c
drivers/video/console/font_6x11.c
drivers/video/console/font_7x14.c
drivers/video/console/font_8x16.c
drivers/video/console/font_8x8.c
drivers/video/console/font_acorn_8x8.c
drivers/video/console/font_mini_4x6.c
drivers/video/console/font_pearl_8x8.c
drivers/video/console/font_sun12x22.c
drivers/video/console/font_sun8x16.c
drivers/video/console/newport_con.c
drivers/video/console/softcursor.c
drivers/video/console/vgacon.c
drivers/video/cyber2000fb.c
drivers/video/epson1355fb.c
drivers/video/fb_defio.c
drivers/video/fb_draw.h
drivers/video/fb_sys_fops.c
drivers/video/fbcmap.c
drivers/video/fbmem.c
drivers/video/fbmon.c
drivers/video/geode/lxfb_core.c
drivers/video/hecubafb.c
drivers/video/imsttfb.c
drivers/video/imxfb.c
drivers/video/intelfb/intelfb.h
drivers/video/intelfb/intelfb_i2c.c
drivers/video/intelfb/intelfbdrv.c
drivers/video/intelfb/intelfbhw.c
drivers/video/intelfb/intelfbhw.h
drivers/video/kyro/fbdev.c
drivers/video/logo/logo.c
drivers/video/matrox/matroxfb_base.c
drivers/video/matrox/matroxfb_crtc2.c
drivers/video/matrox/matroxfb_g450.c
drivers/video/matrox/matroxfb_maven.c
drivers/video/mbx/mbxfb.c
drivers/video/mbx/reg_bits.h
drivers/video/mbx/regs.h
drivers/video/modedb.c
drivers/video/neofb.c
drivers/video/nvidia/nv_i2c.c
drivers/video/nvidia/nv_type.h
drivers/video/nvidia/nvidia.c
drivers/video/pm2fb.c
drivers/video/pm3fb.c
drivers/video/pmag-ba-fb.c
drivers/video/pmagb-b-fb.c
drivers/video/pnx4008/pnxrgbfb.c
drivers/video/ps3fb.c
drivers/video/pvr2fb.c
drivers/video/pxafb.c
drivers/video/pxafb.h
drivers/video/s3c2410fb.c
drivers/video/s3c2410fb.h
drivers/video/s3fb.c
drivers/video/sa1100fb.c
drivers/video/savage/savagefb_driver.c
drivers/video/sis/sis_main.c
drivers/video/skeletonfb.c
drivers/video/sm501fb.c
drivers/video/sstfb.c
drivers/video/svgalib.c
drivers/video/tdfxfb.c
drivers/video/tgafb.c
drivers/video/tridentfb.c
drivers/video/uvesafb.c [new file with mode: 0644]
drivers/video/vermilion/vermilion.c
drivers/video/vfb.c
fs/adfs/inode.c
fs/affs/file.c
fs/bfs/file.c
fs/binfmt_elf.c
fs/binfmt_elf_fdpic.c
fs/bio.c
fs/block_dev.c
fs/buffer.c
fs/configfs/inode.c
fs/dcache.c
fs/debugfs/file.c
fs/direct-io.c
fs/ecryptfs/Makefile
fs/ecryptfs/crypto.c
fs/ecryptfs/debug.c
fs/ecryptfs/ecryptfs_kernel.h
fs/ecryptfs/file.c
fs/ecryptfs/inode.c
fs/ecryptfs/keystore.c
fs/ecryptfs/main.c
fs/ecryptfs/messaging.c
fs/ecryptfs/mmap.c
fs/ecryptfs/read_write.c [new file with mode: 0644]
fs/ecryptfs/super.c
fs/ext2/dir.c
fs/ext2/ext2.h
fs/ext2/inode.c
fs/ext3/dir.c
fs/ext3/inode.c
fs/ext4/dir.c
fs/ext4/inode.c
fs/fat/inode.c
fs/fuse/file.c
fs/gfs2/ops_address.c
fs/hfs/extent.c
fs/hfs/inode.c
fs/hfsplus/extents.c
fs/hfsplus/inode.c
fs/hostfs/hostfs.h
fs/hostfs/hostfs_kern.c
fs/hostfs/hostfs_user.c
fs/hpfs/file.c
fs/hugetlbfs/inode.c
fs/inode.c
fs/jbd/journal.c
fs/jbd/revoke.c
fs/jffs2/file.c
fs/jfs/inode.c
fs/libfs.c
fs/minix/dir.c
fs/minix/inode.c
fs/minix/minix.h
fs/mpage.c
fs/namei.c
fs/nfs/file.c
fs/nfsd/export.c
fs/ocfs2/aops.c
fs/ocfs2/aops.h
fs/ocfs2/file.c
fs/proc/base.c
fs/proc/generic.c
fs/proc/proc_misc.c
fs/qnx4/inode.c
fs/ramfs/file-mmu.c
fs/ramfs/file-nommu.c
fs/reiserfs/file.c
fs/reiserfs/inode.c
fs/reiserfs/ioctl.c
fs/reiserfs/xattr.c
fs/smbfs/file.c
fs/splice.c
fs/sysfs/inode.c
fs/sysv/dir.c
fs/sysv/itree.c
fs/sysv/sysv.h
fs/udf/file.c
fs/udf/inode.c
fs/ufs/dir.c
fs/ufs/inode.c
fs/ufs/util.h
fs/xfs/linux-2.6/xfs_aops.c
fs/xfs/linux-2.6/xfs_lrw.c
include/asm-alpha/page.h
include/asm-alpha/ptrace.h
include/asm-arm/arch-imx/imxfb.h
include/asm-arm/arch-pxa/pxa-regs.h
include/asm-arm/arch-pxa/pxafb.h
include/asm-arm/arch-s3c2410/fb.h
include/asm-avr32/kdebug.h
include/asm-avr32/kprobes.h
include/asm-blackfin/mach-bf548/bf54x-lq043.h [new file with mode: 0644]
include/asm-frv/thread_info.h
include/asm-frv/tlbflush.h
include/asm-generic/memory_model.h
include/asm-generic/pgtable.h
include/asm-ia64/dma-mapping.h
include/asm-ia64/kdebug.h
include/asm-ia64/kprobes.h
include/asm-ia64/pgtable.h
include/asm-ia64/scatterlist.h
include/asm-ia64/smp.h
include/asm-ia64/topology.h
include/asm-m32r/ptrace.h
include/asm-m32r/thread_info.h
include/asm-m68knommu/system.h
include/asm-mips/xxs1500.h [deleted file]
include/asm-powerpc/dma-mapping.h
include/asm-powerpc/kdebug.h
include/asm-powerpc/kprobes.h
include/asm-powerpc/pgtable-ppc64.h
include/asm-powerpc/ps3av.h
include/asm-powerpc/scatterlist.h
include/asm-powerpc/smp.h
include/asm-powerpc/topology.h
include/asm-s390/kdebug.h
include/asm-s390/kprobes.h
include/asm-sh/kdebug.h
include/asm-sparc/scatterlist.h
include/asm-sparc64/kdebug.h
include/asm-sparc64/kprobes.h
include/asm-sparc64/pgtable.h
include/asm-sparc64/scatterlist.h
include/asm-sparc64/smp.h
include/asm-sparc64/topology.h
include/asm-um/a.out.h
include/asm-um/elf-i386.h
include/asm-um/elf-x86_64.h
include/asm-um/ldt.h
include/asm-um/mmu_context.h
include/asm-um/page.h
include/asm-um/pgalloc.h
include/asm-um/pgtable-3level.h
include/asm-um/processor-generic.h
include/asm-um/processor-x86_64.h
include/asm-um/ptrace-generic.h
include/asm-um/ptrace-i386.h
include/asm-um/ptrace-x86_64.h
include/asm-um/smp.h
include/asm-um/tlbflush.h
include/asm-um/uaccess.h
include/asm-x86/cpufeature_32.h
include/asm-x86/dma-mapping_32.h
include/asm-x86/dma-mapping_64.h
include/asm-x86/kdebug_32.h
include/asm-x86/kdebug_64.h
include/asm-x86/kprobes_32.h
include/asm-x86/kprobes_64.h
include/asm-x86/page_64.h
include/asm-x86/pgtable_64.h
include/asm-x86/scatterlist_32.h
include/asm-x86/scatterlist_64.h
include/asm-x86/smp_32.h
include/asm-x86/smp_64.h
include/asm-x86/topology_32.h
include/asm-x86/topology_64.h
include/linux/bio.h
include/linux/bitops.h
include/linux/blkdev.h
include/linux/buffer_head.h
include/linux/connector.h
include/linux/console.h
include/linux/console_struct.h
include/linux/cpuset.h
include/linux/dca.h [new file with mode: 0644]
include/linux/dma-mapping.h
include/linux/fb.h
include/linux/fs.h
include/linux/gfp.h
include/linux/hugetlb.h
include/linux/i2o.h
include/linux/ide.h
include/linux/init.h
include/linux/interrupt.h
include/linux/ioport.h
include/linux/isdn.h
include/linux/jbd.h
include/linux/jiffies.h
include/linux/kernel.h
include/linux/kprobes.h
include/linux/libata.h
include/linux/memory_hotplug.h
include/linux/mempolicy.h
include/linux/mm.h
include/linux/mm_types.h
include/linux/mmzone.h
include/linux/nfsd/export.h
include/linux/nodemask.h
include/linux/page-isolation.h [new file with mode: 0644]
include/linux/pageblock-flags.h [new file with mode: 0644]
include/linux/pagemap.h
include/linux/pci_ids.h
include/linux/radix-tree.h
include/linux/scatterlist.h
include/linux/sched.h
include/linux/selection.h
include/linux/serial_core.h
include/linux/slab.h
include/linux/slub_def.h
include/linux/sm501-regs.h
include/linux/spi/spi.h
include/linux/usb/gadget.h
include/pcmcia/ds.h
include/scsi/scsi.h
include/scsi/scsi_cmnd.h
include/scsi/scsi_host.h
include/video/Kbuild
include/video/mbxfb.h
include/video/permedia2.h
include/video/pm3fb.h
include/video/tdfx.h
include/video/uvesafb.h [new file with mode: 0644]
init/calibrate.c
kernel/cpuset.c
kernel/kprobes.c
kernel/printk.c
kernel/profile.c
kernel/ptrace.c
kernel/resource.c
kernel/sched.c
kernel/sysctl.c
kernel/time.c
kernel/time/timekeeping.c
lib/Kconfig.debug
lib/radix-tree.c
lib/swiotlb.c
mm/Kconfig
mm/Makefile
mm/bounce.c
mm/filemap.c
mm/filemap.h [deleted file]
mm/filemap_xip.c
mm/hugetlb.c
mm/internal.h
mm/memory.c
mm/memory_hotplug.c
mm/mempolicy.c
mm/migrate.c
mm/mprotect.c
mm/oom_kill.c
mm/page-writeback.c
mm/page_alloc.c
mm/page_isolation.c [new file with mode: 0644]
mm/readahead.c
mm/rmap.c
mm/shmem.c
mm/slab.c
mm/slob.c
mm/slub.c
mm/sparse-vmemmap.c [new file with mode: 0644]
mm/sparse.c
mm/swap.c
mm/swap_state.c
mm/util.c
mm/vmalloc.c
mm/vmscan.c
mm/vmstat.c
net/sunrpc/xprtrdma/verbs.c

diff --git a/CREDITS b/CREDITS
index cf919aaacc9f4c768b604d0190d20d0db8e8e609..08feda2667d031a079b1866f26f8fccce5baef0e 100644 (file)
--- a/CREDITS
+++ b/CREDITS
@@ -2702,7 +2702,7 @@ S: Canada K2P 0X8
 
 N: Mikael Pettersson
 E: mikpe@it.uu.se
-W: http://www.csd.uu.se/~mikpe/
+W: http://user.it.uu.se/~mikpe/linux/
 D: Miscellaneous fixes
 
 N: Reed H. Petty
index e07f2530326b3afcbe69e77720833435e75e57d7..3c8ae020b6a7e3aeb183a5690ea3f0938c66c4f0 100644 (file)
@@ -514,7 +514,7 @@ With scatterlists, you map a region gathered from several regions by:
        int i, count = pci_map_sg(dev, sglist, nents, direction);
        struct scatterlist *sg;
 
-       for (i = 0, sg = sglist; i < count; i++, sg++) {
+       for_each_sg(sglist, sg, count, i) {
                hw_address[i] = sg_dma_address(sg);
                hw_len[i] = sg_dma_len(sg);
        }
@@ -782,5 +782,5 @@ following people:
        Jay Estabrook <Jay.Estabrook@compaq.com>
        Thomas Sailer <sailer@ife.ee.ethz.ch>
        Andrea Arcangeli <andrea@suse.de>
-       Jens Axboe <axboe@suse.de>
+       Jens Axboe <jens.axboe@oracle.com>
        David Mosberger-Tang <davidm@hpl.hp.com>
index c64e969dc33bb6e511f78984c007052e9b6cbc54..dceb3092149821029161477756d0871a72b8e4dc 100644 (file)
@@ -330,7 +330,7 @@ Here is a list of some of the different kernel trees available:
     - ACPI development tree, Len Brown <len.brown@intel.com>
        git.kernel.org:/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6.git
 
-    - Block development tree, Jens Axboe <axboe@suse.de>
+    - Block development tree, Jens Axboe <jens.axboe@oracle.com>
        git.kernel.org:/pub/scm/linux/kernel/git/axboe/linux-2.6-block.git
 
     - DRM development tree, Dave Airlie <airlied@linux.ie>
diff --git a/Documentation/block/00-INDEX b/Documentation/block/00-INDEX
new file mode 100644 (file)
index 0000000..961a051
--- /dev/null
@@ -0,0 +1,20 @@
+00-INDEX
+       - This file
+as-iosched.txt
+       - Anticipatory IO scheduler
+barrier.txt
+       - I/O Barriers
+biodoc.txt
+       - Notes on the Generic Block Layer Rewrite in Linux 2.5
+capability.txt
+       - Generic Block Device Capability (/sys/block/<disk>/capability)
+deadline-iosched.txt
+       - Deadline IO scheduler tunables
+ioprio.txt
+       - Block io priorities (in CFQ scheduler)
+request.txt
+       - The members of struct request (in include/linux/blkdev.h)
+stat.txt
+       - Block layer statistics in /sys/block/<dev>/stat
+switching-sched.txt
+       - Switching I/O schedulers at runtime
index a598fe10a2974f5757761df5ab8f7f98c5c5f84a..738b72be128e3015c4ee80d9923a283cac20877e 100644 (file)
@@ -20,15 +20,10 @@ actually has a head for each physical device in the logical RAID device.
 However, setting the antic_expire (see tunable parameters below) produces
 very similar behavior to the deadline IO scheduler.
 
-
 Selecting IO schedulers
 -----------------------
-To choose IO schedulers at boot time, use the argument 'elevator=deadline'.
-'noop', 'as' and 'cfq' (the default) are also available. IO schedulers are
-assigned globally at boot time only presently. It's also possible to change
-the IO scheduler for a determined device on the fly, as described in
-Documentation/block/switching-sched.txt.
-
+Refer to Documentation/block/switching-sched.txt for information on
+selecting an io scheduler on a per-device basis.
 
 Anticipatory IO scheduler Policies
 ----------------------------------
@@ -115,7 +110,7 @@ statistics (average think time, average seek distance) on the process
 that submitted the just completed request are examined.  If it seems
 likely that that process will submit another request soon, and that
 request is likely to be near the just completed request, then the IO
-scheduler will stop dispatching more read requests for up time (antic_expire)
+scheduler will stop dispatching more read requests for up to (antic_expire)
 milliseconds, hoping that process will submit a new request near the one
 that just completed.  If such a request is made, then it is dispatched
 immediately.  If the antic_expire wait time expires, then the IO scheduler
@@ -165,3 +160,13 @@ The parameters are:
     for big seek time devices though not a linear correspondence - most
     processes have only a few ms thinktime.
 
+In addition to the tunables above there is a read-only file named est_time
+which, when read, will show:
+
+    - The probability of a task exiting without a cooperating task
+      submitting an anticipated IO.
+
+    - The current mean think time.
+
+    - The seek distance used to determine if an incoming IO is better.
+
index dc3f49e3e5392891f10d700567363b3446358b67..93f223b9723f8c66d81e92edd290f607d5469c34 100644 (file)
@@ -2,7 +2,7 @@
        =====================================================
 
 Notes Written on Jan 15, 2002:
-       Jens Axboe <axboe@suse.de>
+       Jens Axboe <jens.axboe@oracle.com>
        Suparna Bhattacharya <suparna@in.ibm.com>
 
 Last Updated May 2, 2002
@@ -21,7 +21,7 @@ Credits:
 ---------
 
 2.5 bio rewrite:
-       Jens Axboe <axboe@suse.de>
+       Jens Axboe <jens.axboe@oracle.com>
 
 Many aspects of the generic block layer redesign were driven by and evolved
 over discussions, prior patches and the collective experience of several
index be08ffd1e9b82a52504c05ad657ebb4bd895d80b..c23cab13c3d1403a1a2f599a6b26b461296d2234 100644 (file)
@@ -5,16 +5,10 @@ This little file attempts to document how the deadline io scheduler works.
 In particular, it will clarify the meaning of the exposed tunables that may be
 of interest to power users.
 
-Each io queue has a set of io scheduler tunables associated with it. These
-tunables control how the io scheduler works. You can find these entries
-in:
-
-/sys/block/<device>/queue/iosched
-
-assuming that you have sysfs mounted on /sys. If you don't have sysfs mounted,
-you can do so by typing:
-
-# mount none /sys -t sysfs
+Selecting IO schedulers
+-----------------------
+Refer to Documentation/block/switching-sched.txt for information on
+selecting an io scheduler on a per-device basis.
 
 
 ********************************************************************************
@@ -41,14 +35,11 @@ fifo_batch
 
 When a read request expires its deadline, we must move some requests from
 the sorted io scheduler list to the block device dispatch queue. fifo_batch
-controls how many requests we move, based on the cost of each request. A
-request is either qualified as a seek or a stream. The io scheduler knows
-the last request that was serviced by the drive (or will be serviced right
-before this one). See seek_cost and stream_unit.
+controls how many requests we move.
 
 
-write_starved  (number of dispatches)
--------------
+writes_starved (number of dispatches)
+--------------
 
 When we have to move requests from the io scheduler queue to the block
 device dispatch queue, we always give a preference to reads. However, we
@@ -73,6 +64,6 @@ that comes at basically 0 cost we leave that on. We simply disable the
 rbtree front sector lookup when the io scheduler merge function is called.
 
 
-Nov 11 2002, Jens Axboe <axboe@suse.de>
+Nov 11 2002, Jens Axboe <jens.axboe@oracle.com>
 
 
index 35e516b0b8a9935b91f2c15ab56685b111f1a1d1..8ed8c59380b4056155bbd9a113e455ff038c1ca9 100644 (file)
@@ -180,4 +180,4 @@ int main(int argc, char *argv[])
 ---> snip ionice.c tool <---
 
 
-March 11 2005, Jens Axboe <axboe@suse.de>
+March 11 2005, Jens Axboe <jens.axboe@oracle.com>
index fff58acb40a3b78ebf9af914a7822ccdc0d321c2..754e104ed3699452f36f636bd234d425f87dbad7 100644 (file)
@@ -1,7 +1,7 @@
 
 struct request documentation
 
-Jens Axboe <axboe@suse.de> 27/05/02
+Jens Axboe <jens.axboe@oracle.com> 27/05/02
 
 1.0
 Index
index 5fa130a675312fe9c59a2f0135411ca2bab785d5..634c952e19648b6e5474ff938208852a89a254cb 100644 (file)
@@ -1,3 +1,18 @@
+To choose IO schedulers at boot time, use the argument 'elevator=deadline'.
+'noop', 'as' and 'cfq' (the default) are also available. IO schedulers are
+assigned globally at boot time only presently.
+
+Each io queue has a set of io scheduler tunables associated with it. These
+tunables control how the io scheduler works. You can find these entries
+in:
+
+/sys/block/<device>/queue/iosched
+
+assuming that you have sysfs mounted on /sys. If you don't have sysfs mounted,
+you can do so by typing:
+
+# mount none /sys -t sysfs
+
 As of the Linux 2.6.10 kernel, it is now possible to change the
 IO scheduler for a given block device on the fly (thus making it possible,
 for instance, to set the CFQ scheduler for the system default, but
@@ -20,3 +35,9 @@ noop anticipatory deadline [cfq]
 # echo anticipatory > /sys/block/hda/queue/scheduler
 # cat /sys/block/hda/queue/scheduler
 noop [anticipatory] deadline cfq
+
+Each io queue has a set of io scheduler tunables associated with it. These
+tunables control how the io scheduler works. You can find these entries
+in:
+
+/sys/block/<device>/queue/iosched
index 866b76139420b2b22d25255b136f378b6186d52c..552cabac06082c460c55befab72b637724c86cd5 100644 (file)
@@ -133,12 +133,6 @@ changes occur:
        The ia64 sn2 platform is one example of a platform
        that uses this interface.
 
-8) void lazy_mmu_prot_update(pte_t pte)
-       This interface is called whenever the protection on
-       any user PTEs change.  This interface provides a notification
-       to architecture specific code to take appropriate action.
-
-
 Next, we have the cache flushing interfaces.  In general, when Linux
 is changing an existing virtual-->physical mapping to a new value,
 the sequence will be in one of the following forms:
index f2c0a684293021a625e34db1b0b632c066b09304..ec9de6917f01f34c088cd612121caaadc3edf08b 100644 (file)
@@ -35,7 +35,8 @@ CONTENTS:
 ----------------------
 
 Cpusets provide a mechanism for assigning a set of CPUs and Memory
-Nodes to a set of tasks.
+Nodes to a set of tasks.   In this document "Memory Node" refers to
+an on-line node that contains memory.
 
 Cpusets constrain the CPU and Memory placement of tasks to only
 the resources within a tasks current cpuset.  They form a nested
@@ -86,9 +87,6 @@ This can be especially valuable on:
       and a database), or
     * NUMA systems running large HPC applications with demanding
       performance characteristics.
-    * Also cpu_exclusive cpusets are useful for servers running orthogonal
-      workloads such as RT applications requiring low latency and HPC
-      applications that are throughput sensitive
 
 These subsets, or "soft partitions" must be able to be dynamically
 adjusted, as the job mix changes, without impacting other concurrently
@@ -131,8 +129,6 @@ Cpusets extends these two mechanisms as follows:
  - A cpuset may be marked exclusive, which ensures that no other
    cpuset (except direct ancestors and descendents) may contain
    any overlapping CPUs or Memory Nodes.
-   Also a cpu_exclusive cpuset would be associated with a sched
-   domain.
  - You can list all the tasks (by pid) attached to any cpuset.
 
 The implementation of cpusets requires a few, simple hooks
@@ -144,9 +140,6 @@ into the rest of the kernel, none in performance critical paths:
    allowed in that tasks cpuset.
  - in sched.c migrate_all_tasks(), to keep migrating tasks within
    the CPUs allowed by their cpuset, if possible.
- - in sched.c, a new API partition_sched_domains for handling
-   sched domain changes associated with cpu_exclusive cpusets
-   and related changes in both sched.c and arch/ia64/kernel/domain.c
  - in the mbind and set_mempolicy system calls, to mask the requested
    Memory Nodes by what's allowed in that tasks cpuset.
  - in page_alloc.c, to restrict memory to allowed nodes.
@@ -220,8 +213,8 @@ and name space for cpusets, with a minimum of additional kernel code.
 The cpus and mems files in the root (top_cpuset) cpuset are
 read-only.  The cpus file automatically tracks the value of
 cpu_online_map using a CPU hotplug notifier, and the mems file
-automatically tracks the value of node_online_map using the
-cpuset_track_online_nodes() hook.
+automatically tracks the value of node_states[N_MEMORY]--i.e.,
+nodes with memory--using the cpuset_track_online_nodes() hook.
 
 
 1.4 What are exclusive cpusets ?
@@ -231,15 +224,6 @@ If a cpuset is cpu or mem exclusive, no other cpuset, other than
 a direct ancestor or descendent, may share any of the same CPUs or
 Memory Nodes.
 
-A cpuset that is cpu_exclusive has a scheduler (sched) domain
-associated with it.  The sched domain consists of all CPUs in the
-current cpuset that are not part of any exclusive child cpusets.
-This ensures that the scheduler load balancing code only balances
-against the CPUs that are in the sched domain as defined above and
-not all of the CPUs in the system. This removes any overhead due to
-load balancing code trying to pull tasks outside of the cpu_exclusive
-cpuset only to be prevented by the tasks' cpus_allowed mask.
-
 A cpuset that is mem_exclusive restricts kernel allocations for
 page, buffer and other data commonly shared by the kernel across
 multiple users.  All cpusets, whether mem_exclusive or not, restrict
index 92e89aeef52e6c31122f01d671622dba18424733..caabbd395e6194c117444e538605af9582c7c392 100644 (file)
@@ -5,21 +5,49 @@ please mail me.
 
 00-INDEX
        - this file
+arkfb.txt
+       - info on the fbdev driver for ARK Logic chips.
+aty128fb.txt
+       - info on the ATI Rage128 frame buffer driver.
+cirrusfb.txt
+       - info on the driver for Cirrus Logic chipsets.
+cyblafb/
+       - directory with documentation files related to the cyblafb driver.
+deferred_io.txt
+       - an introduction to deferred IO.
+fbcon.txt
+       - intro to and usage guide for the framebuffer console (fbcon).
 framebuffer.txt
-       - introduction to frame buffer devices
+       - introduction to frame buffer devices.
+imacfb.txt
+       - info on the generic EFI platform driver for Intel based Macs.
+intel810.txt
+       - documentation for the Intel 810/815 framebuffer driver.
+intelfb.txt
+       - docs for Intel 830M/845G/852GM/855GM/865G/915G/945G fb driver.
 internals.txt
-       - quick overview of frame buffer device internals
+       - quick overview of frame buffer device internals.
+matroxfb.txt
+       - info on the Matrox framebuffer driver for Alpha, Intel and PPC.
 modedb.txt
-       - info on the video mode database
-aty128fb.txt
-       - info on the ATI Rage128 frame buffer driver
-clgenfb.txt
-       - info on the Cirrus Logic frame buffer driver
+       - info on the video mode database.
 matroxfb.txt
-       - info on the Matrox frame buffer driver
+       - info on the Matrox frame buffer driver.
 pvr2fb.txt
-       - info on the PowerVR 2 frame buffer driver
+       - info on the PowerVR 2 frame buffer driver.
+pxafb.txt
+       - info on the driver for the PXA25x LCD controller.
+s3fb.txt
+       - info on the fbdev driver for S3 Trio/Virge chips.
+sa1100fb.txt
+       - information about the driver for the SA-1100 LCD controller.
+sisfb.txt
+       - info on the framebuffer device driver for various SiS chips.
+sstfb.txt
+       - info on the frame buffer driver for 3dfx' Voodoo Graphics boards.
 tgafb.txt
        - info on the TGA (DECChip 21030) frame buffer driver
 vesafb.txt
        - info on the VESA frame buffer device
+vt8623fb.txt
+       - info on the fb driver for the graphics core in VIA VT8623 chipsets.
diff --git a/Documentation/fb/uvesafb.txt b/Documentation/fb/uvesafb.txt
new file mode 100644 (file)
index 0000000..bcfc233
--- /dev/null
@@ -0,0 +1,188 @@
+
+uvesafb - A Generic Driver for VBE2+ compliant video cards
+==========================================================
+
+1. Requirements
+---------------
+
+uvesafb should work with any video card that has a Video BIOS compliant
+with the VBE 2.0 standard.
+
+Unlike other drivers, uvesafb makes use of a userspace helper called
+v86d.  v86d is used to run the x86 Video BIOS code in a simulated and
+controlled environment.  This allows uvesafb to function on arches other
+than x86.  Check the v86d documentation for a list of currently supported
+arches.
+
+v86d source code can be downloaded from the following website:
+  http://dev.gentoo.org/~spock/projects/uvesafb
+
+Please refer to the v86d documentation for detailed configuration and
+installation instructions.
+
+Note that the v86d userspace helper has to be available at all times in
+order for uvesafb to work properly.  If you want to use uvesafb during
+early boot, you will have to include v86d into an initramfs image, and
+either compile it into the kernel or use it as an initrd.
+
+2. Caveats and limitations
+--------------------------
+
+uvesafb is a _generic_ driver which supports a wide variety of video
+cards, but which is ultimately limited by the Video BIOS interface.
+The most important limitations are:
+
+- Lack of any type of acceleration.
+- A strict and limited set of supported video modes.  Often the native
+  or most optimal resolution/refresh rate for your setup will not work
+  with uvesafb, simply because the Video BIOS doesn't support the
+  video mode you want to use.  This can be especially painful with
+  widescreen panels, where native video modes don't have the 4:3 aspect
+  ratio, which is what most BIOS-es are limited to.
+- Adjusting the refresh rate is only possible with a VBE 3.0 compliant
+  Video BIOS.  Note that many nVidia Video BIOS-es claim to be VBE 3.0
+  compliant, while they simply ignore any refresh rate settings.
+
+3. Configuration
+----------------
+
+uvesafb can be compiled either as a module, or directly into the kernel.
+In both cases it supports the same set of configuration options, which
+are either given on the kernel command line or as module parameters, e.g.:
+
+ video=uvesafb:1024x768-32,mtrr:3,ywrap (compiled into the kernel)
+
+ # modprobe uvesafb mode=1024x768-32 mtrr=3 scroll=ywrap  (module)
+
+Accepted options:
+
+ypan    Enable display panning using the VESA protected mode
+        interface.  The visible screen is just a window of the
+        video memory, console scrolling is done by changing the
+        start of the window.  Available on x86 only.
+
+ywrap   Same as ypan, but assumes your gfx board can wrap-around
+        the video memory (i.e. starts reading from top if it
+        reaches the end of video memory).  Faster than ypan.
+        Available on x86 only.
+
+redraw  Scroll by redrawing the affected part of the screen, this
+        is the safe (and slow) default.
+
+(If you're using uvesafb as a module, the above three options are
+ used a parameter of the scroll option, e.g. scroll=ypan.)
+
+vgapal  Use the standard VGA registers for palette changes.
+
+pmipal  Use the protected mode interface for palette changes.
+        This is the default if the protected mode interface is
+        available.  Available on x86 only.
+
+mtrr:n  Setup memory type range registers for the framebuffer
+        where n:
+              0 - disabled (equivalent to nomtrr) (default)
+              1 - uncachable
+              2 - write-back
+              3 - write-combining
+              4 - write-through
+
+        If you see the following in dmesg, choose the type that matches
+        the old one.  In this example, use "mtrr:2".
+...
+mtrr: type mismatch for e0000000,8000000 old: write-back new: write-combining
+...
+
+nomtrr  Do not use memory type range registers.
+
+vremap:n
+        Remap 'n' MiB of video RAM.  If 0 or not specified, remap memory
+        according to video mode.
+
+vtotal:n
+        If the video BIOS of your card incorrectly determines the total
+        amount of video RAM, use this option to override the BIOS (in MiB).
+
+<mode>  The mode you want to set, in the standard modedb format.  Refer to
+        modedb.txt for a detailed description.  When uvesafb is compiled as
+        a module, the mode string should be provided as a value of the
+        'mode' option.
+
+vbemode:x
+        Force the use of VBE mode x.  The mode will only be set if it's
+        found in the VBE-provided list of supported modes.
+        NOTE: The mode number 'x' should be specified in VESA mode number
+        notation, not the Linux kernel one (eg. 257 instead of 769).
+        HINT: If you use this option because normal <mode> parameter does
+        not work for you and you use a X server, you'll probably want to
+        set the 'nocrtc' option to ensure that the video mode is properly
+        restored after console <-> X switches.
+
+nocrtc  Do not use CRTC timings while setting the video mode.  This option
+        has any effect only if the Video BIOS is VBE 3.0 compliant.  Use it
+        if you have problems with modes set the standard way.  Note that
+        using this option implies that any refresh rate adjustments will
+        be ignored and the refresh rate will stay at your BIOS default (60 Hz).
+
+noedid  Do not try to fetch and use EDID-provided modes.
+
+noblank Disable hardware blanking.
+
+v86d:path
+        Set path to the v86d executable. This option is only available as
+        a module parameter, and not as a part of the video= string.  If you
+        need to use it and have uvesafb built into the kernel, use
+        uvesafb.v86d="path".
+
+Additionally, the following parameters may be provided.  They all override the
+EDID-provided values and BIOS defaults.  Refer to your monitor's specs to get
+the correct values for maxhf, maxvf and maxclk for your hardware.
+
+maxhf:n     Maximum horizontal frequency (in kHz).
+maxvf:n     Maximum vertical frequency (in Hz).
+maxclk:n    Maximum pixel clock (in MHz).
+
+4. The sysfs interface
+----------------------
+
+uvesafb provides several sysfs nodes for configurable parameters and
+additional information.
+
+Driver attributes:
+
+/sys/bus/platform/drivers/uvesafb
+  - v86d (default: /sbin/v86d)
+    Path to the v86d executable. v86d is started by uvesafb
+    if an instance of the daemon isn't already running.
+
+Device attributes:
+
+/sys/bus/platform/drivers/uvesafb/uvesafb.0
+  - nocrtc
+    Use the default refresh rate (60 Hz) if set to 1.
+
+  - oem_product_name
+  - oem_product_rev
+  - oem_string
+  - oem_vendor
+    Information about the card and its maker.
+
+  - vbe_modes
+    A list of video modes supported by the Video BIOS along with their
+    VBE mode numbers in hex.
+
+  - vbe_version
+    A BCD value indicating the implemented VBE standard.
+
+5. Miscellaneous
+----------------
+
+Uvesafb will set a video mode with the default refresh rate and timings
+from the Video BIOS if you set pixclock to 0 in fb_var_screeninfo.
+
+
+--
+ Michal Januszewski <spock@gentoo.org>
+ Last updated: 2007-06-16
+
+ Documentation of the uvesafb options is loosely based on vesafb.txt.
+
index f0f825808ca463023d815b3d38679851b55a6ff6..fe26cc978523959b468cd8fa5398eed5ef1b8559 100644 (file)
@@ -178,15 +178,18 @@ prototypes:
 locking rules:
        All except set_page_dirty may block
 
-                       BKL     PageLocked(page)
+                       BKL     PageLocked(page)        i_sem
 writepage:             no      yes, unlocks (see below)
 readpage:              no      yes, unlocks
 sync_page:             no      maybe
 writepages:            no
 set_page_dirty         no      no
 readpages:             no
-prepare_write:         no      yes
-commit_write:          no      yes
+prepare_write:         no      yes                     yes
+commit_write:          no      yes                     yes
+write_begin:           no      locks the page          yes
+write_end:             no      yes, unlocks            yes
+perform_write:         no      n/a                     yes
 bmap:                  yes
 invalidatepage:                no      yes
 releasepage:           no      yes
index 045f3e055a28932c76864a19696732311a4f9838..6f8e16e3d6c0c65c97f5d1dfe650977aa711e6d5 100644 (file)
@@ -537,6 +537,12 @@ struct address_space_operations {
                        struct list_head *pages, unsigned nr_pages);
        int (*prepare_write)(struct file *, struct page *, unsigned, unsigned);
        int (*commit_write)(struct file *, struct page *, unsigned, unsigned);
+       int (*write_begin)(struct file *, struct address_space *mapping,
+                               loff_t pos, unsigned len, unsigned flags,
+                               struct page **pagep, void **fsdata);
+       int (*write_end)(struct file *, struct address_space *mapping,
+                               loff_t pos, unsigned len, unsigned copied,
+                               struct page *page, void *fsdata);
        sector_t (*bmap)(struct address_space *, sector_t);
        int (*invalidatepage) (struct page *, unsigned long);
        int (*releasepage) (struct page *, int);
@@ -615,11 +621,7 @@ struct address_space_operations {
        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.
+       The page will be locked.
 
        Note: the page _must not_ be marked uptodate in this function
        (or anywhere else) unless it actually is uptodate right now. As
@@ -633,6 +635,45 @@ struct address_space_operations {
         operations.  It should avoid returning an error if possible -
         errors should have been handled by prepare_write.
 
+  write_begin: This is intended as a replacement for prepare_write. The
+       key differences being that:
+               - it returns a locked page (in *pagep) rather than being
+                 given a pre locked page;
+               - it must be able to cope with short writes (where the
+                 length passed to write_begin is greater than the number
+                 of bytes copied into the page).
+
+       Called by the generic buffered write code to ask the filesystem to
+       prepare to write len bytes at the given offset in the file. 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 filesystem must return the locked pagecache page for the specified
+       offset, in *pagep, for the caller to write into.
+
+       flags is a field for AOP_FLAG_xxx flags, described in
+       include/linux/fs.h.
+
+        A void * may be returned in fsdata, which then gets passed into
+        write_end.
+
+        Returns 0 on success; < 0 on failure (which is the error code), in
+       which case write_end is not called.
+
+  write_end: After a successful write_begin, and data copy, write_end must
+        be called. len is the original len passed to write_begin, and copied
+        is the amount that was able to be copied (copied == len is always true
+       if write_begin was called with the AOP_FLAG_UNINTERRUPTIBLE flag).
+
+        The filesystem must take care of unlocking the page and releasing it
+        refcount, and updating i_size.
+
+        Returns < 0 on failure, otherwise the number of bytes (<= 'copied')
+        that were able to be copied into pagecache.
+
   bmap: called by the VFS to map a logical block offset within object to
        physical block number. This method is used by the FIBMAP
        ioctl and for working with swap-files.  To be able to swap to
index 085e4a095eaaec661ae46a61dda993af3c3cb060..eb247997f6791fa535b0bcec101cfa658634d3ba 100644 (file)
@@ -349,6 +349,11 @@ and is between 256 and 4096 characters. It is defined in the file
        blkmtd_bs=
        blkmtd_count=
 
+       boot_delay=     Milliseconds to delay each printk during boot.
+                       Values larger than 10 seconds (10000) are changed to
+                       no delay (0).
+                       Format: integer
+
        bttv.card=      [HW,V4L] bttv (bt848 + bt878 based grabber cards)
        bttv.radio=     Most important insmod options are available as
                        kernel args too.
@@ -906,6 +911,11 @@ and is between 256 and 4096 characters. It is defined in the file
                        n must be a power of two.  The default size
                        is set in the kernel config file.
 
+       logo.nologo     [FB] Disables display of the built-in Linux logo.
+                       This may be used to provide more screen space for
+                       kernel log messages and is useful when debugging
+                       kernel boot problems.
+
        lp=0            [LP]    Specify parallel ports to use, e.g,
        lp=port[,port...]       lp=none,parport0 (lp0 not configured, lp1 uses
        lp=reset                first parallel port). 'lp=0' disables the
index 76ea6c837be568c104e393ef0b2ff465febb7e98..8861e47e5a2d7e66fcbdf4ef1f5643901a4cd4a6 100644 (file)
@@ -156,21 +156,29 @@ using the driver model to connect controller and protocol drivers using
 device tables provided by board specific initialization code.  SPI
 shows up in sysfs in several locations:
 
+   /sys/devices/.../CTLR ... physical node for a given SPI controller
+
    /sys/devices/.../CTLR/spiB.C ... spi_device on bus "B",
        chipselect C, accessed through CTLR.
 
+   /sys/bus/spi/devices/spiB.C ... symlink to that physical
+       .../CTLR/spiB.C device
+
    /sys/devices/.../CTLR/spiB.C/modalias ... identifies the driver
        that should be used with this device (for hotplug/coldplug)
 
-   /sys/bus/spi/devices/spiB.C ... symlink to the physical
-       spiB.C device
-
    /sys/bus/spi/drivers/D ... driver for one or more spi*.* devices
 
-   /sys/class/spi_master/spiB ... class device for the controller
-       managing bus "B".  All the spiB.* devices share the same
+   /sys/class/spi_master/spiB ... symlink (or actual device node) to
+       a logical node which could hold class related state for the
+       controller managing bus "B".  All spiB.* devices share one
        physical SPI bus segment, with SCLK, MOSI, and MISO.
 
+Note that the actual location of the controller's class state depends
+on whether you enabled CONFIG_SYSFS_DEPRECATED or not.  At this time,
+the only class-specific state is the bus number ("B" in "spiB"), so
+those /sys/class entries are only useful to quickly identify busses.
+
 
 How does board-specific init code declare SPI devices?
 ------------------------------------------------------
@@ -337,7 +345,8 @@ SPI protocol drivers somewhat resemble platform device drivers:
 
 The driver core will autmatically attempt to bind this driver to any SPI
 device whose board_info gave a modalias of "CHIP".  Your probe() code
-might look like this unless you're creating a class_device:
+might look like this unless you're creating a device which is managing
+a bus (appearing under /sys/class/spi_master).
 
        static int __devinit CHIP_probe(struct spi_device *spi)
        {
@@ -442,7 +451,7 @@ An SPI controller will probably be registered on the platform_bus; write
 a driver to bind to the device, whichever bus is involved.
 
 The main task of this type of driver is to provide an "spi_master".
-Use spi_alloc_master() to allocate the master, and class_get_devdata()
+Use spi_alloc_master() to allocate the master, and spi_master_get_devdata()
 to get the driver-private data allocated for that device.
 
        struct spi_master       *master;
@@ -452,7 +461,7 @@ to get the driver-private data allocated for that device.
        if (!master)
                return -ENODEV;
 
-       c = class_get_devdata(&master->cdev);
+       c = spi_master_get_devdata(master);
 
 The driver will initialize the fields of that spi_master, including the
 bus number (maybe the same as the platform device ID) and three methods
index 218e862152974283640311ab0b437f14b68fda35..cf0e3ce0d52682171688c07974e90fce66036d5f 100644 (file)
@@ -29,7 +29,7 @@ static void pabort(const char *s)
        abort();
 }
 
-static char *device = "/dev/spidev1.1";
+static const char *device = "/dev/spidev1.1";
 static uint8_t mode;
 static uint8_t bits = 8;
 static uint32_t speed = 500000;
@@ -69,7 +69,7 @@ static void transfer(int fd)
        puts("");
 }
 
-void print_usage(char *prog)
+void print_usage(const char *prog)
 {
        printf("Usage: %s [-DsbdlHOLC3]\n", prog);
        puts("  -D --device   device to use (default /dev/spidev1.1)\n"
@@ -88,7 +88,7 @@ void print_usage(char *prog)
 void parse_opts(int argc, char *argv[])
 {
        while (1) {
-               static struct option lopts[] = {
+               static const struct option lopts[] = {
                        { "device",  1, 0, 'D' },
                        { "speed",   1, 0, 's' },
                        { "delay",   1, 0, 'd' },
index 8242f52d0f2294833373621ed061e1eebeb2acdd..dd49864979964f10ee097fd46779294e4b2cbe21 100644 (file)
@@ -302,31 +302,30 @@ MEMORY POLICIES AND CPUSETS
 
 Memory policies work within cpusets as described above.  For memory policies
 that require a node or set of nodes, the nodes are restricted to the set of
-nodes whose memories are allowed by the cpuset constraints.  If the
-intersection of the set of nodes specified for the policy and the set of nodes
-allowed by the cpuset is the empty set, the policy is considered invalid and
-cannot be installed.
+nodes whose memories are allowed by the cpuset constraints.  If the nodemask
+specified for the policy contains nodes that are not allowed by the cpuset, or
+the intersection of the set of nodes specified for the policy and the set of
+nodes with memory is the empty set, the policy is considered invalid
+and cannot be installed.
 
 The interaction of memory policies and cpusets can be problematic for a
 couple of reasons:
 
-1) the memory policy APIs take physical node id's as arguments.  However, the
-   memory policy APIs do not provide a way to determine what nodes are valid
-   in the context where the application is running.  An application MAY consult
-   the cpuset file system [directly or via an out of tree, and not generally
-   available, libcpuset API] to obtain this information, but then the
-   application must be aware that it is running in a cpuset and use what are
-   intended primarily as administrative APIs.
-
-   However, as long as the policy specifies at least one node that is valid
-   in the controlling cpuset, the policy can be used.
+1) the memory policy APIs take physical node id's as arguments.  As mentioned
+   above, it is illegal to specify nodes that are not allowed in the cpuset.
+   The application must query the allowed nodes using the get_mempolicy()
+   API with the MPOL_F_MEMS_ALLOWED flag to determine the allowed nodes and
+   restrict itself to those nodes.  However, the resources available to a
+   cpuset can be changed by the system administrator, or a workload manager
+   application, at any time.  So, a task may still get errors attempting to
+   specify policy nodes, and must query the allowed memories again.
 
 2) when tasks in two cpusets share access to a memory region, such as shared
    memory segments created by shmget() of mmap() with the MAP_ANONYMOUS and
    MAP_SHARED flags, and any of the tasks install shared policy on the region,
    only nodes whose memories are allowed in both cpusets may be used in the
-   policies.  Again, obtaining this information requires "stepping outside"
-   the memory policy APIs, as well as knowing in what cpusets other task might
-   be attaching to the shared region, to use the cpuset information.
+   policies.  Obtaining this information requires "stepping outside" the
+   memory policy APIs to use the cpuset information and requires that one
+   know in what cpusets other task might be attaching to the shared region.
    Furthermore, if the cpusets' allowed memory sets are disjoint, "local"
    allocation is the only valid policy.
index f42798ed1c54c326be5021877757fef5e841f3f8..b89b6d2bebfa7b355aeffacc5c7e60e91eb54a86 100644 (file)
@@ -9,6 +9,7 @@ ffff800000000000 - ffff80ffffffffff (=40 bits) guard hole
 ffff810000000000 - ffffc0ffffffffff (=46 bits) direct mapping of all phys. memory
 ffffc10000000000 - ffffc1ffffffffff (=40 bits) hole
 ffffc20000000000 - ffffe1ffffffffff (=45 bits) vmalloc/ioremap space
+ffffe20000000000 - ffffe2ffffffffff (=40 bits) virtual memory map (1TB)
 ... unused hole ...
 ffffffff80000000 - ffffffff82800000 (=40 MB)   kernel text mapping, from phys 0
 ... unused hole ...
index 1b704ee54bf3ad5210aab22c6f36d372aadc19e6..d1004b4d942fce7d75daccf7d6ea641bce233f0b 100644 (file)
@@ -12,73 +12,22 @@ NM := $(NM) -B
 
 LDFLAGS_vmlinux        := -static -N #-relax
 CHECKFLAGS     += -D__alpha__ -m64
-cflags-y       := -pipe -mno-fp-regs -ffixed-8
-
-# Determine if we can use the BWX instructions with GAS.
-old_gas := $(shell if $(AS) --version 2>&1 | grep 'version 2.7' > /dev/null; then echo y; else echo n; fi)
-
-ifeq ($(old_gas),y)
-$(error The assembler '$(AS)' does not support the BWX instruction)
-endif
-
-# Determine if GCC understands the -mcpu= option.
-have_mcpu        := $(call cc-option-yn, -mcpu=ev5)
-have_mcpu_pca56  := $(call cc-option-yn, -mcpu=pca56)
-have_mcpu_ev6    := $(call cc-option-yn, -mcpu=ev6)
-have_mcpu_ev67   := $(call cc-option-yn, -mcpu=ev67)
-have_msmall_data := $(call cc-option-yn, -msmall-data)
-
-cflags-$(have_msmall_data) += -msmall-data
-
-# Turn on the proper cpu optimizations.
-ifeq ($(have_mcpu),y)
-  mcpu_done := n
-  # If GENERIC, make sure to turn off any instruction set extensions that
-  # the host compiler might have on by default.  Given that EV4 and EV5
-  # have the same instruction set, prefer EV5 because an EV5 schedule is
-  # more likely to keep an EV4 processor busy than vice-versa.
-  ifeq ($(CONFIG_ALPHA_GENERIC),y)
-    mcpu := ev5
-    mcpu_done := y
-  endif
-  ifeq ($(mcpu_done)$(CONFIG_ALPHA_SX164)$(have_mcpu_pca56),nyy)
-    mcpu := pca56
-    mcpu_done := y
-  endif
-  ifeq ($(mcpu_done)$(CONFIG_ALPHA_POLARIS)$(have_mcpu_pca56),nyy)
-    mcpu := pca56
-    mcpu_done := y
-  endif
-  ifeq ($(mcpu_done)$(CONFIG_ALPHA_EV4),ny)
-    mcpu := ev4
-    mcpu_done := y
-  endif
-  ifeq ($(mcpu_done)$(CONFIG_ALPHA_EV56),ny)
-    mcpu := ev56
-    mcpu_done := y
-  endif
-  ifeq ($(mcpu_done)$(CONFIG_ALPHA_EV5),ny)
-    mcpu := ev5
-    mcpu_done := y
-  endif
-  ifeq ($(mcpu_done)$(CONFIG_ALPHA_EV67)$(have_mcpu_ev67),nyy)
-    mcpu := ev67
-    mcpu_done := y
-  endif
-  ifeq ($(mcpu_done)$(CONFIG_ALPHA_EV6),ny)
-    ifeq ($(have_mcpu_ev6),y)
-      mcpu := ev6
-    else
-      ifeq ($(have_mcpu_pca56),y)
-        mcpu := pca56
-      else
-        mcpu=ev56
-      endif
-    endif
-    mcpu_done := y
-  endif
-  cflags-$(mcpu_done) += -mcpu=$(mcpu)
-endif
+cflags-y       := -pipe -mno-fp-regs -ffixed-8 -msmall-data
+
+cpuflags-$(CONFIG_ALPHA_EV67)          := -mcpu=ev67
+cpuflags-$(CONFIG_ALPHA_EV6)           := -mcpu=ev6
+cpuflags-$(CONFIG_ALPHA_POLARIS)       := -mcpu=pca56
+cpuflags-$(CONFIG_ALPHA_SX164)         := -mcpu=pca56
+cpuflags-$(CONFIG_ALPHA_EV56)          := -mcpu=ev56
+cpuflags-$(CONFIG_ALPHA_EV5)           := -mcpu=ev5
+cpuflags-$(CONFIG_ALPHA_EV4)           := -mcpu=ev4
+# If GENERIC, make sure to turn off any instruction set extensions that
+# the host compiler might have on by default.  Given that EV4 and EV5
+# have the same instruction set, prefer EV5 because an EV5 schedule is
+# more likely to keep an EV4 processor busy than vice-versa.
+cpuflags-$(CONFIG_ALPHA_GENERIC)       := -mcpu=ev5
+
+cflags-y                               += $(cpuflags-y)
 
 
 # For TSUNAMI, we must have the assembler not emulate our instructions.
index debc8f03886cf9edafa577664a90a6c8ec59c9ad..5fc61e281ac77724cbcf0270b4269dd4559a686b 100644 (file)
@@ -916,15 +916,6 @@ sys_pipe:
        ret
 .end sys_pipe
 
-       .align  4
-       .globl  sys_ptrace
-       .ent    sys_ptrace
-sys_ptrace:
-       .prologue 0
-       mov     $sp, $20
-       jmp     $31, do_sys_ptrace
-.end sys_ptrace
-
        .align  4
        .globl  sys_execve
        .ent    sys_execve
index 83a78184226623fa78f51e52c5643ce148de6f3f..1e9ad52c460ec293aa70f9cbc5bb3094adc08d74 100644 (file)
@@ -260,38 +260,12 @@ void ptrace_disable(struct task_struct *child)
        ptrace_cancel_bpt(child);
 }
 
-asmlinkage long
-do_sys_ptrace(long request, long pid, long addr, long data,
-             struct pt_regs *regs)
+long arch_ptrace(struct task_struct *child, long request, long addr, long data)
 {
-       struct task_struct *child;
        unsigned long tmp;
        size_t copied;
        long ret;
 
-       lock_kernel();
-       DBG(DBG_MEM, ("request=%ld pid=%ld addr=0x%lx data=0x%lx\n",
-                     request, pid, addr, data));
-       if (request == PTRACE_TRACEME) {
-               ret = ptrace_traceme();
-               goto out_notsk;
-       }
-
-       child = ptrace_get_task_struct(pid);
-       if (IS_ERR(child)) {
-               ret = PTR_ERR(child);
-               goto out_notsk;
-       }
-
-       if (request == PTRACE_ATTACH) {
-               ret = ptrace_attach(child);
-               goto out;
-       }
-
-       ret = ptrace_check_attach(child, request == PTRACE_KILL);
-       if (ret < 0)
-               goto out;
-
        switch (request) {
        /* When I and D space are separate, these will need to be fixed.  */
        case PTRACE_PEEKTEXT: /* read word at location addr. */
@@ -301,13 +275,13 @@ do_sys_ptrace(long request, long pid, long addr, long data,
                if (copied != sizeof(tmp))
                        break;
                
-               regs->r0 = 0;   /* special return: no errors */
+               force_successful_syscall_return();
                ret = tmp;
                break;
 
        /* Read register number ADDR. */
        case PTRACE_PEEKUSR:
-               regs->r0 = 0;   /* special return: no errors */
+               force_successful_syscall_return();
                ret = get_reg(child, addr);
                DBG(DBG_MEM, ("peek $%ld->%#lx\n", addr, ret));
                break;
@@ -353,7 +327,7 @@ do_sys_ptrace(long request, long pid, long addr, long data,
                /* make sure single-step breakpoint is gone. */
                ptrace_cancel_bpt(child);
                wake_up_process(child);
-               goto out;
+               break;
 
        case PTRACE_SINGLESTEP:  /* execute single instruction. */
                ret = -EIO;
@@ -366,20 +340,12 @@ do_sys_ptrace(long request, long pid, long addr, long data,
                wake_up_process(child);
                /* give it a chance to run. */
                ret = 0;
-               goto out;
-
-       case PTRACE_DETACH:      /* detach a process that was attached. */
-               ret = ptrace_detach(child, data);
-               goto out;
+               break;
 
        default:
                ret = ptrace_request(child, request, addr, data);
-               goto out;
+               break;
        }
- out:
-       put_task_struct(child);
- out_notsk:
-       unlock_kernel();
        return ret;
 }
 
index 7af07d3ad5f0dc0dcc276763c84d38453cca15dc..55c05b511f4c060d5a8cab8f7140d6f07563bd0f 100644 (file)
@@ -1,4 +1,5 @@
 #include <asm-generic/vmlinux.lds.h>
+#include <asm/page.h>
 
 OUTPUT_FORMAT("elf64-alpha")
 OUTPUT_ARCH(alpha)
@@ -8,138 +9,145 @@ jiffies = jiffies_64;
 SECTIONS
 {
 #ifdef CONFIG_ALPHA_LEGACY_START_ADDRESS
-  . = 0xfffffc0000310000;
+       . = 0xfffffc0000310000;
 #else
-  . = 0xfffffc0001010000;
+       . = 0xfffffc0001010000;
 #endif
 
-  _text = .;                                   /* Text and read-only data */
-  .text : { 
+       _text = .;      /* Text and read-only data */
+       .text : {
        *(.text.head)
-       TEXT_TEXT
-       SCHED_TEXT
-       LOCK_TEXT
-       *(.fixup)
-       *(.gnu.warning)
-  } :kernel
-  _etext = .;                                  /* End of text section */
-
-  . = ALIGN(16);
-  __start___ex_table = .;                      /* Exception table */
-  __ex_table : { *(__ex_table) }
-  __stop___ex_table = .;
-
-  NOTES :kernel :note
-  .dummy : { *(.dummy) } :kernel
-
-  RODATA
-
-  /* Will be freed after init */
-  . = ALIGN(8192);                             /* Init code and data */
-  __init_begin = .;
-  .init.text : { 
-       _sinittext = .;
-       *(.init.text)
-       _einittext = .;
-  }
-  .init.data : { *(.init.data) }
-
-  . = ALIGN(16);
-  __setup_start = .;
-  .init.setup : { *(.init.setup) }
-  __setup_end = .;
-
-  . = ALIGN(8);
-  __initcall_start = .;
-  .initcall.init : {
-       INITCALLS
-  }
-  __initcall_end = .;
+               TEXT_TEXT
+               SCHED_TEXT
+               LOCK_TEXT
+               *(.fixup)
+               *(.gnu.warning)
+       } :kernel
+       _etext = .;     /* End of text section */
+
+       /* Exception table */
+       . = ALIGN(16);
+       __ex_table : {
+               __start___ex_table = .;
+               *(__ex_table)
+               __stop___ex_table = .;
+       }
+
+       NOTES :kernel :note
+       .dummy : {
+               *(.dummy)
+       } :kernel
+
+       RODATA
+
+       /* Will be freed after init */
+       . = ALIGN(PAGE_SIZE);
+       /* Init code and data */
+       __init_begin = .;
+       .init.text : {
+               _sinittext = .;
+               *(.init.text)
+               _einittext = .;
+       }
+       .init.data : {
+               *(.init.data)
+       }
+
+       . = ALIGN(16);
+       .init.setup : {
+               __setup_start = .;
+               *(.init.setup)
+               __setup_end = .;
+       }
+
+       . = ALIGN(8);
+       .initcall.init : {
+               __initcall_start = .;
+               INITCALLS
+               __initcall_end = .;
+       }
 
 #ifdef CONFIG_BLK_DEV_INITRD
-  . = ALIGN(8192);
-  __initramfs_start = .;
-  .init.ramfs : { *(.init.ramfs) }
-  __initramfs_end = .;
+       . = ALIGN(PAGE_SIZE);
+       .init.ramfs : {
+               __initramfs_start = .;
+               *(.init.ramfs)
+               __initramfs_end = .;
+       }
 #endif
 
-  . = ALIGN(8);
-  .con_initcall.init : {
-       __con_initcall_start = .;
-       *(.con_initcall.init)
-       __con_initcall_end = .;
-  }
-
-  . = ALIGN(8);
-  SECURITY_INIT
-
-  PERCPU(8192)
-
-  . = ALIGN(2*8192);
-  __init_end = .;
-  /* Freed after init ends here */
-
-  /* Note 2 page alignment above.  */
-  .data.init_thread : { *(.data.init_thread) }
-
-  . = ALIGN(8192);
-  .data.page_aligned : { *(.data.page_aligned) }
-
-  . = ALIGN(64);
-  .data.cacheline_aligned : { *(.data.cacheline_aligned) }
-
-  _data = .;
-  .data : {                                    /* Data */
-       DATA_DATA
-       CONSTRUCTORS
-  }
-
-  .got : { *(.got) }
-  .sdata : { *(.sdata) }
-
-  _edata = .;                                  /* End of data section */
-
-  __bss_start = .;
-  .sbss : { *(.sbss) *(.scommon) }
-  .bss : { *(.bss) *(COMMON) }
-  __bss_stop = .;
-
-  _end = .;
-
-  /* Sections to be discarded */
-  /DISCARD/ : { *(.exit.text) *(.exit.data) *(.exitcall.exit) }
-
-  .mdebug 0 : { *(.mdebug) }
-  .note 0 : { *(.note) }
-  .comment 0 : { *(.comment) }
-
-  /* Stabs debugging sections */
-  .stab 0 : { *(.stab) }
-  .stabstr 0 : { *(.stabstr) }
-  .stab.excl 0 : { *(.stab.excl) }
-  .stab.exclstr 0 : { *(.stab.exclstr) }
-  .stab.index 0 : { *(.stab.index) }
-  .stab.indexstr 0 : { *(.stab.indexstr) }
-  /* DWARF 1 */
-  .debug          0 : { *(.debug) }
-  .line           0 : { *(.line) }
-  /* GNU DWARF 1 extensions */
-  .debug_srcinfo  0 : { *(.debug_srcinfo) }
-  .debug_sfnames  0 : { *(.debug_sfnames) }
-  /* DWARF 1.1 and DWARF 2 */
-  .debug_aranges  0 : { *(.debug_aranges) }
-  .debug_pubnames 0 : { *(.debug_pubnames) }
-  /* DWARF 2 */
-  .debug_info     0 : { *(.debug_info) }
-  .debug_abbrev   0 : { *(.debug_abbrev) }
-  .debug_line     0 : { *(.debug_line) }
-  .debug_frame    0 : { *(.debug_frame) }
-  .debug_str      0 : { *(.debug_str) }
-  .debug_loc      0 : { *(.debug_loc) }
-  .debug_macinfo  0 : { *(.debug_macinfo) }
-  /* SGI/MIPS DWARF 2 extensions */
-  .debug_weaknames 0 : { *(.debug_weaknames) }
-  .debug_funcnames 0 : { *(.debug_funcnames) }
-  .debug_typenames 0 : { *(.debug_typenames) }
-  .debug_varnames  0 : { *(.debug_varnames) }
+       . = ALIGN(8);
+       .con_initcall.init : {
+               __con_initcall_start = .;
+               *(.con_initcall.init)
+               __con_initcall_end = .;
+       }
+
+       . = ALIGN(8);
+       SECURITY_INIT
+
+       PERCPU(PAGE_SIZE)
+
+       . = ALIGN(2 * PAGE_SIZE);
+       __init_end = .;
+       /* Freed after init ends here */
+
+       /* Note 2 page alignment above.  */
+       .data.init_thread : {
+               *(.data.init_thread)
+       }
+
+       . = ALIGN(PAGE_SIZE);
+       .data.page_aligned : {
+               *(.data.page_aligned)
+       }
+
+       . = ALIGN(64);
+       .data.cacheline_aligned : {
+               *(.data.cacheline_aligned)
+       }
+
+       _data = .;
+       /* Data */
+       .data : {
+               DATA_DATA
+               CONSTRUCTORS
+       }
+
+       .got : {
+               *(.got)
+       }
+       .sdata : {
+               *(.sdata)
+       }
+       _edata = .;     /* End of data section */
+
+       __bss_start = .;
+       .sbss : {
+               *(.sbss)
+               *(.scommon)
+       }
+       .bss : {
+               *(.bss)
+               *(COMMON)
+       }
+       __bss_stop = .;
+       _end = .;
+
+       /* Sections to be discarded */
+       /DISCARD/ : {
+               *(.exit.text)
+               *(.exit.data)
+               *(.exitcall.exit)
+       }
+
+       .mdebug 0 : {
+               *(.mdebug)
+       }
+       .note 0 : {
+               *(.note)
+       }
+
+       STABS_DEBUG
+       DWARF_DEBUG
 }
index a0e18da594d94216e716d69f66b2cec0074aa43d..25154df3055abf7a501db5b5b00255d0bcbb410e 100644 (file)
@@ -197,7 +197,7 @@ do_page_fault(unsigned long address, unsigned long mmcsr,
               current->comm, current->pid);
        if (!user_mode(regs))
                goto no_context;
-       do_exit(SIGKILL);
+       do_group_exit(SIGKILL);
 
  do_sigbus:
        /* Send a sigbus, regardless of whether we were in kernel
index 78c9f1a3d41f725c428b352d413289c564ec3933..5feee722ea9878e08a9f6415fe7de8e45d7595f9 100644 (file)
@@ -731,10 +731,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
                        ret = 0;
                        break;
 
-               case PTRACE_DETACH:
-                       ret = ptrace_detach(child, data);
-                       break;
-
                case PTRACE_GETREGS:
                        ret = ptrace_getregs(child, (void __user *)data);
                        break;
index 43bb5e1063020fa112cdb9d5e6a2f6c8b7845eca..a67a0685664d0ca258b6bbc2b35ed6ea8f6156a2 100644 (file)
@@ -168,13 +168,31 @@ static void __init amlm5900_map_io(void)
 }
 
 #ifdef CONFIG_FB_S3C2410
-static struct s3c2410fb_mach_info __initdata amlm5900_lcd_info = {
+static struct s3c2410fb_display __initdata amlm5900_lcd_info = {
        .width          = 160,
        .height         = 160,
 
-/* commented out until stn patch is submitted
-*      .type           = S3C2410_LCDCON1_STN4,
-*/
+       .type           = S3C2410_LCDCON1_STN4,
+
+       .pixclock       = 680000, /* HCLK = 100MHz */
+       .xres           = 160,
+       .yres           = 160,
+       .bpp            = 4,
+       .left_margin    = 1 << (4 + 3),
+       .right_margin   = 8 << 3,
+       .hsync_len      = 48,
+       .upper_margin   = 0,
+       .lower_margin   = 0,
+
+       .lcdcon5        = 0x00000001,
+};
+
+static struct s3c2410fb_mach_info __initdata amlm5900_fb_info = {
+
+       .displays = &amlm5900_lcd_info,
+       .num_displays = 1,
+       .default_display = 0,
+
        .gpccon =       0xaaaaaaaa,
        .gpccon_mask =  0xffffffff,
        .gpcup =        0x0000ffff,
@@ -184,32 +202,6 @@ static struct s3c2410fb_mach_info __initdata amlm5900_lcd_info = {
        .gpdcon_mask =  0xffffffff,
        .gpdup =        0x0000ffff,
        .gpdup_mask =   0xffffffff,
-
-       .xres           = {
-               .min            = 160,
-               .max            = 160,
-               .defval         = 160,
-       },
-
-       .yres           = {
-               .min            = 160,
-               .max            = 160,
-               .defval         = 160,
-       },
-
-       .bpp            = {
-               .min            = 4,
-               .max            = 4,
-               .defval         = 4,
-       },
-
-       .regs           = {
-               .lcdcon1        = 0x00008225,
-               .lcdcon2        = 0x0027c000,
-               .lcdcon3        = 0x00182708,
-               .lcdcon4        = 0x00000002,
-               .lcdcon5        = 0x00000001,
-       }
 };
 #endif
 
@@ -239,7 +231,7 @@ static void __init amlm5900_init(void)
 {
        amlm5900_init_pm();
 #ifdef CONFIG_FB_S3C2410
-       s3c24xx_fb_set_platdata(&amlm5900_lcd_info);
+       s3c24xx_fb_set_platdata(&amlm5900_fb_info);
 #endif
        platform_add_devices(amlm5900_devices, ARRAY_SIZE(amlm5900_devices));
 }
index bc926992b4e447de12b0504ff7a3bbfed48bd923..587864fe25fb09f169b519dcc16d54dbb13c773d 100644 (file)
@@ -467,35 +467,70 @@ static struct platform_device bast_device_axpp = {
 
 /* LCD/VGA controller */
 
-static struct s3c2410fb_mach_info __initdata bast_lcd_info = {
-       .width          = 640,
-       .height         = 480,
-
-       .xres           = {
-               .min            = 320,
-               .max            = 1024,
-               .defval         = 640,
-       },
+static struct s3c2410fb_display __initdata bast_lcd_info[] = {
+       {
+               .type           = S3C2410_LCDCON1_TFT,
+               .width          = 640,
+               .height         = 480,
+
+               .pixclock       = 33333,
+               .xres           = 640,
+               .yres           = 480,
+               .bpp            = 4,
+               .left_margin    = 40,
+               .right_margin   = 20,
+               .hsync_len      = 88,
+               .upper_margin   = 30,
+               .lower_margin   = 32,
+               .vsync_len      = 3,
 
-       .yres           = {
-               .min            = 240,
-               .max            = 600,
-               .defval         = 480,
+               .lcdcon5        = 0x00014b02,
        },
+       {
+               .type           = S3C2410_LCDCON1_TFT,
+               .width          = 640,
+               .height         = 480,
+
+               .pixclock       = 33333,
+               .xres           = 640,
+               .yres           = 480,
+               .bpp            = 8,
+               .left_margin    = 40,
+               .right_margin   = 20,
+               .hsync_len      = 88,
+               .upper_margin   = 30,
+               .lower_margin   = 32,
+               .vsync_len      = 3,
 
-       .bpp            = {
-               .min            = 4,
-               .max            = 16,
-               .defval         = 8,
+               .lcdcon5        = 0x00014b02,
        },
+       {
+               .type           = S3C2410_LCDCON1_TFT,
+               .width          = 640,
+               .height         = 480,
+
+               .pixclock       = 33333,
+               .xres           = 640,
+               .yres           = 480,
+               .bpp            = 16,
+               .left_margin    = 40,
+               .right_margin   = 20,
+               .hsync_len      = 88,
+               .upper_margin   = 30,
+               .lower_margin   = 32,
+               .vsync_len      = 3,
 
-       .regs           = {
-               .lcdcon1        = 0x00000176,
-               .lcdcon2        = 0x1d77c7c2,
-               .lcdcon3        = 0x013a7f13,
-               .lcdcon4        = 0x00000057,
                .lcdcon5        = 0x00014b02,
-       }
+       },
+};
+
+/* LCD/VGA controller */
+
+static struct s3c2410fb_mach_info __initdata bast_fb_info = {
+
+       .displays = bast_lcd_info,
+       .num_displays = ARRAY_SIZE(bast_lcd_info),
+       .default_display = 4,
 };
 
 /* Standard BAST devices */
@@ -552,7 +587,7 @@ static void __init bast_map_io(void)
 
 static void __init bast_init(void)
 {
-       s3c24xx_fb_set_platdata(&bast_lcd_info);
+       s3c24xx_fb_set_platdata(&bast_fb_info);
        platform_add_devices(bast_devices, ARRAY_SIZE(bast_devices));
 }
 
index 9a172b4ad720f51980ab10c928eb2611970f253e..7c1145e87c121d0b4f492b3c4b8cea05ab4f4eb7 100644 (file)
@@ -133,29 +133,31 @@ static struct s3c2410_udc_mach_info h1940_udc_cfg __initdata = {
 /**
  * Set lcd on or off
  **/
-static struct s3c2410fb_mach_info h1940_lcdcfg __initdata = {
-       .fixed_syncs=           1,
-       .regs={
-               .lcdcon1=       S3C2410_LCDCON1_TFT16BPP | \
-                               S3C2410_LCDCON1_TFT | \
-                               S3C2410_LCDCON1_CLKVAL(0x0C),
-
-               .lcdcon2=       S3C2410_LCDCON2_VBPD(7) | \
-                               S3C2410_LCDCON2_LINEVAL(319) | \
-                               S3C2410_LCDCON2_VFPD(6) | \
-                               S3C2410_LCDCON2_VSPW(0),
-
-               .lcdcon3=       S3C2410_LCDCON3_HBPD(19) | \
-                               S3C2410_LCDCON3_HOZVAL(239) | \
-                               S3C2410_LCDCON3_HFPD(7),
-
-               .lcdcon4=       S3C2410_LCDCON4_MVAL(0) | \
-                               S3C2410_LCDCON4_HSPW(3),
-
-               .lcdcon5=       S3C2410_LCDCON5_FRM565 | \
-                               S3C2410_LCDCON5_INVVLINE | \
-                               S3C2410_LCDCON5_HWSWP,
-       },
+static struct s3c2410fb_display h1940_lcd __initdata = {
+       .lcdcon5=       S3C2410_LCDCON5_FRM565 | \
+                       S3C2410_LCDCON5_INVVLINE | \
+                       S3C2410_LCDCON5_HWSWP,
+
+       .type =         S3C2410_LCDCON1_TFT,
+       .width =        240,
+       .height =       320,
+       .pixclock =     260000,
+       .xres =         240,
+       .yres =         320,
+       .bpp =          16,
+       .left_margin =  20,
+       .right_margin = 8,
+       .hsync_len =    4,
+       .upper_margin = 8,
+       .lower_margin = 7,
+       .vsync_len =    1,
+};
+
+static struct s3c2410fb_mach_info h1940_fb_info __initdata = {
+       .displays = &h1940_lcd,
+       .num_displays = 1,
+       .default_display = 0,
+
        .lpcsel=        0x02,
        .gpccon=        0xaa940659,
        .gpccon_mask=   0xffffffff,
@@ -165,12 +167,6 @@ static struct s3c2410fb_mach_info h1940_lcdcfg __initdata = {
        .gpdcon_mask=   0xffffffff,
        .gpdup=         0x0000faff,
        .gpdup_mask=    0xffffffff,
-
-       .width=         240,
-       .height=        320,
-       .xres=          {240,240,240},
-       .yres=          {320,320,320},
-       .bpp=           {16,16,16},
 };
 
 static struct platform_device s3c_device_leds = {
@@ -217,7 +213,7 @@ static void __init h1940_init(void)
 {
        u32 tmp;
 
-       s3c24xx_fb_set_platdata(&h1940_lcdcfg);
+       s3c24xx_fb_set_platdata(&h1940_fb_info);
        s3c24xx_udc_set_platdata(&h1940_udc_cfg);
 
        /* Turn off suspend on both USB ports, and switch the
index e670b1e1631bd2619deb3189e7358bdeeb3ff185..a1caf4b0adacd839e82edb228476e5779155d9c1 100644 (file)
@@ -95,157 +95,83 @@ static struct s3c2410_uartcfg smdk2410_uartcfgs[] = {
 
 /* LCD driver info */
 
-/* Configuration for 640x480 SHARP LQ080V3DG01 */
-static struct s3c2410fb_mach_info qt2410_biglcd_cfg __initdata = {
-       .regs   = {
-
-               .lcdcon1        = S3C2410_LCDCON1_TFT16BPP |
-                                 S3C2410_LCDCON1_TFT |
-                                 S3C2410_LCDCON1_CLKVAL(0x01), /* HCLK/4 */
-
-               .lcdcon2        = S3C2410_LCDCON2_VBPD(18) |    /* 19 */
-                                 S3C2410_LCDCON2_LINEVAL(479) |
-                                 S3C2410_LCDCON2_VFPD(10) |    /* 11 */
-                                 S3C2410_LCDCON2_VSPW(14),     /* 15 */
-
-               .lcdcon3        = S3C2410_LCDCON3_HBPD(43) |    /* 44 */
-                                 S3C2410_LCDCON3_HOZVAL(639) | /* 640 */
-                                 S3C2410_LCDCON3_HFPD(115),    /* 116 */
-
-               .lcdcon4        = S3C2410_LCDCON4_MVAL(0) |
-                                 S3C2410_LCDCON4_HSPW(95),     /* 96 */
-
-               .lcdcon5        = S3C2410_LCDCON5_FRM565 |
-                                 S3C2410_LCDCON5_INVVLINE |
-                                 S3C2410_LCDCON5_INVVFRAME |
-                                 S3C2410_LCDCON5_PWREN |
-                                 S3C2410_LCDCON5_HWSWP,
+static struct s3c2410fb_display qt2410_lcd_cfg[] __initdata = {
+       {
+               /* Configuration for 640x480 SHARP LQ080V3DG01 */
+               .lcdcon5 = S3C2410_LCDCON5_FRM565 |
+                          S3C2410_LCDCON5_INVVLINE |
+                          S3C2410_LCDCON5_INVVFRAME |
+                          S3C2410_LCDCON5_PWREN |
+                          S3C2410_LCDCON5_HWSWP,
+
+               .type           = S3C2410_LCDCON1_TFT,
+               .width          = 640,
+               .height         = 480,
+
+               .pixclock       = 40000, /* HCLK/4 */
+               .xres           = 640,
+               .yres           = 480,
+               .bpp            = 16,
+               .left_margin    = 44,
+               .right_margin   = 116,
+               .hsync_len      = 96,
+               .upper_margin   = 19,
+               .lower_margin   = 11,
+               .vsync_len      = 15,
        },
-
-       .lpcsel         = ((0xCE6) & ~7) | 1<<4,
-
-       .width          = 640,
-       .height         = 480,
-
-       .xres           = {
-               .min    = 640,
-               .max    = 640,
-               .defval = 640,
-       },
-
-       .yres           = {
-               .min    = 480,
-               .max    = 480,
-               .defval = 480,
-       },
-
-       .bpp            = {
-               .min    = 16,
-               .max    = 16,
-               .defval = 16,
-       },
-};
-
-/* Configuration for 480x640 toppoly TD028TTEC1 */
-static struct s3c2410fb_mach_info qt2410_prodlcd_cfg __initdata = {
-       .regs   = {
-
-               .lcdcon1        = S3C2410_LCDCON1_TFT16BPP |
-                                 S3C2410_LCDCON1_TFT |
-                                 S3C2410_LCDCON1_CLKVAL(0x01), /* HCLK/4 */
-
-               .lcdcon2        = S3C2410_LCDCON2_VBPD(1) |     /* 2 */
-                                 S3C2410_LCDCON2_LINEVAL(639) |/* 640 */
-                                 S3C2410_LCDCON2_VFPD(3) |     /* 4 */
-                                 S3C2410_LCDCON2_VSPW(1),      /* 2 */
-
-               .lcdcon3        = S3C2410_LCDCON3_HBPD(7) |     /* 8 */
-                                 S3C2410_LCDCON3_HOZVAL(479) | /* 479 */
-                                 S3C2410_LCDCON3_HFPD(23),     /* 24 */
-
-               .lcdcon4        = S3C2410_LCDCON4_MVAL(0) |
-                                 S3C2410_LCDCON4_HSPW(7),      /* 8 */
-
-               .lcdcon5        = S3C2410_LCDCON5_FRM565 |
-                                 S3C2410_LCDCON5_INVVLINE |
-                                 S3C2410_LCDCON5_INVVFRAME |
-                                 S3C2410_LCDCON5_PWREN |
-                                 S3C2410_LCDCON5_HWSWP,
-       },
-
-       .lpcsel         = ((0xCE6) & ~7) | 1<<4,
-
-       .width          = 480,
-       .height         = 640,
-
-       .xres           = {
-               .min    = 480,
-               .max    = 480,
-               .defval = 480,
+       {
+               /* Configuration for 480x640 toppoly TD028TTEC1 */
+               .lcdcon5 = S3C2410_LCDCON5_FRM565 |
+                          S3C2410_LCDCON5_INVVLINE |
+                          S3C2410_LCDCON5_INVVFRAME |
+                          S3C2410_LCDCON5_PWREN |
+                          S3C2410_LCDCON5_HWSWP,
+
+               .type           = S3C2410_LCDCON1_TFT,
+               .width          = 480,
+               .height         = 640,
+               .pixclock       = 40000, /* HCLK/4 */
+               .xres           = 480,
+               .yres           = 640,
+               .bpp            = 16,
+               .left_margin    = 8,
+               .right_margin   = 24,
+               .hsync_len      = 8,
+               .upper_margin   = 2,
+               .lower_margin   = 4,
+               .vsync_len      = 2,
        },
-
-       .yres           = {
-               .min    = 640,
-               .max    = 640,
-               .defval = 640,
-       },
-
-       .bpp            = {
-               .min    = 16,
-               .max    = 16,
-               .defval = 16,
+       {
+               /* Config for 240x320 LCD */
+               .lcdcon5 = S3C2410_LCDCON5_FRM565 |
+                          S3C2410_LCDCON5_INVVLINE |
+                          S3C2410_LCDCON5_INVVFRAME |
+                          S3C2410_LCDCON5_PWREN |
+                          S3C2410_LCDCON5_HWSWP,
+
+               .type           = S3C2410_LCDCON1_TFT,
+               .width          = 240,
+               .height         = 320,
+               .pixclock       = 100000, /* HCLK/10 */
+               .xres           = 240,
+               .yres           = 320,
+               .bpp            = 16,
+               .left_margin    = 13,
+               .right_margin   = 8,
+               .hsync_len      = 4,
+               .upper_margin   = 2,
+               .lower_margin   = 7,
+               .vsync_len      = 4,
        },
 };
 
-/* Config for 240x320 LCD */
-static struct s3c2410fb_mach_info qt2410_lcd_cfg __initdata = {
-       .regs   = {
-
-               .lcdcon1        = S3C2410_LCDCON1_TFT16BPP |
-                                 S3C2410_LCDCON1_TFT |
-                                 S3C2410_LCDCON1_CLKVAL(0x04),
-
-               .lcdcon2        = S3C2410_LCDCON2_VBPD(1) |
-                                 S3C2410_LCDCON2_LINEVAL(319) |
-                                 S3C2410_LCDCON2_VFPD(6) |
-                                 S3C2410_LCDCON2_VSPW(3),
-
-               .lcdcon3        = S3C2410_LCDCON3_HBPD(12) |
-                                 S3C2410_LCDCON3_HOZVAL(239) |
-                                 S3C2410_LCDCON3_HFPD(7),
 
-               .lcdcon4        = S3C2410_LCDCON4_MVAL(0) |
-                                 S3C2410_LCDCON4_HSPW(3),
-
-               .lcdcon5        = S3C2410_LCDCON5_FRM565 |
-                                 S3C2410_LCDCON5_INVVLINE |
-                                 S3C2410_LCDCON5_INVVFRAME |
-                                 S3C2410_LCDCON5_PWREN |
-                                 S3C2410_LCDCON5_HWSWP,
-       },
+static struct s3c2410fb_mach_info qt2410_fb_info __initdata = {
+       .displays       = qt2410_lcd_cfg,
+       .num_displays   = ARRAY_SIZE(qt2410_lcd_cfg),
+       .default_display = 0,
 
        .lpcsel         = ((0xCE6) & ~7) | 1<<4,
-
-       .width          = 240,
-       .height         = 320,
-
-       .xres           = {
-               .min    = 240,
-               .max    = 240,
-               .defval = 240,
-       },
-
-       .yres           = {
-               .min    = 320,
-               .max    = 320,
-               .defval = 320,
-       },
-
-       .bpp            = {
-               .min    = 16,
-               .max    = 16,
-               .defval = 16,
-       },
 };
 
 /* CS8900 */
@@ -408,16 +334,17 @@ static void __init qt2410_machine_init(void)
 
        switch (tft_type) {
        case 'p': /* production */
-               s3c24xx_fb_set_platdata(&qt2410_prodlcd_cfg);
+               qt2410_fb_info.default_display = 1;
                break;
        case 'b': /* big */
-               s3c24xx_fb_set_platdata(&qt2410_biglcd_cfg);
+               qt2410_fb_info.default_display = 0;
                break;
        case 's': /* small */
        default:
-               s3c24xx_fb_set_platdata(&qt2410_lcd_cfg);
+               qt2410_fb_info.default_display = 2;
                break;
        }
+       s3c24xx_fb_set_platdata(&qt2410_fb_info);
 
        s3c2410_gpio_cfgpin(S3C2410_GPB0, S3C2410_GPIO_OUTPUT);
        s3c2410_gpio_setpin(S3C2410_GPB0, 1);
index b59e6d39f2f267f8cd09508c729665437df2e424..bac40c4878a50ae93dc1b309e2ed6c7bca1c1227 100644 (file)
@@ -110,28 +110,32 @@ static struct s3c2410_uartcfg rx3715_uartcfgs[] = {
 
 /* framebuffer lcd controller information */
 
-static struct s3c2410fb_mach_info rx3715_lcdcfg __initdata = {
-       .regs   = {
-               .lcdcon1 =      S3C2410_LCDCON1_TFT16BPP | \
-                               S3C2410_LCDCON1_TFT | \
-                               S3C2410_LCDCON1_CLKVAL(0x0C),
-
-               .lcdcon2 =      S3C2410_LCDCON2_VBPD(5) | \
-                               S3C2410_LCDCON2_LINEVAL(319) | \
-                               S3C2410_LCDCON2_VFPD(6) | \
-                               S3C2410_LCDCON2_VSPW(2),
-
-               .lcdcon3 =      S3C2410_LCDCON3_HBPD(35) | \
-                               S3C2410_LCDCON3_HOZVAL(239) | \
-                               S3C2410_LCDCON3_HFPD(35),
-
-               .lcdcon4 =      S3C2410_LCDCON4_MVAL(0) | \
-                               S3C2410_LCDCON4_HSPW(7),
-
-               .lcdcon5 =      S3C2410_LCDCON5_INVVLINE |
-                               S3C2410_LCDCON5_FRM565 |
-                               S3C2410_LCDCON5_HWSWP,
-       },
+static struct s3c2410fb_display rx3715_lcdcfg __initdata = {
+       .lcdcon5 =      S3C2410_LCDCON5_INVVLINE |
+                       S3C2410_LCDCON5_FRM565 |
+                       S3C2410_LCDCON5_HWSWP,
+
+       .type           = S3C2410_LCDCON1_TFT,
+       .width          = 240,
+       .height         = 320,
+
+       .pixclock       = 260000,
+       .xres           = 240,
+       .yres           = 320,
+       .bpp            = 16,
+       .left_margin    = 36,
+       .right_margin   = 36,
+       .hsync_len      = 8,
+       .upper_margin   = 6,
+       .lower_margin   = 7,
+       .vsync_len      = 3,
+};
+
+static struct s3c2410fb_mach_info rx3715_fb_info __initdata = {
+
+       .displays =     &rx3715_lcdcfg,
+       .num_displays = 1,
+       .default_display = 0,
 
        .lpcsel =       0xf82,
 
@@ -144,28 +148,6 @@ static struct s3c2410fb_mach_info rx3715_lcdcfg __initdata = {
        .gpdcon_mask =  0xffc0fff0,
        .gpdup =        0x0000faff,
        .gpdup_mask =   0xffffffff,
-
-       .fixed_syncs =  1,
-       .width  =       240,
-       .height =       320,
-
-       .xres   = {
-               .min =          240,
-               .max =          240,
-               .defval =       240,
-       },
-
-       .yres   = {
-               .max =          320,
-               .min =          320,
-               .defval =       320,
-       },
-
-       .bpp    = {
-               .min =          16,
-               .max =          16,
-               .defval =       16,
-       },
 };
 
 static struct mtd_partition rx3715_nand_part[] = {
@@ -224,7 +206,7 @@ static void __init rx3715_init_machine(void)
 #endif
        s3c2410_pm_init();
 
-       s3c24xx_fb_set_platdata(&rx3715_lcdcfg);
+       s3c24xx_fb_set_platdata(&rx3715_fb_info);
        platform_add_devices(rx3715_devices, ARRAY_SIZE(rx3715_devices));
 }
 
index 670115b8a12ea49c3592fa3bdbde0b6dc4f4e875..4552828bf8000965c4dcc7d09905dcf36b5668c8 100644 (file)
@@ -103,31 +103,35 @@ static struct s3c2410_uartcfg smdk2440_uartcfgs[] __initdata = {
 
 /* LCD driver info */
 
-static struct s3c2410fb_mach_info smdk2440_lcd_cfg __initdata = {
-       .regs   = {
-
-               .lcdcon1        = S3C2410_LCDCON1_TFT16BPP |
-                                 S3C2410_LCDCON1_TFT |
-                                 S3C2410_LCDCON1_CLKVAL(0x04),
-
-               .lcdcon2        = S3C2410_LCDCON2_VBPD(7) |
-                                 S3C2410_LCDCON2_LINEVAL(319) |
-                                 S3C2410_LCDCON2_VFPD(6) |
-                                 S3C2410_LCDCON2_VSPW(3),
-
-               .lcdcon3        = S3C2410_LCDCON3_HBPD(19) |
-                                 S3C2410_LCDCON3_HOZVAL(239) |
-                                 S3C2410_LCDCON3_HFPD(7),
-
-               .lcdcon4        = S3C2410_LCDCON4_MVAL(0) |
-                                 S3C2410_LCDCON4_HSPW(3),
-
-               .lcdcon5        = S3C2410_LCDCON5_FRM565 |
-                                 S3C2410_LCDCON5_INVVLINE |
-                                 S3C2410_LCDCON5_INVVFRAME |
-                                 S3C2410_LCDCON5_PWREN |
-                                 S3C2410_LCDCON5_HWSWP,
-       },
+static struct s3c2410fb_display smdk2440_lcd_cfg __initdata = {
+
+       .lcdcon5        = S3C2410_LCDCON5_FRM565 |
+                         S3C2410_LCDCON5_INVVLINE |
+                         S3C2410_LCDCON5_INVVFRAME |
+                         S3C2410_LCDCON5_PWREN |
+                         S3C2410_LCDCON5_HWSWP,
+
+       .type           = S3C2410_LCDCON1_TFT,
+
+       .width          = 240,
+       .height         = 320,
+
+       .pixclock       = 166667, /* HCLK 60 MHz, divisor 10 */
+       .xres           = 240,
+       .yres           = 320,
+       .bpp            = 16,
+       .left_margin    = 20,
+       .right_margin   = 8,
+       .hsync_len      = 4,
+       .upper_margin   = 8,
+       .lower_margin   = 7,
+       .vsync_len      = 4,
+};
+
+static struct s3c2410fb_mach_info smdk2440_fb_info __initdata = {
+       .displays       = &smdk2440_lcd_cfg,
+       .num_displays   = 1,
+       .default_display = 0,
 
 #if 0
        /* currently setup by downloader */
@@ -142,28 +146,6 @@ static struct s3c2410fb_mach_info smdk2440_lcd_cfg __initdata = {
 #endif
 
        .lpcsel         = ((0xCE6) & ~7) | 1<<4,
-       .type           = S3C2410_LCDCON1_TFT16BPP,
-
-       .width          = 240,
-       .height         = 320,
-
-       .xres           = {
-               .min    = 240,
-               .max    = 240,
-               .defval = 240,
-       },
-
-       .yres           = {
-               .min    = 320,
-               .max    = 320,
-               .defval = 320,
-       },
-
-       .bpp            = {
-               .min    = 16,
-               .max    = 16,
-               .defval = 16,
-       },
 };
 
 static struct platform_device *smdk2440_devices[] __initdata = {
@@ -183,7 +165,7 @@ static void __init smdk2440_map_io(void)
 
 static void __init smdk2440_machine_init(void)
 {
-       s3c24xx_fb_set_platdata(&smdk2440_lcd_cfg);
+       s3c24xx_fb_set_platdata(&smdk2440_fb_info);
 
        platform_add_devices(smdk2440_devices, ARRAY_SIZE(smdk2440_devices));
        smdk_machine_init();
index 846cce48e2b7fa8e2a012bfab6e76e1431390155..59ed1d05b71bf6d858e515d928da4ad102276d91 100644 (file)
@@ -266,7 +266,7 @@ do_page_fault(unsigned long addr, unsigned int fsr, struct pt_regs *regs)
                 * the page fault gracefully.
                 */
                printk("VM: killing process %s\n", tsk->comm);
-               do_exit(SIGKILL);
+               do_group_exit(SIGKILL);
                return 0;
        }
        if (fault & VM_FAULT_SIGBUS) {
index 4942ee662e0b53c14fb84c572a1902992433a031..20b1c9d8f945e1e68e994286728476f548d82bf2 100644 (file)
@@ -22,6 +22,8 @@ DEFINE_PER_CPU(struct kprobe *, current_kprobe);
 static unsigned long kprobe_status;
 static struct pt_regs jprobe_saved_regs;
 
+struct kretprobe_blackpoint kretprobe_blacklist[] = {{NULL, NULL}};
+
 int __kprobes arch_prepare_kprobe(struct kprobe *p)
 {
        int ret = 0;
index 39060cbeb2a3e2acc45509fe8ea8303222bd17e3..9e16b8a447f206ff81bec212e69055dac79c3718 100644 (file)
@@ -227,11 +227,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
                ret = 0;
                break;
 
-       /* Detach a process that was attached */
-       case PTRACE_DETACH:
-               ret = ptrace_detach(child, data);
-               break;
-
        case PTRACE_GETREGS:
                ret = ptrace_getregs(child, (void __user *)data);
                break;
index ae2d2c593b2b027efa74f6a69ab31efabf8ec5b6..11472f8701bdf4a88202d81e723efef38208e743 100644 (file)
@@ -216,7 +216,7 @@ out_of_memory:
        }
        printk("VM: Killing process %s\n", tsk->comm);
        if (user_mode(regs))
-               do_exit(SIGKILL);
+               do_group_exit(SIGKILL);
        goto no_context;
 
 do_sigbus:
index 64ce5fea8609afd848dbf301f2fccb10e53668a5..85caf9b711a16ff59eb069a42ee9fb29491a589b 100644 (file)
@@ -385,12 +385,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
                        break;
                }
 
-       case PTRACE_DETACH:
-               {               /* detach a process that was attached. */
-                       ret = ptrace_detach(child, data);
-                       break;
-               }
-
        case PTRACE_GETREGS:
                {
 
index f4f9db698b445afff62158c4b8e00e3451145b0c..b570ae9b6cad22396e987508b3bfc3f38d61659f 100644 (file)
@@ -177,10 +177,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
                        ret = 0;
                        break;
 
-               case PTRACE_DETACH:
-                       ret = ptrace_detach(child, data);
-                       break;
-
                /* Get all GP registers from the child. */
                case PTRACE_GETREGS: {
                        int i;
index 077e973c33f0c131be44a9c8e32fd4c149b61528..575a14bb110613bfba8dfc3eaf8d53191fe8bbfb 100644 (file)
@@ -254,8 +254,12 @@ timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
  * it needs to be IRQF_DISABLED to make the jiffies update work properly
  */
 
-static struct irqaction irq2  = { timer_interrupt, IRQF_SHARED | IRQF_DISABLED,
-                                 CPU_MASK_NONE, "timer", NULL, NULL};
+static struct irqaction irq2  = {
+       .handler = timer_interrupt,
+       .flags = IRQF_SHARED | IRQF_DISABLED,
+       .mask = CPU_MASK_NONE,
+       .name = "timer",
+};
 
 void __init
 time_init(void)
index 38ece0cd47cbbd4c6195b9e9bc1dbcc13f80e353..2df60529a8af3b8a4c9c2b19410266faef2eead6 100644 (file)
@@ -245,10 +245,6 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
                        break;
 
                }
-               case PTRACE_DETACH:
-                       ret = ptrace_detach(child, data);
-                       break;
-
                /* Get all GP registers from the child. */
                case PTRACE_GETREGS: {
                        int i;
index 77e655f26560a82660389d03e67c402a35627002..697494bc2de1ef360b47e811b740e48ae9fe7c55 100644 (file)
@@ -63,8 +63,12 @@ static unsigned long irq_regs[NR_CPUS] =
 
 static irqreturn_t crisv32_ipi_interrupt(int irq, void *dev_id, struct pt_regs *regs);
 static int send_ipi(int vector, int wait, cpumask_t cpu_mask);
-static struct irqaction irq_ipi  = { crisv32_ipi_interrupt, IRQF_DISABLED,
-                                     CPU_MASK_NONE, "ipi", NULL, NULL};
+static struct irqaction irq_ipi  = {
+       .handler = crisv32_ipi_interrupt,
+       .flags = IRQF_DISABLED,
+       .mask = CPU_MASK_NONE,
+       .name = "ipi",
+};
 
 extern void cris_mmu_init(void);
 extern void cris_timer_init(void);
index 8672ab7d7978f4e0303c8bd466062487d246f478..8aab814306955a68a150a2453cfcb72f62c2441f 100644 (file)
@@ -360,7 +360,7 @@ do_page_fault(unsigned long address, struct pt_regs *regs,
        up_read(&mm->mmap_sem);
        printk("VM: killing process %s\n", tsk->comm);
        if (user_mode(regs))
-               do_exit(SIGKILL);
+               do_group_exit(SIGKILL);
        goto no_context;
 
  do_sigbus:
index ed588d73d7d8528bb93f4909affca45403270d87..e83e0bccfab98d50af92d125e133ef8b275973fd 100644 (file)
@@ -43,7 +43,10 @@ unsigned long __delay_loops_MHz;
 static irqreturn_t timer_interrupt(int irq, void *dummy);
 
 static struct irqaction timer_irq  = {
-       timer_interrupt, IRQF_DISABLED, CPU_MASK_NONE, "timer", NULL, NULL
+       .handler = timer_interrupt,
+       .flags = IRQF_DISABLED,
+       .mask = CPU_MASK_NONE,
+       .name = "timer",
 };
 
 static inline int set_rtc_mmss(unsigned long nowtime)
index 6798fa0257b1521cab1c033c806d10236fc8c389..05093d41d98ea77c9213f50d8920cfc69d4c3874 100644 (file)
@@ -259,7 +259,7 @@ asmlinkage void do_page_fault(int datammu, unsigned long esr0, unsigned long ear
        up_read(&mm->mmap_sem);
        printk("VM: killing process %s\n", current->comm);
        if (user_mode(__frame))
-               do_exit(SIGKILL);
+               do_group_exit(SIGKILL);
        goto no_context;
 
  do_sigbus:
index 2e6310b8eab71e9eeb3bc61fbfc7b0806f6250b3..59b91ac861ac5cbabc3373a770fa76e51955e287 100644 (file)
@@ -54,6 +54,11 @@ config ARCH_HAS_ILOG2_U64
        bool
        default n
 
+config HUGETLB_PAGE_SIZE_VARIABLE
+       bool
+       depends on HUGETLB_PAGE
+       default y
+
 config GENERIC_FIND_NEXT_BIT
        bool
        default y
@@ -300,6 +305,9 @@ config HOTPLUG_CPU
 config ARCH_ENABLE_MEMORY_HOTPLUG
        def_bool y
 
+config ARCH_ENABLE_MEMORY_HOTREMOVE
+       def_bool y
+
 config SCHED_SMT
        bool "SMT scheduler support"
        depends on SMP
@@ -348,6 +356,7 @@ config ARCH_FLATMEM_ENABLE
 config ARCH_SPARSEMEM_ENABLE
        def_bool y
        depends on ARCH_DISCONTIGMEM_ENABLE
+       select SPARSEMEM_VMEMMAP_ENABLE
 
 config ARCH_DISCONTIGMEM_DEFAULT
        def_bool y if (IA64_SGI_SN2 || IA64_GENERIC || IA64_HP_ZX1 || IA64_HP_ZX1_SWIOTLB)
index e980e7aa2306eb52ddc51632b48d97d892157704..4338f4123f31688ad44697c17f7605efeaf4e4b3 100644 (file)
@@ -396,7 +396,7 @@ sba_dump_sg( struct ioc *ioc, struct scatterlist *startsg, int nents)
                printk(KERN_DEBUG " %d : DMA %08lx/%05x CPU %p\n", nents,
                       startsg->dma_address, startsg->dma_length,
                       sba_sg_address(startsg));
-               startsg++;
+               startsg = sg_next(startsg);
        }
 }
 
@@ -409,7 +409,7 @@ sba_check_sg( struct ioc *ioc, struct scatterlist *startsg, int nents)
        while (the_nents-- > 0) {
                if (sba_sg_address(the_sg) == 0x0UL)
                        sba_dump_sg(NULL, startsg, nents);
-               the_sg++;
+               the_sg = sg_next(the_sg);
        }
 }
 
@@ -1201,7 +1201,7 @@ sba_fill_pdir(
                        u32 pide = startsg->dma_address & ~PIDE_FLAG;
                        dma_offset = (unsigned long) pide & ~iovp_mask;
                        startsg->dma_address = 0;
-                       dma_sg++;
+                       dma_sg = sg_next(dma_sg);
                        dma_sg->dma_address = pide | ioc->ibase;
                        pdirp = &(ioc->pdir_base[pide >> iovp_shift]);
                        n_mappings++;
@@ -1228,7 +1228,7 @@ sba_fill_pdir(
                                pdirp++;
                        } while (cnt > 0);
                }
-               startsg++;
+               startsg = sg_next(startsg);
        }
        /* force pdir update */
        wmb();
@@ -1297,7 +1297,7 @@ sba_coalesce_chunks( struct ioc *ioc,
                while (--nents > 0) {
                        unsigned long vaddr;    /* tmp */
 
-                       startsg++;
+                       startsg = sg_next(startsg);
 
                        /* PARANOID */
                        startsg->dma_address = startsg->dma_length = 0;
@@ -1407,7 +1407,7 @@ int sba_map_sg(struct device *dev, struct scatterlist *sglist, int nents, int di
 #ifdef ALLOW_IOV_BYPASS_SG
        ASSERT(to_pci_dev(dev)->dma_mask);
        if (likely((ioc->dma_mask & ~to_pci_dev(dev)->dma_mask) == 0)) {
-               for (sg = sglist ; filled < nents ; filled++, sg++){
+               for_each_sg(sglist, sg, nents, filled) {
                        sg->dma_length = sg->length;
                        sg->dma_address = virt_to_phys(sba_sg_address(sg));
                }
@@ -1501,7 +1501,7 @@ void sba_unmap_sg (struct device *dev, struct scatterlist *sglist, int nents, in
        while (nents && sglist->dma_length) {
 
                sba_unmap_single(dev, sglist->dma_address, sglist->dma_length, dir);
-               sglist++;
+               sglist = sg_next(sglist);
                nents--;
        }
 
index d62fa76e5a7d05680a3fcf2d1dc75faee35e88dc..a3a558a0675779e602d9bb43625646cfe2cb02b6 100644 (file)
@@ -360,6 +360,7 @@ static struct scsi_host_template driver_template = {
        .max_sectors            = 1024,
        .cmd_per_lun            = SIMSCSI_REQ_QUEUE_LEN,
        .use_clustering         = DISABLE_CLUSTERING,
+       .use_sg_chaining        = ENABLE_SG_CHAINING,
 };
 
 static int __init
index 6d198339bf85446d2f47d1bf7a2b5e9731dffbbb..44817d97ab43c91b7921ca83064d447da79034ad 100644 (file)
@@ -1,7 +1,8 @@
 /*
- * Linker script for gate DSO.  The gate pages are an ELF shared object prelinked to its
- * virtual address, with only one read-only segment and one execute-only segment (both fit
- * in one page).  This script controls its layout.
+ * Linker script for gate DSO.  The gate pages are an ELF shared object
+ * prelinked to its virtual address, with only one read-only segment and
+ * one execute-only segment (both fit in one page).  This script controls
+ * its layout.
  */
 
 
 
 SECTIONS
 {
-  . = GATE_ADDR + SIZEOF_HEADERS;
-
-  .hash                                : { *(.hash) }                          :readable
-  .gnu.hash                    : { *(.gnu.hash) }
-  .dynsym                      : { *(.dynsym) }
-  .dynstr                      : { *(.dynstr) }
-  .gnu.version                 : { *(.gnu.version) }
-  .gnu.version_d               : { *(.gnu.version_d) }
-  .gnu.version_r               : { *(.gnu.version_r) }
-  .dynamic                     : { *(.dynamic) }                       :readable :dynamic
-
-  /*
-   * This linker script is used both with -r and with -shared.  For the layouts to match,
-   * we need to skip more than enough space for the dynamic symbol table et al.  If this
-   * amount is insufficient, ld -shared will barf.  Just increase it here.
-   */
-  . = GATE_ADDR + 0x500;
-
-  .data.patch                  : {
-                                   __start_gate_mckinley_e9_patchlist = .;
-                                   *(.data.patch.mckinley_e9)
-                                   __end_gate_mckinley_e9_patchlist = .;
-
-                                   __start_gate_vtop_patchlist = .;
-                                   *(.data.patch.vtop)
-                                   __end_gate_vtop_patchlist = .;
-
-                                   __start_gate_fsyscall_patchlist = .;
-                                   *(.data.patch.fsyscall_table)
-                                   __end_gate_fsyscall_patchlist = .;
-
-                                   __start_gate_brl_fsys_bubble_down_patchlist = .;
-                                   *(.data.patch.brl_fsys_bubble_down)
-                                   __end_gate_brl_fsys_bubble_down_patchlist = .;
-  }                                                                    :readable
-  .IA_64.unwind_info           : { *(.IA_64.unwind_info*) }
-  .IA_64.unwind                        : { *(.IA_64.unwind*) }                 :readable :unwind
+       . = GATE_ADDR + SIZEOF_HEADERS;
+
+       .hash                   : { *(.hash) }          :readable
+       .gnu.hash               : { *(.gnu.hash) }
+       .dynsym                 : { *(.dynsym) }
+       .dynstr                 : { *(.dynstr) }
+       .gnu.version            : { *(.gnu.version) }
+       .gnu.version_d          : { *(.gnu.version_d) }
+       .gnu.version_r          : { *(.gnu.version_r) }
+
+       .dynamic                : { *(.dynamic) }       :readable       :dynamic
+
+       /*
+        * This linker script is used both with -r and with -shared.  For
+        * the layouts to match, we need to skip more than enough space for
+        * the dynamic symbol table et al.  If this amount is insufficient,
+        * ld -shared will barf.  Just increase it here.
+        */
+       . = GATE_ADDR + 0x500;
+
+       .data.patch             : {
+               __start_gate_mckinley_e9_patchlist = .;
+               *(.data.patch.mckinley_e9)
+               __end_gate_mckinley_e9_patchlist = .;
+
+               __start_gate_vtop_patchlist = .;
+               *(.data.patch.vtop)
+               __end_gate_vtop_patchlist = .;
+
+               __start_gate_fsyscall_patchlist = .;
+               *(.data.patch.fsyscall_table)
+               __end_gate_fsyscall_patchlist = .;
+
+               __start_gate_brl_fsys_bubble_down_patchlist = .;
+               *(.data.patch.brl_fsys_bubble_down)
+               __end_gate_brl_fsys_bubble_down_patchlist = .;
+       }                                               :readable
+
+       .IA_64.unwind_info      : { *(.IA_64.unwind_info*) }
+       .IA_64.unwind           : { *(.IA_64.unwind*) } :readable       :unwind
 #ifdef HAVE_BUGGY_SEGREL
-  .text (GATE_ADDR + PAGE_SIZE)        : { *(.text) *(.text.*) }               :readable
+       .text (GATE_ADDR + PAGE_SIZE) : { *(.text) *(.text.*) } :readable
 #else
-  . = ALIGN (PERCPU_PAGE_SIZE) + (. & (PERCPU_PAGE_SIZE - 1));
-  .text                                : { *(.text) *(.text.*) }               :epc
+       . = ALIGN(PERCPU_PAGE_SIZE) + (. & (PERCPU_PAGE_SIZE - 1));
+       .text                   : { *(.text) *(.text.*) }       :epc
 #endif
 
-  /DISCARD/                    : {
-       *(.got.plt) *(.got)
-       *(.data .data.* .gnu.linkonce.d.*)
-       *(.dynbss)
-       *(.bss .bss.* .gnu.linkonce.b.*)
-       *(__ex_table)
-       *(__mca_table)
-  }
+       /DISCARD/               : {
+               *(.got.plt) *(.got)
+               *(.data .data.* .gnu.linkonce.d.*)
+               *(.dynbss)
+               *(.bss .bss.* .gnu.linkonce.b.*)
+               *(__ex_table)
+               *(__mca_table)
+       }
 }
 
+/*
+ * ld does not recognize this name token; use the constant.
+ */
+#define        PT_IA_64_UNWIND 0x70000001
+
 /*
  * We must supply the ELF program headers explicitly to get just one
  * PT_LOAD segment, and set the flags explicitly to make segments read-only.
  */
 PHDRS
 {
-  readable  PT_LOAD    FILEHDR PHDRS   FLAGS(4);       /* PF_R */
+       readable        PT_LOAD FILEHDR PHDRS   FLAGS(4);       /* PF_R */
 #ifndef HAVE_BUGGY_SEGREL
-  epc      PT_LOAD     FILEHDR PHDRS   FLAGS(1);       /* PF_X */
+       epc             PT_LOAD FILEHDR PHDRS   FLAGS(1);       /* PF_X */
 #endif
-  dynamic   PT_DYNAMIC                 FLAGS(4);       /* PF_R */
-  unwind    0x70000001; /* PT_IA_64_UNWIND, but ld doesn't match the name */
+       dynamic         PT_DYNAMIC              FLAGS(4);       /* PF_R */
+       unwind          PT_IA_64_UNWIND;
 }
 
 /*
@@ -82,14 +91,14 @@ PHDRS
  */
 VERSION
 {
-  LINUX_2.5 {
-    global:
-       __kernel_syscall_via_break;
-       __kernel_syscall_via_epc;
-       __kernel_sigtramp;
-
-    local: *;
-  };
+       LINUX_2.5 {
+       global:
+               __kernel_syscall_via_break;
+               __kernel_syscall_via_epc;
+               __kernel_sigtramp;
+
+       local: *;
+       };
 }
 
 /* The ELF entry point can be used to set the AT_SYSINFO value.  */
index 5dc98b5abcfbcc3de963e60faaa139d86d362170..5fd65d8302c8561e50cf12a576f0c54569c30d1d 100644 (file)
@@ -40,6 +40,8 @@ extern void jprobe_inst_return(void);
 DEFINE_PER_CPU(struct kprobe *, current_kprobe) = NULL;
 DEFINE_PER_CPU(struct kprobe_ctlblk, kprobe_ctlblk);
 
+struct kretprobe_blackpoint kretprobe_blacklist[] = {{NULL, NULL}};
+
 enum instruction_type {A, I, M, F, B, L, X, u};
 static enum instruction_type bundle_encoding[32][3] = {
   { M, I, I },                         /* 00 */
index 9e392a30d19783d3426ca720b95fbea1221a71ff..777c8d8bd5e70febf80c8e5a8ed0c5d94d85de40 100644 (file)