From 4c4da11dc29f4097380997884945f89c086feaeb Mon Sep 17 00:00:00 2001 From: Jeff Garzik Date: Sat, 1 Dec 2007 16:20:02 -0500 Subject: [PATCH] --- yaml --- r: 74466 b: refs/heads/master c: 85b161a826f1954e9605deb3e6faa4be4d285a34 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/Documentation/00-INDEX | 2 + trunk/Documentation/DocBook/Makefile | 2 +- trunk/Documentation/DocBook/uio-howto.tmpl | 90 +- trunk/Documentation/lguest/lguest.c | 9 +- .../namespaces/compatibility-list.txt | 39 + trunk/Documentation/parport-lowlevel.txt | 4 + .../powerpc/booting-without-of.txt | 5 +- trunk/Documentation/thinkpad-acpi.txt | 73 +- trunk/Documentation/tty.txt | 8 + trunk/Documentation/usb/power-management.txt | 8 + trunk/Documentation/x86_64/uefi.txt | 29 + trunk/MAINTAINERS | 131 +- trunk/Makefile | 11 +- trunk/README | 2 - trunk/arch/alpha/kernel/pci-noop.c | 14 +- trunk/arch/arm/common/uengine.c | 6 +- trunk/arch/arm/kernel/entry-armv.S | 96 +- trunk/arch/arm/kernel/traps.c | 5 +- trunk/arch/arm/mach-at91/at91rm9200_devices.c | 41 +- .../arch/arm/mach-at91/at91sam9260_devices.c | 42 +- .../arch/arm/mach-at91/at91sam9261_devices.c | 42 +- .../arch/arm/mach-at91/at91sam9263_devices.c | 42 +- trunk/arch/arm/mach-at91/at91sam9rl_devices.c | 43 +- trunk/arch/arm/mach-at91/board-carmeva.c | 2 +- trunk/arch/arm/mach-at91/board-csb337.c | 11 +- trunk/arch/arm/mach-at91/board-csb637.c | 2 +- trunk/arch/arm/mach-at91/board-dk.c | 15 +- trunk/arch/arm/mach-at91/board-eb9200.c | 10 +- trunk/arch/arm/mach-at91/board-ek.c | 2 +- trunk/arch/arm/mach-at91/board-kafa.c | 2 +- trunk/arch/arm/mach-at91/board-kb9202.c | 2 +- trunk/arch/arm/mach-at91/board-picotux200.c | 2 +- trunk/arch/arm/mach-at91/board-sam9260ek.c | 2 +- trunk/arch/arm/mach-at91/board-sam9261ek.c | 18 +- trunk/arch/arm/mach-at91/board-sam9263ek.c | 2 +- trunk/arch/arm/mach-at91/board-sam9rlek.c | 2 +- trunk/arch/arm/mach-at91/clock.c | 9 +- trunk/arch/arm/mach-imx/irq.c | 51 +- trunk/arch/arm/mach-pxa/pxa27x.c | 2 +- trunk/arch/arm/mach-pxa/pxa320.c | 7 +- trunk/arch/arm/mach-pxa/ssp.c | 1 + trunk/arch/blackfin/Kconfig | 314 +---- trunk/arch/blackfin/Kconfig.debug | 178 +++ trunk/arch/blackfin/Makefile | 2 + .../blackfin/configs/BF527-EZKIT_defconfig | 27 +- .../blackfin/configs/BF533-EZKIT_defconfig | 41 +- .../blackfin/configs/BF533-STAMP_defconfig | 41 +- .../blackfin/configs/BF537-STAMP_defconfig | 83 +- .../blackfin/configs/BF548-EZKIT_defconfig | 30 +- .../blackfin/configs/BF561-EZKIT_defconfig | 49 +- trunk/arch/blackfin/configs/H8606_defconfig | 1160 +++++++++++++++++ trunk/arch/blackfin/configs/PNAV-10_defconfig | 75 +- trunk/arch/blackfin/kernel/bfin_dma_5xx.c | 1 + trunk/arch/blackfin/kernel/bfin_ksyms.c | 7 +- trunk/arch/blackfin/kernel/cplbinit.c | 73 +- trunk/arch/blackfin/kernel/early_printk.c | 3 +- trunk/arch/blackfin/kernel/process.c | 66 - trunk/arch/blackfin/kernel/setup.c | 9 +- trunk/arch/blackfin/kernel/traps.c | 147 ++- trunk/arch/blackfin/lib/Makefile | 2 +- trunk/arch/blackfin/lib/ins.S | 19 + trunk/arch/blackfin/lib/strcmp.c | 11 +- trunk/arch/blackfin/lib/strcpy.c | 11 +- trunk/arch/blackfin/lib/strncmp.c | 11 +- trunk/arch/blackfin/lib/strncpy.c | 11 +- trunk/arch/blackfin/lib/udivdi3.S | 375 ------ trunk/arch/blackfin/mach-bf527/Kconfig | 2 + trunk/arch/blackfin/mach-bf527/boards/Kconfig | 12 + .../arch/blackfin/mach-bf527/boards/Makefile | 6 +- .../arch/blackfin/mach-bf527/boards/eth_mac.c | 50 - trunk/arch/blackfin/mach-bf527/boards/ezkit.c | 37 +- trunk/arch/blackfin/mach-bf533/Kconfig | 2 + trunk/arch/blackfin/mach-bf533/boards/H8606.c | 12 +- trunk/arch/blackfin/mach-bf533/boards/Kconfig | 34 + .../arch/blackfin/mach-bf533/boards/Makefile | 2 +- .../blackfin/mach-bf533/boards/cm_bf533.c | 4 +- trunk/arch/blackfin/mach-bf533/boards/ezkit.c | 4 +- .../mach-bf533/boards/generic_board.c | 4 - trunk/arch/blackfin/mach-bf533/boards/stamp.c | 4 +- trunk/arch/blackfin/mach-bf537/Kconfig | 2 + trunk/arch/blackfin/mach-bf537/boards/Kconfig | 29 + .../arch/blackfin/mach-bf537/boards/Makefile | 9 +- .../blackfin/mach-bf537/boards/cm_bf537.c | 11 +- .../arch/blackfin/mach-bf537/boards/eth_mac.c | 50 - .../mach-bf537/boards/generic_board.c | 13 +- .../arch/blackfin/mach-bf537/boards/pnav10.c | 15 +- trunk/arch/blackfin/mach-bf537/boards/stamp.c | 50 +- trunk/arch/blackfin/mach-bf548/Kconfig | 2 + trunk/arch/blackfin/mach-bf548/boards/Kconfig | 12 + .../arch/blackfin/mach-bf548/boards/Makefile | 2 +- trunk/arch/blackfin/mach-bf548/boards/ezkit.c | 20 +- trunk/arch/blackfin/mach-bf548/head.S | 21 + trunk/arch/blackfin/mach-bf561/Kconfig | 4 +- trunk/arch/blackfin/mach-bf561/boards/Kconfig | 27 + .../arch/blackfin/mach-bf561/boards/Makefile | 2 +- .../blackfin/mach-bf561/boards/cm_bf561.c | 4 +- trunk/arch/blackfin/mach-bf561/boards/ezkit.c | 29 + .../mach-bf561/boards/generic_board.c | 4 - trunk/arch/blackfin/mach-bf561/boards/tepla.c | 4 - trunk/arch/blackfin/mach-common/cplbinfo.c | 2 +- trunk/arch/blackfin/mach-common/cplbmgr.S | 25 +- trunk/arch/blackfin/mach-common/entry.S | 54 +- trunk/arch/blackfin/mach-common/interrupt.S | 1 - .../blackfin/mach-common/ints-priority-dc.c | 21 +- .../blackfin/mach-common/ints-priority-sc.c | 28 +- trunk/arch/blackfin/mach-common/irqpanic.c | 14 +- trunk/arch/blackfin/mm/blackfin_sram.c | 1 - trunk/arch/cris/arch-v10/drivers/Kconfig | 39 - trunk/arch/cris/arch-v32/drivers/Kconfig | 12 - trunk/arch/frv/kernel/break.S | 2 +- trunk/arch/frv/kernel/entry.S | 2 +- trunk/arch/frv/kernel/vmlinux.lds.S | 27 +- trunk/arch/frv/mm/tlb-miss.S | 2 +- trunk/arch/m32r/kernel/signal.c | 17 +- trunk/arch/m32r/kernel/syscall_table.S | 40 + trunk/arch/m68k/atari/atakeyb.c | 3 +- trunk/arch/mips/Kconfig | 33 + trunk/arch/mips/au1000/Kconfig | 1 + trunk/arch/mips/kernel/Makefile | 2 + trunk/arch/mips/kernel/cevt-r4k.c | 14 +- trunk/arch/mips/kernel/csrc-r4k.c | 33 + trunk/arch/mips/kernel/setup.c | 31 +- trunk/arch/mips/kernel/smp-up.c | 67 + trunk/arch/mips/kernel/time.c | 112 +- trunk/arch/mips/kernel/vpe.c | 4 +- trunk/arch/mips/math-emu/ieee754.c | 2 + trunk/arch/mips/math-emu/ieee754dp.c | 2 + trunk/arch/mips/math-emu/ieee754sp.c | 2 + trunk/arch/mips/mipssim/sim_time.c | 6 +- trunk/arch/mips/mm/dma-default.c | 37 +- trunk/arch/mips/mm/init.c | 43 +- trunk/arch/mips/pmc-sierra/Kconfig | 2 + trunk/arch/mips/sgi-ip22/ip22-eisa.c | 134 +- trunk/arch/mips/sgi-ip22/ip22-nvram.c | 40 +- trunk/arch/mips/sgi-ip22/ip22-setup.c | 19 - trunk/arch/mips/sgi-ip32/ip32-irq.c | 24 +- trunk/arch/mips/vr41xx/Kconfig | 6 + trunk/arch/powerpc/Kconfig | 5 + trunk/arch/powerpc/boot/dts/mpc832x_mds.dts | 16 +- trunk/arch/powerpc/boot/dts/mpc834x_mds.dts | 9 + trunk/arch/powerpc/boot/dts/mpc836x_mds.dts | 9 + trunk/arch/powerpc/boot/dts/mpc8544ds.dts | 20 +- trunk/arch/powerpc/boot/dts/mpc8572ds.dts | 108 +- trunk/arch/powerpc/boot/dts/mpc8641_hpcn.dts | 126 +- .../powerpc/configs/mpc832x_mds_defconfig | 48 +- .../powerpc/configs/mpc832x_rdb_defconfig | 41 +- .../powerpc/configs/mpc834x_itx_defconfig | 2 +- .../powerpc/configs/mpc834x_itxgp_defconfig | 88 +- .../powerpc/configs/mpc834x_mds_defconfig | 48 +- .../powerpc/configs/mpc836x_mds_defconfig | 48 +- .../arch/powerpc/configs/mpc8568mds_defconfig | 48 +- trunk/arch/powerpc/kernel/asm-offsets.c | 4 + trunk/arch/powerpc/kernel/rtas.c | 111 +- trunk/arch/powerpc/kernel/time.c | 5 +- trunk/arch/powerpc/kernel/vdso.c | 11 + trunk/arch/powerpc/kernel/vdso32/cacheflush.S | 41 +- trunk/arch/powerpc/kernel/vdso64/cacheflush.S | 41 +- trunk/arch/powerpc/mm/mem.c | 2 +- trunk/arch/powerpc/mm/mmu_decl.h | 2 +- trunk/arch/powerpc/mm/stab.c | 1 + trunk/arch/powerpc/platforms/40x/walnut.c | 3 +- trunk/arch/powerpc/platforms/44x/bamboo.c | 3 +- trunk/arch/powerpc/platforms/44x/ebony.c | 3 +- trunk/arch/powerpc/platforms/44x/sequoia.c | 3 +- .../arch/powerpc/platforms/83xx/mpc832x_mds.c | 31 +- .../arch/powerpc/platforms/83xx/mpc832x_rdb.c | 14 +- .../arch/powerpc/platforms/83xx/mpc834x_mds.c | 24 - .../arch/powerpc/platforms/83xx/mpc836x_mds.c | 55 +- trunk/arch/powerpc/platforms/83xx/usb.c | 8 +- .../arch/powerpc/platforms/cell/spufs/inode.c | 1 + .../powerpc/platforms/embedded6xx/prpmc2800.c | 1 + trunk/arch/powerpc/platforms/pasemi/setup.c | 2 +- trunk/arch/powerpc/platforms/pseries/Kconfig | 2 +- trunk/arch/powerpc/platforms/pseries/setup.c | 3 +- trunk/arch/powerpc/sysdev/uic.c | 18 +- trunk/arch/ppc/kernel/setup.c | 7 + trunk/arch/ppc/mm/init.c | 2 +- trunk/arch/ppc/mm/mmu_decl.h | 2 +- trunk/arch/ppc/platforms/4xx/yucca.c | 1 + trunk/arch/ppc/syslib/virtex_devices.c | 31 + trunk/arch/s390/appldata/appldata.h | 1 - trunk/arch/s390/appldata/appldata_base.c | 74 +- trunk/arch/s390/appldata/appldata_mem.c | 1 - trunk/arch/s390/appldata/appldata_net_sum.c | 1 - trunk/arch/s390/appldata/appldata_os.c | 1 - trunk/arch/s390/kernel/early.c | 2 +- trunk/arch/s390/kernel/entry.S | 120 +- trunk/arch/s390/kernel/entry64.S | 114 +- trunk/arch/s390/kernel/setup.c | 6 +- trunk/arch/s390/kernel/smp.c | 56 +- trunk/arch/s390/kernel/traps.c | 1 + trunk/arch/s390/mm/cmm.c | 3 - .../arch/sh/boards/renesas/rts7751r2d/setup.c | 2 + trunk/arch/sh/configs/r7780mp_defconfig | 287 ++-- trunk/arch/sh/configs/r7785rp_defconfig | 10 +- trunk/arch/sh/mm/fault.c | 33 +- trunk/arch/um/Makefile | 2 +- trunk/arch/um/drivers/ubd_kern.c | 1 + trunk/arch/um/os-Linux/time.c | 54 +- trunk/arch/x86/Kconfig | 4 +- trunk/arch/x86/Makefile | 5 +- trunk/arch/x86/boot/header.S | 41 +- trunk/arch/x86/kernel/acpi/boot.c | 32 + trunk/arch/x86/kernel/acpi/processor.c | 3 + trunk/arch/x86/kernel/acpi/sleep_64.c | 3 - trunk/arch/x86/kernel/apic_32.c | 2 +- trunk/arch/x86/kernel/cpu/mcheck/mce_64.c | 2 +- trunk/arch/x86/kernel/cpu/proc.c | 8 +- trunk/arch/x86/kernel/i386_ksyms_32.c | 2 + trunk/arch/x86/kernel/io_apic_32.c | 33 +- trunk/arch/x86/kernel/io_apic_64.c | 24 +- trunk/arch/x86/kernel/kprobes_64.c | 2 +- trunk/arch/x86/kernel/nmi_32.c | 9 +- trunk/arch/x86/kernel/paravirt_32.c | 4 +- trunk/arch/x86/kernel/pci-dma_64.c | 2 +- trunk/arch/x86/kernel/reboot_fixups_32.c | 1 + trunk/arch/x86/kernel/setup_64.c | 9 +- trunk/arch/x86/kernel/time_64.c | 41 +- trunk/arch/x86/kernel/traps_32.c | 7 + trunk/arch/x86/kernel/traps_64.c | 9 + trunk/arch/x86/lguest/Kconfig | 1 + trunk/arch/x86/mach-voyager/voyager_cat.c | 2 +- trunk/arch/x86/mach-voyager/voyager_smp.c | 4 +- trunk/arch/x86/mm/init_64.c | 2 +- trunk/arch/x86/pci/acpi.c | 8 +- trunk/arch/x86/pci/common.c | 16 + trunk/arch/x86/vdso/vgetcpu.c | 19 +- trunk/arch/x86/xen/mmu.c | 4 + trunk/block/blktrace.c | 9 +- trunk/block/genhd.c | 1 + trunk/block/ll_rw_blk.c | 23 - trunk/crypto/algapi.c | 6 +- trunk/crypto/authenc.c | 12 +- trunk/drivers/acpi/Kconfig | 18 +- trunk/drivers/acpi/Makefile | 2 +- trunk/drivers/acpi/ac.c | 20 +- trunk/drivers/acpi/battery.c | 22 +- trunk/drivers/acpi/ec.c | 100 +- trunk/drivers/acpi/osl.c | 25 +- trunk/drivers/acpi/processor_core.c | 33 +- trunk/drivers/acpi/processor_idle.c | 112 +- trunk/drivers/acpi/processor_throttling.c | 286 +++- trunk/drivers/acpi/sbs.c | 43 +- trunk/drivers/acpi/tables/tbutils.c | 2 +- trunk/drivers/acpi/video.c | 155 ++- trunk/drivers/ata/ata_piix.c | 93 +- trunk/drivers/ata/libata-core.c | 108 +- trunk/drivers/ata/libata-eh.c | 95 -- trunk/drivers/ata/libata-scsi.c | 38 +- trunk/drivers/ata/pata_ali.c | 20 + trunk/drivers/ata/pata_bf54x.c | 6 +- trunk/drivers/ata/pata_hpt37x.c | 2 +- trunk/drivers/ata/pata_isapnp.c | 11 +- trunk/drivers/ata/pata_jmicron.c | 9 +- trunk/drivers/ata/pata_sil680.c | 32 +- trunk/drivers/ata/pata_sis.c | 1 + trunk/drivers/ata/sata_sil24.c | 26 +- trunk/drivers/atm/he.c | 10 +- trunk/drivers/base/core.c | 4 +- trunk/drivers/base/power/Makefile | 3 +- trunk/drivers/base/power/main.c | 8 +- trunk/drivers/base/power/power.h | 28 +- trunk/drivers/block/virtio_blk.c | 10 +- trunk/drivers/char/Kconfig | 2 +- trunk/drivers/char/sonypi.c | 8 +- trunk/drivers/char/tpm/tpm_tis.c | 10 +- trunk/drivers/dma/Kconfig | 8 +- trunk/drivers/ide/Kconfig | 47 +- trunk/drivers/ide/Makefile | 2 +- trunk/drivers/ide/cris/ide-cris.c | 7 +- trunk/drivers/ide/ide-dma.c | 1 + trunk/drivers/ide/ide-iops.c | 13 +- trunk/drivers/ide/ide-probe.c | 32 +- trunk/drivers/ide/legacy/ali14xx.c | 7 +- trunk/drivers/ide/legacy/macide.c | 2 +- trunk/drivers/ide/legacy/q40ide.c | 2 +- trunk/drivers/ide/pci/aec62xx.c | 11 +- trunk/drivers/ide/pci/alim15x3.c | 5 + trunk/drivers/ide/pci/piix.c | 1 + trunk/drivers/ide/pci/siimage.c | 45 +- trunk/drivers/ide/pci/sis5513.c | 1 + trunk/drivers/ide/pci/trm290.c | 3 - trunk/drivers/ide/ppc/pmac.c | 2 +- trunk/drivers/infiniband/hw/ehca/ehca_av.c | 8 +- trunk/drivers/infiniband/hw/ehca/ehca_qp.c | 4 +- trunk/drivers/infiniband/hw/ipath/ipath_cq.c | 19 +- trunk/drivers/infiniband/hw/ipath/ipath_qp.c | 15 +- trunk/drivers/infiniband/hw/ipath/ipath_srq.c | 44 +- .../drivers/infiniband/hw/ipath/ipath_verbs.c | 8 +- .../drivers/infiniband/ulp/ipoib/ipoib_main.c | 3 + .../drivers/infiniband/ulp/iser/iser_memory.c | 6 +- trunk/drivers/input/keyboard/Kconfig | 2 +- trunk/drivers/input/keyboard/gpio_keys.c | 38 +- trunk/drivers/input/serio/Kconfig | 2 +- trunk/drivers/input/serio/i8042-x86ia64io.h | 8 + trunk/drivers/isdn/hisax/hfcscard.c | 3 +- trunk/drivers/isdn/i4l/isdn_net.c | 8 +- trunk/drivers/kvm/kvm_main.c | 3 +- trunk/drivers/kvm/svm.c | 1 + trunk/drivers/kvm/x86_emulate.c | 6 +- trunk/drivers/lguest/lguest_device.c | 2 + trunk/drivers/mfd/sm501.c | 2 +- trunk/drivers/misc/sony-laptop.c | 10 +- trunk/drivers/misc/thinkpad_acpi.c | 231 +++- trunk/drivers/misc/thinkpad_acpi.h | 4 +- trunk/drivers/mmc/card/block.c | 22 +- trunk/drivers/mmc/card/queue.c | 3 +- trunk/drivers/mmc/card/sdio_uart.c | 2 +- trunk/drivers/mmc/host/tifm_sd.c | 18 +- trunk/drivers/net/Kconfig | 2 +- trunk/drivers/net/amd8111e.c | 6 + trunk/drivers/net/bfin_mac.c | 4 +- trunk/drivers/net/bfin_mac.h | 2 +- trunk/drivers/net/ehea/ehea.h | 2 +- trunk/drivers/net/ehea/ehea_main.c | 20 +- trunk/drivers/net/ehea/ehea_qmr.h | 4 +- trunk/drivers/net/forcedeth.c | 38 +- trunk/drivers/net/ibm_newemac/core.c | 31 +- trunk/drivers/net/ibm_newemac/core.h | 1 + trunk/drivers/net/mlx4/qp.c | 2 +- trunk/drivers/net/plip.c | 4 +- trunk/drivers/net/sky2.c | 6 +- trunk/drivers/net/smc911x.c | 19 +- trunk/drivers/net/smc911x.h | 2 +- trunk/drivers/net/smc91x.h | 2 +- trunk/drivers/net/tulip/dmfe.c | 4 +- trunk/drivers/net/usb/dm9601.c | 2 +- trunk/drivers/net/virtio_net.c | 12 +- trunk/drivers/net/wireless/rt2x00/rt2500usb.c | 7 +- trunk/drivers/net/wireless/rt2x00/rt2x00.h | 7 +- trunk/drivers/net/wireless/rt2x00/rt2x00usb.c | 9 +- trunk/drivers/net/wireless/rt2x00/rt73usb.c | 4 +- trunk/drivers/pci/hotplug/acpiphp.h | 8 +- trunk/drivers/pci/hotplug/acpiphp_core.c | 29 +- trunk/drivers/pci/hotplug/acpiphp_glue.c | 36 +- trunk/drivers/pci/hotplug/acpiphp_ibm.c | 47 +- trunk/drivers/pci/hotplug/cpqphp_core.c | 41 +- trunk/drivers/pci/hotplug/cpqphp_ctrl.c | 96 +- trunk/drivers/pci/hotplug/fakephp.c | 14 +- trunk/drivers/pci/hotplug/pciehp_ctrl.c | 16 +- trunk/drivers/pci/hotplug/rpadlpar_core.c | 19 +- trunk/drivers/pci/hotplug/rpaphp_core.c | 15 +- trunk/drivers/pci/hotplug/rpaphp_pci.c | 1 + trunk/drivers/pci/hotplug/shpchp_ctrl.c | 16 +- trunk/drivers/pci/pci-sysfs.c | 4 +- trunk/drivers/pci/pcie/aer/aerdrv_core.c | 29 +- trunk/drivers/pci/pcie/portdrv_pci.c | 2 +- trunk/drivers/pnp/pnpacpi/rsparser.c | 39 +- trunk/drivers/pnp/resource.c | 4 +- trunk/drivers/ps3/Makefile | 4 +- .../ps3/{sys-manager.c => ps3-sys-manager.c} | 0 trunk/drivers/ps3/{vuart.c => ps3-vuart.c} | 0 trunk/drivers/rtc/Kconfig | 2 +- trunk/drivers/rtc/interface.c | 4 +- trunk/drivers/rtc/rtc-dev.c | 12 +- trunk/drivers/s390/cio/css.c | 2 +- trunk/drivers/s390/cio/device_fsm.c | 2 +- trunk/drivers/s390/cio/device_id.c | 45 +- trunk/drivers/scsi/ide-scsi.c | 22 +- trunk/drivers/scsi/zorro7xx.c | 3 + trunk/drivers/serial/Kconfig | 2 +- trunk/drivers/serial/ip22zilog.c | 247 ++-- trunk/drivers/serial/pxa.c | 4 +- trunk/drivers/spi/Kconfig | 2 +- trunk/drivers/spi/atmel_spi.c | 2 +- trunk/drivers/spi/spi_s3c24xx_gpio.c | 21 +- trunk/drivers/usb/README | 6 +- trunk/drivers/usb/core/driver.c | 11 - trunk/drivers/usb/core/hcd.c | 3 +- trunk/drivers/usb/core/hub.c | 2 +- trunk/drivers/usb/core/message.c | 36 +- trunk/drivers/usb/core/sysfs.c | 6 + trunk/drivers/usb/core/usb.c | 25 + trunk/drivers/usb/gadget/omap_udc.c | 6 +- trunk/drivers/usb/gadget/s3c2410_udc.c | 16 +- trunk/drivers/usb/host/Kconfig | 2 +- trunk/drivers/usb/host/ehci-hcd.c | 5 +- trunk/drivers/usb/image/microtek.c | 2 +- trunk/drivers/usb/misc/adutux.c | 262 ++-- trunk/drivers/usb/misc/usbled.c | 4 +- trunk/drivers/usb/serial/generic.c | 5 +- trunk/drivers/usb/serial/keyspan.c | 32 +- trunk/drivers/usb/serial/mos7840.c | 2 +- trunk/drivers/usb/serial/pl2303.c | 1 + trunk/drivers/usb/serial/pl2303.h | 3 + trunk/drivers/usb/serial/sierra.c | 2 + trunk/drivers/usb/storage/scsiglue.c | 4 + trunk/drivers/usb/storage/unusual_devs.h | 17 +- trunk/drivers/video/Kconfig | 11 + trunk/drivers/video/Makefile | 1 + trunk/drivers/video/atmel_lcdfb.c | 4 + trunk/drivers/video/aty/radeon_base.c | 1 + trunk/drivers/video/console/Kconfig | 2 +- trunk/drivers/video/efifb.c | 232 ++++ trunk/drivers/video/fb_ddc.c | 8 +- trunk/drivers/video/imacfb.c | 4 - trunk/drivers/video/ps3fb.c | 11 +- trunk/drivers/virtio/virtio.c | 13 + trunk/drivers/zorro/zorro-driver.c | 15 + trunk/fs/Kconfig | 9 + trunk/fs/cifs/CHANGES | 3 + trunk/fs/cifs/README | 27 +- trunk/fs/cifs/TODO | 2 +- trunk/fs/cifs/cifs_spnego.c | 20 +- trunk/fs/cifs/cifs_spnego.h | 1 + trunk/fs/cifs/cifsacl.c | 13 +- trunk/fs/cifs/cifsfs.c | 7 +- trunk/fs/cifs/cifsglob.h | 13 + trunk/fs/cifs/cifsproto.h | 17 +- trunk/fs/cifs/cifssmb.c | 97 +- trunk/fs/cifs/connect.c | 141 +- trunk/fs/cifs/file.c | 44 +- trunk/fs/cifs/inode.c | 26 +- trunk/fs/cifs/sess.c | 93 +- trunk/fs/cifs/transport.c | 91 +- trunk/fs/compat_ioctl.c | 6 + trunk/fs/exec.c | 6 + trunk/fs/ext2/ext2.h | 7 + trunk/fs/fuse/dir.c | 81 +- trunk/fs/fuse/file.c | 47 +- trunk/fs/fuse/fuse_i.h | 5 +- trunk/fs/fuse/inode.c | 4 +- trunk/fs/nfs/dir.c | 1 + trunk/fs/nfs/direct.c | 142 +- trunk/fs/nfs/getroot.c | 81 +- trunk/fs/nfs/super.c | 11 +- trunk/fs/nfs/write.c | 3 +- trunk/fs/ocfs2/aops.c | 2 +- trunk/fs/ocfs2/cluster/masklog.h | 2 +- trunk/fs/ocfs2/dcache.c | 20 +- trunk/fs/ocfs2/dlm/dlmmaster.c | 4 +- trunk/fs/ocfs2/file.c | 19 +- trunk/fs/ocfs2/inode.c | 6 +- trunk/fs/ocfs2/localalloc.c | 5 +- trunk/fs/ocfs2/super.c | 6 +- trunk/fs/proc/array.c | 4 +- trunk/fs/proc/base.c | 51 +- trunk/fs/proc/generic.c | 37 - trunk/fs/proc/internal.h | 2 - trunk/fs/proc/root.c | 2 +- trunk/fs/sysfs/file.c | 6 +- trunk/include/acpi/processor.h | 1 - trunk/include/asm-arm/arch-at91/board.h | 3 +- trunk/include/asm-arm/arch-ixp23xx/irqs.h | 2 +- .../asm-arm/arch-omap/board-innovator.h | 2 +- trunk/include/asm-arm/arch-pxa/irqs.h | 20 +- trunk/include/asm-arm/arch-pxa/mfp-pxa300.h | 2 +- trunk/include/asm-arm/arch-pxa/mfp-pxa320.h | 2 +- trunk/include/asm-arm/arch-pxa/mfp.h | 18 +- trunk/include/asm-arm/arch-pxa/pxa-regs.h | 5 +- trunk/include/asm-arm/arch-s3c2410/spi-gpio.h | 2 + trunk/include/asm-blackfin/bfin-global.h | 5 +- trunk/include/asm-blackfin/cplbinit.h | 33 +- trunk/include/asm-blackfin/delay.h | 66 +- trunk/include/asm-blackfin/io.h | 1 + trunk/include/asm-blackfin/mach-bf527/irq.h | 4 - .../include/asm-blackfin/mach-bf527/mem_map.h | 3 +- trunk/include/asm-blackfin/mach-bf533/irq.h | 4 - .../include/asm-blackfin/mach-bf533/mem_map.h | 4 +- trunk/include/asm-blackfin/mach-bf537/irq.h | 4 - .../include/asm-blackfin/mach-bf537/mem_map.h | 3 +- trunk/include/asm-blackfin/mach-bf548/bf548.h | 34 +- .../asm-blackfin/mach-bf548/defBF544.h | 2 +- .../asm-blackfin/mach-bf548/defBF548.h | 2 +- trunk/include/asm-blackfin/mach-bf548/irq.h | 4 - .../include/asm-blackfin/mach-bf548/mem_map.h | 18 +- trunk/include/asm-blackfin/mach-bf561/bf561.h | 19 - .../asm-blackfin/mach-bf561/defBF561.h | 15 +- trunk/include/asm-blackfin/mach-bf561/irq.h | 4 - .../include/asm-blackfin/mach-bf561/mem_map.h | 7 +- .../asm-blackfin/mach-common/def_LPBlackfin.h | 8 +- trunk/include/asm-blackfin/page_offset.h | 2 +- trunk/include/asm-blackfin/string.h | 2 + trunk/include/asm-blackfin/traps.h | 96 +- trunk/include/asm-generic/resource.h | 2 +- trunk/include/asm-ia64/acpi.h | 1 + trunk/include/asm-m32r/thread_info.h | 11 +- trunk/include/asm-m32r/unistd.h | 66 +- trunk/include/asm-mips/8253pit.h | 10 - trunk/include/asm-mips/cpu-features.h | 6 +- trunk/include/asm-mips/dma.h | 1 + trunk/include/asm-mips/futex.h | 6 +- trunk/include/asm-mips/i8253.h | 2 + trunk/include/asm-mips/ip32/ip32_ints.h | 2 +- trunk/include/asm-mips/system.h | 10 +- trunk/include/asm-mips/time.h | 16 +- trunk/include/asm-powerpc/page_32.h | 4 + trunk/include/asm-powerpc/pci-bridge.h | 5 +- trunk/include/asm-powerpc/rtas.h | 3 +- trunk/include/asm-powerpc/vdso_datapage.h | 8 + trunk/include/asm-s390/system.h | 5 + trunk/include/asm-sh/cacheflush.h | 2 +- trunk/include/asm-x86/acpi.h | 27 + trunk/include/asm-x86/apic_32.h | 1 + .../asm-x86/mach-default/mach_reboot.h | 2 +- .../asm-x86/mach-es7000/mach_mpparse.h | 6 +- .../include/asm-x86/mach-voyager/setup_arch.h | 2 +- trunk/include/linux/acpi.h | 5 + trunk/include/linux/cpuidle.h | 1 + trunk/include/linux/ext2_fs.h | 7 - trunk/include/linux/fuse.h | 5 + trunk/include/linux/input.h | 5 + trunk/include/linux/kd.h | 2 +- trunk/include/linux/libata.h | 5 +- trunk/include/linux/nfs_fs.h | 1 - trunk/include/linux/pci_ids.h | 4 + trunk/include/linux/pnp.h | 4 +- trunk/include/linux/rtc.h | 5 +- trunk/include/linux/scatterlist.h | 37 +- trunk/include/linux/sched.h | 4 + trunk/include/linux/screen_info.h | 2 + trunk/include/linux/serial_core.h | 2 +- trunk/include/linux/skbuff.h | 1 - trunk/include/linux/sunrpc/debug.h | 5 - trunk/include/linux/sunrpc/xprtsock.h | 6 - trunk/include/linux/sysctl.h | 6 - trunk/include/linux/timex.h | 1 + trunk/include/linux/usb.h | 1 + trunk/include/linux/usbdevice_fs.h | 3 +- trunk/include/net/ieee80211.h | 8 + trunk/include/net/inet_hashtables.h | 3 +- trunk/include/net/ip_vs.h | 34 - trunk/include/net/sock.h | 3 + trunk/include/net/tcp.h | 3 + trunk/include/sound/version.h | 2 +- trunk/init/Kconfig | 2 +- trunk/ipc/mqueue.c | 6 +- trunk/kernel/acct.c | 2 +- trunk/kernel/exit.c | 11 +- trunk/kernel/kallsyms.c | 7 +- trunk/kernel/module.c | 8 +- trunk/kernel/sched.c | 5 +- trunk/kernel/sched_debug.c | 10 +- trunk/kernel/sched_fair.c | 12 +- trunk/kernel/sched_stats.h | 3 +- trunk/kernel/sys.c | 20 +- trunk/kernel/sysctl_check.c | 45 - trunk/kernel/time/ntp.c | 11 +- trunk/kernel/time/tick-sched.c | 2 + trunk/kernel/user.c | 7 +- trunk/kernel/utsname_sysctl.c | 4 + trunk/lib/Kconfig.debug | 4 +- trunk/lib/hexdump.c | 3 +- trunk/lib/kobject.c | 4 +- trunk/mm/page_alloc.c | 24 +- trunk/mm/rmap.c | 9 +- trunk/mm/shmem.c | 5 +- trunk/mm/slab.c | 4 +- trunk/mm/sparse-vmemmap.c | 12 +- trunk/net/bridge/netfilter/ebt_among.c | 2 +- trunk/net/core/pktgen.c | 2 - trunk/net/core/skbuff.c | 31 +- trunk/net/dccp/ccids/lib/loss_interval.c | 2 +- trunk/net/ieee80211/ieee80211_crypt_ccmp.c | 2 +- trunk/net/ieee80211/ieee80211_crypt_tkip.c | 4 +- trunk/net/ipv4/arp.c | 22 +- trunk/net/ipv4/ipvs/ip_vs_core.c | 2 +- trunk/net/ipv4/ipvs/ip_vs_ctl.c | 24 - trunk/net/ipv4/ipvs/ip_vs_lblc.c | 2 - trunk/net/ipv4/ipvs/ip_vs_lblcr.c | 2 - trunk/net/ipv4/ipvs/ip_vs_proto.c | 2 +- trunk/net/ipv4/netfilter/iptable_raw.c | 2 +- trunk/net/ipv4/netfilter/nf_nat_core.c | 5 +- trunk/net/ipv4/route.c | 8 +- trunk/net/ipv4/sysctl_net_ipv4.c | 2 +- trunk/net/ipv4/tcp_ipv4.c | 11 +- trunk/net/ipv4/tcp_output.c | 21 +- trunk/net/ipv6/addrconf.c | 2 +- trunk/net/ipv6/tcp_ipv6.c | 11 +- trunk/net/irda/iriap.c | 2 +- trunk/net/irda/irlan/irlan_eth.c | 2 +- trunk/net/iucv/iucv.c | 107 +- trunk/net/key/af_key.c | 4 +- trunk/net/mac80211/ieee80211.c | 27 +- trunk/net/mac80211/ieee80211_sta.c | 2 +- trunk/net/sctp/sm_statefuns.c | 2 +- trunk/net/sunrpc/auth_gss/auth_gss.c | 4 +- trunk/net/sunrpc/auth_gss/gss_krb5_mech.c | 8 +- trunk/net/sunrpc/auth_gss/gss_krb5_seal.c | 1 + trunk/net/sunrpc/rpc_pipe.c | 2 +- trunk/net/sunrpc/xprt.c | 2 +- trunk/net/sunrpc/xprtrdma/transport.c | 10 +- trunk/net/sunrpc/xprtsock.c | 4 +- trunk/net/wireless/wext.c | 2 +- trunk/net/xfrm/xfrm_state.c | 2 +- trunk/net/xfrm/xfrm_user.c | 2 - trunk/scripts/checkpatch.pl | 395 ++++-- trunk/scripts/kconfig/conf.c | 1 - trunk/scripts/kconfig/confdata.c | 27 - trunk/scripts/kconfig/lkc_proto.h | 1 - trunk/security/commoncap.c | 9 + trunk/sound/drivers/mpu401/mpu401_uart.c | 12 +- trunk/sound/drivers/portman2x4.c | 2 +- trunk/sound/pci/ca0106/ca0106_mixer.c | 18 +- trunk/sound/pci/ca0106/ca0106_proc.c | 4 +- trunk/sound/pci/cmipci.c | 5 +- trunk/sound/pci/emu10k1/emumixer.c | 65 +- trunk/sound/pci/emu10k1/p16v.c | 4 + trunk/sound/pci/hda/hda_codec.c | 40 +- trunk/sound/pci/hda/hda_local.h | 1 + trunk/sound/pci/hda/patch_analog.c | 8 + trunk/sound/pci/hda/patch_sigmatel.c | 57 +- trunk/sound/soc/codecs/cs4270.c | 3 +- trunk/sound/soc/s3c24xx/s3c2443-ac97.c | 2 +- 605 files changed, 8556 insertions(+), 5509 deletions(-) create mode 100644 trunk/Documentation/namespaces/compatibility-list.txt create mode 100644 trunk/Documentation/x86_64/uefi.txt create mode 100644 trunk/arch/blackfin/Kconfig.debug create mode 100644 trunk/arch/blackfin/configs/H8606_defconfig delete mode 100644 trunk/arch/blackfin/lib/udivdi3.S create mode 100644 trunk/arch/blackfin/mach-bf527/boards/Kconfig delete mode 100644 trunk/arch/blackfin/mach-bf527/boards/eth_mac.c create mode 100644 trunk/arch/blackfin/mach-bf533/boards/Kconfig create mode 100644 trunk/arch/blackfin/mach-bf537/boards/Kconfig delete mode 100644 trunk/arch/blackfin/mach-bf537/boards/eth_mac.c create mode 100644 trunk/arch/blackfin/mach-bf548/boards/Kconfig create mode 100644 trunk/arch/blackfin/mach-bf561/boards/Kconfig create mode 100644 trunk/arch/mips/kernel/csrc-r4k.c create mode 100644 trunk/arch/mips/kernel/smp-up.c rename trunk/drivers/ps3/{sys-manager.c => ps3-sys-manager.c} (100%) rename trunk/drivers/ps3/{vuart.c => ps3-vuart.c} (100%) create mode 100644 trunk/drivers/video/efifb.c delete mode 100644 trunk/include/asm-mips/8253pit.h diff --git a/[refs] b/[refs] index 4631352943cc..730ae8f0bf2d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 3ae6a054553ee8b7f74bf7de8904022b26705778 +refs/heads/master: 85b161a826f1954e9605deb3e6faa4be4d285a34 diff --git a/trunk/Documentation/00-INDEX b/trunk/Documentation/00-INDEX index 299615d821ac..c3014df066c4 100644 --- a/trunk/Documentation/00-INDEX +++ b/trunk/Documentation/00-INDEX @@ -262,6 +262,8 @@ mtrr.txt - how to use PPro Memory Type Range Registers to increase performance. mutex-design.txt - info on the generic mutex subsystem. +namespaces/ + - directory with various information about namespaces nbd.txt - info on a TCP implementation of a network block device. netlabel/ diff --git a/trunk/Documentation/DocBook/Makefile b/trunk/Documentation/DocBook/Makefile index 054a7ecf64c6..4953bc258729 100644 --- a/trunk/Documentation/DocBook/Makefile +++ b/trunk/Documentation/DocBook/Makefile @@ -11,7 +11,7 @@ DOCBOOKS := wanbook.xml z8530book.xml mcabook.xml videobook.xml \ procfs-guide.xml writing_usb_driver.xml \ kernel-api.xml filesystems.xml lsm.xml usb.xml \ gadget.xml libata.xml mtdnand.xml librs.xml rapidio.xml \ - genericirq.xml s390-drivers.xml + genericirq.xml s390-drivers.xml uio-howto.xml ### # The build process is as follows (targets): diff --git a/trunk/Documentation/DocBook/uio-howto.tmpl b/trunk/Documentation/DocBook/uio-howto.tmpl index c119484258b8..fdd7f4f887b7 100644 --- a/trunk/Documentation/DocBook/uio-howto.tmpl +++ b/trunk/Documentation/DocBook/uio-howto.tmpl @@ -29,6 +29,12 @@ + + 0.4 + 2007-11-26 + hjk + Removed section about uio_dummy. + 0.3 2007-04-29 @@ -94,6 +100,26 @@ interested in translating it, please email me user space. This simplifies development and reduces the risk of serious bugs within a kernel module. + + Please note that UIO is not an universal driver interface. Devices + that are already handled well by other kernel subsystems (like + networking or serial or USB) are no candidates for an UIO driver. + Hardware that is ideally suited for an UIO driver fulfills all of + the following: + + + + The device has memory that can be mapped. The device can be + controlled completely by writing to this memory. + + + The device usually generates interrupts. + + + The device does not fit into one of the standard kernel + subsystems. + + @@ -174,8 +200,9 @@ interested in translating it, please email me For cards that don't generate interrupts but need to be polled, there is the possibility to set up a timer that triggers the interrupt handler at configurable time intervals. - See drivers/uio/uio_dummy.c for an - example of this technique. + This interrupt simulation is done by calling + uio_event_notify() + from the timer's event handler. @@ -263,63 +290,11 @@ offset = N * getpagesize(); - - -Using uio_dummy - - Well, there is no real use for uio_dummy. Its only purpose is - to test most parts of the UIO system (everything except - hardware interrupts), and to serve as an example for the - kernel module that you will have to write yourself. - - - -What uio_dummy does - - The kernel module uio_dummy.ko creates a - device that uses a timer to generate periodic interrupts. The - interrupt handler does nothing but increment a counter. The - driver adds two custom attributes, count - and freq, that appear under - /sys/devices/platform/uio_dummy/. - - - - The attribute count can be read and - written. The associated file - /sys/devices/platform/uio_dummy/count - appears as a normal text file and contains the total number of - timer interrupts. If you look at it (e.g. using - cat), you'll notice it is slowly counting - up. - - - - The attribute freq can be read and written. - The content of - /sys/devices/platform/uio_dummy/freq - represents the number of system timer ticks between two timer - interrupts. The default value of freq is - the value of the kernel variable HZ, which - gives you an interval of one second. Lower values will - increase the frequency. Try the following: - - -cd /sys/devices/platform/uio_dummy/ -echo 100 > freq - - - Use cat count to see how the interrupt - frequency changes. - - - - Writing your own kernel module - Please have a look at uio_dummy.c as an + Please have a look at uio_cif.c as an example. The following paragraphs explain the different sections of this file. @@ -354,9 +329,8 @@ See the description below for details. interrupt, it's your modules task to determine the irq number during initialization. If you don't have a hardware generated interrupt but want to trigger the interrupt handler in some other way, set -irq to UIO_IRQ_CUSTOM. The -uio_dummy module does this as it triggers the event mechanism in a timer -routine. If you had no interrupt at all, you could set +irq to UIO_IRQ_CUSTOM. +If you had no interrupt at all, you could set irq to UIO_IRQ_NONE, though this rarely makes sense. diff --git a/trunk/Documentation/lguest/lguest.c b/trunk/Documentation/lguest/lguest.c index 42008395534d..9b0e322118b5 100644 --- a/trunk/Documentation/lguest/lguest.c +++ b/trunk/Documentation/lguest/lguest.c @@ -1040,6 +1040,11 @@ static void add_virtqueue(struct device *dev, unsigned int num_descs, / getpagesize(); p = get_pages(pages); + /* Initialize the virtqueue */ + vq->next = NULL; + vq->last_avail_idx = 0; + vq->dev = dev; + /* Initialize the configuration. */ vq->config.num = num_descs; vq->config.irq = devices.next_irq++; @@ -1057,9 +1062,6 @@ static void add_virtqueue(struct device *dev, unsigned int num_descs, for (i = &dev->vq; *i; i = &(*i)->next); *i = vq; - /* Link virtqueue back to device. */ - vq->dev = dev; - /* Set the routine to call when the Guest does something to this * virtqueue. */ vq->handle_output = handle_output; @@ -1093,6 +1095,7 @@ static struct device *new_device(const char *name, u16 type, int fd, dev->desc = new_dev_desc(type); dev->handle_input = handle_input; dev->name = name; + dev->vq = NULL; return dev; } diff --git a/trunk/Documentation/namespaces/compatibility-list.txt b/trunk/Documentation/namespaces/compatibility-list.txt new file mode 100644 index 000000000000..defc5589bfcd --- /dev/null +++ b/trunk/Documentation/namespaces/compatibility-list.txt @@ -0,0 +1,39 @@ + Namespaces compatibility list + +This document contains the information about the problems user +may have when creating tasks living in different namespaces. + +Here's the summary. This matrix shows the known problems, that +occur when tasks share some namespace (the columns) while living +in different other namespaces (the rows): + + UTS IPC VFS PID User Net +UTS X +IPC X 1 +VFS X +PID 1 1 X +User 2 2 X +Net X + +1. Both the IPC and the PID namespaces provide IDs to address + object inside the kernel. E.g. semaphore with IPCID or + process group with pid. + + In both cases, tasks shouldn't try exposing this ID to some + other task living in a different namespace via a shared filesystem + or IPC shmem/message. The fact is that this ID is only valid + within the namespace it was obtained in and may refer to some + other object in another namespace. + +2. Intentionally, two equal user IDs in different user namespaces + should not be equal from the VFS point of view. In other + words, user 10 in one user namespace shouldn't have the same + access permissions to files, belonging to user 10 in another + namespace. + + The same is true for the IPC namespaces being shared - two users + from different user namespaces should not access the same IPC objects + even having equal UIDs. + + But currently this is not so. + diff --git a/trunk/Documentation/parport-lowlevel.txt b/trunk/Documentation/parport-lowlevel.txt index 265fcdcb8e5f..120eb20dbb09 100644 --- a/trunk/Documentation/parport-lowlevel.txt +++ b/trunk/Documentation/parport-lowlevel.txt @@ -339,6 +339,10 @@ Use this function to register your device driver on a parallel port ('port'). Once you have done that, you will be able to use parport_claim and parport_release in order to use the port. +The ('name') argument is the name of the device that appears in /proc +filesystem. The string must be valid for the whole lifetime of the +device (until parport_unregister_device is called). + This function will register three callbacks into your driver: 'preempt', 'wakeup' and 'irq'. Each of these may be NULL in order to indicate that you do not want a callback. diff --git a/trunk/Documentation/powerpc/booting-without-of.txt b/trunk/Documentation/powerpc/booting-without-of.txt index ac1be25c1e25..e9a3cb1d6b06 100644 --- a/trunk/Documentation/powerpc/booting-without-of.txt +++ b/trunk/Documentation/powerpc/booting-without-of.txt @@ -1645,8 +1645,9 @@ platforms are moved over to use the flattened-device-tree model. MAC addresses passed by the firmware when no information other than indices is available to associate an address with a device. - phy-connection-type : a string naming the controller/PHY interface type, - i.e., "mii" (default), "rmii", "gmii", "rgmii", "rgmii-id", "tbi", - or "rtbi". + i.e., "mii" (default), "rmii", "gmii", "rgmii", "rgmii-id" (Internal + Delay), "rgmii-txid" (delay on TX only), "rgmii-rxid" (delay on RX only), + "tbi", or "rtbi". Example: ucc@2000 { diff --git a/trunk/Documentation/thinkpad-acpi.txt b/trunk/Documentation/thinkpad-acpi.txt index ec499265deca..10c041ca13c7 100644 --- a/trunk/Documentation/thinkpad-acpi.txt +++ b/trunk/Documentation/thinkpad-acpi.txt @@ -1,7 +1,7 @@ ThinkPad ACPI Extras Driver - Version 0.16 - August 2nd, 2007 + Version 0.17 + October 04th, 2007 Borislav Deianov Henrique de Moraes Holschuh @@ -923,19 +923,34 @@ sysfs backlight device "thinkpad_screen" This feature allows software control of the LCD brightness on ThinkPad models which don't have a hardware brightness slider. -It has some limitations: the LCD backlight cannot be actually turned on or off -by this interface, and in many ThinkPad models, the "dim while on battery" -functionality will be enabled by the BIOS when this interface is used, and -cannot be controlled. - -The backlight control has eight levels, ranging from 0 to 7. Some of the -levels may not be distinct. - -There are two interfaces to the firmware for brightness control, EC and CMOS. -To select which one should be used, use the brightness_mode module parameter: -brightness_mode=1 selects EC mode, brightness_mode=2 selects CMOS mode, -brightness_mode=3 selects both EC and CMOS. The driver tries to autodetect -which interface to use. +It has some limitations: the LCD backlight cannot be actually turned on or +off by this interface, and in many ThinkPad models, the "dim while on +battery" functionality will be enabled by the BIOS when this interface is +used, and cannot be controlled. + +On IBM (and some of the earlier Lenovo) ThinkPads, the backlight control +has eight brightness levels, ranging from 0 to 7. Some of the levels +may not be distinct. Later Lenovo models that implement the ACPI +display backlight brightness control methods have 16 levels, ranging +from 0 to 15. + +There are two interfaces to the firmware for direct brightness control, +EC and CMOS. To select which one should be used, use the +brightness_mode module parameter: brightness_mode=1 selects EC mode, +brightness_mode=2 selects CMOS mode, brightness_mode=3 selects both EC +and CMOS. The driver tries to autodetect which interface to use. + +When display backlight brightness controls are available through the +standard ACPI interface, it is best to use it instead of this direct +ThinkPad-specific interface. The driver will disable its native +backlight brightness control interface if it detects that the standard +ACPI interface is available in the ThinkPad. + +The brightness_enable module parameter can be used to control whether +the LCD brightness control feature will be enabled when available. +brightness_enable=0 forces it to be disabled. brightness_enable=1 +forces it to be enabled when available, even if the standard ACPI +interface is also available. Procfs notes: @@ -947,11 +962,11 @@ Procfs notes: Sysfs notes: -The interface is implemented through the backlight sysfs class, which is poorly -documented at this time. +The interface is implemented through the backlight sysfs class, which is +poorly documented at this time. -Locate the thinkpad_screen device under /sys/class/backlight, and inside it -there will be the following attributes: +Locate the thinkpad_screen device under /sys/class/backlight, and inside +it there will be the following attributes: max_brightness: Reads the maximum brightness the hardware can be set to. @@ -961,17 +976,19 @@ there will be the following attributes: Reads what brightness the screen is set to at this instant. brightness: - Writes request the driver to change brightness to the given - value. Reads will tell you what brightness the driver is trying - to set the display to when "power" is set to zero and the display - has not been dimmed by a kernel power management event. + Writes request the driver to change brightness to the + given value. Reads will tell you what brightness the + driver is trying to set the display to when "power" is set + to zero and the display has not been dimmed by a kernel + power management event. power: - power management mode, where 0 is "display on", and 1 to 3 will - dim the display backlight to brightness level 0 because - thinkpad-acpi cannot really turn the backlight off. Kernel - power management events can temporarily increase the current - power management level, i.e. they can dim the display. + power management mode, where 0 is "display on", and 1 to 3 + will dim the display backlight to brightness level 0 + because thinkpad-acpi cannot really turn the backlight + off. Kernel power management events can temporarily + increase the current power management level, i.e. they can + dim the display. Volume control -- /proc/acpi/ibm/volume diff --git a/trunk/Documentation/tty.txt b/trunk/Documentation/tty.txt index 048a8762cfb5..8e65c4498c52 100644 --- a/trunk/Documentation/tty.txt +++ b/trunk/Documentation/tty.txt @@ -132,6 +132,14 @@ set_termios() Notify the tty driver that the device's termios tty->termios. Previous settings should be passed in the "old" argument. + The API is defined such that the driver should return + the actual modes selected. This means that the + driver function is responsible for modifying any + bits in the request it cannot fulfill to indicate + the actual modes being used. A device with no + hardware capability for change (eg a USB dongle or + virtual port) can provide NULL for this method. + throttle() Notify the tty driver that input buffers for the line discipline are close to full, and it should somehow signal that no more characters should be diff --git a/trunk/Documentation/usb/power-management.txt b/trunk/Documentation/usb/power-management.txt index 97842deec471..b2fc4d4a9917 100644 --- a/trunk/Documentation/usb/power-management.txt +++ b/trunk/Documentation/usb/power-management.txt @@ -278,6 +278,14 @@ optional. The methods' jobs are quite simple: (although the interfaces will be in the same altsettings as before the suspend). +If the device is disconnected or powered down while it is suspended, +the disconnect method will be called instead of the resume or +reset_resume method. This is also quite likely to happen when +waking up from hibernation, as many systems do not maintain suspend +current to the USB host controllers during hibernation. (It's +possible to work around the hibernation-forces-disconnect problem by +using the USB Persist facility.) + The reset_resume method is used by the USB Persist facility (see Documentation/usb/persist.txt) and it can also be used under certain circumstances when CONFIG_USB_PERSIST is not enabled. Currently, if a diff --git a/trunk/Documentation/x86_64/uefi.txt b/trunk/Documentation/x86_64/uefi.txt new file mode 100644 index 000000000000..91a98edfb588 --- /dev/null +++ b/trunk/Documentation/x86_64/uefi.txt @@ -0,0 +1,29 @@ +General note on [U]EFI x86_64 support +------------------------------------- + +The nomenclature EFI and UEFI are used interchangeably in this document. + +Although the tools below are _not_ needed for building the kernel, +the needed bootloader support and associated tools for x86_64 platforms +with EFI firmware and specifications are listed below. + +1. UEFI specification: http://www.uefi.org + +2. Booting Linux kernel on UEFI x86_64 platform requires bootloader + support. Elilo with x86_64 support can be used. + +3. x86_64 platform with EFI/UEFI firmware. + +Mechanics: +--------- +- Build the kernel with the following configuration. + CONFIG_FB_EFI=y + CONFIG_FRAMEBUFFER_CONSOLE=y +- Create a VFAT partition on the disk +- Copy the following to the VFAT partition: + elilo bootloader with x86_64 support, elilo configuration file, + kernel image built in first step and corresponding + initrd. Instructions on building elilo and its dependencies + can be found in the elilo sourceforge project. +- Boot to EFI shell and invoke elilo choosing the kernel image built + in first step. diff --git a/trunk/MAINTAINERS b/trunk/MAINTAINERS index cad0882754a6..7c8392e1797d 100644 --- a/trunk/MAINTAINERS +++ b/trunk/MAINTAINERS @@ -323,8 +323,7 @@ S: Maintained ALCATEL SPEEDTOUCH USB DRIVER P: Duncan Sands M: duncan.sands@free.fr -L: linux-usb-users@lists.sourceforge.net -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org W: http://www.linux-usb.org/SpeedTouch/ S: Maintained @@ -440,7 +439,7 @@ S: Maintained ARM/ATMEL AT91RM9200 ARM ARCHITECTURE P: Andrew Victor -M: andrew@sanpeople.com +M: linux@maxim.org.za L: linux-arm-kernel@lists.arm.linux.org.uk (subscribers-only) W: http://maxim.org.za/at91_26.html S: Maintained @@ -1043,7 +1042,7 @@ S: Maintained CIRRUS LOGIC EP93XX OHCI USB HOST DRIVER P: Lennert Buytenhek M: kernel@wantstofly.org -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org S: Maintained CIRRUS LOGIC CS4280/CS461x SOUNDDRIVER @@ -1552,7 +1551,7 @@ S: Maintained FREESCALE HIGHSPEED USB DEVICE DRIVER P: Li Yang M: leoli@freescale.com -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org L: linuxppc-dev@ozlabs.org S: Maintained @@ -1914,10 +1913,8 @@ L: linux1394-devel@lists.sourceforge.net S: Maintained IMS TWINTURBO FRAMEBUFFER DRIVER -P: Paul Mundt -M: lethal@chaoticdreams.org L: linux-fbdev-devel@lists.sourceforge.net (subscribers-only) -S: Maintained +S: Orphan INFINIBAND SUBSYSTEM P: Roland Dreier @@ -2113,6 +2110,14 @@ L: irda-users@lists.sourceforge.net (subscribers-only) W: http://irda.sourceforge.net/ S: Maintained +ISCSI +P: Mike Christie +M: michaelc@cs.wisc.edu +L: open-iscsi@googlegroups.com +W: www.open-iscsi.org +T: git kernel.org:/pub/scm/linux/kernel/mnc/linux-2.6-iscsi.git +S: Maintained + ISAPNP P: Jaroslav Kysela M: perex@perex.cz @@ -2446,7 +2451,7 @@ M68K ON APPLE MACINTOSH P: Joshua Thompson M: funaho@jurai.org W: http://www.mac.linux-m68k.org/ -L: linux-mac68k@mac.linux-m68k.org +L: linux-m68k@lists.linux-m68k.org S: Maintained M68K ON HP9000/300 @@ -3636,18 +3641,12 @@ M: laredo@gnu.org W: http://www.stradis.com/ S: Maintained -SUPERH (sh) +SUPERH P: Paul Mundt M: lethal@linux-sh.org -L: linuxsh-dev@lists.sourceforge.net (subscribers-only) -W: http://www.linux-sh.org -S: Maintained - -SUPERH64 (sh64) -P: Paul Mundt -M: lethal@linux-sh.org -L: linuxsh-shmedia-dev@lists.sourceforge.net +L: linux-sh@vger.kernel.org W: http://www.linux-sh.org +T: git kernel.org:/pub/scm/linux/kernel/git/lethal/sh-2.6.git S: Maintained SUN3/3X @@ -3733,7 +3732,7 @@ S: Maintained TLAN NETWORK DRIVER P: Samuel Chessman M: chessman@tux.org -L: tlan-devel@lists.sourceforge.net +L: tlan-devel@lists.sourceforge.net (subscribers-only) W: http://sourceforge.net/projects/tlan/ S: Maintained @@ -3818,22 +3817,20 @@ S: Maintained USB ACM DRIVER P: Oliver Neukum M: oliver@neukum.name -L: linux-usb-users@lists.sourceforge.net -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org S: Maintained USB BLOCK DRIVER (UB ub) P: Pete Zaitcev M: zaitcev@redhat.com L: linux-kernel@vger.kernel.org -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org S: Supported USB CDC ETHERNET DRIVER P: Greg Kroah-Hartman M: greg@kroah.com -L: linux-usb-users@lists.sourceforge.net -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org S: Maintained W: http://www.kroah.com/linux-usb/ @@ -3847,13 +3844,13 @@ S: Maintained USB EHCI DRIVER P: David Brownell M: dbrownell@users.sourceforge.net -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org S: Odd Fixes USB ET61X[12]51 DRIVER P: Luca Risolia M: luca.risolia@studio.unibo.it -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org L: video4linux-list@redhat.com W: http://www.linux-projects.org S: Maintained @@ -3861,41 +3858,33 @@ S: Maintained USB GADGET/PERIPHERAL SUBSYSTEM P: David Brownell M: dbrownell@users.sourceforge.net -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org W: http://www.linux-usb.org/gadget S: Maintained USB HID/HIDBP DRIVERS (USB KEYBOARDS, MICE, REMOTE CONTROLS, ...) P: Jiri Kosina M: jkosina@suse.cz -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org T: git kernel.org:/pub/scm/linux/kernel/git/jikos/hid.git S: Maintained -USB HUB DRIVER -P: Johannes Erdfelt -M: johannes@erdfelt.com -L: linux-usb-users@lists.sourceforge.net -L: linux-usb-devel@lists.sourceforge.net -S: Maintained - USB ISP116X DRIVER P: Olav Kongas M: ok@artecdesign.ee -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org S: Maintained USB KAWASAKI LSI DRIVER P: Oliver Neukum M: oliver@neukum.name -L: linux-usb-users@lists.sourceforge.net -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org S: Maintained USB MASS STORAGE DRIVER P: Matthew Dharm M: mdharm-usb@one-eyed-alien.net -L: linux-usb-users@lists.sourceforge.net +L: linux-usb@vger.kernel.org L: usb-storage@lists.one-eyed-alien.net S: Maintained W: http://www.one-eyed-alien.net/~mdharm/linux-usb/ @@ -3903,28 +3892,26 @@ W: http://www.one-eyed-alien.net/~mdharm/linux-usb/ USB OHCI DRIVER P: David Brownell M: dbrownell@users.sourceforge.net -L: linux-usb-users@lists.sourceforge.net -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org S: Odd Fixes USB OPTION-CARD DRIVER P: Matthias Urlichs M: smurf@smurf.noris.de -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org S: Maintained USB OV511 DRIVER P: Mark McClelland M: mmcclell@bigfoot.com -L: linux-usb-users@lists.sourceforge.net -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org W: http://alpha.dyndns.org/ov511/ S: Maintained USB PEGASUS DRIVER P: Petko Manolov M: petkan@users.sourceforge.net -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org L: netdev@vger.kernel.org W: http://pegasus2.sourceforge.net/ S: Maintained @@ -3932,14 +3919,13 @@ S: Maintained USB PRINTER DRIVER (usblp) P: Pete Zaitcev M: zaitcev@redhat.com -L: linux-usb-users@lists.sourceforge.net -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org S: Supported USB RTL8150 DRIVER P: Petko Manolov M: petkan@users.sourceforge.net -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org L: netdev@vger.kernel.org W: http://pegasus2.sourceforge.net/ S: Maintained @@ -3947,8 +3933,7 @@ S: Maintained USB SE401 DRIVER P: Jeroen Vreeken M: pe1rxq@amsat.org -L: linux-usb-users@lists.sourceforge.net -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org W: http://www.chello.nl/~j.vreeken/se401/ S: Maintained @@ -3962,72 +3947,59 @@ USB SERIAL DIGI ACCELEPORT DRIVER P: Peter Berger and Al Borchers M: pberger@brimson.com M: alborchers@steinerpoint.com -L: linux-usb-users@lists.sourceforge.net -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org S: Maintained USB SERIAL DRIVER P: Greg Kroah-Hartman M: gregkh@suse.de -L: linux-usb-users@lists.sourceforge.net -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org S: Supported USB SERIAL BELKIN F5U103 DRIVER P: William Greathouse M: wgreathouse@smva.com -L: linux-usb-users@lists.sourceforge.net -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org S: Maintained USB SERIAL CYPRESS M8 DRIVER P: Lonnie Mendez M: dignome@gmail.com -L: linux-usb-users@lists.sourceforge.net -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org S: Maintained W: http://geocities.com/i0xox0i W: http://firstlight.net/cvs -USB SERIAL CYBERJACK PINPAD/E-COM DRIVER -L: linux-usb-users@lists.sourceforge.net -L: linux-usb-devel@lists.sourceforge.net -S: Maintained - USB AUERSWALD DRIVER P: Wolfgang Muees M: wolfgang@iksw-muees.de -L: linux-usb-users@lists.sourceforge.net -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org S: Maintained USB SERIAL EMPEG EMPEG-CAR MARK I/II DRIVER P: Gary Brubaker M: xavyer@ix.netcom.com -L: linux-usb-users@lists.sourceforge.net -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org S: Maintained USB SERIAL KEYSPAN DRIVER P: Greg Kroah-Hartman M: greg@kroah.com -L: linux-usb-users@lists.sourceforge.net -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org W: http://www.kroah.com/linux/ S: Maintained USB SERIAL WHITEHEAT DRIVER P: Support Department M: support@connecttech.com -L: linux-usb-users@lists.sourceforge.net -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org W: http://www.connecttech.com S: Supported USB SN9C1xx DRIVER P: Luca Risolia M: luca.risolia@studio.unibo.it -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org L: video4linux-list@redhat.com W: http://www.linux-projects.org S: Maintained @@ -4035,8 +4007,7 @@ S: Maintained USB SUBSYSTEM P: Greg Kroah-Hartman M: gregkh@suse.de -L: linux-usb-users@lists.sourceforge.net -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org W: http://www.linux-usb.org T: quilt kernel.org/pub/linux/kernel/people/gregkh/gregkh-2.6/ S: Supported @@ -4044,8 +4015,7 @@ S: Supported USB UHCI DRIVER P: Alan Stern M: stern@rowland.harvard.edu -L: linux-usb-users@lists.sourceforge.net -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org S: Maintained USB "USBNET" DRIVER FRAMEWORK @@ -4058,7 +4028,7 @@ S: Maintained USB W996[87]CF DRIVER P: Luca Risolia M: luca.risolia@studio.unibo.it -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org L: video4linux-list@redhat.com W: http://www.linux-projects.org S: Maintained @@ -4066,7 +4036,7 @@ S: Maintained USB ZC0301 DRIVER P: Luca Risolia M: luca.risolia@studio.unibo.it -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org L: video4linux-list@redhat.com W: http://www.linux-projects.org S: Maintained @@ -4074,15 +4044,14 @@ S: Maintained USB ZD1201 DRIVER P: Jeroen Vreeken M: pe1rxq@amsat.org -L: linux-usb-users@lists.sourceforge.net -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org W: http://linux-lc100020.sourceforge.net S: Maintained USB ZR364XX DRIVER P: Antoine Jacquet M: royale@zerezo.com -L: linux-usb-devel@lists.sourceforge.net +L: linux-usb@vger.kernel.org L: video4linux-list@redhat.com W: http://royale.zerezo.com/zr364xx/ S: Maintained diff --git a/trunk/Makefile b/trunk/Makefile index 7f969303ed49..a65ffd27de6b 100644 --- a/trunk/Makefile +++ b/trunk/Makefile @@ -200,11 +200,9 @@ SRCARCH := $(ARCH) # Additional ARCH settings for x86 ifeq ($(ARCH),i386) SRCARCH := x86 - K64BIT := n endif ifeq ($(ARCH),x86_64) SRCARCH := x86 - K64BIT := y endif KCONFIG_CONFIG ?= .config @@ -341,7 +339,7 @@ KERNELRELEASE = $(shell cat include/config/kernel.release 2> /dev/null) KERNELVERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) export VERSION PATCHLEVEL SUBLEVEL KERNELRELEASE KERNELVERSION -export ARCH SRCARCH K64BIT CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC +export ARCH SRCARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC export CPP AR NM STRIP OBJCOPY OBJDUMP MAKE AWK GENKSYMS PERL UTS_MACHINE export HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS @@ -1334,12 +1332,7 @@ else ALLINCLUDE_ARCHS := $(ALLSOURCE_ARCHS) endif -# Take care of arch/x86 -ifeq ($(ARCH), $(SRCARCH)) -ALLSOURCE_ARCHS := $(ARCH) -else -ALLSOURCE_ARCHS := $(ARCH) $(SRCARCH) -endif +ALLSOURCE_ARCHS := $(SRCARCH) define find-sources ( for arch in $(ALLSOURCE_ARCHS) ; do \ diff --git a/trunk/README b/trunk/README index 592f8a238281..159912cf5155 100644 --- a/trunk/README +++ b/trunk/README @@ -194,8 +194,6 @@ CONFIGURING the kernel: "make *config" checks for a file named "all{yes/mod/no/random}.config" for symbol values that are to be forced. If this file is not found, it checks for a file named "all.config" to contain forced values. - Finally it checks the environment variable K64BIT and if found, sets - the config symbol "64BIT" to the value of the K64BIT variable. NOTES on "make config": - having unnecessary drivers will make the kernel bigger, and can diff --git a/trunk/arch/alpha/kernel/pci-noop.c b/trunk/arch/alpha/kernel/pci-noop.c index 174b729c504b..468b76ce66a1 100644 --- a/trunk/arch/alpha/kernel/pci-noop.c +++ b/trunk/arch/alpha/kernel/pci-noop.c @@ -12,6 +12,7 @@ #include #include #include +#include #include "proto.h" @@ -172,18 +173,19 @@ dma_alloc_coherent(struct device *dev, size_t size, EXPORT_SYMBOL(dma_alloc_coherent); int -dma_map_sg(struct device *dev, struct scatterlist *sg, int nents, +dma_map_sg(struct device *dev, struct scatterlist *sgl, int nents, enum dma_data_direction direction) { int i; + struct scatterlist *sg; - for (i = 0; i < nents; i++ ) { + for_each_sg(sgl, sg, nents, i) { void *va; - BUG_ON(!sg[i].page); - va = page_address(sg[i].page) + sg[i].offset; - sg_dma_address(sg + i) = (dma_addr_t)virt_to_bus(va); - sg_dma_len(sg + i) = sg[i].length; + BUG_ON(!sg_page(sg)); + va = sg_virt(sg); + sg_dma_address(sg) = (dma_addr_t)virt_to_bus(va); + sg_dma_len(sg) = sg->length; } return nents; diff --git a/trunk/arch/arm/common/uengine.c b/trunk/arch/arm/common/uengine.c index 95c8508c29b7..117cab30bd36 100644 --- a/trunk/arch/arm/common/uengine.c +++ b/trunk/arch/arm/common/uengine.c @@ -374,8 +374,8 @@ static int set_initial_registers(int uengine, struct ixp2000_uengine_code *c) u8 *ucode; int i; - gpr_a = kmalloc(128 * sizeof(u32), GFP_KERNEL); - gpr_b = kmalloc(128 * sizeof(u32), GFP_KERNEL); + gpr_a = kzalloc(128 * sizeof(u32), GFP_KERNEL); + gpr_b = kzalloc(128 * sizeof(u32), GFP_KERNEL); ucode = kmalloc(513 * 5, GFP_KERNEL); if (gpr_a == NULL || gpr_b == NULL || ucode == NULL) { kfree(ucode); @@ -388,8 +388,6 @@ static int set_initial_registers(int uengine, struct ixp2000_uengine_code *c) if (c->uengine_parameters & IXP2000_UENGINE_4_CONTEXTS) per_ctx_regs = 32; - memset(gpr_a, 0, sizeof(gpr_a)); - memset(gpr_b, 0, sizeof(gpr_b)); for (i = 0; i < 256; i++) { struct ixp2000_reg_value *r = c->initial_reg_values + i; u32 *bank; diff --git a/trunk/arch/arm/kernel/entry-armv.S b/trunk/arch/arm/kernel/entry-armv.S index d645897652c2..29dec080a604 100644 --- a/trunk/arch/arm/kernel/entry-armv.S +++ b/trunk/arch/arm/kernel/entry-armv.S @@ -339,16 +339,6 @@ __pabt_svc: str r1, [sp] @ save the "real" r0 copied @ from the exception stack -#if __LINUX_ARM_ARCH__ < 6 && !defined(CONFIG_NEEDS_SYSCALL_FOR_CMPXCHG) -#ifndef CONFIG_MMU -#warning "NPTL on non MMU needs fixing" -#else - @ make sure our user space atomic helper is aborted - cmp r2, #TASK_SIZE - bichs r3, r3, #PSR_Z_BIT -#endif -#endif - @ @ We are now ready to fill in the remaining blanks on the stack: @ @@ -372,9 +362,25 @@ __pabt_svc: zero_fp .endm + .macro kuser_cmpxchg_check +#if __LINUX_ARM_ARCH__ < 6 && !defined(CONFIG_NEEDS_SYSCALL_FOR_CMPXCHG) +#ifndef CONFIG_MMU +#warning "NPTL on non MMU needs fixing" +#else + @ Make sure our user space atomic helper is restarted + @ if it was interrupted in a critical region. Here we + @ perform a quick test inline since it should be false + @ 99.9999% of the time. The rest is done out of line. + cmp r2, #TASK_SIZE + blhs kuser_cmpxchg_fixup +#endif +#endif + .endm + .align 5 __dabt_usr: usr_entry + kuser_cmpxchg_check @ @ Call the processor-specific abort handler: @@ -404,6 +410,7 @@ __dabt_usr: .align 5 __irq_usr: usr_entry + kuser_cmpxchg_check #ifdef CONFIG_TRACE_IRQFLAGS bl trace_hardirqs_off @@ -446,9 +453,9 @@ __und_usr: @ @ r0 - instruction @ -1: ldrt r0, [r4] adr r9, ret_from_exception adr lr, __und_usr_unknown +1: ldrt r0, [r4] @ @ fallthrough to call_fpe @ @@ -669,7 +676,7 @@ __kuser_helper_start: * * Clobbered: * - * the Z flag might be lost + * none * * Definition and user space usage example: * @@ -730,9 +737,6 @@ __kuser_memory_barrier: @ 0xffff0fa0 * * - This routine already includes memory barriers as needed. * - * - A failure might be transient, i.e. it is possible, although unlikely, - * that "failure" be returned even if *ptr == oldval. - * * For example, a user space atomic_add implementation could look like this: * * #define atomic_add(ptr, val) \ @@ -769,46 +773,62 @@ __kuser_cmpxchg: @ 0xffff0fc0 #elif __LINUX_ARM_ARCH__ < 6 +#ifdef CONFIG_MMU + /* - * Theory of operation: - * - * We set the Z flag before loading oldval. If ever an exception - * occurs we can not be sure the loaded value will still be the same - * when the exception returns, therefore the user exception handler - * will clear the Z flag whenever the interrupted user code was - * actually from the kernel address space (see the usr_entry macro). - * - * The post-increment on the str is used to prevent a race with an - * exception happening just after the str instruction which would - * clear the Z flag although the exchange was done. + * The only thing that can break atomicity in this cmpxchg + * implementation is either an IRQ or a data abort exception + * causing another process/thread to be scheduled in the middle + * of the critical sequence. To prevent this, code is added to + * the IRQ and data abort exception handlers to set the pc back + * to the beginning of the critical section if it is found to be + * within that critical section (see kuser_cmpxchg_fixup). */ -#ifdef CONFIG_MMU - teq ip, ip @ set Z flag - ldr ip, [r2] @ load current val - add r3, r2, #1 @ prepare store ptr - teqeq ip, r0 @ compare with oldval if still allowed - streq r1, [r3, #-1]! @ store newval if still allowed - subs r0, r2, r3 @ if r2 == r3 the str occured +1: ldr r3, [r2] @ load current val + subs r3, r3, r0 @ compare with oldval +2: streq r1, [r2] @ store newval if eq + rsbs r0, r3, #0 @ set return val and C flag + usr_ret lr + + .text +kuser_cmpxchg_fixup: + @ Called from kuser_cmpxchg_check macro. + @ r2 = address of interrupted insn (must be preserved). + @ sp = saved regs. r7 and r8 are clobbered. + @ 1b = first critical insn, 2b = last critical insn. + @ If r2 >= 1b and r2 <= 2b then saved pc_usr is set to 1b. + mov r7, #0xffff0fff + sub r7, r7, #(0xffff0fff - (0xffff0fc0 + (1b - __kuser_cmpxchg))) + subs r8, r2, r7 + rsbcss r8, r8, #(2b - 1b) + strcs r7, [sp, #S_PC] + mov pc, lr + .previous + #else #warning "NPTL on non MMU needs fixing" mov r0, #-1 adds r0, r0, #0 -#endif usr_ret lr +#endif #else #ifdef CONFIG_SMP mcr p15, 0, r0, c7, c10, 5 @ dmb #endif - ldrex r3, [r2] +1: ldrex r3, [r2] subs r3, r3, r0 strexeq r3, r1, [r2] + teqeq r3, #1 + beq 1b rsbs r0, r3, #0 + /* beware -- each __kuser slot must be 8 instructions max */ #ifdef CONFIG_SMP - mcr p15, 0, r0, c7, c10, 5 @ dmb -#endif + b __kuser_memory_barrier +#else usr_ret lr +#endif #endif @@ -829,7 +849,7 @@ __kuser_cmpxchg: @ 0xffff0fc0 * * Clobbered: * - * the Z flag might be lost + * none * * Definition and user space usage example: * diff --git a/trunk/arch/arm/kernel/traps.c b/trunk/arch/arm/kernel/traps.c index 4764bd9ccee8..c34db4e868fa 100644 --- a/trunk/arch/arm/kernel/traps.c +++ b/trunk/arch/arm/kernel/traps.c @@ -327,7 +327,7 @@ asmlinkage void __exception do_undefinstr(struct pt_regs *regs) if ((instr & hook->instr_mask) == hook->instr_val && (regs->ARM_cpsr & hook->cpsr_mask) == hook->cpsr_val) { if (hook->fn(regs, instr) == 0) { - spin_unlock_irq(&undef_lock); + spin_unlock_irqrestore(&undef_lock, flags); return; } } @@ -509,7 +509,7 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs) * existence. Don't ever use this from user code. */ case 0xfff0: - { + for (;;) { extern void do_DataAbort(unsigned long addr, unsigned int fsr, struct pt_regs *regs); unsigned long val; @@ -545,7 +545,6 @@ asmlinkage int arm_syscall(int no, struct pt_regs *regs) up_read(&mm->mmap_sem); /* simulate a write access fault */ do_DataAbort(addr, 15 + (1 << 11), regs); - return -1; } #endif diff --git a/trunk/arch/arm/mach-at91/at91rm9200_devices.c b/trunk/arch/arm/mach-at91/at91rm9200_devices.c index 0417c165d50d..9296833f91cc 100644 --- a/trunk/arch/arm/mach-at91/at91rm9200_devices.c +++ b/trunk/arch/arm/mach-at91/at91rm9200_devices.c @@ -14,6 +14,7 @@ #include #include +#include #include #include @@ -435,7 +436,40 @@ void __init at91_add_device_nand(struct at91_nand_data *data) {} * TWI (i2c) * -------------------------------------------------------------------- */ -#if defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE) +/* + * Prefer the GPIO code since the TWI controller isn't robust + * (gets overruns and underruns under load) and can only issue + * repeated STARTs in one scenario (the driver doesn't yet handle them). + */ +#if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE) + +static struct i2c_gpio_platform_data pdata = { + .sda_pin = AT91_PIN_PA25, + .sda_is_open_drain = 1, + .scl_pin = AT91_PIN_PA26, + .scl_is_open_drain = 1, + .udelay = 2, /* ~100 kHz */ +}; + +static struct platform_device at91rm9200_twi_device = { + .name = "i2c-gpio", + .id = -1, + .dev.platform_data = &pdata, +}; + +void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) +{ + at91_set_GPIO_periph(AT91_PIN_PA25, 1); /* TWD (SDA) */ + at91_set_multi_drive(AT91_PIN_PA25, 1); + + at91_set_GPIO_periph(AT91_PIN_PA26, 1); /* TWCK (SCL) */ + at91_set_multi_drive(AT91_PIN_PA26, 1); + + i2c_register_board_info(0, devices, nr_devices); + platform_device_register(&at91rm9200_twi_device); +} + +#elif defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE) static struct resource twi_resources[] = { [0] = { @@ -457,7 +491,7 @@ static struct platform_device at91rm9200_twi_device = { .num_resources = ARRAY_SIZE(twi_resources), }; -void __init at91_add_device_i2c(void) +void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) { /* pins used for TWI interface */ at91_set_A_periph(AT91_PIN_PA25, 0); /* TWD */ @@ -466,10 +500,11 @@ void __init at91_add_device_i2c(void) at91_set_A_periph(AT91_PIN_PA26, 0); /* TWCK */ at91_set_multi_drive(AT91_PIN_PA26, 1); + i2c_register_board_info(0, devices, nr_devices); platform_device_register(&at91rm9200_twi_device); } #else -void __init at91_add_device_i2c(void) {} +void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) {} #endif diff --git a/trunk/arch/arm/mach-at91/at91sam9260_devices.c b/trunk/arch/arm/mach-at91/at91sam9260_devices.c index ffd3154c1e54..3091bf47d8c9 100644 --- a/trunk/arch/arm/mach-at91/at91sam9260_devices.c +++ b/trunk/arch/arm/mach-at91/at91sam9260_devices.c @@ -13,6 +13,7 @@ #include #include +#include #include #include @@ -352,7 +353,41 @@ void __init at91_add_device_nand(struct at91_nand_data *data) {} * TWI (i2c) * -------------------------------------------------------------------- */ -#if defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE) +/* + * Prefer the GPIO code since the TWI controller isn't robust + * (gets overruns and underruns under load) and can only issue + * repeated STARTs in one scenario (the driver doesn't yet handle them). + */ + +#if defined(CONFIG_I2C_GPIO) || defined(CONFIG_I2C_GPIO_MODULE) + +static struct i2c_gpio_platform_data pdata = { + .sda_pin = AT91_PIN_PA23, + .sda_is_open_drain = 1, + .scl_pin = AT91_PIN_PA24, + .scl_is_open_drain = 1, + .udelay = 2, /* ~100 kHz */ +}; + +static struct platform_device at91sam9260_twi_device = { + .name = "i2c-gpio", + .id = -1, + .dev.platform_data = &pdata, +}; + +void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) +{ + at91_set_GPIO_periph(AT91_PIN_PA23, 1); /* TWD (SDA) */ + at91_set_multi_drive(AT91_PIN_PA23, 1); + + at91_set_GPIO_periph(AT91_PIN_PA24, 1); /* TWCK (SCL) */ + at91_set_multi_drive(AT91_PIN_PA24, 1); + + i2c_register_board_info(0, devices, nr_devices); + platform_device_register(&at91sam9260_twi_device); +} + +#elif defined(CONFIG_I2C_AT91) || defined(CONFIG_I2C_AT91_MODULE) static struct resource twi_resources[] = { [0] = { @@ -374,7 +409,7 @@ static struct platform_device at91sam9260_twi_device = { .num_resources = ARRAY_SIZE(twi_resources), }; -void __init at91_add_device_i2c(void) +void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) { /* pins used for TWI interface */ at91_set_A_periph(AT91_PIN_PA23, 0); /* TWD */ @@ -383,10 +418,11 @@ void __init at91_add_device_i2c(void) at91_set_A_periph(AT91_PIN_PA24, 0); /* TWCK */ at91_set_multi_drive(AT91_PIN_PA24, 1); + i2c_register_board_info(0, devices, nr_devices); platform_device_register(&at91sam9260_twi_device); } #else -void __init at91_add_device_i2c(void) {} +void __init at91_add_device_i2c(struct i2c_board_info *devices, int nr_devices) {} #endif diff --git a/trunk/arch/arm/mach-at91/at91sam9261_devices.c b/trunk/arch/arm/mach-at91/at91sam9261_devices.c index 3576595b4941..64979a9023c2 100644 --- a/trunk/arch/arm/mach-at91/at91sam9261_devices.c +++ b/trunk/arch/arm/mach-at91/at91sam9261_devices.c @@ -14,7 +14,9 @@ #include #include +#include +#include #include